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 1voJNo-0016YR-0f for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Feb 2026 10:48:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1voJNn-003BpR-12 for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Feb 2026 10:48:15 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1voJNm-003BpJ-2M for pgsql-hackers@lists.postgresql.org; Fri, 06 Feb 2026 10:48:14 +0000 Received: from mail-northcentralusazolkn19013071.outbound.protection.outlook.com ([52.103.20.71] helo=CH4PR04CU002.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1voJNj-00000001LZO-0h98 for pgsql-hackers@postgresql.org; Fri, 06 Feb 2026 10:48:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qzJdf8tzMc+Qe5LOsp44GJcZt0g/URmq22xyTAeUDoxlPbPLs6PZ9LBJ3HWNo5if44TiFUyqvMHGfg9cMbv82jl1HyiQlgwbtpoqEjtB/DfKWWhWtLCWAA02f9KpXedVst6473x2YBDk+djBHrJI7swXK5ZSaB7P322S4KfUw847xdUogWSQL5enj/DYizHnxZwsXomH3goich+AV+uUuMF1zYOChns1DnyAt/Lt3gM28qoDs1T21sMDuWq+JUpPeFZIEavUrsiQkP+5gIlcp2Ih5e3ZpJ51kZomvzTowEyjOZjkX0548JgMfvRjiv6hzmvIk3+JMlKHYnLvr28OVQ== 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=0xi2PV4zA5ISXb52IsUWuWKwLc6M/BxOlw3nwKTwxU0=; b=Wz+JmzDkc9BoS1sOFdRpG7FSr/B0ufzC1Ze8MN9tl08wUeHr+pTyifIxUhli9agHAhoU7Y2K0VXblYJvCtIepjU90ROPgL+ojW71Bh5uk/SFRE6vh9IEKJoirJv+WbFFAIOJ2mHPpKJ4AEoYZ9E1GYF+o761NKBpTDU5VV1yIyvzGM9CdwGaxDti10nPFOw3T2slHwseQIgRAlfvEv1yBju6gMSSh5KZWaA51pDZm0olWaikCzdXY0v45Bovjq+efCASx3andyHuB3pMMN/M+lmCteuXop0uQy3VdfzqcRF19iieRSvLmgcP7wcEbASBvZI5Fv0VL4AqCF06Q3aypg== 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=0xi2PV4zA5ISXb52IsUWuWKwLc6M/BxOlw3nwKTwxU0=; b=ZSUgcsOFWdcwkWsu1T2e+veCEDtB30diHB0+Tfxd3JYuUaPJzlRdnPC+1nbWPLXY9vhz72z0USRojiJ46aIEsK8xNbtAYbqxD4t58RRmosUuHCp6ll+F2x4eMLmF1Zlev6Di1VBIMa00FjjUXAOLA9skv0B/3aM5TjMWzT384KU/5vt0m1n7Ugux9Xn1LyJ3ZXUvfrsYbTylM+4V9zCR0YC77RA9AdVidzHCf9G41ZIpbgAXxPNc6mmFqjTMNpc4W+cwp1jZWREa9m5HGmx3OC0xOvV0dIUrMkUBlHOVXwxM6xcay0XQZonCOXNimMuRxXytqQtpXZ4zSNlOqnVkgA== Received: from PH0PR08MB7020.namprd08.prod.outlook.com (2603:10b6:510:74::15) by SA1PR08MB7103.namprd08.prod.outlook.com (2603:10b6:806:1a2::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.12; Fri, 6 Feb 2026 10:48:03 +0000 Received: from PH0PR08MB7020.namprd08.prod.outlook.com ([fe80::129a:a42a:445c:3273]) by PH0PR08MB7020.namprd08.prod.outlook.com ([fe80::129a:a42a:445c:3273%4]) with mapi id 15.20.9587.013; Fri, 6 Feb 2026 10:48:03 +0000 From: Boris Mironov To: Madyshev Egor , "pgsql-hackers@postgresql.org" Subject: Re: Idea to enhance pgbench by more modes to generate data (multi-TXNs, UNNEST, COPY BINARY) Thread-Topic: Idea to enhance pgbench by more modes to generate data (multi-TXNs, UNNEST, COPY BINARY) Thread-Index: AQHcUwuRPlzLCtdZw06GAdoL15fmHbTwZ0aAgAGpzjGAACRkgIAAEcrGgAQQLgCAAG6d+YAGXmPMgAFzjL6AAV1tS4BpseD8gAEgG5GAAGN+EIAAFWg0gArDj2k= Date: Fri, 6 Feb 2026 10:48:03 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-CA, en-US Content-Language: en-CA X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR08MB7020:EE_|SA1PR08MB7103:EE_ x-ms-office365-filtering-correlation-id: 30d423e8-b35d-4db3-0fba-08de656d33f5 x-ms-exchange-slblob-mailprops: WaIXnCbdHrPy8Gg0T1tV+ubdyTLMpos/ymS10pEI/GzUCke/mR4eYIO6HlyjO8mCRtavDGckgyBdvE38rmLJ595JAnKJmHFniwpx2Da9xLL7EPeoQR22yWzgzzFAI4AXGsqBlx9uH2C0SePTdbEFZHQDZr07RcOopSJhkvKdXpxOxR3VnSxcsWasxWu/bOAnBw67Oe+T/Zor8iKrD/M12hN+nSElYA5VWVpJxim190yPSOD3cUYCMGWVw9CG0qHVRtmvokfYTIbNTMxfMVI96K1NWAwQUADUCNk1gWAdysUC2Zek6MVxbn3P1bBAxSvJLeNdj1OmN4Kk5g6+O1a5lFX9lA3aOix80q3oPhUj8aUXS+O8AUhccaNq2K56vucjjXiqcQb4pjhjQzXnqjZYHptN2EbiWEpTssJqtNHYm7HP+sgItRDOill+Gn+WXjeYg9cob4g7gG17XdS8Bluqvv8fWO5Rkjjw647O2JoKdGFPmySNswn2fPh4NrZfWk2PTKkGyFWNdZSdbTgTtULA9LVMURqE2lpoOQTzmiAX2QNCDEiEqsUToL2ty1cEb0AE9HBIc7twGM1a/fecXUztJS2UOP0a+6FbKzkqrwVzeEkxqHmBLhfq8vM5QlAkOD4Fd/AF96jdYpeZtMdIZ0YTfi6R8Sg0z/FItEW/rrH/C5hGmmzxfZdnuocneUoFID3MFFu5nT5+P5MY70CVdaoefod2ij9WqD31S5o+6z/SIUizlTSeH/mgDoReAFfnIKwrM2nfF5FIxEM= x-microsoft-antispam: BCL:0;ARA:14566002|461199028|6092099016|8060799015|8062599012|15080799012|15030799006|51005399006|12121999013|19110799012|31061999003|3412199025|440099028|102099032|40105399003; x-microsoft-antispam-message-info: =?utf-8?B?OVB3U2hWdmwwVXRrbnoxUjhjWVpaMC90MC9DQzhsTlBDa0puaEhLMFJCK2JZ?= =?utf-8?B?cFprZ3hpckY0a213RFNVYzVybSt1N1JvMkVpSk1zKzc1NEw0Tm9rVG9iVmhu?= =?utf-8?B?SDJKeENScGVQM3BvMXA2dVd1eGpSOWpMSC82VE5rWjZiNHVKMUZ5R2N3N3po?= =?utf-8?B?b0ZWV3JjNlZHUmx0Z2dIc2NkSnAxWDdGNlJoYmdueGV0QmVzblIvTXc5bkJv?= =?utf-8?B?eUxFT0NoTFdoNnJuVVZCSVNaVkxxYm9ETTgzeGdCRGl4bUIzN2dVdURDMnB3?= =?utf-8?B?OWRvc2R2QVpoN0xHdDJjaEZrUzdYUEc2YzF6aHRCV3V4L1kyak04UnpXUjZ0?= =?utf-8?B?UHAwQ2dzS0JtbVdGLzUzUjdsbXd2K3JPMXdPTXJBZUtqNGFtRnJlQm1IQ09P?= =?utf-8?B?cGdlWWJrTGtoSlFYR2FwUkl5RlZFVnpyUGk5WWRmaFZTQURaWkxRWWV5aVRy?= =?utf-8?B?aGU0YVQ0eWJyVExabjhWTzQ1dXRxRVh3WUZycmxJZ1A0d3VnTUxtQzZrb0J0?= =?utf-8?B?bElBVXB1R1h5cFhMZFJHUWdkY1dEWkoxbklVNFRHdlA5cEM2aEk0WHBEYUl6?= =?utf-8?B?VzFIUkNPby9KN0lPZDVCM0Fxd1VlQ05KSXFPcG8yNWJSQlNaS0dqZ0srY1FH?= =?utf-8?B?V2daWUJYWDk5QXk0bUtJMkJrNGpBdmR4MUFHZ3dPeE93U3lTSXQ3OEdKZEdI?= =?utf-8?B?K1VZMHJyM2tMclNNc1RJaHRBQmpWUHpvRUxZNTgwR3pPYjdGOUxQWEN6OGtG?= =?utf-8?B?OEROUW96ams3UlIyNG52eHlEN3RUcWxyeFNmVXBZdFRlUEVBdCtmYysvREhL?= =?utf-8?B?U1FrSjRQVUdDNWIwUXZCYjIyMFNMRkwwbzF1YUFwY0ZIOVQ1QzFPMVBVc2I1?= =?utf-8?B?cVlsdzUyUkoyVjVaUWNhRE01bzJHc1pHYkZNTkRzaGhIaUZOVW9oaHA2d3NR?= =?utf-8?B?eVU1RTBwWUdMNTRBd2FrTW8ra1RJcjQ1YlFOOXF1K2RrdlkwZUZKdnVPZ29q?= =?utf-8?B?MHVmWmI5dE9ZQVJUYk51V24zWDhudXIyanZQNGhUUGtqVE0wb3Zkbk9WRzVp?= =?utf-8?B?bExscFFDTUFDUzBnd1g5c3pScXd6MGNRdHZLQko5bU95WWxQOCtqVWxSS1FX?= =?utf-8?B?VTRTT0NweDljWlZGbzEwNytDTzlLbzNnOS9jbHJtR2tQU0w3blUxS0w1RmE4?= =?utf-8?B?Qk14VE5DYnkydG9CcnVveXBFZW1BQUo0ZVludFk4ekdPM09XV0N4ZnZOU24x?= =?utf-8?B?QTJOdHhHZE9tY3dDeDBuaDd3bzNRdFdSTDR0QVZtOEFmUkJQMjJiSmh4L1JJ?= =?utf-8?B?WERlM0dKL29pMGFST1FJODJoNUYydkdqeW9MYzBGWkZiUEdXRFk2bEhhb2Ew?= =?utf-8?B?MG4rVGxxN2lOWDVqWTR3bzI2UXZlc2E2bmRhZDNQU1g5N1NIME85NTJIZUpO?= =?utf-8?B?eWRRNEpMVHU4QXRiQUFNd3VoOXpVZzJlbFhEMU9XcFVYY1dnWmEydEM5MGtu?= =?utf-8?B?Rk1rZzR6aW1LYUxCa1ZCbWN2Z1dra1hpNmdVbjJrZnV0SytHMi8vdEdqK1pO?= =?utf-8?B?VytVZGFaK2MvOTdPdHhZZ0ZsbjByMStScHIyTktuVGM2TlYzYVBXOEMzb2ds?= =?utf-8?B?TDlHNmRZRUxhM2JEdDZ1U09BSUl2SHc9PQ==?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Si9hbEVIc0FaL2VYMjBXRVpYM1d4emEyTm1PMDF0M09WMDZyTWE1OWU1WW02?= =?utf-8?B?cENFQ1Z6NFBMNWNiWXlNVzBVdmFpckprZ3BwcGFlVnpPRHB6aEI4aFJ0QVJI?= =?utf-8?B?enJhdStxQ1dkQm4ranUyeTk3bGRzTEgvTEJPQlozVFdoTkFZcElOWG0zN2RY?= =?utf-8?B?Q1VKZTZ3NFNFNXc3cUxMQ3lodDJpTThvY1U0N2l1WVlWbmVDdUt4Z2dScDRm?= =?utf-8?B?UmIwa2xaTXZRLzA5Sk1PRlFSWU5BMlVYZThRcnIxNllMQ3p0aUJYRkpMcVB3?= =?utf-8?B?Nm5uWERtSUZTNjZFWmhQUmVWSUNLVTlHZlgxazl3VHM3VzBwdTh5WTJNd0dw?= =?utf-8?B?TkZBc2lBNnhQblVPbVBORTYyTnpXeTJXNFpPYkdJYmlEVEJMLzNrajJlMlhr?= =?utf-8?B?QmQ1SXhLZVJLSW5KcU9OREpqU2R2TS9OUkNWRE8rWmp2dnE3NnQrTUdUa0da?= =?utf-8?B?cmEwVjQ2MkFXN21IbUZCaUJwQXRQWktUS0ZTQXlmTCtCTjFsY2tML1JZQ2VB?= =?utf-8?B?b09KMWl0SXY2MGFneGJMZmkvMnNMMXRhQWw2VEdJNERmWWM0UWpVRzZ0eTEw?= =?utf-8?B?NXVQNVVWZnF1OE8wVkpPekJEdS9RWE4yMllMRjFVeG5WVXkrS2xQMXMwcEJR?= =?utf-8?B?cGJYSS9iSDcwcGg0VHNLdU1oUGxRb0xrL0s1OC9ZRUptR3krM2hYS1dnVDBa?= =?utf-8?B?N1BBSTFuMWFINmNLQjVnT3lrNXVtam4zVkM0ZmtRZlptYWVpRytiRHJqSnZK?= =?utf-8?B?ZFIySWV2YmFYRDI1MXNWTkpBRFViaXBxSWN2Q2VYZEdLUHB4TS83Y0pIZ0dO?= =?utf-8?B?N1FLL29rUENBYzNMQ1BLWTJEUTRDSDNyRmY0aU16WklVTHNYZXBPbzRFOFlz?= =?utf-8?B?WHY3cDluNnUyUzFNTFlDc2lYMndqOXlJQVZpZlNHRG1UbUpndXJKNm5namIy?= =?utf-8?B?ekZFYWo2VFVvNXpJV3cvbFJibTlNMUIyOHgrZkd3R3pNak96UnJVdGxKc0U3?= =?utf-8?B?TU1CRWFodXd4dWdiSFJ5R0FMaS9ib1NuTVhOaDhLU1dGSW9qem9zQmxNeFFM?= =?utf-8?B?YzgrTHNpeEJNS05wY0xSK0JzRUs4dWpZQXRvK2xLVHVUSVVWZ0I1OTZ2YXNK?= =?utf-8?B?emxOK3hrTFYrWk56dEpyVmhteU9CRGUyNUQ4TGJQQmxRZW4rVmVEZlIwTFF3?= =?utf-8?B?NGR0TEp0YnZtbFRhZExIa2xxZTlTU2QvSHk5ZzVvVXFoK3Z1WDRkK3FHZmNK?= =?utf-8?B?bFg5NktQalJxQ0pWS3ZlUXhtcTlOWmpzUFZKZ1NUeVdZT0JmS2d5bi8xejhZ?= =?utf-8?B?RFA3dm9FZWZRNkJFNzhhOE1OQ2hObzd5MXhDcW1kWDRhOTdCSEkxTzMxczdY?= =?utf-8?B?N2ZjZDFqVmI3NTFlOGhwdWh5SDVjWjJPcXhVaEJrODQ5ZW1tald3YzdBclFt?= =?utf-8?B?MndUZTl6T2p2dDRDTFhnYU1SUFFFYWJjYktQZ1BMRWRCUlZVdkkyMU5sTHJ2?= =?utf-8?B?V2x2Qkx0Rll1T1NaMDBialdSRy9DRmRqRW4xMzZjM3pFRE05ZldvYzhsKzRP?= =?utf-8?B?VmdBbG1oWmtoTWlwNE9yYWlRbjQzS0c0WHNMeDZyTVp1UXA1eVMvb0RwZllN?= =?utf-8?B?MU9VdkF3aVNiei9zMkpZWlUzcU9zQVFRUDBycHdaWHV4TEMwbnk5NFNLYlNL?= =?utf-8?B?N0s4VEJoOTV4eE9HTFRVWGl5cUQ5dVZzODExbHk3NWZlbmljL1pxaWplc1pk?= =?utf-8?B?TDl0dWR5WDVQZ3EyUDcxcExqWGVza0cybUdCcEJDcXJrdXl0WndzSFpmdEZk?= =?utf-8?B?eVI3S1RSYTFOVmpWTEJ1bS9wVk5JS2tOdzNLeFpET21adWRwOUNwZFhqUytl?= =?utf-8?B?L2s3M3BWZmt0WHh2MElyZVQ4WTlMUVhzdjkrdyt6SStaN3c9PQ==?= Content-Type: multipart/mixed; boundary="_005_PH0PR08MB70204888D724794BA83EA6E58866APH0PR08MB7020namp_" MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR08MB7020.namprd08.prod.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 30d423e8-b35d-4db3-0fba-08de656d33f5 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Feb 2026 10:48:03.0166 (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: SA1PR08MB7103 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_005_PH0PR08MB70204888D724794BA83EA6E58866APH0PR08MB7020namp_ Content-Type: multipart/alternative; boundary="_000_PH0PR08MB70204888D724794BA83EA6E58866APH0PR08MB7020namp_" --_000_PH0PR08MB70204888D724794BA83EA6E58866APH0PR08MB7020namp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgRWdvciwNCg0KQXMgcGVyIHlvdXIgcmVjb21tZW5kYXRpb25zIEkndmUgdXBkYXRlZCBjb2Rl IGFuZCBhdHRhY2hlZCBpdCBiZWxvdy4NCg0KSSd2ZSBhbHNvIHByZXBhcmVkIEV4Y2VsIHNwcmVh ZHNoZWV0IHdpdGggYmVuY2htYXJrcyBpbiByYXcgZm9ybWF0IGFzIHdlbGwgYXMgcHJvY2Vzc2Vk IGZvciBiZXR0ZXIgcHJlc2VudGF0aW9uLg0KDQpKdXN0IGZvciByZWZlcmVuY2UgSSBwcm92aWRl IG15IHRlc3QgY29uZmlndXJhdGlvbiBhbmQgYmVuY2htYXJrcy4NCg0KU2V0dXANClZNOiA0IENQ VSAyLjIgR0h6IEludGVsIFhlb24gU2lsdmVyIDQxMTQsIDE2IEdCIFJBTQ0Kc2hhcmVkX2J1ZmZl cnM9MkdCDQp3YWxfa2VlcF9zaXplPTMwME1CDQpTYW1lIERCIGZvciBhbGwgdGVzdHMuIE5vIHJl cGxpY2FzLCBqdXN0IHByaW1hcnkgaW5zdGFuY2UNCg0KDQpTY2FsZSAgIHwgICAgMSAgICB8ICAg IDIgICAgfCAgIDEwICAgIHwgICAyMCAgICB8ICAxMDAgICAgfCAgMjAwICAgIHwgMTAwMCAgfCAy MDAwDQpEQiBzaXplIHwgMTc2MSBNQiB8IDE3NzQgTUIgfCAxODc4IE1CIHwgMjAwOSBNQiB8IDMw NTAgTUIgfCA0MzUxIE1CIHwgMTQgR0IgfCAyNyBHQg0KDQpEYXRhIGdlbmVyYXRpb24gbW9kZXMN ClByZWZpeGVzICAgUyAgIFNpbmdsZSB0cmFuc2FjdGlvbiBmb3Igd2hvbGUgZGF0YSBzZXQNCiAg ICAgICAgICAgTSAgIE11bHRpcGxlIHRyYW5zYWN0aW9ucyAoYXMgMSB0cmFuc2FjdGlvbiBwZXIg InNjYWxlIikNCk1vZGVzICAgICAgRyAgIElOU0VSVCAuLiBGUk9NIGdlbmVyYXRlX3Nlcmllcw0K ICAgICAgICAgICBVICAgSU5TRVJUIC4uIEZST00gdW5uZXN0DQogICAgICAgICAgIGcgICBDT1BZ IC4uIEZST00gU1RESU4gVEVYVA0KICAgICAgICAgICBjICAgQ09QWSAuLiBGUk9NIFNURElOIEJJ TkFSWQ0KDQoNCg0KQXZlcmFnZSB0aW1lIG9mIDUgcnVucyB0byBjb21wbGV0ZSBkYXRhIGluaXRp YWxpemF0aW9uDQoNCg0KcGdiZW5jaCAoUG9zdGdyZVNRTCkgMTcuNyAoRGViaWFuIDE3LjctMy5w Z2RnMTIrMSnigILigILigILigILigILigILigILigILigIINCiAgIE1vZGUNClNjYWxlICB8ICAx ICAgfCAgMiAgIHwgIDEwICB8ICAyMCAgfCAgMTAwICB8ICAyMDAgIHwgIDEwMDAgIHwgIDIwMDAN CiAgICBTRyB8IDAuMjIgfCAwLjQ1IHwgMi4xOCB8IDQuMzkgfCAyMy45NCB8IDQ3Ljg5IHwgMjQx Ljk5IHwgNTUwLjkxDQogICAgU2cgfCAwLjE2IHwgMC4yNyB8IDEuNTMgfCAzLjE5IHwgMTYuMDgg fCAzMi45OCB8IDE2MS4zMSB8IDMyNy41Ng0KDQoNCnBnYmVuY2ggKFBvc3RncmVTUUwpIDE5ZGV2 ZWwgLyBjbGllbnQtc2lkZSBnZW5lcmF0aW9uDQogICBNb2RlDQpTY2FsZSAgfCAgMSAgIHwgIDIg ICB8ICAxMCAgfCAgMjAgIHwgIDEwMCAgfCAgMjAwICB8ICAxMDAwICB8ICAyMDAwDQogICAgTWMg fCAwLjE1IHwgMC4yOSB8IDEuMzkgfCAyLjkzIHwgMTQuNzkgfCAzMC43OCB8IDE2MS41MiB8IDMz MC42Mw0KICAgIFNjIHwgMC4xMyB8IDAuMjcgfCAxLjM3IHwgMi42OSB8IDE0LjcxIHwgMjkuOTkg fCAxNTIuODMgfCAyOTguODgNCiAgICBNZyB8IDAuMTcgfCAwLjMwIHwgMS41OCB8IDMuMjYgfCAx NS45MSB8IDMxLjk1IHwgMTYwLjMxIHwgMzI2LjQ2DQogICAgU2cgfCAwLjIwIHwgMC4zOCB8IDEu NjYgfCAzLjM5IHwgMTguNzIgfCAzNi4yNiB8IDE3Ni41NCB8IDM1MS42Ng0KDQpwZ2JlbmNoIChQ b3N0Z3JlU1FMKSAxOWRldmVsIC8gc2VydmVyLXNpZGUgZ2VuZXJhdGlvbg0KICAgTW9kZQ0KU2Nh bGUgIHwgIDEgICB8ICAyICAgfCAgMTAgIHwgIDIwICB8ICAxMDAgIHwgIDIwMCAgfCAgMTAwMCAg fCAgMjAwMA0KICAgIE1VIHwgMC4yMiB8IDAuNDcgfCAyLjM1IHwgNC43MSB8IDI0LjgwIHwgNTMu MTkgfCAyNjEuNDQgfCA1MzYuMDUNCiAgICBTVSB8IDAuMjIgfCAwLjQ0IHwgMi4zNSB8IDQuNzgg fCAyNC40MiB8IDQ5LjE2IHwgMjQ2LjQxIHwgNDk1LjUxDQogICAgTUcgfCAwLjIyIHwgMC40NSB8 IDIuMjkgfCA0LjQ0IHwgMjQuMDMgfCA1MC4yMSB8IDI1Ni41NCB8IDU0NC4xNw0KICAgIFNHIHwg MC4yMyB8IDAuNDMgfCAyLjM1IHwgNS4wNCB8IDI3Ljc0IHwgNTIuNzIgfCAyNTAuMjcgfCA0OTIu NzcNCg0KQmVzdCByZWdhcmRzLA0KQm9yaXMNCg== --_000_PH0PR08MB70204888D724794BA83EA6E58866APH0PR08MB7020namp_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgc3R5bGU9 ImRpc3BsYXk6bm9uZTsiPiBQIHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO30gPC9zdHls ZT4NCjwvaGVhZD4NCjxib2R5IGRpcj0ibHRyIj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBD YWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFwdDsgY29sb3I6IHJn YigwLCAwLCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+DQpIaSBFZ29yLDwvZGl2Pg0KPGRp diBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9u dC1zaXplOiAxMXB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyIgY2xhc3M9ImVsZW1lbnRUb1Byb29m Ij4NCjxicj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZl dGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyIg Y2xhc3M9ImVsZW1lbnRUb1Byb29mIj4NCkFzIHBlciB5b3VyIHJlY29tbWVuZGF0aW9ucyBJJ3Zl IHVwZGF0ZWQgY29kZSBhbmQgYXR0YWNoZWQgaXQgYmVsb3cuPC9kaXY+DQo8ZGl2IHN0eWxlPSJm b250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEx cHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiPg0KPGJyPg0K PC9kaXY+DQo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5z LXNlcmlmOyBmb250LXNpemU6IDExcHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IiBjbGFzcz0iZWxl bWVudFRvUHJvb2YiPg0KSSd2ZSBhbHNvIHByZXBhcmVkIEV4Y2VsIHNwcmVhZHNoZWV0IHdpdGgg YmVuY2htYXJrcyBpbiByYXcgZm9ybWF0IGFzIHdlbGwgYXMgcHJvY2Vzc2VkIGZvciBiZXR0ZXIg cHJlc2VudGF0aW9uLjwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhl bHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB0OyBjb2xvcjogcmdiKDAsIDAsIDAp OyIgY2xhc3M9ImVsZW1lbnRUb1Byb29mIj4NCjxicj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9u dC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB0 OyBjb2xvcjogcmdiKDAsIDAsIDApOyIgY2xhc3M9ImVsZW1lbnRUb1Byb29mIj4NCkp1c3QgZm9y IHJlZmVyZW5jZSBJIHByb3ZpZGUgbXkgdGVzdCBjb25maWd1cmF0aW9uIGFuZCBiZW5jaG1hcmtz LjwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fu cy1zZXJpZjsgZm9udC1zaXplOiAxMXB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyIgY2xhc3M9ImVs ZW1lbnRUb1Byb29mIj4NCjxicj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENh bGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB0OyBjb2xvcjogcmdi KDAsIDAsIDApOyIgY2xhc3M9ImVsZW1lbnRUb1Byb29mIj4NClNldHVwPC9kaXY+DQo8ZGl2IHN0 eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNp emU6IDExcHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiPg0K Vk06IDQgQ1BVIDIuMiBHSHogSW50ZWwgWGVvbiBTaWx2ZXIgNDExNCwgMTYgR0IgUkFNPC9kaXY+ DQo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlm OyBmb250LXNpemU6IDExcHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IiBjbGFzcz0iZWxlbWVudFRv UHJvb2YiPg0Kc2hhcmVkX2J1ZmZlcnM9MkdCPC9kaXY+DQo8ZGl2IHN0eWxlPSJmb250LWZhbWls eTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDExcHQ7IGNvbG9y OiByZ2IoMCwgMCwgMCk7IiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiPg0Kd2FsX2tlZXBfc2l6ZT0z MDBNQjwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwg c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyIgY2xhc3M9 ImVsZW1lbnRUb1Byb29mIj4NClNhbWUgREIgZm9yIGFsbCB0ZXN0cy4gTm8gcmVwbGljYXMsIGp1 c3QgcHJpbWFyeSBpbnN0YW5jZTwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGli cmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB0OyBjb2xvcjogcmdiKDAs IDAsIDApOyIgY2xhc3M9ImVsZW1lbnRUb1Byb29mIj4NCjxicj4NCjwvZGl2Pg0KPGRpdiBzdHls ZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXpl OiAxMXB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyIgY2xhc3M9ImVsZW1lbnRUb1Byb29mIj4NCjxi cj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwg c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyIgY2xhc3M9 ImVsZW1lbnRUb1Byb29mIj4NClNjYWxlICZuYnNwOyB8ICZuYnNwOyAmbmJzcDsxICZuYnNwOyAm bmJzcDt8ICZuYnNwOyAmbmJzcDsyICZuYnNwOyAmbmJzcDt8ICZuYnNwOyAxMCAmbmJzcDsgJm5i c3A7fCAmbmJzcDsgMjAgJm5ic3A7ICZuYnNwO3wgJm5ic3A7MTAwICZuYnNwOyAmbmJzcDt8ICZu YnNwOzIwMCAmbmJzcDsgJm5ic3A7fCAxMDAwICZuYnNwO3wgMjAwMDwvZGl2Pg0KPGRpdiBzdHls ZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXpl OiAxMXB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyIgY2xhc3M9ImVsZW1lbnRUb1Byb29mIj4NCkRC IHNpemUgfCAxNzYxIE1CIHwgMTc3NCBNQiB8IDE4NzggTUIgfCAyMDA5IE1CIHwgMzA1MCBNQiB8 IDQzNTEgTUIgfCAxNCBHQiB8IDI3IEdCPC9kaXY+DQo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTog Q2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDExcHQ7IGNvbG9yOiBy Z2IoMCwgMCwgMCk7IiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2 IHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250 LXNpemU6IDExcHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IiBjbGFzcz0iZWxlbWVudFRvUHJvb2Yi Pg0KRGF0YSBnZW5lcmF0aW9uIG1vZGVzPC9kaXY+DQo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTog Q2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDExcHQ7IGNvbG9yOiBy Z2IoMCwgMCwgMCk7IiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiPg0KUHJlZml4ZXMgJm5ic3A7IFMg Jm5ic3A7IFNpbmdsZSB0cmFuc2FjdGlvbiBmb3Igd2hvbGUgZGF0YSBzZXQ8L2Rpdj4NCjxkaXYg c3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQt c2l6ZTogMTFwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+ DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO00gJm5ic3A7IE11bHRp cGxlIHRyYW5zYWN0aW9ucyAoYXMgMSB0cmFuc2FjdGlvbiBwZXIgJnF1b3Q7c2NhbGUmcXVvdDsp PC9kaXY+DQo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5z LXNlcmlmOyBmb250LXNpemU6IDExcHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IiBjbGFzcz0iZWxl bWVudFRvUHJvb2YiPg0KTW9kZXMgJm5ic3A7ICZuYnNwOyAmbmJzcDtHICZuYnNwOyBJTlNFUlQg Li4gRlJPTSBnZW5lcmF0ZV9zZXJpZXM8L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBD YWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFwdDsgY29sb3I6IHJn YigwLCAwLCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+DQombmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO1UgJm5ic3A7IElOU0VSVCAuLiBGUk9NIHVubmVzdDwvZGl2 Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJp ZjsgZm9udC1zaXplOiAxMXB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyIgY2xhc3M9ImVsZW1lbnRU b1Byb29mIj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ZyAmbmJz cDsgQ09QWSAuLiBGUk9NIFNURElOIFRFWFQ8L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5 OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFwdDsgY29sb3I6 IHJnYigwLCAwLCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+DQombmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2MgJm5ic3A7IENPUFkgLi4gRlJPTSBTVERJTiBCSU5B Ulk8L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNh bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiIGNsYXNzPSJl bGVtZW50VG9Qcm9vZiI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBD YWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFwdDsgY29sb3I6IHJn YigwLCAwLCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYg c3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQt c2l6ZTogMTFwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+ DQo8YnI+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRp Y2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiIGNs YXNzPSJlbGVtZW50VG9Qcm9vZiI+DQpBdmVyYWdlIHRpbWUgb2YgNSBydW5zIHRvIGNvbXBsZXRl IGRhdGEgaW5pdGlhbGl6YXRpb248L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxp YnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFwdDsgY29sb3I6IHJnYigw LCAwLCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgc3R5 bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 ZTogMTFwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+DQo8 YnI+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2Es IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiIGNsYXNz PSJlbGVtZW50VG9Qcm9vZiI+DQpwZ2JlbmNoIChQb3N0Z3JlU1FMKSAxNy43IChEZWJpYW4gMTcu Ny0zLnBnZGcxMisxKeKAguKAguKAguKAguKAguKAguKAguKAguKAgjwvZGl2Pg0KPGRpdiBzdHls ZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXpl OiAxMXB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyIgY2xhc3M9ImVsZW1lbnRUb1Byb29mIj4NCiZu YnNwOyAmbmJzcDtNb2RlPC9kaXY+DQo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwg SGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDExcHQ7IGNvbG9yOiByZ2IoMCwgMCwg MCk7IiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiPg0KU2NhbGUgJm5ic3A7fCAmbmJzcDsxICZuYnNw OyB8ICZuYnNwOzIgJm5ic3A7IHwgJm5ic3A7MTAgJm5ic3A7fCAmbmJzcDsyMCAmbmJzcDt8ICZu YnNwOzEwMCAmbmJzcDt8ICZuYnNwOzIwMCAmbmJzcDt8ICZuYnNwOzEwMDAgJm5ic3A7fCAmbmJz cDsyMDAwPC9kaXY+DQo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNh LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDExcHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IiBjbGFz cz0iZWxlbWVudFRvUHJvb2YiPg0KJm5ic3A7ICZuYnNwOyBTRyB8IDAuMjIgfCAwLjQ1IHwgMi4x OCB8IDQuMzkgfCAyMy45NCB8IDQ3Ljg5IHwgMjQxLjk5IHwgNTUwLjkxPC9kaXY+DQo8ZGl2IHN0 eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNp emU6IDExcHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiPg0K Jm5ic3A7ICZuYnNwOyBTZyB8IDAuMTYgfCAwLjI3IHwgMS41MyB8IDMuMTkgfCAxNi4wOCB8IDMy Ljk4IHwgMTYxLjMxIHwgMzI3LjU2PC9kaXY+DQo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQ2Fs aWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDExcHQ7IGNvbG9yOiByZ2Io MCwgMCwgMCk7IiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IHN0 eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNp emU6IDExcHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiPg0K PGJyPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNh LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDExcHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IiBjbGFz cz0iZWxlbWVudFRvUHJvb2YiPg0KcGdiZW5jaCAoUG9zdGdyZVNRTCkgMTlkZXZlbCAvIGNsaWVu dC1zaWRlIGdlbmVyYXRpb248L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJp LCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFwdDsgY29sb3I6IHJnYigwLCAw LCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+DQombmJzcDsgJm5ic3A7TW9kZTwvZGl2Pg0K PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsg Zm9udC1zaXplOiAxMXB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyIgY2xhc3M9ImVsZW1lbnRUb1By b29mIj4NClNjYWxlICZuYnNwO3wgJm5ic3A7MSAmbmJzcDsgfCAmbmJzcDsyICZuYnNwOyB8ICZu YnNwOzEwICZuYnNwO3wgJm5ic3A7MjAgJm5ic3A7fCAmbmJzcDsxMDAgJm5ic3A7fCAmbmJzcDsy MDAgJm5ic3A7fCAmbmJzcDsxMDAwICZuYnNwO3wgJm5ic3A7MjAwMDwvZGl2Pg0KPGRpdiBzdHls ZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXpl OiAxMXB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyIgY2xhc3M9ImVsZW1lbnRUb1Byb29mIj4NCiZu YnNwOyAmbmJzcDsgTWMgfCAwLjE1IHwgMC4yOSB8IDEuMzkgfCAyLjkzIHwgMTQuNzkgfCAzMC43 OCB8IDE2MS41MiB8IDMzMC42MzwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGli cmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB0OyBjb2xvcjogcmdiKDAs IDAsIDApOyIgY2xhc3M9ImVsZW1lbnRUb1Byb29mIj4NCiZuYnNwOyAmbmJzcDsgU2MgfCAwLjEz IHwgMC4yNyB8IDEuMzcgfCAyLjY5IHwgMTQuNzEgfCAyOS45OSB8IDE1Mi44MyB8IDI5OC44ODwv ZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1z ZXJpZjsgZm9udC1zaXplOiAxMXB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyIgY2xhc3M9ImVsZW1l bnRUb1Byb29mIj4NCiZuYnNwOyAmbmJzcDsgTWcgfCAwLjE3IHwgMC4zMCB8IDEuNTggfCAzLjI2 IHwgMTUuOTEgfCAzMS45NSB8IDE2MC4zMSB8IDMyNi40NjwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9u dC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB0 OyBjb2xvcjogcmdiKDAsIDAsIDApOyIgY2xhc3M9ImVsZW1lbnRUb1Byb29mIj4NCiZuYnNwOyAm bmJzcDsgU2cgfCAwLjIwIHwgMC4zOCB8IDEuNjYgfCAzLjM5IHwgMTguNzIgfCAzNi4yNiB8IDE3 Ni41NCB8IDM1MS42NjwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEhl bHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB0OyBjb2xvcjogcmdiKDAsIDAsIDAp OyIgY2xhc3M9ImVsZW1lbnRUb1Byb29mIj4NCjxicj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9u dC1mYW1pbHk6IENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB0 OyBjb2xvcjogcmdiKDAsIDAsIDApOyIgY2xhc3M9ImVsZW1lbnRUb1Byb29mIj4NCnBnYmVuY2gg KFBvc3RncmVTUUwpIDE5ZGV2ZWwgLyBzZXJ2ZXItc2lkZSBnZW5lcmF0aW9uPC9kaXY+DQo8ZGl2 IHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250 LXNpemU6IDExcHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IiBjbGFzcz0iZWxlbWVudFRvUHJvb2Yi Pg0KJm5ic3A7ICZuYnNwO01vZGU8L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxp YnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFwdDsgY29sb3I6IHJnYigw LCAwLCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+DQpTY2FsZSAmbmJzcDt8ICZuYnNwOzEg Jm5ic3A7IHwgJm5ic3A7MiAmbmJzcDsgfCAmbmJzcDsxMCAmbmJzcDt8ICZuYnNwOzIwICZuYnNw O3wgJm5ic3A7MTAwICZuYnNwO3wgJm5ic3A7MjAwICZuYnNwO3wgJm5ic3A7MTAwMCAmbmJzcDt8 ICZuYnNwOzIwMDA8L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2 ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsi IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+DQombmJzcDsgJm5ic3A7IE1VIHwgMC4yMiB8IDAuNDcg fCAyLjM1IHwgNC43MSB8IDI0LjgwIHwgNTMuMTkgfCAyNjEuNDQgfCA1MzYuMDU8L2Rpdj4NCjxk aXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZv bnQtc2l6ZTogMTFwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9v ZiI+DQombmJzcDsgJm5ic3A7IFNVIHwgMC4yMiB8IDAuNDQgfCAyLjM1IHwgNC43OCB8IDI0LjQy IHwgNDkuMTYgfCAyNDYuNDEgfCA0OTUuNTE8L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5 OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFwdDsgY29sb3I6 IHJnYigwLCAwLCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+DQombmJzcDsgJm5ic3A7IE1H IHwgMC4yMiB8IDAuNDUgfCAyLjI5IHwgNC40NCB8IDI0LjAzIHwgNTAuMjEgfCAyNTYuNTQgfCA1 NDQuMTc8L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2Es IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiIGNsYXNz PSJlbGVtZW50VG9Qcm9vZiI+DQombmJzcDsgJm5ic3A7IFNHIHwgMC4yMyB8IDAuNDMgfCAyLjM1 IHwgNS4wNCB8IDI3Ljc0IHwgNTIuNzIgfCAyNTAuMjcgfCA0OTIuNzc8L2Rpdj4NCjxkaXYgc3R5 bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 ZTogMTFwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiIGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+DQo8 YnI+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBIZWx2ZXRpY2Es IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KPHNw YW4gc3R5bGU9ImZvbnQtc2l6ZTogMTFwdDsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+PC9kaXY+DQo8 ZGl2IHN0eWxlPSJkaXJlY3Rpb246IGx0cjsgZm9udC1mYW1pbHk6IENhbGlicmksIEhlbHZldGlj YSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpC b3JpczwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPg0K --_000_PH0PR08MB70204888D724794BA83EA6E58866APH0PR08MB7020namp_-- --_005_PH0PR08MB70204888D724794BA83EA6E58866APH0PR08MB7020namp_ Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; name="performance_tests.xlsx" Content-Description: performance_tests.xlsx Content-Disposition: attachment; filename="performance_tests.xlsx"; size=39748; creation-date="Fri, 06 Feb 2026 10:41:04 GMT"; modification-date="Fri, 06 Feb 2026 10:41:44 GMT" Content-Transfer-Encoding: base64 UEsDBBQABgAIAAAAIQA2jh1J5AEAAOQKAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAAC AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADM Vstu2zAQvBfoPwi8FhadFCiKwnIOaXtsAyT9AIZcW4QpkuBuEvvvu6LloCgcWw8D7UXUa2dmZ8XV Lm62jSueIaENvhJX5VwU4HUw1q8r8evh++yzKJCUN8oFD5XYAYqb5ft3i4ddBCw42mMlaqL4RUrU NTQKyxDB85NVSI0ivkxrGZXeqDXI6/n8k9TBE3iaUYshlouvsFJPjopvW769V/JovShu9++1VJVQ MTqrFbFQ+ezNXySzsFpZDSbop4ahS4wJlMEagBpXxmSZMd0DESeGQh7lTOBwGGmXVcmRWRjWNuIH Tv0NhvbJ21l1cT+5HMkaKO5Uoh+q4dzl1smXkDaPIWzK0yBDrckWlY2y/qD7BH9+GWVeri4spM0v Aw/Ucf2f6Pj4j3QQ7zmQ+Ti9JBnmTAGQdg7w0p9hBj3HXKsE5p54N68vLuBP7DM6TFIvrQTZnUz3 vQM6w6tZI6HMy8U4uT1mwH7cufh9uBvsWvIePcf1TC+4kHAEh86B7Yc0wMfp7aOr3Qgf+3BP9XEE xygfp7e/8T724Z7q4wiO/j4qp29r/gVfuKnqA+6p/cAj010KkdtKSDBcwGEEaqNnkYEgkYXXIejY MPHKyCPd5IyhnRkNmCPcMs+oy98AAAD//wMAUEsDBBQABgAIAAAAIQC1VTAj9AAAAEwCAAALAAgC X3JlbHMvLnJlbHMgogQCKKAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAArJJNT8MwDIbvSPyHyPfV3ZAQQkt3QUi7IVR+gEncD7WNoyQb3b8n HBBUGoMDR3+9fvzK2908jerIIfbiNKyLEhQ7I7Z3rYaX+nF1ByomcpZGcazhxBF21fXV9plHSnko dr2PKqu4qKFLyd8jRtPxRLEQzy5XGgkTpRyGFj2ZgVrGTVneYviuAdVCU+2thrC3N6Dqk8+bf9eW pukNP4g5TOzSmRXIc2Jn2a58yGwh9fkaVVNoOWmwYp5yOiJ5X2RswPNEm78T/XwtTpzIUiI0Evgy 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 bWxQSwECLQAUAAYACAAAACEA3VJg5a0JAACVQQAAFAAAAAAAAAAAAAAAAABxdwAAeGwvY2hhcnRz L2NoYXJ0Mi54bWxQSwECLQAUAAYACAAAACEASFLpztkBAAB5AwAAEAAAAAAAAAAAAAAAAABQgQAA ZG9jUHJvcHMvYXBwLnhtbFBLAQItABQABgAIAAAAIQBkq6UtbgIAAJgoAAAnAAAAAAAAAAAAAAAA AF+EAAB4bC9wcmludGVyU2V0dGluZ3MvcHJpbnRlclNldHRpbmdzMy5iaW5QSwECLQAUAAYACAAA ACEAZKulLW4CAACYKAAAJwAAAAAAAAAAAAAAAAAShwAAeGwvcHJpbnRlclNldHRpbmdzL3ByaW50 ZXJTZXR0aW5nczIuYmluUEsBAi0AFAAGAAgAAAAhAImIcO3PAgAAeBEAABAAAAAAAAAAAAAAAAAA xYkAAHhsL2NhbGNDaGFpbi54bWxQSwECLQAUAAYACAAAACEAg/lfF3MBAACpAgAAEQAAAAAAAAAA AAAAAADCjAAAZG9jUHJvcHMvY29yZS54bWxQSwECLQAUAAYACAAAACEAZKulLW4CAACYKAAAJwAA AAAAAAAAAAAAAABsjwAAeGwvcHJpbnRlclNldHRpbmdzL3ByaW50ZXJTZXR0aW5nczEuYmluUEsF BgAAAAAhACEADwkAAB+SAAAAAA== --_005_PH0PR08MB70204888D724794BA83EA6E58866APH0PR08MB7020namp_ Content-Type: application/octet-stream; name="v7-pgbench-faster-modes.patch" Content-Description: v7-pgbench-faster-modes.patch Content-Disposition: attachment; filename="v7-pgbench-faster-modes.patch"; size=83239; creation-date="Fri, 06 Feb 2026 10:41:05 GMT"; modification-date="Fri, 06 Feb 2026 10:41:44 GMT" Content-Transfer-Encoding: base64 RnJvbSBjNzY4ZjM5OWM1NTYyOTVkZTdkNTM4OTU0MTBlNjg2ZDg2YjRiOTYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNv bT4KRGF0ZTogU3VuLCA5IE5vdiAyMDI1IDE5OjM0OjU4ICswNzAwClN1YmplY3Q6IFtQQVRDSCB2 NyAwMS8xOF0gQ29udmVydGluZyBvbmUgaHVnZSB0cmFuc2FjdGlvbiBpbnRvIHNlcmllcyBvZiBv bmUKIHBlciAnc2NhbGUnCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCA2MSArKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0MSBp bnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVu Y2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCBkODc2NGJhNmZl MC4uMjg0YTdjODYwZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysr IGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtMTgxLDYgKzE4MSwxMiBAQCBzdGF0aWMg aW50NjQgZW5kX3RpbWUgPSAwOwkJLyogd2hlbiB0byBzdG9wIGluIG1pY3JvIHNlY29uZHMsIHVu ZGVyIC1UICovCiAgKi8KIHN0YXRpYyBpbnQJc2NhbGUgPSAxOwogCisvKgorICogc2NhbGluZyBm YWN0b3IgYWZ0ZXIgd2hpY2ggd2Ugc3dpdGNoIHRvIG11bHRpcGxlIHRyYW5zYWN0aW9ucyBkdXJp bmcKKyAqIGRhdGEgcG9wdWxhdGlvbiBwaGFzZSBvbiBzZXJ2ZXIgc2lkZQorICovCitzdGF0aWMg aW50NjQJc2luZ2xlX3R4bl9zY2FsZV9saW1pdCA9IDE7CisKIC8qCiAgKiBmaWxsZmFjdG9yLiBm b3IgZXhhbXBsZSwgZmlsbGZhY3RvciA9IDkwIHdpbGwgdXNlIG9ubHkgOTAgcGVyY2VudAogICog c3BhY2UgZHVyaW5nIGluc2VydHMgYW5kIGxlYXZlIDEwIHBlcmNlbnQgZnJlZS4KQEAgLTUyMTMs NiArNTIxOSw3IEBAIHN0YXRpYyB2b2lkCiBpbml0R2VuZXJhdGVEYXRhU2VydmVyU2lkZShQR2Nv bm4gKmNvbikKIHsKIAlQUUV4cEJ1ZmZlckRhdGEgc3FsOworCWludAkJCQljaHVuayA9IChzY2Fs ZSA+PSBzaW5nbGVfdHhuX3NjYWxlX2xpbWl0KSA/IDEgOiBzY2FsZTsKIAogCWZwcmludGYoc3Rk ZXJyLCAiZ2VuZXJhdGluZyBkYXRhIChzZXJ2ZXItc2lkZSkuLi5cbiIpOwogCkBAIC01MjI1LDMw ICs1MjMyLDQ0IEBAIGluaXRHZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQogCS8q IHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCiAJaW5pdFRydW5jYXRlVGFibGVzKGNvbik7 CiAKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCiAJaW5pdFBRRXhwQnVmZmVy KCZzcWwpOwogCi0JcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJICAiaW5zZXJ0IGludG8g cGdiZW5jaF9icmFuY2hlcyhiaWQsYmJhbGFuY2UpICIKLQkJCQkJICAic2VsZWN0IGJpZCwgMCAi Ci0JCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyBiaWQiLCBuYnJhbmNoZXMg KiBzY2FsZSk7Ci0JZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKLQotCXByaW50ZlBR RXhwQnVmZmVyKCZzcWwsCi0JCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQs YmlkLHRiYWxhbmNlKSAiCi0JCQkJCSAgInNlbGVjdCB0aWQsICh0aWQgLSAxKSAvICVkICsgMSwg MCAiCi0JCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyB0aWQiLCBudGVsbGVy cywgbnRlbGxlcnMgKiBzY2FsZSk7Ci0JZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsK LQotCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hf YWNjb3VudHMoYWlkLGJpZCxhYmFsYW5jZSxmaWxsZXIpICIKLQkJCQkJICAic2VsZWN0IGFpZCwg KGFpZCAtIDEpIC8gJWQgKyAxLCAwLCAnJyAiCi0JCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVz KDEsICIgSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCi0JCQkJCSAgbmFjY291bnRzLCAoaW50NjQp IG5hY2NvdW50cyAqIHNjYWxlKTsKLQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwor CWZvciAoaW50IGkgPSAwOyBpIDwgc2NhbGU7IGkgKz0gY2h1bmspIHsKKwkJZXhlY3V0ZVN0YXRl bWVudChjb24sICJiZWdpbiIpOworCisJCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCisJCQkJCQkg ICJpbnNlcnQgaW50byBwZ2JlbmNoX2JyYW5jaGVzKGJpZCxiYmFsYW5jZSkgIgorCQkJCQkJICAi c2VsZWN0IGJpZCArIDEsIDAgIgorCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVk KSBhcyBiaWQiLCBpLCBpICsgY2h1bmspOworCQkJCQkJICAvLyJzZWxlY3QgYmlkLCAwICIKKwkJ CQkJCSAgLy8iZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgJWQpIGFzIGJpZCIsIG5icmFuY2hlcyAq IHNjYWxlKTsKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKKworCQlwcmludGZQ UUV4cEJ1ZmZlcigmc3FsLAorCQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF90ZWxsZXJzKHRp ZCxiaWQsdGJhbGFuY2UpICIKKwkJCQkJCSAgInNlbGVjdCB0aWQgKyAxLCB0aWQgLyAlZCArIDEs IDAgIgorCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyB0aWQiLAorCQkJ CQkJICBudGVsbGVycywgaSAqIG50ZWxsZXJzLCAoaSArIGNodW5rKSAqIG50ZWxsZXJzIC0gMSk7 CisJCQkJCQkgIC8vInNlbGVjdCB0aWQsICh0aWQgLSAxKSAvICVkICsgMSwgMCAiCisJCQkJCQkg IC8vImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyB0aWQiLCBudGVsbGVycywgbnRlbGxl cnMgKiBzY2FsZSk7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJcHJp bnRmUFFFeHBCdWZmZXIoJnNxbCwKKwkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfYWNjb3Vu dHMoYWlkLGJpZCxhYmFsYW5jZSxmaWxsZXIpICIKKwkJCQkJCSAgInNlbGVjdCBhaWQgKyAxLCBh aWQgLyAlZCArIDEsIDAsICcnICIKKwkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCIgSU5U NjRfRk9STUFUICIsICIgSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCisJCQkJCQkgIG5hY2NvdW50 cywgKGludDY0KSBpICogbmFjY291bnRzLCAoaW50NjQpIChpICsgY2h1bmspICogbmFjY291bnRz IC0gMSk7CisJCQkJCQkgIC8vInNlbGVjdCBhaWQsIChhaWQgLSAxKSAvICVkICsgMSwgMCwgJycg IgorCQkJCQkJICAvLyJmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAiIElOVDY0X0ZPUk1BVCAiKSBh cyBhaWQiLAorCQkJCQkJICAvL25hY2NvdW50cywgKGludDY0KSBuYWNjb3VudHMgKiBzY2FsZSk7 CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJZXhlY3V0ZVN0YXRlbWVu dChjb24sICJjb21taXQiKTsKKwl9CiAKIAl0ZXJtUFFFeHBCdWZmZXIoJnNxbCk7Ci0KLQlleGVj dXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwogfQogCiAvKgotLSAKMi40My4wCgpGcm9tIDBl ZGRiMTU2YzE4N2Q4MjljNDM4MWJjOTI4YzUzMTQ3MDU5Mjg4NTIgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRl OiBTdW4sIDkgTm92IDIwMjUgMjA6MTM6MjMgKzA3MDAKU3ViamVjdDogW1BBVENIIHY3IDAyLzE4 XSBHZXR0aW5nIHJpZCBvZmYgbGltaXQgZm9yIHNpbmdsZSB0cmFuc2FjdGlvbiBzaXplCiBkdXJp bmcgZGF0YSBnZW5lcmF0aW9uCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCAxNSAr KysrLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDExIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDI4NGE3Yzg2MGYxLi4yOGI3MmU0Y2YxZiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jCkBAIC0xODEsMTIgKzE4MSw2IEBAIHN0YXRpYyBpbnQ2NCBlbmRfdGltZSA9IDA7CQkv KiB3aGVuIHRvIHN0b3AgaW4gbWljcm8gc2Vjb25kcywgdW5kZXIgLVQgKi8KICAqLwogc3RhdGlj IGludAlzY2FsZSA9IDE7CiAKLS8qCi0gKiBzY2FsaW5nIGZhY3RvciBhZnRlciB3aGljaCB3ZSBz d2l0Y2ggdG8gbXVsdGlwbGUgdHJhbnNhY3Rpb25zIGR1cmluZwotICogZGF0YSBwb3B1bGF0aW9u IHBoYXNlIG9uIHNlcnZlciBzaWRlCi0gKi8KLXN0YXRpYyBpbnQ2NAlzaW5nbGVfdHhuX3NjYWxl X2xpbWl0ID0gMTsKLQogLyoKICAqIGZpbGxmYWN0b3IuIGZvciBleGFtcGxlLCBmaWxsZmFjdG9y ID0gOTAgd2lsbCB1c2Ugb25seSA5MCBwZXJjZW50CiAgKiBzcGFjZSBkdXJpbmcgaW5zZXJ0cyBh bmQgbGVhdmUgMTAgcGVyY2VudCBmcmVlLgpAQCAtNTIxOSw3ICs1MjEzLDYgQEAgc3RhdGljIHZv aWQKIGluaXRHZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQogewogCVBRRXhwQnVm ZmVyRGF0YSBzcWw7Ci0JaW50CQkJCWNodW5rID0gKHNjYWxlID49IHNpbmdsZV90eG5fc2NhbGVf bGltaXQpID8gMSA6IHNjYWxlOwogCiAJZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRhdGEg KHNlcnZlci1zaWRlKS4uLlxuIik7CiAKQEAgLTUyMzYsMTMgKzUyMjksMTMgQEAgaW5pdEdlbmVy YXRlRGF0YVNlcnZlclNpZGUoUEdjb25uICpjb24pCiAKIAlpbml0UFFFeHBCdWZmZXIoJnNxbCk7 CiAKLQlmb3IgKGludCBpID0gMDsgaSA8IHNjYWxlOyBpICs9IGNodW5rKSB7CisJZm9yIChpbnQg aSA9IDA7IGkgPCBzY2FsZTsgaSsrKSB7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4i KTsKIAogCQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAogCQkJCQkJICAiaW5zZXJ0IGludG8gcGdi ZW5jaF9icmFuY2hlcyhiaWQsYmJhbGFuY2UpICIKIAkJCQkJCSAgInNlbGVjdCBiaWQgKyAxLCAw ICIKLQkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCVkLCAlZCkgYXMgYmlkIiwgaSwgaSAr IGNodW5rKTsKKwkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCVkLCAlZCkgYXMgYmlkIiwg aSwgaSArIDEpOwogCQkJCQkJICAvLyJzZWxlY3QgYmlkLCAwICIKIAkJCQkJCSAgLy8iZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSwgJWQpIGFzIGJpZCIsIG5icmFuY2hlcyAqIHNjYWxlKTsKIAkJZXhl Y3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKQEAgLTUyNTEsNyArNTI0NCw3IEBAIGluaXRH ZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQogCQkJCQkJICAiaW5zZXJ0IGludG8g cGdiZW5jaF90ZWxsZXJzKHRpZCxiaWQsdGJhbGFuY2UpICIKIAkJCQkJCSAgInNlbGVjdCB0aWQg KyAxLCB0aWQgLyAlZCArIDEsIDAgIgogCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQs ICVkKSBhcyB0aWQiLAotCQkJCQkJICBudGVsbGVycywgaSAqIG50ZWxsZXJzLCAoaSArIGNodW5r KSAqIG50ZWxsZXJzIC0gMSk7CisJCQkJCQkgIG50ZWxsZXJzLCBpICogbnRlbGxlcnMsIChpICsg MSkgKiBudGVsbGVycyAtIDEpOwogCQkJCQkJICAvLyJzZWxlY3QgdGlkLCAodGlkIC0gMSkgLyAl ZCArIDEsIDAgIgogCQkJCQkJICAvLyJmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAlZCkgYXMgdGlk IiwgbnRlbGxlcnMsIG50ZWxsZXJzICogc2NhbGUpOwogCQlleGVjdXRlU3RhdGVtZW50KGNvbiwg c3FsLmRhdGEpOwpAQCAtNTI2MCw3ICs1MjUzLDcgQEAgaW5pdEdlbmVyYXRlRGF0YVNlcnZlclNp ZGUoUEdjb25uICpjb24pCiAJCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX2FjY291bnRzKGFp ZCxiaWQsYWJhbGFuY2UsZmlsbGVyKSAiCiAJCQkJCQkgICJzZWxlY3QgYWlkICsgMSwgYWlkIC8g JWQgKyAxLCAwLCAnJyAiCiAJCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcygiIElOVDY0X0ZP Uk1BVCAiLCAiIElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAotCQkJCQkJICBuYWNjb3VudHMsIChp bnQ2NCkgaSAqIG5hY2NvdW50cywgKGludDY0KSAoaSArIGNodW5rKSAqIG5hY2NvdW50cyAtIDEp OworCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkgaSAqIG5hY2NvdW50cywgKGludDY0KSAoaSAr IDEpICogbmFjY291bnRzIC0gMSk7CiAJCQkJCQkgIC8vInNlbGVjdCBhaWQsIChhaWQgLSAxKSAv ICVkICsgMSwgMCwgJycgIgogCQkJCQkJICAvLyJmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAiIElO VDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAogCQkJCQkJICAvL25hY2NvdW50cywgKGludDY0KSBuYWNj b3VudHMgKiBzY2FsZSk7Ci0tIAoyLjQzLjAKCkZyb20gYzU2NTljZjQ3NGVjMjczYzA1NzY2OGYz MGE0ZjQzNWZkMDJmMmRhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWly b25vdiA8Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IFN1biwgOSBOb3YgMjAyNSAyMDoz ODozNiArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjcgMDMvMThdIE5vIG5lZWQgdG8ga2VlcCBvbGQg Y29kZSBpbiBjb21tZW50cwoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgNyAtLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCAyOGI3 MmU0Y2YxZi4uOTc4OTVhYTllZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNo LmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNTIzNiw4ICs1MjM2LDYgQEAg aW5pdEdlbmVyYXRlRGF0YVNlcnZlclNpZGUoUEdjb25uICpjb24pCiAJCQkJCQkgICJpbnNlcnQg aW50byBwZ2JlbmNoX2JyYW5jaGVzKGJpZCxiYmFsYW5jZSkgIgogCQkJCQkJICAic2VsZWN0IGJp ZCArIDEsIDAgIgogCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyBiaWQi LCBpLCBpICsgMSk7Ci0JCQkJCQkgIC8vInNlbGVjdCBiaWQsIDAgIgotCQkJCQkJICAvLyJmcm9t IGdlbmVyYXRlX3NlcmllcygxLCAlZCkgYXMgYmlkIiwgbmJyYW5jaGVzICogc2NhbGUpOwogCQll eGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwogCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZz cWwsCkBAIC01MjQ1LDggKzUyNDMsNiBAQCBpbml0R2VuZXJhdGVEYXRhU2VydmVyU2lkZShQR2Nv bm4gKmNvbikKIAkJCQkJCSAgInNlbGVjdCB0aWQgKyAxLCB0aWQgLyAlZCArIDEsIDAgIgogCQkJ CQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyB0aWQiLAogCQkJCQkJICBudGVs bGVycywgaSAqIG50ZWxsZXJzLCAoaSArIDEpICogbnRlbGxlcnMgLSAxKTsKLQkJCQkJCSAgLy8i c2VsZWN0IHRpZCwgKHRpZCAtIDEpIC8gJWQgKyAxLCAwICIKLQkJCQkJCSAgLy8iZnJvbSBnZW5l cmF0ZV9zZXJpZXMoMSwgJWQpIGFzIHRpZCIsIG50ZWxsZXJzLCBudGVsbGVycyAqIHNjYWxlKTsK IAkJZXhlY3V0ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKIAogCQlwcmludGZQUUV4cEJ1ZmZl cigmc3FsLApAQCAtNTI1NCw5ICs1MjUwLDYgQEAgaW5pdEdlbmVyYXRlRGF0YVNlcnZlclNpZGUo UEdjb25uICpjb24pCiAJCQkJCQkgICJzZWxlY3QgYWlkICsgMSwgYWlkIC8gJWQgKyAxLCAwLCAn JyAiCiAJCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcygiIElOVDY0X0ZPUk1BVCAiLCAiIElO VDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAogCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkgaSAqIG5h Y2NvdW50cywgKGludDY0KSAoaSArIDEpICogbmFjY291bnRzIC0gMSk7Ci0JCQkJCQkgIC8vInNl bGVjdCBhaWQsIChhaWQgLSAxKSAvICVkICsgMSwgMCwgJycgIgotCQkJCQkJICAvLyJmcm9tIGdl bmVyYXRlX3NlcmllcygxLCAiIElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAotCQkJCQkJICAvL25h Y2NvdW50cywgKGludDY0KSBuYWNjb3VudHMgKiBzY2FsZSk7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQo Y29uLCBzcWwuZGF0YSk7CiAKIAkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKLS0g CjIuNDMuMAoKRnJvbSBlNDdiNTJkZGYyMzU5M2RhZDkzNzVlZjUzNTZmZDQxZDA2MjFlZGUzIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92 QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAxMCBOb3YgMjAyNSAxOTowNjo0OCArMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjcgMDQvMThdIEFkZGluZyBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24gdmlh IHVubmVzdAoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwgMTk5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTgyIGluc2VydGlv bnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2Jl bmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDk3ODk1YWE5ZWRmLi42NWQ3 N2NkZWZlYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC0xNjEsNyArMTYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg c29ja2V0X3NldAogICogc29tZSBjb25maWd1cmFibGUgcGFyYW1ldGVycyAqLwogCiAjZGVmaW5l IERFRkFVTFRfSU5JVF9TVEVQUyAiZHRndnAiCS8qIGRlZmF1bHQgLUkgc2V0dGluZyAqLwotI2Rl ZmluZSBBTExfSU5JVF9TVEVQUyAiZHRnR3ZwZiIJLyogYWxsIHBvc3NpYmxlIHN0ZXBzICovCisj ZGVmaW5lIEFMTF9JTklUX1NURVBTICJkdGdHaUl2cGYiCS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAq LwogCiAjZGVmaW5lIExPR19TVEVQX1NFQ09ORFMJNQkvKiBzZWNvbmRzIGJldHdlZW4gbG9nIG1l c3NhZ2VzICovCiAjZGVmaW5lIERFRkFVTFRfTlhBQ1RTCTEwCQkvKiBkZWZhdWx0IG54YWN0cyAq LwpAQCAtMTcxLDYgKzE3MSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBzb2NrZXRfc2V0CiAjZGVmaW5l IE1JTl9aSVBGSUFOX1BBUkFNCQkxLjAwMQkvKiBtaW5pbXVtIHBhcmFtZXRlciBmb3IgemlwZmlh biAqLwogI2RlZmluZSBNQVhfWklQRklBTl9QQVJBTQkJMTAwMC4wCS8qIG1heGltdW0gcGFyYW1l dGVyIGZvciB6aXBmaWFuICovCiAKKy8qIG9yaWdpbmFsIHNpbmdsZSB0cmFuc2FjdGlvbiBzZXJ2 ZXItc2lkZSBtZXRob2QgKi8KKyNkZWZpbmUgR0VOX1RZUEVfSU5TRVJUX09SSUdJTkFMCSdHJwkv KiB1c2UgSU5TRVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMgdG8gZ2VuZXJhdGUgZGF0YSAq LworLyogJ29uZSB0cmFuc2FjdGlvbiBwZXIgc2NhbGUnIHNlcnZlci1zaWRlIG1ldGhvZHMgKi8K KyNkZWZpbmUgR0VOX1RZUEVfSU5TRVJUX1NFUklFUwkJJ2knCS8qIHVzZSBJTlNFUlQgLi4gU0VM RUNUIGdlbmVyYXRlX3NlcmllcyB0byBnZW5lcmF0ZSBkYXRhICovCisjZGVmaW5lIEdFTl9UWVBF X0lOU0VSVF9VTk5FU1QgIAknSScJLyogdXNlIElOU0VSVCAuLiBTRUxFQ1QgdW5uZXN0IHRvIGdl bmVyYXRlIGRhdGEgKi8KKwogc3RhdGljIGludAlueGFjdHMgPSAwOwkJCS8qIG51bWJlciBvZiB0 cmFuc2FjdGlvbnMgcGVyIGNsaWVudCAqLwogc3RhdGljIGludAlkdXJhdGlvbiA9IDA7CQkvKiBk dXJhdGlvbiBpbiBzZWNvbmRzICovCiBzdGF0aWMgaW50NjQgZW5kX3RpbWUgPSAwOwkJLyogd2hl biB0byBzdG9wIGluIG1pY3JvIHNlY29uZHMsIHVuZGVyIC1UICovCkBAIC0xODEsNiArMTg3LDEx IEBAIHN0YXRpYyBpbnQ2NCBlbmRfdGltZSA9IDA7CQkvKiB3aGVuIHRvIHN0b3AgaW4gbWljcm8g c2Vjb25kcywgdW5kZXIgLVQgKi8KICAqLwogc3RhdGljIGludAlzY2FsZSA9IDE7CiAKKy8qCisg KgorICovCitzdGF0aWMgY2hhcglkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICc/JzsKKwogLyoKICAq IGZpbGxmYWN0b3IuIGZvciBleGFtcGxlLCBmaWxsZmFjdG9yID0gOTAgd2lsbCB1c2Ugb25seSA5 MCBwZXJjZW50CiAgKiBzcGFjZSBkdXJpbmcgaW5zZXJ0cyBhbmQgbGVhdmUgMTAgcGVyY2VudCBm cmVlLgpAQCAtOTE0LDcgKzkyNSw5IEBAIHVzYWdlKHZvaWQpCiAJCSAgICIgICAgICAgICAgICAg ICAgICAgICAgICAgICBkOiBkcm9wIGFueSBleGlzdGluZyBwZ2JlbmNoIHRhYmxlc1xuIgogCQkg ICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgdDogY3JlYXRlIHRoZSB0YWJsZXMgdXNlZCBi eSB0aGUgc3RhbmRhcmQgcGdiZW5jaCBzY2VuYXJpb1xuIgogCQkgICAiICAgICAgICAgICAgICAg ICAgICAgICAgICAgZzogZ2VuZXJhdGUgZGF0YSwgY2xpZW50LXNpZGVcbiIKLQkJICAgIiAgICAg ICAgICAgICAgICAgICAgICAgICAgIEc6IGdlbmVyYXRlIGRhdGEsIHNlcnZlci1zaWRlXG4iCisJ CSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBHOiBnZW5lcmF0ZSBkYXRhLCBzZXJ2ZXIt c2lkZSBpbiBzaW5nbGUgdHJhbnNhY3Rpb25cbiIKKwkJICAgIiAgICAgICAgICAgICAgICAgICAg ICAgICAgIGk6ICAgc2VydmVyLXNpZGUgKG11bHRpcGxlIFRYTnMpIElOU0VSVCAuLiBTRUxFQ1Qg Z2VuZXJhdGVfc2VyaWVzXG4iCisJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBJOiAg IHNlcnZlci1zaWRlIChtdWx0aXBsZSBUWE5zKSBJTlNFUlQgLi4gU0VMRUNUIHVubmVzdFxuIgog CQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgdjogaW52b2tlIFZBQ1VVTSBvbiB0aGUg c3RhbmRhcmQgdGFibGVzXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBwOiBj cmVhdGUgcHJpbWFyeSBrZXkgaW5kZXhlcyBvbiB0aGUgc3RhbmRhcmQgdGFibGVzXG4iCiAJCSAg ICIgICAgICAgICAgICAgICAgICAgICAgICAgICBmOiBjcmVhdGUgZm9yZWlnbiBrZXlzIGJldHdl ZW4gdGhlIHN0YW5kYXJkIHRhYmxlc1xuIgpAQCAtNTIwMywxOCArNTIxNiwxNiBAQCBpbml0R2Vu ZXJhdGVEYXRhQ2xpZW50U2lkZShQR2Nvbm4gKmNvbikKIH0KIAogLyoKLSAqIEZpbGwgdGhlIHN0 YW5kYXJkIHRhYmxlcyB3aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgb24gdGhlIHNlcnZlcgotICoK LSAqIEFzIGFscmVhZHkgdGhlIGNhc2Ugd2l0aCB0aGUgY2xpZW50LXNpZGUgZGF0YSBnZW5lcmF0 aW9uLCB0aGUgZmlsbGVyCi0gKiBjb2x1bW4gZGVmYXVsdHMgdG8gTlVMTCBpbiBwZ2JlbmNoX2Jy YW5jaGVzIGFuZCBwZ2JlbmNoX3RlbGxlcnMsCi0gKiBhbmQgaXMgYSBibGFuay1wYWRkZWQgc3Ry aW5nIGluIHBnYmVuY2hfYWNjb3VudHMuCisgKiBHZW5lcmF0aW5nIGRhdGEgdmlhIElOU0VSVCAu LiBTRUxFQ1QgLi4gRlJPTSBnZW5lcmF0ZV9zZXJpZXMKKyAqIHdob2xlIGRhdGFzZXQgaW4gc2lu Z2xlIHRyYW5zYWN0aW9uCiAgKi8KIHN0YXRpYyB2b2lkCi1pbml0R2VuZXJhdGVEYXRhU2VydmVy U2lkZShQR2Nvbm4gKmNvbikKK2dlbmVyYXRlRGF0YUluc2VydFNpbmdsZVRYTihQR2Nvbm4gKmNv bikKIHsKIAlQUUV4cEJ1ZmZlckRhdGEgc3FsOwogCi0JZnByaW50ZihzdGRlcnIsICJnZW5lcmF0 aW5nIGRhdGEgKHNlcnZlci1zaWRlKS4uLlxuIik7CisJZnByaW50ZihzdGRlcnIsICJ2aWEgSU5T RVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMuLi4gaW4gc2luZ2xlIFRYTlxuIik7CisKIAog CS8qCiAJICogd2UgZG8gYWxsIG9mIHRoaXMgaW4gb25lIHRyYW5zYWN0aW9uIHRvIGVuYWJsZSB0 aGUgYmFja2VuZCdzCkBAIC01MjI1LDMxICs1MjM2LDEzNiBAQCBpbml0R2VuZXJhdGVEYXRhU2Vy dmVyU2lkZShQR2Nvbm4gKmNvbikKIAkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLwog CWluaXRUcnVuY2F0ZVRhYmxlcyhjb24pOwogCisJaW5pdFBRRXhwQnVmZmVyKCZzcWwpOworCisJ cHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKKwkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9icmFu Y2hlcyhiaWQsIGJiYWxhbmNlKSAiCisJCQkJCSAgInNlbGVjdCBiaWQsIDAgIgorCQkJCQkgICJm cm9tIGdlbmVyYXRlX3NlcmllcygxLCAlZCkiLCBzY2FsZSAqIG5icmFuY2hlcyk7CisJZXhlY3V0 ZVN0YXRlbWVudChjb24sIHNxbC5kYXRhKTsKKworCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCisJ CQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQsIGJpZCwgdGJhbGFuY2UpICIK KwkJCQkJICAic2VsZWN0IHRpZCArIDEsIHRpZCAvICVkICsgMSwgMCAiCisJCQkJCSAgImZyb20g Z2VuZXJhdGVfc2VyaWVzKDAsICVkKSBhcyB0aWQiLAorCQkJCQkgIG50ZWxsZXJzLCAoc2NhbGUg KiBudGVsbGVycykgLSAxKTsKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOworCisJ cHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKKwkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9hY2Nv dW50cyhhaWQsIGJpZCwgYWJhbGFuY2UsICIKKwkJCQkJCQkJICAgImZpbGxlcikgIgorCQkJCQkg ICJzZWxlY3QgYWlkICsgMSwgYWlkIC8gJWQgKyAxLCAwLCAnJyAiCisJCQkJCSAgImZyb20gZ2Vu ZXJhdGVfc2VyaWVzKDAsICIgSU5UNjRfRk9STUFUICIpIGFzIGFpZCIsCisJCQkJCSAgbmFjY291 bnRzLCAoaW50NjQpIChzY2FsZSAqIG5hY2NvdW50cykgLSAxKTsKKwlleGVjdXRlU3RhdGVtZW50 KGNvbiwgc3FsLmRhdGEpOworCiAJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKIAor CXRlcm1QUUV4cEJ1ZmZlcigmc3FsKTsKK30KKworCisvKgorICogR2VuZXJhdGluZyBkYXRhIHZp YSBJTlNFUlQgLi4gU0VMRUNUIC4uIEZST00gZ2VuZXJhdGVfc2VyaWVzCisgKiBPbmUgdHJhbnNh Y3Rpb24gcGVyICdzY2FsZScKKyAqLworc3RhdGljIHZvaWQKK2dlbmVyYXRlRGF0YUluc2VydFNl cmllcyhQR2Nvbm4gKmNvbikKK3sKKwlQUUV4cEJ1ZmZlckRhdGEgc3FsOworCisJZnByaW50Zihz dGRlcnIsICJ2aWEgSU5TRVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMuLi4gaW4gbXVsdGlw bGUgVFhOKHMpXG4iKTsKKwogCWluaXRQUUV4cEJ1ZmZlcigmc3FsKTsKIAotCWZvciAoaW50IGkg PSAwOyBpIDwgc2NhbGU7IGkrKykgeworCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsK KworCS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCisJaW5pdFRydW5jYXRlVGFibGVz KGNvbik7CisKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCisJZm9yIChpbnQg aSA9IDA7IGkgPCBzY2FsZTsgaSsrKQorCXsKIAkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdp biIpOwogCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZzcWwsCi0JCQkJCQkgICJpbnNlcnQgaW50byBw Z2JlbmNoX2JyYW5jaGVzKGJpZCxiYmFsYW5jZSkgIgotCQkJCQkJICAic2VsZWN0IGJpZCArIDEs IDAgIgotCQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoJWQsICVkKSBhcyBiaWQiLCBpLCBp ICsgMSk7CisJCQkJCQkgICJpbnNlcnQgaW50byBwZ2JlbmNoX2JyYW5jaGVzKGJpZCwgYmJhbGFu Y2UpICIKKwkJCQkJCSAgInZhbHVlcyglZCwgMCkiLCBpICsgMSk7CiAJCWV4ZWN1dGVTdGF0ZW1l bnQoY29uLCBzcWwuZGF0YSk7CiAKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJCSAg Imluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQsYmlkLHRiYWxhbmNlKSAiCisJCQkJCQkg ICJpbnNlcnQgaW50byBwZ2JlbmNoX3RlbGxlcnModGlkLCBiaWQsIHRiYWxhbmNlKSAiCiAJCQkJ CQkgICJzZWxlY3QgdGlkICsgMSwgdGlkIC8gJWQgKyAxLCAwICIKIAkJCQkJCSAgImZyb20gZ2Vu ZXJhdGVfc2VyaWVzKCVkLCAlZCkgYXMgdGlkIiwKIAkJCQkJCSAgbnRlbGxlcnMsIGkgKiBudGVs bGVycywgKGkgKyAxKSAqIG50ZWxsZXJzIC0gMSk7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBz cWwuZGF0YSk7CiAKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJCSAgImluc2VydCBp bnRvIHBnYmVuY2hfYWNjb3VudHMoYWlkLGJpZCxhYmFsYW5jZSxmaWxsZXIpICIKKwkJCQkJCSAg Imluc2VydCBpbnRvIHBnYmVuY2hfYWNjb3VudHMoYWlkLCBiaWQsIGFiYWxhbmNlLCAiCisJCQkJ CQkJCQkgICAiZmlsbGVyKSAiCiAJCQkJCQkgICJzZWxlY3QgYWlkICsgMSwgYWlkIC8gJWQgKyAx LCAwLCAnJyAiCi0JCQkJCQkgICJmcm9tIGdlbmVyYXRlX3NlcmllcygiIElOVDY0X0ZPUk1BVCAi LCAiIElOVDY0X0ZPUk1BVCAiKSBhcyBhaWQiLAotCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkg aSAqIG5hY2NvdW50cywgKGludDY0KSAoaSArIDEpICogbmFjY291bnRzIC0gMSk7CisJCQkJCQkg ICJmcm9tIGdlbmVyYXRlX3NlcmllcygiIElOVDY0X0ZPUk1BVCAiLCAiCisJCQkJCQkJCUlOVDY0 X0ZPUk1BVCAiKSBhcyBhaWQiLAorCQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkgaSAqIG5hY2Nv dW50cywKKwkJCQkJCSAgKGludDY0KSAoaSArIDEpICogbmFjY291bnRzIC0gMSk7CisJCWV4ZWN1 dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJj b21taXQiKTsKKwl9CisKKwl0ZXJtUFFFeHBCdWZmZXIoJnNxbCk7Cit9CisKKy8qCisgKiBHZW5l cmF0aW5nIGRhdGEgdmlhIElOU0VSVCAuLiBTRUxFQ1QgLi4gRlJPTSB1bm5lc3QKKyAqIE9uZSB0 cmFuc2FjdGlvbiBwZXIgJ3NjYWxlJworICovCitzdGF0aWMgdm9pZAorZ2VuZXJhdGVEYXRhSW5z ZXJ0VW5uZXN0KFBHY29ubiAqY29uKQoreworCVBRRXhwQnVmZmVyRGF0YSBzcWw7CisKKwlmcHJp bnRmKHN0ZGVyciwgInZpYSBJTlNFUlQgLi4gU0VMRUNUIHVubmVzdC4uLlxuIik7CisKKwlpbml0 UFFFeHBCdWZmZXIoJnNxbCk7CisKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJlZ2luIik7CisK KwkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLworCWluaXRUcnVuY2F0ZVRhYmxlcyhj b24pOworCisJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKworCWZvciAoaW50IHMg PSAwOyBzIDwgc2NhbGU7IHMrKykKKwl7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4i KTsKKworCQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAorCQkJCQkJICAiaW5zZXJ0IGludG8gcGdi ZW5jaF9icmFuY2hlcyhiaWQsYmJhbGFuY2UpICIKKwkJCQkJCSAgInZhbHVlcyglZCwgMCkiLCBz ICsgMSk7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CisKKwkJcHJpbnRmUFFF eHBCdWZmZXIoJnNxbCwKKwkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfdGVsbGVycyh0aWQs IGJpZCwgdGJhbGFuY2UpICIKKwkJCQkJCSAgInNlbGVjdCB1bm5lc3QoYXJyYXlfYWdnKHMuaSBv cmRlciBieSBzLmkpKSBhcyB0aWQsICIKKwkJCQkJCQkJICAiJWQgYXMgYmlkLCAwIGFzIHRiYWxh bmNlICIKKwkJCQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKCVkLCAlZCkgYXMgcyhpKSIsCisJ CQkJCQkgIHMgKyAxLCBzICogbnRlbGxlcnMgKyAxLCAocyArIDEpICogbnRlbGxlcnMpOworCQll eGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOworCisJCXByaW50ZlBRRXhwQnVmZmVyKCZz cWwsCisJCQkJCQkgICJ3aXRoIGRhdGEgYXMgKCIKKwkJCQkJCSAgIiAgIHNlbGVjdCBnZW5lcmF0 ZV9zZXJpZXMoIiBJTlQ2NF9GT1JNQVQgIiwgIgorCQkJCQkJCSAgSU5UNjRfRk9STUFUICIpIGFz IGkpICIKKwkJCQkJCSAgImluc2VydCBpbnRvIHBnYmVuY2hfYWNjb3VudHMoYWlkLCBiaWQsICIK KwkJCQkJCQkJCSAgImFiYWxhbmNlLCBmaWxsZXIpICIKKwkJCQkJCSAgInNlbGVjdCB1bm5lc3Qo YWlkKSwgdW5uZXN0KGJpZCksIDAgYXMgYWJhbGFuY2UsICIKKwkJCQkJCQkJICAiJycgYXMgZmls bGVyICIKKwkJCQkJCSAgImZyb20gKHNlbGVjdCBhcnJheV9hZ2coaSsxKSBhaWQsICIKKwkJCQkJ CQkJCSAgICJhcnJheV9hZ2coaS8lZCArIDEpIGJpZCBmcm9tIGRhdGEpIiwKKwkJCQkJCSAgKGlu dDY0KSBzICogbmFjY291bnRzICsgMSwKKwkJCQkJCSAgKGludDY0KSAocyArIDEpICogbmFjY291 bnRzLCBuYWNjb3VudHMpOwogCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwogCiAJ CWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CkBAIC01MjU4LDYgKzUzNzQsMzIgQEAg aW5pdEdlbmVyYXRlRGF0YVNlcnZlclNpZGUoUEdjb25uICpjb24pCiAJdGVybVBRRXhwQnVmZmVy KCZzcWwpOwogfQogCisvKgorICogRmlsbCB0aGUgc3RhbmRhcmQgdGFibGVzIHdpdGggc29tZSBk YXRhIGdlbmVyYXRlZCBvbiB0aGUgc2VydmVyCisgKgorICogQXMgYWxyZWFkeSB0aGUgY2FzZSB3 aXRoIHRoZSBjbGllbnQtc2lkZSBkYXRhIGdlbmVyYXRpb24sIHRoZSBmaWxsZXIKKyAqIGNvbHVt biBkZWZhdWx0cyB0byBOVUxMIGluIHBnYmVuY2hfYnJhbmNoZXMgYW5kIHBnYmVuY2hfdGVsbGVy cywKKyAqIGFuZCBpcyBhIGJsYW5rLXBhZGRlZCBzdHJpbmcgaW4gcGdiZW5jaF9hY2NvdW50cy4K KyAqLworc3RhdGljIHZvaWQKK2luaXRHZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29u KQoreworCWZwcmludGYoc3RkZXJyLCAiZ2VuZXJhdGluZyBkYXRhIChzZXJ2ZXItc2lkZSkgIik7 CisKKwlzd2l0Y2ggKGRhdGFfZ2VuZXJhdGlvbl90eXBlKQorCXsKKwkJY2FzZSBHRU5fVFlQRV9J TlNFUlRfT1JJR0lOQUw6CisJCQlnZW5lcmF0ZURhdGFJbnNlcnRTaW5nbGVUWE4oY29uKTsKKwkJ CWJyZWFrOworCQljYXNlIEdFTl9UWVBFX0lOU0VSVF9TRVJJRVM6CisJCQlnZW5lcmF0ZURhdGFJ bnNlcnRTZXJpZXMoY29uKTsKKwkJCWJyZWFrOworCQljYXNlIEdFTl9UWVBFX0lOU0VSVF9VTk5F U1Q6CisJCQlnZW5lcmF0ZURhdGFJbnNlcnRVbm5lc3QoY29uKTsKKwkJCWJyZWFrOworCX0KK30K KwogLyoKICAqIEludm9rZSB2YWN1dW0gb24gdGhlIHN0YW5kYXJkIHRhYmxlcwogICovCkBAIC01 MzQxLDYgKzU0ODMsOCBAQCBpbml0Q3JlYXRlRktleXMoUEdjb25uICpjb24pCiBzdGF0aWMgdm9p ZAogY2hlY2tJbml0U3RlcHMoY29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVwcykKIHsKKwljaGFy CWRhdGFfaW5pdF90eXBlID0gMDsKKwogCWlmIChpbml0aWFsaXplX3N0ZXBzWzBdID09ICdcMCcp CiAJCXBnX2ZhdGFsKCJubyBpbml0aWFsaXphdGlvbiBzdGVwcyBzcGVjaWZpZWQiKTsKIApAQCAt NTM1Miw3ICs1NDk2LDI2IEBAIGNoZWNrSW5pdFN0ZXBzKGNvbnN0IGNoYXIgKmluaXRpYWxpemVf c3RlcHMpCiAJCQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJBbGxvd2VkIHN0ZXAgY2hhcmFjdGVycyBh cmU6IFwiIiBBTExfSU5JVF9TVEVQUyAiXCIuIik7CiAJCQlleGl0KDEpOwogCQl9CisKKwkJc3dp dGNoICgqc3RlcCkKKwkJeworCQkJY2FzZSAnRyc6CisJCQkJZGF0YV9pbml0X3R5cGUrKzsKKwkJ CQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICpzdGVwOworCQkJCWJyZWFrOworCQkJY2FzZSAnaSc6 CisJCQkJZGF0YV9pbml0X3R5cGUrKzsKKwkJCQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICpzdGVw OworCQkJCWJyZWFrOworCQkJY2FzZSAnSSc6CisJCQkJZGF0YV9pbml0X3R5cGUrKzsKKwkJCQlk YXRhX2dlbmVyYXRpb25fdHlwZSA9ICpzdGVwOworCQkJCWJyZWFrOworCQl9CiAJfQorCisJaWYg KGRhdGFfaW5pdF90eXBlID4gMSkKKwkJcGdfbG9nX2Vycm9yKCJXQVJOSU5HISBNb3JlIHRoYW4g b25lIHR5cGUgb2Ygc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uIGlzIHJlcXVlc3RlZCIpOwog fQogCiAvKgpAQCAtNTM5NSw2ICs1NTU4LDggQEAgcnVuSW5pdFN0ZXBzKGNvbnN0IGNoYXIgKmlu aXRpYWxpemVfc3RlcHMpCiAJCQkJaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoY29uKTsKIAkJ CQlicmVhazsKIAkJCWNhc2UgJ0cnOgorCQkJY2FzZSAnaSc6CisJCQljYXNlICdJJzoKIAkJCQlv cCA9ICJzZXJ2ZXItc2lkZSBnZW5lcmF0ZSI7CiAJCQkJaW5pdEdlbmVyYXRlRGF0YVNlcnZlclNp ZGUoY29uKTsKIAkJCQlicmVhazsKLS0gCjIuNDMuMAoKRnJvbSA1ZTE4MjdiODg5YjI4M2Y1MDI5 OWNlNmFiMWE3M2Y5ZjU1YTRhODRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3Jp cyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAxMCBOb3YgMjAy NSAyMDowMDo1NiArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjcgMDUvMThdIEZpeGluZyB0eXBvIGlu IHF1ZXJ5CgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCAzICsrLQogMSBmaWxlIGNo YW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDY1 ZDc3Y2RlZmVhLi4wM2UzN2RmNDQzNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVu Y2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC01MjQxLDcgKzUyNDEsOCBA QCBnZW5lcmF0ZURhdGFJbnNlcnRTaW5nbGVUWE4oUEdjb25uICpjb24pCiAJcHJpbnRmUFFFeHBC dWZmZXIoJnNxbCwKIAkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF9icmFuY2hlcyhiaWQsIGJi YWxhbmNlKSAiCiAJCQkJCSAgInNlbGVjdCBiaWQsIDAgIgotCQkJCQkgICJmcm9tIGdlbmVyYXRl X3NlcmllcygxLCAlZCkiLCBzY2FsZSAqIG5icmFuY2hlcyk7CisJCQkJCSAgImZyb20gZ2VuZXJh dGVfc2VyaWVzKDEsICVkKSBhcyBiaWQiLAorCQkJCQkgIHNjYWxlICogbmJyYW5jaGVzKTsKIAll eGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwogCiAJcHJpbnRmUFFFeHBCdWZmZXIoJnNx bCwKLS0gCjIuNDMuMAoKRnJvbSA3Y2E4NjUyMWZkYTY5MjliOGUwZGUzZmM3N2RjYmI4OTg0MDA5 Yzg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5t aXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAxMSBOb3YgMjAyNSAxOTozOTo0NSArMDcwMApT dWJqZWN0OiBbUEFUQ0ggdjcgMDYvMThdIEFkZGluZyBzdXBwb3J0IGZvciBDT1BZIEJJTkFSWSBt b2RlCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCAzOTMgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAzODEgaW5zZXJ0aW9ucygr KSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2gu YyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggMDNlMzdkZjQ0MzQuLjcxYWExZDk0 NzlmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9iaW4v cGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTE2MSw3ICsxNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBzb2Nr ZXRfc2V0CiAgKiBzb21lIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzICovCiAKICNkZWZpbmUgREVG QVVMVF9JTklUX1NURVBTICJkdGd2cCIJLyogZGVmYXVsdCAtSSBzZXR0aW5nICovCi0jZGVmaW5l IEFMTF9JTklUX1NURVBTICJkdGdHaUl2cGYiCS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAqLworI2Rl ZmluZSBBTExfSU5JVF9TVEVQUyAiZHRnQ0dpSXZwZiIJLyogYWxsIHBvc3NpYmxlIHN0ZXBzICov CiAKICNkZWZpbmUgTE9HX1NURVBfU0VDT05EUwk1CS8qIHNlY29uZHMgYmV0d2VlbiBsb2cgbWVz c2FnZXMgKi8KICNkZWZpbmUgREVGQVVMVF9OWEFDVFMJMTAJCS8qIGRlZmF1bHQgbnhhY3RzICov CkBAIC0xNzYsNiArMTc2LDggQEAgdHlwZWRlZiBzdHJ1Y3Qgc29ja2V0X3NldAogLyogJ29uZSB0 cmFuc2FjdGlvbiBwZXIgc2NhbGUnIHNlcnZlci1zaWRlIG1ldGhvZHMgKi8KICNkZWZpbmUgR0VO X1RZUEVfSU5TRVJUX1NFUklFUwkJJ2knCS8qIHVzZSBJTlNFUlQgLi4gU0VMRUNUIGdlbmVyYXRl X3NlcmllcyB0byBnZW5lcmF0ZSBkYXRhICovCiAjZGVmaW5lIEdFTl9UWVBFX0lOU0VSVF9VTk5F U1QgIAknSScJLyogdXNlIElOU0VSVCAuLiBTRUxFQ1QgdW5uZXN0IHRvIGdlbmVyYXRlIGRhdGEg Ki8KKyNkZWZpbmUgR0VOX1RZUEVfQ09QWV9PUklHSU5BTAkJJ2cnIC8qIHVzZSBDT1BZIC4uIEZS T00gU1RESU4gLi4gVEVYVCB0byBnZW5lcmF0ZSBkYXRhICovCisjZGVmaW5lIEdFTl9UWVBFX0NP UFlfQklOQVJZCQknQycgLyogdXNlIENPUFkgLi4gRlJPTSBTVERJTiAuLiBCSU5BUlkgdG8gZ2Vu ZXJhdGUgZGF0YSAqLwogCiBzdGF0aWMgaW50CW54YWN0cyA9IDA7CQkJLyogbnVtYmVyIG9mIHRy YW5zYWN0aW9ucyBwZXIgY2xpZW50ICovCiBzdGF0aWMgaW50CWR1cmF0aW9uID0gMDsJCS8qIGR1 cmF0aW9uIGluIHNlY29uZHMgKi8KQEAgLTE4OCwxMCArMTkwLDE3IEBAIHN0YXRpYyBpbnQ2NCBl bmRfdGltZSA9IDA7CQkvKiB3aGVuIHRvIHN0b3AgaW4gbWljcm8gc2Vjb25kcywgdW5kZXIgLVQg Ki8KIHN0YXRpYyBpbnQJc2NhbGUgPSAxOwogCiAvKgotICoKKyAqIG1vZGUgb2YgZGF0YSBnZW5l cmF0aW9uIHRvIHVzZQogICovCiBzdGF0aWMgY2hhcglkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICc/ JzsKIAorLyoKKyAqIENPUFkgRlJPTSBCSU5BUlkgZXhlY3V0aW9uIGJ1ZmZlcgorICovCisjZGVm aW5lIEJJTl9DT1BZX0JVRl9TSVpFCTEwMjQwMAkJCQkvKiBtYXhpbXVtIGJ1ZmZlciBzaXplIGZv ciBDT1BZIEZST00gQklOQVJZICovCitzdGF0aWMgY2hhcgkJKmJpbl9jb3B5X2J1ZmZlciA9IE5V TEw7CQkvKiBidWZmZXIgZm9yIENPUFkgRlJPTSBCSU5BUlkgKi8KK3N0YXRpYyBpbnQzMl90CSBi aW5fY29weV9idWZmZXJfbGVuZ3RoID0gMDsJLyogY3VycmVudCBidWZmZXIgc2l6ZSAqLworCiAv KgogICogZmlsbGZhY3Rvci4gZm9yIGV4YW1wbGUsIGZpbGxmYWN0b3IgPSA5MCB3aWxsIHVzZSBv bmx5IDkwIHBlcmNlbnQKICAqIHNwYWNlIGR1cmluZyBpbnNlcnRzIGFuZCBsZWF2ZSAxMCBwZXJj ZW50IGZyZWUuCkBAIC04NjEsNyArODcwLDggQEAgc3RhdGljIGludAl3YWl0X29uX3NvY2tldF9z ZXQoc29ja2V0X3NldCAqc2EsIGludDY0IHVzZWNzKTsKIHN0YXRpYyBib29sIHNvY2tldF9oYXNf aW5wdXQoc29ja2V0X3NldCAqc2EsIGludCBmZCwgaW50IGlkeCk7CiAKIC8qIGNhbGxiYWNrIHVz ZWQgdG8gYnVpbGQgcm93cyBmb3IgQ09QWSBkdXJpbmcgZGF0YSBsb2FkaW5nICovCi10eXBlZGVm IHZvaWQgKCppbml0Um93TWV0aG9kKSAoUFFFeHBCdWZmZXJEYXRhICpzcWwsIGludDY0IGN1cnIp OwordHlwZWRlZiB2b2lkICgqaW5pdFJvd01ldGhvZCkJCShQUUV4cEJ1ZmZlckRhdGEgKnNxbCwg aW50NjQgY3Vycik7Cit0eXBlZGVmIHZvaWQgKCppbml0Um93TWV0aG9kQmluKQkoUEdjb25uICpj b24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpOwogCiAvKiBj YWxsYmFjayBmdW5jdGlvbnMgZm9yIG91ciBmbGV4IGxleGVyICovCiBzdGF0aWMgY29uc3QgUHNx bFNjYW5DYWxsYmFja3MgcGdiZW5jaF9jYWxsYmFja3MgPSB7CkBAIC05MjUsNiArOTM1LDcgQEAg dXNhZ2Uodm9pZCkKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ6IGRyb3AgYW55 IGV4aXN0aW5nIHBnYmVuY2ggdGFibGVzXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAg ICAgICB0OiBjcmVhdGUgdGhlIHRhYmxlcyB1c2VkIGJ5IHRoZSBzdGFuZGFyZCBwZ2JlbmNoIHNj ZW5hcmlvXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBnOiBnZW5lcmF0ZSBk YXRhLCBjbGllbnQtc2lkZVxuIgorCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgQzog ICBjbGllbnQtc2lkZSAoc2luZ2xlIFROWCkgQ09QWSAuLiBGUk9NIFNURElOIC4uIEJJTkFSWVxu IgogCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgRzogZ2VuZXJhdGUgZGF0YSwgc2Vy dmVyLXNpZGUgaW4gc2luZ2xlIHRyYW5zYWN0aW9uXG4iCiAJCSAgICIgICAgICAgICAgICAgICAg ICAgICAgICAgICBpOiAgIHNlcnZlci1zaWRlIChtdWx0aXBsZSBUWE5zKSBJTlNFUlQgLi4gU0VM RUNUIGdlbmVyYXRlX3Nlcmllc1xuIgogCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAg STogICBzZXJ2ZXItc2lkZSAobXVsdGlwbGUgVFhOcykgSU5TRVJUIC4uIFNFTEVDVCB1bm5lc3Rc biIKQEAgLTUxOTEsOSArNTIwMiw5IEBAIGluaXRQb3B1bGF0ZVRhYmxlKFBHY29ubiAqY29uLCBj b25zdCBjaGFyICp0YWJsZSwgaW50NjQgYmFzZSwKICAqIGEgYmxhbmstcGFkZGVkIHN0cmluZyBp biBwZ2JlbmNoX2FjY291bnRzLgogICovCiBzdGF0aWMgdm9pZAotaW5pdEdlbmVyYXRlRGF0YUNs aWVudFNpZGUoUEdjb25uICpjb24pCitpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZVRleHQoUEdj b25uICpjb24pCiB7Ci0JZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRhdGEgKGNsaWVudC1z aWRlKS4uLlxuIik7CisJZnByaW50ZihzdGRlcnIsICJURVhUIG1vZGUuLi5cbiIpOwogCiAJLyoK IAkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUgdHJhbnNhY3Rpb24gdG8gZW5hYmxlIHRoZSBi YWNrZW5kJ3MKQEAgLTUyMDksMTIgKzUyMjAsMzczIEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRT aWRlKFBHY29ubiAqY29uKQogCSAqIGFscmVhZHkgZXhpc3QKIAkgKi8KIAlpbml0UG9wdWxhdGVU YWJsZShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgbmJyYW5jaGVzLCBpbml0QnJhbmNoKTsKLQlp bml0UG9wdWxhdGVUYWJsZShjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCBudGVsbGVycywgaW5pdFRl bGxlcik7CisJaW5pdFBvcHVsYXRlVGFibGUoY29uLCAicGdiZW5jaF90ZWxsZXJzIiwgIG50ZWxs ZXJzLCAgaW5pdFRlbGxlcik7CiAJaW5pdFBvcHVsYXRlVGFibGUoY29uLCAicGdiZW5jaF9hY2Nv dW50cyIsIG5hY2NvdW50cywgaW5pdEFjY291bnQpOwogCiAJZXhlY3V0ZVN0YXRlbWVudChjb24s ICJjb21taXQiKTsKIH0KIAorCisvKgorICogRHVtcHMgYmluYXJ5IGJ1ZmZlciB0byBmaWxlIChw dXJlbHkgZm9yIGRlYnVnZ2luZykKKyAqLworc3RhdGljIHZvaWQKK2R1bXBCdWZmZXJUb0ZpbGUo Y2hhciAqZmlsZW5hbWUpCit7CisJRklMRSAqZmlsZV9wdHI7CisJc2l6ZV90IGJ5dGVzX3dyaXR0 ZW47CisKKwlmaWxlX3B0ciA9IGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKKwlpZiAoZmlsZV9wdHIg PT0gTlVMTCkKKwl7CisJCWZwcmludGYoc3RkZXJyLCAiRXJyb3Igb3BlbmluZyBmaWxlICVzXG4i LCBmaWxlbmFtZSk7CisJCXJldHVybjsgLy8gRVhJVF9GQUlMVVJFOworCX0KKworCWJ5dGVzX3dy aXR0ZW4gPSBmd3JpdGUoYmluX2NvcHlfYnVmZmVyLCAxLCBiaW5fY29weV9idWZmZXJfbGVuZ3Ro LCBmaWxlX3B0cik7CisKKwlpZiAoYnl0ZXNfd3JpdHRlbiAhPSBiaW5fY29weV9idWZmZXJfbGVu Z3RoKQorCXsKKwkJZnByaW50ZihzdGRlcnIsICJFcnJvciB3cml0aW5nIHRvIGZpbGUgb3IgaW5j b21wbGV0ZSB3cml0ZVxuIik7CisJCWZjbG9zZShmaWxlX3B0cik7CisJCXJldHVybjsgLy8gRVhJ VF9GQUlMVVJFOworCX0KKworCWZjbG9zZShmaWxlX3B0cik7Cit9CisKKy8qCisgKiBTYXZlIGNo YXIgZGF0YSB0byBidWZmZXIKKyAqLworc3RhdGljIHZvaWQKK2J1ZmZlckNoYXJEYXRhKGNoYXIg KnNyYywgaW50MzJfdCBsZW4pCit7CisJbWVtY3B5KChjaGFyICopIGJpbl9jb3B5X2J1ZmZlciAr IGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGgsIChjaGFyICopIHNyYywgbGVuKTsKKwliaW5fY29weV9i dWZmZXJfbGVuZ3RoICs9IGxlbjsKK30KKworLyoKKyAqIENvbnZlcnRzIHBsYXRmb3JtIGJ5dGUg b3JkZXIgaW50byBuZXR3b3JrIGJ5dGUgb3JkZXIKKyAqIFNQQVJDIGRvZXNuJ3QgcmVxaXJlIHRo YXQKKyAqLworc3RhdGljIHZvaWQKK2J1ZmZlckRhdGEodm9pZCAqc3JjLCBpbnQzMl90IGxlbikK K3sKKyNpZmRlZiBfX3NwYXJjX18KKwlidWZmZXJDaGFyRGF0YShzcmMsIGxlbik7CisjZWxzZQor CWlmIChsZW4gPT0gMSkKKwkJYnVmZmVyQ2hhckRhdGEoc3JjLCBsZW4pOworCWVsc2UKKwkJZm9y IChpbnQzMl90IGkgPSAwOyBpIDwgbGVuOyBpKyspCisJCXsKKwkJCSgoY2hhciAqKSBiaW5fY29w eV9idWZmZXIgKyBiaW5fY29weV9idWZmZXJfbGVuZ3RoKVtpXSA9CisJCQkJKChjaGFyICopIHNy YylbbGVuIC0gaSAtIDFdOworCQl9CisKKwliaW5fY29weV9idWZmZXJfbGVuZ3RoICs9IGxlbjsK KyNlbmRpZgorfQorCisvKgorICogYWRkcyBjb2x1bW4gY291bnRlcgorICovCitzdGF0aWMgdm9p ZAorYWRkQ29sdW1uQ291bnRlcihpbnQxNl90IG4pCit7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAm biwgc2l6ZW9mKG4pKTsKK30KKworLyoKKyAqIGFkZHMgY29sdW1uIHdpdGggTlVMTCB2YWx1ZQor ICovCitzdGF0aWMgdm9pZAorYWRkTnVsbENvbHVtbigpCit7CisJaW50MzJfdCBudWxsID0gLTE7 CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmbnVsbCwgc2l6ZW9mKG51bGwpKTsKK30KKworLyoKKyAq IGFkZHMgY29sdW1uIHdpdGggaW50OCB2YWx1ZQorICovCitzdGF0aWMgdm9pZAorYWRkSW50OENv bHVtbihpbnQ4X3QgdmFsdWUpCit7CisJaW50OF90CWRhdGEgPSB2YWx1ZTsKKwlpbnQzMl90CXNp emUgPSBzaXplb2YoZGF0YSk7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmc2l6ZSwgc2l6ZW9mKHNp emUpKTsKKwlidWZmZXJEYXRhKCh2b2lkICopICZkYXRhLCBzaXplb2YoZGF0YSkpOworfQorCisv KgorICogYWRkcyBjb2x1bW4gd2l0aCBpbnQxNiB2YWx1ZQorICovCitzdGF0aWMgdm9pZAorYWRk SW50MTZDb2x1bW4oaW50MTZfdCB2YWx1ZSkKK3sKKwlpbnQxNl90CWRhdGEgPSB2YWx1ZTsKKwlp bnQzMl90CXNpemUgPSBzaXplb2YoZGF0YSk7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmc2l6ZSwg c2l6ZW9mKHNpemUpKTsKKwlidWZmZXJEYXRhKCh2b2lkICopICZkYXRhLCBzaXplb2YoZGF0YSkp OworfQorCisvKgorICogYWRkcyBjb2x1bW4gd2l0aCBpbnRpMzIgdmFsdWUKKyAqLworc3RhdGlj IHZvaWQKK2FkZEludDMyQ29sdW1uKGludDMyX3QgdmFsdWUpCit7CisJaW50MzJfdAlkYXRhID0g dmFsdWU7CisJaW50MzJfdAlzaXplID0gc2l6ZW9mKGRhdGEpOworCWJ1ZmZlckRhdGEoKHZvaWQg KikgJnNpemUsIHNpemVvZihzaXplKSk7CisJYnVmZmVyRGF0YSgodm9pZCAqKSAmZGF0YSwgc2l6 ZW9mKGRhdGEpKTsKK30KKworLyoKKyAqIGFkZHMgY29sdW1uIHdpdGggaW50aTY0IHZhbHVlCisg Ki8KK3N0YXRpYyB2b2lkCithZGRJbnQ2NENvbHVtbihpbnQ2NF90IHZhbHVlKQoreworCWludDY0 X3QJZGF0YSA9IHZhbHVlOworCWludDMyX3QJc2l6ZSA9IHNpemVvZihkYXRhKTsKKwlidWZmZXJE YXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkpOworCWJ1ZmZlckRhdGEoKHZvaWQgKikg JmRhdGEsIHNpemVvZihkYXRhKSk7Cit9CisKKy8qCisgKiBhZGRzIGNvbHVtbiB3aXRoIGNoYXIg dmFsdWUKKyAqLworc3RhdGljIHZvaWQKK2FkZENoYXJDb2x1bW4oY2hhciAqdmFsdWUpCit7CisJ aW50MzJfdAlzaXplID0gc3RybGVuKHZhbHVlKTsKKwlidWZmZXJEYXRhKCh2b2lkICopICZzaXpl LCBzaXplb2Yoc2l6ZSkpOworCWJ1ZmZlckNoYXJEYXRhKHZhbHVlLCBzaXplKTsKK30KKworLyoK KyAqIFN0YXJ0cyBjb21tdW5pY2F0aW9uIHdpdGggc2VydmVyIGZvciBDT1BZIEZST00gQklOQVJZ IHN0YXRlbWVudAorICovCitzdGF0aWMgdm9pZAorc2VuZEJpbmFyeUNvcHlIZWFkZXIoUEdjb25u ICpjb24pCit7CisJY2hhciBoZWFkZXJbXSA9IHsnUCcsJ0cnLCdDJywnTycsJ1AnLCdZJywnXG4n LCdcMzc3JywnXHInLCdcbicsJ1wwJywKKwkJCQkJICdcMCcsJ1wwJywnXDAnLCdcMCcsCisJCQkJ CSAnXDAnLCdcMCcsJ1wwJywnXDAnIH07CisKKwlQUXB1dENvcHlEYXRhKGNvbiwgaGVhZGVyLCAx OSk7Cit9CisKKy8qCisgKiBGaW5pc2hlcyBjb21tdW5pY2F0aW9uIHdpdGggc2VydmVyIGZvciBD T1BZIEZST00gQklOQVJZIHN0YXRlbWVudAorICovCitzdGF0aWMgdm9pZAorc2VuZEJpbmFyeUNv cHlUcmFpbGVyKFBHY29ubiAqY29uKQoreworCXN0YXRpYyBjaGFyIHRyYWlsZXJbXSA9IHsgMHhG RiwgMHhGRiB9OworCisJUFFwdXRDb3B5RGF0YShjb24sIHRyYWlsZXIsIDIpOworfQorCisvKgor ICogRmxhc2hlcyBjdXJyZW50IGJ1ZmZlciBvdmVyIG5ldHdvcmsgaWYgbmVlZGVkCisgKi8KK3N0 YXRpYyB2b2lkCitmbHVzaEJ1ZmZlcihQR2Nvbm4gKmNvbiwgUEdyZXN1bHQgKnJlcywgaW50MTZf dCByb3dfbGVuKQoreworCWlmIChiaW5fY29weV9idWZmZXJfbGVuZ3RoICsgcm93X2xlbiA+IEJJ Tl9DT1BZX0JVRl9TSVpFKQorCXsKKwkJLyogZmx1c2ggY3VycmVudCBidWZmZXIgKi8KKwkJaWYg KFBRcmVzdWx0U3RhdHVzKHJlcykgPT0gUEdSRVNfQ09QWV9JTikKKwkJCVBRcHV0Q29weURhdGEo Y29uLCAoY2hhciAqKSBiaW5fY29weV9idWZmZXIsIGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGgpOwor CQliaW5fY29weV9idWZmZXJfbGVuZ3RoID0gMDsKKwl9Cit9CisKKy8qCisgKiBTZW5kcyBjdXJy ZW50IGJyYW5jaCByb3cgdG8gYnVmZmVyCisgKi8KK3N0YXRpYyB2b2lkCitpbml0QnJhbmNoQmlu YXJ5KFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFy ZW50KQoreworCS8qCisJICogRWFjaCByb3cgaGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKKwkg KiAtIDIgYnl0ZXMgZm9yIG51bWJlciBvZiBjb2x1bW5zCisJICogLSA0IGJ5dGVzIGFzIGxlbmd0 aCBmb3IgZWFjaCBjb2x1bW4KKwkgKi8KKwlpbnQxNl90CW1heF9yb3dfbGVuID0gIDM1ICsgMiAr IDQqMzsgLyogbWF4IHJvdyBzaXplIGlzIDMyICovCisKKwlmbHVzaEJ1ZmZlcihjb24sIHJlcywg bWF4X3Jvd19sZW4pOworCisJYWRkQ29sdW1uQ291bnRlcigyKTsKKworCWFkZEludDMyQ29sdW1u KGN1cnIgKyAxKTsKKwlhZGRJbnQzMkNvbHVtbigwKTsKK30KKworLyoKKyAqIFNlbmRzIGN1cnJl bnQgdGVsbGVyIHJvdyB0byBidWZmZXIKKyAqLworc3RhdGljIHZvaWQKK2luaXRUZWxsZXJCaW5h cnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJl bnQpCit7CisJLyoKKwkgKiBFYWNoIHJvdyBoYXMgZm9sbG93aW5nIGV4dHJhIGJ5dGVzOgorCSAq IC0gMiBieXRlcyBmb3IgbnVtYmVyIG9mIGNvbHVtbnMKKwkgKiAtIDQgYnl0ZXMgYXMgbGVuZ3Ro IGZvciBlYWNoIGNvbHVtbgorCSAqLworCWludDE2X3QJbWF4X3Jvd19sZW4gPSAgNDAgKyAyICsg NCo0OyAvKiBtYXggcm93IHNpemUgaXMgNDAgKi8KKworCWZsdXNoQnVmZmVyKGNvbiwgcmVzLCBt YXhfcm93X2xlbik7CisKKwlhZGRDb2x1bW5Db3VudGVyKDMpOworCisJYWRkSW50MzJDb2x1bW4o Y3VyciArIDEpOworCWFkZEludDMyQ29sdW1uKGN1cnIgLyBwYXJlbnQgKyAxKTsKKwlhZGRJbnQz MkNvbHVtbigwKTsKK30KKworLyoKKyAqIFNlbmRzIGN1cnJlbnQgYWNjb3VudCByb3cgdG8gYnVm ZmVyCisgKi8KK3N0YXRpYyB2b2lkCitpbml0QWNjb3VudEJpbmFyeShQR2Nvbm4gKmNvbiwgUEdy ZXN1bHQgKnJlcywgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKK3sKKwkvKgorCSAqIEVh Y2ggcm93IGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6CisJICogLSAyIGJ5dGVzIGZvciBudW1i ZXIgb2YgY29sdW1ucworCSAqIC0gNCBieXRlcyBhcyBsZW5ndGggZm9yIGVhY2ggY29sdW1uCisJ ICovCisJaW50MTZfdAltYXhfcm93X2xlbiA9IDI1MCArIDIgKyA0KjQ7IC8qIG1heCByb3cgc2l6 ZSBpcyAyNTAgZm9yIGludDY0ICovCisKKwlmbHVzaEJ1ZmZlcihjb24sIHJlcywgbWF4X3Jvd19s ZW4pOworCisJYWRkQ29sdW1uQ291bnRlcigzKTsKKworCWlmIChzY2FsZSA8PSBTQ0FMRV8zMkJJ VF9USFJFU0hPTEQpCisJCWFkZEludDMyQ29sdW1uKGN1cnIgKyAxKTsKKwllbHNlCisJCWFkZElu dDY0Q29sdW1uKGN1cnIpOworCisJYWRkSW50MzJDb2x1bW4oY3VyciAvIHBhcmVudCArIDEpOwor CWFkZEludDMyQ29sdW1uKDApOworfQorCisvKgorICogVW5pdmVyc2FsIHdyYXBwZXIgZm9yIHNl bmRpbmcgZGF0YSBpbiBiaW5hcnkgZm9ybWF0CisgKi8KK3N0YXRpYyB2b2lkCitpbml0UG9wdWxh dGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCisJ CQkJCQlpbnQ2NF90IGJhc2UsIGluaXRSb3dNZXRob2RCaW4gaW5pdF9yb3cpCit7CisJaW50CQkJ IG47CisJUEdyZXN1bHQJKnJlczsKKwljaGFyCQkgY29weV9zdGF0ZW1lbnRbMjU2XTsKKwljb25z dCBjaGFyCSpjb3B5X3N0YXRlbWVudF9mbXQgPSAiY29weSAlcyAoJXMpIGZyb20gc3RkaW4gKGZv cm1hdCBiaW5hcnkpIjsKKwlpbnQ2NF90CQkgdG90YWwgPSBiYXNlICogc2NhbGU7CisKKwliaW5f Y29weV9idWZmZXJfbGVuZ3RoID0gMDsKKworCS8qIFVzZSBDT1BZIHdpdGggRlJFRVpFIG9uIHYx NCBhbmQgbGF0ZXIgZm9yIGFsbCBvcmRpbmFyeSB0YWJsZXMgKi8KKwlpZiAoKFBRc2VydmVyVmVy c2lvbihjb24pID49IDE0MDAwMCkgJiYKKwkJZ2V0X3RhYmxlX3JlbGtpbmQoY29uLCB0YWJsZSkg PT0gUkVMS0lORF9SRUxBVElPTikKKwkJY29weV9zdGF0ZW1lbnRfZm10ID0gImNvcHkgJXMgKCVz KSBmcm9tIHN0ZGluIHdpdGggKGZvcm1hdCBiaW5hcnksIGZyZWV6ZSBvbikiOworCisJbiA9IHBn X3NucHJpbnRmKGNvcHlfc3RhdGVtZW50LCBzaXplb2YoY29weV9zdGF0ZW1lbnQpLCBjb3B5X3N0 YXRlbWVudF9mbXQsIHRhYmxlLCBjb2x1bW5zKTsKKwlpZiAobiA+PSBzaXplb2YoY29weV9zdGF0 ZW1lbnQpKQorCQlwZ19mYXRhbCgiaW52YWxpZCBidWZmZXIgc2l6ZTogbXVzdCBiZSBhdCBsZWFz dCAlZCBjaGFyYWN0ZXJzIGxvbmciLCBuKTsKKwllbHNlIGlmIChuID09IC0xKQorCQlwZ19mYXRh bCgiaW52YWxpZCBmb3JtYXQgc3RyaW5nIik7CisKKwlyZXMgPSBQUWV4ZWMoY29uLCBjb3B5X3N0 YXRlbWVudCk7CisKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT1BZX0lOKQor CQlwZ19mYXRhbCgidW5leHBlY3RlZCBjb3B5IGluIHJlc3VsdDogJXMiLCBQUWVycm9yTWVzc2Fn ZShjb24pKTsKKwlQUWNsZWFyKHJlcyk7CisKKworCXNlbmRCaW5hcnlDb3B5SGVhZGVyKGNvbik7 CisKKwlmb3IgKGludDY0X3QgaSA9IDA7IGkgPCB0b3RhbDsgaSsrKQorCXsKKwkJaW5pdF9yb3co Y29uLCByZXMsIGksIGJhc2UpOworCX0KKworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpID09IFBH UkVTX0NPUFlfSU4pCisJCVBRcHV0Q29weURhdGEoY29uLCAoY2hhciAqKSBiaW5fY29weV9idWZm ZXIsIGJpbl9jb3B5X2J1ZmZlcl9sZW5ndGgpOworCWVsc2UKKwkJZnByaW50ZihzdGRlcnIsICJV bmV4cGVjdGVkIG1vZGUgJWQgaW5zdGVhZCBvZiAlZFxuIiwgUFFyZXN1bHRTdGF0dXMocmVzKSwg UEdSRVNfQ09QWV9JTik7CisKKwlzZW5kQmluYXJ5Q29weVRyYWlsZXIoY29uKTsKKworCWlmIChQ UXJlc3VsdFN0YXR1cyhyZXMpID09IFBHUkVTX0NPUFlfSU4pCisJeworCQlpZiAoUFFwdXRDb3B5 RW5kKGNvbiwgTlVMTCkgPT0gMSkgLyogc3VjY2VzcyAqLworCQl7CisJCQlyZXMgPSBQUWdldFJl c3VsdChjb24pOworCQkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9P SykKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiAlc1xuIiwgUFFlcnJvck1lc3NhZ2UoY29u KSk7CisJCQlQUWNsZWFyKHJlcyk7CisJCX0KKwkJZWxzZQorCQkJZnByaW50ZihzdGRlcnIsICJF cnJvcjogJXNcbiIsIFBRZXJyb3JNZXNzYWdlKGNvbikpOworCX0KK30KKworLyoKKyAqIFdyYXBw ZXIgZm9yIGJpbmFyeSBkYXRhIGxvYWQKKyAqLworc3RhdGljIHZvaWQKK2luaXRHZW5lcmF0ZURh dGFDbGllbnRTaWRlQmluYXJ5KFBHY29ubiAqY29uKQoreworCisJZnByaW50ZihzdGRlcnIsICJC SU5BUlkgbW9kZS4uLlxuIik7CisKKwliaW5fY29weV9idWZmZXIgPSBwZ19tYWxsb2MoQklOX0NP UFlfQlVGX1NJWkUpOworCWJpbl9jb3B5X2J1ZmZlcl9sZW5ndGggPSAwOworCisJLyoKKwkgKiB3 ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUgdHJhbnNhY3Rpb24gdG8gZW5hYmxlIHRoZSBiYWNrZW5k J3MKKwkgKiBkYXRhLWxvYWRpbmcgb3B0aW1pemF0aW9ucworCSAqLworCWV4ZWN1dGVTdGF0ZW1l bnQoY29uLCAiYmVnaW4iKTsKKworCS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCisJ aW5pdFRydW5jYXRlVGFibGVzKGNvbik7CisKKwlpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24s ICJwZ2JlbmNoX2JyYW5jaGVzIiwgImJpZCwgYmJhbGFuY2UiLAorCQkJCQkJCW5icmFuY2hlcywg aW5pdEJyYW5jaEJpbmFyeSk7CisJaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5j aF90ZWxsZXJzIiwgICJ0aWQsIGJpZCwgdGJhbGFuY2UiLAorCQkJCQkJCW50ZWxsZXJzLCAgaW5p dFRlbGxlckJpbmFyeSk7CisJaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5jaF9h Y2NvdW50cyIsICJhaWQsIGJpZCwgYWJhbGFuY2UiLAorCQkJCQkJCW5hY2NvdW50cywgaW5pdEFj Y291bnRCaW5hcnkpOworCisJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKworCXBn X2ZyZWUoYmluX2NvcHlfYnVmZmVyKTsKK30KKworLyoKKyAqIEZpbGwgdGhlIHN0YW5kYXJkIHRh YmxlcyB3aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgYW5kIHNlbnQgZnJvbSB0aGUgY2xpZW50Lgor ICovCitzdGF0aWMgdm9pZAoraW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoUEdjb25uICpjb24p Cit7CisJZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRhdGEgKGNsaWVudC1zaWRlKSBpbiAi KTsKKworCXN3aXRjaCAoZGF0YV9nZW5lcmF0aW9uX3R5cGUpCisJeworCQljYXNlIEdFTl9UWVBF X0NPUFlfT1JJR0lOQUw6CisJCQlpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZVRleHQoY29uKTsK KwkJCWJyZWFrOworCQljYXNlIEdFTl9UWVBFX0NPUFlfQklOQVJZOgorCQkJaW5pdEdlbmVyYXRl RGF0YUNsaWVudFNpZGVCaW5hcnkoY29uKTsKKwkJCWJyZWFrOworCX0KK30KKwogLyoKICAqIEdl bmVyYXRpbmcgZGF0YSB2aWEgSU5TRVJUIC4uIFNFTEVDVCAuLiBGUk9NIGdlbmVyYXRlX3Nlcmll cwogICogd2hvbGUgZGF0YXNldCBpbiBzaW5nbGUgdHJhbnNhY3Rpb24KQEAgLTU1MDAsMTQgKzU4 NzIsMTAgQEAgY2hlY2tJbml0U3RlcHMoY29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVwcykKIAog CQlzd2l0Y2ggKCpzdGVwKQogCQl7CisJCQljYXNlICdnJzoKKwkJCWNhc2UgJ0MnOgogCQkJY2Fz ZSAnRyc6Ci0JCQkJZGF0YV9pbml0X3R5cGUrKzsKLQkJCQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9 ICpzdGVwOwotCQkJCWJyZWFrOwogCQkJY2FzZSAnaSc6Ci0JCQkJZGF0YV9pbml0X3R5cGUrKzsK LQkJCQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICpzdGVwOwotCQkJCWJyZWFrOwogCQkJY2FzZSAn SSc6CiAJCQkJZGF0YV9pbml0X3R5cGUrKzsKIAkJCQlkYXRhX2dlbmVyYXRpb25fdHlwZSA9ICpz dGVwOwpAQCAtNTU1NSw2ICs1OTIzLDcgQEAgcnVuSW5pdFN0ZXBzKGNvbnN0IGNoYXIgKmluaXRp YWxpemVfc3RlcHMpCiAJCQkJaW5pdENyZWF0ZVRhYmxlcyhjb24pOwogCQkJCWJyZWFrOwogCQkJ Y2FzZSAnZyc6CisJCQljYXNlICdDJzoKIAkJCQlvcCA9ICJjbGllbnQtc2lkZSBnZW5lcmF0ZSI7 CiAJCQkJaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGUoY29uKTsKIAkJCQlicmVhazsKLS0gCjIu NDMuMAoKRnJvbSA0YWEwYWMwNTc2NWVkZjZiNWYwYzEzZTE4YWM2NzcyODdjZTc4MjA2IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGdWppaSBNYXNhbyA8ZnVqaWlAcG9zdGdyZXNxbC5v cmc+CkRhdGU6IEZyaSwgMTQgTm92IDIwMjUgMjI6NDA6MzkgKzA5MDAKU3ViamVjdDogW1BBVENI IHY3IDA3LzE4XSBwZ2JlbmNoOiBGaXggYXNzZXJ0aW9uIGZhaWx1cmUgd2l0aCBtdWx0aXBsZQog XHN5bmNwaXBlbGluZSBpbiBwaXBlbGluZSBtb2RlLgoKUHJldmlvdXNseSwgd2hlbiBwZ2JlbmNo IHJhbiBhIGN1c3RvbSBzY3JpcHQgdGhhdCB0cmlnZ2VyZWQgcmV0cmlhYmxlIGVycm9ycwooZS5n LiwgZGVhZGxvY2tzKSBmb2xsb3dlZCBieSBtdWx0aXBsZSBcc3luY3BpcGVsaW5lIGNvbW1hbmRz IGluIHBpcGVsaW5lIG1vZGUsCnRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGZhaWx1cmUgY291bGQg b2NjdXI6CgogICAgQXNzZXJ0aW9uIGZhaWxlZDogKHJlcyA9PSAoKHZvaWQqKTApKSwgZnVuY3Rp b24gZGlzY2FyZFVudGlsU3luYywgZmlsZSBwZ2JlbmNoLmMsIGxpbmUgMzU5NC4KClRoZSBpc3N1 ZSB3YXMgdGhhdCBkaXNjYXJkVW50aWxTeW5jKCkgYXNzdW1lZCBhIHBpcGVsaW5lIHN5bmMgcmVz dWx0CihQR1JFU19QSVBFTElORV9TWU5DKSB3b3VsZCBhbHdheXMgYmUgZm9sbG93ZWQgYnkgZWl0 aGVyIGFub3RoZXIgc3luYyByZXN1bHQKb3IgTlVMTC4gVGhpcyBhc3N1bXB0aW9uIHdhcyBpbmNv cnJlY3Q6IHdoZW4gbXVsdGlwbGUgc3luYyByZXF1ZXN0cyB3ZXJlIHNlbnQsCmEgc3luYyByZXN1 bHQgY291bGQgaW5zdGVhZCBiZSBmb2xsb3dlZCBieSBhbm90aGVyIHJlc3VsdCB0eXBlLiBJbiBz dWNoIGNhc2VzLApkaXNjYXJkVW50aWxTeW5jKCkgbWlzaGFuZGxlZCB0aGUgcmVzdWx0cywgbGVh ZGluZyB0byB0aGUgYXNzZXJ0aW9uIGZhaWx1cmUuCgpUaGlzIGNvbW1pdCBmaXhlcyB0aGUgaXNz dWUgYnkgbWFraW5nIGRpc2NhcmRVbnRpbFN5bmMoKSBjb3JyZWN0bHkgaGFuZGxlIGNhc2VzCndo ZXJlIGEgcGlwZWxpbmUgc3luYyByZXN1bHQgaXMgZm9sbG93ZWQgYnkgb3RoZXIgcmVzdWx0IHR5 cGVzLiBJdCBub3cgY29udGludWVzCmRpc2NhcmRpbmcgcmVzdWx0cyB1bnRpbCBhbm90aGVyIHBp cGVsaW5lIHN5bmMgZm9sbG93ZWQgYnkgTlVMTCBpcyByZWFjaGVkLgoKQmFja3BhdGNoZWQgdG8g djE3LCB3aGVyZSBzdXBwb3J0IGZvciBcc3luY3BpcGVsaW5lIGNvbW1hbmQgaW4gcGdiZW5jaCB3 YXMKaW50cm9kdWNlZC4KCkF1dGhvcjogWXVnbyBOYWdhdGEgPG5hZ2F0YUBzcmFvc3MuY28uanA+ ClJldmlld2VkLWJ5OiBDaGFvIExpIDxsaWNAaGlnaGdvLmNvbT4KUmV2aWV3ZWQtYnk6IEZ1amlp IE1hc2FvIDxtYXNhby5mdWppaUBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vMjAyNTExMTExMDUwMzcuZjNmYzU1NDYxNmJjMTk4OTFmOTI2YzViQHNyYW9zcy5jby5q cApCYWNrcGF0Y2gtdGhyb3VnaDogMTcKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwg MzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMjggaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggZDg3 NjRiYTZmZTAuLmE0MjUxNzZlY2RjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5j aC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTM1NjMsMTQgKzM1NjMsMTgg QEAgZG9SZXRyeShDU3RhdGUgKnN0LCBwZ190aW1lX3VzZWNfdCAqbm93KQogfQogCiAvKgotICog UmVhZCByZXN1bHRzIGFuZCBkaXNjYXJkIGl0IHVudGlsIGEgc3luYyBwb2ludC4KKyAqIFJlYWQg YW5kIGRpc2NhcmQgcmVzdWx0cyB1bnRpbCB0aGUgbGFzdCBzeW5jIHBvaW50LgogICovCiBzdGF0 aWMgaW50CiBkaXNjYXJkVW50aWxTeW5jKENTdGF0ZSAqc3QpCiB7CiAJYm9vbAkJcmVjZWl2ZWRf c3luYyA9IGZhbHNlOwogCi0JLyogc2VuZCBhIHN5bmMgKi8KKwkvKgorCSAqIFNlbmQgYSBTeW5j IG1lc3NhZ2UgdG8gZW5zdXJlIGF0IGxlYXN0IG9uZSBQR1JFU19QSVBFTElORV9TWU5DIGlzCisJ ICogcmVjZWl2ZWQgYW5kIHRvIGF2b2lkIGFuIGluZmluaXRlIGxvb3AsIHNpbmNlIGFsbCBlYXJs aWVyIG9uZXMgbWF5IGhhdmUKKwkgKiBhbHJlYWR5IGJlZW4gcmVjZWl2ZWQuCisJICovCiAJaWYg KCFQUXBpcGVsaW5lU3luYyhzdC0+Y29uKSkKIAl7CiAJCXBnX2xvZ19lcnJvcigiY2xpZW50ICVk IGFib3J0ZWQ6IGZhaWxlZCB0byBzZW5kIGEgcGlwZWxpbmUgc3luYyIsCkBAIC0zNTc4LDI5ICsz NTgyLDQyIEBAIGRpc2NhcmRVbnRpbFN5bmMoQ1N0YXRlICpzdCkKIAkJcmV0dXJuIDA7CiAJfQog Ci0JLyogcmVjZWl2ZSBQR1JFU19QSVBFTElORV9TWU5DIGFuZCBudWxsIGZvbGxvd2luZyBpdCAq LworCS8qCisJICogQ29udGludWUgcmVhZGluZyByZXN1bHRzIHVudGlsIHRoZSBsYXN0IHN5bmMg cG9pbnQsIGkuZS4sIHVudGlsCisJICogcmVhY2hpbmcgbnVsbCBqdXN0IGFmdGVyIFBHUkVTX1BJ UEVMSU5FX1NZTkMuCisJICovCiAJZm9yICg7OykKIAl7CiAJCVBHcmVzdWx0ICAgKnJlcyA9IFBR Z2V0UmVzdWx0KHN0LT5jb24pOwogCisJCWlmIChQUXN0YXR1cyhzdC0+Y29uKSA9PSBDT05ORUNU SU9OX0JBRCkKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJjbGllbnQgJWQgYWJvcnRlZCB3aGlsZSBy b2xsaW5nIGJhY2sgdGhlIHRyYW5zYWN0aW9uIGFmdGVyIGFuIGVycm9yOyBwZXJoYXBzIHRoZSBi YWNrZW5kIGRpZWQgd2hpbGUgcHJvY2Vzc2luZyIsCisJCQkJCQkgc3QtPmlkKTsKKwkJCVBRY2xl YXIocmVzKTsKKwkJCXJldHVybiAwOworCQl9CisKIAkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykg PT0gUEdSRVNfUElQRUxJTkVfU1lOQykKIAkJCXJlY2VpdmVkX3N5bmMgPSB0cnVlOwotCQllbHNl IGlmIChyZWNlaXZlZF9zeW5jKQorCQllbHNlIGlmIChyZWNlaXZlZF9zeW5jICYmIHJlcyA9PSBO VUxMKQogCQl7Ci0JCQkvKgotCQkJICogUEdSRVNfUElQRUxJTkVfU1lOQyBtdXN0IGJlIGZvbGxv d2VkIGJ5IGFub3RoZXIKLQkJCSAqIFBHUkVTX1BJUEVMSU5FX1NZTkMgb3IgTlVMTDsgb3RoZXJ3 aXNlLCBhc3NlcnQgZmFpbHVyZS4KLQkJCSAqLwotCQkJQXNzZXJ0KHJlcyA9PSBOVUxMKTsKLQog CQkJLyoKIAkJCSAqIFJlc2V0IG9uZ29pbmcgc3luYyBjb3VudCB0byAwIHNpbmNlIGFsbCBQR1JF U19QSVBFTElORV9TWU5DCiAJCQkgKiByZXN1bHRzIGhhdmUgYmVlbiBkaXNjYXJkZWQuCiAJCQkg Ki8KIAkJCXN0LT5udW1fc3luY3MgPSAwOwotCQkJUFFjbGVhcihyZXMpOwogCQkJYnJlYWs7CiAJ CX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogSWYgYSBQR1JFU19QSVBFTElORV9TWU5DIGlz IGZvbGxvd2VkIGJ5IHNvbWV0aGluZyBvdGhlciB0aGFuCisJCQkgKiBQR1JFU19QSVBFTElORV9T WU5DIG9yIE5VTEwsIGFub3RoZXIgUEdSRVNfUElQRUxJTkVfU1lOQyB3aWxsCisJCQkgKiBhcHBl YXIgbGF0ZXIuIFJlc2V0IHJlY2VpdmVkX3N5bmMgdG8gZmFsc2UgdG8gd2FpdCBmb3IgaXQuCisJ CQkgKi8KKwkJCXJlY2VpdmVkX3N5bmMgPSBmYWxzZTsKKwkJfQogCQlQUWNsZWFyKHJlcyk7CiAJ fQogCi0tIAoyLjQzLjAKCkZyb20gOWM0ZjE5MDU1NTk3ZTlhZGIyNWU2NWMyYWE4YmVkZjIwYTA5 ZTEzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWlyb25vdiA8Ym9yaXMu bWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjEgTm92IDIwMjUgMTk6MDU6NTggKzA3MDAK U3ViamVjdDogW1BBVENIIHY3IDA4LzE4XSBTZXR0aW5nIGVtcHR5IHN0cmluZyBhcyBkZWZhdWx0 IHZhbHVlIGluIGZpbGxlcgogY29sdW1uCgotLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMg fCAxNiArKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDk2N2Y2Y2U2OTg0Li4wM2I1ZTVjMjhmMCAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVu Y2gvcGdiZW5jaC5jCkBAIC00OTg1LDI2ICs0OTg1LDI2IEBAIGluaXRDcmVhdGVUYWJsZXMoUEdj b25uICpjb24pCiAJc3RhdGljIGNvbnN0IHN0cnVjdCBkZGxpbmZvIERETHNbXSA9IHsKIAkJewog CQkJInBnYmVuY2hfaGlzdG9yeSIsCi0JCQkidGlkIGludCxiaWQgaW50LGFpZCAgICBpbnQsZGVs dGEgaW50LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigyMikiLAotCQkJInRpZCBpbnQsYmlk IGludCxhaWQgYmlnaW50LGRlbHRhIGludCxtdGltZSB0aW1lc3RhbXAsZmlsbGVyIGNoYXIoMjIp IiwKKwkJCSJ0aWQgaW50LGJpZCBpbnQsYWlkICAgIGludCxkZWx0YSBpbnQsbXRpbWUgdGltZXN0 YW1wLGZpbGxlciBjaGFyKDIyKSBkZWZhdWx0ICcnIiwKKwkJCSJ0aWQgaW50LGJpZCBpbnQsYWlk IGJpZ2ludCxkZWx0YSBpbnQsbXRpbWUgdGltZXN0YW1wLGZpbGxlciBjaGFyKDIyKSBkZWZhdWx0 ICcnIiwKIAkJCTAKIAkJfSwKIAkJewogCQkJInBnYmVuY2hfdGVsbGVycyIsCi0JCQkidGlkIGlu dCBub3QgbnVsbCxiaWQgaW50LHRiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkiLAotCQkJInRp ZCBpbnQgbm90IG51bGwsYmlkIGludCx0YmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIiwKKwkJ CSJ0aWQgaW50IG5vdCBudWxsLGJpZCBpbnQsdGJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSBk ZWZhdWx0ICcnIiwKKwkJCSJ0aWQgaW50IG5vdCBudWxsLGJpZCBpbnQsdGJhbGFuY2UgaW50LGZp bGxlciBjaGFyKDg0KSBkZWZhdWx0ICcnIiwKIAkJCTEKIAkJfSwKIAkJewogCQkJInBnYmVuY2hf YWNjb3VudHMiLAotCQkJImFpZCAgICBpbnQgbm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBpbnQs ZmlsbGVyIGNoYXIoODQpIiwKLQkJCSJhaWQgYmlnaW50IG5vdCBudWxsLGJpZCBpbnQsYWJhbGFu Y2UgaW50LGZpbGxlciBjaGFyKDg0KSIsCisJCQkiYWlkICAgIGludCBub3QgbnVsbCxiaWQgaW50 LGFiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAnJyIsCisJCQkiYWlkIGJpZ2lu dCBub3QgbnVsbCxiaWQgaW50LGFiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAn JyIsCiAJCQkxCiAJCX0sCiAJCXsKIAkJCSJwZ2JlbmNoX2JyYW5jaGVzIiwKLQkJCSJiaWQgaW50 IG5vdCBudWxsLGJiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4OCkiLAotCQkJImJpZCBpbnQgbm90 IG51bGwsYmJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg4KSIsCisJCQkiYmlkIGludCBub3QgbnVs bCxiYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODgpIGRlZmF1bHQgJyciLAorCQkJImJpZCBpbnQg bm90IG51bGwsYmJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg4KSBkZWZhdWx0ICcnIiwKIAkJCTEK IAkJfQogCX07Ci0tIAoyLjQzLjAKCkZyb20gMmFhYmFhNTJkZmZkYjc4ZmJlZmFlZjk1MTYzODgx YzE1ZTE4ZWYyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSGVpa2tpIExpbm5ha2Fu Z2FzIDxoZWlra2kubGlubmFrYW5nYXNAaWtpLmZpPgpEYXRlOiBGcmksIDIxIE5vdiAyMDI1IDE1 OjAzOjExICswMjAwClN1YmplY3Q6IFtQQVRDSCB2NyAwOS8xOF0gVXNlIHN0cnRvaTY0KCkgaW4g cGdiZW5jaCwgcmVwbGFjaW5nIGl0cyBvcGVuLWNvZGVkCiBpbXBsZW1lbnRhdGlvbgoKTWFrZXMg dGhlIGNvZGUgYSBsaXR0bGUgc2ltcGxlci4KClRoZSBvbGQgaW1wbGVtZW50YXRpb24gYWNjZXB0 ZWQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgYnV0IHRoYXQgd2FzCnVubmVjZXNzYXJ5LiBGaXJzdGx5 LCBpdHMgc2libGluZyBmdW5jdGlvbiBmb3IgcGFyc2luZyBkZWNpbWFscywKc3RydG9kb3VibGUo KSwgZG9lcyBub3QgYWNjZXB0IHRyYWlsaW5nIHdoaXRlc3BhY2UuIFNlY29uZGx5LCBub25lIG9m CnRoZSBjYWxsZXJzIGNhbiBwYXNzIGEgc3RyaW5nIHdpdGggdHJhaWxpbmcgd2hpdGVzcGFjZSB0 byBpdC4KCkluIHRoZSBwYXNzaW5nLCBjaGVjayBzcGVjaWZpY2FsbHkgZm9yIEVSQU5HRSBiZWZv cmUgcHJpbnRpbmcgdGhlICJvdXQKb2YgcmFuZ2UiIGVycm9yLiBPbiBzb21lIHN5c3RlbXMsIHN0 cnRvdWwoKSBhbmQgc3RydG9kKCkgcmV0dXJuIEVJTlZBTApvbiBhbiBlbXB0eSBvciBhbGwtc3Bh Y2VzIHN0cmluZywgYW5kICJpbnZhbGlkIGlucHV0IHN5bnRheCIgaXMgbW9yZQphcHByb3ByaWF0 ZSBmb3IgdGhhdCB0aGFuICJvdXQgb2YgcmFuZ2UiLiBGb3IgdGhlIGV4aXN0aW5nCnN0cnRvZG91 YmxlKCkgZnVuY3Rpb24gdGhpcyBpcyBwdXJlbHkgYWNhZGVtaWNhbCBiZWNhdXNlIGl0J3MgbmV2 ZXIKY2FsbGVkIHdpdGggZXJyb3JPSz09ZmFsc2UsIGJ1dCBsZXQncyBiZSB0aWR5LiAoUGVyaGFw cyB3ZSBzaG91bGQKcmVtb3ZlIHRoZSBkZWFkIGNvZGVwYXRocyBhbHRvZ2V0aGVyLCBidXQgSSds bCBsZWF2ZSB0aGF0IGZvciBhbm90aGVyCmRheS4pCgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGku ZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFl1ZWZlaSBTaGkgPHNoaXl1ZWZlaTEw MDRAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTmVpbCBDaGVuIDxjYXJwZW50ZXIubmFpbC5jekBn bWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2Ut aWQvODYxZGQ1YmQtZjJjOS00ZmY1LThhYTAtZjgyYmRiNzVlYzFmQGlraS5maQotLS0KIHNyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCA4MyArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCA2NCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2Jl bmNoL3BnYmVuY2guYwppbmRleCBhNDI1MTc2ZWNkYy4uNjg3NzRhNTllZmQgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2gu YwpAQCAtOTgyLDEzICs5ODIsMTcgQEAgdXNhZ2Uodm9pZCkKIAkJICAgcHJvZ25hbWUsIHByb2du YW1lLCBQQUNLQUdFX0JVR1JFUE9SVCwgUEFDS0FHRV9OQU1FLCBQQUNLQUdFX1VSTCk7CiB9CiAK LS8qIHJldHVybiB3aGV0aGVyIHN0ciBtYXRjaGVzICJeXHMqWy0rXT9bMC05XSskIiAqLworLyoK KyAqIFJldHVybiB3aGV0aGVyIHN0ciBtYXRjaGVzICJeXHMqWy0rXT9bMC05XSskIgorICoKKyAq IFRoaXMgc2hvdWxkIGFncmVlIHdpdGggc3RydG9pbnQ2NCgpIG9uIHdoYXQncyBhY2NlcHRlZCwg aWdub3Jpbmcgb3ZlcmZsb3dzLgorICovCiBzdGF0aWMgYm9vbAogaXNfYW5faW50KGNvbnN0IGNo YXIgKnN0cikKIHsKIAljb25zdCBjaGFyICpwdHIgPSBzdHI7CiAKLQkvKiBza2lwIGxlYWRpbmcg c3BhY2VzOyBjYXN0IGlzIGNvbnNpc3RlbnQgd2l0aCBzdHJ0b2ludDY0ICovCisJLyogc2tpcCBs ZWFkaW5nIHNwYWNlcyAqLwogCXdoaWxlICgqcHRyICYmIGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIp ICpwdHIpKQogCQlwdHIrKzsKIApAQCAtMTAxMiw5ICsxMDE2LDYgQEAgaXNfYW5faW50KGNvbnN0 IGNoYXIgKnN0cikKIC8qCiAgKiBzdHJ0b2ludDY0IC0tIGNvbnZlcnQgYSBzdHJpbmcgdG8gNjQt Yml0IGludGVnZXIKICAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIGEgc2xpZ2h0bHkgbW9kaWZpZWQg dmVyc2lvbiBvZiBwZ19zdHJ0b2ludDY0KCkgZnJvbQotICogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L251bXV0aWxzLmMuCi0gKgogICogVGhlIGZ1bmN0aW9uIHJldHVybnMgd2hldGhlciB0aGUgY29u dmVyc2lvbiB3b3JrZWQsIGFuZCBpZiBzbwogICogIipyZXN1bHQiIGlzIHNldCB0byB0aGUgcmVz dWx0LgogICoKQEAgLTEwMjMsNzEgKzEwMjQsMjUgQEAgaXNfYW5faW50KGNvbnN0IGNoYXIgKnN0 cikKIGJvb2wKIHN0cnRvaW50NjQoY29uc3QgY2hhciAqc3RyLCBib29sIGVycm9yT0ssIGludDY0 ICpyZXN1bHQpCiB7Ci0JY29uc3QgY2hhciAqcHRyID0gc3RyOwotCWludDY0CQl0bXAgPSAwOwot CWJvb2wJCW5lZyA9IGZhbHNlOwotCi0JLyoKLQkgKiBEbyBvdXIgb3duIHNjYW4sIHJhdGhlciB0 aGFuIHJlbHlpbmcgb24gc3NjYW5mIHdoaWNoIG1pZ2h0IGJlIGJyb2tlbgotCSAqIGZvciBsb25n IGxvbmcuCi0JICoKLQkgKiBBcyBJTlQ2NF9NSU4gY2FuJ3QgYmUgc3RvcmVkIGFzIGEgcG9zaXRp dmUgNjQgYml0IGludGVnZXIsIGFjY3VtdWxhdGUKLQkgKiB2YWx1ZSBhcyBhIG5lZ2F0aXZlIG51 bWJlci4KLQkgKi8KLQotCS8qIHNraXAgbGVhZGluZyBzcGFjZXMgKi8KLQl3aGlsZSAoKnB0ciAm JiBpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkKLQkJcHRyKys7Ci0KLQkvKiBoYW5kbGUg c2lnbiAqLwotCWlmICgqcHRyID09ICctJykKLQl7Ci0JCXB0cisrOwotCQluZWcgPSB0cnVlOwot CX0KLQllbHNlIGlmICgqcHRyID09ICcrJykKLQkJcHRyKys7CisJY2hhcgkgICAqZW5kOwogCi0J LyogcmVxdWlyZSBhdCBsZWFzdCBvbmUgZGlnaXQgKi8KLQlpZiAodW5saWtlbHkoIWlzZGlnaXQo KHVuc2lnbmVkIGNoYXIpICpwdHIpKSkKLQkJZ290byBpbnZhbGlkX3N5bnRheDsKKwllcnJubyA9 IDA7CisJKnJlc3VsdCA9IHN0cnRvaTY0KHN0ciwgJmVuZCwgMTApOwogCi0JLyogcHJvY2VzcyBk aWdpdHMgKi8KLQl3aGlsZSAoKnB0ciAmJiBpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkK KwlpZiAodW5saWtlbHkoZXJybm8gPT0gRVJBTkdFKSkKIAl7Ci0JCWludDgJCWRpZ2l0ID0gKCpw dHIrKyAtICcwJyk7Ci0KLQkJaWYgKHVubGlrZWx5KHBnX211bF9zNjRfb3ZlcmZsb3codG1wLCAx MCwgJnRtcCkpIHx8Ci0JCQl1bmxpa2VseShwZ19zdWJfczY0X292ZXJmbG93KHRtcCwgZGlnaXQs ICZ0bXApKSkKLQkJCWdvdG8gb3V0X29mX3JhbmdlOworCQlpZiAoIWVycm9yT0spCisJCQlwZ19s b2dfZXJyb3IoInZhbHVlIFwiJXNcIiBpcyBvdXQgb2YgcmFuZ2UgZm9yIHR5cGUgYmlnaW50Iiwg c3RyKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAotCS8qIGFsbG93IHRyYWlsaW5nIHdoaXRlc3Bh Y2UsIGJ1dCBub3Qgb3RoZXIgdHJhaWxpbmcgY2hhcnMgKi8KLQl3aGlsZSAoKnB0ciAhPSAnXDAn ICYmIGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpICpwdHIpKQotCQlwdHIrKzsKLQotCWlmICh1bmxp a2VseSgqcHRyICE9ICdcMCcpKQotCQlnb3RvIGludmFsaWRfc3ludGF4OwotCi0JaWYgKCFuZWcp CisJaWYgKHVubGlrZWx5KGVycm5vICE9IDAgfHwgZW5kID09IHN0ciB8fCAqZW5kICE9ICdcMCcp KQogCXsKLQkJaWYgKHVubGlrZWx5KHRtcCA9PSBQR19JTlQ2NF9NSU4pKQotCQkJZ290byBvdXRf b2ZfcmFuZ2U7Ci0JCXRtcCA9IC10bXA7CisJCWlmICghZXJyb3JPSykKKwkJCXBnX2xvZ19lcnJv cigiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgYmlnaW50OiBcIiVzXCIiLCBzdHIpOwor CQlyZXR1cm4gZmFsc2U7CiAJfQotCi0JKnJlc3VsdCA9IHRtcDsKIAlyZXR1cm4gdHJ1ZTsKLQot b3V0X29mX3JhbmdlOgotCWlmICghZXJyb3JPSykKLQkJcGdfbG9nX2Vycm9yKCJ2YWx1ZSBcIiVz XCIgaXMgb3V0IG9mIHJhbmdlIGZvciB0eXBlIGJpZ2ludCIsIHN0cik7Ci0JcmV0dXJuIGZhbHNl OwotCi1pbnZhbGlkX3N5bnRheDoKLQlpZiAoIWVycm9yT0spCi0JCXBnX2xvZ19lcnJvcigiaW52 YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgYmlnaW50OiBcIiVzXCIiLCBzdHIpOwotCXJldHVy biBmYWxzZTsKIH0KIAogLyogY29udmVydCBzdHJpbmcgdG8gZG91YmxlLCBkZXRlY3Rpbmcgb3Zl cmZsb3dzL3VuZGVyZmxvd3MgKi8KQEAgLTEwOTksMTQgKzEwNTQsMTQgQEAgc3RydG9kb3VibGUo Y29uc3QgY2hhciAqc3RyLCBib29sIGVycm9yT0ssIGRvdWJsZSAqZHYpCiAJZXJybm8gPSAwOwog CSpkdiA9IHN0cnRvZChzdHIsICZlbmQpOwogCi0JaWYgKHVubGlrZWx5KGVycm5vICE9IDApKQor CWlmICh1bmxpa2VseShlcnJubyA9PSBFUkFOR0UpKQogCXsKIAkJaWYgKCFlcnJvck9LKQogCQkJ cGdfbG9nX2Vycm9yKCJ2YWx1ZSBcIiVzXCIgaXMgb3V0IG9mIHJhbmdlIGZvciB0eXBlIGRvdWJs ZSIsIHN0cik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlpZiAodW5saWtlbHkoZW5kID09IHN0 ciB8fCAqZW5kICE9ICdcMCcpKQorCWlmICh1bmxpa2VseShlcnJubyAhPSAwIHx8IGVuZCA9PSBz dHIgfHwgKmVuZCAhPSAnXDAnKSkKIAl7CiAJCWlmICghZXJyb3JPSykKIAkJCXBnX2xvZ19lcnJv cigiaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgZG91YmxlOiBcIiVzXCIiLCBzdHIpOwot LSAKMi40My4wCgpGcm9tIGRjYjg1ZDI2ZjgxMzJlYWFmOWQwOTZlODE0YjliZGE0OWRiN2Q0Nzgg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9u b3ZAZ21haWwuY29tPgpEYXRlOiBGcmksIDIxIE5vdiAyMDI1IDIwOjA2OjI0ICswNzAwClN1Ympl Y3Q6IFtQQVRDSCB2NyAxMC8xOF0gU3dpdGNoaW5nIENPUFkgRlJPTSBCSU5BUlkgdGkgcnVuIGlu IG11bHRpcGxlCiB0cmFuc2FjdGlvbnMKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8 IDI3ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE2IGluc2Vy dGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9w Z2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDAzYjVlNWMyOGYwLi42 Yjg5MDA3YTYzYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC01NDk2LDIwICs1NDk2LDIwIEBAIGluaXRBY2Nv dW50QmluYXJ5KFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBpbnQ2NF90IGN1cnIsIGludDMy X3QgcGFyZW50KQogICovCiBzdGF0aWMgdm9pZAogaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdj b25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAotCQkJCQkJaW50NjRfdCBiYXNl LCBpbml0Um93TWV0aG9kQmluIGluaXRfcm93KQorCQkJCQkJaW50IGNvdW50ZXIsIGludDY0X3Qg YmFzZSwgaW5pdFJvd01ldGhvZEJpbiBpbml0X3JvdykKIHsKIAlpbnQJCQkgbjsKIAlQR3Jlc3Vs dAkqcmVzOwogCWNoYXIJCSBjb3B5X3N0YXRlbWVudFsyNTZdOwogCWNvbnN0IGNoYXIJKmNvcHlf c3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzICglcykgZnJvbSBzdGRpbiAoZm9ybWF0IGJpbmFyeSki OwotCWludDY0X3QJCSB0b3RhbCA9IGJhc2UgKiBzY2FsZTsKKwlpbnQ2NF90CQkgc3RhcnQgPSBi YXNlICogY291bnRlcjsKIAogCWJpbl9jb3B5X2J1ZmZlcl9sZW5ndGggPSAwOwogCiAJLyogVXNl IENPUFkgd2l0aCBGUkVFWkUgb24gdjE0IGFuZCBsYXRlciBmb3IgYWxsIG9yZGluYXJ5IHRhYmxl cyAqLwogCWlmICgoUFFzZXJ2ZXJWZXJzaW9uKGNvbikgPj0gMTQwMDAwKSAmJgogCQlnZXRfdGFi bGVfcmVsa2luZChjb24sIHRhYmxlKSA9PSBSRUxLSU5EX1JFTEFUSU9OKQotCQljb3B5X3N0YXRl bWVudF9mbXQgPSAiY29weSAlcyAoJXMpIGZyb20gc3RkaW4gd2l0aCAoZm9ybWF0IGJpbmFyeSwg ZnJlZXplIG9uKSI7CisJCWNvcHlfc3RhdGVtZW50X2ZtdCA9ICJjb3B5ICVzICglcykgZnJvbSBz dGRpbiB3aXRoIChmb3JtYXQgYmluYXJ5KSI7CiAKIAluID0gcGdfc25wcmludGYoY29weV9zdGF0 ZW1lbnQsIHNpemVvZihjb3B5X3N0YXRlbWVudCksIGNvcHlfc3RhdGVtZW50X2ZtdCwgdGFibGUs IGNvbHVtbnMpOwogCWlmIChuID49IHNpemVvZihjb3B5X3N0YXRlbWVudCkpCkBAIC01NTI2LDcg KzU1MjYsNyBAQCBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFi bGUsIGNoYXIgKmNvbHVtbnMsCiAKIAlzZW5kQmluYXJ5Q29weUhlYWRlcihjb24pOwogCi0JZm9y IChpbnQ2NF90IGkgPSAwOyBpIDwgdG90YWw7IGkrKykKKwlmb3IgKGludDY0X3QgaSA9IHN0YXJ0 OyBpIDwgc3RhcnQgKyBiYXNlOyBpKyspCiAJewogCQlpbml0X3Jvdyhjb24sIHJlcywgaSwgYmFz ZSk7CiAJfQpAQCAtNTU3MywxNSArNTU3MywyMCBAQCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lk ZUJpbmFyeShQR2Nvbm4gKmNvbikKIAkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLwog CWluaXRUcnVuY2F0ZVRhYmxlcyhjb24pOwogCi0JaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoY29u LCAicGdiZW5jaF9icmFuY2hlcyIsICJiaWQsIGJiYWxhbmNlIiwKLQkJCQkJCQluYnJhbmNoZXMs IGluaXRCcmFuY2hCaW5hcnkpOwotCWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KGNvbiwgInBnYmVu Y2hfdGVsbGVycyIsICAidGlkLCBiaWQsIHRiYWxhbmNlIiwKLQkJCQkJCQludGVsbGVycywgIGlu aXRUZWxsZXJCaW5hcnkpOwotCWluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KGNvbiwgInBnYmVuY2hf YWNjb3VudHMiLCAiYWlkLCBiaWQsIGFiYWxhbmNlIiwKLQkJCQkJCQluYWNjb3VudHMsIGluaXRB Y2NvdW50QmluYXJ5KTsKLQogCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CiAKKwlm b3IgKGludCBpID0gMDsgaSA8IHNjYWxlOyBpKyspCisJeworCQlpbml0UG9wdWxhdGVUYWJsZUJp bmFyeShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgImJpZCwgYmJhbGFuY2UiLAorCQkJCQkJCQlp LCBuYnJhbmNoZXMsIGluaXRCcmFuY2hCaW5hcnkpOworCQlpbml0UG9wdWxhdGVUYWJsZUJpbmFy eShjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCAgInRpZCwgYmlkLCB0YmFsYW5jZSIsCisJCQkJCQkJ CWksIG50ZWxsZXJzLCAgaW5pdFRlbGxlckJpbmFyeSk7CisJCWluaXRQb3B1bGF0ZVRhYmxlQmlu YXJ5KGNvbiwgInBnYmVuY2hfYWNjb3VudHMiLCAiYWlkLCBiaWQsIGFiYWxhbmNlIiwKKwkJCQkJ CQkJaSwgbmFjY291bnRzLCBpbml0QWNjb3VudEJpbmFyeSk7CisKKwkJZXhlY3V0ZVN0YXRlbWVu dChjb24sICJjb21taXQiKTsKKwl9CisKIAlwZ19mcmVlKGJpbl9jb3B5X2J1ZmZlcik7CiB9CiAK LS0gCjIuNDMuMAoKRnJvbSBiOGUyODg4MTIyNTIzNGZkMDBiNTUyMzViYzYwZmFkMmRjNjBiNTQ0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJv bm92QGdtYWlsLmNvbT4KRGF0ZTogU2F0LCAyMiBOb3YgMjAyNSAxNzowNjowMCArMDcwMApTdWJq ZWN0OiBbUEFUQ0ggdjcgMTEvMThdIEFkZGluZyB0ZXN0cyBmb3IgbmV3IG1vZGVzIG9mIGRhdGEg Z2VuZXJhdGlvbgoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jICAgICAgICAgICAgICAg ICAgICB8IDIxICsrKystLS0tCiBzcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3Nl cnZlci5wbCB8IDUyICsrKysrKysrKysrKysrKysrLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDU2IGlu c2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDZiODkwMDdhNjNi Li5kZDRlNWQ1ZTA1NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysg Yi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC0xNjQsNyArMTY0LDcgQEAgdHlwZWRlZiBz dHJ1Y3Qgc29ja2V0X3NldAogI2RlZmluZSBBTExfSU5JVF9TVEVQUyAiZHRnQ0dpSXZwZiIJLyog YWxsIHBvc3NpYmxlIHN0ZXBzICovCiAKICNkZWZpbmUgTE9HX1NURVBfU0VDT05EUwk1CS8qIHNl Y29uZHMgYmV0d2VlbiBsb2cgbWVzc2FnZXMgKi8KLSNkZWZpbmUgREVGQVVMVF9OWEFDVFMJMTAJ CS8qIGRlZmF1bHQgbnhhY3RzICovCisjZGVmaW5lIERFRkFVTFRfTlhBQ1RTCQkxMAkvKiBkZWZh dWx0IG54YWN0cyAqLwogCiAjZGVmaW5lIE1JTl9HQVVTU0lBTl9QQVJBTQkJMi4wIC8qIG1pbmlt dW0gcGFyYW1ldGVyIGZvciBnYXVzcyAqLwogCkBAIC0xOTIsNyArMTkyLDcgQEAgc3RhdGljIGlu dAlzY2FsZSA9IDE7CiAvKgogICogbW9kZSBvZiBkYXRhIGdlbmVyYXRpb24gdG8gdXNlCiAgKi8K LXN0YXRpYyBjaGFyCWRhdGFfZ2VuZXJhdGlvbl90eXBlID0gJz8nOworc3RhdGljIGNoYXIJZGF0 YV9nZW5lcmF0aW9uX3R5cGUgPSBHRU5fVFlQRV9DT1BZX09SSUdJTkFMOwogCiAvKgogICogQ09Q WSBGUk9NIEJJTkFSWSBleGVjdXRpb24gYnVmZmVyCkBAIC00OTg1LDI2ICs0OTg1LDI2IEBAIGlu aXRDcmVhdGVUYWJsZXMoUEdjb25uICpjb24pCiAJc3RhdGljIGNvbnN0IHN0cnVjdCBkZGxpbmZv IERETHNbXSA9IHsKIAkJewogCQkJInBnYmVuY2hfaGlzdG9yeSIsCi0JCQkidGlkIGludCxiaWQg aW50LGFpZCAgICBpbnQsZGVsdGEgaW50LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigyMikg ZGVmYXVsdCAnJyIsCi0JCQkidGlkIGludCxiaWQgaW50LGFpZCBiaWdpbnQsZGVsdGEgaW50LG10 aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigyMikgZGVmYXVsdCAnJyIsCisJCQkidGlkIGludCxi aWQgaW50LGFpZCAgICBpbnQsZGVsdGEgaW50LG10aW1lIHRpbWVzdGFtcCxmaWxsZXIgY2hhcigy MikgZGVmYXVsdCAnPyciLAorCQkJInRpZCBpbnQsYmlkIGludCxhaWQgYmlnaW50LGRlbHRhIGlu dCxtdGltZSB0aW1lc3RhbXAsZmlsbGVyIGNoYXIoMjIpIGRlZmF1bHQgJz8nIiwKIAkJCTAKIAkJ fSwKIAkJewogCQkJInBnYmVuY2hfdGVsbGVycyIsCi0JCQkidGlkIGludCBub3QgbnVsbCxiaWQg aW50LHRiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAnJyIsCi0JCQkidGlkIGlu dCBub3QgbnVsbCxiaWQgaW50LHRiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4NCkgZGVmYXVsdCAn JyIsCisJCQkidGlkIGludCBub3QgbnVsbCxiaWQgaW50LHRiYWxhbmNlIGludCxmaWxsZXIgY2hh cig4NCkiLAorCQkJInRpZCBpbnQgbm90IG51bGwsYmlkIGludCx0YmFsYW5jZSBpbnQsZmlsbGVy IGNoYXIoODQpIiwKIAkJCTEKIAkJfSwKIAkJewogCQkJInBnYmVuY2hfYWNjb3VudHMiLAotCQkJ ImFpZCAgICBpbnQgbm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQp IGRlZmF1bHQgJyciLAotCQkJImFpZCBiaWdpbnQgbm90IG51bGwsYmlkIGludCxhYmFsYW5jZSBp bnQsZmlsbGVyIGNoYXIoODQpIGRlZmF1bHQgJyciLAorCQkJImFpZCAgICBpbnQgbm90IG51bGws YmlkIGludCxhYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODQpIGRlZmF1bHQgJz8nIiwKKwkJCSJh aWQgYmlnaW50IG5vdCBudWxsLGJpZCBpbnQsYWJhbGFuY2UgaW50LGZpbGxlciBjaGFyKDg0KSBk ZWZhdWx0ICc/JyIsCiAJCQkxCiAJCX0sCiAJCXsKIAkJCSJwZ2JlbmNoX2JyYW5jaGVzIiwKLQkJ CSJiaWQgaW50IG5vdCBudWxsLGJiYWxhbmNlIGludCxmaWxsZXIgY2hhcig4OCkgZGVmYXVsdCAn JyIsCi0JCQkiYmlkIGludCBub3QgbnVsbCxiYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODgpIGRl ZmF1bHQgJyciLAorCQkJImJpZCBpbnQgbm90IG51bGwsYmJhbGFuY2UgaW50LGZpbGxlciBjaGFy KDg4KSIsCisJCQkiYmlkIGludCBub3QgbnVsbCxiYmFsYW5jZSBpbnQsZmlsbGVyIGNoYXIoODgp IiwKIAkJCTEKIAkJfQogCX07CkBAIC03ODM3LDYgKzc4MzcsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAkJCX0KIAkJfQogCisJCWNoZWNrSW5pdFN0ZXBzKGluaXRpYWxpemVfc3Rl cHMpOwogCQlydW5Jbml0U3RlcHMoaW5pdGlhbGl6ZV9zdGVwcyk7CiAJCWV4aXQoMCk7CiAJfQpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwg Yi9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5wbAppbmRleCA1ODFl OWFmNzkwNy4uYTM3NzA0OGVhZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9w Z2JlbmNoX3dpdGhfc2VydmVyLnBsCisrKyBiL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2JlbmNo X3dpdGhfc2VydmVyLnBsCkBAIC0xNiwyNSArMTYsMzAgQEAgc3ViIGNoZWNrX2RhdGFfc3RhdGUK IAlsb2NhbCAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgPSAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgKyAx OwogCW15ICRub2RlID0gc2hpZnQ7CiAJbXkgJHR5cGUgPSBzaGlmdDsKKwlteSAkc3FsX3Jlc3Vs dDsKIAotCW15ICRzcWxfcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCQkn U0VMRUNUIGNvdW50KCopIEFTIG51bGxfY291bnQgRlJPTSBwZ2JlbmNoX2FjY291bnRzIFdIRVJF IGZpbGxlciBJUyBOVUxMIExJTUlUIDEwOycKLQkpOwotCWlzKCRzcWxfcmVzdWx0LCAnMCcsCi0J CSIkdHlwZTogZmlsbGVyIGNvbHVtbiBvZiBwZ2JlbmNoX2FjY291bnRzIGhhcyBubyBOVUxMIGRh dGEiKTsKIAkkc3FsX3Jlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJJ1NF TEVDVCBjb3VudCgqKSBBUyBudWxsX2NvdW50IEZST00gcGdiZW5jaF9icmFuY2hlcyBXSEVSRSBm aWxsZXIgSVMgTlVMTDsnCiAJKTsKIAlpcygkc3FsX3Jlc3VsdCwgJzEnLAogCQkiJHR5cGU6IGZp bGxlciBjb2x1bW4gb2YgcGdiZW5jaF9icmFuY2hlcyBoYXMgb25seSBOVUxMIGRhdGEiKTsKKwog CSRzcWxfcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQknU0VMRUNUIGNv dW50KCopIEFTIG51bGxfY291bnQgRlJPTSBwZ2JlbmNoX3RlbGxlcnMgV0hFUkUgZmlsbGVyIElT IE5VTEw7JwogCSk7CiAJaXMoJHNxbF9yZXN1bHQsICcxMCcsCiAJCSIkdHlwZTogZmlsbGVyIGNv bHVtbiBvZiBwZ2JlbmNoX3RlbGxlcnMgaGFzIG9ubHkgTlVMTCBkYXRhIik7CisKKwkkc3FsX3Jl c3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJJ1NFTEVDVCBjb3VudCgqKSBB UyBudWxsX2NvdW50IEZST00gcGdiZW5jaF9hY2NvdW50cyBXSEVSRSBmaWxsZXIgSVMgTlVMTCBM SU1JVCAxMDsnCisJKTsKKwlpcygkc3FsX3Jlc3VsdCwgJzAnLAorCQkiJHR5cGU6IGZpbGxlciBj b2x1bW4gb2YgcGdiZW5jaF9hY2NvdW50cyBoYXMgbm8gTlVMTCBkYXRhIik7CisKIAkkc3FsX3Jl c3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJJ1NFTEVDVCBjb3VudCgqKSBB UyBkYXRhX2NvdW50IEZST00gcGdiZW5jaF9oaXN0b3J5OycpOwotCWlzKCRzcWxfcmVzdWx0LCAn MCcsICIkdHlwZTogcGdiZW5jaF9oaXN0b3J5IGhhcyBubyBkYXRhIik7CisJaXMoJHNxbF9yZXN1 bHQsICcwJywKKwkJIiR0eXBlOiBwZ2JlbmNoX2hpc3RvcnkgaGFzIG5vIGRhdGEiKTsKIH0KIAog IyBzdGFydCBhIHBnYmVuY2ggc3BlY2lmaWMgc2VydmVyCkBAIC0xMjUsNyArMTMwLDcgQEAgJG5v ZGUtPnBnYmVuY2goCiAJJ3BnYmVuY2ggc2NhbGUgMSBpbml0aWFsaXphdGlvbicsKTsKIAogIyBD aGVjayBkYXRhIHN0YXRlLCBhZnRlciBjbGllbnQtc2lkZSBkYXRhIGdlbmVyYXRpb24uCi1jaGVj a19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUnKTsKK2NoZWNrX2RhdGFfc3RhdGUoJG5v ZGUsICdjbGllbnQtc2lkZSAoZGVmYXVsdCBvcHRpb25zKScpOwogCiAjIEFnYWluLCB3aXRoIGFs bCBwb3NzaWJsZSBvcHRpb25zCiAkbm9kZS0+cGdiZW5jaCgKQEAgLTE0Myw2ICsxNDgsNyBAQCAk bm9kZS0+cGdiZW5jaCgKIAkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CiAJXSwKIAkncGdiZW5j aCBzY2FsZSAxIGluaXRpYWxpemF0aW9uJyk7CitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xp ZW50LXNpZGUgKGFsbCBvcHRpb25zKScpOwogCiAjIFRlc3QgaW50ZXJhY3Rpb24gb2YgLS1pbml0 LXN0ZXBzIHdpdGggbGVnYWN5IHN0ZXAtc2VsZWN0aW9uIG9wdGlvbnMKICRub2RlLT5wZ2JlbmNo KApAQCAtMTY0LDYgKzE3MCwzOCBAQCAkbm9kZS0+cGdiZW5jaCgKICMgQ2hlY2sgZGF0YSBzdGF0 ZSwgYWZ0ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgogY2hlY2tfZGF0YV9zdGF0ZSgk bm9kZSwgJ3NlcnZlci1zaWRlJyk7CiAKKyMgVGVzdCBzZXJ2ZXItc2lkZSBnZW5lcmF0aW9uIHdp dGggVU5ORVNUCiskbm9kZS0+cGdiZW5jaCgKKwknLS1pbml0aWFsaXplIC0taW5pdC1zdGVwcz1k dEknLAorCTAsCisJW3Fye14kfV0sCisJWworCQlxcntkcm9wcGluZyBvbGQgdGFibGVzfSwKKwkJ cXJ7Y3JlYXRpbmcgdGFibGVzfSwKKwkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwoc2VydmVyLXNpZGVc KX0sCisJCXFye2RvbmUgaW4gXGQrXC5cZFxkIHMgfQorCV0sCisJJ3BnYmVuY2ggLS1pbml0LXN0 ZXBzIHNlcnZlci1zaWRlIFVOTkVTVCcpOworCisjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNl cnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KK2NoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdzZXJ2 ZXItc2lkZSAodW5uZXN0KScpOworCisjIFRlc3Qgc2VydmVyLXNpZGUgZ2VuZXJhdGlvbiB3aXRo IFVOTkVTVAorJG5vZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRD JywKKwkwLAorCVtxcnteJH1dLAorCVsKKwkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxlc30sCisJCXFy e2NyZWF0aW5nIHRhYmxlc30sCisJCXFye2dlbmVyYXRpbmcgZGF0YSBcKGNsaWVudC1zaWRlXCl9 LAorCQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAorCSdwZ2JlbmNoIC0taW5pdC1zdGVw cyBjbGllbnQtc2lkZSBCSU5BUlknKTsKKworIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2 ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50 LXNpZGUgKGJpbmFyeSknKTsKKwogIyBSdW4gYWxsIGJ1aWx0aW4gc2NyaXB0cywgZm9yIGEgZmV3 IHRyYW5zYWN0aW9ucyBlYWNoCiAkbm9kZS0+cGdiZW5jaCgKIAknLS10cmFuc2FjdGlvbnM9NSAt RGZvbz1ibGEgLS1jbGllbnQ9MiAtLXByb3RvY29sPXNpbXBsZSAtLWJ1aWx0aW49dCcKLS0gCjIu NDMuMAoKRnJvbSBiM2YyYmNlMzQyMzJkMjk5YWJjNzY0NGE4NTc5ZjBjZTQ5YzhjOWQ2IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdt YWlsLmNvbT4KRGF0ZTogU3VuLCAyMyBOb3YgMjAyNSAxNDowNTo1OSArMDcwMApTdWJqZWN0OiBb UEFUQ0ggdjcgMTIvMThdIEZpeGluZyBjb21waWxlciB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcHJv Y2VkdXJlcyBieQogcmVtb3Zpbmcgb3IgY29tbWVudGluZyB0aGVtIG91dCBhcyB0aGV5IG1pZ2h0 IGJlIG5lZWRlZCBhIGJpdCBsYXRlcgoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwg MzEgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUgaW5z ZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNo L3BnYmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggMGEzYmEyMWRjYzku LjY4MmRiNjFmZjYxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBi L3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTUyMDEsNyArNTIwMSw3IEBAIGluaXRHZW5l cmF0ZURhdGFDbGllbnRTaWRlVGV4dChQR2Nvbm4gKmNvbikKIAogLyoKICAqIER1bXBzIGJpbmFy eSBidWZmZXIgdG8gZmlsZSAocHVyZWx5IGZvciBkZWJ1Z2dpbmcpCi0gKi8KKyAqCiBzdGF0aWMg dm9pZAogZHVtcEJ1ZmZlclRvRmlsZShjaGFyICpmaWxlbmFtZSkKIHsKQEAgLTUyMjYsNiArNTIy Niw3IEBAIGR1bXBCdWZmZXJUb0ZpbGUoY2hhciAqZmlsZW5hbWUpCiAKIAlmY2xvc2UoZmlsZV9w dHIpOwogfQorICovCiAKIC8qCiAgKiBTYXZlIGNoYXIgZGF0YSB0byBidWZmZXIKQEAgLTUyNzEs MzcgKzUyNzIsMTQgQEAgYWRkQ29sdW1uQ291bnRlcihpbnQxNl90IG4pCiAKIC8qCiAgKiBhZGRz IGNvbHVtbiB3aXRoIE5VTEwgdmFsdWUKLSAqLworICoKIHN0YXRpYyB2b2lkCiBhZGROdWxsQ29s dW1uKCkKIHsKIAlpbnQzMl90IG51bGwgPSAtMTsKIAlidWZmZXJEYXRhKCh2b2lkICopICZudWxs LCBzaXplb2YobnVsbCkpOwogfQotCi0vKgotICogYWRkcyBjb2x1bW4gd2l0aCBpbnQ4IHZhbHVl CiAgKi8KLXN0YXRpYyB2b2lkCi1hZGRJbnQ4Q29sdW1uKGludDhfdCB2YWx1ZSkKLXsKLQlpbnQ4 X3QJZGF0YSA9IHZhbHVlOwotCWludDMyX3QJc2l6ZSA9IHNpemVvZihkYXRhKTsKLQlidWZmZXJE YXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkpOwotCWJ1ZmZlckRhdGEoKHZvaWQgKikg JmRhdGEsIHNpemVvZihkYXRhKSk7Ci19Ci0KLS8qCi0gKiBhZGRzIGNvbHVtbiB3aXRoIGludDE2 IHZhbHVlCi0gKi8KLXN0YXRpYyB2b2lkCi1hZGRJbnQxNkNvbHVtbihpbnQxNl90IHZhbHVlKQot ewotCWludDE2X3QJZGF0YSA9IHZhbHVlOwotCWludDMyX3QJc2l6ZSA9IHNpemVvZihkYXRhKTsK LQlidWZmZXJEYXRhKCh2b2lkICopICZzaXplLCBzaXplb2Yoc2l6ZSkpOwotCWJ1ZmZlckRhdGEo KHZvaWQgKikgJmRhdGEsIHNpemVvZihkYXRhKSk7Ci19CiAKIC8qCiAgKiBhZGRzIGNvbHVtbiB3 aXRoIGludGkzMiB2YWx1ZQpAQCAtNTMyOSw3ICs1MzA3LDcgQEAgYWRkSW50NjRDb2x1bW4oaW50 NjRfdCB2YWx1ZSkKIAogLyoKICAqIGFkZHMgY29sdW1uIHdpdGggY2hhciB2YWx1ZQotICovCisg Kgogc3RhdGljIHZvaWQKIGFkZENoYXJDb2x1bW4oY2hhciAqdmFsdWUpCiB7CkBAIC01MzM3LDYg KzUzMTUsNyBAQCBhZGRDaGFyQ29sdW1uKGNoYXIgKnZhbHVlKQogCWJ1ZmZlckRhdGEoKHZvaWQg KikgJnNpemUsIHNpemVvZihzaXplKSk7CiAJYnVmZmVyQ2hhckRhdGEodmFsdWUsIHNpemUpOwog fQorICovCiAKIC8qCiAgKiBTdGFydHMgY29tbXVuaWNhdGlvbiB3aXRoIHNlcnZlciBmb3IgQ09Q WSBGUk9NIEJJTkFSWSBzdGF0ZW1lbnQKLS0gCjIuNDMuMAoKRnJvbSA5YWI3ZmUzMDJiYTdkZTQw NTkzZTdjYmE4ZWExY2EzYjg3NmMxZWE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBC b3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogVGh1LCAyOSBKYW4g MjAyNiAxOToyMjoxNiArMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjcgMTMvMThdIE1vdmluZyBQUWNs ZWFyIGNhbGwgdG8gdGhlIGVuZCBvZiBwcm9jZWR1cmUgdG8gYXZvaWQKIGFjY2VzcyB0byBwcmV2 aW91c2x5IHJlbGVhc2VkIG1lbW9yeQoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIHwg MjcgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0 aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3Bn YmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKaW5kZXggNjgyZGI2MWZmNjEuLjM2 ODdiNjU4NzFlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3Ny Yy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTUzNjMsMTEgKzUzNjMsMTEgQEAgc3RhdGljIHZv aWQKIGluaXRCcmFuY2hCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3Qg Y3VyciwgaW50MzJfdCBwYXJlbnQpCiB7CiAJLyoKLQkgKiBFYWNoIHJvdyBoYXMgZm9sbG93aW5n IGV4dHJhIGJ5dGVzOgorCSAqIEVhY2ggcm93IG9mIGJyYW5jaCB0YWJsZSBoYXMgZm9sbG93aW5n IGV4dHJhIGJ5dGVzOgogCSAqIC0gMiBieXRlcyBmb3IgbnVtYmVyIG9mIGNvbHVtbnMKLQkgKiAt IDQgYnl0ZXMgYXMgbGVuZ3RoIGZvciBlYWNoIGNvbHVtbgorCSAqIC0gNCBieXRlcyBhcyBsZW5n dGggZm9yIGVhY2ggb2YgdGFibGUncyAzIGNvbHVtbnMKIAkgKi8KLQlpbnQxNl90CW1heF9yb3df bGVuID0gIDM1ICsgMiArIDQqMzsgLyogbWF4IHJvdyBzaXplIGlzIDMyICovCisJaW50MTZfdAlt YXhfcm93X2xlbiA9ICAzNSArIDIgKyA0KjM7IC8qIG1heCByb3cgc2l6ZSBpcyAzNSAqLwogCiAJ Zmx1c2hCdWZmZXIoY29uLCByZXMsIG1heF9yb3dfbGVuKTsKIApAQCAtNTM4NCw5ICs1Mzg0LDkg QEAgc3RhdGljIHZvaWQKIGluaXRUZWxsZXJCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpy ZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiB7CiAJLyoKLQkgKiBFYWNoIHJvdyBo YXMgZm9sbG93aW5nIGV4dHJhIGJ5dGVzOgorCSAqIEVhY2ggcm93IG9mIHRlbGxlcnMgdGFibGUg aGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKIAkgKiAtIDIgYnl0ZXMgZm9yIG51bWJlciBvZiBj b2x1bW5zCi0JICogLSA0IGJ5dGVzIGFzIGxlbmd0aCBmb3IgZWFjaCBjb2x1bW4KKwkgKiAtIDQg Ynl0ZXMgYXMgbGVuZ3RoIGZvciBlYWNoIG9mIHRhYmxlJ3MgNCBjb2x1bW5zCiAJICovCiAJaW50 MTZfdAltYXhfcm93X2xlbiA9ICA0MCArIDIgKyA0KjQ7IC8qIG1heCByb3cgc2l6ZSBpcyA0MCAq LwogCkBAIC01NDA2LDkgKzU0MDYsOSBAQCBzdGF0aWMgdm9pZAogaW5pdEFjY291bnRCaW5hcnko UEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQp CiB7CiAJLyoKLQkgKiBFYWNoIHJvdyBoYXMgZm9sbG93aW5nIGV4dHJhIGJ5dGVzOgorCSAqIEVh Y2ggcm93IG9mIGFjY291bnRzIHRhYmxlIGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6CiAJICog LSAyIGJ5dGVzIGZvciBudW1iZXIgb2YgY29sdW1ucwotCSAqIC0gNCBieXRlcyBhcyBsZW5ndGgg Zm9yIGVhY2ggY29sdW1uCisJICogLSA0IGJ5dGVzIGFzIGxlbmd0aCBmb3IgZWFjaCBvZiB0YWJs ZSdzIDQgY29sdW1ucwogCSAqLwogCWludDE2X3QJbWF4X3Jvd19sZW4gPSAyNTAgKyAyICsgNCo0 OyAvKiBtYXggcm93IHNpemUgaXMgMjUwIGZvciBpbnQ2NCAqLwogCkBAIC01NDU1LDExICs1NDU1 LDExIEBAIGluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwg Y2hhciAqY29sdW1ucywKIAogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPUFlf SU4pCiAJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIGNvcHkgaW4gcmVzdWx0OiAlcyIsIFBRZXJyb3JN ZXNzYWdlKGNvbikpOwotCVBRY2xlYXIocmVzKTsKIAogCiAJc2VuZEJpbmFyeUNvcHlIZWFkZXIo Y29uKTsKIAorCiAJZm9yIChpbnQ2NF90IGkgPSBzdGFydDsgaSA8IHN0YXJ0ICsgYmFzZTsgaSsr KQogCXsKIAkJaW5pdF9yb3coY29uLCByZXMsIGksIGJhc2UpOwpAQCAtNTQ3MCw4ICs1NDcwLDEw IEBAIGluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hh ciAqY29sdW1ucywKIAllbHNlCiAJCWZwcmludGYoc3RkZXJyLCAiVW5leHBlY3RlZCBtb2RlICVk IGluc3RlYWQgb2YgJWRcbiIsIFBRcmVzdWx0U3RhdHVzKHJlcyksIFBHUkVTX0NPUFlfSU4pOwog CisKIAlzZW5kQmluYXJ5Q29weVRyYWlsZXIoY29uKTsKIAorCiAJaWYgKFBRcmVzdWx0U3RhdHVz KHJlcykgPT0gUEdSRVNfQ09QWV9JTikKIAl7CiAJCWlmIChQUXB1dENvcHlFbmQoY29uLCBOVUxM KSA9PSAxKSAvKiBzdWNjZXNzICovCkBAIC01NDg0LDYgKzU0ODYsOCBAQCBpbml0UG9wdWxhdGVU YWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCiAJCWVs c2UKIAkJCWZwcmludGYoc3RkZXJyLCAiRXJyb3I6ICVzXG4iLCBQUWVycm9yTWVzc2FnZShjb24p KTsKIAl9CisKKwlQUWNsZWFyKHJlcyk7CiB9CiAKIC8qCkBAIC01NDk5LDggKzU1MDMsOSBAQCBp bml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZUJpbmFyeShQR2Nvbm4gKmNvbikKIAliaW5fY29weV9i dWZmZXJfbGVuZ3RoID0gMDsKIAogCS8qCi0JICogd2UgZG8gYWxsIG9mIHRoaXMgaW4gb25lIHRy YW5zYWN0aW9uIHRvIGVuYWJsZSB0aGUgYmFja2VuZCdzCi0JICogZGF0YS1sb2FkaW5nIG9wdGlt aXphdGlvbnMKKwkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBtdWx0aXBsZSB0cmFuc2FjdGlvbnMK KwkgKiB0byBtaW5pbWl6ZSBsb2FkIG9uIERCIHNlcnZlciBhbmQgcGVyaGFwcworCSAqIGluIGZ1 dHVyZSBhbGxvdyBsb2FkIGluIHBhcmFsbGVsIHNlc3Npb25zCiAJICovCiAJZXhlY3V0ZVN0YXRl bWVudChjb24sICJiZWdpbiIpOwogCkBAIC01NTExLDYgKzU1MTYsOCBAQCBpbml0R2VuZXJhdGVE YXRhQ2xpZW50U2lkZUJpbmFyeShQR2Nvbm4gKmNvbikKIAogCWZvciAoaW50IGkgPSAwOyBpIDwg c2NhbGU7IGkrKykKIAl7CisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKKwogCQlp bml0UG9wdWxhdGVUYWJsZUJpbmFyeShjb24sICJwZ2JlbmNoX2JyYW5jaGVzIiwgImJpZCwgYmJh bGFuY2UiLAogCQkJCQkJCQlpLCBuYnJhbmNoZXMsIGluaXRCcmFuY2hCaW5hcnkpOwogCQlpbml0 UG9wdWxhdGVUYWJsZUJpbmFyeShjb24sICJwZ2JlbmNoX3RlbGxlcnMiLCAgInRpZCwgYmlkLCB0 YmFsYW5jZSIsCi0tIAoyLjQzLjAKCkZyb20gM2Q3YjJjNTNiM2ZhNDViODg0ODM2OWJmYmM0OWEw YzdlNTg1NDMwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQm9yaXMgTWlyb25vdiA8 Ym9yaXMubWlyb25vdkBnbWFpbC5jb20+CkRhdGU6IFRodSwgMjkgSmFuIDIwMjYgMTk6NDc6MjYg KzA3MDAKU3ViamVjdDogW1BBVENIIHY3IDE0LzE4XSBGaXhpbmcgZXJyb3IgYWJvdXQgZnJlZWlu ZyBtZW1vcnkgdHdpY2UKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8IDQgKystLQog MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2gu YwppbmRleCAzNjg3YjY1ODcxZS4uNmY0MjQzOGQ5NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdi ZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNTQ2Miw2 ICs1NDYyLDcgQEAgaW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRh YmxlLCBjaGFyICpjb2x1bW5zLAogCiAJZm9yIChpbnQ2NF90IGkgPSBzdGFydDsgaSA8IHN0YXJ0 ICsgYmFzZTsgaSsrKQogCXsKKwkJcmVzID0gUFFnZXRSZXN1bHQoY29uKTsKIAkJaW5pdF9yb3co Y29uLCByZXMsIGksIGJhc2UpOwogCX0KIApAQCAtNTQ3Myw3ICs1NDc0LDcgQEAgaW5pdFBvcHVs YXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAog CiAJc2VuZEJpbmFyeUNvcHlUcmFpbGVyKGNvbik7CiAKLQorCXJlcyA9IFBRZ2V0UmVzdWx0KGNv bik7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgPT0gUEdSRVNfQ09QWV9JTikKIAl7CiAJCWlm IChQUXB1dENvcHlFbmQoY29uLCBOVUxMKSA9PSAxKSAvKiBzdWNjZXNzICovCkBAIC01NDgxLDcg KzU0ODIsNiBAQCBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFi bGUsIGNoYXIgKmNvbHVtbnMsCiAJCQlyZXMgPSBQUWdldFJlc3VsdChjb24pOwogCQkJaWYgKFBR cmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKIAkJCQlmcHJpbnRmKHN0ZGVy ciwgIkVycm9yOiAlc1xuIiwgUFFlcnJvck1lc3NhZ2UoY29uKSk7Ci0JCQlQUWNsZWFyKHJlcyk7 CiAJCX0KIAkJZWxzZQogCQkJZnByaW50ZihzdGRlcnIsICJFcnJvcjogJXNcbiIsIFBRZXJyb3JN ZXNzYWdlKGNvbikpOwotLSAKMi40My4wCgpGcm9tIGE3MWM5MGY1NTZiYTE0MzMzNWQ5NjMxZWJi ZGY5NmI3MTIwYzZkMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9u b3YgPGJvcmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRlOiBUaHUsIDI5IEphbiAyMDI2IDIwOjI0 OjU0ICswNzAwClN1YmplY3Q6IFtQQVRDSCB2NyAxNS8xOF0gRml4aW5nIG1lbW9yeSBsZWFrIGR1 cmluZyBkYXRhIGZsdXNoIGluIENPUFkgQklOQVJZCiB0ZXN0CgotLS0KIHNyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMgfCAyNiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDE2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDZm NDI0MzhkOTcwLi44ZWNhNTM3YjcxOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVu Y2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC04NzEsNyArODcxLDcgQEAg c3RhdGljIGJvb2wgc29ja2V0X2hhc19pbnB1dChzb2NrZXRfc2V0ICpzYSwgaW50IGZkLCBpbnQg aWR4KTsKIAogLyogY2FsbGJhY2sgdXNlZCB0byBidWlsZCByb3dzIGZvciBDT1BZIGR1cmluZyBk YXRhIGxvYWRpbmcgKi8KIHR5cGVkZWYgdm9pZCAoKmluaXRSb3dNZXRob2QpCQkoUFFFeHBCdWZm ZXJEYXRhICpzcWwsIGludDY0IGN1cnIpOwotdHlwZWRlZiB2b2lkICgqaW5pdFJvd01ldGhvZEJp bikJKFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBpbnQ2NF90IGN1cnIsIGludDMyX3QgcGFy ZW50KTsKK3R5cGVkZWYgdm9pZCAoKmluaXRSb3dNZXRob2RCaW4pCShQR2Nvbm4gKmNvbiwgaW50 NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCk7CiAKIC8qIGNhbGxiYWNrIGZ1bmN0aW9ucyBmb3Ig b3VyIGZsZXggbGV4ZXIgKi8KIHN0YXRpYyBjb25zdCBQc3FsU2NhbkNhbGxiYWNrcyBwZ2JlbmNo X2NhbGxiYWNrcyA9IHsKQEAgLTUzNDUsMTMgKzUzNDUsMTggQEAgc2VuZEJpbmFyeUNvcHlUcmFp bGVyKFBHY29ubiAqY29uKQogICogRmxhc2hlcyBjdXJyZW50IGJ1ZmZlciBvdmVyIG5ldHdvcmsg aWYgbmVlZGVkCiAgKi8KIHN0YXRpYyB2b2lkCi1mbHVzaEJ1ZmZlcihQR2Nvbm4gKmNvbiwgUEdy ZXN1bHQgKnJlcywgaW50MTZfdCByb3dfbGVuKQorZmx1c2hCdWZmZXIoUEdjb25uICpjb24sIGlu dDE2X3Qgcm93X2xlbikKIHsKKwlQR3Jlc3VsdCAqcmVzOworCiAJaWYgKGJpbl9jb3B5X2J1ZmZl cl9sZW5ndGggKyByb3dfbGVuID4gQklOX0NPUFlfQlVGX1NJWkUpCiAJeworCQlyZXMgPSBQUWdl dFJlc3VsdChjb24pOwogCQkvKiBmbHVzaCBjdXJyZW50IGJ1ZmZlciAqLwogCQlpZiAoUFFyZXN1 bHRTdGF0dXMocmVzKSA9PSBQR1JFU19DT1BZX0lOKQogCQkJUFFwdXRDb3B5RGF0YShjb24sIChj aGFyICopIGJpbl9jb3B5X2J1ZmZlciwgYmluX2NvcHlfYnVmZmVyX2xlbmd0aCk7CisJCWVsc2UK KwkJCXBnX2ZhdGFsKCJJdCBpcyBOT1QgYSBDT1BZIGNvbW1hbmQgdGhhdCBpcyBjdXJyZW50bHkg cnVubmluZyIpOwogCQliaW5fY29weV9idWZmZXJfbGVuZ3RoID0gMDsKIAl9CiB9CkBAIC01MzYw LDcgKzUzNjUsNyBAQCBmbHVzaEJ1ZmZlcihQR2Nvbm4gKmNvbiwgUEdyZXN1bHQgKnJlcywgaW50 MTZfdCByb3dfbGVuKQogICogU2VuZHMgY3VycmVudCBicmFuY2ggcm93IHRvIGJ1ZmZlcgogICov CiBzdGF0aWMgdm9pZAotaW5pdEJyYW5jaEJpbmFyeShQR2Nvbm4gKmNvbiwgUEdyZXN1bHQgKnJl cywgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKK2luaXRCcmFuY2hCaW5hcnkoUEdjb25u ICpjb24sIGludDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiB7CiAJLyoKIAkgKiBFYWNoIHJv dyBvZiBicmFuY2ggdGFibGUgaGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKQEAgLTUzNjksNyAr NTM3NCw3IEBAIGluaXRCcmFuY2hCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGlu dDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiAJICovCiAJaW50MTZfdAltYXhfcm93X2xlbiA9 ICAzNSArIDIgKyA0KjM7IC8qIG1heCByb3cgc2l6ZSBpcyAzNSAqLwogCi0JZmx1c2hCdWZmZXIo Y29uLCByZXMsIG1heF9yb3dfbGVuKTsKKwlmbHVzaEJ1ZmZlcihjb24sIG1heF9yb3dfbGVuKTsK IAogCWFkZENvbHVtbkNvdW50ZXIoMik7CiAKQEAgLTUzODEsNyArNTM4Niw3IEBAIGluaXRCcmFu Y2hCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJf dCBwYXJlbnQpCiAgKiBTZW5kcyBjdXJyZW50IHRlbGxlciByb3cgdG8gYnVmZmVyCiAgKi8KIHN0 YXRpYyB2b2lkCi1pbml0VGVsbGVyQmluYXJ5KFBHY29ubiAqY29uLCBQR3Jlc3VsdCAqcmVzLCBp bnQ2NF90IGN1cnIsIGludDMyX3QgcGFyZW50KQoraW5pdFRlbGxlckJpbmFyeShQR2Nvbm4gKmNv biwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKIHsKIAkvKgogCSAqIEVhY2ggcm93IG9m IHRlbGxlcnMgdGFibGUgaGFzIGZvbGxvd2luZyBleHRyYSBieXRlczoKQEAgLTUzOTAsNyArNTM5 NSw3IEBAIGluaXRUZWxsZXJCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0 X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCiAJICovCiAJaW50MTZfdAltYXhfcm93X2xlbiA9ICA0 MCArIDIgKyA0KjQ7IC8qIG1heCByb3cgc2l6ZSBpcyA0MCAqLwogCi0JZmx1c2hCdWZmZXIoY29u LCByZXMsIG1heF9yb3dfbGVuKTsKKwlmbHVzaEJ1ZmZlcihjb24sIG1heF9yb3dfbGVuKTsKIAog CWFkZENvbHVtbkNvdW50ZXIoMyk7CiAKQEAgLTU0MDMsNyArNTQwOCw3IEBAIGluaXRUZWxsZXJC aW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGludDY0X3QgY3VyciwgaW50MzJfdCBw YXJlbnQpCiAgKiBTZW5kcyBjdXJyZW50IGFjY291bnQgcm93IHRvIGJ1ZmZlcgogICovCiBzdGF0 aWMgdm9pZAotaW5pdEFjY291bnRCaW5hcnkoUEdjb25uICpjb24sIFBHcmVzdWx0ICpyZXMsIGlu dDY0X3QgY3VyciwgaW50MzJfdCBwYXJlbnQpCitpbml0QWNjb3VudEJpbmFyeShQR2Nvbm4gKmNv biwgaW50NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKIHsKIAkvKgogCSAqIEVhY2ggcm93IG9m IGFjY291bnRzIHRhYmxlIGhhcyBmb2xsb3dpbmcgZXh0cmEgYnl0ZXM6CkBAIC01NDEyLDcgKzU0 MTcsNyBAQCBpbml0QWNjb3VudEJpbmFyeShQR2Nvbm4gKmNvbiwgUEdyZXN1bHQgKnJlcywgaW50 NjRfdCBjdXJyLCBpbnQzMl90IHBhcmVudCkKIAkgKi8KIAlpbnQxNl90CW1heF9yb3dfbGVuID0g MjUwICsgMiArIDQqNDsgLyogbWF4IHJvdyBzaXplIGlzIDI1MCBmb3IgaW50NjQgKi8KIAotCWZs dXNoQnVmZmVyKGNvbiwgcmVzLCBtYXhfcm93X2xlbik7CisJZmx1c2hCdWZmZXIoY29uLCBtYXhf cm93X2xlbik7CiAKIAlhZGRDb2x1bW5Db3VudGVyKDMpOwogCkBAIC01NDYyLDEwICs1NDY3LDEw IEBAIGluaXRQb3B1bGF0ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hh ciAqY29sdW1ucywKIAogCWZvciAoaW50NjRfdCBpID0gc3RhcnQ7IGkgPCBzdGFydCArIGJhc2U7 IGkrKykKIAl7Ci0JCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbik7Ci0JCWluaXRfcm93KGNvbiwgcmVz LCBpLCBiYXNlKTsKKwkJaW5pdF9yb3coY29uLCBpLCBiYXNlKTsKIAl9CiAKKwlyZXMgPSBQUWdl dFJlc3VsdChjb24pOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpID09IFBHUkVTX0NPUFlfSU4p CiAJCVBRcHV0Q29weURhdGEoY29uLCAoY2hhciAqKSBiaW5fY29weV9idWZmZXIsIGJpbl9jb3B5 X2J1ZmZlcl9sZW5ndGgpOwogCWVsc2UKQEAgLTU0NzQsNiArNTQ3OSw3IEBAIGluaXRQb3B1bGF0 ZVRhYmxlQmluYXJ5KFBHY29ubiAqY29uLCBjaGFyICp0YWJsZSwgY2hhciAqY29sdW1ucywKIAog CXNlbmRCaW5hcnlDb3B5VHJhaWxlcihjb24pOwogCisKIAlyZXMgPSBQUWdldFJlc3VsdChjb24p OwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpID09IFBHUkVTX0NPUFlfSU4pCiAJewotLSAKMi40 My4wCgpGcm9tIGE1OTMzZjQwYmUwZjNkNDA4YmI5MjBmMjk2ZmI1MTE5YzNlYzI4ZjQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJvcmlzLm1pcm9ub3ZAZ21h aWwuY29tPgpEYXRlOiBGcmksIDMwIEphbiAyMDI2IDEzOjU5OjM2ICswNzAwClN1YmplY3Q6IFtQ QVRDSCB2NyAxNi8xOF0gRml4aW5nIG1lbW9yeSBsZWFrIHNob3duIGJ5IHZhbGdyaW5kCgotLS0K IHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgfCA2ICsrKysrLQogMSBmaWxlIGNoYW5nZWQsIDUg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IDhlY2E1MzdiNzE4 Li40NjZkOTAyM2Q3MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysg Yi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC01MzU3LDYgKzUzNTcsOCBAQCBmbHVzaEJ1 ZmZlcihQR2Nvbm4gKmNvbiwgaW50MTZfdCByb3dfbGVuKQogCQkJUFFwdXRDb3B5RGF0YShjb24s IChjaGFyICopIGJpbl9jb3B5X2J1ZmZlciwgYmluX2NvcHlfYnVmZmVyX2xlbmd0aCk7CiAJCWVs c2UKIAkJCXBnX2ZhdGFsKCJJdCBpcyBOT1QgYSBDT1BZIGNvbW1hbmQgdGhhdCBpcyBjdXJyZW50 bHkgcnVubmluZyIpOworCisJCVBRY2xlYXIocmVzKTsKIAkJYmluX2NvcHlfYnVmZmVyX2xlbmd0 aCA9IDA7CiAJfQogfQpAQCAtNTQ2MCw2ICs1NDYyLDcgQEAgaW5pdFBvcHVsYXRlVGFibGVCaW5h cnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpjb2x1bW5zLAogCiAJaWYgKFBRcmVz dWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09QWV9JTikKIAkJcGdfZmF0YWwoInVuZXhwZWN0ZWQg Y29weSBpbiByZXN1bHQ6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29uKSk7CisJUFFjbGVhcihyZXMp OwogCiAKIAlzZW5kQmluYXJ5Q29weUhlYWRlcihjb24pOwpAQCAtNTQ3NSw2ICs1NDc4LDcgQEAg aW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpj b2x1bW5zLAogCQlQUXB1dENvcHlEYXRhKGNvbiwgKGNoYXIgKikgYmluX2NvcHlfYnVmZmVyLCBi aW5fY29weV9idWZmZXJfbGVuZ3RoKTsKIAllbHNlCiAJCWZwcmludGYoc3RkZXJyLCAiVW5leHBl Y3RlZCBtb2RlICVkIGluc3RlYWQgb2YgJWRcbiIsIFBRcmVzdWx0U3RhdHVzKHJlcyksIFBHUkVT X0NPUFlfSU4pOworCVBRY2xlYXIocmVzKTsKIAogCiAJc2VuZEJpbmFyeUNvcHlUcmFpbGVyKGNv bik7CkBAIC01NDg1LDYgKzU0ODksNyBAQCBpbml0UG9wdWxhdGVUYWJsZUJpbmFyeShQR2Nvbm4g KmNvbiwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCiAJewogCQlpZiAoUFFwdXRDb3B5RW5k KGNvbiwgTlVMTCkgPT0gMSkgLyogc3VjY2VzcyAqLwogCQl7CisJCQlQUWNsZWFyKHJlcyk7CiAJ CQlyZXMgPSBQUWdldFJlc3VsdChjb24pOwogCQkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0g UEdSRVNfQ09NTUFORF9PSykKIAkJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiAlc1xuIiwgUFFl cnJvck1lc3NhZ2UoY29uKSk7CkBAIC01NDkyLDcgKzU0OTcsNiBAQCBpbml0UG9wdWxhdGVUYWJs ZUJpbmFyeShQR2Nvbm4gKmNvbiwgY2hhciAqdGFibGUsIGNoYXIgKmNvbHVtbnMsCiAJCWVsc2UK IAkJCWZwcmludGYoc3RkZXJyLCAiRXJyb3I6ICVzXG4iLCBQUWVycm9yTWVzc2FnZShjb24pKTsK IAl9Ci0KIAlQUWNsZWFyKHJlcyk7CiB9CiAKLS0gCjIuNDMuMAoKRnJvbSA2YTMwMzZmODk4YjA1 MGQ1ZTcxZTcwZWFjZWNjZDYzMDAzYWE2NDQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBCb3JpcyBNaXJvbm92IDxib3Jpcy5taXJvbm92QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCA2IEZl YiAyMDI2IDEzOjUzOjA3ICswNzAwClN1YmplY3Q6IFtQQVRDSCB2NyAxNy8xOF0gQWRkaW5nIGFi aWxpdHkgdG8gc3dpdGNoIGRhdGEgaW5pdCBiZXR3ZWVuIHNpbmdsZQogYW5kIG11bHRpcGxlIHRy YW5zYWN0aW9ucwoKLS0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jICAgICAgICAgICAgICAg ICAgICB8IDE5MiArKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdi ZW5jaF93aXRoX3NlcnZlci5wbCB8ICA5MyArKysrKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTcz IGluc2VydGlvbnMoKyksIDExMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn YmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCA0NjZkOTAy M2Q3Mi4uYWY3MWUzNThlNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMK KysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtMTU5LDkgKzE1OSw4IEBAIHR5cGVk ZWYgc3RydWN0IHNvY2tldF9zZXQKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBzb21lIGNvbmZpZ3VyYWJs ZSBwYXJhbWV0ZXJzICovCi0KLSNkZWZpbmUgREVGQVVMVF9JTklUX1NURVBTICJkdGd2cCIJLyog ZGVmYXVsdCAtSSBzZXR0aW5nICovCi0jZGVmaW5lIEFMTF9JTklUX1NURVBTICJkdGdDR2lJdnBm IgkvKiBhbGwgcG9zc2libGUgc3RlcHMgKi8KKyNkZWZpbmUgREVGQVVMVF9JTklUX1NURVBTICJk dGd2cCIJCS8qIGRlZmF1bHQgLUkgc2V0dGluZyAqLworI2RlZmluZSBBTExfSU5JVF9TVEVQUyAi ZHRnTVNjR1V2cGYiCS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAqLwogCiAjZGVmaW5lIExPR19TVEVQ X1NFQ09ORFMJNQkvKiBzZWNvbmRzIGJldHdlZW4gbG9nIG1lc3NhZ2VzICovCiAjZGVmaW5lIERF RkFVTFRfTlhBQ1RTCQkxMAkvKiBkZWZhdWx0IG54YWN0cyAqLwpAQCAtMTcxLDE0ICsxNzAsMTcg QEAgdHlwZWRlZiBzdHJ1Y3Qgc29ja2V0X3NldAogI2RlZmluZSBNSU5fWklQRklBTl9QQVJBTQkJ MS4wMDEJLyogbWluaW11bSBwYXJhbWV0ZXIgZm9yIHppcGZpYW4gKi8KICNkZWZpbmUgTUFYX1pJ UEZJQU5fUEFSQU0JCTEwMDAuMAkvKiBtYXhpbXVtIHBhcmFtZXRlciBmb3IgemlwZmlhbiAqLwog Ci0vKiBvcmlnaW5hbCBzaW5nbGUgdHJhbnNhY3Rpb24gc2VydmVyLXNpZGUgbWV0aG9kICovCi0j ZGVmaW5lIEdFTl9UWVBFX0lOU0VSVF9PUklHSU5BTAknRycJLyogdXNlIElOU0VSVCAuLiBTRUxF Q1QgZ2VuZXJhdGVfc2VyaWVzIHRvIGdlbmVyYXRlIGRhdGEgKi8KLS8qICdvbmUgdHJhbnNhY3Rp b24gcGVyIHNjYWxlJyBzZXJ2ZXItc2lkZSBtZXRob2RzICovCi0jZGVmaW5lIEdFTl9UWVBFX0lO U0VSVF9TRVJJRVMJCSdpJwkvKiB1c2UgSU5TRVJUIC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMg dG8gZ2VuZXJhdGUgZGF0YSAqLwotI2RlZmluZSBHRU5fVFlQRV9JTlNFUlRfVU5ORVNUICAJJ0kn CS8qIHVzZSBJTlNFUlQgLi4gU0VMRUNUIHVubmVzdCB0byBnZW5lcmF0ZSBkYXRhICovCi0jZGVm aW5lIEdFTl9UWVBFX0NPUFlfT1JJR0lOQUwJCSdnJyAvKiB1c2UgQ09QWSAuLiBGUk9NIFNURElO IC4uIFRFWFQgdG8gZ2VuZXJhdGUgZGF0YSAqLwotI2RlZmluZSBHRU5fVFlQRV9DT1BZX0JJTkFS WQkJJ0MnIC8qIHVzZSBDT1BZIC4uIEZST00gU1RESU4gLi4gQklOQVJZIHRvIGdlbmVyYXRlIGRh dGEgKi8KLQorLyogc2VydmVyLXNpZGUgbWV0aG9kcyB0byBnZW5lcmF0ZSBkYXRhICovCisjZGVm aW5lIElOSVRfU1RFUF9HRU5fVFlQRV9JTlNFUlRfU0VSSUVTCSdHJwkvKiB1c2UgSU5TRVJUIC4u IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMgdG8gZ2VuZXJhdGUgZGF0YSAqLworI2RlZmluZSBJTklU X1NURVBfR0VOX1RZUEVfSU5TRVJUX1VOTkVTVAknVScJLyogdXNlIElOU0VSVCAuLiBTRUxFQ1Qg dW5uZXN0IHRvIGdlbmVyYXRlIGRhdGEgKi8KKy8qIGNsaWVudC1zaWRlIG1ldGhvZHMgdG8gZ2Vu ZXJhdGUgZGF0YSAqLworI2RlZmluZSBJTklUX1NURVBfR0VOX1RZUEVfQ09QWV9URVhUCQknZycg LyogdXNlIENPUFkgLi4gRlJPTSBTVERJTiAuLiBURVhUIHRvIGdlbmVyYXRlIGRhdGEgKi8KKyNk ZWZpbmUgSU5JVF9TVEVQX0dFTl9UWVBFX0NPUFlfQklOQVJZCQknYycgLyogdXNlIENPUFkgLi4g RlJPTSBTVERJTiAuLiBCSU5BUlkgdG8gZ2VuZXJhdGUgZGF0YSAqLworLyogZGF0YSBpbml0IHBz ZXVkbyBzdGVwcyAqLworI2RlZmluZSBJTklUX1NURVBfR0VOX1RZUEVfU0lOR0xFX1hBQ1QJCSdT JyAvKiBzd2l0Y2ggdG8gaW5pdCBkYXRhIGFzIHNpbmdsZSB0cmFuc2FjdGlvbiAqLworI2RlZmlu ZSBJTklUX1NURVBfR0VOX1RZUEVfTVVMVElfWEFDVAkJJ00nIC8qIHN3aXRjaCB0byBpbml0IGRh dGEgYXMgbXVsdGlwbGUgdHJhbnNhY3Rpb25zICovCisKK3N0YXRpYyBib29sIG11bHRpX3hhY3Qg PSBmYWxzZTsJLyogaW5pdCBkYXRhIHR5cGUgKGFzIHNpbmdsZSBvciBtdWx0aXBsZSB0cmFuc2Fj dGlvbnMpICovCiBzdGF0aWMgaW50CW54YWN0cyA9IDA7CQkJLyogbnVtYmVyIG9mIHRyYW5zYWN0 aW9ucyBwZXIgY2xpZW50ICovCiBzdGF0aWMgaW50CWR1cmF0aW9uID0gMDsJCS8qIGR1cmF0aW9u IGluIHNlY29uZHMgKi8KIHN0YXRpYyBpbnQ2NCBlbmRfdGltZSA9IDA7CQkvKiB3aGVuIHRvIHN0 b3AgaW4gbWljcm8gc2Vjb25kcywgdW5kZXIgLVQgKi8KQEAgLTE5Miw3ICsxOTQsNyBAQCBzdGF0 aWMgaW50CXNjYWxlID0gMTsKIC8qCiAgKiBtb2RlIG9mIGRhdGEgZ2VuZXJhdGlvbiB0byB1c2UK ICAqLwotc3RhdGljIGNoYXIJZGF0YV9nZW5lcmF0aW9uX3R5cGUgPSBHRU5fVFlQRV9DT1BZX09S SUdJTkFMOworc3RhdGljIGNoYXIJZGF0YV9nZW5lcmF0aW9uX3R5cGUgPSBJTklUX1NURVBfR0VO X1RZUEVfQ09QWV9URVhUOwogCiAvKgogICogQ09QWSBGUk9NIEJJTkFSWSBleGVjdXRpb24gYnVm ZmVyCkBAIC05MzQsMTEgKzkzNiwxMyBAQCB1c2FnZSh2b2lkKQogCQkgICAiICAgICAgICAgICAg ICAgICAgICAgICAgICAgcnVuIHNlbGVjdGVkIGluaXRpYWxpemF0aW9uIHN0ZXBzLCBpbiB0aGUg c3BlY2lmaWVkIG9yZGVyXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBkOiBk cm9wIGFueSBleGlzdGluZyBwZ2JlbmNoIHRhYmxlc1xuIgogCQkgICAiICAgICAgICAgICAgICAg ICAgICAgICAgICAgdDogY3JlYXRlIHRoZSB0YWJsZXMgdXNlZCBieSB0aGUgc3RhbmRhcmQgcGdi ZW5jaCBzY2VuYXJpb1xuIgotCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgZzogZ2Vu ZXJhdGUgZGF0YSwgY2xpZW50LXNpZGVcbiIKLQkJICAgIiAgICAgICAgICAgICAgICAgICAgICAg ICAgIEM6ICAgY2xpZW50LXNpZGUgKHNpbmdsZSBUTlgpIENPUFkgLi4gRlJPTSBTVERJTiAuLiBC SU5BUllcbiIKLQkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIEc6IGdlbmVyYXRlIGRh dGEsIHNlcnZlci1zaWRlIGluIHNpbmdsZSB0cmFuc2FjdGlvblxuIgotCQkgICAiICAgICAgICAg ICAgICAgICAgICAgICAgICAgaTogICBzZXJ2ZXItc2lkZSAobXVsdGlwbGUgVFhOcykgSU5TRVJU IC4uIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXNcbiIKLQkJICAgIiAgICAgICAgICAgICAgICAgICAg ICAgICAgIEk6ICAgc2VydmVyLXNpZGUgKG11bHRpcGxlIFRYTnMpIElOU0VSVCAuLiBTRUxFQ1Qg dW5uZXN0XG4iCisJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBnZW5lcmF0ZSBk YXRhLCBjbGllbnQtc2lkZTpcbiIKKwkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZzogICBDT1BZIC4uIEZST00gU1RESU4gLi4gVEVYVFxuIgorCQkgICAiICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjOiAgIENPUFkgLi4gRlJPTSBTVERJTiAuLiBCSU5BUllcbiIKKwkJICAg IiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGdlbmVyYXRlIGRhdGEsIHNlcnZlci1zaWRl OlxuIgorCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHOiAgIElOU0VSVCAuLiBT RUxFQ1QgZ2VuZXJhdGVfc2VyaWVzXG4iCisJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFU6ICAgSU5TRVJUIC4uIFNFTEVDVCB1bm5lc3RcbiIKKwkJICAgIiAgICAgICAgICAgICAg ICAgICAgICAgICAgIE06IHVzZSBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gaW5pdGlhbGl6ZSBk YXRhXG4iCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICB2OiBpbnZva2UgVkFDVVVN IG9uIHRoZSBzdGFuZGFyZCB0YWJsZXNcbiIKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAg ICAgIHA6IGNyZWF0ZSBwcmltYXJ5IGtleSBpbmRleGVzIG9uIHRoZSBzdGFuZGFyZCB0YWJsZXNc biIKIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6IGNyZWF0ZSBmb3JlaWduIGtl eXMgYmV0d2VlbiB0aGUgc3RhbmRhcmQgdGFibGVzXG4iCkBAIC01MDQ5LDggKzUwNTMsOCBAQCBp bml0QWNjb3VudChQUUV4cEJ1ZmZlckRhdGEgKnNxbCwgaW50NjQgY3VycikKIH0KIAogc3RhdGlj IHZvaWQKLWluaXRQb3B1bGF0ZVRhYmxlKFBHY29ubiAqY29uLCBjb25zdCBjaGFyICp0YWJsZSwg aW50NjQgYmFzZSwKLQkJCQkgIGluaXRSb3dNZXRob2QgaW5pdF9yb3cpCitpbml0UG9wdWxhdGVU YWJsZVRleHQoUEdjb25uICpjb24sIGNvbnN0IGNoYXIgKnRhYmxlLCBpbnQ2NCBiYXNlLAorCQkJ CQkgIGluaXRSb3dNZXRob2QgaW5pdF9yb3cpCiB7CiAJaW50CQkJbjsKIAlpbnQ2NAkJazsKQEAg LTUxNzgsNiArNTE4Miw5IEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlVGV4dChQR2Nvbm4g KmNvbikKIHsKIAlmcHJpbnRmKHN0ZGVyciwgIlRFWFQgbW9kZS4uLlxuIik7CiAKKwlpZiAobXVs dGlfeGFjdCkKKwkJZnByaW50ZihzdGRlcnIsICJXQVJOSU5HISBNdWx0aXBsZSB0cmFuc2FjdGlv bnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBtb2RlXG4iKTsKKwogCS8qCiAJICogd2UgZG8g YWxsIG9mIHRoaXMgaW4gb25lIHRyYW5zYWN0aW9uIHRvIGVuYWJsZSB0aGUgYmFja2VuZCdzCiAJ ICogZGF0YS1sb2FkaW5nIG9wdGltaXphdGlvbnMKQEAgLTUxOTEsOSArNTE5OCw5IEBAIGluaXRH ZW5lcmF0ZURhdGFDbGllbnRTaWRlVGV4dChQR2Nvbm4gKmNvbikKIAkgKiBmaWxsIGJyYW5jaGVz LCB0ZWxsZXJzLCBhY2NvdW50cyBpbiB0aGF0IG9yZGVyIGluIGNhc2UgZm9yZWlnbiBrZXlzCiAJ ICogYWxyZWFkeSBleGlzdAogCSAqLwotCWluaXRQb3B1bGF0ZVRhYmxlKGNvbiwgInBnYmVuY2hf YnJhbmNoZXMiLCBuYnJhbmNoZXMsIGluaXRCcmFuY2gpOwotCWluaXRQb3B1bGF0ZVRhYmxlKGNv biwgInBnYmVuY2hfdGVsbGVycyIsICBudGVsbGVycywgIGluaXRUZWxsZXIpOwotCWluaXRQb3B1 bGF0ZVRhYmxlKGNvbiwgInBnYmVuY2hfYWNjb3VudHMiLCBuYWNjb3VudHMsIGluaXRBY2NvdW50 KTsKKwlpbml0UG9wdWxhdGVUYWJsZVRleHQoY29uLCAicGdiZW5jaF9icmFuY2hlcyIsIG5icmFu Y2hlcywgaW5pdEJyYW5jaCk7CisJaW5pdFBvcHVsYXRlVGFibGVUZXh0KGNvbiwgInBnYmVuY2hf dGVsbGVycyIsICBudGVsbGVycywgIGluaXRUZWxsZXIpOworCWluaXRQb3B1bGF0ZVRhYmxlVGV4 dChjb24sICJwZ2JlbmNoX2FjY291bnRzIiwgbmFjY291bnRzLCBpbml0QWNjb3VudCk7CiAKIAll eGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwogfQpAQCAtNTQ1MCw3ICs1NDU3LDggQEAg aW5pdFBvcHVsYXRlVGFibGVCaW5hcnkoUEdjb25uICpjb24sIGNoYXIgKnRhYmxlLCBjaGFyICpj b2x1bW5zLAogCS8qIFVzZSBDT1BZIHdpdGggRlJFRVpFIG9uIHYxNCBhbmQgbGF0ZXIgZm9yIGFs bCBvcmRpbmFyeSB0YWJsZXMgKi8KIAlpZiAoKFBRc2VydmVyVmVyc2lvbihjb24pID49IDE0MDAw MCkgJiYKIAkJZ2V0X3RhYmxlX3JlbGtpbmQoY29uLCB0YWJsZSkgPT0gUkVMS0lORF9SRUxBVElP TikKLQkJY29weV9zdGF0ZW1lbnRfZm10ID0gImNvcHkgJXMgKCVzKSBmcm9tIHN0ZGluIHdpdGgg KGZvcm1hdCBiaW5hcnkpIjsKKwkJaWYgKCFtdWx0aV94YWN0KQorCQkJY29weV9zdGF0ZW1lbnRf Zm10ID0gImNvcHkgJXMgKCVzKSBmcm9tIHN0ZGluIHdpdGggKGZvcm1hdCBiaW5hcnksIGZyZWV6 ZSBvbikiOwogCiAJbiA9IHBnX3NucHJpbnRmKGNvcHlfc3RhdGVtZW50LCBzaXplb2YoY29weV9z dGF0ZW1lbnQpLCBjb3B5X3N0YXRlbWVudF9mbXQsIHRhYmxlLCBjb2x1bW5zKTsKIAlpZiAobiA+ PSBzaXplb2YoY29weV9zdGF0ZW1lbnQpKQpAQCAtNTUyMiwxMSArNTUzMCwxMyBAQCBpbml0R2Vu ZXJhdGVEYXRhQ2xpZW50U2lkZUJpbmFyeShQR2Nvbm4gKmNvbikKIAkvKiB0cnVuY2F0ZSBhd2F5 IGFueSBvbGQgZGF0YSAqLwogCWluaXRUcnVuY2F0ZVRhYmxlcyhjb24pOwogCi0JZXhlY3V0ZVN0 YXRlbWVudChjb24sICJjb21taXQiKTsKKwlpZiAobXVsdGlfeGFjdCkKKwkJZXhlY3V0ZVN0YXRl bWVudChjb24sICJjb21taXQiKTsKIAogCWZvciAoaW50IGkgPSAwOyBpIDwgc2NhbGU7IGkrKykK IAl7Ci0JCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKKwkJaWYgKG11bHRpX3hhY3Qp CisJCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJlZ2luIik7CiAKIAkJaW5pdFBvcHVsYXRlVGFi bGVCaW5hcnkoY29uLCAicGdiZW5jaF9icmFuY2hlcyIsICJiaWQsIGJiYWxhbmNlIiwKIAkJCQkJ CQkJaSwgbmJyYW5jaGVzLCBpbml0QnJhbmNoQmluYXJ5KTsKQEAgLTU1MzUsOSArNTU0NSwxMyBA QCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZUJpbmFyeShQR2Nvbm4gKmNvbikKIAkJaW5pdFBv cHVsYXRlVGFibGVCaW5hcnkoY29uLCAicGdiZW5jaF9hY2NvdW50cyIsICJhaWQsIGJpZCwgYWJh bGFuY2UiLAogCQkJCQkJCQlpLCBuYWNjb3VudHMsIGluaXRBY2NvdW50QmluYXJ5KTsKIAotCQll eGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCQlpZiAobXVsdGlfeGFjdCkKKwkJCWV4 ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CiAJfQogCisJaWYgKCFtdWx0aV94YWN0KQor CQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCiAJcGdfZnJlZShiaW5fY29weV9i dWZmZXIpOwogfQogCkBAIC01NTQ3LDE0ICs1NTYxLDE1IEBAIGluaXRHZW5lcmF0ZURhdGFDbGll bnRTaWRlQmluYXJ5KFBHY29ubiAqY29uKQogc3RhdGljIHZvaWQKIGluaXRHZW5lcmF0ZURhdGFD bGllbnRTaWRlKFBHY29ubiAqY29uKQogewotCWZwcmludGYoc3RkZXJyLCAiZ2VuZXJhdGluZyBk YXRhIChjbGllbnQtc2lkZSkgaW4gIik7CisJZnByaW50ZihzdGRlcnIsICJnZW5lcmF0aW5nIGRh dGEgKGNsaWVudC1zaWRlIGFzICVzIHRyYW5zYWN0aW9uJXMpIGluICIsCisJCQltdWx0aV94YWN0 ID8gIm11bHRpcGxlIiA6ICJzaW5nbGUiLCBtdWx0aV94YWN0ID8gInMiIDogIiIpOwogCiAJc3dp dGNoIChkYXRhX2dlbmVyYXRpb25fdHlwZSkKIAl7Ci0JCWNhc2UgR0VOX1RZUEVfQ09QWV9PUklH SU5BTDoKKwkJY2FzZSBJTklUX1NURVBfR0VOX1RZUEVfQ09QWV9URVhUOgogCQkJaW5pdEdlbmVy YXRlRGF0YUNsaWVudFNpZGVUZXh0KGNvbik7CiAJCQlicmVhazsKLQkJY2FzZSBHRU5fVFlQRV9D T1BZX0JJTkFSWToKKwkJY2FzZSBJTklUX1NURVBfR0VOX1RZUEVfQ09QWV9CSU5BUlk6CiAJCQlp bml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZUJpbmFyeShjb24pOwogCQkJYnJlYWs7CiAJfQpAQCAt NTU2Miw1OCArNTU3Nyw3IEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRTaWRlKFBHY29ubiAqY29u KQogCiAvKgogICogR2VuZXJhdGluZyBkYXRhIHZpYSBJTlNFUlQgLi4gU0VMRUNUIC4uIEZST00g Z2VuZXJhdGVfc2VyaWVzCi0gKiB3aG9sZSBkYXRhc2V0IGluIHNpbmdsZSB0cmFuc2FjdGlvbgot ICovCi1zdGF0aWMgdm9pZAotZ2VuZXJhdGVEYXRhSW5zZXJ0U2luZ2xlVFhOKFBHY29ubiAqY29u KQotewotCVBRRXhwQnVmZmVyRGF0YSBzcWw7Ci0KLQlmcHJpbnRmKHN0ZGVyciwgInZpYSBJTlNF UlQgLi4gU0VMRUNUIGdlbmVyYXRlX3Nlcmllcy4uLiBpbiBzaW5nbGUgVFhOXG4iKTsKLQotCi0J LyoKLQkgKiB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUgdHJhbnNhY3Rpb24gdG8gZW5hYmxlIHRo ZSBiYWNrZW5kJ3MKLQkgKiBkYXRhLWxvYWRpbmcgb3B0aW1pemF0aW9ucwotCSAqLwotCWV4ZWN1 dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKLQotCS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBk YXRhICovCi0JaW5pdFRydW5jYXRlVGFibGVzKGNvbik7Ci0KLQlpbml0UFFFeHBCdWZmZXIoJnNx bCk7Ci0KLQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAotCQkJCQkgICJpbnNlcnQgaW50byBwZ2Jl bmNoX2JyYW5jaGVzKGJpZCwgYmJhbGFuY2UpICIKLQkJCQkJICAic2VsZWN0IGJpZCwgMCAiCi0J CQkJCSAgImZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsICVkKSBhcyBiaWQiLAotCQkJCQkgIHNjYWxl ICogbmJyYW5jaGVzKTsKLQlleGVjdXRlU3RhdGVtZW50KGNvbiwgc3FsLmRhdGEpOwotCi0JcHJp bnRmUFFFeHBCdWZmZXIoJnNxbCwKLQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5jaF90ZWxsZXJz KHRpZCwgYmlkLCB0YmFsYW5jZSkgIgotCQkJCQkgICJzZWxlY3QgdGlkICsgMSwgdGlkIC8gJWQg KyAxLCAwICIKLQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMCwgJWQpIGFzIHRpZCIsCi0J CQkJCSAgbnRlbGxlcnMsIChzY2FsZSAqIG50ZWxsZXJzKSAtIDEpOwotCWV4ZWN1dGVTdGF0ZW1l bnQoY29uLCBzcWwuZGF0YSk7Ci0KLQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAotCQkJCQkgICJp bnNlcnQgaW50byBwZ2JlbmNoX2FjY291bnRzKGFpZCwgYmlkLCBhYmFsYW5jZSwgIgotCQkJCQkJ CQkgICAiZmlsbGVyKSAiCi0JCQkJCSAgInNlbGVjdCBhaWQgKyAxLCBhaWQgLyAlZCArIDEsIDAs ICcnICIKLQkJCQkJICAiZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMCwgIiBJTlQ2NF9GT1JNQVQgIikg YXMgYWlkIiwKLQkJCQkJICBuYWNjb3VudHMsIChpbnQ2NCkgKHNjYWxlICogbmFjY291bnRzKSAt IDEpOwotCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7Ci0KLQlleGVjdXRlU3RhdGVt ZW50KGNvbiwgImNvbW1pdCIpOwotCi0JdGVybVBRRXhwQnVmZmVyKCZzcWwpOwotfQotCi0KLS8q Ci0gKiBHZW5lcmF0aW5nIGRhdGEgdmlhIElOU0VSVCAuLiBTRUxFQ1QgLi4gRlJPTSBnZW5lcmF0 ZV9zZXJpZXMKLSAqIE9uZSB0cmFuc2FjdGlvbiBwZXIgJ3NjYWxlJworICogUG9zc2libHkgYXMg Ik9uZSB0cmFuc2FjdGlvbiBwZXIgc2NhbGUiIGluIG11bHRpLXRyYW5zYWN0aW9uIG1vZGUKICAq Lwogc3RhdGljIHZvaWQKIGdlbmVyYXRlRGF0YUluc2VydFNlcmllcyhQR2Nvbm4gKmNvbikKQEAg LTU2MjksMTEgKzU1OTMsMTMgQEAgZ2VuZXJhdGVEYXRhSW5zZXJ0U2VyaWVzKFBHY29ubiAqY29u KQogCS8qIHRydW5jYXRlIGF3YXkgYW55IG9sZCBkYXRhICovCiAJaW5pdFRydW5jYXRlVGFibGVz KGNvbik7CiAKLQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOworCWlmIChtdWx0aV94 YWN0KQorCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwogCiAJZm9yIChpbnQgaSA9 IDA7IGkgPCBzY2FsZTsgaSsrKQogCXsKLQkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJiZWdpbiIp OworCQlpZiAobXVsdGlfeGFjdCkKKwkJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsK IAogCQlwcmludGZQUUV4cEJ1ZmZlcigmc3FsLAogCQkJCQkJICAiaW5zZXJ0IGludG8gcGdiZW5j aF9icmFuY2hlcyhiaWQsIGJiYWxhbmNlKSAiCkBAIC01NjU3LDE1ICs1NjIzLDE5IEBAIGdlbmVy YXRlRGF0YUluc2VydFNlcmllcyhQR2Nvbm4gKmNvbikKIAkJCQkJCSAgKGludDY0KSAoaSArIDEp ICogbmFjY291bnRzIC0gMSk7CiAJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBzcWwuZGF0YSk7CiAK LQkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKwkJaWYgKG11bHRpX3hhY3QpCisJ CQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwogCX0KIAorCWlmICghbXVsdGlfeGFj dCkKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKwogCXRlcm1QUUV4cEJ1ZmZl cigmc3FsKTsKIH0KIAogLyoKICAqIEdlbmVyYXRpbmcgZGF0YSB2aWEgSU5TRVJUIC4uIFNFTEVD VCAuLiBGUk9NIHVubmVzdAotICogT25lIHRyYW5zYWN0aW9uIHBlciAnc2NhbGUnCisgKiBQb3Nz aWJseSBhcyAiT25lIHRyYW5zYWN0aW9uIHBlciBzY2FsZSIgaW4gbXVsdGktdGFuc2FjdGlvbiBt b2RlCiAgKi8KIHN0YXRpYyB2b2lkCiBnZW5lcmF0ZURhdGFJbnNlcnRVbm5lc3QoUEdjb25uICpj b24pCkBAIC01NjgxLDExICs1NjUxLDEzIEBAIGdlbmVyYXRlRGF0YUluc2VydFVubmVzdChQR2Nv bm4gKmNvbikKIAkvKiB0cnVuY2F0ZSBhd2F5IGFueSBvbGQgZGF0YSAqLwogCWluaXRUcnVuY2F0 ZVRhYmxlcyhjb24pOwogCi0JZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKwlpZiAo bXVsdGlfeGFjdCkKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKIAogCWZvciAo aW50IHMgPSAwOyBzIDwgc2NhbGU7IHMrKykKIAl7Ci0JCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAi YmVnaW4iKTsKKwkJaWYgKG11bHRpX3hhY3QpCisJCQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImJl Z2luIik7CiAKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnNxbCwKIAkJCQkJCSAgImluc2VydCBpbnRv IHBnYmVuY2hfYnJhbmNoZXMoYmlkLGJiYWxhbmNlKSAiCkBAIC01NzE0LDE0ICs1Njg2LDE4IEBA IGdlbmVyYXRlRGF0YUluc2VydFVubmVzdChQR2Nvbm4gKmNvbikKIAkJCQkJCSAgKGludDY0KSAo cyArIDEpICogbmFjY291bnRzLCBuYWNjb3VudHMpOwogCQlleGVjdXRlU3RhdGVtZW50KGNvbiwg c3FsLmRhdGEpOwogCi0JCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CisJCWlmICht dWx0aV94YWN0KQorCQkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKIAl9CiAKKwlp ZiAoIW11bHRpX3hhY3QpCisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29tbWl0Iik7CisKIAl0 ZXJtUFFFeHBCdWZmZXIoJnNxbCk7CiB9CiAKIC8qCi0gKiBGaWxsIHRoZSBzdGFuZGFyZCB0YWJs ZXMgd2l0aCBzb21lIGRhdGEgZ2VuZXJhdGVkIG9uIHRoZSBzZXJ2ZXIKKyAqIEZpbGwgdGhlIHN0 YW5kYXJkIHRhYmxlcyB3aXRoIHNvbWUgZGF0YSBnZW5lcmF0ZWQgb24gdGhlIHNlcnZlciBzaWRl CiAgKgogICogQXMgYWxyZWFkeSB0aGUgY2FzZSB3aXRoIHRoZSBjbGllbnQtc2lkZSBkYXRhIGdl bmVyYXRpb24sIHRoZSBmaWxsZXIKICAqIGNvbHVtbiBkZWZhdWx0cyB0byBOVUxMIGluIHBnYmVu Y2hfYnJhbmNoZXMgYW5kIHBnYmVuY2hfdGVsbGVycywKQEAgLTU3MzAsMTcgKzU3MDYsMTUgQEAg Z2VuZXJhdGVEYXRhSW5zZXJ0VW5uZXN0KFBHY29ubiAqY29uKQogc3RhdGljIHZvaWQKIGluaXRH ZW5lcmF0ZURhdGFTZXJ2ZXJTaWRlKFBHY29ubiAqY29uKQogewotCWZwcmludGYoc3RkZXJyLCAi Z2VuZXJhdGluZyBkYXRhIChzZXJ2ZXItc2lkZSkgIik7CisJZnByaW50ZihzdGRlcnIsICJnZW5l cmF0aW5nIGRhdGEgKHNlcnZlci1zaWRlIGFzICVzIHRyYW5zYWN0aW9uJXMpICIsCisJCQltdWx0 aV94YWN0ID8gIm11bHRpcGxlIiA6ICJzaW5nbGUiLCBtdWx0aV94YWN0ID8gInMiIDogIiIpOwog CiAJc3dpdGNoIChkYXRhX2dlbmVyYXRpb25fdHlwZSkKIAl7Ci0JCWNhc2UgR0VOX1RZUEVfSU5T RVJUX09SSUdJTkFMOgotCQkJZ2VuZXJhdGVEYXRhSW5zZXJ0U2luZ2xlVFhOKGNvbik7Ci0JCQli cmVhazsKLQkJY2FzZSBHRU5fVFlQRV9JTlNFUlRfU0VSSUVTOgorCQljYXNlIElOSVRfU1RFUF9H RU5fVFlQRV9JTlNFUlRfU0VSSUVTOgogCQkJZ2VuZXJhdGVEYXRhSW5zZXJ0U2VyaWVzKGNvbik7 CiAJCQlicmVhazsKLQkJY2FzZSBHRU5fVFlQRV9JTlNFUlRfVU5ORVNUOgorCQljYXNlIElOSVRf U1RFUF9HRU5fVFlQRV9JTlNFUlRfVU5ORVNUOgogCQkJZ2VuZXJhdGVEYXRhSW5zZXJ0VW5uZXN0 KGNvbik7CiAJCQlicmVhazsKIAl9CkBAIC01ODQ1LDE5ICs1ODE5LDIwIEBAIGNoZWNrSW5pdFN0 ZXBzKGNvbnN0IGNoYXIgKmluaXRpYWxpemVfc3RlcHMpCiAKIAkJc3dpdGNoICgqc3RlcCkKIAkJ ewotCQkJY2FzZSAnZyc6Ci0JCQljYXNlICdDJzoKLQkJCWNhc2UgJ0cnOgotCQkJY2FzZSAnaSc6 Ci0JCQljYXNlICdJJzoKKwkJCWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0NPUFlfVEVYVDoKKwkJ CWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0NPUFlfQklOQVJZOgorCQkJY2FzZSBJTklUX1NURVBf R0VOX1RZUEVfSU5TRVJUX1NFUklFUzoKKwkJCWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0lOU0VS VF9VTk5FU1Q6CiAJCQkJZGF0YV9pbml0X3R5cGUrKzsKIAkJCQlkYXRhX2dlbmVyYXRpb25fdHlw ZSA9ICpzdGVwOwogCQkJCWJyZWFrOwogCQl9CiAJfQogCisJaWYgKGRhdGFfaW5pdF90eXBlID09 IDApCisJCXBnX2xvZ19lcnJvcigiV0FSTklORyEgTm8gZGF0YSBnZW5lcmF0aW9uIHR5cGUgaXMg cHJvdmlkZWQiKTsKIAlpZiAoZGF0YV9pbml0X3R5cGUgPiAxKQotCQlwZ19sb2dfZXJyb3IoIldB Uk5JTkchIE1vcmUgdGhhbiBvbmUgdHlwZSBvZiBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24g aXMgcmVxdWVzdGVkIik7CisJCXBnX2xvZ19lcnJvcigiV0FSTklORyEgTW9yZSB0aGFuIG9uZSB0 eXBlIG9mIGRhdGEgaW5pdGlhbGl6YXRpb24gaXMgcmVxdWVzdGVkIik7CiB9CiAKIC8qCkBAIC01 ODk1LDE3ICs1ODcwLDIyIEBAIHJ1bkluaXRTdGVwcyhjb25zdCBjaGFyICppbml0aWFsaXplX3N0 ZXBzKQogCQkJCW9wID0gImNyZWF0ZSB0YWJsZXMiOwogCQkJCWluaXRDcmVhdGVUYWJsZXMoY29u KTsKIAkJCQlicmVhazsKLQkJCWNhc2UgJ2cnOgotCQkJY2FzZSAnQyc6CisJCQljYXNlIElOSVRf U1RFUF9HRU5fVFlQRV9DT1BZX1RFWFQ6CisJCQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9DT1BZ X0JJTkFSWToKIAkJCQlvcCA9ICJjbGllbnQtc2lkZSBnZW5lcmF0ZSI7CiAJCQkJaW5pdEdlbmVy YXRlRGF0YUNsaWVudFNpZGUoY29uKTsKIAkJCQlicmVhazsKLQkJCWNhc2UgJ0cnOgotCQkJY2Fz ZSAnaSc6Ci0JCQljYXNlICdJJzoKKwkJCWNhc2UgSU5JVF9TVEVQX0dFTl9UWVBFX0lOU0VSVF9T RVJJRVM6CisJCQljYXNlIElOSVRfU1RFUF9HRU5fVFlQRV9JTlNFUlRfVU5ORVNUOgogCQkJCW9w ID0gInNlcnZlci1zaWRlIGdlbmVyYXRlIjsKIAkJCQlpbml0R2VuZXJhdGVEYXRhU2VydmVyU2lk ZShjb24pOwogCQkJCWJyZWFrOworCQkJY2FzZSBJTklUX1NURVBfR0VOX1RZUEVfU0lOR0xFX1hB Q1Q6CisJCQkJbXVsdGlfeGFjdCA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJY2FzZSBJTklUX1NU RVBfR0VOX1RZUEVfTVVMVElfWEFDVDoKKwkJCQltdWx0aV94YWN0ID0gdHJ1ZTsKKwkJCQlicmVh azsKIAkJCWNhc2UgJ3YnOgogCQkJCW9wID0gInZhY3V1bSI7CiAJCQkJaW5pdFZhY3V1bShjb24p OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIu cGwgYi9zcmMvYmluL3BnYmVuY2gvdC8wMDFfcGdiZW5jaF93aXRoX3NlcnZlci5wbAppbmRleCBh Mzc3MDQ4ZWFkMS4uYWNiMWUzMWQzZTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC90LzAw MV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsCisrKyBiL3NyYy9iaW4vcGdiZW5jaC90LzAwMV9wZ2Jl bmNoX3dpdGhfc2VydmVyLnBsCkBAIC0xMTcsNiArMTE3LDcgQEAgJG5vZGUtPnBnYmVuY2goCiAJ W3Fye1BlcmhhcHMgeW91IG5lZWQgdG8gZG8gaW5pdGlhbGl6YXRpb259XSwKIAkncnVuIHdpdGhv dXQgaW5pdCcpOwogCisKICMgSW5pdGlhbGl6ZSBwZ2JlbmNoIHRhYmxlcyBzY2FsZSAxCiAkbm9k ZS0+cGdiZW5jaCgKIAknLWknLCAwLApAQCAtMTYwLDcgKzE2MSw3IEBAICRub2RlLT5wZ2JlbmNo KAogCQlxcntjcmVhdGluZyB0YWJsZXN9LAogCQlxcntjcmVhdGluZyAzIHBhcnRpdGlvbnN9LAog CQlxcntjcmVhdGluZyBwcmltYXJ5IGtleXN9LAotCQlxcntnZW5lcmF0aW5nIGRhdGEgXChzZXJ2 ZXItc2lkZVwpfSwKKwkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwoc2VydmVyLXNpZGUgYXMgc2luZ2xl IHRyYW5zYWN0aW9uXCl9LAogCQlxcntjcmVhdGluZyBmb3JlaWduIGtleXN9LAogCQlxcnsoPyF2 YWN1dW1pbmcpfSwgICAgIyBubyB2YWN1dW0KIAkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CkBA IC0xNzAsMTUgKzE3MSwxNiBAQCAkbm9kZS0+cGdiZW5jaCgKICMgQ2hlY2sgZGF0YSBzdGF0ZSwg YWZ0ZXIgc2VydmVyLXNpZGUgZGF0YSBnZW5lcmF0aW9uLgogY2hlY2tfZGF0YV9zdGF0ZSgkbm9k ZSwgJ3NlcnZlci1zaWRlJyk7CiAKKwogIyBUZXN0IHNlcnZlci1zaWRlIGdlbmVyYXRpb24gd2l0 aCBVTk5FU1QKICRub2RlLT5wZ2JlbmNoKAotCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0 SScsCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRVJywKIAkwLAogCVtxcnteJH1dLAog CVsKIAkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxlc30sCiAJCXFye2NyZWF0aW5nIHRhYmxlc30sCi0J CXFye2dlbmVyYXRpbmcgZGF0YSBcKHNlcnZlci1zaWRlXCl9LAorCQlxcntnZW5lcmF0aW5nIGRh dGEgXChzZXJ2ZXItc2lkZSBhcyBzaW5nbGUgdHJhbnNhY3Rpb25cKX0sCiAJCXFye2RvbmUgaW4g XGQrXC5cZFxkIHMgfQogCV0sCiAJJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIHNlcnZlci1zaWRlIFVO TkVTVCcpOwpAQCAtMTg2LDE1ICsxODgsNDggQEAgJG5vZGUtPnBnYmVuY2goCiAjIENoZWNrIGRh dGEgc3RhdGUsIGFmdGVyIHNlcnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KIGNoZWNrX2RhdGFf c3RhdGUoJG5vZGUsICdzZXJ2ZXItc2lkZSAodW5uZXN0KScpOwogCi0jIFRlc3Qgc2VydmVyLXNp ZGUgZ2VuZXJhdGlvbiB3aXRoIFVOTkVTVAorCisjIFRlc3Qgc2VydmVyLXNpZGUgZ2VuZXJhdGlv biB3aXRoIENPUFkgVEVYVAorJG5vZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQt c3RlcHM9ZHRnJywKKwkwLAorCVtxcnteJH1dLAorCVsKKwkJcXJ7ZHJvcHBpbmcgb2xkIHRhYmxl c30sCisJCXFye2NyZWF0aW5nIHRhYmxlc30sCisJCXFye2dlbmVyYXRpbmcgZGF0YSBcKGNsaWVu dC1zaWRlIGFzIHNpbmdsZSB0cmFuc2FjdGlvbn0sCisJCXFye2RvbmUgaW4gXGQrXC5cZFxkIHMg fQorCV0sCisJJ3BnYmVuY2ggLS1pbml0LXN0ZXBzIGNsaWVudC1zaWRlIFRFWFQnKTsKKworIyBD aGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVj a19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKHRleHQpJyk7CisKKyRub2RlLT5wZ2Jl bmNoKAorCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0TWcnLAorCTAsCisJW3Fye14kfV0s CisJWworCQlxcntkcm9wcGluZyBvbGQgdGFibGVzfSwKKwkJcXJ7Y3JlYXRpbmcgdGFibGVzfSwK KwkJcXJ7Z2VuZXJhdGluZyBkYXRhIFwoY2xpZW50LXNpZGUgYXMgbXVsdGlwbGUgdHJhbnNhY3Rp b25zfSwKKwkJcXJ7ZG9uZSBpbiBcZCtcLlxkXGQgcyB9CisJXSwKKwkncGdiZW5jaCAtLWluaXQt c3RlcHMgY2xpZW50LXNpZGUgVEVYVCcpOworCisjIENoZWNrIGRhdGEgc3RhdGUsIGFmdGVyIHNl cnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KK2NoZWNrX2RhdGFfc3RhdGUoJG5vZGUsICdjbGll bnQtc2lkZSAodGV4dCknKTsKKworCisjIFRlc3Qgc2VydmVyLXNpZGUgZ2VuZXJhdGlvbiB3aXRo IENPUFkgQklOQVJZCiAkbm9kZS0+cGdiZW5jaCgKLQknLS1pbml0aWFsaXplIC0taW5pdC1zdGVw cz1kdEMnLAorCSctLWluaXRpYWxpemUgLS1pbml0LXN0ZXBzPWR0YycsCiAJMCwKIAlbcXJ7XiR9 XSwKIAlbCiAJCXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAogCQlxcntjcmVhdGluZyB0YWJsZXN9 LAotCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZVwpfSwKKwkJcXJ7Z2VuZXJhdGlu ZyBkYXRhIFwoY2xpZW50LXNpZGUgYXMgc2luZ2xlIHRyYW5zYWN0aW9ufSwKIAkJcXJ7ZG9uZSBp biBcZCtcLlxkXGQgcyB9CiAJXSwKIAkncGdiZW5jaCAtLWluaXQtc3RlcHMgY2xpZW50LXNpZGUg QklOQVJZJyk7CkBAIC0yMDIsNiArMjM3LDUyIEBAICRub2RlLT5wZ2JlbmNoKAogIyBDaGVjayBk YXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCiBjaGVja19kYXRh X3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKGJpbmFyeSknKTsKIAorJG5vZGUtPnBnYmVuY2go CisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRTYycsCisJMCwKKwlbcXJ7XiR9XSwKKwlb CisJCXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAorCQlxcntjcmVhdGluZyB0YWJsZXN9LAorCQlx cntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZSBhcyBzaW5nbGUgdHJhbnNhY3Rpb259LAor CQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAorCSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBj bGllbnQtc2lkZSBCSU5BUlknKTsKKworIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXIt c2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNp ZGUgKGJpbmFyeSknKTsKKworJG5vZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQt c3RlcHM9ZHRNYycsCisJMCwKKwlbcXJ7XiR9XSwKKwlbCisJCXFye2Ryb3BwaW5nIG9sZCB0YWJs ZXN9LAorCQlxcntjcmVhdGluZyB0YWJsZXN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGll bnQtc2lkZSBhcyBtdWx0aXBsZSB0cmFuc2FjdGlvbnN9LAorCQlxcntkb25lIGluIFxkK1wuXGRc ZCBzIH0KKwldLAorCSdwZ2JlbmNoIC0taW5pdC1zdGVwcyBjbGllbnQtc2lkZSBCSU5BUlknKTsK KworIyBDaGVjayBkYXRhIHN0YXRlLCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24u CitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAnY2xpZW50LXNpZGUgKGJpbmFyeSknKTsKKworJG5v ZGUtPnBnYmVuY2goCisJJy0taW5pdGlhbGl6ZSAtLWluaXQtc3RlcHM9ZHRNYycsCisJMCwKKwlb cXJ7XiR9XSwKKwlbCisJCXFye2Ryb3BwaW5nIG9sZCB0YWJsZXN9LAorCQlxcntjcmVhdGluZyB0 YWJsZXN9LAorCQlxcntnZW5lcmF0aW5nIGRhdGEgXChjbGllbnQtc2lkZSBhcyBtdWx0aXBsZSB0 cmFuc2FjdGlvbnN9LAorCQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAorCSdwZ2JlbmNo IC0taW5pdC1zdGVwcyBjbGllbnQtc2lkZSBCSU5BUlknKTsKKworIyBDaGVjayBkYXRhIHN0YXRl LCBhZnRlciBzZXJ2ZXItc2lkZSBkYXRhIGdlbmVyYXRpb24uCitjaGVja19kYXRhX3N0YXRlKCRu b2RlLCAnY2xpZW50LXNpZGUgKGJpbmFyeSknKTsKKworCiAjIFJ1biBhbGwgYnVpbHRpbiBzY3Jp cHRzLCBmb3IgYSBmZXcgdHJhbnNhY3Rpb25zIGVhY2gKICRub2RlLT5wZ2JlbmNoKAogCSctLXRy YW5zYWN0aW9ucz01IC1EZm9vPWJsYSAtLWNsaWVudD0yIC0tcHJvdG9jb2w9c2ltcGxlIC0tYnVp bHRpbj10JwotLSAKMi40My4wCgpGcm9tIDI0NzFiYjQ3YmY3MTU0MDJlY2U2MWIwODRiNjlhZmUz YmI1Mzc0MmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJvcmlzIE1pcm9ub3YgPGJv cmlzLm1pcm9ub3ZAZ21haWwuY29tPgpEYXRlOiBGcmksIDYgRmViIDIwMjYgMTM6NTU6NDcgKzA3 MDAKU3ViamVjdDogW1BBVENIIHY3IDE4LzE4XSBSZW1vdmluZyBjb21tZW50ZWQgb3V0IHByb2Nl ZHVyZXMKCi0tLQogc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyB8IDUyIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMvYmluL3BnYmVu Y2gvcGdiZW5jaC5jCmluZGV4IGFmNzFlMzU4ZTcxLi4zNDQ2NGI3MDM3YyAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5j CkBAIC01MjA2LDM1ICs1MjA2LDYgQEAgaW5pdEdlbmVyYXRlRGF0YUNsaWVudFNpZGVUZXh0KFBH Y29ubiAqY29uKQogfQogCiAKLS8qCi0gKiBEdW1wcyBiaW5hcnkgYnVmZmVyIHRvIGZpbGUgKHB1 cmVseSBmb3IgZGVidWdnaW5nKQotICoKLXN0YXRpYyB2b2lkCi1kdW1wQnVmZmVyVG9GaWxlKGNo YXIgKmZpbGVuYW1lKQotewotCUZJTEUgKmZpbGVfcHRyOwotCXNpemVfdCBieXRlc193cml0dGVu OwotCi0JZmlsZV9wdHIgPSBmb3BlbihmaWxlbmFtZSwgIndiIik7Ci0JaWYgKGZpbGVfcHRyID09 IE5VTEwpCi0JewotCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcgZmlsZSAlc1xuIiwg ZmlsZW5hbWUpOwotCQlyZXR1cm47IC8vIEVYSVRfRkFJTFVSRTsKLQl9Ci0KLQlieXRlc193cml0 dGVuID0gZndyaXRlKGJpbl9jb3B5X2J1ZmZlciwgMSwgYmluX2NvcHlfYnVmZmVyX2xlbmd0aCwg ZmlsZV9wdHIpOwotCi0JaWYgKGJ5dGVzX3dyaXR0ZW4gIT0gYmluX2NvcHlfYnVmZmVyX2xlbmd0 aCkKLQl7Ci0JCWZwcmludGYoc3RkZXJyLCAiRXJyb3Igd3JpdGluZyB0byBmaWxlIG9yIGluY29t cGxldGUgd3JpdGVcbiIpOwotCQlmY2xvc2UoZmlsZV9wdHIpOwotCQlyZXR1cm47IC8vIEVYSVRf RkFJTFVSRTsKLQl9Ci0KLQlmY2xvc2UoZmlsZV9wdHIpOwotfQotICovCi0KIC8qCiAgKiBTYXZl IGNoYXIgZGF0YSB0byBidWZmZXIKICAqLwpAQCAtNTI3NywxNyArNTI0OCw2IEBAIGFkZENvbHVt bkNvdW50ZXIoaW50MTZfdCBuKQogCWJ1ZmZlckRhdGEoKHZvaWQgKikgJm4sIHNpemVvZihuKSk7 CiB9CiAKLS8qCi0gKiBhZGRzIGNvbHVtbiB3aXRoIE5VTEwgdmFsdWUKLSAqCi1zdGF0aWMgdm9p ZAotYWRkTnVsbENvbHVtbigpCi17Ci0JaW50MzJfdCBudWxsID0gLTE7Ci0JYnVmZmVyRGF0YSgo dm9pZCAqKSAmbnVsbCwgc2l6ZW9mKG51bGwpKTsKLX0KLSAqLwotCiAvKgogICogYWRkcyBjb2x1 bW4gd2l0aCBpbnRpMzIgdmFsdWUKICAqLwpAQCAtNTMxMiwxOCArNTI3Miw2IEBAIGFkZEludDY0 Q29sdW1uKGludDY0X3QgdmFsdWUpCiAJYnVmZmVyRGF0YSgodm9pZCAqKSAmZGF0YSwgc2l6ZW9m KGRhdGEpKTsKIH0KIAotLyoKLSAqIGFkZHMgY29sdW1uIHdpdGggY2hhciB2YWx1ZQotICoKLXN0 YXRpYyB2b2lkCi1hZGRDaGFyQ29sdW1uKGNoYXIgKnZhbHVlKQotewotCWludDMyX3QJc2l6ZSA9 IHN0cmxlbih2YWx1ZSk7Ci0JYnVmZmVyRGF0YSgodm9pZCAqKSAmc2l6ZSwgc2l6ZW9mKHNpemUp KTsKLQlidWZmZXJDaGFyRGF0YSh2YWx1ZSwgc2l6ZSk7Ci19Ci0gKi8KLQogLyoKICAqIFN0YXJ0 cyBjb21tdW5pY2F0aW9uIHdpdGggc2VydmVyIGZvciBDT1BZIEZST00gQklOQVJZIHN0YXRlbWVu dAogICovCi0tIAoyLjQzLjAKCg== --_005_PH0PR08MB70204888D724794BA83EA6E58866APH0PR08MB7020namp_--