From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id ISYYCzOCGWr84SYAWB0awg (envelope-from ) for ; Fri, 29 May 2026 08:10:27 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=HXDHJwv0; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 25E3C1E0A3; Fri, 29 May 2026 08:10:27 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id D248A1E062 for ; Fri, 29 May 2026 08:10:23 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 506E14BA23DB for ; Fri, 29 May 2026 12:10:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 506E14BA23DB Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=HXDHJwv0 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) by sourceware.org (Postfix) with ESMTPS id E978C4BA2E25 for ; Fri, 29 May 2026 12:09:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E978C4BA2E25 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E978C4BA2E25 Authentication-Results: sourceware.org; arc=fail smtp.remote-ip=192.198.163.19 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1780056590; cv=fail; b=xwWBmfsXjVHobEFIs78kVCUUjSxWju56Xw+ZfVfUmH7JvctrLFnSkJLjQAvKEH/0g9/cs//235KVI73OyBIYL/cgGYF9+cTfFjmqCkKIcuRq9s20M3j8JmymB7MuikqwxnRW+8/oEF63Cieo9v+glg7/tDYiwB2lAQHJDPlRaoA= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1780056590; c=relaxed/simple; bh=pxAgVEZ81S/AB7OWTmyy23zcDps8eVFP5Jhs5lOKCVw=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=TUvlKLirxCsGnIFgcqAoiDdPy+VR4ZmV/cFHHVT1UdvpXtlK0Sx2xhzwP3bEPPCFpzSfBqfFxAuwSNpgV+hSTRkJMdHFdinSWPxSATcxWalGmzIybtkv8yWM0onxG9fz8GC8X31NicfWhbXe3J0Njn1qdsqSrj5f66eot5ZW080= ARC-Authentication-Results: i=2; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=HXDHJwv0 DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E978C4BA2E25 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1780056590; x=1811592590; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version:content-transfer-encoding; bh=pxAgVEZ81S/AB7OWTmyy23zcDps8eVFP5Jhs5lOKCVw=; b=HXDHJwv04mUl45HKz+VW5CV7rXTx69pev6J/rjdaGRKlKRq3G2bfX4AB +PxpdTiqO8lpi8XXCJEGxmto/H1t5RHej1PcgjrlrGv19BL9KOofOPYbn 6MBksMsgKjmM2R+OdghRqbU5p6GvMa9zCbFgvLHkiSALoUDC84uXlLItj BD9yttksVY0ZvewAfbR+0R89OezlSyUbAMWZPA8WQfiUPRiO3sLx109ze 2naf0idDFvzBCssFYnBNwg2GOfuXx0ZDTHXvvh1X4l4aE7M9DIvgOZty0 WfB8fe5xSW9IPx2MA80sZAksLdTr/t1QJCgJiPl+WedSe40Ex7vpwtjOF g==; X-CSE-ConnectionGUID: hZ3IlibMSh+05nyoiigJFw== X-CSE-MsgGUID: 51pSH3EJQQ667c7zzV4T9w== X-IronPort-AV: E=McAfee;i="6800,10657,11800"; a="79941586" X-IronPort-AV: E=Sophos;i="6.24,175,1774335600"; d="scan'208";a="79941586" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 May 2026 05:09:49 -0700 X-CSE-ConnectionGUID: dvva02cYQOWEWUxr/obnqw== X-CSE-MsgGUID: CVoElVa+RGqVrDfLuMMoUQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.24,175,1774335600"; d="scan'208";a="242933060" Received: from fmsmsx902.amr.corp.intel.com ([10.18.126.91]) by orviesa009.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 May 2026 05:09:49 -0700 Received: from FMSMSX903.amr.corp.intel.com (10.18.126.92) by fmsmsx902.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Fri, 29 May 2026 05:09:48 -0700 Received: from fmsedg903.ED.cps.intel.com (10.1.192.145) by FMSMSX903.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37 via Frontend Transport; Fri, 29 May 2026 05:09:48 -0700 Received: from PH7PR06CU001.outbound.protection.outlook.com (52.101.201.65) by edgegateway.intel.com (192.55.55.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Fri, 29 May 2026 05:09:47 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=B8BSZQX0vJ+OeBTqkleQPMFNsw+OKFovwIlE/icVGECw3b3Aa3MVb+iHWSz6Slvx+Q3dIXE8X2cjF4IZj7e0802PLxGV+Lcc8sx/H+zyj6FGgPhxnUkZzoIf0fBTDsU66/VRPtd+XJyVkJLIEfoh0mFXncrtSIOUfv3QeBbCYEQUaoxTCq1GlNxNGtTi5nA54o/2rWlthQJkJ5E0SLDmTyvVW3vOHMgrfV4xXrIKI+r7RyMxLHJhOGu2Fhy2oeVBmAE6eSqulgjb+XlpcxvIZyt0O6Rjse34T6WKDlGPjkkpd0ay+mQJmo1SR7aIQFwWJ57pBHyU2VFBSpEdDgX5Qw== 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=Hw8F/unCyUPS65OSXtOweXxvU7k1PW6JWOCXvX/OC8U=; b=X1BPIbHPBy2RLmfzCkRrGWgfaCPgmDLvmbf+3YiwtzsHk8NeGuCtF8uN3t2Rd/NIjSoRrhOrMKcK/I2h6A45hWkWR03Gh4BgkV6VOFklWiggSmAOCa5m+PxmnKoadoedZVxFCHcH6U6XJVs52zx6ufDU+m8OtL3aS+nl0BNZeZaGs1HEO1V49YiN+iefvFaNdJNOtnwRLMcKGI13vcWzxJfqJxjy1JfPVjLpNwB3WaMRDDKrdo9dkKLN4UtLHjwBSWvEF7rS61LPjO0uBJ03dlJnfAVGshVX/LgSIqfBAc/jmz5p9K5ih15LI6CpAMJ07ua3cqMMcVEPXTQ6ZpBM0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SN7PR11MB7638.namprd11.prod.outlook.com (2603:10b6:806:34b::22) by IA3PR11MB8985.namprd11.prod.outlook.com (2603:10b6:208:575::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.15; Fri, 29 May 2026 12:09:45 +0000 Received: from SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011]) by SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011%3]) with mapi id 15.21.0071.011; Fri, 29 May 2026 12:09:45 +0000 From: "Schimpe, Christina" To: Guinevere Larsen , "gdb-patches@sourceware.org" CC: Thiago Jung Bauermann Subject: RE: [PATCH v3 3/7] gdb/record: c++ify internal structures of record-full.c Thread-Topic: [PATCH v3 3/7] gdb/record: c++ify internal structures of record-full.c Thread-Index: AQHc5Imq1WKuIq1JKUqlEBbQJnBNdrYXAsmwgAteoYCAAaaVUA== Date: Fri, 29 May 2026 12:09:45 +0000 Message-ID: References: <20260515163706.3355686-1-guinevere@redhat.com> <20260515163706.3355686-4-guinevere@redhat.com> <4ea1a202-e336-44fa-a9e2-2b71a66d9e88@redhat.com> In-Reply-To: <4ea1a202-e336-44fa-a9e2-2b71a66d9e88@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN7PR11MB7638:EE_|IA3PR11MB8985:EE_ x-ms-office365-filtering-correlation-id: 2f66bc0f-17bd-47e2-8026-08debd7b2c49 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|376014|366016|38070700021|22082099003|18002099003|10063799003|4143699003|56012099006|3023799007|5023799004|11063799006|6133799003; x-microsoft-antispam-message-info: OqRNHDXxx5ukMzKrTgz9fnCx/oWIWZIMJvUiRVC4lCAszOzVOkbC7TgbWlpTQ7ZVjcVskee9utEK7xCwQ3lyzF465flj/LdCzHs/xCEl7LCEFx7bPdiMTBGJXzHmbGoPmnzMG0iBEB8FD83PEVbUXWWKuk3KK3MJJyFqjt2GCMGxJ9pUMi3Yaz/hVnio/P93xhaddzDylO5h9lNy0ESCZU2olZVdXB5yaP3Obbge+Jwa881fQ9WCSOX63ogpA/aobg5UewKKk2pVV/nyJdLtLRTiB5z1U24V+/WArtdSAfeqNYTSwneB9n3U+tFgQsUK/mT3sZQA6T2cyi/4Y8w/ouu1Z0vyVN/KuedksPijHLOH3xPkZ1HQMNxk8O9zOgGTmBzP7kNr133SmcXAKKLdcKJtXezHKI3kIraTGxuP1tVohMiyL6tD98h3X+StajKsUj9STwnO2KZhsHL5vt9qHoO5TbTVClK+3mJM5corY43YpKzT7Z1XbSZPT9JJck+f45wEkvAQaIyP/bQ+TmC/TQJeBmN5YWwWAlGDEkPpWxIHE1g4LIRFfn2Vv4v+ouVkfdL2/5ZJGfwsosJzxdrgUcV7N/flAxX2G1a7hmbfLRkj4sH3A3REaOwvUnxyvFhwImhD2OehsEG/gijIYWqoFQNQvkep83sMZLJt1ai577WNBRhKP6VNu3hUZRPqm8kF1yGTyufLxy5HBoVDKBbhmw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN7PR11MB7638.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(38070700021)(22082099003)(18002099003)(10063799003)(4143699003)(56012099006)(3023799007)(5023799004)(11063799006)(6133799003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?L1BDWUtqeG1aelVaVTNXcUgvOXpkb01TOVIycFpTMXRGMjdNMy81R2p3WmlK?= =?utf-8?B?SktuS25YMWFLWXp2cWMxTHJqM1JLWE1za0RQd0xzODFrYjBKNE0vam5neGxP?= =?utf-8?B?NVl4T2lncG1pYmYrUjBBZUFhbk1wRDNPeGlZaUVnTXRvQnN5TkdPRWhZdVVM?= =?utf-8?B?b1dwd1NhTXhqWVg4Y2Y2cGhqNGNnV2tuRVBra0EwTzN0dWtESmxJcFJSWFRq?= =?utf-8?B?NzkwMStRVWR1eUhiY0JzNnFieDNaaW4vYmlVcmFyNU92ZFlxd2VYNFprWUhR?= =?utf-8?B?eW85a0RsWnFCeVFjeTJHcHNZLzVad0lFbWg1OVhPUzNDVURVME1uejJueXY2?= =?utf-8?B?d3Y2OWs4cGgvMndkVCtvbGJIVCtzdW1SOGIyY1NCVm1YaU5ncitkZGlLNGlZ?= =?utf-8?B?SnZnb1BjeThRWlJjK1lnQkRRMGNJRmJETkNwWWtOeDVsYW5UdWVPdmREZG1R?= =?utf-8?B?dlVlOUxlaFZacjJTZ3lBZmkrYU93V3FFLzNqOThJMjhYbEJBeDJic2RwUW9n?= =?utf-8?B?dzJsekxQcHpDbFpPaTFYbXlCL0NZYkVPVTh0YTVjOXZlR2FmWGlNV1BpUHZ0?= =?utf-8?B?Q1NVNGFPNHhFdzhhRHFsMUxSV0ZXYW1aSGtpbkRjK0JNRjhsdFA4VER6VG9o?= =?utf-8?B?cXVJTVdMeXdSc0VOUnJnTUl3bUc0ZmRoV3hlN0hGY2kwblorZFMwOUU4SERF?= =?utf-8?B?SnZZdlJCVTMvR2xNSzFsdXNSKzhKWExGd0RmREFMdHloOW9GeTczaExveEli?= =?utf-8?B?QlU4dE5PNVJFbUtLb3A5VzEvM01PeUEweDMrUzA2VDhTUmY3eGFXcW5mUVM2?= =?utf-8?B?TzVaOUR6bis1OVJSR1JNN0Q4YVAwZmVmcFVYYlhDKzBJSlpNb2dCQ0dBYTAy?= =?utf-8?B?Q2lwQjJ2ei9jME1kNVdzWWZ5SEt6V3F5WnU4bWl4SStwUEszSFdwTmtVeVpY?= =?utf-8?B?d3ZTZlh4NlNMY3p1SWJFeHE4OFh2TDRTaGNIZFVXQjZ2Sk1TMWZ5c09DNnc0?= =?utf-8?B?aWhxWllCTHB3ZTZuWnRkTnl1Z3FlZlUrNlFvVVBRcDZWeTlJYkNDZDFOK1Zp?= =?utf-8?B?QzdkRGU2V1BHOFlpWTZLdWw4dktTV3JNbCtjRG9hN2NaNUNkdHlrdHFldE5t?= =?utf-8?B?RWJZLzRJc3A2WnVOSTNnUi9yTDdyR0I0aVJhdVlGNENEekpVUk44Y2pTNUpZ?= =?utf-8?B?eVl4dGsxYWl5REp4eUtsSHlVOXVOTkhPTTdJL09xK3FlbUwvZWhmazVuVEZF?= =?utf-8?B?ZDhmOEhzQ3ZOWVAzb21ZYUcxN1R3T3g2QUlVMms2YW52MDdjSE8zMVNWaEFC?= =?utf-8?B?T1pub1QrS1JqYjN4YVBXeTVzMXNKMUt3MEdEb3RlRStLbDI0azd6S1N6RWZU?= =?utf-8?B?T2JtQkJUYUp6bElQNVlIUUhRNzAwbElaWkNFRE40aWtqL3lzenZJZmtMaEtJ?= =?utf-8?B?UDVkK0p5bGVMM3VBRW9hWGlkUEhJOTd6MW9MaGVTRzVpV3RXbC84TjF2RTdn?= =?utf-8?B?VEkrc3NLaS9QQnBoNXNVcnliZUlzUWE2NHpwTVkwTUZyYmpNMGxzcFF5RWVw?= =?utf-8?B?MnIrTXRFU3ZQM3RyWldxaGhjQy9GY1RkUkVGd3NZMUZMc1J2V2dLdTR4Q2xH?= =?utf-8?B?RkFZa1k1REJQSnYwMmV4c0JreEtiNXp3MmhEVTg4Qk5MLzA5ODhMQ21ra3oy?= =?utf-8?B?QkVzdHdhMWVDdlM2ZEJia3pJanBYODVFUGhJckQzdmZPZW1iR1ZsU1hJR0Z3?= =?utf-8?B?TDYwZS80d01sc3Qxb1BXNlA2ei9UaThWdTVzc3MyQno4RVpyaHNwTmttQXA4?= =?utf-8?B?SkdSV2xqeE96WStPSU9SWVlMRG1iWG9qMUdqeUJlaWVFNThJWCtpcXZXQzha?= =?utf-8?B?RnFDZmlIV2VLSHM2amxpeXMrdjNwVEs1WWtwOHpkVGs1MUpOTTd1NHVpL0Vk?= =?utf-8?B?YlVKQldnS3BzNGNvNlc5SXhxNEw4N2Q3R2x0UDloS1pvN3NUT3hmRGFuQ0hn?= =?utf-8?B?T1M0ZTdCdmZzVFI1emlBS3gwazUxUTJxQVBqM1l6U1R0L0hXYnpLbFcyTkNQ?= =?utf-8?B?WUIyK0VEampqL1hkdTFyZXdFblR2b0FlRDBBOUU5emZkM3E2WnF6Y0hEYU5D?= =?utf-8?B?b1dRV1djNlVLb2tRWG56OXRlb202TzZkdERQaWVPRkk5U2R6bkVNMVdXdnJs?= =?utf-8?B?YzEwZkdCYUJTamd6VVRYWUl3ZmYwWXhqeXVDbE9JWVpPQ2lOYlYzS1Zqcyth?= =?utf-8?B?eHhzVEZaUllTMVBZV0VELy9MY0c3U0E1bWhqSk1talJNcDBkRTZVejdOenNj?= =?utf-8?B?U3drWHZzMDI3dE1RVTdwSVR0d0JJZlBGQUxod0xRTHBLa3lHQWlxdz09?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: rmEqjzgvpAHHk4AioGqRKZNYl14yn3ocKKnOn2QFyhSMPYKH+hi8qsTV2hFxz6qQTkz0CaJr04sd/LEBh8M4xjrW3QB2kbUvJksv26kga4M3+eK0D4AeTLJzSDMQzoklEvNn/ags7pPy89G9VSPGEYfRNN919ZWZ/QXYSXDncN4W/ZoGoM3YlUEdQL339Tvivo83YiYYBnDGw9gDQ4Ojw790YCJySaQSCifGGLmmrjPXhM2jsvkzjsm7ZB+P9ZI84ETSIAm/yKosU5gNYpOHR20LF1NiYVh2ClzXUX4ZOQ0kFXdbxm7WD1YML30A1G1e9UMKe4+KbTC2wEBvC1bRag== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN7PR11MB7638.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f66bc0f-17bd-47e2-8026-08debd7b2c49 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 May 2026 12:09:45.4469 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: aK/mqT3D9K9wsmfEkkVyZR40WbYSVHh1D0zNjvhrB5aAyQNe0uG+vCcDL/u18OVyOdMP57aEpgofHRwqqKGi07gGK8ISdi8XH8a4gxXcO9k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA3PR11MB8985 X-OriginatorOrg: intel.com Content-Transfer-Encoding: base64 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBHdWluZXZlcmUgTGFyc2VuIDxn dWluZXZlcmVAcmVkaGF0LmNvbT4NCj4gU2VudDogTWl0dHdvY2gsIDI3LiBNYWkgMjAyNiAyMjox Mw0KPiBUbzogU2NoaW1wZSwgQ2hyaXN0aW5hIDxjaHJpc3RpbmEuc2NoaW1wZUBpbnRlbC5jb20+ OyBnZGItDQo+IHBhdGNoZXNAc291cmNld2FyZS5vcmcNCj4gQ2M6IFRoaWFnbyBKdW5nIEJhdWVy bWFubiA8dGhpYWdvLmJhdWVybWFubkBsaW5hcm8ub3JnPg0KPiBTdWJqZWN0OiBSZTogW1BBVENI IHYzIDMvN10gZ2RiL3JlY29yZDogYysraWZ5IGludGVybmFsIHN0cnVjdHVyZXMgb2YgcmVjb3Jk LQ0KPiBmdWxsLmMNCj4gDQo+IE9uIDUvMjYvMjYgNjowMCBBTSwgU2NoaW1wZSwgQ2hyaXN0aW5h IHdyb3RlOg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBHdWlu ZXZlcmUgTGFyc2VuIDxndWluZXZlcmVAcmVkaGF0LmNvbT4NCj4gPj4gU2VudDogRnJlaXRhZywg MTUuIE1haSAyMDI2IDE4OjM3DQo+ID4+IFRvOiBnZGItcGF0Y2hlc0Bzb3VyY2V3YXJlLm9yZw0K PiA+PiBDYzogR3VpbmV2ZXJlIExhcnNlbiA8Z3VpbmV2ZXJlQHJlZGhhdC5jb20+OyBUaGlhZ28g SnVuZyBCYXVlcm1hbm4NCj4gPj4gPHRoaWFnby5iYXVlcm1hbm5AbGluYXJvLm9yZz4NCj4gPj4g U3ViamVjdDogW1BBVENIIHYzIDMvN10gZ2RiL3JlY29yZDogYysraWZ5IGludGVybmFsIHN0cnVj dHVyZXMgb2YNCj4gPj4gcmVjb3JkLWZ1bGwuYw0KPiA+Pg0KPiA+PiBUaGlzIGNvbW1pdCBhZGRz IGEgY29uc3RydWN0b3IsIGRlc3RydWN0b3IsIGFuZCBzb21lIG1ldGhvZHMgdG8gdGhlDQo+ID4+ IHN0cnVjdHVyZXMgcmVjb3JkX2Z1bGxfZW50cnksIHJlY29yZF9mdWxsX3JlZ19lbnRyeSBhbmQN Cj4gPj4gcmVjb3JkX2Z1bGxfbWVtX2VudHJ5LiBUaGlzIGlzIGEgbW92ZSB0byBkaXNlbnRhbmds ZSB0aGUgaW50ZXJuYWwNCj4gPj4gcmVwcmVzZW50YXRpb24gb2YgdGhlIGRhdGEgYW5kIGhvdyBy ZWNvcmQtZnVsbCBtYW5pcHVsYXRlcyBpdCBmb3INCj4gcmVwbGF5aW5nLg0KPiA+Pg0KPiA+PiBB bG9uZyB3aXRoIHRoaXMgY2hhbmdlLCByZWNvcmRfZnVsbF9lbnRyeSBpcyBjaGFuZ2VkIHRvIHVz ZSBhbg0KPiA+PiBzdGQ6OnZhcmlhbnQsIHNpbmNlIGl0IHdhcyBiYXNpY2FsbHkgZG9pbmcgdGhh dCBhbHJlYWR5LCBidXQgbm93IHdlDQo+ID4+IGhhdmUgdGhlIHN0ZGxpYmMrKyBlcnJvciBjaGVj a2luZyB0byBtYWtlIHN1cmUgd2UncmUgb25seSBhY2Nlc3NpbmcNCj4gZWxlbWVudHMgd2UncmUg YWxsb3dlZCB0by4NCj4gPj4NCj4gPj4gUmV2aWV3ZWQtYnk6IFRoaWFnbyBKdW5nIEJhdWVybWFu biA8dGhpYWdvLmJhdWVybWFubkBsaW5hcm8ub3JnPg0KPiA+PiAtLS0NCj4gPj4gICBnZGIvcmVj b3JkLWZ1bGwuYyB8IDYwMSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+ID4+ICAgMSBmaWxlIGNoYW5nZWQsIDMyMSBpbnNlcnRpb25zKCspLCAyODAgZGVs ZXRpb25zKC0pDQo+ID4+DQo+ID4+IGRpZmYgLS1naXQgYS9nZGIvcmVjb3JkLWZ1bGwuYyBiL2dk Yi9yZWNvcmQtZnVsbC5jIGluZGV4DQo+ID4+IGU0ZGQwN2RjMzAwLi4yNGU5NGVhZjVkYSAxMDA2 NDQNCj4gPj4gLS0tIGEvZ2RiL3JlY29yZC1mdWxsLmMNCj4gPj4gKysrIGIvZ2RiL3JlY29yZC1m dWxsLmMNCj4gPj4gQEAgLTUxLDYgKzUxLDcgQEANCj4gPj4gICAjaW5jbHVkZSA8b3B0aW9uYWw+ DQo+ID4+ICAgI2luY2x1ZGUgPGRlcXVlPg0KPiA+PiAgICNpbmNsdWRlIDxzaWduYWwuaD4NCj4g Pj4gKyNpbmNsdWRlIDx2YXJpYW50Pg0KPiA+Pg0KPiA+PiAgIC8qIFRoaXMgbW9kdWxlIGltcGxl bWVudHMgInRhcmdldCByZWNvcmQtZnVsbCIsIGFsc28ga25vd24gYXMgInByb2Nlc3MNCj4gPj4g ICAgICByZWNvcmQgYW5kIHJlcGxheSIuICBUaGlzIHRhcmdldCBzaXRzIG9uIHRvcCBvZiBhICJu b3JtYWwiDQo+ID4+IHRhcmdldCBAQCAtOTMsMTINCj4gPj4gKzk0LDExMyBAQCBzdHJ1Y3QgcmVj b3JkX2Z1bGxfbWVtX2VudHJ5DQo+ID4+ICAgICBpbnQgbGVuOw0KPiA+PiAgICAgLyogU2V0IHRo aXMgZmxhZyBpZiB0YXJnZXQgbWVtb3J5IGZvciB0aGlzIGVudHJ5DQo+ID4+ICAgICAgICBjYW4g bm8gbG9uZ2VyIGJlIGFjY2Vzc2VkLiAgKi8NCj4gPj4gLSAgaW50IG1lbV9lbnRyeV9ub3RfYWNj ZXNzaWJsZTsNCj4gPj4gKyAgYm9vbCBtZW1fZW50cnlfYWNjZXNzaWJsZTsNCj4gPiBTaG91bGRu J3Qgd2UgdXBkYXRlIHRoZSBjb21tZW50IHRoZW4sIHRvbyA/DQo+IFllcywgZ29vZCBwb2ludCEN Cj4gPiBOaXQ6IHlvdSBjb3VsZCBjb25zaWRlciBtb3ZpbmcgdGhpcyBpbnRvIGEgc2VwYXJhdGUg cGF0Y2guIEkgd291bGQgbWFrZSB0aGUNCj4gcmV2aWV3IGEgYml0IGVhc2llciBJTU8uDQo+ID4N Cj4gPiBUaGUgc2FtZSBhcHBsaWVzIGZvciBlYWNoIHN0cnVjdHVyZS9jbGFzcyB0aGF0IHlvdSBy ZWZhY3RvciBpbiB0aGlzIHBhdGNoLg0KPiA+IEJ1dCB0aGlzIGlzIHJhdGhlciBhbiBvcHRpb25h bCBzdWdnZXN0aW9uLCB0b28uIPCfmIoNCj4gVGhpYWdvIHN1Z2dlc3RlZCB0aGF0LCBzaW5jZSBJ J20gYWxyZWFkeSBtZXNzaW5nIHdpdGggdGhlIGNsYXNzLCBJIG1heSBhcyB3ZWxsDQo+IGludmVy dCB0aGUgbmFtZSBhbmQgbG9naWMgb2YgdGhlIHZhcmlhYmxlLiBJIGd1ZXNzIG15IHRoaW5raW5n IHdhcyB0aGF0LCBzaW5jZQ0KPiBoZSBhbHJlYWR5IHNlZW4gbXkgcHJldmlvdXMgdmVyc2lvbiB0 aGlzIHdvdWxkbid0IGJlIG11Y2ggb2YgYSBjaGFuZ2UgdG8NCj4gcmV2aWV3LCBidXQgeW91IG1h a2UgYSBnb29kIHBvaW50LCB3aWxsIGtlZXAgaXQgaW4gbWluZCBmb3IgdGhlIGZ1dHVyZQ0KPiA+ DQo+ID4+ICAgICB1bmlvbg0KPiA+PiAgICAgew0KPiA+PiAgICAgICBnZGJfYnl0ZSAqcHRyOw0K PiA+PiAgICAgICBnZGJfYnl0ZSBidWZbc2l6ZW9mIChnZGJfYnl0ZSAqKV07DQo+ID4+ICAgICB9 IHU7DQo+ID4+ICsNCj4gPj4gKyAgcmVjb3JkX2Z1bGxfbWVtX2VudHJ5ICgpIDogYWRkciAoMCks IGxlbiAoMCkgeyB9DQo+ID4gQW55IHNwZWNpZmljIHJlYXNvbiB3aHkgeW91IGRvbid0IGluaXQg bWVtX2VudHJ5X2FjY2Vzc2libGUgYW5kIHUgaGVyZSA/DQo+IE1haW5seSBiZWNhdXNlIEkgd2Fu dGVkIHRvIHRyZWF0ICJsZW4gPT0gMCIgYXMgZWZmZWN0aXZlbHkgdW5pbml0aWFsaXplZCwgc28g aXQNCj4gZGlkbid0IHNlZW0gaW1wb3J0YW50LCBidXQgSSBzZWUgdGhhdCBJIGRpZG4ndCBhY3R1 YWxseSBmb2xsb3cgdGhyb3VnaCB3aXRoIGl0DQo+IHRoYXQgbXVjaCBzbyBJIHN1cHBvc2UgSSBz aG91bGQgYXQgbGVhc3QgaW5pdGlhbGl6ZSBtZW1fZW50cnlfYWNjZXNzaWJsZS4gdQ0KPiBzZWVt cyB1bm5lY2Vzc2FyeSB0byBzZXR1cCwgc2luY2Ugd2UnbGwgZG8gMC1zaXplZCByZWFkcyAod2hp Y2ggd2lsbCByZXR1cm4NCj4gdGhlIGxvY2FsIGJ1ZmZlciBhbmQgbm90IGEgcmFuZG9tIHBvaW50 ZXIpLi4uLg0KPiA+DQo+ID4+ICsNCj4gPj4gKyAgcmVjb3JkX2Z1bGxfbWVtX2VudHJ5IChDT1JF X0FERFIgbWVtX2FkZHIsIGludCBtZW1fbGVuKSAgew0KPiA+PiArICAgIGFkZHIgPSBtZW1fYWRk cjsNCj4gPj4gKyAgICBsZW4gPSBtZW1fbGVuOw0KPiA+PiArICAgIGlmIChsZW4gPiBzaXplb2Yg KHUuYnVmKSkNCj4gPj4gKyAgICAgIHUucHRyID0gbmV3IGdkYl9ieXRlW2xlbl07DQo+ID4+ICsg ICAgbWVtX2VudHJ5X2FjY2Vzc2libGUgPSB0cnVlOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4g KyAgcmVjb3JkX2Z1bGxfbWVtX2VudHJ5IChyZWNvcmRfZnVsbF9tZW1fZW50cnkgJiZvdGhlcikg IHsNCj4gPj4gKyAgICBhZGRyID0gb3RoZXIuYWRkcjsNCj4gPj4gKyAgICBsZW4gPSBvdGhlci5s ZW47DQo+ID4+ICsgICAgbWVtY3B5ICh1LmJ1Ziwgb3RoZXIudS5idWYsIHNpemVvZiAodS5idWYp KTsNCj4gPj4gKyAgICBtZW1fZW50cnlfYWNjZXNzaWJsZSA9IG90aGVyLm1lbV9lbnRyeV9hY2Nl c3NpYmxlOw0KPiA+PiArICAgIC8qIFdpdGggbGVuID09IDAsIE9USEVSIGlzIGd1YXJhbnRlZWQg dG8gbm90IHRyeSB0byBmcmVlIHRoZQ0KPiA+PiArICAgICAgIG1lbW9yeSB3aGVuIGl0IGlzIGRl c3RydWN0ZWQuICAqLw0KPiA+PiArICAgIG90aGVyLmxlbiA9IDA7DQo+ID4+ICsgIH0NCj4gPj4g Kw0KPiA+PiArICB+cmVjb3JkX2Z1bGxfbWVtX2VudHJ5ICgpDQo+ID4+ICsgIHsNCj4gPj4gKyAg ICBpZiAobGVuID4gc2l6ZW9mICh1LmJ1ZikpDQo+ID4+ICsgICAgICBkZWxldGVbXSB1LnB0cjsN Cj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIHJlY29yZF9mdWxsX21lbV9lbnRyeSAmb3BlcmF0 b3I9IChyZWNvcmRfZnVsbF9tZW1fZW50cnkgJiZvdGhlcikNCj4gew0KPiA+PiArICAgIGFkZHIg PSBvdGhlci5hZGRyOw0KPiA+PiArICAgIGxlbiA9IG90aGVyLmxlbjsNCj4gPj4gKyAgICBtZW1j cHkgKHUuYnVmLCBvdGhlci51LmJ1Ziwgc2l6ZW9mICh1LmJ1ZikpOw0KPiA+IFNob3VsZG4ndCB3 ZSBjaGVjayBmb3Igc2VsZi1hc3NpZ25tZW50IGhlcmUgPw0KPiANCj4gSSBkb24ndCB0aGluayBp dCB3b3VsZCBiZSBwb3NzaWJsZSB0byBzZWxmLWFzc2lnbiBoZXJlLCBzaW5jZSB0aGlzIGlzIGEN Cj4gbW92ZSBvcGVyYXRvci4gV2Ugc2hvdWxkbid0IGJlIGFibGUgdG8gY3JlYXRlIGEgY29weSBh bnl3aGVyZSwgc28gSQ0KPiB0aGluayBpdCBzaG91bGRuJ3QgYmUgYSBsYXJnZSB0aGluZy4NCj4g SSBjYW4gYWRkIGFuIGFzc2VydCwgc2luY2UgaWYgaXQgZXZlciBoYXBwZW5zIHRoaXMgaXMgYSBs YXJnZSBidWcuDQoNClllYWgsIEkganVzdCBub3RpY2VkIGl0IHNpbmNlIEkndmUgYmVlbiBsb29r aW5nIGF0IGEgc2FtcGxlIGltcGxlbWVudGF0aW9uDQpmb3IgdGhlIG1vdmUgYXNzaWdubWVudCBv cGVyYXRvciB3aGljaCBkb2VzIGNoZWNrIGZvciBzZWxmLWFzc2lnbm1lbnQ6DQoNCmh0dHBzOi8v bGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9jcHAvY3BwL21vdmUtY29uc3RydWN0b3JzLWFuZC1t b3ZlLWFzc2lnbm1lbnQtb3BlcmF0b3JzLWNwcD92aWV3PW1zdmMtMTcwI2V4YW1wbGUtY29tcGxl dGUtbW92ZS1jb25zdHJ1Y3Rvci1hbmQtYXNzaWdubWVudC1vcGVyYXRvcg0KDQphbmQgdGhlbiBj b21wYXJlZCBhIGJpdCB3aXRoIG90aGVyIGNsYXNzZXMgd2hpY2ggaGF2ZSBESVNBQkxFX0NPUFlf QU5EX0FTU0lHTg0KYW5kIHRoZSBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuDQoNCj4gPg0KPiA+ IEFsc28sIGxpa2UgdGhlIGRlc3RydWN0b3IsIEkgYmVsaWV2ZSB3ZSBtdXN0IGRlbGV0ZSB1LnB0 ciBoZXJlOg0KPiA+IH5+fg0KPiA+ICAgIGlmIChsZW4gPiBzaXplb2YgKHUuYnVmKSkNCj4gPiAg ICAgICAgZGVsZXRlW10gdS5wdHI7DQo+ID4gfn5+DQo+ID4NCj4gPiBTYW1lIGZlZWRiYWNrIGZv ciByZWNvcmRfZnVsbF9tZW1fZW50cnkgJm9wZXJhdG9yPQ0KPiANCj4gVGhlIGlkZWEgb2YgYSBt b3ZlIG9wZXJhdGlvbiAoY29uc3RydWN0b3Igb3IgYXNzaWdubWVudCkgaXMgdGhhdCB3ZQ0KPiB3 b24ndCBuZWVkIHRvIGFsbG9jYXRlIG5ldyBtZW1vcnksIHdlJ2xsIGp1c3QgcGFzcyB0aGUgcG9p bnRlciB0byB0aGUNCj4gbmV3IGhvbGRlciBhbmQgdGhhdCdzIGl0LiBJZiB0aGUgcG9pbnRlciBp cyBkZWxldGVkIGhlcmUsIHNpbmNlIGl0IHdhcw0KPiBjb3BpZWQgb3ZlciBpbiB0aGUgbWVtY3B5 IGNhbGwsIHdoZW4gdGhlIG5leHQgb2JqZWN0IGNhbGxzIGl0cw0KPiBkZXN0cnVjdG9yLCB3ZSds bCBnZXQgYSBkb3VibGUgZnJlZS4NCg0KQXJnLCB0aGlzIG1pZ2h0IGhhdmUgYmVlbiBjb25mdXNp bmcuICBNeSBmZWVkYmFjayBvbiB0aGlzIGlzIG5vdCBleGFjdGx5IGF0IHRoZSByaWdodCBsaW5l Lg0KSSdkIGFkZCB0aGlzIGRlbGV0ZSBiZWZvcmUgdGhvc2UgbGluZXM6DQoNCj4gPj4gKyAgICBh ZGRyID0gb3RoZXIuYWRkcjsNCj4gPj4gKyAgICBsZW4gPSBvdGhlci5sZW47DQo+ID4+ICsgICAg bWVtY3B5ICh1LmJ1Ziwgb3RoZXIudS5idWYsIHNpemVvZiAodS5idWYpKTsNCg0KV2hlbiB0aGUg b2JqZWN0IGlzIGZpbmFsbHkgZGVzdHJ1Y3RlZCwgSSBkb24ndCBleHBlY3QgYSBkb3VibGUgZnJl ZSwgc2luY2Ugd2Ugb25seSBmcmVlDQp0aGUgZGF0YSBvZiB0aGUgbW92ZWQgb2JqZWN0LiBJbiB0 aGUgbW92ZSBvcGVyYXRvciB3ZSBkZWxldGUgdGhlIGRhdGEgb2YgdGhlIG9yaWdpbmFsDQpvYmpl Y3QuDQoNCkluIHRoZSBleGFtcGxlIGxpbmsgSSBzaGFyZWQgYWJvdmUsIGFsc28gdGhlIGV4aXN0 aW5nIGRhdGEgYXJlIGRlbGV0ZWQuDQpCdXQgaXQgbWlnaHQgYmUgdGhhdCBJJ20gbWlzc2luZyBz b21ldGhpbmcgaGVyZSBzdGlsbC4NCg0KPiA+DQo+ID4+ICsgICAgbWVtX2VudHJ5X2FjY2Vzc2li bGUgPSBvdGhlci5tZW1fZW50cnlfYWNjZXNzaWJsZTsNCj4gPj4gKyAgICAvKiBXaXRoIGxlbiA9 PSAwLCBPVEhFUiBpcyBndWFyYW50ZWVkIHRvIG5vdCB0cnkgdG8gZnJlZSB0aGUNCj4gPj4gKyAg ICAgICBtZW1vcnkgd2hlbiBpdCBpcyBkZXN0cnVjdGVkLiAgKi8NCj4gPj4gKyAgICBvdGhlci5s ZW4gPSAwOw0KPiA+PiArICAgIHJldHVybiAqdGhpczsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ ICsgIERJU0FCTEVfQ09QWV9BTkRfQVNTSUdOIChyZWNvcmRfZnVsbF9tZW1fZW50cnkpOw0KPiA+ PiArDQo+ID4+ICsgIGdkYl9ieXRlICpnZXRfbG9jICgpDQo+ID4gSSBkb24ndCB0aGluayB0aGlz IGlzIHRvbyBpbXBvcnRhbnQsIGJ1dCBzaW5jZSBJIHNhdyBpdDoNCj4gPiBUaGlzIHNob3VsZCBi ZSBjb25zdCBJIHRoaW5rLg0KPiA+DQo+ID4gSUlVQyB3ZSBzaG91bGQgdGhlbiBhbHNvIHVzZSBh IGNvbnN0IHJlZmVyZW5jZSBpbiBsb29wcyB3aGljaCBjYWxsIGdldF9sb2MgKCksDQo+ID4gbGlr ZSB0aGlzIG9uZToNCj4gPg0KPiA+ICAgIGZvciAoYXV0byAmZW50cnkgOiB0b19wcmludC0+ZWZm ZWN0cykNCj4gPg0KPiA+IEFuZCB0aGUgc2FtZSBhcHBsaWVzIGZvciB0eXBlLCByZWcgYW5kIG1l bS4NCj4gDQo+IFRoZXJlJ3MgYSBnb29kIGFtb3VudCBvZiBwbGFjZXMgdGhhdCB3b3VsZCBuZWVk IGNoYW5naW5nIGZvciBhZGRpbmcNCj4gY29uc3QgdG8gZ2V0X2xvYywgSSB0aGluaywgaW5jbHVk aW5nIGJmZGNvcmVfcmVhZCBhbmQgYmZkY29yZV93cml0ZSwgc28NCj4gaXQgZmVlbHMgbGlrZSBp dHMgdG9vIG11Y2ggZm9yIHRoaXMgcGF0Y2guIHJlZyBhbmQgbWVtIHRocm93IGVycm9ycw0KPiBh Ym91dCB0aGUgZ2V0IGRpc2NhcmRpbmcgcXVhbGlmaWVycy4NCj4gDQo+IEkgZGlkIGFkZCBjb25z dCB0byAidHlwZSIgdGhvdWdoLCB0aGFua3MgZm9yIHBvaW50aW5nIHRoYXQgb3V0Lg0KPiANCj4g Pg0KPiA+PiArICB7DQo+ID4+ICsgICAgaWYgKGxlbiA+IHNpemVvZiAodS5idWYpKQ0KPiA+PiAr ICAgICAgcmV0dXJuIHUucHRyOw0KPiA+PiArICAgIGVsc2UNCj4gPj4gKyAgICAgIHJldHVybiB1 LmJ1ZjsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIGJvb2wgZXhlY3V0ZSAoZ2RiYXJjaCAq Z2RiYXJjaCkNCj4gPj4gKyAgew0KPiA+PiArICAgIC8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlIG1l bW9yeSBpcyBmbGFnZ2VkIG5vdF9hY2Nlc3NpYmxlLiAgKi8NCj4gPj4gKyAgICBpZiAoIW1lbV9l bnRyeV9hY2Nlc3NpYmxlKQ0KPiA+PiArICAgICAgcmV0dXJuIGZhbHNlOw0KPiA+PiArDQo+ID4+ ICsgICAgZ2RiOjpieXRlX3ZlY3RvciBidWYgKGxlbik7DQo+ID4+ICsNCj4gPj4gKyAgICBpZiAo cmVjb3JkX2RlYnVnID4gMSkNCj4gPj4gKyAgICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ ID4+ICsJCSAgIlByb2Nlc3MgcmVjb3JkOiByZWNvcmRfZnVsbF9tZW0gJXMgdG8gIg0KPiA+PiAr CQkgICJpbmZlcmlvciBhZGRyID0gJXMgbGVuID0gJWQuXG4iLA0KPiA+PiArCQkgIGhvc3RfYWRk cmVzc190b19zdHJpbmcgKHRoaXMpLA0KPiA+PiArCQkgIHBhZGRyZXNzIChnZGJhcmNoLCBhZGRy KSwNCj4gPj4gKwkJICBsZW4pOw0KPiA+PiArDQo+ID4+ICsgICAgaWYgKHJlY29yZF9yZWFkX21l bW9yeSAoZ2RiYXJjaCwgYWRkciwgYnVmLmRhdGEgKCksIGxlbikpDQo+ID4+ICsgICAgICBtZW1f ZW50cnlfYWNjZXNzaWJsZSA9IGZhbHNlOw0KPiA+PiArICAgIGVsc2UNCj4gPj4gKyAgICAgIHsN Cj4gPj4gKwlpZiAodGFyZ2V0X3dyaXRlX21lbW9yeSAoYWRkciwNCj4gPj4gKwkJCQkgZ2V0X2xv YyAoKSwNCj4gPj4gKwkJCQkgbGVuKSkNCj4gPj4gKwkgIHsNCj4gPj4gKwkgICAgbWVtX2VudHJ5 X2FjY2Vzc2libGUgPSBmYWxzZTsNCj4gPj4gKwkgICAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gPj4g KwkgICAgICB3YXJuaW5nIChfKCJQcm9jZXNzIHJlY29yZDogZXJyb3Igd3JpdGluZyBtZW1vcnkg YXQgIg0KPiA+PiArCQkJICJhZGRyID0gJXMgbGVuID0gJWQuIiksDQo+ID4+ICsJCSAgICAgICBw YWRkcmVzcyAoZ2RiYXJjaCwgYWRkciksDQo+ID4+ICsJCSAgICAgICBsZW4pOw0KPiA+PiArCSAg fQ0KPiA+PiArCWVsc2UNCj4gPj4gKwkgIHsNCj4gPj4gKwkgICAgbWVtY3B5IChnZXRfbG9jICgp LCBidWYuZGF0YSAoKSwgbGVuKTsNCj4gPj4gKw0KPiA+PiArCSAgICAvKiBXZSd2ZSBjaGFuZ2Vk IG1lbW9yeSAtLS0gY2hlY2sgaWYgYSBoYXJkd2FyZQ0KPiA+PiArCSAgICAgICB3YXRjaHBvaW50 IHNob3VsZCB0cmFwLiAgTm90ZSB0aGF0IHRoaXMNCj4gPj4gKwkgICAgICAgcHJlc2VudGx5IGFz c3VtZXMgdGhlIHRhcmdldCBiZW5lYXRoIHN1cHBvcnRzDQo+ID4+ICsJICAgICAgIGNvbnRpbnVh YmxlIHdhdGNocG9pbnRzLiAgT24gbm9uLWNvbnRpbnVhYmxlDQo+ID4+ICsJICAgICAgIHdhdGNo cG9pbnRzIHRhcmdldCwgd2UnbGwgd2FudCB0byBjaGVjayB0aGlzDQo+ID4+ICsJICAgICAgIF9i ZWZvcmVfIGFjdHVhbGx5IGRvaW5nIHRoZSBtZW1vcnkgY2hhbmdlLCBhbmQNCj4gPj4gKwkgICAg ICAgbm90IGRvaW5nIHRoZSBjaGFuZ2UgYXQgYWxsIGlmIHRoZSB3YXRjaHBvaW50DQo+ID4+ICsJ ICAgICAgIHRyYXBzLiAgKi8NCj4gPj4gKwkgICAgaWYgKGhhcmR3YXJlX3dhdGNocG9pbnRfaW5z ZXJ0ZWRfaW5fcmFuZ2UNCj4gPj4gKwkJKGN1cnJlbnRfaW5mZXJpb3IgKCktPmFzcGFjZS5nZXQg KCksIGFkZHIsIGxlbikpDQo+ID4+ICsJICAgICAgcmV0dXJuIHRydWU7DQo+ID4+ICsJICB9DQo+ ID4+ICsgICAgICB9DQo+ID4+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiA+PiArICB9DQo+ID4+ICAg fTsNCj4gPj4NCj4gPj4gICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfcmVnX2VudHJ5DQo+ID4+IEBAIC0x MTAsNiArMjEyLDcwIEBAIHN0cnVjdCByZWNvcmRfZnVsbF9yZWdfZW50cnkNCj4gPj4gICAgICAg Z2RiX2J5dGUgKnB0cjsNCj4gPj4gICAgICAgZ2RiX2J5dGUgYnVmWzIgKiBzaXplb2YgKGdkYl9i eXRlICopXTsNCj4gPj4gICAgIH0gdTsNCj4gPj4gKw0KPiA+PiArICByZWNvcmRfZnVsbF9yZWdf ZW50cnkgKCkgOiBudW0gKDApLCBsZW4gKDApIHsgfQ0KPiA+PiArDQo+ID4+ICsgIHJlY29yZF9m dWxsX3JlZ19lbnRyeSAoZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSkgIHsNCj4gPj4gKyAg ICBudW0gPSByZWdudW07DQo+ID4+ICsgICAgbGVuID0gcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwg cmVnbnVtKTsNCj4gPj4gKyAgICBpZiAobGVuID4gc2l6ZW9mICh1LmJ1ZikpDQo+ID4+ICsgICAg ICB1LnB0ciA9IG5ldyBnZGJfYnl0ZVtsZW5dOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAg cmVjb3JkX2Z1bGxfcmVnX2VudHJ5IChyZWNvcmRfZnVsbF9yZWdfZW50cnkgJiZvdGhlcikgIHsN Cj4gPj4gKyAgICBudW0gPSBvdGhlci5udW07DQo+ID4+ICsgICAgbGVuID0gb3RoZXIubGVuOw0K PiA+PiArICAgIG1lbWNweSAodS5idWYsIG90aGVyLnUuYnVmLCBzaXplb2YgKHUuYnVmKSk7DQo+ ID4+ICsgICAgLyogV2l0aCBsZW4gPT0gMCwgT1RIRVIgaXMgZ3VhcmFudGVlZCB0byBub3QgdHJ5 IHRvIGZyZWUgdGhlDQo+ID4+ICsgICAgICAgbWVtb3J5IHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZC4g ICovDQo+ID4+ICsgICAgb3RoZXIubGVuID0gMDsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsg IH5yZWNvcmRfZnVsbF9yZWdfZW50cnkgKCkNCj4gPj4gKyAgew0KPiA+PiArICAgIGlmIChsZW4g PiBzaXplb2YgKHUuYnVmKSkNCj4gPj4gKyAgICAgIGRlbGV0ZVtdIHUucHRyOw0KPiA+PiArICB9 DQo+ID4+ICsNCj4gPj4gKyAgcmVjb3JkX2Z1bGxfcmVnX2VudHJ5ICZvcGVyYXRvcj0ocmVjb3Jk X2Z1bGxfcmVnX2VudHJ5ICYmb3RoZXIpICB7DQo+ID4+ICsgICAgbnVtID0gb3RoZXIubnVtOw0K PiA+PiArICAgIGxlbiA9IG90aGVyLmxlbjsNCj4gPj4gKyAgICBtZW1jcHkgKHUuYnVmLCBvdGhl ci51LmJ1Ziwgc2l6ZW9mICh1LmJ1ZikpOw0KPiA+PiArICAgIC8qIFdpdGggbGVuID09IDAsIE9U SEVSIGlzIGd1YXJhbnRlZWQgdG8gbm90IHRyeSB0byBmcmVlIHRoZQ0KPiA+PiArICAgICAgIG1l bW9yeSB3aGVuIGl0IGlzIGRlc3RydWN0ZWQuICAqLw0KPiA+PiArICAgIG90aGVyLmxlbiA9IDA7 DQo+ID4+ICsgICAgcmV0dXJuICp0aGlzOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgRElT QUJMRV9DT1BZX0FORF9BU1NJR04gKHJlY29yZF9mdWxsX3JlZ19lbnRyeSk7DQo+ID4+ICsNCj4g Pj4gKyAgZ2RiX2J5dGUgKmdldF9sb2MgKCkNCj4gPj4gKyAgew0KPiA+PiArICAgIGlmIChsZW4g PiBzaXplb2YgKHUuYnVmKSkNCj4gPj4gKyAgICAgIHJldHVybiB1LnB0cjsNCj4gPj4gKyAgICBl bHNlDQo+ID4+ICsgICAgICByZXR1cm4gdS5idWY7DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiAr ICBib29sIGV4ZWN1dGUgKHJlZ2NhY2hlICpyZWdjYWNoZSkNCj4gPj4gKyAgew0KPiA+PiArICAg IGdkYjo6Ynl0ZV92ZWN0b3IgYnVmIChsZW4pOw0KPiA+PiArDQo+ID4+ICsgICAgaWYgKHJlY29y ZF9kZWJ1ZyA+IDEpDQo+ID4+ICsgICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0KPiA+PiAr CQkgICJQcm9jZXNzIHJlY29yZDogcmVjb3JkX2Z1bGxfcmVnICVzIHRvICINCj4gPj4gKwkJICAi aW5mZXJpb3IgbnVtID0gJWQuXG4iLA0KPiA+PiArCQkgIGhvc3RfYWRkcmVzc190b19zdHJpbmcg KHRoaXMpLA0KPiA+PiArCQkgIG51bSk7DQo+ID4+ICsNCj4gPj4gKyAgICByZWdjYWNoZS0+Y29v a2VkX3JlYWQgKG51bSwgYnVmKTsNCj4gPj4gKyAgICByZWdjYWNoZS0+Y29va2VkX3dyaXRlIChu dW0sIGdldF9sb2MgKCkpOw0KPiA+PiArICAgIG1lbWNweSAoZ2V0X2xvYyAoKSwgYnVmLmRhdGEg KCksIGxlbik7DQo+ID4+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiA+PiArICB9DQo+ID4+ICAgfTsN Cj4gPj4NCj4gPj4gICBlbnVtIHJlY29yZF9mdWxsX3R5cGUNCj4gPj4gQEAgLTExOCwxNiArMjg0 LDg4IEBAIGVudW0gcmVjb3JkX2Z1bGxfdHlwZQ0KPiA+PiAgICAgcmVjb3JkX2Z1bGxfbWVtDQo+ ID4+ICAgfTsNCj4gPj4NCj4gPj4gLXN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeQ0KPiA+PiArY2xh c3MgcmVjb3JkX2Z1bGxfZW50cnkNCj4gPj4gICB7DQo+ID4+IC0gIGVudW0gcmVjb3JkX2Z1bGxf dHlwZSB0eXBlOw0KPiA+PiAtICB1bmlvbg0KPiA+PiArICBzdGQ6OnZhcmlhbnQ8cmVjb3JkX2Z1 bGxfcmVnX2VudHJ5LCByZWNvcmRfZnVsbF9tZW1fZW50cnk+IGVudHJ5Ow0KPiA+PiArDQo+ID4+ ICtwdWJsaWM6DQo+ID4+ICsgIHJlY29yZF9mdWxsX2VudHJ5ICgpIDogZW50cnkgKHJlY29yZF9m dWxsX3JlZ19lbnRyeSAoKSkge30NCj4gPj4gKw0KPiA+PiArICAvKiBDb25zdHJ1Y3RvciBmb3Ig YSByZWdpc3RlciBlbnRyeS4gIFR5cGUgaXMgaGVyZSB0byBtYWtlIGl0DQo+ID4+ICsgICAgIGVh c2llciB0byByZWNvZ25pemUgaXQgaW4gdGhlIGNvbnN0cnVjdG9yIGNhbGxzLCBpdCBpc24ndA0K PiA+PiArICAgICBhY3R1YWxseSBpbXBvcnRhbnQuICAqLw0KPiA+PiArICByZWNvcmRfZnVsbF9l bnRyeSAocmVjb3JkX2Z1bGxfdHlwZSByZWdfdHlwZSwgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4gPj4g KwkJICAgICBpbnQgcmVnbnVtKQ0KPiA+PiArICA6IGVudHJ5KHJlY29yZF9mdWxsX3JlZ19lbnRy eSAoZ2RiYXJjaCwgcmVnbnVtKSkNCj4gPj4gICAgIHsNCj4gPj4gLSAgICAvKiByZWcgKi8NCj4g Pj4gLSAgICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfcmVnX2VudHJ5IHJlZzsNCj4gPj4gLSAgICAvKiBt ZW0gKi8NCj4gPj4gLSAgICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfbWVtX2VudHJ5IG1lbTsNCj4gPj4g LSAgfSB1Ow0KPiA+PiArICAgIGdkYl9hc3NlcnQgKHJlZ190eXBlID09IHJlY29yZF9mdWxsX3Jl Zyk7ICB9DQo+ID4+ICsNCj4gPj4gKyAgcmVjb3JkX2Z1bGxfZW50cnkgKHJlY29yZF9mdWxsX3R5 cGUgbWVtX3R5cGUsIENPUkVfQUREUiBhZGRyLCBpbnQNCj4gPj4gKyBsZW4pDQo+ID4+ICsgIDog ZW50cnkocmVjb3JkX2Z1bGxfbWVtX2VudHJ5IChhZGRyLCBsZW4pKSAgew0KPiA+PiArICAgIGdk Yl9hc3NlcnQgKG1lbV90eXBlID09IHJlY29yZF9mdWxsX21lbSk7ICB9DQo+ID4+ICsNCj4gPj4g KyAgcmVjb3JkX2Z1bGxfZW50cnkgKHJlY29yZF9mdWxsX2VudHJ5ICYmb3RoZXIpDQo+ID4+ICsg IDogZW50cnkgKHN0ZDo6bW92ZSAob3RoZXIuZW50cnkpKQ0KPiA+PiArICB7DQo+ID4+ICsgIH0N Cj4gPj4gKw0KPiA+PiArICBESVNBQkxFX0NPUFlfQU5EX0FTU0lHTiAocmVjb3JkX2Z1bGxfZW50 cnkpOw0KPiA+PiArDQo+ID4+ICsgIHJlY29yZF9mdWxsX3JlZ19lbnRyeSYgcmVnICgpDQo+ID4+ ICsgIHsNCj4gPj4gKyAgICBnZGJfYXNzZXJ0ICh0eXBlICgpID09IHJlY29yZF9mdWxsX3JlZyk7 DQo+ID4+ICsgICAgcmV0dXJuIHN0ZDo6Z2V0PHJlY29yZF9mdWxsX3JlZ19lbnRyeT4gKGVudHJ5 KTsgIH0NCj4gPj4gKw0KPiA+PiArICByZWNvcmRfZnVsbF9tZW1fZW50cnkmIG1lbSAoKQ0KPiA+ PiArICB7DQo+ID4+ICsgICAgZ2RiX2Fzc2VydCAodHlwZSAoKSA9PSByZWNvcmRfZnVsbF9tZW0p Ow0KPiA+PiArICAgIHJldHVybiBzdGQ6OmdldDxyZWNvcmRfZnVsbF9tZW1fZW50cnk+IChlbnRy eSk7ICB9DQo+ID4+ICsNCj4gPj4gKyAgcmVjb3JkX2Z1bGxfdHlwZSB0eXBlICgpDQo+ID4+ICsg IHsNCj4gPj4gKyAgICBzd2l0Y2ggKGVudHJ5LmluZGV4ICgpKQ0KPiA+PiArICAgIHsNCj4gPj4g KyAgICBjYXNlIDA6DQo+ID4+ICsgICAgICByZXR1cm4gcmVjb3JkX2Z1bGxfcmVnOw0KPiA+PiAr ICAgIGNhc2UgMToNCj4gPj4gKyAgICAgIHJldHVybiByZWNvcmRfZnVsbF9tZW07DQo+ID4+ICsg ICAgfQ0KPiA+PiArICAgIGdkYl9hc3NlcnRfbm90X3JlYWNoZWQgKCJJbXBvc3NpYmxlIHZhcmlh bnQgaW5kZXgiKTsgIH0NCj4gPj4gKw0KPiA+PiArICAvKiBHZXQgdGhlIHBvaW50ZXIgdG8gdGhl IGRhdGEgc3RvcmVkIGJ5IHRoaXMgZW50cnkuICAqLyAgZ2RiX2J5dGUNCj4gPj4gKyAqZ2V0X2xv YyAoKSAgew0KPiA+PiArICAgIHN3aXRjaCAodHlwZSAoKSkNCj4gPj4gKyAgICB7DQo+ID4+ICsg ICAgY2FzZSByZWNvcmRfZnVsbF9yZWc6DQo+ID4+ICsgICAgICByZXR1cm4gcmVnICgpLmdldF9s b2MgKCk7DQo+ID4+ICsgICAgY2FzZSByZWNvcmRfZnVsbF9tZW06DQo+ID4+ICsgICAgICByZXR1 cm4gbWVtICgpLmdldF9sb2MgKCk7DQo+ID4+ICsgICAgfQ0KPiA+PiArICAgIGdkYl9hc3NlcnRf bm90X3JlYWNoZWQgKCJJbXBvc3NpYmxlIGVudHJ5IHR5cGUiKTsgIH0NCj4gPj4gKw0KPiA+PiAr ICAvKiBFeGVjdXRlIHRoaXMgZW50cnksIHN3YXBwaW5nIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZXMg ZnJvbSBtZW1vcnkgb3INCj4gPj4gKyAgICAgcmVnaXN0ZXIgYW5kIHRoZSByZWNvcmRlZCBvbmVz LiAgUmV0dXJucyBUUlVFIGlmIHRoZSBleGVjdXRpb24gd2FzDQo+ID4+ICsgICAgIHN0b3BwZWQg YnkgYSB3YXRjaHBvaW50LiAgKi8NCj4gPj4gKw0KPiA+PiArICBib29sIGV4ZWN1dGUgKHJlZ2Nh Y2hlICpyZWdjYWNoZSkNCj4gPj4gKyAgew0KPiA+PiArICAgIHN3aXRjaCAodHlwZSAoKSkNCj4g Pj4gKyAgICAgIHsNCj4gPj4gKyAgICAgIGNhc2UgcmVjb3JkX2Z1bGxfcmVnOg0KPiA+PiArCXJl dHVybiByZWcgKCkuZXhlY3V0ZSAocmVnY2FjaGUpOw0KPiA+PiArICAgICAgY2FzZSByZWNvcmRf ZnVsbF9tZW06DQo+ID4+ICsJcmV0dXJuIG1lbSAoKS5leGVjdXRlIChyZWdjYWNoZS0+YXJjaCAo KSk7DQo+ID4+ICsgICAgICB9DQo+ID4+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiA+PiArICB9DQo+ ID4+ICAgfTsNCj4gPj4NCj4gPj4gICAvKiBUaGlzIGlzIHRoZSBtYWluIHN0cnVjdHVyZSB0aGF0 IGNvbXByaXNlcyB0aGUgZXhlY3V0aW9uIGxvZy4NCj4gPj4gQEAgLTM4NCw5MSArNjIyLDEyIEBA IHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudA0KPiA+PiAqcmVjb3JkX2Z1bGxfY21kbGlz dDsgIHN0YXRpYyB2b2lkIHJlY29yZF9mdWxsX2dvdG9faW5zbiAoc2l6ZV90IHRhcmdldF9pbnNu LA0KPiA+PiAgIAkJCQkgICBlbnVtIGV4ZWNfZGlyZWN0aW9uX2tpbmQgZGlyKTsNCj4gPj4NCj4g Pj4gLS8qIEluaXRpYWxpemF0aW9uIGFuZCBjbGVhbnVwIGZ1bmN0aW9ucyBmb3IgcmVjb3JkX2Z1 bGxfcmVnIGFuZA0KPiA+PiAtICAgcmVjb3JkX2Z1bGxfbWVtIGVudHJpZXMuICAqLw0KPiA+PiAt DQo+ID4+IC0vKiBJbml0IGEgcmVjb3JkX2Z1bGxfcmVnIHJlY29yZCBlbnRyeS4gICovDQo+ID4+ IC0NCj4gPj4gLXN0YXRpYyBpbmxpbmUgcmVjb3JkX2Z1bGxfZW50cnkNCj4gPj4gLXJlY29yZF9m dWxsX3JlZ19pbml0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtKSAtew0K PiA+PiAtICByZWNvcmRfZnVsbF9lbnRyeSByZWM7DQo+ID4+IC0gIHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoID0gcmVnY2FjaGUtPmFyY2ggKCk7DQo+ID4+IC0NCj4gPj4gLSAgcmVjLnR5cGUgPSBy ZWNvcmRfZnVsbF9yZWc7DQo+ID4+IC0gIHJlYy51LnJlZy5udW0gPSByZWdudW07DQo+ID4+IC0g IHJlYy51LnJlZy5sZW4gPSByZWdpc3Rlcl9zaXplIChnZGJhcmNoLCByZWdudW0pOw0KPiA+PiAt ICBpZiAocmVjLnUucmVnLmxlbiA+IHNpemVvZiAocmVjLnUucmVnLnUuYnVmKSkNCj4gPj4gLSAg ICByZWMudS5yZWcudS5wdHIgPSAoZ2RiX2J5dGUgKikgeG1hbGxvYyAocmVjLnUucmVnLmxlbik7 DQo+ID4+IC0NCj4gPj4gLSAgcmV0dXJuIHJlYzsNCj4gPj4gLX0NCj4gPj4gLQ0KPiA+PiAtLyog Q2xlYW51cCBhIHJlY29yZF9mdWxsX3JlZyByZWNvcmQgZW50cnkuICAqLw0KPiA+PiAtDQo+ID4+ IC1zdGF0aWMgaW5saW5lIHZvaWQNCj4gPj4gLXJlY29yZF9mdWxsX3JlZ19jbGVhbnVwIChyZWNv cmRfZnVsbF9lbnRyeSByZWMpIC17DQo+ID4+IC0gIGdkYl9hc3NlcnQgKHJlYy50eXBlID09IHJl Y29yZF9mdWxsX3JlZyk7DQo+ID4+IC0gIGlmIChyZWMudS5yZWcubGVuID4gc2l6ZW9mIChyZWMu dS5yZWcudS5idWYpKQ0KPiA+PiAtICAgIHhmcmVlIChyZWMudS5yZWcudS5wdHIpOw0KPiA+PiAt fQ0KPiA+PiAtDQo+ID4+IC0vKiBJbml0IGEgcmVjb3JkX2Z1bGxfbWVtIHJlY29yZCBlbnRyeS4g ICovDQo+ID4+IC0NCj4gPj4gLXN0YXRpYyBpbmxpbmUgcmVjb3JkX2Z1bGxfZW50cnkNCj4gPj4g LXJlY29yZF9mdWxsX21lbV9pbml0IChDT1JFX0FERFIgYWRkciwgaW50IGxlbikgLXsNCj4gPj4g LSAgcmVjb3JkX2Z1bGxfZW50cnkgcmVjOw0KPiA+PiAtDQo+ID4+IC0gIHJlYy50eXBlID0gcmVj b3JkX2Z1bGxfbWVtOw0KPiA+PiAtICByZWMudS5tZW0uYWRkciA9IGFkZHI7DQo+ID4+IC0gIHJl Yy51Lm1lbS5sZW4gPSBsZW47DQo+ID4+IC0gIGlmIChyZWMudS5tZW0ubGVuID4gc2l6ZW9mIChy ZWMudS5tZW0udS5idWYpKQ0KPiA+PiAtICAgIHJlYy51Lm1lbS51LnB0ciA9IChnZGJfYnl0ZSAq KSB4bWFsbG9jIChsZW4pOw0KPiA+PiAtICByZWMudS5tZW0ubWVtX2VudHJ5X25vdF9hY2Nlc3Np YmxlID0gMDsNCj4gPj4gLQ0KPiA+PiAtICByZXR1cm4gcmVjOw0KPiA+PiAtfQ0KPiA+PiAtDQo+ ID4+IC0vKiBDbGVhbnVwIGEgcmVjb3JkX2Z1bGxfbWVtIHJlY29yZCBlbnRyeS4gICovDQo+ID4+ IC0NCj4gPj4gLXN0YXRpYyBpbmxpbmUgdm9pZA0KPiA+PiAtcmVjb3JkX2Z1bGxfbWVtX2NsZWFu dXAgKHJlY29yZF9mdWxsX2VudHJ5IHJlYykgLXsNCj4gPj4gLSAgZ2RiX2Fzc2VydCAocmVjLnR5 cGUgPT0gcmVjb3JkX2Z1bGxfbWVtKTsNCj4gPj4gLSAgaWYgKHJlYy51Lm1lbS5sZW4gPiBzaXpl b2YgKHJlYy51Lm1lbS51LmJ1ZikpDQo+ID4+IC0gICAgeGZyZWUgKHJlYy51Lm1lbS51LnB0cik7 DQo+ID4+IC19DQo+ID4+IC0NCj4gPj4gLS8qIEZyZWUgb25lIHJlY29yZCBlbnRyeSwgYW55IHR5 cGUuICAqLw0KPiA+PiAtDQo+ID4+IC1zdGF0aWMgaW5saW5lIHZvaWQNCj4gPj4gLXJlY29yZF9m dWxsX2VudHJ5X2NsZWFudXAgKHJlY29yZF9mdWxsX2VudHJ5IHJlYykgLXsNCj4gPj4gLQ0KPiA+ PiAtICBzd2l0Y2ggKHJlYy50eXBlKSB7DQo+ID4+IC0gIGNhc2UgcmVjb3JkX2Z1bGxfcmVnOg0K PiA+PiAtICAgIHJlY29yZF9mdWxsX3JlZ19jbGVhbnVwIChyZWMpOw0KPiA+PiAtICAgIGJyZWFr Ow0KPiA+PiAtICBjYXNlIHJlY29yZF9mdWxsX21lbToNCj4gPj4gLSAgICByZWNvcmRfZnVsbF9t ZW1fY2xlYW51cCAocmVjKTsNCj4gPj4gLSAgICBicmVhazsNCj4gPj4gLSAgfQ0KPiA+PiAtfQ0K PiA+PiAtDQo+ID4+ICAgc3RhdGljIHZvaWQNCj4gPj4gICByZWNvcmRfZnVsbF9yZXNldF9oaXN0 b3J5ICgpDQo+ID4+ICAgew0KPiA+PiAgICAgcmVjb3JkX2Z1bGxfaW5zbl9jb3VudCA9IDA7DQo+ ID4+ICAgICByZWNvcmRfZnVsbF9uZXh0X2luc24gPSAwOw0KPiA+Pg0KPiA+PiAtICBmb3IgKGF1 dG8gJmluc24gOiByZWNvcmRfZnVsbF9saXN0KQ0KPiA+PiAtICAgIHsNCj4gPj4gLSAgICAgIGZv ciAoYXV0byAmZW50cnkgOiBpbnNuLmVmZmVjdHMpDQo+ID4+IC0JcmVjb3JkX2Z1bGxfZW50cnlf Y2xlYW51cCAoZW50cnkpOw0KPiA+PiAtICAgIH0NCj4gPj4gLQ0KPiA+PiAgICAgcmVjb3JkX2Z1 bGxfbGlzdC5jbGVhciAoKTsNCj4gPj4gICB9DQo+ID4+DQo+ID4+IEBAIC00NzYsMTEgKzYzNSw3 IEBAIHN0YXRpYyB2b2lkDQo+ID4+ICAgcmVjb3JkX2Z1bGxfbGlzdF9yZWxlYXNlX2ZvbGxvd2lu ZyAoaW50IGluZGV4KSAgew0KPiA+PiAgICAgZm9yIChpbnQgaSA9IHJlY29yZF9mdWxsX2xpc3Qu c2l6ZSAoKSAtIDE7IGkgPiBpbmRleDsgaS0tKQ0KPiA+PiAtICAgIHsNCj4gPj4gLSAgICAgIGZv ciAoYXV0byAmZW50cnkgOiByZWNvcmRfZnVsbF9saXN0W2ldLmVmZmVjdHMpDQo+ID4+IC0JcmVj b3JkX2Z1bGxfZW50cnlfY2xlYW51cCAoZW50cnkpOw0KPiA+PiAtICAgICAgcmVjb3JkX2Z1bGxf bGlzdC5wb3BfYmFjayAoKTsNCj4gPj4gLSAgICB9DQo+ID4+ICsgICAgcmVjb3JkX2Z1bGxfbGlz dC5wb3BfYmFjayAoKTsNCj4gPj4gICAgIC8qIFNldCB0aGUgbmV4dCBpbnN0cnVjdGlvbiB0byBi ZSBwYXN0IHRoZSBlbmQgb2YgdGhlIGxvZyBzbyB3ZQ0KPiA+PiAgICAgICAgc3RhcnQgcmVjb3Jk aW5nIGlmIHRoZSB1c2VyIG1vdmVzIGZvcndhcmQgYWdhaW4uICAqLw0KPiA+PiAgICAgcmVjb3Jk X2Z1bGxfbmV4dF9pbnNuID0gaW5kZXg7DQo+ID4+IEBAIC01MDksOSArNjY0LDYgQEAgcmVjb3Jk X2Z1bGxfbGlzdF9yZWxlYXNlX2ZpcnN0ICh2b2lkKQ0KPiA+PiAgICAgaWYgKHJlY29yZF9mdWxs X2xpc3QuZW1wdHkgKCkpDQo+ID4+ICAgICAgIHJldHVybjsNCj4gPj4NCj4gPj4gLSAgZm9yIChh dXRvICZlbnRyeSA6IHJlY29yZF9mdWxsX2xpc3RbMF0uZWZmZWN0cykNCj4gPj4gLSAgICByZWNv cmRfZnVsbF9lbnRyeV9jbGVhbnVwIChlbnRyeSk7DQo+ID4+IC0NCj4gPj4gICAgIHJlY29yZF9m dWxsX2xpc3QucG9wX2Zyb250ICgpOw0KPiA+PiAgICAgLS1yZWNvcmRfZnVsbF9uZXh0X2luc247 DQo+ID4+ICAgfQ0KPiA+PiBAQCAtNTIxLDI4ICs2NzMsNyBAQCByZWNvcmRfZnVsbF9saXN0X3Jl bGVhc2VfZmlyc3QgKHZvaWQpICBzdGF0aWMgdm9pZA0KPiA+PiByZWNvcmRfZnVsbF9hcmNoX2xp c3RfYWRkIChyZWNvcmRfZnVsbF9lbnRyeSAmcmVjKSAgew0KPiA+PiAtICByZWNvcmRfZnVsbF9p bmNvbXBsZXRlX2luc3RydWN0aW9uLmVmZmVjdHMucHVzaF9iYWNrIChyZWMpOyAtfQ0KPiA+PiAt DQo+ID4+IC0vKiBSZXR1cm4gdGhlIHZhbHVlIHN0b3JhZ2UgbG9jYXRpb24gb2YgYSByZWNvcmQg ZW50cnkuICAqLyAtc3RhdGljIGlubGluZQ0KPiA+PiBnZGJfYnl0ZSAqIC1yZWNvcmRfZnVsbF9n ZXRfbG9jIChzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnJlYykgLXsNCj4gPj4gLSAgc3dpdGNo IChyZWMtPnR5cGUpIHsNCj4gPj4gLSAgY2FzZSByZWNvcmRfZnVsbF9tZW06DQo+ID4+IC0gICAg aWYgKHJlYy0+dS5tZW0ubGVuID4gc2l6ZW9mIChyZWMtPnUubWVtLnUuYnVmKSkNCj4gPj4gLSAg ICAgIHJldHVybiByZWMtPnUubWVtLnUucHRyOw0KPiA+PiAtICAgIGVsc2UNCj4gPj4gLSAgICAg IHJldHVybiByZWMtPnUubWVtLnUuYnVmOw0KPiA+PiAtICBjYXNlIHJlY29yZF9mdWxsX3JlZzoN Cj4gPj4gLSAgICBpZiAocmVjLT51LnJlZy5sZW4gPiBzaXplb2YgKHJlYy0+dS5yZWcudS5idWYp KQ0KPiA+PiAtICAgICAgcmV0dXJuIHJlYy0+dS5yZWcudS5wdHI7DQo+ID4+IC0gICAgZWxzZQ0K PiA+PiAtICAgICAgcmV0dXJuIHJlYy0+dS5yZWcudS5idWY7DQo+ID4+IC0gIGRlZmF1bHQ6DQo+ ID4+IC0gICAgZ2RiX2Fzc2VydF9ub3RfcmVhY2hlZCAoInVuZXhwZWN0ZWQgcmVjb3JkX2Z1bGxf ZW50cnkgdHlwZSIpOw0KPiA+PiAtICAgIHJldHVybiBOVUxMOw0KPiA+PiAtICB9DQo+ID4+ICsg IHJlY29yZF9mdWxsX2luY29tcGxldGVfaW5zdHJ1Y3Rpb24uZWZmZWN0cy5wdXNoX2JhY2sgKHN0 ZDo6bW92ZQ0KPiA+PiArIChyZWMpKTsNCj4gPj4gICB9DQo+ID4+DQo+ID4+ICAgLyogUmVjb3Jk IHRoZSB2YWx1ZSBvZiBhIHJlZ2lzdGVyIE5VTSB0byByZWNvcmRfZnVsbF9hcmNoX2xpc3QuICAq LyBAQCAtDQo+IDU1MCw3DQo+ID4+ICs2ODEsNyBAQCByZWNvcmRfZnVsbF9nZXRfbG9jIChzdHJ1 Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnJlYykgIGludA0KPiA+PiByZWNvcmRfZnVsbF9hcmNoX2xp c3RfYWRkX3JlZyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ251bSkgIHsNCj4g Pj4gLSAgcmVjb3JkX2Z1bGxfZW50cnkgcmVjOw0KPiA+PiArICByZWNvcmRfZnVsbF9lbnRyeSBy ZWMgKHJlY29yZF9mdWxsX3JlZywgcmVnY2FjaGUtPmFyY2ggKCksIHJlZ251bSk7DQo+ID4+DQo+ ID4+ICAgICBpZiAocmVjb3JkX2RlYnVnID4gMSkNCj4gPj4gICAgICAgZ2RiX3ByaW50ZiAoZ2Ri X3N0ZGxvZywNCj4gPj4gQEAgLTU1OCw5ICs2ODksNyBAQCByZWNvcmRfZnVsbF9hcmNoX2xpc3Rf YWRkX3JlZyAoc3RydWN0IHJlZ2NhY2hlDQo+ID4+ICpyZWdjYWNoZSwgaW50IHJlZ251bSkNCj4g Pj4gICAJCSJyZWNvcmQgbGlzdC5cbiIsDQo+ID4+ICAgCQlyZWdudW0pOw0KPiA+Pg0KPiA+PiAt ICByZWMgPSByZWNvcmRfZnVsbF9yZWdfaW5pdCAocmVnY2FjaGUsIHJlZ251bSk7DQo+ID4+IC0N Cj4gPj4gLSAgcmVnY2FjaGUtPmNvb2tlZF9yZWFkIChyZWdudW0sIHJlY29yZF9mdWxsX2dldF9s b2MgKCZyZWMpKTsNCj4gPj4gKyAgcmVnY2FjaGUtPmNvb2tlZF9yZWFkIChyZWdudW0sIHJlYy5n ZXRfbG9jICgpKTsNCj4gPj4NCj4gPj4gICAgIHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGQgKHJl Yyk7DQo+ID4+DQo+ID4+IEBAIC01NzMsNyArNzAyLDcgQEAgcmVjb3JkX2Z1bGxfYXJjaF9saXN0 X2FkZF9yZWcgKHN0cnVjdCByZWdjYWNoZQ0KPiA+PiAqcmVnY2FjaGUsIGludCByZWdudW0pICBp bnQgIHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfbWVtIChDT1JFX0FERFINCj4gPj4gYWRkciwg aW50IGxlbikgIHsNCj4gPj4gLSAgcmVjb3JkX2Z1bGxfZW50cnkgcmVjOw0KPiA+PiArICByZWNv cmRfZnVsbF9lbnRyeSByZWMgKHJlY29yZF9mdWxsX21lbSwgYWRkciwgbGVuKTsNCj4gPj4NCj4g Pj4gICAgIGlmIChyZWNvcmRfZGVidWcgPiAxKQ0KPiA+PiAgICAgICBnZGJfcHJpbnRmIChnZGJf c3RkbG9nLA0KPiA+PiBAQCAtNTg0LDE0ICs3MTMsOSBAQCByZWNvcmRfZnVsbF9hcmNoX2xpc3Rf YWRkX21lbSAoQ09SRV9BRERSDQo+IGFkZHIsDQo+ID4+IGludCBsZW4pDQo+ID4+ICAgICBpZiAo IWFkZHIpCS8qIEZJWE1FOiBXaHk/ICBTb21lIGFyY2ggbXVzdCBwZXJtaXQgaXQuLi4gICovDQo+ ID4+ICAgICAgIHJldHVybiAwOw0KPiA+Pg0KPiA+PiAtICByZWMgPSByZWNvcmRfZnVsbF9tZW1f aW5pdCAoYWRkciwgbGVuKTsNCj4gPj4gLQ0KPiA+PiAgICAgaWYgKHJlY29yZF9yZWFkX21lbW9y eSAoY3VycmVudF9pbmZlcmlvciAoKS0+YXJjaCAoKSwgYWRkciwNCj4gPj4gLQkJCSAgcmVjb3Jk X2Z1bGxfZ2V0X2xvYyAoJnJlYyksIGxlbikpDQo+ID4+IC0gICAgew0KPiA+PiAtICAgICAgcmVj b3JkX2Z1bGxfbWVtX2NsZWFudXAgKHJlYyk7DQo+ID4+IC0gICAgICByZXR1cm4gLTE7DQo+ID4+ IC0gICAgfQ0KPiA+PiArCQkJICByZWMuZ2V0X2xvYyAoKSwgbGVuKSkNCj4gPj4gKyAgICByZXR1 cm4gLTE7DQo+ID4+DQo+ID4+ICAgICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkIChyZWMpOw0K PiA+Pg0KPiA+PiBAQCAtNzE5LDk4ICs4NDMsMTQgQEAgcmVjb3JkX2Z1bGxfZ2RiX29wZXJhdGlv bl9kaXNhYmxlX3NldCAodm9pZCkNCj4gPj4gc3RhdGljIGVudW0gdGFyZ2V0X3N0b3BfcmVhc29u IHJlY29yZF9mdWxsX3N0b3BfcmVhc29uDQo+ID4+ICAgICA9IFRBUkdFVF9TVE9QUEVEX0JZX05P X1JFQVNPTjsNCj4gPj4NCj4gPj4gLS8qIEV4ZWN1dGUgb25lIGluc3RydWN0aW9uIGZyb20gdGhl IHJlY29yZCBsb2cuICBFYWNoIGluc3RydWN0aW9uIGluDQo+ID4+IC0gICB0aGUgbG9nIHdpbGwg YmUgcmVwcmVzZW50ZWQgYnkgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIG9mIHJlZ2lzdGVyDQo+ID4+ IC0gICBlbnRyaWVzIGFuZCBtZW1vcnkgZW50cmllcywgZm9sbG93ZWQgYnkgYW4gJ2VuZCcgZW50 cnkuICAqLw0KPiA+PiAtDQo+ID4+IC1zdGF0aWMgaW5saW5lIHZvaWQNCj4gPj4gLXJlY29yZF9m dWxsX2V4ZWNfZW50cnkgKHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4gPj4gLQkJCWdkYmFyY2ggKmdk YmFyY2gsDQo+ID4+IC0JCQlyZWNvcmRfZnVsbF9lbnRyeSAqZW50cnkpDQo+ID4+IC17DQo+ID4+ IC0gIHN3aXRjaCAoZW50cnktPnR5cGUpDQo+ID4+IC0gICAgew0KPiA+PiAtICAgIGNhc2UgcmVj b3JkX2Z1bGxfcmVnOiAvKiByZWcgKi8NCj4gPj4gLSAgICAgIHsNCj4gPj4gLQlnZGI6OmJ5dGVf dmVjdG9yIHJlZyAoZW50cnktPnUucmVnLmxlbik7DQo+ID4+IC0NCj4gPj4gLQlpZiAocmVjb3Jk X2RlYnVnID4gMSkNCj4gPj4gLQkgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ID4+IC0JCSAg ICAgICJQcm9jZXNzIHJlY29yZDogcmVjb3JkX2Z1bGxfcmVnICVzIHRvICINCj4gPj4gLQkJICAg ICAgImluZmVyaW9yIG51bSA9ICVkLlxuIiwNCj4gPj4gLQkJICAgICAgaG9zdF9hZGRyZXNzX3Rv X3N0cmluZyAoZW50cnkpLA0KPiA+PiAtCQkgICAgICBlbnRyeS0+dS5yZWcubnVtKTsNCj4gPj4g LQ0KPiA+PiAtCXJlZ2NhY2hlLT5jb29rZWRfcmVhZCAoZW50cnktPnUucmVnLm51bSwgcmVnLmRh dGEgKCkpOw0KPiA+PiAtCXJlZ2NhY2hlLT5jb29rZWRfd3JpdGUgKGVudHJ5LT51LnJlZy5udW0s IHJlY29yZF9mdWxsX2dldF9sb2MNCj4gPj4gKGVudHJ5KSk7DQo+ID4+IC0JbWVtY3B5IChyZWNv cmRfZnVsbF9nZXRfbG9jIChlbnRyeSksIHJlZy5kYXRhICgpLCBlbnRyeS0+dS5yZWcubGVuKTsN Cj4gPj4gLSAgICAgIH0NCj4gPj4gLSAgICAgIGJyZWFrOw0KPiA+PiAtDQo+ID4+IC0gICAgY2Fz ZSByZWNvcmRfZnVsbF9tZW06IC8qIG1lbSAqLw0KPiA+PiAtICAgICAgew0KPiA+PiAtCS8qIE5v dGhpbmcgdG8gZG8gaWYgdGhlIGVudHJ5IGlzIGZsYWdnZWQgbm90X2FjY2Vzc2libGUuICAqLw0K PiA+PiAtCWlmICghZW50cnktPnUubWVtLm1lbV9lbnRyeV9ub3RfYWNjZXNzaWJsZSkNCj4gPj4g LQkgIHsNCj4gPj4gLQkgICAgZ2RiOjpieXRlX3ZlY3RvciBtZW0gKGVudHJ5LT51Lm1lbS5sZW4p Ow0KPiA+PiAtDQo+ID4+IC0JICAgIGlmIChyZWNvcmRfZGVidWcgPiAxKQ0KPiA+PiAtCSAgICAg IGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ID4+IC0JCQkgICJQcm9jZXNzIHJlY29yZDogcmVj b3JkX2Z1bGxfbWVtICVzIHRvICINCj4gPj4gLQkJCSAgImluZmVyaW9yIGFkZHIgPSAlcyBsZW4g PSAlZC5cbiIsDQo+ID4+IC0JCQkgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGVudHJ5KSwNCj4g Pj4gLQkJCSAgcGFkZHJlc3MgKGdkYmFyY2gsIGVudHJ5LT51Lm1lbS5hZGRyKSwNCj4gPj4gLQkJ CSAgZW50cnktPnUubWVtLmxlbik7DQo+ID4+IC0NCj4gPj4gLQkgICAgaWYgKHJlY29yZF9yZWFk X21lbW9yeSAoZ2RiYXJjaCwNCj4gPj4gLQkJCQkgICAgZW50cnktPnUubWVtLmFkZHIsIG1lbS5k YXRhICgpLA0KPiA+PiAtCQkJCSAgICBlbnRyeS0+dS5tZW0ubGVuKSkNCj4gPj4gLQkgICAgICBl bnRyeS0+dS5tZW0ubWVtX2VudHJ5X25vdF9hY2Nlc3NpYmxlID0gMTsNCj4gPj4gLQkgICAgZWxz ZQ0KPiA+PiAtCSAgICAgIHsNCj4gPj4gLQkJaWYgKHRhcmdldF93cml0ZV9tZW1vcnkgKGVudHJ5 LT51Lm1lbS5hZGRyLA0KPiA+PiAtCQkJCQkgcmVjb3JkX2Z1bGxfZ2V0X2xvYyAoZW50cnkpLA0K PiA+PiAtCQkJCQkgZW50cnktPnUubWVtLmxlbikpDQo+ID4+IC0JCSAgew0KPiA+PiAtCQkgICAg ZW50cnktPnUubWVtLm1lbV9lbnRyeV9ub3RfYWNjZXNzaWJsZSA9IDE7DQo+ID4+IC0JCSAgICBp ZiAocmVjb3JkX2RlYnVnKQ0KPiA+PiAtCQkgICAgICB3YXJuaW5nIChfKCJQcm9jZXNzIHJlY29y ZDogZXJyb3Igd3JpdGluZyBtZW1vcnkgYXQgIg0KPiA+PiAtCQkJCSAiYWRkciA9ICVzIGxlbiA9 ICVkLiIpLA0KPiA+PiAtCQkJICAgICAgIHBhZGRyZXNzIChnZGJhcmNoLCBlbnRyeS0+dS5tZW0u YWRkciksDQo+ID4+IC0JCQkgICAgICAgZW50cnktPnUubWVtLmxlbik7DQo+ID4+IC0JCSAgfQ0K PiA+PiAtCQllbHNlDQo+ID4+IC0JCSAgew0KPiA+PiAtCQkgICAgbWVtY3B5IChyZWNvcmRfZnVs bF9nZXRfbG9jIChlbnRyeSksIG1lbS5kYXRhICgpLA0KPiA+PiAtCQkJICAgIGVudHJ5LT51Lm1l bS5sZW4pOw0KPiA+PiAtDQo+ID4+IC0JCSAgICAvKiBXZSd2ZSBjaGFuZ2VkIG1lbW9yeSAtLS0g Y2hlY2sgaWYgYSBoYXJkd2FyZQ0KPiA+PiAtCQkgICAgICAgd2F0Y2hwb2ludCBzaG91bGQgdHJh cC4gIE5vdGUgdGhhdCB0aGlzDQo+ID4+IC0JCSAgICAgICBwcmVzZW50bHkgYXNzdW1lcyB0aGUg dGFyZ2V0IGJlbmVhdGggc3VwcG9ydHMNCj4gPj4gLQkJICAgICAgIGNvbnRpbnVhYmxlIHdhdGNo cG9pbnRzLiAgT24gbm9uLWNvbnRpbnVhYmxlDQo+ID4+IC0JCSAgICAgICB3YXRjaHBvaW50cyB0 YXJnZXQsIHdlJ2xsIHdhbnQgdG8gY2hlY2sgdGhpcw0KPiA+PiAtCQkgICAgICAgX2JlZm9yZV8g YWN0dWFsbHkgZG9pbmcgdGhlIG1lbW9yeSBjaGFuZ2UsIGFuZA0KPiA+PiAtCQkgICAgICAgbm90 IGRvaW5nIHRoZSBjaGFuZ2UgYXQgYWxsIGlmIHRoZSB3YXRjaHBvaW50DQo+ID4+IC0JCSAgICAg ICB0cmFwcy4gICovDQo+ID4+IC0JCSAgICBpZiAoaGFyZHdhcmVfd2F0Y2hwb2ludF9pbnNlcnRl ZF9pbl9yYW5nZQ0KPiA+PiAtCQkJKGN1cnJlbnRfaW5mZXJpb3IgKCktPmFzcGFjZS5nZXQgKCks DQo+ID4+IC0JCQkgZW50cnktPnUubWVtLmFkZHIsIGVudHJ5LT51Lm1lbS5sZW4pKQ0KPiA+PiAt CQkgICAgICByZWNvcmRfZnVsbF9zdG9wX3JlYXNvbiA9DQo+ID4+IFRBUkdFVF9TVE9QUEVEX0JZ X1dBVENIUE9JTlQ7DQo+ID4+IC0JCSAgfQ0KPiA+PiAtCSAgICAgIH0NCj4gPj4gLQkgIH0NCj4g Pj4gLSAgICAgIH0NCj4gPj4gLSAgICAgIGJyZWFrOw0KPiA+PiAtICAgIH0NCj4gPj4gLX0NCj4g Pj4gLQ0KPiA+PiAgIHN0YXRpYyBpbmxpbmUgdm9pZA0KPiA+PiAgIHJlY29yZF9mdWxsX2V4ZWNf aW5zbiAocmVnY2FjaGUgKnJlZ2NhY2hlLA0KPiA+PiAgIAkJICAgICAgIGdkYmFyY2ggKmdkYmFy Y2gsDQo+ID4+ICAgCQkgICAgICAgcmVjb3JkX2Z1bGxfaW5zdHJ1Y3Rpb24gJmluc24pICB7DQo+ ID4+ICAgICBmb3IgKGF1dG8gJmVudHJ5IDogaW5zbi5lZmZlY3RzKQ0KPiA+PiAtICAgIHJlY29y ZF9mdWxsX2V4ZWNfZW50cnkgKHJlZ2NhY2hlLCBnZGJhcmNoLCAmZW50cnkpOw0KPiA+PiArICAg IGlmIChlbnRyeS5leGVjdXRlIChyZWdjYWNoZSkpDQo+ID4+ICsgICAgICByZWNvcmRfZnVsbF9z dG9wX3JlYXNvbiA9IFRBUkdFVF9TVE9QUEVEX0JZX1dBVENIUE9JTlQ7DQo+ID4+ICAgfQ0KPiA+ Pg0KPiA+PiAgIHN0YXRpYyB2b2lkIHJlY29yZF9mdWxsX3Jlc3RvcmUgKHN0cnVjdCBiZmQgJmNi ZmQpOyBAQCAtMjE4NSwyMSArMjIyNSwxOQ0KPiA+PiBAQCByZWNvcmRfZnVsbF9yZWFkX2VudHJ5 X2Zyb21fYmZkIChiZmQgKmNiZmQsIGFzZWN0aW9uICpvc2VjLCBpbnQNCj4gPj4gKmJmZF9vZmZz ZXQpDQo+ID4+ICAgCWJmZGNvcmVfcmVhZCAoY2JmZCwgb3NlYywgJnJlZ251bSwgc2l6ZW9mIChy ZWdudW0pLCBiZmRfb2Zmc2V0KTsNCj4gPj4gICAJcmVnbnVtID0gbmV0b3JkZXIzMiAocmVnbnVt KTsNCj4gPj4NCj4gPj4gLQlyZWNvcmRfZnVsbF9lbnRyeSByZWM7DQo+ID4+IC0NCj4gPj4gLQly ZWMgPSByZWNvcmRfZnVsbF9yZWdfaW5pdCAoY2FjaGUsIHJlZ251bSk7DQo+ID4+ICsJcmVjb3Jk X2Z1bGxfZW50cnkgcmVjIChyZWNvcmRfZnVsbF9yZWcsIGNhY2hlLT5hcmNoICgpLCByZWdudW0p Ow0KPiA+Pg0KPiA+PiAgIAkvKiBHZXQgdmFsLiAgKi8NCj4gPj4gLQliZmRjb3JlX3JlYWQgKGNi ZmQsIG9zZWMsIHJlY29yZF9mdWxsX2dldF9sb2MgKCZyZWMpLA0KPiA+PiAtCQkgICAgICByZWMu dS5yZWcubGVuLCBiZmRfb2Zmc2V0KTsNCj4gPj4gKwliZmRjb3JlX3JlYWQgKGNiZmQsIG9zZWMs IHJlYy5nZXRfbG9jICgpLA0KPiA+PiArCQkgICAgICByZWMucmVnICgpLmxlbiwgYmZkX29mZnNl dCk7DQo+ID4+DQo+ID4+ICAgCWlmIChyZWNvcmRfZGVidWcpDQo+ID4+ICAgCSAgZ2RiX3ByaW50 ZiAoZ2RiX3N0ZGxvZywNCj4gPj4gICAJCSAgICAgICIgIFJlYWRpbmcgcmVnaXN0ZXIgJWQgKDEg Ig0KPiA+PiAgIAkJICAgICAgInBsdXMgJWx1IHBsdXMgJWQgYnl0ZXMpXG4iLA0KPiA+PiAtCQkg ICAgICByZWMudS5yZWcubnVtLA0KPiA+PiArCQkgICAgICByZWMucmVnICgpLm51bSwNCj4gPj4g ICAJCSAgICAgICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKHJlZ251bSksDQo+ID4+IC0JCSAgICAg IHJlYy51LnJlZy5sZW4pOw0KPiA+PiArCQkgICAgICByZWMucmVnICgpLmxlbik7DQo+ID4+DQo+ ID4+ICAgCXJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGQgKHJlYyk7DQo+ID4+ICAgCWJyZWFrOw0K PiA+PiBAQCAtMjIxNiwxOSArMjI1NCwxNyBAQCByZWNvcmRfZnVsbF9yZWFkX2VudHJ5X2Zyb21f YmZkIChiZmQgKmNiZmQsDQo+ID4+IGFzZWN0aW9uICpvc2VjLCBpbnQgKmJmZF9vZmZzZXQpDQo+ ID4+ICAgCQkgICAgICBiZmRfb2Zmc2V0KTsNCj4gPj4gICAJYWRkciA9IG5ldG9yZGVyNjQgKGFk ZHIpOw0KPiA+Pg0KPiA+PiAtCXJlY29yZF9mdWxsX2VudHJ5IHJlYzsNCj4gPj4gLQlyZWMgPSBy ZWNvcmRfZnVsbF9tZW1faW5pdCAoYWRkciwgbGVuKTsNCj4gPj4gKwlyZWNvcmRfZnVsbF9lbnRy eSByZWMgKHJlY29yZF9mdWxsX21lbSwgYWRkciwgbGVuKTsNCj4gPj4NCj4gPj4gICAJLyogR2V0 IHZhbC4gICovDQo+ID4+IC0JYmZkY29yZV9yZWFkIChjYmZkLCBvc2VjLCByZWNvcmRfZnVsbF9n ZXRfbG9jICgmcmVjKSwgbGVuLA0KPiA+PiAtCQkgICAgICBiZmRfb2Zmc2V0KTsNCj4gPj4gKwli ZmRjb3JlX3JlYWQgKGNiZmQsIG9zZWMsIHJlYy5nZXRfbG9jICgpLCBsZW4sIGJmZF9vZmZzZXQp Ow0KPiA+Pg0KPiA+PiAgIAlpZiAocmVjb3JkX2RlYnVnKQ0KPiA+PiAgIAkgIGdkYl9wcmludGYg KGdkYl9zdGRsb2csDQo+ID4+ICAgCQkgICAgICAiICBSZWFkaW5nIG1lbW9yeSAlcyAoMSBwbHVz ICINCj4gPj4gICAJCSAgICAgICIlbHUgcGx1cyAlbHUgcGx1cyAlZCBieXRlcylcbiIsDQo+ID4+ ICAgCQkgICAgICBwYWRkcmVzcyAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwNCj4gPj4gLQkJCQlyZWMu dS5tZW0uYWRkciksDQo+ID4+ICsJCQkJcmVjLm1lbSAoKS5hZGRyKSwNCj4gPj4gICAJCSAgICAg ICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKGFkZHIpLA0KPiA+PiAgIAkJICAgICAgKHVuc2lnbmVk IGxvbmcpIHNpemVvZiAobGVuKSwNCj4gPj4gICAJCSAgICAgIGxlbik7DQo+ID4+IEBAIC0yMzgw LDUyICsyNDE2LDU2IEBAIHJlY29yZF9mdWxsX3dyaXRlX2VudHJ5X3RvX2JmZA0KPiA+PiAocmVj b3JkX2Z1bGxfZW50cnkgJmVudHJ5LA0KPiA+PiAgICAgdWludDMyX3QgcmVnbnVtLCBsZW47DQo+ ID4+ICAgICB1aW50NjRfdCBhZGRyOw0KPiA+Pg0KPiA+PiAtICB0eXBlID0gZW50cnkudHlwZTsN Cj4gPj4gKyAgdHlwZSA9IGVudHJ5LnR5cGUgKCk7DQo+ID4+ICAgICBiZmRjb3JlX3dyaXRlIChv YmZkLmdldCAoKSwgb3NlYywgJnR5cGUsIHNpemVvZiAodHlwZSksIGJmZF9vZmZzZXQpOw0KPiA+ Pg0KPiA+PiAtICBzd2l0Y2ggKGVudHJ5LnR5cGUpDQo+ID4+ICsgIHN3aXRjaCAodHlwZSkNCj4g Pj4gICAgICAgew0KPiA+PiAgICAgICBjYXNlIHJlY29yZF9mdWxsX3JlZzogLyogcmVnICovDQo+ ID4+IC0gICAgICBpZiAocmVjb3JkX2RlYnVnKQ0KPiA+PiAtCWdkYl9wcmludGYgKGdkYl9zdGRs b2csDQo+ID4+IC0JCSAgICAiICBXcml0aW5nIHJlZ2lzdGVyICVkICgxICINCj4gPj4gLQkJICAg ICJwbHVzICVsdSBwbHVzICVkIGJ5dGVzKVxuIiwNCj4gPj4gLQkJICAgIGVudHJ5LnUucmVnLm51 bSwNCj4gPj4gLQkJICAgICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKHJlZ251bSksDQo+ID4+IC0J CSAgICBlbnRyeS51LnJlZy5sZW4pOw0KPiA+PiAtDQo+ID4+IC0gICAgICAvKiBXcml0ZSByZWdu dW0uICAqLw0KPiA+PiAtICAgICAgcmVnbnVtID0gbmV0b3JkZXIzMiAoZW50cnkudS5yZWcubnVt KTsNCj4gPj4gLSAgICAgIGJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCAmcmVnbnVt LCBzaXplb2YgKHJlZ251bSksDQo+IGJmZF9vZmZzZXQpOw0KPiA+PiAtDQo+ID4+IC0gICAgICAv KiBXcml0ZSByZWd2YWwuICAqLw0KPiA+PiAtICAgICAgYmZkY29yZV93cml0ZSAob2JmZC5nZXQg KCksIG9zZWMsIHJlY29yZF9mdWxsX2dldF9sb2MgKCZlbnRyeSksDQo+ID4+IC0JCSAgICAgZW50 cnkudS5yZWcubGVuLCBiZmRfb2Zmc2V0KTsNCj4gPj4gLSAgICAgIGJyZWFrOw0KPiA+PiArICAg ICAgew0KPiA+PiArCWF1dG8gJnJlZyA9IGVudHJ5LnJlZyAoKTsNCj4gPj4gKwlpZiAocmVjb3Jk X2RlYnVnKQ0KPiA+PiArCSAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywNCj4gPj4gKwkJICAgICAg IiAgV3JpdGluZyByZWdpc3RlciAlZCAoMSAiDQo+ID4+ICsJCSAgICAgICJwbHVzICVsdSBwbHVz ICVkIGJ5dGVzKVxuIiwNCj4gPj4gKwkJICAgICAgcmVnLm51bSwNCj4gPj4gKwkJICAgICAgKHVu c2lnbmVkIGxvbmcpIHNpemVvZiAocmVnbnVtKSwNCj4gPj4gKwkJICAgICAgcmVnLmxlbik7DQo+ ID4+ICsNCj4gPj4gKwkvKiBXcml0ZSByZWdudW0uICAqLw0KPiA+PiArCXJlZ251bSA9IG5ldG9y ZGVyMzIgKHJlZy5udW0pOw0KPiA+PiArCWJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2Vj LCAmcmVnbnVtLCBzaXplb2YgKHJlZ251bSksDQo+ID4+ICtiZmRfb2Zmc2V0KTsNCj4gPj4gKw0K PiA+PiArCS8qIFdyaXRlIHJlZ3ZhbC4gICovDQo+ID4+ICsJYmZkY29yZV93cml0ZSAob2JmZC5n ZXQgKCksIG9zZWMsIGVudHJ5LmdldF9sb2MgKCksIHJlZy5sZW4sIGJmZF9vZmZzZXQpOw0KPiA+ PiArCWJyZWFrOw0KPiA+PiArICAgICAgfQ0KPiA+Pg0KPiA+PiAgICAgICBjYXNlIHJlY29yZF9m dWxsX21lbTogLyogbWVtICovDQo+ID4+IC0gICAgICBpZiAocmVjb3JkX2RlYnVnKQ0KPiA+PiAt CWdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ID4+IC0JCSAgICAiICBXcml0aW5nIG1lbW9yeSAl cyAoMSBwbHVzICINCj4gPj4gLQkJICAgICIlbHUgcGx1cyAlbHUgcGx1cyAlZCBieXRlcylcbiIs DQo+ID4+IC0JCSAgICBwYWRkcmVzcyAoZ2RiYXJjaCwNCj4gPj4gLQkJCSAgICAgIGVudHJ5LnUu bWVtLmFkZHIpLA0KPiA+PiAtCQkgICAgKHVuc2lnbmVkIGxvbmcpIHNpemVvZiAoYWRkciksDQo+ ID4+IC0JCSAgICAodW5zaWduZWQgbG9uZykgc2l6ZW9mIChsZW4pLA0KPiA+PiAtCQkgICAgZW50 cnkudS5tZW0ubGVuKTsNCj4gPj4gLQ0KPiA+PiAtICAgICAgLyogV3JpdGUgbWVtbGVuLiAgKi8N Cj4gPj4gLSAgICAgIGxlbiA9IG5ldG9yZGVyMzIgKGVudHJ5LnUubWVtLmxlbik7DQo+ID4+IC0g ICAgICBiZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJmxlbiwgc2l6ZW9mIChsZW4p LCBiZmRfb2Zmc2V0KTsNCj4gPj4gLQ0KPiA+PiAtICAgICAgLyogV3JpdGUgbWVtYWRkci4gICov DQo+ID4+IC0gICAgICBhZGRyID0gbmV0b3JkZXI2NCAoZW50cnkudS5tZW0uYWRkcik7DQo+ID4+ IC0gICAgICBiZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJmFkZHIsIHNpemVvZiAo YWRkciksIGJmZF9vZmZzZXQpOw0KPiA+PiAtDQo+ID4+IC0gICAgICAvKiBXcml0ZSBtZW12YWwu ICAqLw0KPiA+PiAtICAgICAgYmZkY29yZV93cml0ZSAob2JmZC5nZXQgKCksIG9zZWMsIHJlY29y ZF9mdWxsX2dldF9sb2MgKCZlbnRyeSksDQo+ID4+IC0JCSAgICAgZW50cnkudS5tZW0ubGVuLCBi ZmRfb2Zmc2V0KTsNCj4gPj4gLSAgICAgIGJyZWFrOw0KPiA+PiArICAgICAgew0KPiA+PiArCWF1 dG8gJm1lbSA9IGVudHJ5Lm1lbSAoKTsNCj4gPj4gKwlpZiAocmVjb3JkX2RlYnVnKQ0KPiA+PiAr CSAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywNCj4gPj4gKwkJICAgICAgIiAgV3JpdGluZyBtZW1v cnkgJXMgKDEgcGx1cyAiDQo+ID4+ICsJCSAgICAgICIlbHUgcGx1cyAlbHUgcGx1cyAlZCBieXRl cylcbiIsDQo+ID4+ICsJCSAgICAgIHBhZGRyZXNzIChnZGJhcmNoLCBtZW0uYWRkciksDQo+ID4+ ICsJCSAgICAgICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKGFkZHIpLA0KPiA+PiArCQkgICAgICAo dW5zaWduZWQgbG9uZykgc2l6ZW9mIChsZW4pLA0KPiA+PiArCQkgICAgICBtZW0ubGVuKTsNCj4g Pj4gKw0KPiA+PiArCS8qIFdyaXRlIG1lbWxlbi4gICovDQo+ID4+ICsJbGVuID0gbmV0b3JkZXIz MiAobWVtLmxlbik7DQo+ID4+ICsJYmZkY29yZV93cml0ZSAob2JmZC5nZXQgKCksIG9zZWMsICZs ZW4sIHNpemVvZiAobGVuKSwgYmZkX29mZnNldCk7DQo+ID4+ICsNCj4gPj4gKwkvKiBXcml0ZSBt ZW1hZGRyLiAgKi8NCj4gPj4gKwlhZGRyID0gbmV0b3JkZXI2NCAobWVtLmFkZHIpOw0KPiA+PiAr CWJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCAmYWRkciwgc2l6ZW9mIChhZGRyKSwg YmZkX29mZnNldCk7DQo+ID4+ICsNCj4gPj4gKwkvKiBXcml0ZSBtZW12YWwuICAqLw0KPiA+PiAr CWJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCBlbnRyeS5nZXRfbG9jICgpLCBtZW0u bGVuLA0KPiA+PiArCQkgICAgICAgYmZkX29mZnNldCk7DQo+ID4+ICsJYnJlYWs7DQo+ID4+ICsg ICAgICB9DQo+ID4+ICAgICAgIH0NCj4gPj4NCj4gPj4gICB9DQo+ID4+IEBAIC0yNDczLDEzICsy NTEzLDEzIEBAIHJlY29yZF9mdWxsX2Jhc2VfdGFyZ2V0OjpzYXZlX3JlY29yZCAoY29uc3QNCj4g Pj4gY2hhciAqcmVjZmlsZW5hbWUpDQo+ID4+ICAgICAgICAgLyogTnVtYmVyIG9mIGVmZmVjdHMg b2YgYW4gaW5zdHJ1Y3Rpb24uICAqLw0KPiA+PiAgICAgICAgIHNhdmVfc2l6ZSArPSBzaXplb2Yg KHVpbnQzMl90KSArIHNpemVvZiAodWludDhfdCkgKyBzaXplb2YgKHVpbnQzMl90KTsNCj4gPj4g ICAgICAgICBmb3IgKGF1dG8gJmVudHJ5IDogcmVjb3JkX2Z1bGxfbGlzdFtpXS5lZmZlY3RzKQ0K PiA+PiAtCXN3aXRjaCAoZW50cnkudHlwZSkNCj4gPj4gKwlzd2l0Y2ggKGVudHJ5LnR5cGUgKCkp DQo+ID4+ICAgCSAgew0KPiA+PiAgIAkgIGNhc2UgcmVjb3JkX2Z1bGxfcmVnOg0KPiA+PiAtCSAg ICBzYXZlX3NpemUgKz0gMSArIDQgKyBlbnRyeS51LnJlZy5sZW47DQo+ID4+ICsJICAgIHNhdmVf c2l6ZSArPSAxICsgNCArIGVudHJ5LnJlZyAoKS5sZW47DQo+ID4+ICAgCSAgICBicmVhazsNCj4g Pj4gICAJICBjYXNlIHJlY29yZF9mdWxsX21lbToNCj4gPj4gLQkgICAgc2F2ZV9zaXplICs9IDEg KyA0ICsgOCArIGVudHJ5LnUubWVtLmxlbjsNCj4gPj4gKwkgICAgc2F2ZV9zaXplICs9IDEgKyA0 ICsgOCArIGVudHJ5Lm1lbSAoKS5sZW47DQo+ID4+ICAgCSAgICBicmVhazsNCj4gPj4gICAJICB9 DQo+ID4+ICAgICAgIH0NCj4gPj4gQEAgLTI2MTIsMTggKzI2NTIsMTggQEAgbWFpbnRlbmFuY2Vf cHJpbnRfcmVjb3JkX2luc3RydWN0aW9uDQo+IChjb25zdA0KPiA+PiBjaGFyICphcmdzLCBpbnQg ZnJvbV90dHkpDQo+ID4+DQo+ID4+ICAgICBnZGJhcmNoICphcmNoID0gY3VycmVudF9pbmZlcmlv ciAoKS0+YXJjaCAoKTsNCj4gPj4NCj4gPj4gLSAgZm9yIChhdXRvIGVudHJ5IDogdG9fcHJpbnQt PmVmZmVjdHMpDQo+ID4+ICsgIGZvciAoYXV0byAmZW50cnkgOiB0b19wcmludC0+ZWZmZWN0cykN Cj4gPj4gICAgICAgew0KPiA+PiAtICAgICAgc3dpdGNoIChlbnRyeS50eXBlKQ0KPiA+PiArICAg ICAgc3dpdGNoIChlbnRyeS50eXBlICgpKQ0KPiA+PiAgIAl7DQo+ID4+ICAgCSAgY2FzZSByZWNv cmRfZnVsbF9yZWc6DQo+ID4+ICAgCSAgICB7DQo+ID4+IC0JICAgICAgdHlwZSAqcmVndHlwZSA9 IGdkYmFyY2hfcmVnaXN0ZXJfdHlwZSAoYXJjaCwgZW50cnkudS5yZWcubnVtKTsNCj4gPj4gKwkg ICAgICB0eXBlICpyZWd0eXBlID0gZ2RiYXJjaF9yZWdpc3Rlcl90eXBlIChhcmNoLCBlbnRyeS5y ZWcgKCkubnVtKTsNCj4gPj4gICAJICAgICAgdmFsdWUgKnZhbA0KPiA+PiAgIAkJICA9IHZhbHVl X2Zyb21fY29udGVudHMgKHJlZ3R5cGUsDQo+ID4+IC0JCQkJCSByZWNvcmRfZnVsbF9nZXRfbG9j ICgmZW50cnkpKTsNCj4gPj4gKwkJCQkJIGVudHJ5LmdldF9sb2MgKCkpOw0KPiA+PiAgIAkgICAg ICBnZGJfcHJpbnRmICgiUmVnaXN0ZXIgJXMgY2hhbmdlZDogIiwNCj4gPj4gLQkJCSAgZ2RiYXJj aF9yZWdpc3Rlcl9uYW1lIChhcmNoLCBlbnRyeS51LnJlZy5udW0pKTsNCj4gPj4gKwkJCSAgZ2Ri YXJjaF9yZWdpc3Rlcl9uYW1lIChhcmNoLCBlbnRyeS5yZWcgKCkubnVtKSk7DQo+ID4+ICAgCSAg ICAgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7DQo+ID4+ICAgCSAgICAgIGdldF91 c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsNCj4gPj4gICAJICAgICAgb3B0cy5yYXcgPSB0cnVl Ow0KPiA+PiBAQCAtMjYzMywxMSArMjY3MywxMiBAQCBtYWludGVuYW5jZV9wcmludF9yZWNvcmRf aW5zdHJ1Y3Rpb24NCj4gKGNvbnN0DQo+ID4+IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkNCj4g Pj4gICAJICAgIH0NCj4gPj4gICAJICBjYXNlIHJlY29yZF9mdWxsX21lbToNCj4gPj4gICAJICAg IHsNCj4gPj4gLQkgICAgICBnZGJfYnl0ZSAqYiA9IHJlY29yZF9mdWxsX2dldF9sb2MgKCZlbnRy eSk7DQo+ID4+ICsJICAgICAgcmVjb3JkX2Z1bGxfbWVtX2VudHJ5JiBtZW0gPSBlbnRyeS5tZW0g KCk7DQo+ID4+ICsJICAgICAgZ2RiX2J5dGUgKmIgPSBlbnRyeS5nZXRfbG9jICgpOw0KPiA+PiAg IAkgICAgICBnZGJfcHJpbnRmICgiJWQgYnl0ZXMgb2YgbWVtb3J5IGF0IGFkZHJlc3MgJXMgY2hh bmdlZCBmcm9tOiIsDQo+ID4+IC0JCQkgIGVudHJ5LnUubWVtLmxlbiwNCj4gPj4gLQkJCSAgcHJp bnRfY29yZV9hZGRyZXNzIChhcmNoLCBlbnRyeS51Lm1lbS5hZGRyKSk7DQo+ID4+IC0JICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBlbnRyeS51Lm1lbS5sZW47IGkrKykNCj4gPj4gKwkJCSAgbWVt LmxlbiwNCj4gPj4gKwkJCSAgcHJpbnRfY29yZV9hZGRyZXNzIChhcmNoLCBtZW0uYWRkcikpOw0K PiA+PiArCSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWVtLmxlbjsgaSsrKQ0KPiA+PiAgIAkJ Z2RiX3ByaW50ZiAoIiAlMDJ4IiwgYltpXSk7DQo+ID4+ICAgCSAgICAgIGdkYl9wcmludGYgKCJc biIpOw0KPiA+PiAgIAkgICAgICBicmVhazsNCj4gPj4gLS0NCj4gPj4gMi41NC4wDQo+ID4+DQo+ ID4gQ2hyaXN0aW5hDQo+ID4gSW50ZWwgRGV1dHNjaGxhbmQgR21iSA0KPiA+IFJlZ2lzdGVyZWQg QWRkcmVzczogRG9ybmFjaGVyIFN0cmFzc2UgMSwgODU2MjIgRmVsZGtpcmNoZW4sIEdlcm1hbnkN Cj4gPiBUZWw6ICs0OSA4OSA5OTEgNDMwLCB3d3cuaW50ZWwuZGUNCj4gPiBNYW5hZ2luZyBEaXJl Y3RvcnM6IEhhcnJ5IERlbWFzLCBKZWZmcmV5IFNjaG5laWRlcm1hbiwgWWluIENob25nIFNvcnJl bGwNCj4gPiBDaGFpcnBlcnNvbiBvZiB0aGUgU3VwZXJ2aXNvcnkgQm9hcmQ6IE5pY29sZSBMYXUN Cj4gPiBSZWdpc3RlcmVkIFNlYXQ6IE11bmljaA0KPiA+IENvbW1lcmNpYWwgUmVnaXN0ZXI6IEFt dHNnZXJpY2h0IE11ZW5jaGVuIEhSQiAxODY5MjgNCj4gPg0KPiANCj4gLS0NCj4gQ2hlZXJzLA0K PiBHdWluZXZlcmUgTGFyc2VuDQo+IEl0L3NoZQ0KDQpDaHJpc3RpbmENCkludGVsIERldXRzY2hs YW5kIEdtYkgNClJlZ2lzdGVyZWQgQWRkcmVzczogRG9ybmFjaGVyIFN0cmFzc2UgMSwgODU2MjIg RmVsZGtpcmNoZW4sIEdlcm1hbnkNClRlbDogKzQ5IDg5IDk5MSA0MzAsIHd3dy5pbnRlbC5kZQ0K TWFuYWdpbmcgRGlyZWN0b3JzOiBIYXJyeSBEZW1hcywgSmVmZnJleSBTY2huZWlkZXJtYW4sIFlp biBDaG9uZyBTb3JyZWxsDQpDaGFpcnBlcnNvbiBvZiB0aGUgU3VwZXJ2aXNvcnkgQm9hcmQ6IE5p Y29sZSBMYXUNClJlZ2lzdGVyZWQgU2VhdDogTXVuaWNoDQpDb21tZXJjaWFsIFJlZ2lzdGVyOiBB bXRzZ2VyaWNodCBNdWVuY2hlbiBIUkIgMTg2OTI4Cg==