Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vr8Nc-0075qp-2q for pgsql-hackers@arkaria.postgresql.org; Sat, 14 Feb 2026 05:39:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vr8Nb-00H611-2d for pgsql-hackers@arkaria.postgresql.org; Sat, 14 Feb 2026 05:39:43 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vr8Na-00H60r-30 for pgsql-hackers@lists.postgresql.org; Sat, 14 Feb 2026 05:39:43 +0000 Received: from mail-japanwestazolkn190100000.outbound.protection.outlook.com ([2a01:111:f403:d406::] helo=OS0P286CU011.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vr8NX-00000000YdQ-2fNG for pgsql-hackers@lists.postgresql.org; Sat, 14 Feb 2026 05:39:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UQQyJvU2+YD5y14m8Lse0ns93UtGliHnrmTWozTPk550SetgsmYcJRMdgeIbLSG2m9nAy2bvFqyORXXwN8IiLgWkK4f1mrNk5Ysc9jgXZ21ULOBxZcOUKVqeZmX//YmqFcd6YlLKRveDsMXbKjfd0tFMeY4ipY0DgDKKSyeoapju+x3gd2B3/p2bFiDtk+8RNrmxi4sdPAehDrLKNeGT0X0sZI8YDGbJFrr7/qLWpEkqiHYScm/yOk4b05Gu6Yt578o1IqxzM7gzDBBSyJclHqeJuBrUNjdNhhTQR9+CkOt5kU/VA2jsuABZk5FZxm7yWMIgX0p+u77JZfsiQ96W3A== 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=Z+nMLY1TLmd77PO5MYqeR7HJ2Z1pcTsYV1wzTM9yyHQ=; b=yUTdN5+IY73YxnODY6o0ayuwz8Gi7XNcTAolmc4nLsiCLRoQF2ZZsLDj/iM/YaKHDALUuga7/os18e7Zu20cxq/Y2sKZJZiO8CCU87X9Tr7YgCTc83hoylTozneHr6OVxbqs9M/+MTszSXb3JztmGJK8JFmS8CM1BpROqD5vmQ5at+RD7YZr32zVZV+rXhc58e7MEujI5vauahZFUm08pC/kWdnVayTmQayGg2qFyhf8oNMDN0CIVRWKJ37asCkYUjZG2OFYlnWROcsCxHqimFuTR50squz2hRzwkKPh8AtuiNFOtmTXu+icLjaFU8oPT0u26FwHU9TqpOmUKOYvtQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Z+nMLY1TLmd77PO5MYqeR7HJ2Z1pcTsYV1wzTM9yyHQ=; b=jiiGmKmc0ilISK04aPgu0epdHnHKocHBVh4gclA7FcWcWM88W8ZqhLMK8+r+Arb9/0V0jcMu+g3P2tRc7R1Q3NR7eRY6t2xxiIMBEmCeUyz0T9cT4v5l+QgdZc5zA85J3MnlvGfDh+m0PkXwdwlvDfQ5bTff2WCR0fkFAR7K8Lk494piJdGG0hxzZHHgaQ7gYVJMOtZ2NVcUBKaw4jPp7u+pa5HJwxNjBe5t3p5Z4JdxxO48NHZBrA6ydz19dt4GXYPCZg55L9tnHWHA/EDULEVyAkNIXxZc4tsgnnqlhkUn6AEgtzysHXFzRVYvk+HwH7uEJ14qakbDFyS45e2ArA== Received: from TYYPR01MB14116.jpnprd01.prod.outlook.com (2603:1096:405:212::9) by TYVPR01MB11213.jpnprd01.prod.outlook.com (2603:1096:400:369::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.14; Sat, 14 Feb 2026 05:39:33 +0000 Received: from TYYPR01MB14116.jpnprd01.prod.outlook.com ([fe80::31dd:4ff2:eea8:c663]) by TYYPR01MB14116.jpnprd01.prod.outlook.com ([fe80::31dd:4ff2:eea8:c663%7]) with mapi id 15.20.9611.013; Sat, 14 Feb 2026 05:39:33 +0000 From: Chengpeng Yan To: lakshmi CC: Pavel Stehule , Tomas Vondra , John Naylor , "pgsql-hackers@lists.postgresql.org" Subject: Re: Add a greedy join search algorithm to handle large join problems Thread-Topic: Add a greedy join search algorithm to handle large join problems Thread-Index: AQHcYz6EDs5PHcthrkCEncSOS1ScQLUOLg+AgAAjtACAC2mFAIAAReyAgABhgoCAAFPyAIABFWuAgAA3sYCAALcfAIAAB0IAgGQrMICAATSygA== Date: Sat, 14 Feb 2026 05:39:33 +0000 Message-ID: <8927A117-A7EA-41E8-94B3-0B4F7767DA8B@outlook.com> References: <3FF63E99-AB4F-41A9-BC78-AAB28823FBD0@Outlook.com> <6db6d2ec-7529-4add-9a95-178fc318311d@vondra.me> <313ACE5A-CBF1-43B3-9181-10D3E8ADF424@Outlook.com> <5abd6054-413c-4f48-9172-d8b31062b266@vondra.me> <938E2286-9B0D-4F8D-A916-8E0E35D55034@Outlook.com> <982de4a4-71b6-4d1d-afe2-35b1c5d43529@vondra.me> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYYPR01MB14116:EE_|TYVPR01MB11213:EE_ x-ms-office365-filtering-correlation-id: c04c8f72-f637-4d30-75aa-08de6b8b6eb8 x-microsoft-antispam: BCL:0;ARA:14566002|12121999013|6092099016|15080799012|19110799012|461199028|31061999003|8022599003|8060799015|8062599012|440099028|3412199025|102099032; x-microsoft-antispam-message-info: =?utf-8?B?VFVyY1duNk5CajdEYmxjckVLTjdTM0NxN2FvUWp1Y0YvQWNFK01QT0VZQXRD?= =?utf-8?B?WWRIMUR2c042UDF4Z2JId1c0VHFNTU5iTEk4MU5WbjhDQ0I4aXZHN045d2tY?= =?utf-8?B?Wmcwb0VNdWtVQ3JZeUlVYVFSNTM5L2tqQ1lIQ0NSeUV3WERuTlZYUnRSdTFF?= =?utf-8?B?azk3VFZ5M1g4amNiMVNDYkdWUVJRR2piSHF1S3piNDBpZ2xQVFV6eGVMSGJ3?= =?utf-8?B?UmtURGovcy9NZCtmTkpubWwyd2NWNzRaS0IwTWJyRmo1UTVvN2JpQUt4RWVi?= =?utf-8?B?UWgvTWwyMmdyWFA1T1hjSzRlVWJjMytacHEvVzgvZGlia2Q1cFpFSEtndzZo?= =?utf-8?B?TzZIWnlWQkVKRDNRcGxJRXVpRVhabVZ0RVMzbUhXYkZvRFp6ejBUZzEzc1Fl?= =?utf-8?B?eXhNMGxrRHROc1h0eE1GMXNieTdYNnZxU1FhQW1qOG5XWlNsMW51SFBJUkJC?= =?utf-8?B?WnVldml1K2RGb3ZBaW9SdmtYNW1PTWN2MmRVQmYwK0cyb0VuS25RQ09McjZE?= =?utf-8?B?cXhjWU1jRGl1MU5ISTFhSU9WYUhKTHc4K1lVY3c3NDc4bVBDK2Zodm56VFRn?= =?utf-8?B?UEdCck1EekhWa1cxSzlEeGpNOUpqbGFIZFdraW45Y0NTQVoyN0s1N1FwaDZ6?= =?utf-8?B?TDNEYisrSW5lcVlLWXdOTWgycGQ3TTFvVEd2T01ELzJ3WHNQZVBCRHMzT29j?= =?utf-8?B?YzVJZVA2NU9BQi9IQWEyZVdCZUNiT0NQU1ZYdXo5QjJ1U0V4UFVlSTI3V3VB?= =?utf-8?B?NU8wNFJKS0VqRXdDZCs2RUtSMXp6Tis4bHhWYnBJRmd0UUNZK2FLcmMzb1V0?= =?utf-8?B?azMyUDUyVjg5TGZ0SG5seU9lZGc1ejJPaGVJYXRUaW80eExlZ0lKT3NzU3ps?= =?utf-8?B?a1I5YzBDZHR0TDlRQS8wYTVJb2EwdlduaklyUmV3MCt4ZTBkWmFmYzI3SDB2?= =?utf-8?B?RlVUbHdLUHhveHQvM0RYeTVqYlpqbnl3NlBvM2d4ckNhZjkyc1BXZjAzMWxZ?= =?utf-8?B?dGJNOVh3bXhqbCtoZlQ1OTN4eUovWDBMYmo5a1pHYVk4MUJ1dlVhemttYTRs?= =?utf-8?B?RFFVVGxhWVhoZEZmSlRsbURuRzNVSW4yN0FwaDU2ZVd0UVdocEx3cytqTlVE?= =?utf-8?B?KzFXYkdFMURnSndpU3lCalBIdklGKzhZNTlhcE5jZ2RqdVRoUkVlajJvblla?= =?utf-8?B?aGZMcVVRaTQwSXlYV29NMlFPZkZBV0k5cVMxMFBEKzdObnIyeHhUR0dUelZB?= =?utf-8?B?R2hQYmR0Zzk0UUZpV2RySG9MaEdvTHNKVGRpMU1EZjZNNm5ma1A3L2c3Qmt0?= =?utf-8?B?eWhFOHJKYnNoTldDS3RlNFRiQ1k3MUNMdE1yaUVYcGJndVlPbEltcHFYN3dV?= =?utf-8?B?NHlkSGxZcytiQWZaM2U2djViN0d4Q3ZsQWxDWUVvaTU2OGt4bmhOZ2Y4UTRX?= =?utf-8?B?V09Nak5ZVjlmakZWcytCK0RDNWdiVXFrYThYUHRjWDJCUUJBa3I4MFdvZm1x?= =?utf-8?B?MWg2Z3ZERms3ZDBsMWxhY2JRUXFhVkVBazBMeFhOYjFhOTZTWnZEUFErb3dZ?= =?utf-8?B?d2FPL051T0JzSmlUM0IzcDRsb3htZFFWY3hzZlJneERBU3lXMWd1WkVnUDMx?= =?utf-8?B?dXo3K1VzTVpCODd3a1ZQWWQ5ZEw3Ymc9PQ==?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dllMODdhNmpDckZUazdyRzY5N08wSlF0QW45TVg4Y0lPNnVlUVpzVkNFYktG?= =?utf-8?B?QUR4dVh1aW5QKzdHNWRpLzZrV2tGeVZMOERQc1VvNlBFTklIWmFrbGcwejNE?= =?utf-8?B?ODRmZDlaK3JRUFVidThnWnNNRDhLVU9TL1RpcFAweUxYUFVHUXlRUitFZlRq?= =?utf-8?B?QmcyNU1wQWlkak02Nk5XZmwwM2c1eDFzbGJXMU1UOTQ2bEthZm15L2JKc3ZH?= =?utf-8?B?Ni8wb09TeUloS3Y4eTZ6cTNjQmdoaGhvNElwSlhpUXdJelo3UWRzTWdsd1VS?= =?utf-8?B?ZG9YdkJRSVRpRXJNd1NKNEEyYlJNTnRhTzM4NGpsNTdvMXBCeFB6NnBPRUJp?= =?utf-8?B?ZThVemdna3p2N1ZhV0dnYlUrRUVrTzJxWXk3dHFYUHcyL3E1U0pkdE5VVzZi?= =?utf-8?B?WG13NXdFSEVFK3dPWXgwaUdCcFBiR1dwbnYvMjdTdkFtN1lyR1FmZTdXOWlR?= =?utf-8?B?SHZ2R1hmckFsdkFKakNGMmJ4TXZSV2pmUHQ5YnRoT1liUXV0Qmd4bHRmRHlH?= =?utf-8?B?eC9vTG9QcnhydlloRGR0M2oxNWp5dHR4dVkrVEVwN0o2R2RrelQ0RkdOcjRh?= =?utf-8?B?cnVZVGRqR3MvOE56RTQ2UUVTSldUM1g4VUJUVEd5NTNjTHdBa0RWVlFoVUpy?= =?utf-8?B?Ty9DazJRdE45VlY2cHgrVHAzUkFZdWViL2V0R0lMZC9XY0FWVk05ZDlnQlZU?= =?utf-8?B?TWJuWWx0TUIxUnRWVjQxbWdZajlaV0w1bEdhbjFyRVA4Zy9PSmJnMXIrVEJ3?= =?utf-8?B?MGRTbHV6K1lQTk5hSEhFZ0M3QXV0YzdtN2tRbklDSVEvRGxJdnZ4NG1BOFhv?= =?utf-8?B?WjJLT2NqTUpTUitUQnNRTmxqN1B2cmcrVGpqTWJRUmQxZksyazB5ZjVQVWlO?= =?utf-8?B?RnlhYWlUYlJhUFl5Wi9qRkR5TlNneENaYXF6RGpQZ09wLzduL0h5OCtaMlFx?= =?utf-8?B?NU9HQUNtV3gydGNKUjJ6c004ZTRJZnlxdlB4b3p5UXJSSGJYNDJNNklXWStk?= =?utf-8?B?cDN6MnlLQ2pJeUhyd0tSQTZzRFZ5U1FGRXM3aldGbWRONWtCUWZnVmVmejZY?= =?utf-8?B?SU9hMVQ5RHlMZXNWTTRYWnRJUm5QbExKTHM4OGZPVjZ4czUyalUwRmlLdGZu?= =?utf-8?B?akNETFVpRmV3K3RFRGFsU1ZMTkg0OHd1bmgvb2NhMXlFZURDQnZhQ010ZzA3?= =?utf-8?B?bjhsd1lRUERVVHdibGlDUHo3YzNVTGVvbG8vdTkzd1g4d3BtdHlKa0FjR1dX?= =?utf-8?B?SXNQblpEd3pxQ3E3c1kvWnJRTi9pcXdId2UvWGhOM2tUczBwM2p2S2ZYRWNE?= =?utf-8?B?UXMvRGI0S3pZSFg2T2YvTlFTcVVLWEtlbG8wVHJENXJCZDR1Uzhpc3lMV0Jo?= =?utf-8?B?SXVNa2swTlEzTXAxQ1A4RUhVendlQ0wvLy80aVFpbkE2Ty9uT29ocjlrOFY4?= =?utf-8?B?N1dPMUpzNXJpR0ZyblgrZElvZFV5T3BTcEJMNXdSbkVLOUVCWGkwaW92OGhL?= =?utf-8?B?YUFlT2ZEU2lqNlZ3Umg5SDNrS01Rano0b2VaVnZXY0NUVlVYaXl3SGF2Y0Nt?= =?utf-8?B?Y0IxYUhKOU9CenRacUVLNWhLSDR6UHgrT0g5TlNPUzlRc2YrYXo1VEVYeFI4?= =?utf-8?B?SlhOd0wvOUJvblFiYmFEa0RDN0hldDdHRDJkV0EzV0RtVmo5L2tpdm5Fc09t?= =?utf-8?B?S1hPczlNR1Rxd0JSNGpQam1HZXY3d1E0Nkprdjg3Z24vVzVGZzFQazdhQzh1?= =?utf-8?B?bkJ3blJwZzY4OVVDd1YxTDg5ZURta1dtWVprbFhkcE1ZUU9RZWdvMVQ3bC9E?= =?utf-8?B?a0dNRXJkamhJS1NoZU1oZ0JmNlc0cFBNemNUUU41QTZCVFlqMEJkSnErRGFo?= =?utf-8?B?R2Vzdnp5QVRYUEkyTEptemJINWNMTURLQlF5SHdabmY2YVE9PQ==?= Content-Type: multipart/mixed; boundary="_005_8927A117A7EA41E894B30B4F7767DA8Boutlookcom_" MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYYPR01MB14116.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: c04c8f72-f637-4d30-75aa-08de6b8b6eb8 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Feb 2026 05:39:33.5269 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYVPR01MB11213 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_005_8927A117A7EA41E894B30B4F7767DA8Boutlookcom_ Content-Type: multipart/alternative; boundary="_000_8927A117A7EA41E894B30B4F7767DA8Boutlookcom_" --_000_8927A117A7EA41E894B30B4F7767DA8Boutlookcom_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQo+IDIwMjblubQy5pyIMTPml6UgMTk6MTTvvIxsYWtzaG1pIDxsYWtzaG1pZ2NkYWNAZ21haWwu Y29tPiDlhpnpgZPvvJoNCj4NCj4gSEkgYWxsLA0KPiBJIHRlc3RlZCB0aGUgbGF0ZXN0IEdPTyBw YXRjaCAodjQpIG9uIGEgZnJlc2ggYnVpbGQgZnJvbSB0aGUgY3VycmVudCBQb3N0Z3JlU1FMIG1h c3Rlci4gVGhlIHBhdGNoIGFwcGxpZWQgY2xlYW5seSwgdGhlIHNlcnZlciBidWlsdCB3aXRob3V0 IGlzc3VlcywgYW5kIHJlZ3Jlc3Npb24gdGVzdHMgcGFzc2VkIGV4Y2VwdCBmb3IgdGhlIGV4cGVj dGVkIEVYUExBSU4gb3V0cHV0IGRpZmZlcmVuY2VzIGR1ZSB0byB0aGUgbmV3IGpvaW4gb3JkZXJp bmcgYmVoYXZpb3IuDQo+DQo+IEFzIGEgcXVpY2sgc2FuaXR5IGNoZWNrLCBJIGNvbXBhcmVkIERQ LCBHRVFPLCBhbmQgR09PIG9uIGEgc21hbGwgbXVsdGktam9pbiBxdWVyeToNCj4NCj4gICAgICBE UCBwbGFubmluZzogfjAuNjYgbXMNCj4gICAgICBHRVFPIHBsYW5uaW5nOiB+Mi4yOCBtcw0KPiAg ICAgIEdPTyBwbGFubmluZzogfjAuMzggbXMNCj4gRXhlY3V0aW9uIHRpbWVzIHdlcmUgc2ltaWxh ciBhY3Jvc3MgYWxsIHRocmVlICh+MS414oCTMS43IG1zKSB3aXRoIG5vIGNvcnJlY3RuZXNzIGlz c3Vlcy4gRXZlbiBvbiBhIHNtYWxsIGpvaW4sIEdFUU8gc2hvd3MgaGlnaGVyIHBsYW5uaW5nIG92 ZXJoZWFkLCB3aGlsZSBHT08gcGxhbnMgZmFzdGVyIHdpdGggY29tcGFyYWJsZSBleGVjdXRpb24g Y29zdC4NCj4gSSB0aGVuIGV2YWx1YXRlZCBzY2FsaW5nIHVzaW5nIHN5bnRoZXRpYyAxNS10YWJs ZSBhbmQgMjAtdGFibGUgam9pbnMgd2l0aCBFWFBMQUlOIChBTkFMWVpFLCBUSU1JTkcgT0ZGKToN Cj4gICAgICAxNSB0YWJsZXMNCj4gICAgICBEUDogfjIyLjkgbXMgfCB+MjMuNCBtcw0KPiAgICAg IEdFUU86IH40Ni43IG1zIHwgfjIwLjUgbXMNCj4gICAgICBHT086IH4xLjggbXMgfCB+MjIuNCBt cw0KPg0KPiAgICAgICAyMCB0YWJsZXMNCj4gICAgICAgRFA6IH40OC4xIG1zIHwgfjMwLjUgbXMN Cj4gICAgICBHRVFPOiB+NTEuMCBtcyB8IH4yNi43IG1zDQo+ICAgICAgR09POiB+My4yIG1zIHwg fjI5LjAgbXMNCj4NCj4gUGxhbm5pbmcgdGltZSBpbmNyZWFzZXMgbm90YWJseSBmb3IgRFAgYW5k IHJlbWFpbnMgcmVsYXRpdmVseSBoaWdoIGZvciBHRVFPLCB3aGlsZSBHT08gc3RheXMgdmVyeSBs b3cgZXZlbiBhdCAyMCBqb2lucywgaW5kaWNhdGluZyBzdWJzdGFudGlhbGx5DQo+IHJlZHVjZWQg cGxhbm5pbmcgb3ZlcmhlYWQuIEV4ZWN1dGlvbiBjb3N0cyByZW1haW4gYnJvYWRseSBjb21wYXJh YmxlLCB3aXRoIG5vIG9idmlvdXMgcmVncmVzc2lvbnMgZnJvbSBHT08gaW4gdGhpcyBzeW50aGV0 aWMgd29ya2xvYWQuDQo+DQo+IEFsdGhvdWdoIHRoaXMgdXNlcyBhIGNvbnRyb2xsZWQgc3ludGhl dGljIGpvaW4gZ3JhcGggcmF0aGVyIHRoYW4gSk9CL1RQQy1ILCB0aGUgc2NhbGluZyBiZWhhdmlv ciBhcHBlYXJzIGNvbnNpc3RlbnQgd2l0aCBHT0/igJlzIGdvYWwgb2Ygc2lnbmlmaWNhbnRseSBj aGVhcGVyIHBsYW5uaW5nIHRoYW4gRFAvR0VRTyB3aGlsZSBwcmVzZXJ2aW5nIHNpbWlsYXIgcGxh biBxdWFsaXR5Lg0KPg0KPiBJIHBsYW4gdG8gY29udGludWUgdGVzdGluZyB3aXRoIG1vcmUgcmVh bGlzdGljIHdvcmtsb2FkcyBhbmQgd2lsbCBzaGFyZSBmdXJ0aGVyIHJlc3VsdHMgaWYgYW55dGhp bmcgbm90YWJsZSBhcHBlYXJzLg0KPg0KPiBUaGFua3MgZm9yIHRoZSBpbnRlcmVzdGluZyB3b3Jr Lg0KPg0KPiBSZWdhcmRzLA0KPiBMYWtzaG1pDQoNCkhpLA0KDQpUaGFuayB5b3UgdmVyeSBtdWNo IGZvciB0ZXN0aW5nIHY0IGFuZCBzaGFyaW5nIHRoZSByZXN1bHRzLiBJIHJlYWxseQ0KYXBwcmVj aWF0ZSB0aGUgZWZmb3J0IGFuZCB0aGUgZGV0YWlsZWQgZmVlZGJhY2suDQoNCkkgYWxzbyBhZ3Jl ZSB3aXRoIFRvbWFz4oCZcyBwb2ludCB0aGF0IHdlIG5lZWQgYmV0dGVyIGJlbmNobWFyayBjb250 ZXh0IHRvDQpldmFsdWF0ZSBwbGFuIHF1YWxpdHksIG5vdCBvbmx5IHBsYW5uaW5nIHRpbWUuDQoN CknigJl2ZSBwcmVwYXJlZCBhIHY1IHJlZnJlc2ggb24gdG9wIG9mIHY0LCBzdGlsbCBzcGxpdCBp bnRvIHR3byBwYXRjaGVzDQoodjUtMDAwMSBhbmQgdjUtMDAwMikuDQpJIGFsc28gcmFuIGBtYWtl IGNoZWNrLXdvcmxkYCBvbiBjdXJyZW50IG1hc3RlciB3aXRoIHY1IGFwcGxpZWQsIGFuZCBpdA0K cGFzc2VzIG9uIG15IHNpZGUuDQoNCkNvbXBhcmVkIHdpdGggdjQ6DQoNCltQQVRDSCB2NSAxLzJd DQotIGtlZXBzIHRoZSBiYXNlIEdPTyBqb2luLXNlYXJjaCBwYXRoIGZvY3VzZWQgb24gYSBzaW5n bGUgZ3JlZWR5IHNpZ25hbA0KKGNvc3QpOw0KLSBmaXhlcyBpc3N1ZXMgZm91bmQgZHVyaW5nIHJl Y2VudCB0ZXN0aW5nIChtYWlubHkgYXJvdW5kIGNhbmRpZGF0ZQ0KcHJvYmluZy9jbGVhbnVwIGFu ZCBmYWlsdXJlIHBhdGhzKTsNCi0gaW1wcm92ZXMgc3RhYmlsaXR5L2RldGVybWluaXNtIGluIGNh bmRpZGF0ZSBzZWxlY3Rpb24gKGluY2x1ZGluZyB0aWUNCmhhbmRsaW5nKTsNCi0gdXBkYXRlcyBy ZWdyZXNzaW9uIG91dHB1dHMgYWNjb3JkaW5nbHkuDQoNCltQQVRDSCB2NSAyLzJdDQotIGV4dGVu ZHMgYGdvb19ncmVlZHlfc3RyYXRlZ3lgIGFuZCBhZGRzIHRoZSBgc2VsZWN0aXZpdHlgIGhldXJp c3RpYw0Kc3VnZ2VzdGVkIGJ5IFRvbWFzOw0KLSBpbXByb3ZlcyBjb21iaW5lZCBtb2RlIHNvIG11 bHRpcGxlIGdyZWVkeSBzaWduYWxzIGFyZSBldmFsdWF0ZWQgaW4gYQ0KY29tbW9uIGZyYW1ld29y aywgYW5kIHRoZSBmaW5hbCBwbGFuIGlzIHNlbGVjdGVkIGJ5IGxvd2VzdCBlc3RpbWF0ZWQNCmB0 b3RhbF9jb3N0YDsNCi0ga2VlcHMgc3RyYXRlZ3ktbGF5ZXIgY2hhbmdlcyBpc29sYXRlZCBmcm9t IHRoZSBiYXNlIHBhdGggZm9yIGVhc2llcg0KY29tcGFyaXNvbiBhbmQgcmV2aWV3Lg0KDQpNeSBj dXJyZW50IG5leHQgc3RlcHMgYXJlOg0KDQoxLiBDb250aW51ZSBldmFsdWF0aW5nIHBsYW4gcXVh bGl0eSBvbiBtb3JlIGRhdGFzZXRzL3dvcmtsb2Fkcy4gSeKAmXZlDQphbHJlYWR5IGNvbGxlY3Rl ZCBzZXZlcmFsIGNhbmRpZGF0ZSB0ZXN0czogc29tZSBhcmUgSk9CLWJhc2VkDQp2YXJpYW50cywg YW5kIG90aGVycyBhcmUgc3ludGhldGljIHdvcmtsb2Fkcy4gTmV4dCwgSSBwbGFuIHRvDQpjb25z b2xpZGF0ZSB0aGVzZSBpbnRvIGEgdW5pZmllZCB0ZXN0IHNldCAod2l0aCByZXByb2R1Y2libGUN CnNldHVwL2RldGFpbHMpLCBwdWJsaXNoIGl0LCBhbmQgcnVuIGJyb2FkZXIgY29tcGFyYXRpdmUg ZXZhbHVhdGlvbi4NCg0KMi4gUHJvdG90eXBlIGEgaHlicmlkIGhhbmRvZmYgYXBwcm9hY2g6IHVz ZSBncmVlZHkgY29udHJhY3Rpb24gZmlyc3QgdG8NCnJlZHVjZSB0aGUgam9pbiBncmFwaCwgdGhl biBsZXQgRFAgb3B0aW1pemUgdGhlIHJlZHVjZWQgcHJvYmxlbS4gVGhlDQpnb2FsIGlzIGEgc21v b3RoZXIgdHJhbnNpdGlvbiBhcm91bmQgdGhlIHRocmVzaG9sZCwgYXZvaWRpbmcgYWJydXB0DQpw bGFuLXNoYXBlIGNoYW5nZXMgZnJvbSBhIGhhcmQgb3B0aW1pemVyIHN3aXRjaC4NCg0KMy4gRXhw bG9yZSBtb3JlIGpvaW4tb3JkZXJpbmcgaW1wcm92ZW1lbnRzIGluY3JlbWVudGFsbHksIGluY2x1 ZGluZw0KaWRlYXMgZnJvbSDigJxTaW1wbGljaXR5IERvbmUgUmlnaHQgZm9yIEpvaW4gT3JkZXJp bmfigJ0gYW5kIHJlbGF0ZWQNCndvcmsuDQoNClRoYW5rcyBhZ2FpbiBmb3IgdGhlIGNhcmVmdWwg dGVzdGluZyBhbmQgZGV0YWlsZWQgZmVlZGJhY2suDQoNCi0tDQpCZXN0IHJlZ2FyZHMsDQpDaGVu Z3BlbmcgWWFuDQo= --_000_8927A117A7EA41E894B30B4F7767DA8Boutlookcom_ Content-Type: text/html; charset="utf-8" Content-ID: <0EE39D74C556B14FB6C06DEBC5F5D69F@jpnprd01.prod.outlook.com> Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjwvaGVhZD4NCjxib2R5Pg0KPGRpdiBjbGFzcz0i Qm9keUZyYWdtZW50Ij48Zm9udCBzaXplPSIyIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHQ7 Ij4NCjxkaXYgY2xhc3M9IlBsYWluVGV4dCI+PGJyPg0KJmd0OyAyMDI25bm0MuaciDEz5pelIDE5 OjE077yMbGFrc2htaSAmbHQ7bGFrc2htaWdjZGFjQGdtYWlsLmNvbSZndDsg5YaZ6YGT77yaPGJy Pg0KJmd0OyA8YnI+DQomZ3Q7IEhJIGFsbCw8YnI+DQomZ3Q7IEkgdGVzdGVkIHRoZSBsYXRlc3Qg R09PIHBhdGNoICh2NCkgb24gYSBmcmVzaCBidWlsZCBmcm9tIHRoZSBjdXJyZW50IFBvc3RncmVT UUwgbWFzdGVyLiBUaGUgcGF0Y2ggYXBwbGllZCBjbGVhbmx5LCB0aGUgc2VydmVyIGJ1aWx0IHdp dGhvdXQgaXNzdWVzLCBhbmQgcmVncmVzc2lvbiB0ZXN0cyBwYXNzZWQgZXhjZXB0IGZvciB0aGUg ZXhwZWN0ZWQgRVhQTEFJTiBvdXRwdXQgZGlmZmVyZW5jZXMgZHVlIHRvIHRoZSBuZXcgam9pbiBv cmRlcmluZw0KIGJlaGF2aW9yLjxicj4NCiZndDsgPGJyPg0KJmd0OyBBcyBhIHF1aWNrIHNhbml0 eSBjaGVjaywgSSBjb21wYXJlZCBEUCwgR0VRTywgYW5kIEdPTyBvbiBhIHNtYWxsIG11bHRpLWpv aW4gcXVlcnk6PGJyPg0KJmd0OyA8YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7IERQIHBsYW5uaW5nOiB+MC42NiBtczxicj4NCiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgR0VRTyBwbGFubmluZzogfjIuMjggbXM8YnI+DQomZ3Q7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IEdPTyBwbGFubmluZzogfjAuMzggbXM8YnI+DQomZ3Q7IEV4ZWN1dGlv biB0aW1lcyB3ZXJlIHNpbWlsYXIgYWNyb3NzIGFsbCB0aHJlZSAofjEuNeKAkzEuNyBtcykgd2l0 aCBubyBjb3JyZWN0bmVzcyBpc3N1ZXMuIEV2ZW4gb24gYSBzbWFsbCBqb2luLCBHRVFPIHNob3dz IGhpZ2hlciBwbGFubmluZyBvdmVyaGVhZCwgd2hpbGUgR09PIHBsYW5zIGZhc3RlciB3aXRoIGNv bXBhcmFibGUgZXhlY3V0aW9uIGNvc3QuPGJyPg0KJmd0OyBJIHRoZW4gZXZhbHVhdGVkIHNjYWxp bmcgdXNpbmcgc3ludGhldGljIDE1LXRhYmxlIGFuZCAyMC10YWJsZSBqb2lucyB3aXRoIEVYUExB SU4gKEFOQUxZWkUsIFRJTUlORyBPRkYpOjxicj4NCiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgMTUgdGFibGVzPGJyPg0KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyBEUDogfjIyLjkgbXMgfCB+MjMuNCBtczxicj4NCiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgR0VRTzogfjQ2LjcgbXMgfCB+MjAuNSBtczxicj4NCiZndDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgR09POiB+MS44IG1zIHwgfjIyLjQgbXM8YnI+DQomZ3Q7IDxicj4N CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMjAgdGFibGVzPGJyPg0K Jmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBEUDogfjQ4LjEgbXMgfCB+ MzAuNSBtczxicj4NCiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgR0VRTzogfjUx LjAgbXMgfCB+MjYuNyBtczxicj4NCiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg R09POiB+My4yIG1zIHwgfjI5LjAgbXM8YnI+DQomZ3Q7IDxicj4NCiZndDsgUGxhbm5pbmcgdGlt ZSBpbmNyZWFzZXMgbm90YWJseSBmb3IgRFAgYW5kIHJlbWFpbnMgcmVsYXRpdmVseSBoaWdoIGZv ciBHRVFPLCB3aGlsZSBHT08gc3RheXMgdmVyeSBsb3cgZXZlbiBhdCAyMCBqb2lucywgaW5kaWNh dGluZyBzdWJzdGFudGlhbGx5PGJyPg0KJmd0OyByZWR1Y2VkIHBsYW5uaW5nIG92ZXJoZWFkLiBF eGVjdXRpb24gY29zdHMgcmVtYWluIGJyb2FkbHkgY29tcGFyYWJsZSwgd2l0aCBubyBvYnZpb3Vz IHJlZ3Jlc3Npb25zIGZyb20gR09PIGluIHRoaXMgc3ludGhldGljIHdvcmtsb2FkLjxicj4NCiZn dDsgPGJyPg0KJmd0OyBBbHRob3VnaCB0aGlzIHVzZXMgYSBjb250cm9sbGVkIHN5bnRoZXRpYyBq b2luIGdyYXBoIHJhdGhlciB0aGFuIEpPQi9UUEMtSCwgdGhlIHNjYWxpbmcgYmVoYXZpb3IgYXBw ZWFycyBjb25zaXN0ZW50IHdpdGggR09P4oCZcyBnb2FsIG9mIHNpZ25pZmljYW50bHkgY2hlYXBl ciBwbGFubmluZyB0aGFuIERQL0dFUU8gd2hpbGUgcHJlc2VydmluZyBzaW1pbGFyIHBsYW4gcXVh bGl0eS48YnI+DQomZ3Q7IDxicj4NCiZndDsgSSBwbGFuIHRvIGNvbnRpbnVlIHRlc3Rpbmcgd2l0 aCBtb3JlIHJlYWxpc3RpYyB3b3JrbG9hZHMgYW5kIHdpbGwgc2hhcmUgZnVydGhlciByZXN1bHRz IGlmIGFueXRoaW5nIG5vdGFibGUgYXBwZWFycy48YnI+DQomZ3Q7IDxicj4NCiZndDsgVGhhbmtz IGZvciB0aGUgaW50ZXJlc3Rpbmcgd29yay48YnI+DQomZ3Q7IDxicj4NCiZndDsgUmVnYXJkcyw8 YnI+DQomZ3Q7IExha3NobWk8YnI+DQo8YnI+DQpIaSw8YnI+DQo8YnI+DQpUaGFuayB5b3UgdmVy eSBtdWNoIGZvciB0ZXN0aW5nIHY0IGFuZCBzaGFyaW5nIHRoZSByZXN1bHRzLiBJIHJlYWxseTxi cj4NCmFwcHJlY2lhdGUgdGhlIGVmZm9ydCBhbmQgdGhlIGRldGFpbGVkIGZlZWRiYWNrLjxicj4N Cjxicj4NCkkgYWxzbyBhZ3JlZSB3aXRoIFRvbWFz4oCZcyBwb2ludCB0aGF0IHdlIG5lZWQgYmV0 dGVyIGJlbmNobWFyayBjb250ZXh0IHRvPGJyPg0KZXZhbHVhdGUgcGxhbiBxdWFsaXR5LCBub3Qg b25seSBwbGFubmluZyB0aW1lLjxicj4NCjxicj4NCknigJl2ZSBwcmVwYXJlZCBhIHY1IHJlZnJl c2ggb24gdG9wIG9mIHY0LCBzdGlsbCBzcGxpdCBpbnRvIHR3byBwYXRjaGVzPGJyPg0KKHY1LTAw MDEgYW5kIHY1LTAwMDIpLiA8YnI+DQpJIGFsc28gcmFuIGBtYWtlIGNoZWNrLXdvcmxkYCBvbiBj dXJyZW50IG1hc3RlciB3aXRoIHY1IGFwcGxpZWQsIGFuZCBpdDxicj4NCnBhc3NlcyBvbiBteSBz aWRlLjxicj4NCjxicj4NCkNvbXBhcmVkIHdpdGggdjQ6PGJyPg0KPGJyPg0KW1BBVENIIHY1IDEv Ml08YnI+DQotIGtlZXBzIHRoZSBiYXNlIEdPTyBqb2luLXNlYXJjaCBwYXRoIGZvY3VzZWQgb24g YSBzaW5nbGUgZ3JlZWR5IHNpZ25hbDxicj4NCihjb3N0KTs8YnI+DQotIGZpeGVzIGlzc3VlcyBm b3VuZCBkdXJpbmcgcmVjZW50IHRlc3RpbmcgKG1haW5seSBhcm91bmQgY2FuZGlkYXRlPGJyPg0K cHJvYmluZy9jbGVhbnVwIGFuZCBmYWlsdXJlIHBhdGhzKTs8YnI+DQotIGltcHJvdmVzIHN0YWJp bGl0eS9kZXRlcm1pbmlzbSBpbiBjYW5kaWRhdGUgc2VsZWN0aW9uIChpbmNsdWRpbmcgdGllPGJy Pg0KaGFuZGxpbmcpOzxicj4NCi0gdXBkYXRlcyByZWdyZXNzaW9uIG91dHB1dHMgYWNjb3JkaW5n bHkuPGJyPg0KPGJyPg0KW1BBVENIIHY1IDIvMl08YnI+DQotIGV4dGVuZHMgYGdvb19ncmVlZHlf c3RyYXRlZ3lgIGFuZCBhZGRzIHRoZSBgc2VsZWN0aXZpdHlgIGhldXJpc3RpYzxicj4NCnN1Z2dl c3RlZCBieSBUb21hczs8YnI+DQotIGltcHJvdmVzIGNvbWJpbmVkIG1vZGUgc28gbXVsdGlwbGUg Z3JlZWR5IHNpZ25hbHMgYXJlIGV2YWx1YXRlZCBpbiBhPGJyPg0KY29tbW9uIGZyYW1ld29yaywg YW5kIHRoZSBmaW5hbCBwbGFuIGlzIHNlbGVjdGVkIGJ5IGxvd2VzdCBlc3RpbWF0ZWQ8YnI+DQpg dG90YWxfY29zdGA7PGJyPg0KLSBrZWVwcyBzdHJhdGVneS1sYXllciBjaGFuZ2VzIGlzb2xhdGVk IGZyb20gdGhlIGJhc2UgcGF0aCBmb3IgZWFzaWVyPGJyPg0KY29tcGFyaXNvbiBhbmQgcmV2aWV3 Ljxicj4NCjxicj4NCk15IGN1cnJlbnQgbmV4dCBzdGVwcyBhcmU6PGJyPg0KPGJyPg0KMS4gQ29u dGludWUgZXZhbHVhdGluZyBwbGFuIHF1YWxpdHkgb24gbW9yZSBkYXRhc2V0cy93b3JrbG9hZHMu IEnigJl2ZTxicj4NCmFscmVhZHkgY29sbGVjdGVkIHNldmVyYWwgY2FuZGlkYXRlIHRlc3RzOiBz b21lIGFyZSBKT0ItYmFzZWQ8YnI+DQp2YXJpYW50cywgYW5kIG90aGVycyBhcmUgc3ludGhldGlj IHdvcmtsb2Fkcy4gTmV4dCwgSSBwbGFuIHRvPGJyPg0KY29uc29saWRhdGUgdGhlc2UgaW50byBh IHVuaWZpZWQgdGVzdCBzZXQgKHdpdGggcmVwcm9kdWNpYmxlPGJyPg0Kc2V0dXAvZGV0YWlscyks IHB1Ymxpc2ggaXQsIGFuZCBydW4gYnJvYWRlciBjb21wYXJhdGl2ZSBldmFsdWF0aW9uLjxicj4N Cjxicj4NCjIuIFByb3RvdHlwZSBhIGh5YnJpZCBoYW5kb2ZmIGFwcHJvYWNoOiB1c2UgZ3JlZWR5 IGNvbnRyYWN0aW9uIGZpcnN0IHRvPGJyPg0KcmVkdWNlIHRoZSBqb2luIGdyYXBoLCB0aGVuIGxl dCBEUCBvcHRpbWl6ZSB0aGUgcmVkdWNlZCBwcm9ibGVtLiBUaGU8YnI+DQpnb2FsIGlzIGEgc21v b3RoZXIgdHJhbnNpdGlvbiBhcm91bmQgdGhlIHRocmVzaG9sZCwgYXZvaWRpbmcgYWJydXB0PGJy Pg0KcGxhbi1zaGFwZSBjaGFuZ2VzIGZyb20gYSBoYXJkIG9wdGltaXplciBzd2l0Y2guPGJyPg0K PGJyPg0KMy4gRXhwbG9yZSBtb3JlIGpvaW4tb3JkZXJpbmcgaW1wcm92ZW1lbnRzIGluY3JlbWVu dGFsbHksIGluY2x1ZGluZzxicj4NCmlkZWFzIGZyb20g4oCcU2ltcGxpY2l0eSBEb25lIFJpZ2h0 IGZvciBKb2luIE9yZGVyaW5n4oCdIGFuZCByZWxhdGVkPGJyPg0Kd29yay48YnI+DQo8YnI+DQpU aGFua3MgYWdhaW4gZm9yIHRoZSBjYXJlZnVsIHRlc3RpbmcgYW5kIGRldGFpbGVkIGZlZWRiYWNr Ljxicj4NCjwvZGl2Pg0KPC9zcGFuPjwvZm9udD48L2Rpdj4NCjxkaXYgY2xhc3M9IkJvZHlGcmFn bWVudCI+PGZvbnQgc2l6ZT0iMiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMXB0OyI+DQo8ZGl2 IGNsYXNzPSJQbGFpblRleHQiPjxicj4NCi0tPGJyPg0KQmVzdCByZWdhcmRzLDxicj4NCkNoZW5n cGVuZyBZYW48L2Rpdj4NCjwvc3Bhbj48L2ZvbnQ+PC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --_000_8927A117A7EA41E894B30B4F7767DA8Boutlookcom_-- --_005_8927A117A7EA41E894B30B4F7767DA8Boutlookcom_ Content-Type: application/octet-stream; name="v5-0001-Add-GOO-Greedy-Operator-Ordering-join-search-as-a.patch" Content-Description: v5-0001-Add-GOO-Greedy-Operator-Ordering-join-search-as-a.patch Content-Disposition: attachment; filename="v5-0001-Add-GOO-Greedy-Operator-Ordering-join-search-as-a.patch"; size=64368; creation-date="Sat, 14 Feb 2026 05:39:27 GMT"; modification-date="Sat, 14 Feb 2026 05:39:27 GMT" Content-ID: <2244A7E45898914BBEC8B1E10B767485@jpnprd01.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBjODc1NDAxMjJkMTc1NmQxMDA4M2Y4MWM3Y2UyOWQ4MTYzZDUxZGZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDaGVuZ3BlbmcgWWFuIDxjaGVuZ3BlbmdfeWFuQG91dGxvb2su Y29tPgpEYXRlOiBTYXQsIDE0IEZlYiAyMDI2IDExOjQzOjI0ICswODAwClN1YmplY3Q6IFtQQVRD SCB2NSAxLzJdIEFkZCBHT08gKEdyZWVkeSBPcGVyYXRvciBPcmRlcmluZykgam9pbiBzZWFyY2gg YXMgYW4KIGFsdGVybmF0aXZlIHRvIEdFUU8KCkludHJvZHVjZSBhIGdyZWVkeSBqb2luIHNlYXJj aCBhbGdvcml0aG0gKEdPTykgdG8gaGFuZGxlCmxhcmdlIGpvaW4gcHJvYmxlbXMuIEdPTyBidWls ZHMgam9pbiByZWxhdGlvbnMgaXRlcmF0aXZlbHksIG1haW50YWluaW5nCmEgbGlzdCBvZiBjbHVt cHMgKGpvaW4gY29tcG9uZW50cykgYW5kIGNvbW1pdHRpbmcgdG8gdGhlIGNoZWFwZXN0CmxlZ2Fs IGpvaW4gYXQgZWFjaCBzdGVwIHVudGlsIG9ubHkgb25lIGNsdW1wIHJlbWFpbnMuCgpTaWduZWQt b2ZmLWJ5OiBDaGVuZ3BlbmcgWWFuIDxjaGVuZ3BlbmdfeWFuQG91dGxvb2suY29tPgotLS0KIHNy Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jICAgICAgICAgfCAgIDQgKwogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BhdGgvZ29vLmMgICAgICAgICAgICAgIHwgNjA4ICsrKysrKysrKysr KysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvbWVzb24uYnVpbGQgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0ICAgICB8ICAgOSAr CiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDEgKwog c3JjL2luY2x1ZGUvb3B0aW1pemVyL2dvby5oICAgICAgICAgICAgICAgICAgIHwgIDIzICsKIHNy Yy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nb28ub3V0ICAgICAgICAgICAgIHwgNzAwICsrKysrKysr KysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgICAgICAg IHwgICAzICstCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAg fCAgIDkgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dvby5zcWwgICAgICAgICAgICAgICAgICB8 IDM2NCArKysrKysrKysKIDEyIGZpbGVzIGNoYW5nZWQsIDE3MjAgaW5zZXJ0aW9ucygrKSwgNSBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9nb28uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL29wdGltaXplci9nb28uaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ29vLm91dAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dvby5zcWwKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL01ha2VmaWxlCmluZGV4IDFlMTk5ZmY2NmY3Li4zYmM4MjVjZDg0NSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvTWFrZWZpbGUKQEAgLTE3LDYgKzE3LDcgQEAgT0JKUyA9IFwKIAlj bGF1c2VzZWwubyBcCiAJY29zdHNpemUubyBcCiAJZXF1aXZjbGFzcy5vIFwKKwlnb28ubyBcCiAJ aW5keHBhdGgubyBcCiAJam9pbnBhdGgubyBcCiAJam9pbnJlbHMubyBcCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvYWxscGF0aHMuYwppbmRleCA5MDI3NWUyNTg3Mi4uNmE1NmM2YmFiNjEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1 ZGUgIm9wdGltaXplci9jbGF1c2VzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2Nvc3QuaCIKICNp bmNsdWRlICJvcHRpbWl6ZXIvZ2Vxby5oIgorI2luY2x1ZGUgIm9wdGltaXplci9nb28uaCIKICNp bmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhu b2RlLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhzLmgiCkBAIC0zODk4LDYgKzM4OTksOSBA QCBtYWtlX3JlbF9mcm9tX2pvaW5saXN0KFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpqb2lubGlz dCkKIAogCQlpZiAoam9pbl9zZWFyY2hfaG9vaykKIAkJCXJldHVybiAoKmpvaW5fc2VhcmNoX2hv b2spIChyb290LCBsZXZlbHNfbmVlZGVkLCBpbml0aWFsX3JlbHMpOworCQkvKiBXSVA6IGZvciBu b3cgdXNlIGdlcW9fdGhyZXNob2xkIGZvciB0ZXN0aW5nICovCisJCWVsc2UgaWYgKGVuYWJsZV9n b29fam9pbl9zZWFyY2ggJiYgbGV2ZWxzX25lZWRlZCA+PSBnZXFvX3RocmVzaG9sZCkKKwkJCXJl dHVybiBnb29fam9pbl9zZWFyY2gocm9vdCwgbGV2ZWxzX25lZWRlZCwgaW5pdGlhbF9yZWxzKTsK IAkJZWxzZSBpZiAoZW5hYmxlX2dlcW8gJiYgbGV2ZWxzX25lZWRlZCA+PSBnZXFvX3RocmVzaG9s ZCkKIAkJCXJldHVybiBnZXFvKHJvb3QsIGxldmVsc19uZWVkZWQsIGluaXRpYWxfcmVscyk7CiAJ CWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2dvby5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvZ29vLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmU0OWE5ZjM3MmVmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BhdGgvZ29vLmMKQEAgLTAsMCArMSw2MDggQEAKKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIGdvby5jCisgKiAgICAgR3JlZWR5IG9wZXJhdG9yIG9yZGVyaW5nIChHT08pIGpv aW4gc2VhcmNoIGZvciBsYXJnZSBqb2luIHByb2JsZW1zCisgKgorICogR09PIGlzIGEgZGV0ZXJt aW5pc3RpYyBncmVlZHkgb3BlcmF0b3Igb3JkZXJpbmcgYWxnb3JpdGhtIHRoYXQgY29uc3RydWN0 cworICogam9pbiByZWxhdGlvbnMgaXRlcmF0aXZlbHksIGFsd2F5cyBjb21taXR0aW5nIHRvIHRo ZSBjaGVhcGVzdCBsZWdhbCBqb2luIGF0CisgKiBlYWNoIHN0ZXAuIFRoZSBhbGdvcml0aG0gbWFp bnRhaW5zIGEgbGlzdCBvZiAiY2x1bXBzIiAoam9pbiBjb21wb25lbnRzKSwKKyAqIGluaXRpYWxs eSBvbmUgcGVyIGJhc2UgcmVsYXRpb24uIEF0IGVhY2ggaXRlcmF0aW9uLCBpdCBldmFsdWF0ZXMg YWxsIGxlZ2FsCisgKiBwYWlycyBvZiBjbHVtcHMsIHNlbGVjdHMgdGhlIHBhaXIgdGhhdCBwcm9k dWNlcyB0aGUgY2hlYXBlc3Qgam9pbiBhY2NvcmRpbmcKKyAqIHRvIHRoZSBwbGFubmVyJ3MgY29z dCBtb2RlbCwgYW5kIHJlcGxhY2VzIHRob3NlIHR3byBjbHVtcHMgd2l0aCB0aGUKKyAqIHJlc3Vs dGluZyBqb2lucmVsLiBUaGlzIGNvbnRpbnVlcyB1bnRpbCBvbmx5IG9uZSBjbHVtcCByZW1haW5z LgorICoKKyAqIEFMR09SSVRITSBDT01QTEVYSVRZOgorICoKKyAqIFRpbWUgQ29tcGxleGl0eTog TyhuXjMpIHdoZXJlIG4gaXMgdGhlIG51bWJlciBvZiBiYXNlIHJlbGF0aW9ucy4KKyAqIC0gVGhl IGFsZ29yaXRobSBwZXJmb3JtcyAobiAtIDEpIGl0ZXJhdGlvbnMsIG1lcmdpbmcgdHdvIGNsdW1w cyBlYWNoIHRpbWUuCisgKiAtIEF0IGl0ZXJhdGlvbiBpLCB0aGVyZSBhcmUgKG4gLSBpICsgMSkg cmVtYWluaW5nIGNsdW1wcywgcmVxdWlyaW5nCisgKiAgIE8oKG4taSleMikgcGFpciBldmFsdWF0 aW9ucyB0byBmaW5kIHRoZSBjaGVhcGVzdCBqb2luLgorICogLSBUb3RhbDogU3VtIG9mIChuLWkp XjIgZm9yIGk9MSB0byBuLTEg4omIIE8obl4zKQorICoKKyAqIFJFRkVSRU5DRVM6CisgKgorICog VGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiB0aGUgYWxnb3JpdGhtIGRlc2NyaWJlZCBp bjoKKyAqCisgKiBMZW9uaWRhcyBGZWdhcmFzLCAiQSBOZXcgSGV1cmlzdGljIGZvciBPcHRpbWl6 aW5nIExhcmdlIFF1ZXJpZXMiLAorICogUHJvY2VlZGluZ3Mgb2YgdGhlIDl0aCBJbnRlcm5hdGlv bmFsIENvbmZlcmVuY2Ugb24gRGF0YWJhc2UgYW5kIEV4cGVydAorICogU3lzdGVtcyBBcHBsaWNh dGlvbnMgKERFWEEgJzk4KSwgQXVndXN0IDE5OTgsIFBhZ2VzIDcyNi03MzUuCisgKiBodHRwczov L2RsLmFjbS5vcmcvZG9pLzEwLjU1NTUvNjQ4MzExLjc1NDg5MgorICoKKyAqCisgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5p dmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAqICAgICBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9nb28uYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5j bHVkZSAibm9kZXMvYml0bWFwc2V0LmgiCisjaW5jbHVkZSAibm9kZXMvcGF0aG5vZGVzLmgiCisj aW5jbHVkZSAib3B0aW1pemVyL2dlcW8uaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvZ29vLmgiCisj aW5jbHVkZSAib3B0aW1pemVyL2pvaW5pbmZvLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhu b2RlLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhzLmgiCisjaW5jbHVkZSAidXRpbHMvaHNl YXJjaC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisKKy8qCisgKiBDb25maWd1cmF0 aW9uIGRlZmF1bHRzLiAgVGhlc2UgYXJlIGV4cG9zZWQgYXMgR1VDcyBpbiBndWNfdGFibGVzLmMu CisgKi8KK2Jvb2wJCWVuYWJsZV9nb29fam9pbl9zZWFyY2ggPSBmYWxzZTsKKworLyoKKyAqIFdv cmtpbmcgc3RhdGUgZm9yIGEgc2luZ2xlIEdPTyBzZWFyY2ggaW52b2NhdGlvbi4KKyAqCisgKiBU aGlzIHN0cnVjdHVyZSBob2xkcyBhbGwgdGhlIHN0YXRlIG5lZWRlZCBkdXJpbmcgYSBncmVlZHkg am9pbiBvcmRlciBzZWFyY2guCisgKiBJdCBtYW5hZ2VzIHRocmVlIG1lbW9yeSBjb250ZXh0cyB3 aXRoIGRpZmZlcmVudCBsaWZldGltZXMgdG8gYXZvaWQgbWVtb3J5CisgKiBibG9hdCBkdXJpbmcg bGFyZ2Ugam9pbiBzZWFyY2hlcy4KKyAqCisgKiBUT0RPOiBDb25zaWRlciB1c2luZyB0aGUgZXh0 ZW5zaW9uX3N0YXRlIG1lY2hhbmlzbSBpbiBQbGFubmVySW5mbyAoc2ltaWxhcgorICogdG8gR0VR TydzIGFwcHJvYWNoKSBpbnN0ZWFkIG9mIHBhc3NpbmcgR29vU3RhdGUgc2VwYXJhdGVseS4KKyAq LwordHlwZWRlZiBzdHJ1Y3QgR29vU3RhdGUKK3sKKwlQbGFubmVySW5mbyAqcm9vdDsJCQkvKiBn bG9iYWwgcGxhbm5lciBzdGF0ZSAqLworCU1lbW9yeUNvbnRleHQgZ29vX2N4dDsJCS8qIGxvbmct bGl2ZWQgKHBlci1zZWFyY2gpIGFsbG9jYXRpb25zICovCisJTWVtb3J5Q29udGV4dCBjYW5kX2N4 dDsJCS8qIHBlci1pdGVyYXRpb24gY2FuZGlkYXRlIHN0b3JhZ2UgKi8KKwlNZW1vcnlDb250ZXh0 IHNjcmF0Y2hfY3h0OwkvKiBwZXItY2FuZGlkYXRlIHNwZWN1bGF0aXZlIGV2YWx1YXRpb24gKi8K KwlMaXN0CSAgICpjbHVtcHM7CQkJLyogcmVtYWluaW5nIGpvaW4gY29tcG9uZW50cyAoUmVsT3B0 SW5mbyAqKSAqLworCisJLyoKKwkgKiAiY2x1bXBzIiBhcmUgc2ltaWxhciB0byBHRVFPJ3MgY29u Y2VwdCAoc2VlIGdlcW9fZXZhbC5jKTogam9pbgorCSAqIGNvbXBvbmVudHMgdGhhdCBoYXZlbid0 IGJlZW4gbWVyZ2VkIHlldC4gSW5pdGlhbGx5IG9uZSBwZXIgYmFzZQorCSAqIHJlbGF0aW9uLCBn cmFkdWFsbHkgbWVyZ2VkIHVudGlsIG9uZSByZW1haW5zLgorCSAqLworCWJvb2wJCXBydW5lX2Nh cnRlc2lhbjsJLyogc2tpcCBjbGF1c2VsZXNzIGpvaW5zIGluIHRoaXMgcGFzcz8gKi8KK30JCQlH b29TdGF0ZTsKKworLyoKKyAqIENhbmRpZGF0ZSBqb2luIGJldHdlZW4gdHdvIGNsdW1wcy4KKyAq CisgKiBUaGlzIHN0cnVjdHVyZSBob2xkcyB0aGUgZ3JlZWR5IG1ldHJpY3MgZnJvbSBhIHNwZWN1 bGF0aXZlIGpvaW5yZWwKKyAqIGV2YWx1YXRpb24uIFdlIGNyZWF0ZSB0aGlzIGxpZ2h0d2VpZ2h0 IHN0cnVjdHVyZSBpbiBjYW5kX2N4dCBhZnRlciBkaXNjYXJkaW5nCisgKiB0aGUgYWN0dWFsIGpv aW5yZWwgZnJvbSBzY3JhdGNoX2N4dCwgYWxsb3dpbmcgdXMgdG8gY29tcGFyZSBtYW55IGNhbmRp ZGF0ZXMKKyAqIHdpdGhvdXQgZXhoYXVzdGluZyBtZW1vcnkuCisgKi8KK3R5cGVkZWYgc3RydWN0 IEdvb0NhbmRpZGF0ZQoreworCVJlbE9wdEluZm8gKmxlZnQ7CQkJLyogbGVmdCBpbnB1dCBjbHVt cCAqLworCVJlbE9wdEluZm8gKnJpZ2h0OwkJCS8qIHJpZ2h0IGlucHV0IGNsdW1wICovCisJQ29z dAkJdG90YWxfY29zdDsJCS8qIHRvdGFsIGNvc3Qgb2YgY2hlYXBlc3QgcGF0aCAqLworCVJlbGlk cwkJam9pbnJlbGlkczsJCS8qIHJlbGlkcyBjb3ZlcmVkIGJ5IHRoaXMgam9pbiAqLworfQkJCUdv b0NhbmRpZGF0ZTsKKworc3RhdGljIEdvb1N0YXRlICogZ29vX2luaXRfc3RhdGUoUGxhbm5lcklu Zm8gKnJvb3QsIExpc3QgKmluaXRpYWxfcmVscyk7CitzdGF0aWMgdm9pZCBnb29fZGVzdHJveV9z dGF0ZShHb29TdGF0ZSAqIHN0YXRlKTsKK3N0YXRpYyBSZWxPcHRJbmZvICpnb29fc2VhcmNoX2lu dGVybmFsKEdvb1N0YXRlICogc3RhdGUpOworc3RhdGljIHZvaWQgZ29vX3Jlc2V0X3Byb2JlX3N0 YXRlKEdvb1N0YXRlICogc3RhdGUsIGludCBzYXZlZF9yZWxfbGVuLAorCQkJCQkJCQkgIHN0cnVj dCBIVEFCICpzYXZlZF9oYXNoKTsKK3N0YXRpYyBHb29DYW5kaWRhdGUgKiBnb29fYnVpbGRfY2Fu ZGlkYXRlKEdvb1N0YXRlICogc3RhdGUsIFJlbE9wdEluZm8gKmxlZnQsCisJCQkJCQkJCQkJICBS ZWxPcHRJbmZvICpyaWdodCk7CitzdGF0aWMgUmVsT3B0SW5mbyAqZ29vX2NvbW1pdF9qb2luKEdv b1N0YXRlICogc3RhdGUsIEdvb0NhbmRpZGF0ZSAqIGNhbmQpOworc3RhdGljIGJvb2wgZ29vX2Nh bmRpZGF0ZV9iZXR0ZXIoR29vQ2FuZGlkYXRlICogYSwgR29vQ2FuZGlkYXRlICogYik7CitzdGF0 aWMgYm9vbCBnb29fY2FuZGlkYXRlX3BydW5hYmxlKEdvb1N0YXRlICogc3RhdGUsIFJlbE9wdElu Zm8gKmxlZnQsCisJCQkJCQkJCSAgIFJlbE9wdEluZm8gKnJpZ2h0KTsKKworLyoKKyAqIGdvb19q b2luX3NlYXJjaAorICoJCUVudHJ5IHBvaW50IGZvciBHcmVlZHkgT3BlcmF0b3IgT3JkZXJpbmcg am9pbiBzZWFyY2ggYWxnb3JpdGhtLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZy b20gbWFrZV9yZWxfZnJvbV9qb2lubGlzdCgpIHdoZW4KKyAqIGVuYWJsZV9nb29fam9pbl9zZWFy Y2ggaXMgdHJ1ZSBhbmQgdGhlIG51bWJlciBvZiByZWxhdGlvbnMgbWVldHMgb3IKKyAqIGV4Y2Vl ZHMgZ2Vxb190aHJlc2hvbGQuCisgKgorICogUmV0dXJucyB0aGUgZmluYWwgUmVsT3B0SW5mbyBy ZXByZXNlbnRpbmcgdGhlIGpvaW4gb2YgYWxsIGJhc2UgcmVsYXRpb25zLAorICogb3IgZXJyb3Jz IG91dCBpZiBubyB2YWxpZCBqb2luIG9yZGVyIGNhbiBiZSBmb3VuZC4KKyAqLworUmVsT3B0SW5m byAqCitnb29fam9pbl9zZWFyY2goUGxhbm5lckluZm8gKnJvb3QsIGludCBsZXZlbHNfbmVlZGVk LAorCQkJCUxpc3QgKmluaXRpYWxfcmVscykKK3sKKwlHb29TdGF0ZSAgICpzdGF0ZTsKKwlSZWxP cHRJbmZvICpyZXN1bHQ7CisJaW50CQkJYmFzZV9yZWxfY291bnQ7CisJc3RydWN0IEhUQUIgKmJh c2VfaGFzaDsKKworCS8qIEluaXRpYWxpemUgc2VhcmNoIHN0YXRlIGFuZCBtZW1vcnkgY29udGV4 dHMgKi8KKwlzdGF0ZSA9IGdvb19pbml0X3N0YXRlKHJvb3QsIGluaXRpYWxfcmVscyk7CisKKwkv KgorCSAqIFNhdmUgaW5pdGlhbCBzdGF0ZSBvZiBqb2luX3JlbF9saXN0IGFuZCBqb2luX3JlbF9o YXNoIHNvIHdlIGNhbiByZXN0b3JlCisJICogdGhlbSBpZiB0aGUgc2VhcmNoIGZhaWxzLgorCSAq LworCWJhc2VfcmVsX2NvdW50ID0gbGlzdF9sZW5ndGgocm9vdC0+am9pbl9yZWxfbGlzdCk7CisJ YmFzZV9oYXNoID0gcm9vdC0+am9pbl9yZWxfaGFzaDsKKworCS8qIFJ1biB0aGUgbWFpbiBncmVl ZHkgc2VhcmNoIGxvb3AgKi8KKwlyZXN1bHQgPSBnb29fc2VhcmNoX2ludGVybmFsKHN0YXRlKTsK KworCWlmIChyZXN1bHQgPT0gTlVMTCkKKwl7CisJCS8qIFJlc3RvcmUgcGxhbm5lciBzdGF0ZSBi ZWZvcmUgcmVwb3J0aW5nIGVycm9yICovCisJCXJvb3QtPmpvaW5fcmVsX2xpc3QgPSBsaXN0X3Ry dW5jYXRlKHJvb3QtPmpvaW5fcmVsX2xpc3QsIGJhc2VfcmVsX2NvdW50KTsKKwkJcm9vdC0+am9p bl9yZWxfaGFzaCA9IGJhc2VfaGFzaDsKKwkJZWxvZyhFUlJPUiwgIkdPTyBqb2luIHNlYXJjaCBm YWlsZWQgdG8gZmluZCBhIHZhbGlkIGpvaW4gb3JkZXIiKTsKKwl9CisKKwlnb29fZGVzdHJveV9z dGF0ZShzdGF0ZSk7CisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIGdvb19pbml0X3N0YXRl CisgKgkJSW5pdGlhbGl6ZSBwZXItc2VhcmNoIHN0YXRlIGFuZCBtZW1vcnkgY29udGV4dHMuCisg KgorICogQ3JlYXRlcyB0aGUgR29vU3RhdGUgc3RydWN0dXJlIGFuZCB0aHJlZSBtZW1vcnkgY29u dGV4dHMgd2l0aCBkaWZmZXJlbnQKKyAqIGxpZmV0aW1lczoKKyAqCisgKiAtIGdvb19jeHQ6IExp dmVzIGZvciB0aGUgZW50aXJlIHNlYXJjaCwgaG9sZHMgdGhlIGNsdW1wcyBsaXN0IGFuZCBzdGF0 ZS4KKyAqIC0gY2FuZF9jeHQ6IFJlc2V0IGFmdGVyIGVhY2ggaXRlcmF0aW9uLCBob2xkcyBjYW5k aWRhdGUgc3RydWN0dXJlcyBkdXJpbmcKKyAqICAgdGhlIGNvbXBhcmlzb24gcGhhc2UuCisgKiAt IHNjcmF0Y2hfY3h0OiBSZXNldCBhZnRlciBlYWNoIGNhbmRpZGF0ZSBldmFsdWF0aW9uLCBob2xk cyBzcGVjdWxhdGl2ZQorICogICBqb2lucmVscyB0aGF0IGFyZSBkaXNjYXJkZWQgYmVmb3JlIGNv bW1pdHRpbmcgdG8gYSBjaG9pY2UuCisgKgorICogVGhlIHRocmVlLWNvbnRleHQgZGVzaWduIHBy ZXZlbnRzIG1lbW9yeSBibG9hdCBkdXJpbmcgbGFyZ2Ugam9pbiBzZWFyY2hlcworICogd2hlcmUg d2UgbWF5IGV2YWx1YXRlIGh1bmRyZWRzIG9yIHRob3VzYW5kcyBvZiBjYW5kaWRhdGUgam9pbnMu CisgKi8KK3N0YXRpYyBHb29TdGF0ZSAqCitnb29faW5pdF9zdGF0ZShQbGFubmVySW5mbyAqcm9v dCwgTGlzdCAqaW5pdGlhbF9yZWxzKQoreworCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCUdvb1N0 YXRlICAgKnN0YXRlOworCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHJvb3QtPnBs YW5uZXJfY3h0KTsKKworCXN0YXRlID0gcGFsbG9jKHNpemVvZihHb29TdGF0ZSkpOworCXN0YXRl LT5yb290ID0gcm9vdDsKKwlzdGF0ZS0+Y2x1bXBzID0gTklMOworCXN0YXRlLT5wcnVuZV9jYXJ0 ZXNpYW4gPSBmYWxzZTsKKworCS8qIENyZWF0ZSB0aGUgdGhyZWUtbGV2ZWwgbWVtb3J5IGNvbnRl eHQgaGllcmFyY2h5ICovCisJc3RhdGUtPmdvb19jeHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUo cm9vdC0+cGxhbm5lcl9jeHQsICJHT09TdGF0ZUNvbnRleHQiLAorCQkJCQkJCQkJCSAgIEFMTE9D U0VUX0RFRkFVTFRfU0laRVMpOworCXN0YXRlLT5jYW5kX2N4dCA9IEFsbG9jU2V0Q29udGV4dENy ZWF0ZShzdGF0ZS0+Z29vX2N4dCwgIkdPT0NhbmRpZGF0ZUNvbnRleHQiLAorCQkJCQkJCQkJCQlB TExPQ1NFVF9TTUFMTF9TSVpFUyk7CisJc3RhdGUtPnNjcmF0Y2hfY3h0ID0gQWxsb2NTZXRDb250 ZXh0Q3JlYXRlKAorCQkJCQkJCQkJCQkgICBzdGF0ZS0+Z29vX2N4dCwgIkdPT1NjcmF0Y2hDb250 ZXh0IiwgQUxMT0NTRVRfU01BTExfU0laRVMpOworCisJLyoKKwkgKiBDb3B5IHRoZSBpbml0aWFs X3JlbHMgbGlzdCBpbnRvIGdvb19jeHQuIFRoaXMgYmVjb21lcyBvdXIgd29ya2luZworCSAqIGNs dW1wcyBsaXN0IHRoYXQgd2UnbGwgbW9kaWZ5IHRocm91Z2hvdXQgdGhlIHNlYXJjaC4KKwkgKi8K KwlNZW1vcnlDb250ZXh0U3dpdGNoVG8oc3RhdGUtPmdvb19jeHQpOworCXN0YXRlLT5jbHVtcHMg PSBsaXN0X2NvcHkoaW5pdGlhbF9yZWxzKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj eHQpOworCisJcmV0dXJuIHN0YXRlOworfQorCisvKgorICogZ29vX2Rlc3Ryb3lfc3RhdGUKKyAq CQlGcmVlIGFsbCBtZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUgR09PIHNlYXJjaC4KKyAqCisgKiBE ZWxldGVzIHRoZSBnb29fY3h0IG1lbW9yeSBjb250ZXh0ICh3aGljaCByZWN1cnNpdmVseSBkZWxl dGVzIGNhbmRfY3h0CisgKiBhbmQgc2NyYXRjaF9jeHQgYXMgY2hpbGRyZW4pIGFuZCB0aGVuIGZy ZWVzIHRoZSBzdGF0ZSBzdHJ1Y3R1cmUgaXRzZWxmLgorICogVGhpcyBpcyBjYWxsZWQgYWZ0ZXIg dGhlIHNlYXJjaCBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5IG9yIGZhaWxzLgorICovCitzdGF0aWMg dm9pZAorZ29vX2Rlc3Ryb3lfc3RhdGUoR29vU3RhdGUgKiBzdGF0ZSkKK3sKKwlNZW1vcnlDb250 ZXh0RGVsZXRlKHN0YXRlLT5nb29fY3h0KTsKKwlwZnJlZShzdGF0ZSk7Cit9CisKKy8qCisgKiBn b29fc2VhcmNoX2ludGVybmFsCisgKgkJTWFpbiBncmVlZHkgc2VhcmNoIGxvb3AuCisgKgorICog SW1wbGVtZW50cyBhIHR3by1wYXNzIGFsZ29yaXRobSBhdCBlYWNoIGl0ZXJhdGlvbjoKKyAqCisg KiBQYXNzIDE6IEV2YWx1YXRlIG9ubHkgY2xhdXNlLWNvbm5lY3RlZCBwYWlycyAoam9pbnMgd2l0 aCBhIGNsYXVzZSBvciBqb2luCisgKiAgICAgICAgIG9yZGVyIHJlc3RyaWN0aW9uKS4KKyAqCisg KiBQYXNzIDI6IElmIG5vIGxlZ2FsIGNsYXVzZS1jb25uZWN0ZWQgcGFpciBleGlzdHMsIGFsbG93 IENhcnRlc2lhbiBwcm9kdWN0cworICogICAgICAgICB0byBndWFyYW50ZWUgcHJvZ3Jlc3MuCisg KgorICogQWZ0ZXIgc2VsZWN0aW5nIHRoZSBiZXN0IGNhbmRpZGF0ZSwgd2UgcGVybWFuZW50bHkg Y3JlYXRlIGl0cyBqb2lucmVsIGluCisgKiBwbGFubmVyX2N4dCBhbmQgcmVwbGFjZSB0aGUgdHdv IGlucHV0IGNsdW1wcyB3aXRoIHRoaXMgbmV3IGpvaW5yZWwuIFRoaXMKKyAqIGNvbnRpbnVlcyB1 bnRpbCBvbmx5IG9uZSBjbHVtcCByZW1haW5zLgorICoKKyAqIFRoZSBmdW5jdGlvbiBydW5zIHBy aW1hcmlseSBpbiBnb29fY3h0LCB0ZW1wb3JhcmlseSBzd2l0Y2hpbmcgdG8gcGxhbm5lcl9jeHQK KyAqIHdoZW4gY3JlYXRpbmcgcGVybWFuZW50IGpvaW5yZWxzIGFuZCB0byBzY3JhdGNoX2N4dCB3 aGVuIGV2YWx1YXRpbmcKKyAqIHNwZWN1bGF0aXZlIGNhbmRpZGF0ZXMuCisgKgorICogUmV0dXJu cyB0aGUgZmluYWwgam9pbnJlbCBzcGFubmluZyBhbGwgYmFzZSByZWxhdGlvbnMsIG9yIE5VTEwg b24gZmFpbHVyZS4KKyAqLworc3RhdGljIFJlbE9wdEluZm8gKgorZ29vX3NlYXJjaF9pbnRlcm5h bChHb29TdGF0ZSAqIHN0YXRlKQoreworCVJlbE9wdEluZm8gKmZpbmFsX3JlbCA9IE5VTEw7CisJ TWVtb3J5Q29udGV4dCBvbGRjeHQ7CisKKwkvKgorCSAqIFN3aXRjaCB0byBnb29fY3h0IGZvciB0 aGUgZW50aXJlIHNlYXJjaCBwcm9jZXNzLiBUaGlzIGVuc3VyZXMgdGhhdCBhbGwKKwkgKiBvcGVy YXRpb25zIG9uIHN0YXRlLT5jbHVtcHMgYW5kIHJlbGF0ZWQgc3RydWN0dXJlcyBoYXBwZW4gaW4g dGhlCisJICogY29ycmVjdCBtZW1vcnkgY29udGV4dC4KKwkgKi8KKwlvbGRjeHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oc3RhdGUtPmdvb19jeHQpOworCisJd2hpbGUgKGxpc3RfbGVuZ3RoKHN0 YXRlLT5jbHVtcHMpID4gMSkKKwl7CisJCUxpc3RDZWxsICAgKmxjMTsKKwkJR29vQ2FuZGlkYXRl ICpiZXN0X2NhbmRpZGF0ZSA9IE5VTEw7CisKKwkJLyogQWxsb3cgcXVlcnkgY2FuY2VsbGF0aW9u IGR1cmluZyBsb25nIGpvaW4gc2VhcmNoZXMgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK KworCQlmb3IgKGludCBwYXNzID0gMDsgcGFzcyA8IDI7IHBhc3MrKykKKwkJeworCQkJYm9vbAkJ cHJ1bmVfY2FydGVzaWFuID0gKHBhc3MgPT0gMCk7CisKKwkJCS8qIFJlc2V0IGNhbmRpZGF0ZSBj b250ZXh0IGZvciB0aGlzIHBhc3MgKi8KKwkJCU1lbW9yeUNvbnRleHRSZXNldChzdGF0ZS0+Y2Fu ZF9jeHQpOworCQkJc3RhdGUtPnBydW5lX2NhcnRlc2lhbiA9IHBydW5lX2NhcnRlc2lhbjsKKwkJ CWJlc3RfY2FuZGlkYXRlID0gTlVMTDsKKworCQkJLyoKKwkJCSAqIEV2YWx1YXRlIGFsbCB2aWFi bGUgY2FuZGlkYXRlIHBhaXJzIGFuZCBzZWxlY3QgdGhlIGJlc3QuCisJCQkgKgorCQkJICogRm9y IGVhY2ggcGFpciB0aGF0IHBhc3NlcyB0aGUgcHJ1bmluZyBjaGVjaywgd2UgZG8gYSBmdWxsCisJ CQkgKiBzcGVjdWxhdGl2ZSBldmFsdWF0aW9uIHVzaW5nIG1ha2Vfam9pbl9yZWwoKSB0byBnZXQg YWNjdXJhdGUKKwkJCSAqIGNvc3RzLiBUaGUgY2FuZGlkYXRlIHdpdGggdGhlIGJlc3QgY29zdCAo YWNjb3JkaW5nIHRvCisJCQkgKiBnb29fY2FuZGlkYXRlX2JldHRlcikgaXMgcmVtZW1iZXJlZCBh bmQgd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIKKwkJCSAqIHRoaXMgcGFzcy4KKwkJCSAqCisJCQkg KiBUT0RPOiBDb25zaWRlciBjYWNoaW5nIGNoZWFwIGxlZ2FsaXR5L2Nvbm5lY3Rpdml0eSBvciBj b3N0CisJCQkgKiBlc3RpbWF0ZXMgYWNyb3NzIGl0ZXJhdGlvbnM7IGtlZXAgaXQgc2ltcGxlIGZv ciBub3cuCisJCQkgKi8KKwkJCWZvciAobGMxID0gbGlzdF9oZWFkKHN0YXRlLT5jbHVtcHMpOyBs YzEgIT0gTlVMTDsKKwkJCQkgbGMxID0gbG5leHQoc3RhdGUtPmNsdW1wcywgbGMxKSkKKwkJCXsK KwkJCQlSZWxPcHRJbmZvICpsZWZ0ID0gbGZpcnN0X25vZGUoUmVsT3B0SW5mbywgbGMxKTsKKwkJ CQlMaXN0Q2VsbCAgICpsYzIgPSBsbmV4dChzdGF0ZS0+Y2x1bXBzLCBsYzEpOworCisJCQkJZm9y ICg7IGxjMiAhPSBOVUxMOyBsYzIgPSBsbmV4dChzdGF0ZS0+Y2x1bXBzLCBsYzIpKQorCQkJCXsK KwkJCQkJUmVsT3B0SW5mbyAqcmlnaHQgPSBsZmlyc3Rfbm9kZShSZWxPcHRJbmZvLCBsYzIpOwor CQkJCQlHb29DYW5kaWRhdGUgKmNhbmQ7CisKKwkJCQkJY2FuZCA9IGdvb19idWlsZF9jYW5kaWRh dGUoc3RhdGUsIGxlZnQsIHJpZ2h0KTsKKwkJCQkJaWYgKGNhbmQgPT0gTlVMTCkKKwkJCQkJCWNv bnRpbnVlOworCisJCQkJCS8qIFRyYWNrIHRoZSBiZXN0IGNhbmRpZGF0ZSBzZWVuIHNvIGZhciAq LworCQkJCQlpZiAoYmVzdF9jYW5kaWRhdGUgPT0gTlVMTCB8fAorCQkJCQkJZ29vX2NhbmRpZGF0 ZV9iZXR0ZXIoY2FuZCwgYmVzdF9jYW5kaWRhdGUpKQorCQkJCQkJYmVzdF9jYW5kaWRhdGUgPSBj YW5kOworCQkJCX0KKwkJCX0KKworCQkJaWYgKGJlc3RfY2FuZGlkYXRlICE9IE5VTEwgfHwgIXBy dW5lX2NhcnRlc2lhbikKKwkJCQlicmVhazsKKwkJfQorCisJCS8qIE5vIGxlZ2FsIGpvaW4gY2Fu ZGlkYXRlIGZvdW5kIGZvciB0aGlzIGl0ZXJhdGlvbi4gKi8KKwkJaWYgKGJlc3RfY2FuZGlkYXRl ID09IE5VTEwpCisJCXsKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCQkJcmV0 dXJuIE5VTEw7CisJCX0KKworCQkvKgorCQkgKiBDb21taXQgdGhlIGJlc3QgY2FuZGlkYXRlOiBj cmVhdGUgdGhlIGpvaW5yZWwgcGVybWFuZW50bHkgYW5kCisJCSAqIHVwZGF0ZSB0aGUgY2x1bXBz IGxpc3QuCisJCSAqLworCQlmaW5hbF9yZWwgPSBnb29fY29tbWl0X2pvaW4oc3RhdGUsIGJlc3Rf Y2FuZGlkYXRlKTsKKworCQlpZiAoZmluYWxfcmVsID09IE5VTEwpCisJCQllbG9nKEVSUk9SLCAi R09PIGpvaW4gc2VhcmNoIGZhaWxlZCB0byBjb21taXQgam9pbiIpOworCX0KKworCS8qIFN3aXRj aCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBjb250ZXh0IGJlZm9yZSByZXR1cm5pbmcgKi8KKwlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKworCXJldHVybiBmaW5hbF9yZWw7Cit9CisKKy8q CisgKiBnb29fY2FuZGlkYXRlX3BydW5hYmxlCisgKgkJRGV0ZXJtaW5lIHdoZXRoZXIgYSBjYW5k aWRhdGUgcGFpciBzaG91bGQgYmUgc2tpcHBlZC4KKyAqCisgKiBXZSB1c2UgYSB0d28tbGV2ZWwg cHJ1bmluZyBzdHJhdGVneToKKyAqCisgKiAxLiBQYWlycyB3aXRoIGpvaW4gY2xhdXNlcyBvciBq b2luLW9yZGVyIHJlc3RyaWN0aW9ucyBhcmUgbmV2ZXIgcHJ1bmFibGUuCisgKiAgICBUaGVzZSBy ZXByZXNlbnQgbmF0dXJhbCBqb2lucyBvciByZXF1aXJlZCBqb2luIG9yZGVycyAoZS5nLiwgZnJv bSBvdXRlcgorICogICAgam9pbnMgb3IgTEFURVJBTCByZWZlcmVuY2VzKS4KKyAqCisgKiAyLiBJ ZiBwcnVuZV9jYXJ0ZXNpYW4gaXMgdHJ1ZSwgd2UgcHJ1bmUgQ2FydGVzaWFuIHByb2R1Y3RzIHRv IGF2b2lkCisgKiAgICBldmFsdWF0aW5nIGV4cGVuc2l2ZSBjcm9zcyBqb2lucyB3aGVuIGJldHRl ciBvcHRpb25zIGFyZSBhdmFpbGFibGUuCisgKgorICogSWYgbm8gbGVnYWwgY2xhdXNlLWNvbm5l Y3RlZCBwYWlycyBleGlzdCBpbiB0aGUgY3VycmVudCBpdGVyYXRpb24sCisgKiBnb29fc2VhcmNo X2ludGVybmFsKCkgd2lsbCByZXRyeSB3aXRoIHBydW5lX2NhcnRlc2lhbiBkaXNhYmxlZC4KKyAq CisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHBhaXIgc2hvdWxkIGJlIHBydW5lZCAoc2tpcHBlZCks IGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK2dvb19jYW5kaWRhdGVfcHJ1bmFi bGUoR29vU3RhdGUgKiBzdGF0ZSwgUmVsT3B0SW5mbyAqbGVmdCwKKwkJCQkJICAgUmVsT3B0SW5m byAqcmlnaHQpCit7CisJUGxhbm5lckluZm8gKnJvb3QgPSBzdGF0ZS0+cm9vdDsKKwlib29sCQlo YXNfY2xhdXNlID0gaGF2ZV9yZWxldmFudF9qb2luY2xhdXNlKHJvb3QsIGxlZnQsIHJpZ2h0KTsK Kwlib29sCQloYXNfcmVzdHJpY3Rpb24gPSBoYXZlX2pvaW5fb3JkZXJfcmVzdHJpY3Rpb24ocm9v dCwgbGVmdCwgcmlnaHQpOworCisJaWYgKGhhc19jbGF1c2UgfHwgaGFzX3Jlc3RyaWN0aW9uKQor CQlyZXR1cm4gZmFsc2U7CQkJLyogbmV2ZXIgcHJ1bmUgY2xhdXNlLWNvbm5lY3RlZCBqb2lucyAq LworCisJcmV0dXJuIHN0YXRlLT5wcnVuZV9jYXJ0ZXNpYW47Cit9CisKKy8qCisgKiBnb29fYnVp bGRfY2FuZGlkYXRlCisgKgkJRXZhbHVhdGUgYSBwb3RlbnRpYWwgam9pbiBiZXR3ZWVuIHR3byBj bHVtcHMgYW5kIHJldHVybiBhIGNhbmRpZGF0ZS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHBlcmZv cm1zIGEgc3BlY3VsYXRpdmUgam9pbiBldmFsdWF0aW9uIHRvIGV4dHJhY3QgZ3JlZWR5IG1ldHJp Y3MKKyAqIHdpdGhvdXQgcGVybWFuZW50bHkgY3JlYXRpbmcgdGhlIGpvaW5yZWwuIFRoZSBwcm9j ZXNzIGlzOgorICoKKyAqIDEuIENoZWNrIGJhc2ljIHZpYWJpbGl0eSAocHJ1bmluZywgb3Zlcmxh cHBpbmcgcmVsaWRzKS4KKyAqIDIuIFN3aXRjaCB0byBzY3JhdGNoX2N4dCBhbmQgY3JlYXRlIHRo ZSBqb2lucmVsIHVzaW5nIG1ha2Vfam9pbl9yZWwoKS4KKyAqIDMuIEdlbmVyYXRlIHBhdGhzIChp bmNsdWRpbmcgcGFydGl0aW9ud2lzZSBhbmQgcGFyYWxsZWwgdmFyaWFudHMpLgorICogNC4gRXh0 cmFjdCB0aGUgZ3JlZWR5IG1ldHJpY3MgZnJvbSB0aGUgam9pbiByZWxhdGlvbi4KKyAqIDUuIERp c2NhcmQgdGhlIGpvaW5yZWwgYnkgY2FsbGluZyBnb29fcmVzZXRfcHJvYmVfc3RhdGUoKS4KKyAq IDYuIENyZWF0ZSBhIGxpZ2h0d2VpZ2h0IEdvb0NhbmRpZGF0ZSBpbiBjYW5kX2N4dCB3aXRoIHRo ZSBleHRyYWN0ZWQgbWV0cmljcy4KKyAqCisgKiBUaGlzIGV2YWx1YXRlLWFuZC1kaXNjYXJkIHBh dHRlcm4gcHJldmVudHMgbWVtb3J5IGJsb2F0IHdoZW4gZXZhbHVhdGluZworICogbWFueSBjYW5k aWRhdGVzLiBUaGUgd2lubmluZyBjYW5kaWRhdGUgd2lsbCBiZSByZWJ1aWx0IHBlcm1hbmVudGx5 IGxhdGVyCisgKiBieSBnb29fY29tbWl0X2pvaW4oKS4KKyAqCisgKiBSZXR1cm5zIGEgR29vQ2Fu ZGlkYXRlIHN0cnVjdHVyZSwgb3IgTlVMTCBpZiB0aGUgam9pbiBpcyBpbGxlZ2FsIG9yCisgKiBv dmVybGFwcGluZy4gQXNzdW1lcyB0aGUgY2FsbGVyIGlzIGluIGdvb19jeHQuCisgKi8KK3N0YXRp YyBHb29DYW5kaWRhdGUgKiBnb29fYnVpbGRfY2FuZGlkYXRlKEdvb1N0YXRlICogc3RhdGUsIFJl bE9wdEluZm8gKmxlZnQsCisJCQkJCQkJCQkJICBSZWxPcHRJbmZvICpyaWdodCkKK3sKKwlQbGFu bmVySW5mbyAqcm9vdCA9IHN0YXRlLT5yb290OworCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCWlu dAkJCXNhdmVkX3JlbF9sZW47CisJc3RydWN0IEhUQUIgKnNhdmVkX2hhc2g7CisJUmVsT3B0SW5m byAqam9pbnJlbDsKKwlDb3N0CQl0b3RhbF9jb3N0OworCUdvb0NhbmRpZGF0ZSAqY2FuZDsKKwli b29sCQlpc190b3BfcmVsOworCisJLyogU2tpcCBpZiB0aGlzIHBhaXIgc2hvdWxkIGJlIHBydW5l ZCAqLworCWlmIChnb29fY2FuZGlkYXRlX3BydW5hYmxlKHN0YXRlLCBsZWZ0LCByaWdodCkpCisJ CXJldHVybiBOVUxMOworCisJLyogU2FuaXR5IGNoZWNrOiBlbnN1cmUgdGhlIGNsdW1wcyBkb24n dCBvdmVybGFwICovCisJaWYgKGJtc19vdmVybGFwKGxlZnQtPnJlbGlkcywgcmlnaHQtPnJlbGlk cykpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBTYXZlIHN0YXRlIGJlZm9yZSBzcGVjdWxh dGl2ZSBqb2luIGV2YWx1YXRpb24uIFdlJ2xsIGNyZWF0ZSB0aGUgam9pbnJlbAorCSAqIGluIHNj cmF0Y2hfY3h0IGFuZCB0aGVuIGRpc2NhcmQgaXQuCisJICovCisJc2F2ZWRfcmVsX2xlbiA9IGxp c3RfbGVuZ3RoKHJvb3QtPmpvaW5fcmVsX2xpc3QpOworCXNhdmVkX2hhc2ggPSByb290LT5qb2lu X3JlbF9oYXNoOworCisJLyogU3dpdGNoIHRvIHNjcmF0Y2hfY3h0IGZvciBzcGVjdWxhdGl2ZSBq b2lucmVsIGNyZWF0aW9uICovCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHN0YXRl LT5zY3JhdGNoX2N4dCk7CisKKwkvKgorCSAqIENyZWF0ZSB0aGUgam9pbnJlbCBhbmQgZ2VuZXJh dGUgYWxsIGl0cyBwYXRocy4KKwkgKgorCSAqIFRPRE86IFRoaXMgaXMgdGhlIG1vc3QgZXhwZW5z aXZlIHBhcnQgb2YgR09PLiBFYWNoIGNhbmRpZGF0ZSBldmFsdWF0aW9uCisJICogcGVyZm9ybXMg ZnVsbCBwYXRoIGdlbmVyYXRpb24gdmlhIG1ha2Vfam9pbl9yZWwoKS4KKwkgKi8KKwlqb2lucmVs ID0gbWFrZV9qb2luX3JlbChyb290LCBsZWZ0LCByaWdodCk7CisKKwlpZiAoam9pbnJlbCA9PSBO VUxMKQorCXsKKwkJLyogSW52YWxpZCBvciBpbGxlZ2FsIGpvaW4sIGNsZWFuIHVwIGFuZCByZXR1 cm4gTlVMTCAqLworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwkJZ29vX3Jlc2V0 X3Byb2JlX3N0YXRlKHN0YXRlLCBzYXZlZF9yZWxfbGVuLCBzYXZlZF9oYXNoKTsKKwkJcmV0dXJu IE5VTEw7CisJfQorCisJaXNfdG9wX3JlbCA9IGJtc19lcXVhbChqb2lucmVsLT5yZWxpZHMsIHJv b3QtPmFsbF9xdWVyeV9yZWxzKTsKKworCWdlbmVyYXRlX3BhcnRpdGlvbndpc2Vfam9pbl9wYXRo cyhyb290LCBqb2lucmVsKTsKKwlpZiAoIWlzX3RvcF9yZWwpCisJCWdlbmVyYXRlX3VzZWZ1bF9n YXRoZXJfcGF0aHMocm9vdCwgam9pbnJlbCwgZmFsc2UpOworCXNldF9jaGVhcGVzdChqb2lucmVs KTsKKworCWlmIChqb2lucmVsLT5ncm91cGVkX3JlbCAhPSBOVUxMICYmICFpc190b3BfcmVsKQor CXsKKwkJUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWwgPSBqb2lucmVsLT5ncm91cGVkX3JlbDsKKwor CQlBc3NlcnQoSVNfR1JPVVBFRF9SRUwoZ3JvdXBlZF9yZWwpKTsKKworCQlnZW5lcmF0ZV9ncm91 cGVkX3BhdGhzKHJvb3QsIGdyb3VwZWRfcmVsLCBqb2lucmVsKTsKKwkJc2V0X2NoZWFwZXN0KGdy b3VwZWRfcmVsKTsKKwl9CisKKwl0b3RhbF9jb3N0ID0gam9pbnJlbC0+Y2hlYXBlc3RfdG90YWxf cGF0aC0+dG90YWxfY29zdDsKKworCS8qCisJICogU3dpdGNoIGJhY2sgdG8gZ29vX2N4dCBhbmQg ZGlzY2FyZCB0aGUgc3BlY3VsYXRpdmUgam9pbnJlbC4KKwkgKiBnb29fcmVzZXRfcHJvYmVfc3Rh dGUoKSB3aWxsIGNsZWFuIHVwIGpvaW5fcmVsX2xpc3QsIGpvaW5fcmVsX2hhc2gsIGFuZAorCSAq IHJlc2V0IHNjcmF0Y2hfY3h0IHRvIGZyZWUgYWxsIHRoZSBqb2lucmVsJ3MgbWVtb3J5LgorCSAq LworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCWdvb19yZXNldF9wcm9iZV9zdGF0 ZShzdGF0ZSwgc2F2ZWRfcmVsX2xlbiwgc2F2ZWRfaGFzaCk7CisKKwkvKgorCSAqIE5vdyBjcmVh dGUgdGhlIGNhbmRpZGF0ZSBzdHJ1Y3R1cmUgaW4gY2FuZF9jeHQuIFRoaXMgd2lsbCBzdXJ2aXZl IHVudGlsCisJICogdGhlIGVuZCBvZiB0aGlzIGl0ZXJhdGlvbiAod2hlbiBjYW5kX2N4dCBpcyBy ZXNldCkuCisJICovCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHN0YXRlLT5jYW5k X2N4dCk7CisJY2FuZCA9IHBhbGxvYyhzaXplb2YoR29vQ2FuZGlkYXRlKSk7CisJY2FuZC0+bGVm dCA9IGxlZnQ7CisJY2FuZC0+cmlnaHQgPSByaWdodDsKKwljYW5kLT50b3RhbF9jb3N0ID0gdG90 YWxfY29zdDsKKwljYW5kLT5qb2lucmVsaWRzID0gYm1zX3VuaW9uKGxlZnQtPnJlbGlkcywgcmln aHQtPnJlbGlkcyk7CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisKKwlyZXR1cm4g Y2FuZDsKK30KKworLyoKKyAqIGdvb19yZXNldF9wcm9iZV9zdGF0ZQorICoJCUNsZWFuIHVwIGFm dGVyIGEgc3BlY3VsYXRpdmUgam9pbnJlbCBldmFsdWF0aW9uLgorICoKKyAqIFJldmVydHMgdGhl IHBsYW5uZXIncyBqb2luX3JlbF9saXN0IGFuZCBqb2luX3JlbF9oYXNoIHRvIHRoZWlyIHNhdmVk IHN0YXRlLAorICogcmVtb3ZpbmcgYW55IGpvaW5yZWxzIHRoYXQgd2VyZSBjcmVhdGVkIGR1cmlu ZyBzcGVjdWxhdGl2ZSBldmFsdWF0aW9uLgorICogQWxzbyByZXNldHMgc2NyYXRjaF9jeHQgdG8g ZnJlZSBhbGwgbWVtb3J5IHVzZWQgYnkgdGhlIGRpc2NhcmRlZCBqb2lucmVsCisgKiBhbmQgaXRz IHBhdGhzLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIGV4dHJhY3Rpbmcg Y29zdCBtZXRyaWNzIGZyb20gYSBzcGVjdWxhdGl2ZQorICogam9pbnJlbCB0aGF0IHdlIGRvbid0 IHdhbnQgdG8ga2VlcC4KKyAqLworc3RhdGljIHZvaWQKK2dvb19yZXNldF9wcm9iZV9zdGF0ZShH b29TdGF0ZSAqIHN0YXRlLCBpbnQgc2F2ZWRfcmVsX2xlbiwKKwkJCQkJICBzdHJ1Y3QgSFRBQiAq c2F2ZWRfaGFzaCkKK3sKKwlQbGFubmVySW5mbyAqcm9vdCA9IHN0YXRlLT5yb290OworCWludAkJ CWN1cl9yZWxfbGVuOworCisJY3VyX3JlbF9sZW4gPSBsaXN0X2xlbmd0aChyb290LT5qb2luX3Jl bF9saXN0KTsKKworCS8qIFJlbW92ZSBoYXNodGFibGUgZW50cmllcyBjcmVhdGVkIGJ5IHRoaXMg cHJvYmUgYmVmb3JlIHJlc2V0dGluZyBtZW1vcnkuICovCisJaWYgKHNhdmVkX2hhc2ggIT0gTlVM TCAmJiBjdXJfcmVsX2xlbiA+IHNhdmVkX3JlbF9sZW4pCisJeworCQlmb3IgKGludCBpID0gc2F2 ZWRfcmVsX2xlbjsgaSA8IGN1cl9yZWxfbGVuOyBpKyspCisJCXsKKwkJCVJlbE9wdEluZm8gKmpv aW5yZWwgPSBsaXN0X250aF9ub2RlKFJlbE9wdEluZm8sCisJCQkJCQkJCQkJCQlyb290LT5qb2lu X3JlbF9saXN0LCBpKTsKKwkJCWJvb2wJCWZvdW5kOworCisJCQkodm9pZCkgaGFzaF9zZWFyY2go c2F2ZWRfaGFzaCwgJihqb2lucmVsLT5yZWxpZHMpLAorCQkJCQkJCSAgIEhBU0hfUkVNT1ZFLCAm Zm91bmQpOworCQkJQXNzZXJ0KGZvdW5kKTsKKwkJfQorCX0KKworCS8qIFJlbW92ZSBzcGVjdWxh dGl2ZSBqb2lucmVscyBmcm9tIHRoZSBwbGFubmVyJ3MgbGlzdHMgKi8KKwlyb290LT5qb2luX3Jl bF9saXN0ID0gbGlzdF90cnVuY2F0ZShyb290LT5qb2luX3JlbF9saXN0LCBzYXZlZF9yZWxfbGVu KTsKKwlyb290LT5qb2luX3JlbF9oYXNoID0gc2F2ZWRfaGFzaDsKKworCS8qIEZyZWUgYWxsIG1l bW9yeSB1c2VkIGR1cmluZyBzcGVjdWxhdGl2ZSBldmFsdWF0aW9uICovCisJTWVtb3J5Q29udGV4 dFJlc2V0KHN0YXRlLT5zY3JhdGNoX2N4dCk7Cit9CisKKy8qCisgKiBnb29fY29tbWl0X2pvaW4K KyAqCQlQZXJtYW5lbnRseSBjcmVhdGUgdGhlIGNob3NlbiBqb2luIGFuZCB1cGRhdGUgdGhlIGNs dW1wcyBsaXN0LgorICoKKyAqIEFmdGVyIHNlbGVjdGluZyB0aGUgYmVzdCBjYW5kaWRhdGUgaW4g YW4gaXRlcmF0aW9uLCB3ZSBuZWVkIHRvIHBlcm1hbmVudGx5CisgKiBjcmVhdGUgaXRzIGpvaW5y ZWwgKHdpdGggYWxsIHBhdGhzKSBhbmQgaW50ZWdyYXRlIGl0IGludG8gdGhlIHBsYW5uZXIgc3Rh dGUuCisgKiBUaGlzIGZ1bmN0aW9uOgorICoKKyAqIDEuIFN3aXRjaGVzIHRvIHBsYW5uZXJfY3h0 IGFuZCBjcmVhdGVzIHRoZSBqb2lucmVsIHVzaW5nIG1ha2Vfam9pbl9yZWwoKS4KKyAqICAgIFVu bGlrZSB0aGUgc3BlY3VsYXRpdmUgZXZhbHVhdGlvbiwgdGhpcyBqb2lucmVsIGlzIGtlcHQgcGVy bWFuZW50bHkuCisgKiAyLiBHZW5lcmF0ZXMgcGFydGl0aW9ud2lzZSBhbmQgcGFyYWxsZWwgcGF0 aCB2YXJpYW50cy4KKyAqIDMuIERldGVybWluZXMgdGhlIGNoZWFwZXN0IHBhdGhzLgorICogNC4g VXBkYXRlcyBzdGF0ZS0+Y2x1bXBzIGJ5IHJlbW92aW5nIHRoZSB0d28gaW5wdXQgY2x1bXBzIGFu ZCBhZGRpbmcgdGhlCisgKiAgICBuZXcgam9pbnJlbCBhcyBhIHNpbmdsZSBjbHVtcC4KKyAqCisg KiBUaGUgbmV4dCBpdGVyYXRpb24gd2lsbCB0cmVhdCB0aGlzIGpvaW5yZWwgYXMgYW4gYXRvbWlj IHVuaXQgdGhhdCBjYW4gYmUKKyAqIGpvaW5lZCB3aXRoIG90aGVyIHJlbWFpbmluZyBjbHVtcHMu CisgKgorICogUmV0dXJucyB0aGUgbmV3bHkgY3JlYXRlZCBqb2lucmVsLiBBc3N1bWVzIHRoZSBj YWxsZXIgaXMgaW4gZ29vX2N4dC4KKyAqLworc3RhdGljIFJlbE9wdEluZm8gKgorZ29vX2NvbW1p dF9qb2luKEdvb1N0YXRlICogc3RhdGUsIEdvb0NhbmRpZGF0ZSAqIGNhbmQpCit7CisJTWVtb3J5 Q29udGV4dCBvbGRjeHQ7CisJUGxhbm5lckluZm8gKnJvb3QgPSBzdGF0ZS0+cm9vdDsKKwlSZWxP cHRJbmZvICpqb2lucmVsOworCWJvb2wJCWlzX3RvcF9yZWw7CisKKwkvKgorCSAqIENyZWF0ZSB0 aGUgam9pbnJlbCBwZXJtYW5lbnRseSBpbiBwbGFubmVyX2N4dC4gVW5saWtlIHRoZSBzcGVjdWxh dGl2ZQorCSAqIGV2YWx1YXRpb24gaW4gZ29vX2J1aWxkX2NhbmRpZGF0ZSgpLCB0aGlzIGpvaW5y ZWwgd2lsbCBiZSBrZXB0IGFuZAorCSAqIGFkZGVkIHRvIHJvb3QtPmpvaW5fcmVsX2xpc3QgZm9y IHVzZSBieSB0aGUgcmVzdCBvZiB0aGUgcGxhbm5lci4KKwkgKi8KKwlvbGRjeHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8ocm9vdC0+cGxhbm5lcl9jeHQpOworCisJam9pbnJlbCA9IG1ha2Vfam9p bl9yZWwocm9vdCwgY2FuZC0+bGVmdCwgY2FuZC0+cmlnaHQpOworCWlmIChqb2lucmVsID09IE5V TEwpCisJeworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwkJZWxvZyhFUlJPUiwg IkdPTyBqb2luIHNlYXJjaCBmYWlsZWQgdG8gY3JlYXRlIGpvaW4gcmVsYXRpb24iKTsKKwl9CisK KwkvKiBHZW5lcmF0ZSBhZGRpdGlvbmFsIHBhdGggdmFyaWFudHMsIGp1c3QgbGlrZSBzdGFuZGFy ZF9qb2luX3NlYXJjaCgpICovCisJaXNfdG9wX3JlbCA9IGJtc19lcXVhbChqb2lucmVsLT5yZWxp ZHMsIHJvb3QtPmFsbF9xdWVyeV9yZWxzKTsKKworCWdlbmVyYXRlX3BhcnRpdGlvbndpc2Vfam9p bl9wYXRocyhyb290LCBqb2lucmVsKTsKKwlpZiAoIWlzX3RvcF9yZWwpCisJCWdlbmVyYXRlX3Vz ZWZ1bF9nYXRoZXJfcGF0aHMocm9vdCwgam9pbnJlbCwgZmFsc2UpOworCXNldF9jaGVhcGVzdChq b2lucmVsKTsKKworCWlmIChqb2lucmVsLT5ncm91cGVkX3JlbCAhPSBOVUxMICYmICFpc190b3Bf cmVsKQorCXsKKwkJUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWwgPSBqb2lucmVsLT5ncm91cGVkX3Jl bDsKKworCQlBc3NlcnQoSVNfR1JPVVBFRF9SRUwoZ3JvdXBlZF9yZWwpKTsKKworCQlnZW5lcmF0 ZV9ncm91cGVkX3BhdGhzKHJvb3QsIGdyb3VwZWRfcmVsLCBqb2lucmVsKTsKKwkJc2V0X2NoZWFw ZXN0KGdyb3VwZWRfcmVsKTsKKwl9CisKKwkvKgorCSAqIFN3aXRjaCBiYWNrIHRvIGdvb19jeHQg YW5kIHVwZGF0ZSB0aGUgY2x1bXBzIGxpc3QuIFJlbW92ZSB0aGUgdHdvIGlucHV0CisJICogY2x1 bXBzIGFuZCBhZGQgdGhlIG5ldyBqb2lucmVsIGFzIGEgc2luZ2xlIGNsdW1wLgorCSAqLworCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCisJc3RhdGUtPmNsdW1wcyA9IGxpc3RfZGVs ZXRlX3B0cihzdGF0ZS0+Y2x1bXBzLCBjYW5kLT5sZWZ0KTsKKwlzdGF0ZS0+Y2x1bXBzID0gbGlz dF9kZWxldGVfcHRyKHN0YXRlLT5jbHVtcHMsIGNhbmQtPnJpZ2h0KTsKKwlzdGF0ZS0+Y2x1bXBz ID0gbGFwcGVuZChzdGF0ZS0+Y2x1bXBzLCBqb2lucmVsKTsKKworCXJldHVybiBqb2lucmVsOwor fQorCisvKgorICogZ29vX2NhbmRpZGF0ZV9iZXR0ZXIKKyAqCQlDb21wYXJlIHR3byBqb2luIGNh bmRpZGF0ZXMgYW5kIGRldGVybWluZSB3aGljaCBpcyBiZXR0ZXIuCisgKgorICogUmV0dXJucyB0 cnVlIGlmIGNhbmRpZGF0ZSAnYScgc2hvdWxkIGJlIHByZWZlcnJlZCBvdmVyIGNhbmRpZGF0ZSAn YicuCisgKi8KK3N0YXRpYyBib29sCitnb29fY2FuZGlkYXRlX2JldHRlcihHb29DYW5kaWRhdGUg KiBhLCBHb29DYW5kaWRhdGUgKiBiKQoreworCWlmIChhLT50b3RhbF9jb3N0IDwgYi0+dG90YWxf Y29zdCkKKwkJcmV0dXJuIHRydWU7CisJaWYgKGEtPnRvdGFsX2Nvc3QgPiBiLT50b3RhbF9jb3N0 KQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gYm1zX2NvbXBhcmUoYS0+am9pbnJlbGlkcywg Yi0+am9pbnJlbGlkcykgPCAwOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BhdGgvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9tZXNvbi5idWls ZAppbmRleCA5OGYzZWJkNTE5Mi4uZDRlNzFhMjMzOTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wYXRoL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL21lc29uLmJ1aWxkCkBAIC01LDYgKzUsNyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMo CiAgICdjbGF1c2VzZWwuYycsCiAgICdjb3N0c2l6ZS5jJywKICAgJ2VxdWl2Y2xhc3MuYycsCisg ICdnb28uYycsCiAgICdpbmR4cGF0aC5jJywKICAgJ2pvaW5wYXRoLmMnLAogICAnam9pbnJlbHMu YycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRh dCBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IDI3MWMw MzM5NTJlLi42MjRkZWU2MzJjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfcGFyYW1ldGVycy5kYXQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1l dGVycy5kYXQKQEAgLTg0OSw2ICs4NDksMTUgQEAKICAgYm9vdF92YWwgPT4gJ3RydWUnLAogfSwK IAorLyogV0lQOiBmb3Igbm93IGtlZXAgdGhpcyBpbiBRVUVSWV9UVU5JTkdfR0VRTyBncm91cCBm b3IgdGVzdGluZyBjb252ZW5pZW5jZSAqLworeyBuYW1lID0+ICdlbmFibGVfZ29vX2pvaW5fc2Vh cmNoJywgdHlwZSA9PiAnYm9vbCcsIGNvbnRleHQgPT4gJ1BHQ19VU0VSU0VUJywgZ3JvdXAgPT4g J1FVRVJZX1RVTklOR19HRVFPJywKKyAgc2hvcnRfZGVzYyA9PiAnRW5hYmxlcyB0aGUgcGxhbm5l clwncyB1c2Ugb2YgR09PIGpvaW4gc2VhcmNoIGZvciBsYXJnZSBqb2luIHByb2JsZW1zLicsCisg IGxvbmdfZGVzYyA9PiAnR3JlZWR5IE9wZXJhdG9yIE9yZGVyaW5nIChHT08pIGlzIGEgZGV0ZXJt aW5pc3RpYyBqb2luIHNlYXJjaCBhbGdvcml0aG0gZm9yIHF1ZXJpZXMgd2l0aCBtYW55IHJlbGF0 aW9ucy4nLAorICBmbGFncyA9PiAnR1VDX0VYUExBSU4nLAorICB2YXJpYWJsZSA9PiAnZW5hYmxl X2dvb19qb2luX3NlYXJjaCcsCisgIGJvb3RfdmFsID0+ICdmYWxzZScsCit9LAorCiB7IG5hbWUg PT4gJ2VuYWJsZV9ncm91cF9ieV9yZW9yZGVyaW5nJywgdHlwZSA9PiAnYm9vbCcsIGNvbnRleHQg PT4gJ1BHQ19VU0VSU0VUJywgZ3JvdXAgPT4gJ1FVRVJZX1RVTklOR19NRVRIT0QnLAogICBzaG9y dF9kZXNjID0+ICdFbmFibGVzIHJlb3JkZXJpbmcgb2YgR1JPVVAgQlkga2V5cy4nLAogICBmbGFn cyA9PiAnR1VDX0VYUExBSU4nLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3Fs LmNvbmYuc2FtcGxlCmluZGV4IGY5MzhjYzY1YTNhLi5lYWIxMDIxNjY1YSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtNDYxLDYgKzQ2MSw3 IEBACiAjIC0gR2VuZXRpYyBRdWVyeSBPcHRpbWl6ZXIgLQogCiAjZ2VxbyA9IG9uCisjZW5hYmxl X2dvb19qb2luX3NlYXJjaCA9IG9mZgogI2dlcW9fdGhyZXNob2xkID0gMTIKICNnZXFvX2VmZm9y dCA9IDUgICAgICAgICAgICAgICAgICAgICAgICAjIHJhbmdlIDEtMTAKICNnZXFvX3Bvb2xfc2l6 ZSA9IDAgICAgICAgICAgICAgICAgICAgICAjIHNlbGVjdHMgZGVmYXVsdCBiYXNlZCBvbiBlZmZv cnQKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9nb28uaCBiL3NyYy9pbmNsdWRl L29wdGltaXplci9nb28uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MDA4MGRmYTJhYzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvZ29v LmgKQEAgLTAsMCArMSwyMyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZ29vLmgKKyAq ICAgICBwcm90b3R5cGUgZm9yIHRoZSBncmVlZHkgb3BlcmF0b3Igb3JkZXJpbmcgam9pbiBzZWFy Y2gKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNSwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwg UmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklD QVRJT04KKyAqICAgICBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvZ29vLmgKKyAqCisgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqLworI2lmbmRlZiBHT09fSAorI2RlZmluZSBHT09fSAorCisjaW5jbHVkZSAi bm9kZXMvcGF0aG5vZGVzLmgiCisjaW5jbHVkZSAibm9kZXMvcGdfbGlzdC5oIgorCitleHRlcm4g UmVsT3B0SW5mbyAqZ29vX2pvaW5fc2VhcmNoKFBsYW5uZXJJbmZvICpyb290LCBpbnQgbGV2ZWxz X25lZWRlZCwKKwkJCQkJCQkJICAgTGlzdCAqaW5pdGlhbF9yZWxzKTsKKworI2VuZGlmCQkJCQkJ CS8qIEdPT19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCBi L3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oCmluZGV4IDg3NTFhZDczODFjLi43MzRmYTY4 ODg0ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKKysrIGIvc3Jj L2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKQEAgLTE2LDExICsxNiwxMSBAQAogCiAjaW5jbHVk ZSAibm9kZXMvcGF0aG5vZGVzLmgiCiAKLQogLyoKICAqIGFsbHBhdGhzLmMKICAqLwogZXh0ZXJu IFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX2dlcW87CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBl bmFibGVfZ29vX2pvaW5fc2VhcmNoOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX2Vh Z2VyX2FnZ3JlZ2F0ZTsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgZ2Vxb190aHJlc2hvbGQ7CiBl eHRlcm4gUEdETExJTVBPUlQgZG91YmxlIG1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ29vLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvZ29vLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uM2E5MzVlNjI2ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2dvby5vdXQKQEAgLTAsMCArMSw3MDAgQEAKKy0tCistLSBHT08gKEdyZWVkeSBPcGVyYXRv ciBPcmRlcmluZykgSm9pbiBTZWFyY2ggVGVzdHMKKy0tCistLSBUaGlzIHRlc3Qgc3VpdGUgdmFs aWRhdGVzIHRoZSBHT08gam9pbiBvcmRlcmluZyBhbGdvcml0aG0gYW5kIHZlcmlmaWVzCistLSBj b3JyZWN0IGJlaGF2aW9yIGZvciB2YXJpb3VzIHF1ZXJ5IHBhdHRlcm5zLgorLS0KKy0tIENyZWF0 ZSB0ZXN0IHRhYmxlcyB3aXRoIHZhcmlvdXMgc2l6ZXMgYW5kIGpvaW4gcGF0dGVybnMKK0NSRUFU RSBURU1QIFRBQkxFIHQxIChhIGludCwgYiBpbnQpOworQ1JFQVRFIFRFTVAgVEFCTEUgdDIgKGEg aW50LCBjIGludCk7CitDUkVBVEUgVEVNUCBUQUJMRSB0MyAoYiBpbnQsIGQgaW50KTsKK0NSRUFU RSBURU1QIFRBQkxFIHQ0IChjIGludCwgZSBpbnQpOworQ1JFQVRFIFRFTVAgVEFCTEUgdDUgKGQg aW50LCBmIGludCk7CitDUkVBVEUgVEVNUCBUQUJMRSB0NiAoZSBpbnQsIGcgaW50KTsKK0NSRUFU RSBURU1QIFRBQkxFIHQ3IChmIGludCwgaCBpbnQpOworQ1JFQVRFIFRFTVAgVEFCTEUgdDggKGcg aW50LCBpIGludCk7CitDUkVBVEUgVEVNUCBUQUJMRSB0OSAoaCBpbnQsIGogaW50KTsKK0NSRUFU RSBURU1QIFRBQkxFIHQxMCAoaSBpbnQsIGsgaW50KTsKK0NSRUFURSBURU1QIFRBQkxFIHQxMSAo aiBpbnQsIGwgaW50KTsKK0NSRUFURSBURU1QIFRBQkxFIHQxMiAoayBpbnQsIG0gaW50KTsKK0NS RUFURSBURU1QIFRBQkxFIHQxMyAobCBpbnQsIG4gaW50KTsKK0NSRUFURSBURU1QIFRBQkxFIHQx NCAobSBpbnQsIG8gaW50KTsKK0NSRUFURSBURU1QIFRBQkxFIHQxNSAobiBpbnQsIHAgaW50KTsK K0NSRUFURSBURU1QIFRBQkxFIHQxNiAobyBpbnQsIHEgaW50KTsKK0NSRUFURSBURU1QIFRBQkxF IHQxNyAocCBpbnQsIHIgaW50KTsKK0NSRUFURSBURU1QIFRBQkxFIHQxOCAocSBpbnQsIHMgaW50 KTsKKy0tIFBvcHVsYXRlIHdpdGggc21hbGwgYW1vdW50IG9mIGRhdGEKK0lOU0VSVCBJTlRPIHQx IFNFTEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGk7CitJTlNFUlQgSU5UTyB0 MiBTRUxFQ1QgaSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOworSU5TRVJUIElOVE8g dDMgU0VMRUNUIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgaTsKK0lOU0VSVCBJTlRP IHQ0IFNFTEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGk7CitJTlNFUlQgSU5U TyB0NSBTRUxFQ1QgaSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOworSU5TRVJUIElO VE8gdDYgU0VMRUNUIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgaTsKK0lOU0VSVCBJ TlRPIHQ3IFNFTEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGk7CitJTlNFUlQg SU5UTyB0OCBTRUxFQ1QgaSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOworSU5TRVJU IElOVE8gdDkgU0VMRUNUIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgaTsKK0lOU0VS VCBJTlRPIHQxMCBTRUxFQ1QgaSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOworSU5T RVJUIElOVE8gdDExIFNFTEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGk7CitJ TlNFUlQgSU5UTyB0MTIgU0VMRUNUIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgaTsK K0lOU0VSVCBJTlRPIHQxMyBTRUxFQ1QgaSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBp OworSU5TRVJUIElOVE8gdDE0IFNFTEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAp IGk7CitJTlNFUlQgSU5UTyB0MTUgU0VMRUNUIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwx MCkgaTsKK0lOU0VSVCBJTlRPIHQxNiBTRUxFQ1QgaSwgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LDEwKSBpOworSU5TRVJUIElOVE8gdDE3IFNFTEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsMTApIGk7CitJTlNFUlQgSU5UTyB0MTggU0VMRUNUIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwxMCkgaTsKK0FOQUxZWkU7CistLQorLS0gQmFzaWMgMy13YXkgam9pbiAoc2FuaXR5IGNo ZWNrKQorLS0KK1NFVCBlbmFibGVfZ29vX2pvaW5fc2VhcmNoID0gb247CitTRVQgZ2Vxb190aHJl c2hvbGQgPSAyOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopCitGUk9NIChW QUxVRVMgKDEpLCgyKSkgQVMgYSh4KQorSk9JTiAoVkFMVUVTICgxKSwoMikpIEFTIGIoeCkgVVNJ TkcgKHgpCitKT0lOIChWQUxVRVMgKDEpLCgzKSkgQVMgYyh4KSBVU0lORyAoeCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICBIYXNoIENvbmQ6ICgiKlZBTFVFUyoiLmNvbHVtbjEgPSAiKlZBTFVFUypfMiIuY29sdW1u MSkKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKCIq VkFMVUVTKiIuY29sdW1uMSA9ICIqVkFMVUVTKl8xIi5jb2x1bW4xKQorICAgICAgICAgICAgICAg LT4gIFZhbHVlcyBTY2FuIG9uICIqVkFMVUVTKiIKKyAgICAgICAgICAgICAgIC0+ICBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAtPiAgVmFsdWVzIFNjYW4gb24gIipWQUxVRVMqXzEiCisgICAg ICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgLT4gIFZhbHVlcyBTY2FuIG9uICIqVkFMVUVT Kl8yIgorKDEwIHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKQorRlJPTSAoVkFMVUVTICgxKSwoMikp IEFTIGEoeCkKK0pPSU4gKFZBTFVFUyAoMSksKDIpKSBBUyBiKHgpIFVTSU5HICh4KQorSk9JTiAo VkFMVUVTICgxKSwoMykpIEFTIGMoeCkgVVNJTkcgKHgpOworIGNvdW50IAorLS0tLS0tLQorICAg ICAxCisoMSByb3cpCisKKy0tCistLSBEaXNjb25uZWN0ZWQgZ3JhcGggKENhcnRlc2lhbiBwcm9k dWN0cyByZXF1aXJlZCkKKy0tCistLSBUaGlzIHRlc3RzIEdPTydzIGFiaWxpdHkgdG8gaGFuZGxl IHF1ZXJpZXMgd2hlcmUgc29tZSByZWxhdGlvbnMKKy0tIGhhdmUgbm8gam9pbiBjbGF1c2VzIGNv bm5lY3RpbmcgdGhlbS4gR09PIHNob3VsZCBhbGxvdyBDYXJ0ZXNpYW4KKy0tIHByb2R1Y3RzIHdo ZW4gbm8gY2xhdXNlLWNvbm5lY3RlZCBqb2lucyBhcmUgYXZhaWxhYmxlLgorLS0KK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKQorRlJPTSB0MSwgdDIsIHQ1CitXSEVSRSB0MS5h ID0gMSBBTkQgdDIuYyA9IDIgQU5EIHQ1LmYgPSAzOworICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFn Z3JlZ2F0ZQorICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDUK KyAgICAgICAgICAgICAgIEZpbHRlcjogKGYgPSAzKQorICAgICAgICAgLT4gIE5lc3RlZCBMb29w CisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDEKKyAgICAgICAgICAgICAgICAgICAg IEZpbHRlcjogKGEgPSAxKQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHQyCisgICAg ICAgICAgICAgICAgICAgICBGaWx0ZXI6IChjID0gMikKKyg5IHJvd3MpCisKK1NFTEVDVCBjb3Vu dCgqKQorRlJPTSB0MSwgdDIsIHQ1CitXSEVSRSB0MS5hID0gMSBBTkQgdDIuYyA9IDIgQU5EIHQ1 LmYgPSAzOworIGNvdW50IAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisKKy0tCistLSBTdGFy IHNjaGVtYSAoZmFjdCB0YWJsZSB3aXRoIG11bHRpcGxlIGRpbWVuc2lvbiB0YWJsZXMpCistLQor LS0gVGVzdCBHT08gd2l0aCBhIHR5cGljYWwgc3RhciBzY2hlbWEgam9pbiBwYXR0ZXJuLgorLS0K K0NSRUFURSBURU1QIFRBQkxFIGZhY3QgKGlkIGludCwgZGltMV9pZCBpbnQsIGRpbTJfaWQgaW50 LCBkaW0zX2lkIGludCwgZGltNF9pZCBpbnQsIHZhbHVlIGludCk7CitDUkVBVEUgVEVNUCBUQUJM RSBkaW0xIChpZCBpbnQsIG5hbWUgdGV4dCk7CitDUkVBVEUgVEVNUCBUQUJMRSBkaW0yIChpZCBp bnQsIG5hbWUgdGV4dCk7CitDUkVBVEUgVEVNUCBUQUJMRSBkaW0zIChpZCBpbnQsIG5hbWUgdGV4 dCk7CitDUkVBVEUgVEVNUCBUQUJMRSBkaW00IChpZCBpbnQsIG5hbWUgdGV4dCk7CitJTlNFUlQg SU5UTyBmYWN0IFNFTEVDVCBpLCBpLCBpLCBpLCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs MTAwKSBpOworSU5TRVJUIElOVE8gZGltMSBTRUxFQ1QgaSwgJ2RpbTFfJ3x8aSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLDEwKSBpOworSU5TRVJUIElOVE8gZGltMiBTRUxFQ1QgaSwgJ2RpbTJfJ3x8 aSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOworSU5TRVJUIElOVE8gZGltMyBTRUxFQ1Qg aSwgJ2RpbTNfJ3x8aSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOworSU5TRVJUIElOVE8g ZGltNCBTRUxFQ1QgaSwgJ2RpbTRfJ3x8aSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOwor QU5BTFlaRTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKQorRlJPTSBmYWN0 CitKT0lOIGRpbTEgT04gZmFjdC5kaW0xX2lkID0gZGltMS5pZAorSk9JTiBkaW0yIE9OIGZhY3Qu ZGltMl9pZCA9IGRpbTIuaWQKK0pPSU4gZGltMyBPTiBmYWN0LmRpbTNfaWQgPSBkaW0zLmlkCitK T0lOIGRpbTQgT04gZmFjdC5kaW00X2lkID0gZGltNC5pZAorV0hFUkUgZGltMS5pZCA8IDU7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIE5lc3RlZCBMb29w CisgICAgICAgICBKb2luIEZpbHRlcjogKGZhY3QuZGltNF9pZCA9IGRpbTQuaWQpCisgICAgICAg ICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6IChkaW0zLmlkID0gZmFj dC5kaW0zX2lkKQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGRpbTMKKyAgICAgICAg ICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6IChmYWN0LmRpbTFfaWQgPSBkaW0xLmlk KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoZmFjdC5kaW0yX2lkID0gZGltMi5pZCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmYWN0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGRpbTIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gZGltMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRmlsdGVyOiAoaWQgPCA1KQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGRpbTQKKygx OCByb3dzKQorCistLQorLS0gTG9uZyBqb2luIGNoYWluCistLQorLS0gVGVzdHMgR09PIHdpdGgg YSBsYXJnZSBqb2luIGludm9sdmluZyAxNSByZWxhdGlvbnMuCistLQorU0VUIGdlcW9fdGhyZXNo b2xkID0gODsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKQorRlJPTSB0MQor Sk9JTiB0MiBPTiB0MS5hID0gdDIuYQorSk9JTiB0MyBPTiB0MS5iID0gdDMuYgorSk9JTiB0NCBP TiB0Mi5jID0gdDQuYworSk9JTiB0NSBPTiB0My5kID0gdDUuZAorSk9JTiB0NiBPTiB0NC5lID0g dDYuZQorSk9JTiB0NyBPTiB0NS5mID0gdDcuZgorSk9JTiB0OCBPTiB0Ni5nID0gdDguZworSk9J TiB0OSBPTiB0Ny5oID0gdDkuaAorSk9JTiB0MTAgT04gdDguaSA9IHQxMC5pCitKT0lOIHQxMSBP TiB0OS5qID0gdDExLmoKK0pPSU4gdDEyIE9OIHQxMC5rID0gdDEyLmsKK0pPSU4gdDEzIE9OIHQx MS5sID0gdDEzLmwKK0pPSU4gdDE0IE9OIHQxMi5tID0gdDE0Lm0KK0pPSU4gdDE1IE9OIHQxMy5u ID0gdDE1Lm47CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgSGFzaCBKb2lu CisgICAgICAgICBIYXNoIENvbmQ6ICh0Ny5oID0gdDkuaCkKKyAgICAgICAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQ4LmkgPSB0MTAuaSkKKyAgICAgICAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyLmMg PSB0NC5jKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDMuYiA9IHQxLmIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBIYXNoIENvbmQ6ICh0NS5mID0gdDcuZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQzLmQgPSB0NS5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHQzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHQ1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHQ3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYSA9IHQyLmEpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDEKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDIKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6 ICh0Ni5nID0gdDguZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNo IEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQ0LmUgPSB0Ni5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHQ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHQ2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHQ4CisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhh c2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEyLm0gPSB0 MTQubSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxMC5rID0gdDEyLmspCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDEwCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHQxMgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiB0MTQKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MTEubCA9IHQxMy5sKQor ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAodDkuaiA9IHQxMS5qKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHQ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHQxMQor ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHQxMy5uID0gdDE1Lm4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gdDEzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHQxNQorKDU4IHJvd3MpCisKKy0tIEV4ZWN1dGUgdG8gdmVyaWZ5IGNvcnJlY3RuZXNzCitTRUxF Q1QgY291bnQoKikKK0ZST00gdDEKK0pPSU4gdDIgT04gdDEuYSA9IHQyLmEKK0pPSU4gdDMgT04g dDEuYiA9IHQzLmIKK0pPSU4gdDQgT04gdDIuYyA9IHQ0LmMKK0pPSU4gdDUgT04gdDMuZCA9IHQ1 LmQKK0pPSU4gdDYgT04gdDQuZSA9IHQ2LmUKK0pPSU4gdDcgT04gdDUuZiA9IHQ3LmYKK0pPSU4g dDggT04gdDYuZyA9IHQ4LmcKK0pPSU4gdDkgT04gdDcuaCA9IHQ5LmgKK0pPSU4gdDEwIE9OIHQ4 LmkgPSB0MTAuaQorSk9JTiB0MTEgT04gdDkuaiA9IHQxMS5qCitKT0lOIHQxMiBPTiB0MTAuayA9 IHQxMi5rCitKT0lOIHQxMyBPTiB0MTEubCA9IHQxMy5sCitKT0lOIHQxNCBPTiB0MTIubSA9IHQx NC5tCitKT0lOIHQxNSBPTiB0MTMubiA9IHQxNS5uOworIGNvdW50IAorLS0tLS0tLQorICAgIDEw CisoMSByb3cpCisKKy0tCistLSBCdXNoeSB0cmVlIHN1cHBvcnQKKy0tCistLSBWZXJpZnkgdGhh dCBHT08gY2FuIHByb2R1Y2UgYnVzaHkgam9pbiB0cmVlcywgbm90IGp1c3QgbGVmdC1kZWVwIG9y IHJpZ2h0LWRlZXAuCistLSBXaXRoIGFwcHJvcHJpYXRlIGNvc3QgbW9kZWwsIEdPTyBzaG91bGQg am9pbiAodDEsdDIpIGFuZCAodDMsdDQpIGZpcnN0LAorLS0gdGhlbiBqb2luIHRob3NlIHJlc3Vs dHMgKGJ1c2h5IHRyZWUpLgorLS0KK1NFVCBnZXFvX3RocmVzaG9sZCA9IDQ7CitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikKK0ZST00gdDEsIHQyLCB0MywgdDQKK1dIRVJFIHQx LmEgPSB0Mi5hCisgIEFORCB0My5iID0gdDQuYworICBBTkQgdDEuYSA9IHQzLmI7CisgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgSGFzaCBK b2luCisgICAgICAgICBIYXNoIENvbmQ6ICh0MS5hID0gdDMuYikKKyAgICAgICAgIC0+ICBIYXNo IEpvaW4KKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmEgPSB0Mi5hKQorICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHQxCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHQyCisgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAodDMuYiA9IHQ0LmMpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDMK KyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gdDQKKygxNCByb3dzKQorCistLQorLS0gQ29tcGFyZSBHT08gdnMg c3RhbmRhcmQgam9pbiBzZWFyY2gKKy0tCistLSBSdW4gdGhlIHNhbWUgcXVlcnkgd2l0aCBHT08g YW5kIHN0YW5kYXJkIGpvaW4gc2VhcmNoIHRvIHZlcmlmeSBib3RoCistLSBwcm9kdWNlIHZhbGlk IHBsYW5zLiBSZXN1bHRzIHNob3VsZCBiZSBpZGVudGljYWwgZXZlbiBpZiBwbGFucyBkaWZmZXIu CistLQorU0VUIGVuYWJsZV9nb29fam9pbl9zZWFyY2ggPSBvbjsKK1BSRVBBUkUgZ29vX3BsYW4g QVMKK1NFTEVDVCBjb3VudCgqKQorRlJPTSB0MSBKT0lOIHQyIE9OIHQxLmEgPSB0Mi5hCitKT0lO IHQzIE9OIHQxLmIgPSB0My5iCitKT0lOIHQ0IE9OIHQyLmMgPSB0NC5jCitKT0lOIHQ1IE9OIHQz LmQgPSB0NS5kCitKT0lOIHQ2IE9OIHQ0LmUgPSB0Ni5lOworRVhFQ1VURSBnb29fcGxhbjsKKyBj b3VudCAKKy0tLS0tLS0KKyAgICAxMAorKDEgcm93KQorCitTRVQgZW5hYmxlX2dvb19qb2luX3Nl YXJjaCA9IG9mZjsKK1NFVCBnZXFvX3RocmVzaG9sZCA9IGRlZmF1bHQ7CitQUkVQQVJFIHN0YW5k YXJkX3BsYW4gQVMKK1NFTEVDVCBjb3VudCgqKQorRlJPTSB0MSBKT0lOIHQyIE9OIHQxLmEgPSB0 Mi5hCitKT0lOIHQzIE9OIHQxLmIgPSB0My5iCitKT0lOIHQ0IE9OIHQyLmMgPSB0NC5jCitKT0lO IHQ1IE9OIHQzLmQgPSB0NS5kCitKT0lOIHQ2IE9OIHQ0LmUgPSB0Ni5lOworRVhFQ1VURSBzdGFu ZGFyZF9wbGFuOworIGNvdW50IAorLS0tLS0tLQorICAgIDEwCisoMSByb3cpCisKKy0tIFJlc3Vs dHMgc2hvdWxkIG1hdGNoCitFWEVDVVRFIGdvb19wbGFuOworIGNvdW50IAorLS0tLS0tLQorICAg IDEwCisoMSByb3cpCisKK0VYRUNVVEUgc3RhbmRhcmRfcGxhbjsKKyBjb3VudCAKKy0tLS0tLS0K KyAgICAxMAorKDEgcm93KQorCistLQorLS0gTGFyZ2Ugam9pbiAoMTggcmVsYXRpb25zKQorLS0K Ky0tIFRlc3QgR09PIHdpdGggYSBsYXJnZSBudW1iZXIgb2YgcmVsYXRpb25zLgorLS0KK1NFVCBl bmFibGVfZ29vX2pvaW5fc2VhcmNoID0gb247CitTRVQgZ2Vxb190aHJlc2hvbGQgPSAxMDsKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKQorRlJPTSB0MQorSk9JTiB0MiBPTiB0 MS5hID0gdDIuYQorSk9JTiB0MyBPTiB0MS5iID0gdDMuYgorSk9JTiB0NCBPTiB0Mi5jID0gdDQu YworSk9JTiB0NSBPTiB0My5kID0gdDUuZAorSk9JTiB0NiBPTiB0NC5lID0gdDYuZQorSk9JTiB0 NyBPTiB0NS5mID0gdDcuZgorSk9JTiB0OCBPTiB0Ni5nID0gdDguZworSk9JTiB0OSBPTiB0Ny5o ID0gdDkuaAorSk9JTiB0MTAgT04gdDguaSA9IHQxMC5pCitKT0lOIHQxMSBPTiB0OS5qID0gdDEx LmoKK0pPSU4gdDEyIE9OIHQxMC5rID0gdDEyLmsKK0pPSU4gdDEzIE9OIHQxMS5sID0gdDEzLmwK K0pPSU4gdDE0IE9OIHQxMi5tID0gdDE0Lm0KK0pPSU4gdDE1IE9OIHQxMy5uID0gdDE1Lm4KK0pP SU4gdDE2IE9OIHQxNC5vID0gdDE2Lm8KK0pPSU4gdDE3IE9OIHQxNS5wID0gdDE3LnAKK0pPSU4g dDE4IE9OIHQxNi5xID0gdDE4LnE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQWdncmVnYXRlCisgICAtPiAgSGFzaCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6ICh0MTYu cSA9IHQxOC5xKQorICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgSGFzaCBD b25kOiAodDE1LnAgPSB0MTcucCkKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAg ICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxNC5vID0gdDE2Lm8pCisgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENv bmQ6ICh0MTMubiA9IHQxNS5uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEyLm0g PSB0MTQubSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxMS5s ID0gdDEzLmwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNo IENvbmQ6ICh0MTAuayA9IHQxMi5rKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDkuaiA9IHQxMS5qKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SGFzaCBDb25kOiAodDguaSA9IHQxMC5pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAodDcuaCA9IHQ5LmgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENv bmQ6ICh0Ni5nID0gdDguZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHQ1LmYgPSB0Ny5mKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhh c2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDQuZSA9IHQ2LmUp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0My5kID0gdDUuZCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHQyLmMgPSB0NC5jKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9IHQzLmIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5hID0gdDIuYSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiB0MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0MworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiB0NQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0NgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0NworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0OAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0OQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiB0MTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDExCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHQxMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biB0MTMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDE0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHQxNQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhh c2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0MTYKKyAgICAg ICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g dDE3CisgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHQx OAorKDcwIHJvd3MpCisKKy0tCistLSBNaXhlZCBjb25uZWN0ZWQgYW5kIGRpc2Nvbm5lY3RlZCBj b21wb25lbnRzCistLQorLS0gUXVlcnkgd2l0aCB0d28gY29ubmVjdGVkIGNvbXBvbmVudHMgdGhh dCBuZWVkIGEgQ2FydGVzaWFuIHByb2R1Y3QgYmV0d2VlbiB0aGVtLgorLS0KK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKQorRlJPTSB0MSBKT0lOIHQyIE9OIHQxLmEgPSB0Mi5h LAorICAgICB0NSBKT0lOIHQ2IE9OIHQ1LmYgPSB0Ni5lCitXSEVSRSB0MS5hIDwgNSBBTkQgdDUu ZCA8IDM7CisgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdn cmVnYXRlCisgICAtPiAgSGFzaCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6ICh0Mi5hID0gdDEu YSkKKyAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDYuZSA9IHQ1LmYpCisgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDYKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKGQgPCAzKQorICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHQyCisgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHQxCisgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6IChhIDwg NSkKKygxNCByb3dzKQorCistLQorLS0gT3V0ZXIgam9pbnMKKy0tCistLSBWZXJpZnkgR09PIGhh bmRsZXMgb3V0ZXIgam9pbnMgY29ycmVjdGx5IChyZXNwZWN0cyBqb2luIG9yZGVyIHJlc3RyaWN0 aW9ucykKKy0tCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikKK0ZST00gdDEK K0xFRlQgSk9JTiB0MiBPTiB0MS5hID0gdDIuYQorTEVGVCBKT0lOIHQzIE9OIHQyLmEgPSB0My5i CitMRUZUIEpPSU4gdDQgT04gdDMuZCA9IHQ0LmM7CisgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgSGFzaCBMZWZ0IEpvaW4KKyAgICAgICAg IEhhc2ggQ29uZDogKHQzLmQgPSB0NC5jKQorICAgICAgICAgLT4gIEhhc2ggTGVmdCBKb2luCisg ICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Mi5hID0gdDMuYikKKyAgICAgICAgICAgICAgIC0+ ICBIYXNoIExlZnQgSm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYSA9 IHQyLmEpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDEKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gdDIKKyAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gdDMKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gdDQKKygxNCByb3dzKQorCistLQorLS0gQ29tcGxldGUgQ2FydGVzaWFu IHByb2R1Y3RzIChkaXNjb25uZWN0ZWQgZ3JhcGhzKQorLS0KKy0tIFRlc3QgR09PJ3MgYWJpbGl0 eSB0byBoYW5kbGUgcXVlcmllcyB3aXRoIG5vIGpvaW4gY2xhdXNlcyBhdCBhbGwuCistLQorU0VU IGVuYWJsZV9nb29fam9pbl9zZWFyY2ggPSBvbjsKK1NFVCBnZXFvX3RocmVzaG9sZCA9IDI7CitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikKK0ZST00gdDEsIHQyOworICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gdDEKKyAgICAgICAgIC0+ICBNYXRlcmlhbGl6ZQorICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHQyCisoNSByb3dzKQorCitTRUxFQ1QgY291bnQoKikKK0ZST00gdDEsIHQy OworIGNvdW50IAorLS0tLS0tLQorICAgMTAwCisoMSByb3cpCisKKy0tCistLSBKb2luIG9yZGVy IHJlc3RyaWN0aW9ucyB3aXRoIEZVTEwgT1VURVIgSk9JTgorLS0KKy0tIEZVTEwgT1VURVIgSk9J TiBjcmVhdGVzIHN0cm9uZyBvcmRlcmluZyBjb25zdHJhaW50cyB0aGF0IEdPTyBtdXN0IHJlc3Bl Y3QKKy0tCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikKK0ZST00gdDEKK0ZV TEwgT1VURVIgSk9JTiB0MiBPTiB0MS5hID0gdDIuYQorRlVMTCBPVVRFUiBKT0lOIHQzIE9OIHQy LmEgPSB0My5iOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4g IEhhc2ggRnVsbCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6ICh0Mi5hID0gdDMuYikKKyAgICAg ICAgIC0+ICBIYXNoIEZ1bGwgSm9pbgorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYSA9 IHQyLmEpCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDEKKyAgICAgICAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDIKKyAgICAg ICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDMKKygxMCByb3dz KQorCistLQorLS0gU2VsZi1qb2luIGhhbmRsaW5nCistLQorLS0gVGVzdCBHT08gd2l0aCB0aGUg c2FtZSB0YWJsZSBhcHBlYXJpbmcgbXVsdGlwbGUgdGltZXMuIEdPTyBtdXN0IGNvcnJlY3RseQor LS0gaGFuZGxlIHNlbGYtam9pbnMgdGhhdCB3ZXJlIG5vdCByZW1vdmVkIGJ5IFNlbGYtSm9pbiBF bGltaW5hdGlvbi4KKy0tCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikKK0ZS T00gdDEgYQorSk9JTiB0MSBiIE9OIGEuYSA9IGIuYQorSk9JTiB0MiBjIE9OIGIuYiA9IGMuYzsK KyAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgSGFzaCBK b2luCisgICAgICAgICBIYXNoIENvbmQ6IChiLmIgPSBjLmMpCisgICAgICAgICAtPiAgSGFzaCBK b2luCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6IChhLmEgPSBiLmEpCisgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gdDEgYQorICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0MSBiCisgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHQyIGMKKygxMCByb3dzKQorCistLQorLS0gQ29t cGxleCBidXNoeSB0cmVlIHBhdHRlcm4KKy0tCistLSBDcmVhdGUgYSBxdWVyeSB0aGF0IG5hdHVy YWxseSBsZWFkcyB0byBidXNoeSB0cmVlOiBtdWx0aXBsZSBpbmRlcGVuZGVudAorLS0gam9pbiBj aGFpbnMgdGhhdCBuZWVkIHRvIGJlIGNvbWJpbmVkCistLQorQ1JFQVRFIFRFTVAgVEFCTEUgY2hh aW4xYSAoaWQgaW50LCB2YWwgaW50KTsKK0NSRUFURSBURU1QIFRBQkxFIGNoYWluMWIgKGlkIGlu dCwgdmFsIGludCk7CitDUkVBVEUgVEVNUCBUQUJMRSBjaGFpbjFjIChpZCBpbnQsIHZhbCBpbnQp OworQ1JFQVRFIFRFTVAgVEFCTEUgY2hhaW4yYSAoaWQgaW50LCB2YWwgaW50KTsKK0NSRUFURSBU RU1QIFRBQkxFIGNoYWluMmIgKGlkIGludCwgdmFsIGludCk7CitDUkVBVEUgVEVNUCBUQUJMRSBj aGFpbjJjIChpZCBpbnQsIHZhbCBpbnQpOworSU5TRVJUIElOVE8gY2hhaW4xYSBTRUxFQ1QgaSwg aSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCkgaTsKK0lOU0VSVCBJTlRPIGNoYWluMWIgU0VM RUNUIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApIGk7CitJTlNFUlQgSU5UTyBjaGFp bjFjIFNFTEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKSBpOworSU5TRVJUIElO VE8gY2hhaW4yYSBTRUxFQ1QgaSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCkgaTsKK0lO U0VSVCBJTlRPIGNoYWluMmIgU0VMRUNUIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAp IGk7CitJTlNFUlQgSU5UTyBjaGFpbjJjIFNFTEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsMTAwKSBpOworQU5BTFlaRTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgq KQorRlJPTSBjaGFpbjFhCitKT0lOIGNoYWluMWIgT04gY2hhaW4xYS5pZCA9IGNoYWluMWIuaWQK K0pPSU4gY2hhaW4xYyBPTiBjaGFpbjFiLnZhbCA9IGNoYWluMWMuaWQKK0pPSU4gY2hhaW4yYSBP TiBjaGFpbjFhLnZhbCA9IGNoYWluMmEuaWQgIC0tIENyb3NzLWNoYWluIGpvaW4KK0pPSU4gY2hh aW4yYiBPTiBjaGFpbjJhLnZhbCA9IGNoYWluMmIuaWQKK0pPSU4gY2hhaW4yYyBPTiBjaGFpbjJi LnZhbCA9IGNoYWluMmMuaWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ ICBIYXNoIEpvaW4KKyAgICAgICAgIEhhc2ggQ29uZDogKGNoYWluMWEudmFsID0gY2hhaW4yYS5p ZCkKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKGNo YWluMWIudmFsID0gY2hhaW4xYy5pZCkKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAg ICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKGNoYWluMWEuaWQgPSBjaGFpbjFiLmlkKQor ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGNoYWluMWEKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gY2hhaW4xYgorICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBjaGFpbjFjCisgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoY2hh aW4yYi52YWwgPSBjaGFpbjJjLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoY2hhaW4yYS52YWwgPSBj aGFpbjJiLmlkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGNo YWluMmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gY2hhaW4yYgorICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBjaGFpbjJjCisoMjIgcm93cykKKworLS0KKy0tIEVhZ2VyIGFnZ3JlZ2F0aW9uIHdpdGgg R09PIGpvaW4gc2VhcmNoCistLSBFbnN1cmUgZ3JvdXBlZF9yZWwgaGFuZGxpbmcgd2hlbiBlYWdl ciBhZ2dyZWdhdGlvbiBpcyBlbmFibGVkLgorLS0KK1NFVCBlbmFibGVfZWFnZXJfYWdncmVnYXRl ID0gb247CitTRVQgbWluX2VhZ2VyX2FnZ19ncm91cF9zaXplID0gMDsKK0NSRUFURSBURU1QIFRB QkxFIGNlbnRlcl90YmwgKGlkIGludCBQUklNQVJZIEtFWSk7CitDUkVBVEUgVEVNUCBUQUJMRSBh cm0xX3RibCAoY2VudGVyX2lkIGludCwgcGF5bG9hZCBpbnQpOworQ1JFQVRFIFRFTVAgVEFCTEUg YXJtMl90YmwgKGNlbnRlcl9pZCBpbnQsIHBheWxvYWQgaW50KTsKK0lOU0VSVCBJTlRPIGNlbnRl cl90YmwgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIGk7CitJTlNFUlQgSU5U TyBhcm0xX3RibCBTRUxFQ1QgaSUxMCArIDEsIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAw MCkgaTsKK0lOU0VSVCBJTlRPIGFybTJfdGJsIFNFTEVDVCBpJTEwICsgMSwgaSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAxMDAwKSBpOworQU5BTFlaRSBjZW50ZXJfdGJsOworQU5BTFlaRSBhcm0x X3RibDsKK0FOQUxZWkUgYXJtMl90Ymw7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitT RUxFQ1QgYy5pZCwgY291bnQoKikKK0ZST00gY2VudGVyX3RibCBjCitKT0lOIGFybTFfdGJsIGEx IE9OIGMuaWQgPSBhMS5jZW50ZXJfaWQKK0pPSU4gYXJtMl90YmwgYTIgT04gYy5pZCA9IGEyLmNl bnRlcl9pZAorR1JPVVAgQlkgYy5pZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBIYXNoQWdncmVnYXRlCisgICBPdXRwdXQ6 IGMuaWQsIGNvdW50KCopCisgICBHcm91cCBLZXk6IGMuaWQKKyAgIC0+ICBIYXNoIEpvaW4KKyAg ICAgICAgIE91dHB1dDogYy5pZAorICAgICAgICAgSGFzaCBDb25kOiAoYy5pZCA9IGEyLmNlbnRl cl9pZCkKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogYy5p ZCwgYTEuY2VudGVyX2lkCisgICAgICAgICAgICAgICBJbm5lciBVbmlxdWU6IHRydWUKKyAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKGExLmNlbnRlcl9pZCA9IGMuaWQpCisgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcGdfdGVtcC5hcm0xX3RibCBhMQorICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiBhMS5jZW50ZXJfaWQsIGExLnBheWxvYWQKKyAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IGMuaWQKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwZ190ZW1wLmNlbnRlcl90YmwgYworICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiBjLmlkCisgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAg ICAgT3V0cHV0OiBhMi5jZW50ZXJfaWQKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw Z190ZW1wLmFybTJfdGJsIGEyCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IGEyLmNlbnRl cl9pZAorKDIwIHJvd3MpCisKK1NFTEVDVCBjLmlkLCBjb3VudCgqKQorRlJPTSBjZW50ZXJfdGJs IGMKK0pPSU4gYXJtMV90YmwgYTEgT04gYy5pZCA9IGExLmNlbnRlcl9pZAorSk9JTiBhcm0yX3Ri bCBhMiBPTiBjLmlkID0gYTIuY2VudGVyX2lkCitHUk9VUCBCWSBjLmlkOworIGlkIHwgY291bnQg CistLS0tKy0tLS0tLS0KKyAgOCB8IDEwMDAwCisgMTAgfCAxMDAwMAorICA5IHwgMTAwMDAKKyAg NyB8IDEwMDAwCisgIDEgfCAxMDAwMAorICA1IHwgMTAwMDAKKyAgNCB8IDEwMDAwCisgIDIgfCAx MDAwMAorICA2IHwgMTAwMDAKKyAgMyB8IDEwMDAwCisoMTAgcm93cykKKworUkVTRVQgbWluX2Vh Z2VyX2FnZ19ncm91cF9zaXplOworUkVTRVQgZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZTsKKy0tIENs ZWFudXAKK0RFQUxMT0NBVEUgZ29vX3BsYW47CitERUFMTE9DQVRFIHN0YW5kYXJkX3BsYW47CitS RVNFVCBnZXFvX3RocmVzaG9sZDsKK1JFU0VUIGVuYWJsZV9nb29fam9pbl9zZWFyY2g7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CmluZGV4IDNkZDYzZmQ4OGVkLi5hODIzZDE2 ZDc5MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKQEAgLTE1Myw2ICsx NTMsNyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUg bGlrZSAnZW5hYmxlJSc7CiAgZW5hYmxlX2Rpc3RpbmN0X3Jlb3JkZXJpbmcgICAgIHwgb24KICBl bmFibGVfZWFnZXJfYWdncmVnYXRlICAgICAgICAgfCBvbgogIGVuYWJsZV9nYXRoZXJtZXJnZSAg ICAgICAgICAgICB8IG9uCisgZW5hYmxlX2dvb19qb2luX3NlYXJjaCAgICAgICAgIHwgb2ZmCiAg ZW5hYmxlX2dyb3VwX2J5X3Jlb3JkZXJpbmcgICAgIHwgb24KICBlbmFibGVfaGFzaGFnZyAgICAg ICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9oYXNoam9pbiAgICAgICAgICAgICAgICB8IG9uCkBA IC0xNzMsNyArMTc0LDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3 aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9zZXFzY2FuICAgICAgICAgICAgICAg ICB8IG9uCiAgZW5hYmxlX3NvcnQgICAgICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfdGlk c2NhbiAgICAgICAgICAgICAgICAgfCBvbgotKDI1IHJvd3MpCisoMjYgcm93cykKIAogLS0gVGhl cmUgYXJlIGFsd2F5cyB3YWl0IGV2ZW50IGRlc2NyaXB0aW9ucyBmb3IgdmFyaW91cyB0eXBlcy4g IEluamVjdGlvblBvaW50CiAtLSBtYXkgYmUgcHJlc2VudCBvciBhYnNlbnQsIGRlcGVuZGluZyBv biBoaXN0b3J5IHNpbmNlIGxhc3QgcG9zdG1hc3RlciBzdGFydC4KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVs X3NjaGVkdWxlCmluZGV4IDU0OWU5YjJkN2JlLi5mNjBlMzA5MDc5YSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlCkBAIC02OCw2ICs2OCwxMiBAQCB0ZXN0OiBzZWxlY3RfaW50byBzZWxl Y3RfZGlzdGluY3Qgc2VsZWN0X2Rpc3RpbmN0X29uIHNlbGVjdF9pbXBsaWNpdCBzZWxlY3RfaGF2 aQogIyAtLS0tLS0tLS0tCiB0ZXN0OiBicmluIGdpbiBnaXN0IHNwZ2lzdCBwcml2aWxlZ2VzIGlu aXRfcHJpdnMgc2VjdXJpdHlfbGFiZWwgY29sbGF0ZSBtYXR2aWV3IGxvY2sgcmVwbGljYV9pZGVu dGl0eSByb3dzZWN1cml0eSBvYmplY3RfYWRkcmVzcyB0YWJsZXNhbXBsZSBncm91cGluZ3NldHMg ZHJvcF9vcGVyYXRvciBwYXNzd29yZCBpZGVudGl0eSBnZW5lcmF0ZWRfc3RvcmVkIGpvaW5faGFz aAogCisjIC0tLS0tLS0tLS0KKyMgQWRkaXRpb25hbCBKT0lOIE9SREVSIHRlc3RzCisjIFdJUDog bmVlZCB0byBmaW5kIGFuIGFwcHJvcHJpYXRlIGdyb3VwIGZvciB0aGlzIHRlc3QKKyMgLS0tLS0t LS0tLQordGVzdDogZ29vCisKICMgLS0tLS0tLS0tLQogIyBBZGRpdGlvbmFsIEJSSU4gdGVzdHMK ICMgLS0tLS0tLS0tLQpAQCAtOTgsOSArMTA0LDYgQEAgdGVzdDogbWFpbnRhaW5fZXZlcnkKICMg bm8gcmVsYXRpb24gcmVsYXRlZCB0ZXN0cyBjYW4gYmUgcHV0IGluIHRoaXMgZ3JvdXAKIHRlc3Q6 IHB1YmxpY2F0aW9uIHN1YnNjcmlwdGlvbgogCi0jIC0tLS0tLS0tLS0KLSMgQW5vdGhlciBncm91 cCBvZiBwYXJhbGxlbCB0ZXN0cwotIyBzZWxlY3Rfdmlld3MgZGVwZW5kcyBvbiBjcmVhdGVfdmll dwogIyAtLS0tLS0tLS0tCiB0ZXN0OiBzZWxlY3Rfdmlld3MgcG9ydGFsc19wMiBmb3JlaWduX2tl eSBjbHVzdGVyIGRlcGVuZGVuY3kgZ3VjIGJpdG1hcG9wcyBjb21ib2NpZCB0c2VhcmNoIHRzZGlj dHMgZm9yZWlnbl9kYXRhIHdpbmRvdyB4bWxtYXAgZnVuY3Rpb25hbF9kZXBzIGFkdmlzb3J5X2xv Y2sgaW5kaXJlY3RfdG9hc3QgZXF1aXZjbGFzcyBzdGF0c19yZXdyaXRlCiAKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dvby5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nb28u c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hYjA0OGQ4ZTM0ZQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dvby5zcWwKQEAgLTAsMCAr MSwzNjQgQEAKKy0tCistLSBHT08gKEdyZWVkeSBPcGVyYXRvciBPcmRlcmluZykgSm9pbiBTZWFy Y2ggVGVzdHMKKy0tCistLSBUaGlzIHRlc3Qgc3VpdGUgdmFsaWRhdGVzIHRoZSBHT08gam9pbiBv cmRlcmluZyBhbGdvcml0aG0gYW5kIHZlcmlmaWVzCistLSBjb3JyZWN0IGJlaGF2aW9yIGZvciB2 YXJpb3VzIHF1ZXJ5IHBhdHRlcm5zLgorLS0KKworLS0gQ3JlYXRlIHRlc3QgdGFibGVzIHdpdGgg dmFyaW91cyBzaXplcyBhbmQgam9pbiBwYXR0ZXJucworQ1JFQVRFIFRFTVAgVEFCTEUgdDEgKGEg aW50LCBiIGludCk7CitDUkVBVEUgVEVNUCBUQUJMRSB0MiAoYSBpbnQsIGMgaW50KTsKK0NSRUFU RSBURU1QIFRBQkxFIHQzIChiIGludCwgZCBpbnQpOworQ1JFQVRFIFRFTVAgVEFCTEUgdDQgKGMg aW50LCBlIGludCk7CitDUkVBVEUgVEVNUCBUQUJMRSB0NSAoZCBpbnQsIGYgaW50KTsKK0NSRUFU RSBURU1QIFRBQkxFIHQ2IChlIGludCwgZyBpbnQpOworQ1JFQVRFIFRFTVAgVEFCTEUgdDcgKGYg aW50LCBoIGludCk7CitDUkVBVEUgVEVNUCBUQUJMRSB0OCAoZyBpbnQsIGkgaW50KTsKK0NSRUFU RSBURU1QIFRBQkxFIHQ5IChoIGludCwgaiBpbnQpOworQ1JFQVRFIFRFTVAgVEFCTEUgdDEwIChp IGludCwgayBpbnQpOworQ1JFQVRFIFRFTVAgVEFCTEUgdDExIChqIGludCwgbCBpbnQpOworQ1JF QVRFIFRFTVAgVEFCTEUgdDEyIChrIGludCwgbSBpbnQpOworQ1JFQVRFIFRFTVAgVEFCTEUgdDEz IChsIGludCwgbiBpbnQpOworQ1JFQVRFIFRFTVAgVEFCTEUgdDE0IChtIGludCwgbyBpbnQpOwor Q1JFQVRFIFRFTVAgVEFCTEUgdDE1IChuIGludCwgcCBpbnQpOworQ1JFQVRFIFRFTVAgVEFCTEUg dDE2IChvIGludCwgcSBpbnQpOworQ1JFQVRFIFRFTVAgVEFCTEUgdDE3IChwIGludCwgciBpbnQp OworQ1JFQVRFIFRFTVAgVEFCTEUgdDE4IChxIGludCwgcyBpbnQpOworCistLSBQb3B1bGF0ZSB3 aXRoIHNtYWxsIGFtb3VudCBvZiBkYXRhCitJTlNFUlQgSU5UTyB0MSBTRUxFQ1QgaSwgaSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOworSU5TRVJUIElOVE8gdDIgU0VMRUNUIGksIGkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgaTsKK0lOU0VSVCBJTlRPIHQzIFNFTEVDVCBpLCBpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGk7CitJTlNFUlQgSU5UTyB0NCBTRUxFQ1QgaSwgaSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOworSU5TRVJUIElOVE8gdDUgU0VMRUNUIGksIGkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgaTsKK0lOU0VSVCBJTlRPIHQ2IFNFTEVDVCBpLCBp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGk7CitJTlNFUlQgSU5UTyB0NyBTRUxFQ1QgaSwg aSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOworSU5TRVJUIElOVE8gdDggU0VMRUNUIGks IGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgaTsKK0lOU0VSVCBJTlRPIHQ5IFNFTEVDVCBp LCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGk7CitJTlNFUlQgSU5UTyB0MTAgU0VMRUNU IGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgaTsKK0lOU0VSVCBJTlRPIHQxMSBTRUxF Q1QgaSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOworSU5TRVJUIElOVE8gdDEyIFNF TEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGk7CitJTlNFUlQgSU5UTyB0MTMg U0VMRUNUIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgaTsKK0lOU0VSVCBJTlRPIHQx NCBTRUxFQ1QgaSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOworSU5TRVJUIElOVE8g dDE1IFNFTEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGk7CitJTlNFUlQgSU5U TyB0MTYgU0VMRUNUIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgaTsKK0lOU0VSVCBJ TlRPIHQxNyBTRUxFQ1QgaSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOworSU5TRVJU IElOVE8gdDE4IFNFTEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGk7CisKK0FO QUxZWkU7CisKKy0tCistLSBCYXNpYyAzLXdheSBqb2luIChzYW5pdHkgY2hlY2spCistLQorU0VU IGVuYWJsZV9nb29fam9pbl9zZWFyY2ggPSBvbjsKK1NFVCBnZXFvX3RocmVzaG9sZCA9IDI7CisK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKQorRlJPTSAoVkFMVUVTICgxKSwo MikpIEFTIGEoeCkKK0pPSU4gKFZBTFVFUyAoMSksKDIpKSBBUyBiKHgpIFVTSU5HICh4KQorSk9J TiAoVkFMVUVTICgxKSwoMykpIEFTIGMoeCkgVVNJTkcgKHgpOworCitTRUxFQ1QgY291bnQoKikK K0ZST00gKFZBTFVFUyAoMSksKDIpKSBBUyBhKHgpCitKT0lOIChWQUxVRVMgKDEpLCgyKSkgQVMg Yih4KSBVU0lORyAoeCkKK0pPSU4gKFZBTFVFUyAoMSksKDMpKSBBUyBjKHgpIFVTSU5HICh4KTsK KworLS0KKy0tIERpc2Nvbm5lY3RlZCBncmFwaCAoQ2FydGVzaWFuIHByb2R1Y3RzIHJlcXVpcmVk KQorLS0KKy0tIFRoaXMgdGVzdHMgR09PJ3MgYWJpbGl0eSB0byBoYW5kbGUgcXVlcmllcyB3aGVy ZSBzb21lIHJlbGF0aW9ucworLS0gaGF2ZSBubyBqb2luIGNsYXVzZXMgY29ubmVjdGluZyB0aGVt LiBHT08gc2hvdWxkIGFsbG93IENhcnRlc2lhbgorLS0gcHJvZHVjdHMgd2hlbiBubyBjbGF1c2Ut Y29ubmVjdGVkIGpvaW5zIGFyZSBhdmFpbGFibGUuCistLQorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIGNvdW50KCopCitGUk9NIHQxLCB0MiwgdDUKK1dIRVJFIHQxLmEgPSAxIEFORCB0Mi5j ID0gMiBBTkQgdDUuZiA9IDM7CisKK1NFTEVDVCBjb3VudCgqKQorRlJPTSB0MSwgdDIsIHQ1CitX SEVSRSB0MS5hID0gMSBBTkQgdDIuYyA9IDIgQU5EIHQ1LmYgPSAzOworCistLQorLS0gU3RhciBz Y2hlbWEgKGZhY3QgdGFibGUgd2l0aCBtdWx0aXBsZSBkaW1lbnNpb24gdGFibGVzKQorLS0KKy0t IFRlc3QgR09PIHdpdGggYSB0eXBpY2FsIHN0YXIgc2NoZW1hIGpvaW4gcGF0dGVybi4KKy0tCitD UkVBVEUgVEVNUCBUQUJMRSBmYWN0IChpZCBpbnQsIGRpbTFfaWQgaW50LCBkaW0yX2lkIGludCwg ZGltM19pZCBpbnQsIGRpbTRfaWQgaW50LCB2YWx1ZSBpbnQpOworQ1JFQVRFIFRFTVAgVEFCTEUg ZGltMSAoaWQgaW50LCBuYW1lIHRleHQpOworQ1JFQVRFIFRFTVAgVEFCTEUgZGltMiAoaWQgaW50 LCBuYW1lIHRleHQpOworQ1JFQVRFIFRFTVAgVEFCTEUgZGltMyAoaWQgaW50LCBuYW1lIHRleHQp OworQ1JFQVRFIFRFTVAgVEFCTEUgZGltNCAoaWQgaW50LCBuYW1lIHRleHQpOworCitJTlNFUlQg SU5UTyBmYWN0IFNFTEVDVCBpLCBpLCBpLCBpLCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs MTAwKSBpOworSU5TRVJUIElOVE8gZGltMSBTRUxFQ1QgaSwgJ2RpbTFfJ3x8aSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLDEwKSBpOworSU5TRVJUIElOVE8gZGltMiBTRUxFQ1QgaSwgJ2RpbTJfJ3x8 aSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOworSU5TRVJUIElOVE8gZGltMyBTRUxFQ1Qg aSwgJ2RpbTNfJ3x8aSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOworSU5TRVJUIElOVE8g ZGltNCBTRUxFQ1QgaSwgJ2RpbTRfJ3x8aSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOwor CitBTkFMWVpFOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikKK0ZST00g ZmFjdAorSk9JTiBkaW0xIE9OIGZhY3QuZGltMV9pZCA9IGRpbTEuaWQKK0pPSU4gZGltMiBPTiBm YWN0LmRpbTJfaWQgPSBkaW0yLmlkCitKT0lOIGRpbTMgT04gZmFjdC5kaW0zX2lkID0gZGltMy5p ZAorSk9JTiBkaW00IE9OIGZhY3QuZGltNF9pZCA9IGRpbTQuaWQKK1dIRVJFIGRpbTEuaWQgPCA1 OworCistLQorLS0gTG9uZyBqb2luIGNoYWluCistLQorLS0gVGVzdHMgR09PIHdpdGggYSBsYXJn ZSBqb2luIGludm9sdmluZyAxNSByZWxhdGlvbnMuCistLQorU0VUIGdlcW9fdGhyZXNob2xkID0g ODsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopCitGUk9NIHQxCitKT0lO IHQyIE9OIHQxLmEgPSB0Mi5hCitKT0lOIHQzIE9OIHQxLmIgPSB0My5iCitKT0lOIHQ0IE9OIHQy LmMgPSB0NC5jCitKT0lOIHQ1IE9OIHQzLmQgPSB0NS5kCitKT0lOIHQ2IE9OIHQ0LmUgPSB0Ni5l CitKT0lOIHQ3IE9OIHQ1LmYgPSB0Ny5mCitKT0lOIHQ4IE9OIHQ2LmcgPSB0OC5nCitKT0lOIHQ5 IE9OIHQ3LmggPSB0OS5oCitKT0lOIHQxMCBPTiB0OC5pID0gdDEwLmkKK0pPSU4gdDExIE9OIHQ5 LmogPSB0MTEuagorSk9JTiB0MTIgT04gdDEwLmsgPSB0MTIuaworSk9JTiB0MTMgT04gdDExLmwg PSB0MTMubAorSk9JTiB0MTQgT04gdDEyLm0gPSB0MTQubQorSk9JTiB0MTUgT04gdDEzLm4gPSB0 MTUubjsKKworLS0gRXhlY3V0ZSB0byB2ZXJpZnkgY29ycmVjdG5lc3MKK1NFTEVDVCBjb3VudCgq KQorRlJPTSB0MQorSk9JTiB0MiBPTiB0MS5hID0gdDIuYQorSk9JTiB0MyBPTiB0MS5iID0gdDMu YgorSk9JTiB0NCBPTiB0Mi5jID0gdDQuYworSk9JTiB0NSBPTiB0My5kID0gdDUuZAorSk9JTiB0 NiBPTiB0NC5lID0gdDYuZQorSk9JTiB0NyBPTiB0NS5mID0gdDcuZgorSk9JTiB0OCBPTiB0Ni5n ID0gdDguZworSk9JTiB0OSBPTiB0Ny5oID0gdDkuaAorSk9JTiB0MTAgT04gdDguaSA9IHQxMC5p CitKT0lOIHQxMSBPTiB0OS5qID0gdDExLmoKK0pPSU4gdDEyIE9OIHQxMC5rID0gdDEyLmsKK0pP SU4gdDEzIE9OIHQxMS5sID0gdDEzLmwKK0pPSU4gdDE0IE9OIHQxMi5tID0gdDE0Lm0KK0pPSU4g dDE1IE9OIHQxMy5uID0gdDE1Lm47CisKKy0tCistLSBCdXNoeSB0cmVlIHN1cHBvcnQKKy0tCist LSBWZXJpZnkgdGhhdCBHT08gY2FuIHByb2R1Y2UgYnVzaHkgam9pbiB0cmVlcywgbm90IGp1c3Qg bGVmdC1kZWVwIG9yIHJpZ2h0LWRlZXAuCistLSBXaXRoIGFwcHJvcHJpYXRlIGNvc3QgbW9kZWws IEdPTyBzaG91bGQgam9pbiAodDEsdDIpIGFuZCAodDMsdDQpIGZpcnN0LAorLS0gdGhlbiBqb2lu IHRob3NlIHJlc3VsdHMgKGJ1c2h5IHRyZWUpLgorLS0KK1NFVCBnZXFvX3RocmVzaG9sZCA9IDQ7 CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKQorRlJPTSB0MSwgdDIsIHQz LCB0NAorV0hFUkUgdDEuYSA9IHQyLmEKKyAgQU5EIHQzLmIgPSB0NC5jCisgIEFORCB0MS5hID0g dDMuYjsKKworLS0KKy0tIENvbXBhcmUgR09PIHZzIHN0YW5kYXJkIGpvaW4gc2VhcmNoCistLQor LS0gUnVuIHRoZSBzYW1lIHF1ZXJ5IHdpdGggR09PIGFuZCBzdGFuZGFyZCBqb2luIHNlYXJjaCB0 byB2ZXJpZnkgYm90aAorLS0gcHJvZHVjZSB2YWxpZCBwbGFucy4gUmVzdWx0cyBzaG91bGQgYmUg aWRlbnRpY2FsIGV2ZW4gaWYgcGxhbnMgZGlmZmVyLgorLS0KK1NFVCBlbmFibGVfZ29vX2pvaW5f c2VhcmNoID0gb247CitQUkVQQVJFIGdvb19wbGFuIEFTCitTRUxFQ1QgY291bnQoKikKK0ZST00g dDEgSk9JTiB0MiBPTiB0MS5hID0gdDIuYQorSk9JTiB0MyBPTiB0MS5iID0gdDMuYgorSk9JTiB0 NCBPTiB0Mi5jID0gdDQuYworSk9JTiB0NSBPTiB0My5kID0gdDUuZAorSk9JTiB0NiBPTiB0NC5l ID0gdDYuZTsKKworRVhFQ1VURSBnb29fcGxhbjsKKworU0VUIGVuYWJsZV9nb29fam9pbl9zZWFy Y2ggPSBvZmY7CitTRVQgZ2Vxb190aHJlc2hvbGQgPSBkZWZhdWx0OworUFJFUEFSRSBzdGFuZGFy ZF9wbGFuIEFTCitTRUxFQ1QgY291bnQoKikKK0ZST00gdDEgSk9JTiB0MiBPTiB0MS5hID0gdDIu YQorSk9JTiB0MyBPTiB0MS5iID0gdDMuYgorSk9JTiB0NCBPTiB0Mi5jID0gdDQuYworSk9JTiB0 NSBPTiB0My5kID0gdDUuZAorSk9JTiB0NiBPTiB0NC5lID0gdDYuZTsKKworRVhFQ1VURSBzdGFu ZGFyZF9wbGFuOworCistLSBSZXN1bHRzIHNob3VsZCBtYXRjaAorRVhFQ1VURSBnb29fcGxhbjsK K0VYRUNVVEUgc3RhbmRhcmRfcGxhbjsKKworLS0KKy0tIExhcmdlIGpvaW4gKDE4IHJlbGF0aW9u cykKKy0tCistLSBUZXN0IEdPTyB3aXRoIGEgbGFyZ2UgbnVtYmVyIG9mIHJlbGF0aW9ucy4KKy0t CitTRVQgZW5hYmxlX2dvb19qb2luX3NlYXJjaCA9IG9uOworU0VUIGdlcW9fdGhyZXNob2xkID0g MTA7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKQorRlJPTSB0MQorSk9J TiB0MiBPTiB0MS5hID0gdDIuYQorSk9JTiB0MyBPTiB0MS5iID0gdDMuYgorSk9JTiB0NCBPTiB0 Mi5jID0gdDQuYworSk9JTiB0NSBPTiB0My5kID0gdDUuZAorSk9JTiB0NiBPTiB0NC5lID0gdDYu ZQorSk9JTiB0NyBPTiB0NS5mID0gdDcuZgorSk9JTiB0OCBPTiB0Ni5nID0gdDguZworSk9JTiB0 OSBPTiB0Ny5oID0gdDkuaAorSk9JTiB0MTAgT04gdDguaSA9IHQxMC5pCitKT0lOIHQxMSBPTiB0 OS5qID0gdDExLmoKK0pPSU4gdDEyIE9OIHQxMC5rID0gdDEyLmsKK0pPSU4gdDEzIE9OIHQxMS5s ID0gdDEzLmwKK0pPSU4gdDE0IE9OIHQxMi5tID0gdDE0Lm0KK0pPSU4gdDE1IE9OIHQxMy5uID0g dDE1Lm4KK0pPSU4gdDE2IE9OIHQxNC5vID0gdDE2Lm8KK0pPSU4gdDE3IE9OIHQxNS5wID0gdDE3 LnAKK0pPSU4gdDE4IE9OIHQxNi5xID0gdDE4LnE7CisKKy0tCistLSBNaXhlZCBjb25uZWN0ZWQg YW5kIGRpc2Nvbm5lY3RlZCBjb21wb25lbnRzCistLQorLS0gUXVlcnkgd2l0aCB0d28gY29ubmVj dGVkIGNvbXBvbmVudHMgdGhhdCBuZWVkIGEgQ2FydGVzaWFuIHByb2R1Y3QgYmV0d2VlbiB0aGVt LgorLS0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKQorRlJPTSB0MSBKT0lO IHQyIE9OIHQxLmEgPSB0Mi5hLAorICAgICB0NSBKT0lOIHQ2IE9OIHQ1LmYgPSB0Ni5lCitXSEVS RSB0MS5hIDwgNSBBTkQgdDUuZCA8IDM7CisKKy0tCistLSBPdXRlciBqb2lucworLS0KKy0tIFZl cmlmeSBHT08gaGFuZGxlcyBvdXRlciBqb2lucyBjb3JyZWN0bHkgKHJlc3BlY3RzIGpvaW4gb3Jk ZXIgcmVzdHJpY3Rpb25zKQorLS0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgq KQorRlJPTSB0MQorTEVGVCBKT0lOIHQyIE9OIHQxLmEgPSB0Mi5hCitMRUZUIEpPSU4gdDMgT04g dDIuYSA9IHQzLmIKK0xFRlQgSk9JTiB0NCBPTiB0My5kID0gdDQuYzsKKworLS0KKy0tIENvbXBs ZXRlIENhcnRlc2lhbiBwcm9kdWN0cyAoZGlzY29ubmVjdGVkIGdyYXBocykKKy0tCistLSBUZXN0 IEdPTydzIGFiaWxpdHkgdG8gaGFuZGxlIHF1ZXJpZXMgd2l0aCBubyBqb2luIGNsYXVzZXMgYXQg YWxsLgorLS0KK1NFVCBlbmFibGVfZ29vX2pvaW5fc2VhcmNoID0gb247CitTRVQgZ2Vxb190aHJl c2hvbGQgPSAyOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikKK0ZST00g dDEsIHQyOworCitTRUxFQ1QgY291bnQoKikKK0ZST00gdDEsIHQyOworCistLQorLS0gSm9pbiBv cmRlciByZXN0cmljdGlvbnMgd2l0aCBGVUxMIE9VVEVSIEpPSU4KKy0tCistLSBGVUxMIE9VVEVS IEpPSU4gY3JlYXRlcyBzdHJvbmcgb3JkZXJpbmcgY29uc3RyYWludHMgdGhhdCBHT08gbXVzdCBy ZXNwZWN0CistLQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopCitGUk9NIHQx CitGVUxMIE9VVEVSIEpPSU4gdDIgT04gdDEuYSA9IHQyLmEKK0ZVTEwgT1VURVIgSk9JTiB0MyBP TiB0Mi5hID0gdDMuYjsKKworLS0KKy0tIFNlbGYtam9pbiBoYW5kbGluZworLS0KKy0tIFRlc3Qg R09PIHdpdGggdGhlIHNhbWUgdGFibGUgYXBwZWFyaW5nIG11bHRpcGxlIHRpbWVzLiBHT08gbXVz dCBjb3JyZWN0bHkKKy0tIGhhbmRsZSBzZWxmLWpvaW5zIHRoYXQgd2VyZSBub3QgcmVtb3ZlZCBi eSBTZWxmLUpvaW4gRWxpbWluYXRpb24uCistLQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IGNvdW50KCopCitGUk9NIHQxIGEKK0pPSU4gdDEgYiBPTiBhLmEgPSBiLmEKK0pPSU4gdDIgYyBP TiBiLmIgPSBjLmM7CisKKy0tCistLSBDb21wbGV4IGJ1c2h5IHRyZWUgcGF0dGVybgorLS0KKy0t IENyZWF0ZSBhIHF1ZXJ5IHRoYXQgbmF0dXJhbGx5IGxlYWRzIHRvIGJ1c2h5IHRyZWU6IG11bHRp cGxlIGluZGVwZW5kZW50CistLSBqb2luIGNoYWlucyB0aGF0IG5lZWQgdG8gYmUgY29tYmluZWQK Ky0tCitDUkVBVEUgVEVNUCBUQUJMRSBjaGFpbjFhIChpZCBpbnQsIHZhbCBpbnQpOworQ1JFQVRF IFRFTVAgVEFCTEUgY2hhaW4xYiAoaWQgaW50LCB2YWwgaW50KTsKK0NSRUFURSBURU1QIFRBQkxF IGNoYWluMWMgKGlkIGludCwgdmFsIGludCk7CitDUkVBVEUgVEVNUCBUQUJMRSBjaGFpbjJhIChp ZCBpbnQsIHZhbCBpbnQpOworQ1JFQVRFIFRFTVAgVEFCTEUgY2hhaW4yYiAoaWQgaW50LCB2YWwg aW50KTsKK0NSRUFURSBURU1QIFRBQkxFIGNoYWluMmMgKGlkIGludCwgdmFsIGludCk7CisKK0lO U0VSVCBJTlRPIGNoYWluMWEgU0VMRUNUIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAp IGk7CitJTlNFUlQgSU5UTyBjaGFpbjFiIFNFTEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsMTAwKSBpOworSU5TRVJUIElOVE8gY2hhaW4xYyBTRUxFQ1QgaSwgaSBGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwMCkgaTsKK0lOU0VSVCBJTlRPIGNoYWluMmEgU0VMRUNUIGksIGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwxMDApIGk7CitJTlNFUlQgSU5UTyBjaGFpbjJiIFNFTEVDVCBpLCBp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKSBpOworSU5TRVJUIElOVE8gY2hhaW4yYyBTRUxF Q1QgaSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCkgaTsKKworQU5BTFlaRTsKKworRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopCitGUk9NIGNoYWluMWEKK0pPSU4gY2hh aW4xYiBPTiBjaGFpbjFhLmlkID0gY2hhaW4xYi5pZAorSk9JTiBjaGFpbjFjIE9OIGNoYWluMWIu dmFsID0gY2hhaW4xYy5pZAorSk9JTiBjaGFpbjJhIE9OIGNoYWluMWEudmFsID0gY2hhaW4yYS5p ZCAgLS0gQ3Jvc3MtY2hhaW4gam9pbgorSk9JTiBjaGFpbjJiIE9OIGNoYWluMmEudmFsID0gY2hh aW4yYi5pZAorSk9JTiBjaGFpbjJjIE9OIGNoYWluMmIudmFsID0gY2hhaW4yYy5pZDsKKworLS0K Ky0tIEVhZ2VyIGFnZ3JlZ2F0aW9uIHdpdGggR09PIGpvaW4gc2VhcmNoCistLSBFbnN1cmUgZ3Jv dXBlZF9yZWwgaGFuZGxpbmcgd2hlbiBlYWdlciBhZ2dyZWdhdGlvbiBpcyBlbmFibGVkLgorLS0K K1NFVCBlbmFibGVfZWFnZXJfYWdncmVnYXRlID0gb247CitTRVQgbWluX2VhZ2VyX2FnZ19ncm91 cF9zaXplID0gMDsKKworQ1JFQVRFIFRFTVAgVEFCTEUgY2VudGVyX3RibCAoaWQgaW50IFBSSU1B UlkgS0VZKTsKK0NSRUFURSBURU1QIFRBQkxFIGFybTFfdGJsIChjZW50ZXJfaWQgaW50LCBwYXls b2FkIGludCk7CitDUkVBVEUgVEVNUCBUQUJMRSBhcm0yX3RibCAoY2VudGVyX2lkIGludCwgcGF5 bG9hZCBpbnQpOworCitJTlNFUlQgSU5UTyBjZW50ZXJfdGJsIFNFTEVDVCBpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDEwKSBpOworSU5TRVJUIElOVE8gYXJtMV90YmwgU0VMRUNUIGklMTAgKyAx LCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CitJTlNFUlQgSU5UTyBhcm0yX3Ri bCBTRUxFQ1QgaSUxMCArIDEsIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgaTsKKwor QU5BTFlaRSBjZW50ZXJfdGJsOworQU5BTFlaRSBhcm0xX3RibDsKK0FOQUxZWkUgYXJtMl90Ymw7 CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBjLmlkLCBjb3VudCgqKQor RlJPTSBjZW50ZXJfdGJsIGMKK0pPSU4gYXJtMV90YmwgYTEgT04gYy5pZCA9IGExLmNlbnRlcl9p ZAorSk9JTiBhcm0yX3RibCBhMiBPTiBjLmlkID0gYTIuY2VudGVyX2lkCitHUk9VUCBCWSBjLmlk OworCitTRUxFQ1QgYy5pZCwgY291bnQoKikKK0ZST00gY2VudGVyX3RibCBjCitKT0lOIGFybTFf dGJsIGExIE9OIGMuaWQgPSBhMS5jZW50ZXJfaWQKK0pPSU4gYXJtMl90YmwgYTIgT04gYy5pZCA9 IGEyLmNlbnRlcl9pZAorR1JPVVAgQlkgYy5pZDsKKworUkVTRVQgbWluX2VhZ2VyX2FnZ19ncm91 cF9zaXplOworUkVTRVQgZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZTsKKworLS0gQ2xlYW51cAorREVB TExPQ0FURSBnb29fcGxhbjsKK0RFQUxMT0NBVEUgc3RhbmRhcmRfcGxhbjsKKworUkVTRVQgZ2Vx b190aHJlc2hvbGQ7CitSRVNFVCBlbmFibGVfZ29vX2pvaW5fc2VhcmNoOwotLSAKMi41MC4xIChB cHBsZSBHaXQtMTU1KQoK --_005_8927A117A7EA41E894B30B4F7767DA8Boutlookcom_ Content-Type: application/octet-stream; name="v5-0002-add-a-GUC-goo_greedy_strategy-to-choose-GOO-greed.patch" Content-Description: v5-0002-add-a-GUC-goo_greedy_strategy-to-choose-GOO-greed.patch Content-Disposition: attachment; filename="v5-0002-add-a-GUC-goo_greedy_strategy-to-choose-GOO-greed.patch"; size=20440; creation-date="Sat, 14 Feb 2026 05:39:27 GMT"; modification-date="Sat, 14 Feb 2026 05:39:27 GMT" Content-ID: <0737C69247CE5849ABDFCDC8D46F1F33@jpnprd01.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBhZThkZGMwYTI1Y2JiZGVhZDQyMjE2NmEwZjYyMjNjMjM1ZTZlODA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDaGVuZ3BlbmcgWWFuIDxjaGVuZ3BlbmdfeWFuQG91dGxvb2su Y29tPgpEYXRlOiBTYXQsIDE0IEZlYiAyMDI2IDExOjQ0OjU5ICswODAwClN1YmplY3Q6IFtQQVRD SCB2NSAyLzJdIGFkZCBhIEdVQyBnb29fZ3JlZWR5X3N0cmF0ZWd5IHRvIGNob29zZSBHT08gZ3Jl ZWR5CiBzdHJhdGVnaWVzCgpBZGQgZ29vX2dyZWVkeV9zdHJhdGVneSBhbmQgZXh0ZW5kIEdPTyBj YW5kaWRhdGUgY29tcGFyaXNvbiB0byBzdXBwb3J0CnJlc3VsdF9zaXplLCBjb3N0LCBhbmQgc2Vs ZWN0aXZpdHkgc3RyYXRlZ2llcy4gQWxzbyBhZGQgY29tYmluZWQgbW9kZSwKd2hpY2ggcnVucyB0 aGVzZSBzdHJhdGVnaWVzIGFuZCBrZWVwcyB0aGUgbG93ZXN0LWNvc3QgcmVzdWx0LgoKU2lnbmVk LW9mZi1ieTogQ2hlbmdwZW5nIFlhbiA8Y2hlbmdwZW5nX3lhbkBvdXRsb29rLmNvbT4KLS0tCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9nb28uYyAgICAgICAgICB8IDE4NCArKysrKysrKysr KysrKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCB8 ICAxMCArKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgfCAgIDgg Kwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggICAgICAgICAgICAgfCAgIDkgKysKIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ29vLm91dCAgICAgICAgIHwgMTAyICsrKysrKy0tLS0t LQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ29vLnNxbCAgICAgICAgICAgICAgfCAgIDQgKwogNiBm aWxlcyBjaGFuZ2VkLCAyNjAgaW5zZXJ0aW9ucygrKSwgNTcgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvZ29vLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGF0aC9nb28uYwppbmRleCBlNDlhOWYzNzJlZi4uYjdkNGE5MzExOTggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2dvby5jCisrKyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wYXRoL2dvby5jCkBAIC01NSw2ICs1NSw3IEBACiAgKiBDb25maWd1cmF0aW9uIGRl ZmF1bHRzLiAgVGhlc2UgYXJlIGV4cG9zZWQgYXMgR1VDcyBpbiBndWNfdGFibGVzLmMuCiAgKi8K IGJvb2wJCWVuYWJsZV9nb29fam9pbl9zZWFyY2ggPSBmYWxzZTsKK2ludAkJCWdvb19ncmVlZHlf c3RyYXRlZ3kgPSBHT09fR1JFRURZX1NUUkFURUdZX0NPTUJJTkVEOwogCiAvKgogICogV29ya2lu ZyBzdGF0ZSBmb3IgYSBzaW5nbGUgR09PIHNlYXJjaCBpbnZvY2F0aW9uLgpAQCAtNzMsNiArNzQs NyBAQCB0eXBlZGVmIHN0cnVjdCBHb29TdGF0ZQogCU1lbW9yeUNvbnRleHQgY2FuZF9jeHQ7CQkv KiBwZXItaXRlcmF0aW9uIGNhbmRpZGF0ZSBzdG9yYWdlICovCiAJTWVtb3J5Q29udGV4dCBzY3Jh dGNoX2N4dDsJLyogcGVyLWNhbmRpZGF0ZSBzcGVjdWxhdGl2ZSBldmFsdWF0aW9uICovCiAJTGlz dAkgICAqY2x1bXBzOwkJCS8qIHJlbWFpbmluZyBqb2luIGNvbXBvbmVudHMgKFJlbE9wdEluZm8g KikgKi8KKwlHb29HcmVlZHlTdHJhdGVneSBzdHJhdGVneTsgLyogY2FuZGlkYXRlIGNvbXBhcmlz b24gaGV1cmlzdGljICovCiAKIAkvKgogCSAqICJjbHVtcHMiIGFyZSBzaW1pbGFyIHRvIEdFUU8n cyBjb25jZXB0IChzZWUgZ2Vxb19ldmFsLmMpOiBqb2luCkBAIC05NCwxMSArOTYsMjIgQEAgdHlw ZWRlZiBzdHJ1Y3QgR29vQ2FuZGlkYXRlCiB7CiAJUmVsT3B0SW5mbyAqbGVmdDsJCQkvKiBsZWZ0 IGlucHV0IGNsdW1wICovCiAJUmVsT3B0SW5mbyAqcmlnaHQ7CQkJLyogcmlnaHQgaW5wdXQgY2x1 bXAgKi8KKwlkb3VibGUJCXJlc3VsdF9zaXplOwkvKiBlc3RpbWF0ZWQgcmVzdWx0IHNpemUgaW4g Ynl0ZXMgKi8KIAlDb3N0CQl0b3RhbF9jb3N0OwkJLyogdG90YWwgY29zdCBvZiBjaGVhcGVzdCBw YXRoICovCisJZG91YmxlCQlzZWxlY3Rpdml0eTsJLyogam9pbiBzZWxlY3Rpdml0eSAob3V0cHV0 L2lucHV0IHJvd3MpICovCiAJUmVsaWRzCQlqb2lucmVsaWRzOwkJLyogcmVsaWRzIGNvdmVyZWQg YnkgdGhpcyBqb2luICovCiB9CQkJR29vQ2FuZGlkYXRlOwogCi1zdGF0aWMgR29vU3RhdGUgKiBn b29faW5pdF9zdGF0ZShQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqaW5pdGlhbF9yZWxzKTsKK3R5 cGVkZWYgc3RydWN0IEdvb1N0cmF0ZWd5UmVzdWx0Cit7CisJUmVsT3B0SW5mbyAqcmVzdWx0Owor CUNvc3QJCXRvdGFsX2Nvc3Q7CisJTGlzdAkgICAqam9pbl9yZWxfbGlzdDsKKwlzdHJ1Y3QgSFRB QiAqam9pbl9yZWxfaGFzaDsKK30JCQlHb29TdHJhdGVneVJlc3VsdDsKKworc3RhdGljIEdvb1N0 YXRlICogZ29vX2luaXRfc3RhdGUoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmluaXRpYWxfcmVs cywKKwkJCQkJCQkJIEdvb0dyZWVkeVN0cmF0ZWd5IHN0cmF0ZWd5KTsKIHN0YXRpYyB2b2lkIGdv b19kZXN0cm95X3N0YXRlKEdvb1N0YXRlICogc3RhdGUpOwogc3RhdGljIFJlbE9wdEluZm8gKmdv b19zZWFyY2hfaW50ZXJuYWwoR29vU3RhdGUgKiBzdGF0ZSk7CiBzdGF0aWMgdm9pZCBnb29fcmVz ZXRfcHJvYmVfc3RhdGUoR29vU3RhdGUgKiBzdGF0ZSwgaW50IHNhdmVkX3JlbF9sZW4sCkBAIC0x MDYsOSArMTE5LDE1IEBAIHN0YXRpYyB2b2lkIGdvb19yZXNldF9wcm9iZV9zdGF0ZShHb29TdGF0 ZSAqIHN0YXRlLCBpbnQgc2F2ZWRfcmVsX2xlbiwKIHN0YXRpYyBHb29DYW5kaWRhdGUgKiBnb29f YnVpbGRfY2FuZGlkYXRlKEdvb1N0YXRlICogc3RhdGUsIFJlbE9wdEluZm8gKmxlZnQsCiAJCQkJ CQkJCQkJICBSZWxPcHRJbmZvICpyaWdodCk7CiBzdGF0aWMgUmVsT3B0SW5mbyAqZ29vX2NvbW1p dF9qb2luKEdvb1N0YXRlICogc3RhdGUsIEdvb0NhbmRpZGF0ZSAqIGNhbmQpOwotc3RhdGljIGJv b2wgZ29vX2NhbmRpZGF0ZV9iZXR0ZXIoR29vQ2FuZGlkYXRlICogYSwgR29vQ2FuZGlkYXRlICog Yik7CitzdGF0aWMgYm9vbCBnb29fY2FuZGlkYXRlX2JldHRlcihHb29HcmVlZHlTdHJhdGVneSBz dHJhdGVneSwKKwkJCQkJCQkJIEdvb0NhbmRpZGF0ZSAqIGEsIEdvb0NhbmRpZGF0ZSAqIGIpOwog c3RhdGljIGJvb2wgZ29vX2NhbmRpZGF0ZV9wcnVuYWJsZShHb29TdGF0ZSAqIHN0YXRlLCBSZWxP cHRJbmZvICpsZWZ0LAogCQkJCQkJCQkgICBSZWxPcHRJbmZvICpyaWdodCk7CitzdGF0aWMgY29u c3QgY2hhciAqZ29vX3N0cmF0ZWd5X25hbWUoR29vR3JlZWR5U3RyYXRlZ3kgc3RyYXRlZ3kpOwor c3RhdGljIEdvb1N0cmF0ZWd5UmVzdWx0IGdvb19ydW5fc3RyYXRlZ3koUGxhbm5lckluZm8gKnJv b3QsIExpc3QgKmluaXRpYWxfcmVscywKKwkJCQkJCQkJCQkgIExpc3QgKmJhc2Vfam9pbl9yZWxf bGlzdCwKKwkJCQkJCQkJCQkgIHN0cnVjdCBIVEFCICpiYXNlX2hhc2gsCisJCQkJCQkJCQkJICBH b29HcmVlZHlTdHJhdGVneSBzdHJhdGVneSk7CiAKIC8qCiAgKiBnb29fam9pbl9zZWFyY2gKQEAg LTEzMCw4ICsxNDksNjMgQEAgZ29vX2pvaW5fc2VhcmNoKFBsYW5uZXJJbmZvICpyb290LCBpbnQg bGV2ZWxzX25lZWRlZCwKIAlpbnQJCQliYXNlX3JlbF9jb3VudDsKIAlzdHJ1Y3QgSFRBQiAqYmFz ZV9oYXNoOwogCisJLyogSWYgQ09NQklORUQgbW9kZSwgdHJ5IGFsbCBzdHJhdGVnaWVzIGFuZCBy ZXR1cm4gdGhlIGJldHRlciBvbmUgKi8KKwlpZiAoZ29vX2dyZWVkeV9zdHJhdGVneSA9PSBHT09f R1JFRURZX1NUUkFURUdZX0NPTUJJTkVEKQorCXsKKwkJc3RhdGljIGNvbnN0IEdvb0dyZWVkeVN0 cmF0ZWd5IGNvbWJpbmVkX3N0cmF0ZWdpZXNbXSA9IHsKKwkJCUdPT19HUkVFRFlfU1RSQVRFR1lf UkVTVUxUX1NJWkUsCisJCQlHT09fR1JFRURZX1NUUkFURUdZX0NPU1QsCisJCQlHT09fR1JFRURZ X1NUUkFURUdZX1NFTEVDVElWSVRZCisJCX07CisJCUdvb1N0cmF0ZWd5UmVzdWx0IGJlc3RfcmVz dWx0ID0gezB9OworCQlHb29HcmVlZHlTdHJhdGVneSBiZXN0X3N0cmF0ZWd5ID0gR09PX0dSRUVE WV9TVFJBVEVHWV9DT1NUOworCQlMaXN0CSAgICpiYXNlX2pvaW5fcmVsX2xpc3Q7CisJCWJvb2wJ CWhhdmVfYmVzdCA9IGZhbHNlOworCisJCWJhc2Vfam9pbl9yZWxfbGlzdCA9IHJvb3QtPmpvaW5f cmVsX2xpc3Q7CisJCWJhc2VfaGFzaCA9IHJvb3QtPmpvaW5fcmVsX2hhc2g7CisKKwkJZm9yIChp bnQgaSA9IDA7IGkgPCBsZW5ndGhvZihjb21iaW5lZF9zdHJhdGVnaWVzKTsgaSsrKQorCQl7CisJ CQlHb29HcmVlZHlTdHJhdGVneSBzdHJhdGVneSA9IGNvbWJpbmVkX3N0cmF0ZWdpZXNbaV07CisJ CQlHb29TdHJhdGVneVJlc3VsdCByZXN1bHQ7CisKKwkJCXJlc3VsdCA9IGdvb19ydW5fc3RyYXRl Z3kocm9vdCwgaW5pdGlhbF9yZWxzLAorCQkJCQkJCQkJICBiYXNlX2pvaW5fcmVsX2xpc3QsIGJh c2VfaGFzaCwKKwkJCQkJCQkJCSAgc3RyYXRlZ3kpOworCisJCQlpZiAocmVzdWx0LnJlc3VsdCA9 PSBOVUxMKQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAoIWhhdmVfYmVzdCB8fCByZXN1bHQudG90 YWxfY29zdCA8IGJlc3RfcmVzdWx0LnRvdGFsX2Nvc3QpCisJCQl7CisJCQkJYmVzdF9yZXN1bHQg PSByZXN1bHQ7CisJCQkJYmVzdF9zdHJhdGVneSA9IHN0cmF0ZWd5OworCQkJCWhhdmVfYmVzdCA9 IHRydWU7CisJCQl9CisJCX0KKworCQkvKgorCQkgKiBEdXJpbmcgZGV2ZWxvcG1lbnQvdGVzdGlu ZywgZmFpbCBmYXN0IHdoZW4gZXZlcnkgc3RyYXRlZ3kgZmFpbHMuCisJCSAqLworCQlpZiAoIWhh dmVfYmVzdCkKKwkJCWVsb2coRVJST1IsICJHT08gam9pbiBzZWFyY2ggZmFpbGVkOiBhbGwgc3Ry YXRlZ2llcyBleGhhdXN0ZWQgd2l0aG91dCBhIHZhbGlkIGpvaW4gb3JkZXIiKTsKKworCQkvKgor CQkgKiBQaWNrIHRoZSBsb3dlc3QtY29zdCByZXN1bHQgYWNyb3NzIHN0cmF0ZWdpZXMuCisJCSAq LworCQlyb290LT5qb2luX3JlbF9saXN0ID0gYmVzdF9yZXN1bHQuam9pbl9yZWxfbGlzdDsKKwkJ cm9vdC0+am9pbl9yZWxfaGFzaCA9IGJlc3RfcmVzdWx0LmpvaW5fcmVsX2hhc2g7CisKKwkJZWxv ZyhERUJVRzEsICJHT08gQ09NQklORUQgbW9kZTogJXMgc3RyYXRlZ3kgY2hvc2VuIChjb3N0OiAl LjJmKSIsCisJCQkgZ29vX3N0cmF0ZWd5X25hbWUoYmVzdF9zdHJhdGVneSksIGJlc3RfcmVzdWx0 LnRvdGFsX2Nvc3QpOworCisJCXJldHVybiBiZXN0X3Jlc3VsdC5yZXN1bHQ7CisJfQorCisJLyog Tm9ybWFsIHNpbmdsZS1zdHJhdGVneSBtb2RlICovCiAJLyogSW5pdGlhbGl6ZSBzZWFyY2ggc3Rh dGUgYW5kIG1lbW9yeSBjb250ZXh0cyAqLwotCXN0YXRlID0gZ29vX2luaXRfc3RhdGUocm9vdCwg aW5pdGlhbF9yZWxzKTsKKwlzdGF0ZSA9IGdvb19pbml0X3N0YXRlKHJvb3QsIGluaXRpYWxfcmVs cywgZ29vX2dyZWVkeV9zdHJhdGVneSk7CiAKIAkvKgogCSAqIFNhdmUgaW5pdGlhbCBzdGF0ZSBv ZiBqb2luX3JlbF9saXN0IGFuZCBqb2luX3JlbF9oYXNoIHNvIHdlIGNhbiByZXN0b3JlCkBAIC0x NzIsNyArMjQ2LDggQEAgZ29vX2pvaW5fc2VhcmNoKFBsYW5uZXJJbmZvICpyb290LCBpbnQgbGV2 ZWxzX25lZWRlZCwKICAqIHdoZXJlIHdlIG1heSBldmFsdWF0ZSBodW5kcmVkcyBvciB0aG91c2Fu ZHMgb2YgY2FuZGlkYXRlIGpvaW5zLgogICovCiBzdGF0aWMgR29vU3RhdGUgKgotZ29vX2luaXRf c3RhdGUoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmluaXRpYWxfcmVscykKK2dvb19pbml0X3N0 YXRlKFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICppbml0aWFsX3JlbHMsCisJCQkgICBHb29HcmVl ZHlTdHJhdGVneSBzdHJhdGVneSkKIHsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlHb29TdGF0 ZSAgICpzdGF0ZTsKQEAgLTE4Myw2ICsyNTgsNyBAQCBnb29faW5pdF9zdGF0ZShQbGFubmVySW5m byAqcm9vdCwgTGlzdCAqaW5pdGlhbF9yZWxzKQogCXN0YXRlLT5yb290ID0gcm9vdDsKIAlzdGF0 ZS0+Y2x1bXBzID0gTklMOwogCXN0YXRlLT5wcnVuZV9jYXJ0ZXNpYW4gPSBmYWxzZTsKKwlzdGF0 ZS0+c3RyYXRlZ3kgPSBzdHJhdGVneTsKIAogCS8qIENyZWF0ZSB0aGUgdGhyZWUtbGV2ZWwgbWVt b3J5IGNvbnRleHQgaGllcmFyY2h5ICovCiAJc3RhdGUtPmdvb19jeHQgPSBBbGxvY1NldENvbnRl eHRDcmVhdGUocm9vdC0+cGxhbm5lcl9jeHQsICJHT09TdGF0ZUNvbnRleHQiLApAQCAtMjE5LDYg KzI5NSw0MiBAQCBnb29fZGVzdHJveV9zdGF0ZShHb29TdGF0ZSAqIHN0YXRlKQogCXBmcmVlKHN0 YXRlKTsKIH0KIAorc3RhdGljIEdvb1N0cmF0ZWd5UmVzdWx0Citnb29fcnVuX3N0cmF0ZWd5KFBs YW5uZXJJbmZvICpyb290LCBMaXN0ICppbml0aWFsX3JlbHMsCisJCQkJIExpc3QgKmJhc2Vfam9p bl9yZWxfbGlzdCwgc3RydWN0IEhUQUIgKmJhc2VfaGFzaCwKKwkJCQkgR29vR3JlZWR5U3RyYXRl Z3kgc3RyYXRlZ3kpCit7CisJR29vU3RyYXRlZ3lSZXN1bHQgcmVzdWx0OworCUdvb1N0YXRlICAg KnN0YXRlOworCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCisJcmVzdWx0LnJlc3VsdCA9IE5VTEw7 CisJcmVzdWx0LnRvdGFsX2Nvc3QgPSAwOworCXJlc3VsdC5qb2luX3JlbF9saXN0ID0gTklMOwor CXJlc3VsdC5qb2luX3JlbF9oYXNoID0gTlVMTDsKKworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhyb290LT5wbGFubmVyX2N4dCk7CisJcm9vdC0+am9pbl9yZWxfbGlzdCA9IGxpc3Rf Y29weShiYXNlX2pvaW5fcmVsX2xpc3QpOworCXJvb3QtPmpvaW5fcmVsX2hhc2ggPSBOVUxMOwor CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCisJc3RhdGUgPSBnb29faW5pdF9zdGF0 ZShyb290LCBpbml0aWFsX3JlbHMsIHN0cmF0ZWd5KTsKKwlyZXN1bHQucmVzdWx0ID0gZ29vX3Nl YXJjaF9pbnRlcm5hbChzdGF0ZSk7CisKKwlpZiAocmVzdWx0LnJlc3VsdCAhPSBOVUxMKQorCQly ZXN1bHQudG90YWxfY29zdCA9IHJlc3VsdC5yZXN1bHQtPmNoZWFwZXN0X3RvdGFsX3BhdGgtPnRv dGFsX2Nvc3Q7CisKKwlyZXN1bHQuam9pbl9yZWxfbGlzdCA9IHJvb3QtPmpvaW5fcmVsX2xpc3Q7 CisJcmVzdWx0LmpvaW5fcmVsX2hhc2ggPSByb290LT5qb2luX3JlbF9oYXNoOworCisJZ29vX2Rl c3Ryb3lfc3RhdGUoc3RhdGUpOworCisJcm9vdC0+am9pbl9yZWxfbGlzdCA9IGJhc2Vfam9pbl9y ZWxfbGlzdDsKKwlyb290LT5qb2luX3JlbF9oYXNoID0gYmFzZV9oYXNoOworCisJcmV0dXJuIHJl c3VsdDsKK30KKwogLyoKICAqIGdvb19zZWFyY2hfaW50ZXJuYWwKICAqCQlNYWluIGdyZWVkeSBz ZWFyY2ggbG9vcC4KQEAgLTMwMCw3ICs0MTIsOCBAQCBnb29fc2VhcmNoX2ludGVybmFsKEdvb1N0 YXRlICogc3RhdGUpCiAKIAkJCQkJLyogVHJhY2sgdGhlIGJlc3QgY2FuZGlkYXRlIHNlZW4gc28g ZmFyICovCiAJCQkJCWlmIChiZXN0X2NhbmRpZGF0ZSA9PSBOVUxMIHx8Ci0JCQkJCQlnb29fY2Fu ZGlkYXRlX2JldHRlcihjYW5kLCBiZXN0X2NhbmRpZGF0ZSkpCisJCQkJCQlnb29fY2FuZGlkYXRl X2JldHRlcihzdGF0ZS0+c3RyYXRlZ3ksCisJCQkJCQkJCQkJCSBjYW5kLCBiZXN0X2NhbmRpZGF0 ZSkpCiAJCQkJCQliZXN0X2NhbmRpZGF0ZSA9IGNhbmQ7CiAJCQkJfQogCQkJfQpAQCAtMzkzLDYg KzUwNiw4IEBAIHN0YXRpYyBHb29DYW5kaWRhdGUgKiBnb29fYnVpbGRfY2FuZGlkYXRlKEdvb1N0 YXRlICogc3RhdGUsIFJlbE9wdEluZm8gKmxlZnQsCiAJaW50CQkJc2F2ZWRfcmVsX2xlbjsKIAlz dHJ1Y3QgSFRBQiAqc2F2ZWRfaGFzaDsKIAlSZWxPcHRJbmZvICpqb2lucmVsOworCWRvdWJsZQkJ am9pbl9yb3dzOworCWRvdWJsZQkJcmVzdWx0X3NpemU7CiAJQ29zdAkJdG90YWxfY29zdDsKIAlH b29DYW5kaWRhdGUgKmNhbmQ7CiAJYm9vbAkJaXNfdG9wX3JlbDsKQEAgLTQ0OCw2ICs1NjMsOSBA QCBzdGF0aWMgR29vQ2FuZGlkYXRlICogZ29vX2J1aWxkX2NhbmRpZGF0ZShHb29TdGF0ZSAqIHN0 YXRlLCBSZWxPcHRJbmZvICpsZWZ0LAogCQlzZXRfY2hlYXBlc3QoZ3JvdXBlZF9yZWwpOwogCX0K IAorCWpvaW5fcm93cyA9IGpvaW5yZWwtPnJvd3M7CisKKwlyZXN1bHRfc2l6ZSA9IGpvaW5fcm93 cyAqIGpvaW5yZWwtPnJlbHRhcmdldC0+d2lkdGg7CiAJdG90YWxfY29zdCA9IGpvaW5yZWwtPmNo ZWFwZXN0X3RvdGFsX3BhdGgtPnRvdGFsX2Nvc3Q7CiAKIAkvKgpAQCAtNDY2LDcgKzU4NCw5IEBA IHN0YXRpYyBHb29DYW5kaWRhdGUgKiBnb29fYnVpbGRfY2FuZGlkYXRlKEdvb1N0YXRlICogc3Rh dGUsIFJlbE9wdEluZm8gKmxlZnQsCiAJY2FuZCA9IHBhbGxvYyhzaXplb2YoR29vQ2FuZGlkYXRl KSk7CiAJY2FuZC0+bGVmdCA9IGxlZnQ7CiAJY2FuZC0+cmlnaHQgPSByaWdodDsKKwljYW5kLT5y ZXN1bHRfc2l6ZSA9IHJlc3VsdF9zaXplOwogCWNhbmQtPnRvdGFsX2Nvc3QgPSB0b3RhbF9jb3N0 OworCWNhbmQtPnNlbGVjdGl2aXR5ID0gam9pbl9yb3dzIC8gKGxlZnQtPnJvd3MgKiByaWdodC0+ cm93cyk7CiAJY2FuZC0+am9pbnJlbGlkcyA9IGJtc191bmlvbihsZWZ0LT5yZWxpZHMsIHJpZ2h0 LT5yZWxpZHMpOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCkBAIC01OTcsMTIg KzcxNyw1NiBAQCBnb29fY29tbWl0X2pvaW4oR29vU3RhdGUgKiBzdGF0ZSwgR29vQ2FuZGlkYXRl ICogY2FuZCkKICAqIFJldHVybnMgdHJ1ZSBpZiBjYW5kaWRhdGUgJ2EnIHNob3VsZCBiZSBwcmVm ZXJyZWQgb3ZlciBjYW5kaWRhdGUgJ2InLgogICovCiBzdGF0aWMgYm9vbAotZ29vX2NhbmRpZGF0 ZV9iZXR0ZXIoR29vQ2FuZGlkYXRlICogYSwgR29vQ2FuZGlkYXRlICogYikKK2dvb19jYW5kaWRh dGVfYmV0dGVyKEdvb0dyZWVkeVN0cmF0ZWd5IHN0cmF0ZWd5LAorCQkJCQkgR29vQ2FuZGlkYXRl ICogYSwgR29vQ2FuZGlkYXRlICogYikKIHsKLQlpZiAoYS0+dG90YWxfY29zdCA8IGItPnRvdGFs X2Nvc3QpCi0JCXJldHVybiB0cnVlOwotCWlmIChhLT50b3RhbF9jb3N0ID4gYi0+dG90YWxfY29z dCkKLQkJcmV0dXJuIGZhbHNlOworCXN3aXRjaCAoc3RyYXRlZ3kpCisJeworCQljYXNlIEdPT19H UkVFRFlfU1RSQVRFR1lfQ09NQklORUQ6CisJCQkvKiBTaG91bGQgbm90IGJlIGNhbGxlZCBpbiBD T01CSU5FRCBtb2RlICovCisJCQllbG9nKEVSUk9SLCAiZ29vX2NhbmRpZGF0ZV9iZXR0ZXIgc2hv dWxkIG5vdCBiZSBjYWxsZWQgaW4gQ09NQklORUQgbW9kZSIpOworCQkJcmV0dXJuIGZhbHNlOwor CisJCWNhc2UgR09PX0dSRUVEWV9TVFJBVEVHWV9SRVNVTFRfU0laRToKKwkJCWlmIChhLT5yZXN1 bHRfc2l6ZSA8IGItPnJlc3VsdF9zaXplKQorCQkJCXJldHVybiB0cnVlOworCQkJaWYgKGEtPnJl c3VsdF9zaXplID4gYi0+cmVzdWx0X3NpemUpCisJCQkJcmV0dXJuIGZhbHNlOworCQkJYnJlYWs7 CisKKwkJY2FzZSBHT09fR1JFRURZX1NUUkFURUdZX0NPU1Q6CisJCQlpZiAoYS0+dG90YWxfY29z dCA8IGItPnRvdGFsX2Nvc3QpCisJCQkJcmV0dXJuIHRydWU7CisJCQlpZiAoYS0+dG90YWxfY29z dCA+IGItPnRvdGFsX2Nvc3QpCisJCQkJcmV0dXJuIGZhbHNlOworCQkJYnJlYWs7CisKKwkJY2Fz ZSBHT09fR1JFRURZX1NUUkFURUdZX1NFTEVDVElWSVRZOgorCQlkZWZhdWx0OgorCQkJaWYgKGEt PnNlbGVjdGl2aXR5IDwgYi0+c2VsZWN0aXZpdHkpCisJCQkJcmV0dXJuIHRydWU7CisJCQlpZiAo YS0+c2VsZWN0aXZpdHkgPiBiLT5zZWxlY3Rpdml0eSkKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQli cmVhazsKKwl9CiAKIAlyZXR1cm4gYm1zX2NvbXBhcmUoYS0+am9pbnJlbGlkcywgYi0+am9pbnJl bGlkcykgPCAwOwogfQorCitzdGF0aWMgY29uc3QgY2hhciAqCitnb29fc3RyYXRlZ3lfbmFtZShH b29HcmVlZHlTdHJhdGVneSBzdHJhdGVneSkKK3sKKwlzd2l0Y2ggKHN0cmF0ZWd5KQorCXsKKwkJ Y2FzZSBHT09fR1JFRURZX1NUUkFURUdZX1JFU1VMVF9TSVpFOgorCQkJcmV0dXJuICJSRVNVTFRf U0laRSI7CisJCWNhc2UgR09PX0dSRUVEWV9TVFJBVEVHWV9DT1NUOgorCQkJcmV0dXJuICJDT1NU IjsKKwkJY2FzZSBHT09fR1JFRURZX1NUUkFURUdZX1NFTEVDVElWSVRZOgorCQkJcmV0dXJuICJT RUxFQ1RJVklUWSI7CisJCWNhc2UgR09PX0dSRUVEWV9TVFJBVEVHWV9DT01CSU5FRDoKKwkJCXJl dHVybiAiQ09NQklORUQiOworCX0KKworCXJldHVybiAiVU5LTk9XTiI7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCBiL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IDYyNGRlZTYzMmMzLi5jMTdjNDRj YTRkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5k YXQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKQEAgLTEx NjQsNiArMTE2NCwxNiBAQAogICBtYXggPT4gJ01BWF9LSUxPQllURVMnLAogfSwKIAorLyogV0lQ OiBvbmx5IGZvciB0ZXN0aW5nICovCit7IG5hbWUgPT4gJ2dvb19ncmVlZHlfc3RyYXRlZ3knLCB0 eXBlID0+ICdlbnVtJywgY29udGV4dCA9PiAnUEdDX1VTRVJTRVQnLCBncm91cCA9PiAnUVVFUllf VFVOSU5HX0dFUU8nLAorICBzaG9ydF9kZXNjID0+ICdTZWxlY3RzIHRoZSBoZXVyaXN0aWMgdXNl ZCBieSBHT08gdG8gY29tcGFyZSBqb2luIGNhbmRpZGF0ZXMuJywKKyAgbG9uZ19kZXNjID0+ICdW YWxpZCB2YWx1ZXMgYXJlIHJlc3VsdF9zaXplLCBjb3N0LCBzZWxlY3Rpdml0eSwgYW5kIGNvbWJp bmVkLicsCisgIGZsYWdzID0+ICdHVUNfRVhQTEFJTicsCisgIHZhcmlhYmxlID0+ICdnb29fZ3Jl ZWR5X3N0cmF0ZWd5JywKKyAgYm9vdF92YWwgPT4gJ0dPT19HUkVFRFlfU1RSQVRFR1lfQ09NQklO RUQnLAorICBvcHRpb25zID0+ICdnb29fZ3JlZWR5X3N0cmF0ZWd5X29wdGlvbnMnLAorfSwKKwog eyBuYW1lID0+ICdnc3NfYWNjZXB0X2RlbGVnYXRpb24nLCB0eXBlID0+ICdib29sJywgY29udGV4 dCA9PiAnUEdDX1NJR0hVUCcsIGdyb3VwID0+ICdDT05OX0FVVEhfQVVUSCcsCiAgIHNob3J0X2Rl c2MgPT4gJ1NldHMgd2hldGhlciBHU1NBUEkgZGVsZWdhdGlvbiBzaG91bGQgYmUgYWNjZXB0ZWQg ZnJvbSB0aGUgY2xpZW50LicsCiAgIHZhcmlhYmxlID0+ICdwZ19nc3NfYWNjZXB0X2RlbGVnYXRp b24nLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCA3NDFmY2U4ZGVkZS4uM2Iw YmE1ZTQwNjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC00MTIsNiArNDEy LDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnX2VudW1fZW50cnkgcGxhbl9jYWNoZV9t b2RlX29wdGlvbnNbXSA9IHsKIAl7TlVMTCwgMCwgZmFsc2V9CiB9OwogCitzdGF0aWMgY29uc3Qg c3RydWN0IGNvbmZpZ19lbnVtX2VudHJ5IGdvb19ncmVlZHlfc3RyYXRlZ3lfb3B0aW9uc1tdID0g eworCXsicmVzdWx0X3NpemUiLCBHT09fR1JFRURZX1NUUkFURUdZX1JFU1VMVF9TSVpFLCBmYWxz ZX0sCisJeyJjb3N0IiwgR09PX0dSRUVEWV9TVFJBVEVHWV9DT1NULCBmYWxzZX0sCisJeyJzZWxl Y3Rpdml0eSIsIEdPT19HUkVFRFlfU1RSQVRFR1lfU0VMRUNUSVZJVFksIGZhbHNlfSwKKwl7ImNv bWJpbmVkIiwgR09PX0dSRUVEWV9TVFJBVEVHWV9DT01CSU5FRCwgZmFsc2V9LAorCXtOVUxMLCAw LCBmYWxzZX0KK307CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnX2VudW1fZW50cnkgcGFz c3dvcmRfZW5jcnlwdGlvbl9vcHRpb25zW10gPSB7CiAJeyJtZDUiLCBQQVNTV09SRF9UWVBFX01E NSwgZmFsc2V9LAogCXsic2NyYW0tc2hhLTI1NiIsIFBBU1NXT1JEX1RZUEVfU0NSQU1fU0hBXzI1 NiwgZmFsc2V9LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggYi9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAppbmRleCA3MzRmYTY4ODg0ZC4uMTc4MmVjMzUw NjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oCisrKyBiL3NyYy9p bmNsdWRlL29wdGltaXplci9wYXRocy5oCkBAIC0xNiwxMSArMTYsMjAgQEAKIAogI2luY2x1ZGUg Im5vZGVzL3BhdGhub2Rlcy5oIgogCit0eXBlZGVmIGVudW0gR29vR3JlZWR5U3RyYXRlZ3kKK3sK KwlHT09fR1JFRURZX1NUUkFURUdZX1JFU1VMVF9TSVpFLAorCUdPT19HUkVFRFlfU1RSQVRFR1lf Q09TVCwKKwlHT09fR1JFRURZX1NUUkFURUdZX1NFTEVDVElWSVRZLAorCUdPT19HUkVFRFlfU1RS QVRFR1lfQ09NQklORUQKK30JCQlHb29HcmVlZHlTdHJhdGVneTsKKwogLyoKICAqIGFsbHBhdGhz LmMKICAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX2dlcW87CiBleHRlcm4gUEdE TExJTVBPUlQgYm9vbCBlbmFibGVfZ29vX2pvaW5fc2VhcmNoOworZXh0ZXJuIFBHRExMSU1QT1JU IGludCBnb29fZ3JlZWR5X3N0cmF0ZWd5OwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxl X2VhZ2VyX2FnZ3JlZ2F0ZTsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgZ2Vxb190aHJlc2hvbGQ7 CiBleHRlcm4gUEdETExJTVBPUlQgZG91YmxlIG1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ29vLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZ29vLm91dAppbmRleCAzYTkzNWU2MjZkYS4uN2Y3NDM2YTk3MWYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ29vLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2dvby5vdXQKQEAgLTQzLDYgKzQzLDEzIEBAIElOU0VSVCBJTlRP IHQxNiBTRUxFQ1QgaSwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBpOwogSU5TRVJUIElO VE8gdDE3IFNFTEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGk7CiBJTlNFUlQg SU5UTyB0MTggU0VMRUNUIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgaTsKIEFOQUxZ WkU7CistLSBWZXJpZnkgY29tYmluZWQgaXMgdGhlIGRlZmF1bHQgc3RyYXRlZ3kuCitTSE9XIGdv b19ncmVlZHlfc3RyYXRlZ3k7CisgZ29vX2dyZWVkeV9zdHJhdGVneSAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIGNvbWJpbmVkCisoMSByb3cpCisKIC0tCiAtLSBCYXNpYyAzLXdheSBqb2luIChz YW5pdHkgY2hlY2spCiAtLQpAQCAtMTc3LDQyICsxODQsNDIgQEAgSk9JTiB0MTIgT04gdDEwLmsg PSB0MTIuawogSk9JTiB0MTMgT04gdDExLmwgPSB0MTMubAogSk9JTiB0MTQgT04gdDEyLm0gPSB0 MTQubQogSk9JTiB0MTUgT04gdDEzLm4gPSB0MTUubjsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBBZ2dyZWdh dGUKICAgIC0+ICBIYXNoIEpvaW4KICAgICAgICAgIEhhc2ggQ29uZDogKHQ3LmggPSB0OS5oKQog ICAgICAgICAgLT4gIEhhc2ggSm9pbgogICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDguaSA9 IHQxMC5pKQogICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgotICAgICAgICAgICAgICAgICAg ICAgSGFzaCBDb25kOiAodDIuYyA9IHQ0LmMpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENv bmQ6ICh0Ni5nID0gdDguZykKICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQzLmIgPSB0MS5iKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDUuZiA9IHQ3LmYpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBIYXNoIENvbmQ6ICh0NS5mID0gdDcuZikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQ0LmUgPSB0Ni5lKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAodDMuZCA9IHQ1LmQpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDMKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyLmMgPSB0NC5jKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo dDEuYiA9IHQzLmIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5hID0gdDIuYSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiB0MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0MgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiB0MworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0NAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0NQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiB0NworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHQ2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYSA9IHQyLmEpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0NwogICAgICAg ICAgICAgICAgICAgICAgLT4gIEhhc2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoIEpvaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQ2 LmcgPSB0OC5nKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDQu ZSA9IHQ2LmUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gdDQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gdDYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDgK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0OAogICAgICAgICAg ICAgICAgLT4gIEhhc2gKICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxMi5tID0gdDE0Lm0pCkBAIC0yNzks MTggKzI4NiwxOCBAQCBXSEVSRSB0MS5hID0gdDIuYQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFnZ3JlZ2F0ZQogICAgLT4gIEhhc2ggSm9pbgotICAg ICAgICAgSGFzaCBDb25kOiAodDEuYSA9IHQzLmIpCisgICAgICAgICBIYXNoIENvbmQ6ICh0MS5h ID0gdDQuYykKICAgICAgICAgIC0+ICBIYXNoIEpvaW4KLSAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHQxLmEgPSB0Mi5hKQotICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHQxCi0gICAg ICAgICAgICAgICAtPiAgSGFzaAotICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHQyCi0gICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYSA9 IHQzLmIpCiAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCi0gICAgICAgICAgICAgICAgICAg ICBIYXNoIENvbmQ6ICh0My5iID0gdDQuYykKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiB0MworICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYSA9IHQyLmEp CisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdDEKICAgICAgICAgICAgICAg ICAgICAgIC0+ICBIYXNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gdDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0MgorICAg ICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biB0MworICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0 NAogKDE0IHJvd3MpCiAKIC0tCkBAIC02MDEsMzAgKzYwOCwzMCBAQCBKT0lOIGNoYWluMWMgT04g Y2hhaW4xYi52YWwgPSBjaGFpbjFjLmlkCiBKT0lOIGNoYWluMmEgT04gY2hhaW4xYS52YWwgPSBj aGFpbjJhLmlkICAtLSBDcm9zcy1jaGFpbiBqb2luCiBKT0lOIGNoYWluMmIgT04gY2hhaW4yYS52 YWwgPSBjaGFpbjJiLmlkCiBKT0lOIGNoYWluMmMgT04gY2hhaW4yYi52YWwgPSBjaGFpbjJjLmlk OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBB Z2dyZWdhdGUKICAgIC0+ICBIYXNoIEpvaW4KLSAgICAgICAgIEhhc2ggQ29uZDogKGNoYWluMWEu dmFsID0gY2hhaW4yYS5pZCkKKyAgICAgICAgIEhhc2ggQ29uZDogKGNoYWluMmIudmFsID0gY2hh aW4yYy5pZCkKICAgICAgICAgIC0+ICBIYXNoIEpvaW4KLSAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKGNoYWluMWIudmFsID0gY2hhaW4xYy5pZCkKLSAgICAgICAgICAgICAgIC0+ICBIYXNoIEpv aW4KLSAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKGNoYWluMWEuaWQgPSBjaGFpbjFi LmlkKQotICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGNoYWluMWEKLSAgICAg ICAgICAgICAgICAgICAgIC0+ICBIYXNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gY2hhaW4xYgotICAgICAgICAgICAgICAgLT4gIEhhc2gKLSAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBjaGFpbjFjCi0gICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAoY2hhaW4yYS52YWwgPSBjaGFpbjJiLmlkKQogICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgotICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo Y2hhaW4yYi52YWwgPSBjaGFpbjJjLmlkKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAoY2hhaW4xYS52YWwgPSBjaGFpbjJhLmlkKQogICAgICAgICAgICAgICAgICAgICAgLT4gIEhh c2ggSm9pbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoY2hhaW4yYS52 YWwgPSBjaGFpbjJiLmlkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIGNoYWluMmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKGNoYWlu MWIuaWQgPSBjaGFpbjFhLmlkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gg Sm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoY2hhaW4x Yi52YWwgPSBjaGFpbjFjLmlkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIGNoYWluMWIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gY2hhaW4xYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBjaGFpbjJiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gY2hhaW4xYQogICAg ICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBjaGFpbjJjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gY2hhaW4yYQorICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBjaGFpbjJiCisgICAgICAgICAtPiAgSGFzaAorICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGNoYWluMmMKICgyMiByb3dzKQogCiAtLQpAQCAtNjk4 LDMgKzcwNSw0IEBAIERFQUxMT0NBVEUgZ29vX3BsYW47CiBERUFMTE9DQVRFIHN0YW5kYXJkX3Bs YW47CiBSRVNFVCBnZXFvX3RocmVzaG9sZDsKIFJFU0VUIGVuYWJsZV9nb29fam9pbl9zZWFyY2g7 CitSRVNFVCBnb29fZ3JlZWR5X3N0cmF0ZWd5OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvZ29vLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dvby5zcWwKaW5kZXggYWIwNDhk OGUzNGUuLjFiMmRmZjFkOTI5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nb28u c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dvby5zcWwKQEAgLTQ3LDYgKzQ3LDkgQEAg SU5TRVJUIElOVE8gdDE4IFNFTEVDVCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIGk7 CiAKIEFOQUxZWkU7CiAKKy0tIFZlcmlmeSBjb21iaW5lZCBpcyB0aGUgZGVmYXVsdCBzdHJhdGVn eS4KK1NIT1cgZ29vX2dyZWVkeV9zdHJhdGVneTsKKwogLS0KIC0tIEJhc2ljIDMtd2F5IGpvaW4g KHNhbml0eSBjaGVjaykKIC0tCkBAIC0zNjIsMyArMzY1LDQgQEAgREVBTExPQ0FURSBzdGFuZGFy ZF9wbGFuOwogCiBSRVNFVCBnZXFvX3RocmVzaG9sZDsKIFJFU0VUIGVuYWJsZV9nb29fam9pbl9z ZWFyY2g7CitSRVNFVCBnb29fZ3JlZWR5X3N0cmF0ZWd5OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --_005_8927A117A7EA41E894B30B4F7767DA8Boutlookcom_--