From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id tufDLT3XvGovkB0AWB0awg (envelope-from ) for ; Wed, 30 Sep 2026 05:32:45 -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=lRnmQHE8; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id A8BCD1E051; Wed, 30 Sep 2026 05:32:45 -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 D551E1E033 for ; Wed, 30 Sep 2026 05:32:42 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id EBE2F4BB24DA for ; Wed, 30 Sep 2026 09:32:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EBE2F4BB24DA 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=lRnmQHE8 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) by sourceware.org (Postfix) with ESMTPS id 2D8CB4BA23F6 for ; Wed, 30 Sep 2026 09:32:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2D8CB4BA23F6 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 2D8CB4BA23F6 Authentication-Results: sourceware.org; arc=fail smtp.remote-ip=192.198.163.16 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1790760727; cv=fail; b=qmJN1JxLHBJAnDFLxcQwxRP9F/R4MppqR/kQS1QmfIVUteUBqaZP07C653GCiy2sarSxwpoPwA4wVuqR0QPwqJmKAwpRB3Xb2oOPRKz/YN8t7y9/fNIBDRZW3/aDnXvkFOUVf1KsMZz7dWYH12ytiMfm0uQD7mie4VjtpBfCJyY= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1790760727; c=relaxed/simple; bh=JQWmtb2dMzmpkTpX9VPEct2yqPqCOcCGKiNBeHmvRdU=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=qHxn8TMnJ0H3aGOTao+VDuiJE4d96nKcF/73zvxsKH+E6O+iFl8jTG87eoTHazeIiAaTW6GInZCpUoXjxjuLruPgeSvzyt1KRJn8oH0ZaACsNYqgy8TFgBT+sMwa1XmswvihzlUm2FLa7F8rqdyBeuqa4+edCRQsqh1DWiwlQEI= 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=lRnmQHE8 DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2D8CB4BA23F6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1790760728; x=1822296728; h=from:to:subject:date:message-id:references:in-reply-to: mime-version:content-transfer-encoding; bh=JQWmtb2dMzmpkTpX9VPEct2yqPqCOcCGKiNBeHmvRdU=; b=lRnmQHE8k5JC4P7Gbs9n+J/PDKudZUIeFQMDJkQlZ+Jqy/pw0uGnxdd5 8QL83RrZpt2aQgewiJ7PJDQBVjYTfy4RNwv6pNaUA4KAIWEZSIIdrrTDD BmcAi14s1dpAxCuX0ybBLAeyLYozA+9jkwYULYgv8ZrTk+aGgyUnQ0lJg q8XZ1t9lorhJPyBKsY9ZU1/KKmWxE0IhaP/Nj1LMAttMd4FXXBqtP+eGp Z/tzTkzA/xCon/FBMBt3km1Vg1umoSqUGX10xXOxYukQ7oLY6+sRWKpj+ fjr7ALQWP+AKNTcFj6JRpnEvjTXeELm1PRMElq34O4F76iz3/NvNrnoWN w==; X-CSE-ConnectionGUID: 3VZA1VwRSLe3251EgSR6eg== X-CSE-MsgGUID: /cvoD0+9SBa3+zHKTEF4sA== X-IronPort-AV: E=McAfee;i="6800,10657,11920"; a="79060851" X-IronPort-AV: E=Sophos;i="6.27,132,1787036400"; d="scan'208";a="79060851" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Sep 2026 02:32:05 -0700 X-CSE-ConnectionGUID: 5uUNQdFVRYSwm2NFlHDsRg== X-CSE-MsgGUID: auA3lWUnQeSDpdLrQUpv0g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.27,132,1787036400"; d="scan'208";a="313578326" Received: from fmsmsx903.amr.corp.intel.com ([10.18.126.92]) by orviesa001.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Sep 2026 02:32:04 -0700 Received: from FMSMSX902.amr.corp.intel.com (10.18.126.91) 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.49; Wed, 30 Sep 2026 02:32:04 -0700 Received: from fmsedg901.ED.cps.intel.com (10.1.192.143) 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.49 via Frontend Transport; Wed, 30 Sep 2026 02:32:04 -0700 Received: from SA9PR02CU001.outbound.protection.outlook.com (40.93.196.10) by edgegateway.intel.com (192.55.55.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Wed, 30 Sep 2026 02:32:03 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EA66N5b904YZZj5YCW/VRER+N6lHpcspRHlrV9WI3lmlbtr8DRNbQMmOMTCVxBqkEdd2lAMZXYEOqtZ3tZxE+wq/vdEan0r/5cvkiSLlcx8SndRfFdCmgc6mG9z4nzjJZmXK6zSkSyPcfwQGXygIgRkfIQjCCo/xb+BgxplenmHu4GFDhYqsYZQEFEy2fUfbRexsMi69w0FFr5w4O4G2ag/xvxioH4eLuKISOl7JdDtroKU0ClZ9KRfXzHPtFR16SZaKYU2TNIBBZz+C8AXswkHQCO2Z+49pgrFLFMiosfl095HJEVe5nvU78PeYKTGHX4VCP3uDO3H2PZzp0aHcMQ== 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=PlVCPpO+7/UD1Hen+O1oFgDTxY44uA2B+wgOcjhg1NU=; b=Th5o8+/9qApliDwU1u/ZAhkxgmjwdO2dOeIPrCRGkuS3KaMAkuszYQlELv3pXsiBWGbrtBVymUx/3b5AOTUQO07/HbsZVElAOcgsJNVuZTZHncnet7bym94J8Kfpz0XtMYc16GIfW3O8GvOtcnaWuUNR0VH8l6RF3c1xarolNaNVXbAAriUgYI8FtOqHyxBDFJXqgoe/C1K8CbNdds5YskCjoS92Q402jTZbd4G6E5qPYje77H1RvAxnP4pdonZlhIvBpol9Er4mwVzwyAPeQvjSd1VepxkZbg7leWT8QCUwNyX61fM7OnDz+Jcv0VR8O1Ug60NSIIIGpRpgc+oobg== 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 DS7PR11MB6247.namprd11.prod.outlook.com (2603:10b6:8:98::22) by DS0PR11MB7849.namprd11.prod.outlook.com (2603:10b6:8:fd::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.26; Wed, 30 Sep 2026 09:31:59 +0000 Received: from DS7PR11MB6247.namprd11.prod.outlook.com ([fe80::af57:631:e7eb:3aea]) by DS7PR11MB6247.namprd11.prod.outlook.com ([fe80::af57:631:e7eb:3aea%4]) with mapi id 15.21.0451.022; Wed, 30 Sep 2026 09:31:59 +0000 From: "Rohr, Stephan" To: Simon Marchi , "gdb-patches@sourceware.org" Subject: RE: [PATCH 1/9] gdb: add symbol_search_kind enum for global_symbol_searcher Thread-Topic: [PATCH 1/9] gdb: add symbol_search_kind enum for global_symbol_searcher Thread-Index: AQHdUEq1D4NvyjKiRUGJ1WBdrPFjc7bm1SFA Date: Wed, 30 Sep 2026 09:31:59 +0000 Message-ID: References: <20260929194119.155169-1-simon.marchi@efficios.com> <20260929194119.155169-2-simon.marchi@efficios.com> In-Reply-To: <20260929194119.155169-2-simon.marchi@efficios.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS7PR11MB6247:EE_|DS0PR11MB7849:EE_ x-ms-office365-filtering-correlation-id: 751676cd-0d2f-4117-8e94-08df1ed5ad3e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|10070799003|366016|376014|1800799024|23010399003|10067099003|56012099006|11063799006|4143699003|3023799007|6133799003|18002099003|22082099003|38070700021; x-microsoft-antispam-message-info: eJYHl3u7gb6cQnC7e1s5eTZHhUf9n2ovjx8XdstKtXaKe0o8OFoxUm7o3pM3kCPQh4uBTsfxjtobSn7T3PMLohSeU1foQQRie5gsSSwinX+HMkRewuakZ3+NGvSJlarUzzFKsKw85xr8fjIGXv9nt1T+TmSE0wY0HY72q0RHAPYrIkh6Ek1GC95CnktfqhE264xbT1DanLn+Ba306xXibU8EUK3cYoymTwLJpgD3i7n26jRz8cnMd6mM5o/Tpw1zcXQ/JRNeKmUPXgbgKpU6cjtcoldgDGa0zsd4pSeNgqRp2519kslCkZAWQIMdFU5JjmC07m9diUdnXQGw3NlOVWNdH6HfZpf5uAbQ20AIe1WjhfIUogN/KG0sFdTsxxFo9tXhBoTibs/6KLC7A8HtXwLcYFXJ8hM0xA4O8NxkrBfO5QKwyZQR5UItHHqYldn/po4JGjz7LEwaDmSl0zcdLW/hnUErWvXhdFehIviMvzI8SElyv9DifirbcaLd78uAtF7gX7zgTbqTQHxesZdM+Is0i3Wj/y+JOrdKPfHgqQir3okN839eUAuQj3494I9jr1jbgsQ0Xr7cu5qx/O+R+ftOpmtFfwPf7fLg3hdPiTucLnz1HdUz+NLk1Fk02ODhSfeE5Q1fqE8VAuuwJa1OBPwK3ofLWmHd2KaLwzlebkJUVqphm2TuhpC9IS/r22FrpyzHtKsXKVTbtct1kzmEXfS+oFp1Pok6Cvy+VqWJPKQ= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS7PR11MB6247.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(10070799003)(366016)(376014)(1800799024)(23010399003)(10067099003)(56012099006)(11063799006)(4143699003)(3023799007)(6133799003)(18002099003)(22082099003)(38070700021); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 2 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?S2hrd0FMZzJjamdDYzROZ0tNdnpPaVlHUXM1RlRyQ0Uwc09oemRudVA1ckM5?= =?utf-8?B?eDFnNjlJdTVCS0xieG9QU1dQU09lTlRtVWlzbUtRNDRKVTlqRGlDZXJmZUI0?= =?utf-8?B?UjYrNXN1RFFhM3ZoYzJVZVZvQlJabnQ3SzQvZ3VPM3pMM2ZwdExNTzVyL2lJ?= =?utf-8?B?OXVEbkNEWHZ3bFpOVXhjVWpuOEE4NmlML01pS3ZleXZkWlFhUDNkdjM0Vld1?= =?utf-8?B?ZWdRMXJFT1AzNlByME5Mck8wU3hWVEdOemFDZ2dTbUU3UnJBck5oTDFjeTVm?= =?utf-8?B?TjBOejJGSitSMzJMWkl1NlVvMFVNNzVzZVBOZjBJaUJhY3lXQ1ZvQmtObkZy?= =?utf-8?B?eG1GS0tJT3M2Um9XRWRIYVN4WmJaemZ5SEN6R1F6QW9pSC8vajlMK09uWS9k?= =?utf-8?B?bHA2NWlrOXR4RFo1VnF5ekh3V3kyR05qbzdXU3Q4UnV2SjBKYzZBNWhvR3ht?= =?utf-8?B?T2k3QS9mdk5XOG5pNXdweStqUjlKWlZGUUFsMlhYc2JQaTNsZW9OWWZXTmMz?= =?utf-8?B?SS9YR0swaS9BLzBzVFM3RXVzSGJLVlJGalRoWm9YMm5Pb2ZCYjJ5ZWpXQ3g4?= =?utf-8?B?OG4raTV3VWExQkQ5WGNqVGY1U1E2WGhmSWVlR000Zjg0Qm5ja25zZXJocGtP?= =?utf-8?B?T1NLclVqUHpvLzc0UUZ6QlExODlRVnVvK2dNYk1JU3lva0hYd25BY1ZUbVJP?= =?utf-8?B?TmpSQ3E4NDd3SzUxNFdQd3d0a2owMW5INS9ucm4wbHRkZllpeTdTQUhMZnV5?= =?utf-8?B?Ymk0WG5SN2xIZEUySk9NQzF5b3U1Nm9qbHlnc1BERUlob0s3UFgyYVgrRU03?= =?utf-8?B?bEYxQUhvSWdBeGFMV3preTBEMDUzZm5RQ09nbC9MazZNRVBSYUdxVmNHV1Q0?= =?utf-8?B?Nlo4S3VxM2VmbTl2SmVzbTlKeVVyTlloaU9wMmIvT1dmQlVuNXd3bi90Mmlv?= =?utf-8?B?L3A0U21zeFoyc21JWFI0Y3V6clQybXRaNWVYVU54Y2dzNmFXUWtoSjMxdjM2?= =?utf-8?B?RTFvSlBJeHhLellhOUVGNHdqcWlZNm1GaEZseGw0eDFLZVZpeVBpRlpLNWZm?= =?utf-8?B?S1NoSzFtaTh3UDIwdDhKcm5RUFQ2TitTUUpuOHFkWGNBcm1CcSs3cUdmdGNi?= =?utf-8?B?OFF0cnJtZFlRNE9qQjEvd25GVVFsNFNldjlRQmF4STZjMnA4NXpMd3VTMk9t?= =?utf-8?B?dHEwV3BLUmg2WXlUVEJndFJ2d3ZqZmg4ZjlTYit4MGYxblhLQ3F5SXdXTXIz?= =?utf-8?B?R3N5NGw0MmYzbVJMejFScFEzK2lZUlhzaGtkV2V3YjkwM08zNXdKYnM0VU5D?= =?utf-8?B?c1NRTS9pOTlhN1FOdjlyZzRQcFArQUVYUmY5dzZMK3liODlvQWhsQXBsdUx4?= =?utf-8?B?OWpnK3UxRCtwMHh4aGZ3eW5JZXRJek5YajcrZ2lMVmIzak9FcVNxS281NmRp?= =?utf-8?B?S3M4VzNGT0htNVg1L0FIMzJ0OFVNbndSNHFQZ1AxK0h2TUppZm5GNzBWUEtQ?= =?utf-8?B?enQwTUhLNDBRSDZpWFpndGlYWi80K1ZhUnZMaXFaRnliU2NpTjZvV2M0aTli?= =?utf-8?B?M0tsOHlNSkx1b2JYNFVDZ3dTVndYZ2krLzVLQXl4NVFWUUJwdDNJbEFlSlVP?= =?utf-8?B?N2JTNW5JRnFkZlQzU0R1R01BbXJjYjZzVnZ3d1hGOS9vK1MzWHhvc09iRkZP?= =?utf-8?B?RHUxODZGWXlQc1o5YkxESWJDeTVnYW1IamliWGh6K1VsYlZ1NWJRbG83ZE54?= =?utf-8?B?V2p6TWpMdzJkdmxrM2grM2tWcExvcXNQZWlzZy9WdDEyaWpZTkV3U3N5Umhz?= =?utf-8?B?NVc5RTM4ZThPMVRyTWZNQ0dYdENUT21FdkRJWThpdGVDdU5WNjZkNGJTWnBC?= =?utf-8?B?Qks0bTdQWlhreng2bXlVbGp0dFp6RGw1ZGM0aHNRV2plamNUaEZsSmxsaWhC?= =?utf-8?B?bXFZUklpMW5mcUNzWmF0YU1Uc0JOK1lOMTB4Nml6ZFlkVTFEVVB0VjVCL3V3?= =?utf-8?B?dlpETld1QW5ob1p6UUxGcmRPK0l3d3lTaUpZS1prM2RGNjc1blFhZXJUV2JK?= =?utf-8?B?WnEvNkxFRzBwL3ZNM0ZLK0VZRHQyMGQva3VzcjNscWxKOURPY2JFZUFJTkJs?= =?utf-8?B?Y1hvOGdVNmcrRmtqZzh4d3IydzV5YUQ3dmtXcTF6R3JtU3J0L292WHJ4NDlX?= =?utf-8?B?TzAwYkpkczVHTXViZjIrdUNVd2dtSC9IMStEaHp1L0RybHRlaEl1bTV5aHBh?= =?utf-8?B?N1pFejc1aFZnWDdadEFZaGRoYmxHSVU0MmdKVnFFeldWRC94c1R1R3JWUXhI?= =?utf-8?B?OFp3SEMvWmEwd1JwNVloeVlQNXM0KzlaRWR4M2tKQ1VONDZCV254Z0RpQ0tu?= =?utf-8?Q?Tf1I39Vt4ltgP90ouH1bpDu7S86iZRwzNPvBTToShLeV1?= x-ms-exchange-antispam-messagedata-1: Wz7bpthnwtZsSQ== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: qpAjqEq1ib7dPRBDwqHpe0rtAArRpb1WyP+rZjqINXjs0lpRXsx4YqiCqhc4HsTmpAwzMlAjZBRKmRTyKo4sbw24SihyB7AzEwdVvkohvnEtKlm67dUxnDo9uojUHy7VtXAxqz+oSNcMufiMZpuOTjbhF0A4QtgLWyqL2VFUV4QmXvR8sp33DeCegGm2T5Fu3QplzG/AfwRF1jOuNbKHrq9uKIJ5XW5sOPNtLIC77aykAViW0VH+pMoyuy5sV0I1v0OVjIEovJkmzm3EWAana7bTJ1VJoimban9IlAO4jzMVp5WGJCx1kFlYWtk1TdjxNHd3nQ35JgTnm9eH2YOHLA== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR11MB6247.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 751676cd-0d2f-4117-8e94-08df1ed5ad3e X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Sep 2026 09:31:59.2929 (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: yl1/G1ZoUafsWKDiBqgbnNdus79isQtycxstiZ3dIrmgp+ujyhnV/vaQPkwAaHzLGeRMfm1NjucCv4B9tiHiaA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB7849 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 SGkgU2ltb24sDQoNCnNlZSBteSBmZWVkYmFjayBpbmxpbmVkIGJlbG93Lg0KDQpUaGFua3MNClN0 ZXBoYW4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBTaW1vbiBNYXJj aGkgPHNpbW9uLm1hcmNoaUBlZmZpY2lvcy5jb20+DQo+IFNlbnQ6IFR1ZXNkYXksIDI5IFNlcHRl bWJlciAyMDI2IDIxOjM5DQo+IFRvOiBnZGItcGF0Y2hlc0Bzb3VyY2V3YXJlLm9yZw0KPiBDYzog U2ltb24gTWFyY2hpIDxzaW1vbi5tYXJjaGlAZWZmaWNpb3MuY29tPg0KPiBTdWJqZWN0OiBbUEFU Q0ggMS85XSBnZGI6IGFkZCBzeW1ib2xfc2VhcmNoX2tpbmQgZW51bSBmb3INCj4gZ2xvYmFsX3N5 bWJvbF9zZWFyY2hlcg0KPiANCj4gV2hpbGUgcmVhZGluZyB0aGUgZ2xvYmFsX3N5bWJvbF9zZWFy Y2hlciBjb2RlLCBzb21ldGhpbmcgdGhhdCB3YXMgbm90DQo+IGNsZWFyIHRvIG1lIHdhcyB0aGF0 IGRlc3BpdGUgYWNjZXB0aW5nIGEgZG9tYWluX3NlYXJjaF9mbGFncywgIHNlYXJjaGVzDQoNCkRv dWJsZSBzcGFjZXMgaW4gIiwgIHNlYXJjaGVzIi4NCg0KPiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZl IGJldHdlZW4gdHlwZXMsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLg0KPiANCj4gT25lIHNuaXBw ZXQgb2YgY29kZSB0aGF0IHJlYWxseSBjb25mdXNlZCBtZSB3YXMgKG5vdyByZW1vdmVkIGJ5IGEN Cj4gcHJldmlvdXMgY29tbWl0KToNCj4gDQoNClNob3VsZCB3ZSBtZW50aW9uIHRoZSBwcmV2aW91 cyBjb21taXQgIiBnZGI6IFNraXAgdXNlbGVzcyBtaW5zeW0gc2NhbiBpbg0KdmFyaWFibGUtb25s eSBzeW1ib2wgc2VhcmNoZXMiIGV4cGxpY2l0bHk/IEl0IG1heSBoZWxwIGZ1dHVyZSByZWFkZXJz IG9mIHRoZQ0KcGF0Y2guDQoNCj4gCQkgIGlmICgoa2luZCAmIFNFQVJDSF9GVU5DVElPTl9ET01B SU4pICE9IDANCj4gCQkgICAgICA/IChmaW5kX2NvbXB1bml0X3N5bXRhYl9mb3JfcGMNCj4gCQkJ IChtc3ltYm9sLT52YWx1ZV9hZGRyZXNzIChvYmpmaWxlKSkgPT0gTlVMTCkNCj4gCQkgICAgICA6 IChsb29rdXBfc3ltYm9sX2luX29iamZpbGVfZnJvbV9saW5rYWdlX25hbWUNCj4gCQkJIChvYmpm aWxlLCBtc3ltYm9sLT5saW5rYWdlX25hbWUgKCksDQo+IAkJCSAgU0VBUkNIX1ZGVCkNCj4gCQkJ IC5zeW1ib2wgPT0gTlVMTCkpDQo+IA0KPiBJIGtlcHQgdGhpbmtpbmc6IHdoYXQgaWYgeW91IHNl YXJjaCBmb3IgYm90aCBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlcywNCj4gdGhpcyB3aWxsIHRha2Ug dGhlICJmdW5jdGlvbiIgcGF0aCwgdGhpcyBjYW4ndCB3b3JrLiAgVGhlIGFuc3dlciBpcyB0aGF0 DQo+IGl0J3Mgbm90IHN1cHBvc2VkIHRvIGhhcHBlbi4NCj4gDQo+IFRoaXMgcGF0Y2ggYWRkcyB0 aGUgc3ltYm9sX3NlYXJjaF9raW5kIGVudW0gYW5kIHVzZXMgaXQgaW4NCj4gZ2xvYmFsX3N5bWJv bF9zZWFyY2hlciAoYW5kIGEgZmV3IGNhbGxlciBmdW5jdGlvbnMpLCBtYWtpbmcgaXQgY2xlYXIN Cj4gdGhhdCB5b3Ugc2VhcmNoIGp1c3Qgb25lIGtpbmQgYXQgYSB0aW1lLg0KPiANCj4gVGhlIG5l dyBlbnVtIGhhcyBhIGNlcnRhaW4gb3ZlcmxhcCB3aXRoIGVudW0gZG9tYWluX3NlYXJjaF9mbGFn LCBidXQgSQ0KPiB0aGluayB0aGF0IGhhdmluZyB0aGUgbW9yZSBzY29wZWQgZW51bSBtYWtlcyBn bG9iYWxfc3ltYm9sX3NlYXJjaGVyDQo+IGVhc2llciB0byB1bmRlcnN0YW5kLCBieSBzcGVjaWZ5 aW5nIGNsZWFybHkgd2hhdCBpdCBuZWVkcyB0byBoYW5kbGUuDQo+IA0KPiBDaGFuZ2UtSWQ6IEk0 YTNmNDc1MmM3YmU1MWE0ZGE1ODMxZjk3ODBkMjFlNmU3MjcxYjM4DQo+IC0tLQ0KPiAgZ2RiL21p L21pLXN5bWJvbC1jbWRzLmMgfCAgMzYgKysrKysrKy0tLS0tLQ0KPiAgZ2RiL3B5dGhvbi9weXRo b24uYyAgICAgfCAgIDIgKy0NCj4gIGdkYi9zeW10YWIuYyAgICAgICAgICAgIHwgMTEyICsrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0NCj4gIGdkYi9zeW10YWIuaCAgICAg ICAgICAgIHwgIDMzICsrKysrKysrLS0tLQ0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAxMDYgaW5zZXJ0 aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZ2RiL21pL21pLXN5 bWJvbC1jbWRzLmMgYi9nZGIvbWkvbWktc3ltYm9sLWNtZHMuYw0KPiBpbmRleCA1OGYyZmVlZjU1 MzMuLjMwYjhlYzQ5NWU4ZiAxMDA2NDQNCj4gLS0tIGEvZ2RiL21pL21pLXN5bWJvbC1jbWRzLmMN Cj4gKysrIGIvZ2RiL21pL21pLXN5bWJvbC1jbWRzLmMNCj4gQEAgLTcxLDcgKzcxLDcgQEAgbWlf Y21kX3N5bWJvbF9saXN0X2xpbmVzIChjb25zdCBjaGFyICpjb21tYW5kLCBjb25zdA0KPiBjaGFy ICpjb25zdCAqYXJndiwNCj4gICAgIHJlc3VsdHMuICAqLw0KPiANCj4gIHN0YXRpYyB2b2lkDQo+ IC1vdXRwdXRfZGVidWdfc3ltYm9sICh1aV9vdXQgKnVpb3V0LCBkb21haW5fc2VhcmNoX2ZsYWdz IGtpbmQsDQo+ICtvdXRwdXRfZGVidWdfc3ltYm9sICh1aV9vdXQgKnVpb3V0LCBzeW1ib2xfc2Vh cmNoX2tpbmQga2luZCwNCj4gIAkJICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW0sIGludCBibG9jaykN Cj4gIHsNCj4gICAgdWlfb3V0X2VtaXRfdHVwbGUgdHVwbGVfZW1pdHRlciAodWlvdXQpOw0KPiBA QCAtODAsNyArODAsOCBAQCBvdXRwdXRfZGVidWdfc3ltYm9sICh1aV9vdXQgKnVpb3V0LA0KPiBk b21haW5fc2VhcmNoX2ZsYWdzIGtpbmQsDQo+ICAgICAgdWlvdXQtPmZpZWxkX3Vuc2lnbmVkICgi bGluZSIsIHN5bS0+bGluZSAoKSk7DQo+ICAgIHVpb3V0LT5maWVsZF9zdHJpbmcgKCJuYW1lIiwg c3ltLT5wcmludF9uYW1lICgpKTsNCj4gDQo+IC0gIGlmICgoa2luZCAmIChTRUFSQ0hfRlVOQ1RJ T05fRE9NQUlOIHwgU0VBUkNIX1ZBUl9ET01BSU4pKSAhPSAwKQ0KPiArICBpZiAoa2luZCA9PSBz eW1ib2xfc2VhcmNoX2tpbmQ6OkZVTkNUSU9ODQo+ICsgICAgICB8fCBraW5kID09IHN5bWJvbF9z ZWFyY2hfa2luZDo6VkFSSUFCTEUpDQo+ICAgICAgew0KPiAgICAgICAgc3RyaW5nX2ZpbGUgdG1w X3N0cmVhbTsNCj4gICAgICAgIHR5cGVfcHJpbnQgKHN5bS0+dHlwZSAoKSwgIiIsICZ0bXBfc3Ry ZWFtLCAtMSk7DQo+IEBAIC0xMTEsNyArMTEyLDcgQEAgb3V0cHV0X25vbmRlYnVnX3N5bWJvbCAo dWlfb3V0ICp1aW91dCwgY29uc3QNCj4gYm91bmRfbWluaW1hbF9zeW1ib2wgJm1zeW1ib2wpDQo+ ICAgICBhbmQgdGhlbiBwcmludHMgdGhlIG1hdGNoaW5nIFttXXN5bWJvbHMgaW4gYW4gTUkgc3Ry dWN0dXJlZCBmb3JtYXQuICAqLw0KPiANCj4gIHN0YXRpYyB2b2lkDQo+IC1taV9zeW1ib2xfaW5m byAoZG9tYWluX3NlYXJjaF9mbGFncyBraW5kLCBjb25zdCBjaGFyICpuYW1lX3JlZ2V4cCwNCj4g K21pX3N5bWJvbF9pbmZvIChzeW1ib2xfc2VhcmNoX2tpbmQga2luZCwgY29uc3QgY2hhciAqbmFt ZV9yZWdleHAsDQo+ICAJCWNvbnN0IGNoYXIgKnR5cGVfcmVnZXhwLCBib29sIGV4Y2x1ZGVfbWlu c3ltcywNCj4gIAkJc2l6ZV90IG1heF9yZXN1bHRzKQ0KPiAgew0KPiBAQCAtMTg4LDcgKzE4OSw3 IEBAIHBhcnNlX21heF9yZXN1bHRzX29wdGlvbiAoY29uc3QgY2hhciAqYXJnKQ0KPiAgICAgUHJv Y2Vzc2VzIGNvbW1hbmQgbGluZSBvcHRpb25zIGZyb20gQVJHViBhbmQgQVJHQy4gICovDQo+IA0K PiAgc3RhdGljIHZvaWQNCj4gLW1pX2luZm9fZnVuY3Rpb25zX29yX3ZhcmlhYmxlcyAoZG9tYWlu X3NlYXJjaF9mbGFncyBraW5kLA0KPiArbWlfaW5mb19mdW5jdGlvbnNfb3JfdmFyaWFibGVzIChz eW1ib2xfc2VhcmNoX2tpbmQga2luZCwNCj4gIAkJCQljb25zdCBjaGFyICpjb25zdCAqYXJndiwg aW50IGFyZ2MpDQo+ICB7DQo+ICAgIHNpemVfdCBtYXhfcmVzdWx0cyA9IFNJWkVfTUFYOw0KPiBA QCAtMjE1LDcgKzIxNiw3IEBAIG1pX2luZm9fZnVuY3Rpb25zX29yX3ZhcmlhYmxlcw0KPiAoZG9t YWluX3NlYXJjaF9mbGFncyBraW5kLA0KPiAgICB3aGlsZSAoMSkNCj4gICAgICB7DQo+ICAgICAg ICBjb25zdCBjaGFyICpjbWRfc3RyaW5nDQo+IC0JPSAoKGtpbmQgPT0gU0VBUkNIX0ZVTkNUSU9O X0RPTUFJTikNCj4gKwk9ICgoa2luZCA9PSBzeW1ib2xfc2VhcmNoX2tpbmQ6OkZVTkNUSU9OKQ0K PiAgCSAgID8gIi1zeW1ib2wtaW5mby1mdW5jdGlvbnMiIDogIi1zeW1ib2wtaW5mby12YXJpYWJs ZXMiKTsNCj4gICAgICAgIGludCBvcHQgPSBtaV9nZXRvcHQgKGNtZF9zdHJpbmcsIGFyZ2MsIGFy Z3YsIG9wdHMsICZvaW5kLCAmb2FyZyk7DQo+ICAgICAgICBpZiAob3B0IDwgMCkNCj4gQEAgLTI1 MSw3ICsyNTIsNyBAQCB1c2luZyBtb2R1bGVfc3ltYm9sX3NlYXJjaF9pdGVyYXRvcg0KPiAgc3Rh dGljIG1vZHVsZV9zeW1ib2xfc2VhcmNoX2l0ZXJhdG9yDQo+ICBvdXRwdXRfbW9kdWxlX3N5bWJv bHNfaW5fc2luZ2xlX21vZHVsZV9hbmRfZmlsZQ0KPiAgCShzdHJ1Y3QgdWlfb3V0ICp1aW91dCwg bW9kdWxlX3N5bWJvbF9zZWFyY2hfaXRlcmF0b3IgaXRlciwNCj4gLQkgY29uc3QgbW9kdWxlX3N5 bWJvbF9zZWFyY2hfaXRlcmF0b3IgZW5kLCBkb21haW5fc2VhcmNoX2ZsYWdzDQo+IGtpbmQpDQo+ ICsJIGNvbnN0IG1vZHVsZV9zeW1ib2xfc2VhcmNoX2l0ZXJhdG9yIGVuZCwgc3ltYm9sX3NlYXJj aF9raW5kDQo+IGtpbmQpDQo+ICB7DQo+ICAgIC8qIFRoZSBzeW1ib2wgZm9yIHRoZSBtb2R1bGUg aW4gd2hpY2ggdGhlIGZpcnN0IHJlc3VsdCByZXNpZGVzLiAgKi8NCj4gICAgY29uc3Qgc3ltYm9s ICpmaXJzdF9tb2R1bGVfc3ltYm9sID0gaXRlci0+Zmlyc3Quc3ltYm9sOw0KPiBAQCAtMjg2LDcg KzI4Nyw3IEBAIG91dHB1dF9tb2R1bGVfc3ltYm9sc19pbl9zaW5nbGVfbW9kdWxlX2FuZF9maWxl DQo+ICBzdGF0aWMgbW9kdWxlX3N5bWJvbF9zZWFyY2hfaXRlcmF0b3INCj4gIG91dHB1dF9tb2R1 bGVfc3ltYm9sc19pbl9zaW5nbGVfbW9kdWxlDQo+ICAJKHN0cnVjdCB1aV9vdXQgKnVpb3V0LCBt b2R1bGVfc3ltYm9sX3NlYXJjaF9pdGVyYXRvciBpdGVyLA0KPiAtCSBjb25zdCBtb2R1bGVfc3lt Ym9sX3NlYXJjaF9pdGVyYXRvciBlbmQsIGRvbWFpbl9zZWFyY2hfZmxhZ3MNCj4ga2luZCkNCj4g KwkgY29uc3QgbW9kdWxlX3N5bWJvbF9zZWFyY2hfaXRlcmF0b3IgZW5kLCBzeW1ib2xfc2VhcmNo X2tpbmQNCj4ga2luZCkNCj4gIHsNCj4gICAgZ2RiX2Fzc2VydCAoaXRlci0+Zmlyc3Quc3ltYm9s ICE9IG51bGxwdHIpOw0KPiAgICBnZGJfYXNzZXJ0IChpdGVyLT5zZWNvbmQuc3ltYm9sICE9IG51 bGxwdHIpOw0KPiBAQCAtMzE0LDcgKzMxNSw3IEBAIG91dHB1dF9tb2R1bGVfc3ltYm9sc19pbl9z aW5nbGVfbW9kdWxlDQo+ICAgICBjb21tYW5kIGxpbmUgb3B0aW9ucyBwYXNzZWQgdG8gdGhlIE1J IGNvbW1hbmQuICAqLw0KPiANCj4gIHN0YXRpYyB2b2lkDQo+IC1taV9pbmZvX21vZHVsZV9mdW5j dGlvbnNfb3JfdmFyaWFibGVzIChkb21haW5fc2VhcmNoX2ZsYWdzIGtpbmQsDQo+ICttaV9pbmZv X21vZHVsZV9mdW5jdGlvbnNfb3JfdmFyaWFibGVzIChzeW1ib2xfc2VhcmNoX2tpbmQga2luZCwN Cj4gIAkJCQkgICAgICAgY29uc3QgY2hhciAqY29uc3QgKmFyZ3YsIGludCBhcmdjKQ0KPiAgew0K PiAgICBjb25zdCBjaGFyICptb2R1bGVfcmVnZXhwID0gbnVsbHB0cjsNCj4gQEAgLTM0MSw3ICsz NDIsNyBAQCBtaV9pbmZvX21vZHVsZV9mdW5jdGlvbnNfb3JfdmFyaWFibGVzDQo+IChkb21haW5f c2VhcmNoX2ZsYWdzIGtpbmQsDQo+ICAgIHdoaWxlICgxKQ0KPiAgICAgIHsNCj4gICAgICAgIGNv bnN0IGNoYXIgKmNtZF9zdHJpbmcNCj4gLQk9ICgoa2luZCA9PSBTRUFSQ0hfRlVOQ1RJT05fRE9N QUlOKQ0KPiArCT0gKChraW5kID09IHN5bWJvbF9zZWFyY2hfa2luZDo6RlVOQ1RJT04pDQo+ICAJ ICAgPyAiLXN5bWJvbC1pbmZvLW1vZHVsZS1mdW5jdGlvbnMiDQo+ICAJICAgOiAiLXN5bWJvbC1p bmZvLW1vZHVsZS12YXJpYWJsZXMiKTsNCj4gICAgICAgIGludCBvcHQgPSBtaV9nZXRvcHQgKGNt ZF9zdHJpbmcsIGFyZ2MsIGFyZ3YsIG9wdHMsICZvaW5kLCAmb2FyZyk7DQo+IEBAIC0zODMsNyAr Mzg0LDcgQEAgdm9pZA0KPiAgbWlfY21kX3N5bWJvbF9pbmZvX2Z1bmN0aW9ucyAoY29uc3QgY2hh ciAqY29tbWFuZCwgY29uc3QgY2hhciAqY29uc3QNCj4gKmFyZ3YsDQo+ICAJCQkgICAgICBpbnQg YXJnYykNCj4gIHsNCj4gLSAgbWlfaW5mb19mdW5jdGlvbnNfb3JfdmFyaWFibGVzIChTRUFSQ0hf RlVOQ1RJT05fRE9NQUlOLCBhcmd2LCBhcmdjKTsNCj4gKyAgbWlfaW5mb19mdW5jdGlvbnNfb3Jf dmFyaWFibGVzIChzeW1ib2xfc2VhcmNoX2tpbmQ6OkZVTkNUSU9OLCBhcmd2LA0KPiBhcmdjKTsN Cj4gIH0NCj4gDQo+ICAvKiBJbXBsZW1lbnQgLXN5bWJvbC1pbmZvLW1vZHVsZS1mdW5jdGlvbnMg Y29tbWFuZC4gICovDQo+IEBAIC0zOTIsNyArMzkzLDggQEAgdm9pZA0KPiAgbWlfY21kX3N5bWJv bF9pbmZvX21vZHVsZV9mdW5jdGlvbnMgKGNvbnN0IGNoYXIgKmNvbW1hbmQsDQo+ICAJCQkJICAg ICBjb25zdCBjaGFyICpjb25zdCAqYXJndiwgaW50IGFyZ2MpDQo+ICB7DQo+IC0gIG1pX2luZm9f bW9kdWxlX2Z1bmN0aW9uc19vcl92YXJpYWJsZXMgKFNFQVJDSF9GVU5DVElPTl9ET01BSU4sDQo+ IGFyZ3YsIGFyZ2MpOw0KPiArICBtaV9pbmZvX21vZHVsZV9mdW5jdGlvbnNfb3JfdmFyaWFibGVz IChzeW1ib2xfc2VhcmNoX2tpbmQ6OkZVTkNUSU9OLA0KPiArCQkJCQkgYXJndiwgYXJnYyk7DQo+ ICB9DQo+IA0KPiAgLyogSW1wbGVtZW50IC1zeW1ib2wtaW5mby1tb2R1bGUtdmFyaWFibGVzIGNv bW1hbmQuICAqLw0KPiBAQCAtNDAxLDcgKzQwMyw4IEBAIHZvaWQNCj4gIG1pX2NtZF9zeW1ib2xf aW5mb19tb2R1bGVfdmFyaWFibGVzIChjb25zdCBjaGFyICpjb21tYW5kLA0KPiAgCQkJCSAgICAg Y29uc3QgY2hhciAqY29uc3QgKmFyZ3YsIGludCBhcmdjKQ0KPiAgew0KPiAtICBtaV9pbmZvX21v ZHVsZV9mdW5jdGlvbnNfb3JfdmFyaWFibGVzIChTRUFSQ0hfVkFSX0RPTUFJTiwgYXJndiwNCj4g YXJnYyk7DQo+ICsgIG1pX2luZm9fbW9kdWxlX2Z1bmN0aW9uc19vcl92YXJpYWJsZXMgKHN5bWJv bF9zZWFyY2hfa2luZDo6VkFSSUFCTEUsDQo+ICsJCQkJCSBhcmd2LCBhcmdjKTsNCj4gIH0NCj4g DQo+ICAvKiBJbXBsZW1lbnQgLXN5bWJvbC1pbmYtbW9kdWxlcyBjb21tYW5kLiAgKi8NCj4gQEAg LTQ0NCw3ICs0NDcsOCBAQCBtaV9jbWRfc3ltYm9sX2luZm9fbW9kdWxlcyAoY29uc3QgY2hhcg0K PiAqY29tbWFuZCwgY29uc3QgY2hhciAqY29uc3QgKmFyZ3YsDQo+ICAJfQ0KPiAgICAgIH0NCj4g DQo+IC0gIG1pX3N5bWJvbF9pbmZvIChTRUFSQ0hfTU9EVUxFX0RPTUFJTiwgcmVnZXhwLCBudWxs cHRyLCB0cnVlLA0KPiBtYXhfcmVzdWx0cyk7DQo+ICsgIG1pX3N5bWJvbF9pbmZvIChzeW1ib2xf c2VhcmNoX2tpbmQ6Ok1PRFVMRSwgcmVnZXhwLCBudWxscHRyLCB0cnVlLA0KPiArCQkgIG1heF9y ZXN1bHRzKTsNCj4gIH0NCj4gDQo+ICAvKiBJbXBsZW1lbnQgLXN5bWJvbC1pbmZvLXR5cGVzIGNv bW1hbmQuICAqLw0KPiBAQCAtNDg3LDggKzQ5MSw4IEBAIG1pX2NtZF9zeW1ib2xfaW5mb190eXBl cyAoY29uc3QgY2hhciAqY29tbWFuZCwNCj4gY29uc3QgY2hhciAqY29uc3QgKmFyZ3YsDQo+ICAJ fQ0KPiAgICAgIH0NCj4gDQo+IC0gIG1pX3N5bWJvbF9pbmZvIChTRUFSQ0hfVFlQRV9ET01BSU4g fCBTRUFSQ0hfU1RSVUNUX0RPTUFJTiwNCj4gcmVnZXhwLCBudWxscHRyLA0KPiAtCQkgIHRydWUs IG1heF9yZXN1bHRzKTsNCj4gKyAgbWlfc3ltYm9sX2luZm8gKHN5bWJvbF9zZWFyY2hfa2luZDo6 VFlQRSwgcmVnZXhwLCBudWxscHRyLCB0cnVlLA0KPiArCQkgIG1heF9yZXN1bHRzKTsNCj4gIH0N Cj4gDQo+ICAvKiBJbXBsZW1lbnQgLXN5bWJvbC1pbmZvLXZhcmlhYmxlcyBjb21tYW5kLiAgKi8N Cj4gQEAgLTQ5Nyw1ICs1MDEsNSBAQCB2b2lkDQo+ICBtaV9jbWRfc3ltYm9sX2luZm9fdmFyaWFi bGVzIChjb25zdCBjaGFyICpjb21tYW5kLCBjb25zdCBjaGFyICpjb25zdA0KPiAqYXJndiwNCj4g IAkJCSAgICAgIGludCBhcmdjKQ0KPiAgew0KPiAtICBtaV9pbmZvX2Z1bmN0aW9uc19vcl92YXJp YWJsZXMgKFNFQVJDSF9WQVJfRE9NQUlOLCBhcmd2LCBhcmdjKTsNCj4gKyAgbWlfaW5mb19mdW5j dGlvbnNfb3JfdmFyaWFibGVzIChzeW1ib2xfc2VhcmNoX2tpbmQ6OlZBUklBQkxFLCBhcmd2LA0K PiBhcmdjKTsNCj4gIH0NCj4gZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLmMgYi9nZGIv cHl0aG9uL3B5dGhvbi5jDQo+IGluZGV4IGQ1MWNkODM5NjZiZS4uNDY3MzE3Yjc5OTZlIDEwMDY0 NA0KPiAtLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jDQo+ICsrKyBiL2dkYi9weXRob24vcHl0aG9u LmMNCj4gQEAgLTg0OCw3ICs4NDgsNyBAQCBnZGJweV9yYnJlYWsgKFB5T2JqZWN0ICpzZWxmLCBQ eU9iamVjdCAqYXJncywNCj4gUHlPYmplY3QgKmt3KQ0KPiAgICAgICAgbWluc3ltc19wID0gY21w Ow0KPiAgICAgIH0NCj4gDQo+IC0gIGdsb2JhbF9zeW1ib2xfc2VhcmNoZXIgc3BlYyAoU0VBUkNI X0ZVTkNUSU9OX0RPTUFJTiwgcmVnZXgpOw0KPiArICBnbG9iYWxfc3ltYm9sX3NlYXJjaGVyIHNw ZWMgKHN5bWJvbF9zZWFyY2hfa2luZDo6RlVOQ1RJT04sIHJlZ2V4KTsNCj4gDQo+ICAgIC8qIFRo ZSAic3ltdGFicyIga2V5d29yZCBpcyBhbnkgUHl0aG9uIGl0ZXJhYmxlIG9iamVjdCB0aGF0IHJl dHVybnMNCj4gICAgICAgYSBnZGIuU3ltdGFiIG9uIGVhY2ggaXRlcmF0aW9uLiAgSWYgc3BlY2lm aWVkLCBpdGVyYXRlIHRocm91Z2gNCj4gZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuYyBiL2dkYi9z eW10YWIuYw0KPiBpbmRleCAyNzA3MGY3NGY4M2UuLjcwOGRmMDc4ZTJlYSAxMDA2NDQNCj4gLS0t IGEvZ2RiL3N5bXRhYi5jDQo+ICsrKyBiL2dkYi9zeW10YWIuYw0KPiBAQCAtNDY5OCwxMSArNDY5 OCwzMSBAQCB0cmVnX21hdGNoZXNfc3ltX3R5cGVfbmFtZSAoY29uc3QNCj4gY29tcGlsZWRfcmVn ZXggJnRyZWcsDQo+ICAgIHJldHVybiB0cmVnLmV4ZWMgKHByaW50ZWRfc3ltX3R5cGVfbmFtZS5j X3N0ciAoKSwgMCwgTlVMTCwgMCkgPT0gMDsNCj4gIH0NCj4gDQo+ICsvKiBSZXR1cm4gdGhlIGRv bWFpbiBzZWFyY2ggZmxhZ3MgbWF0Y2hpbmcgc3ltYm9scyBvZiBraW5kIEtJTkQuICAqLw0KPiAr DQo+ICtzdGF0aWMgZG9tYWluX3NlYXJjaF9mbGFncw0KPiArdG9fc2VhcmNoX2ZsYWdzIChzeW1i b2xfc2VhcmNoX2tpbmQga2luZCkNCg0KU2FtZSBuYW1lIGFzICIgdG9fc2VhcmNoX2ZsYWdzIChk b21haW5fZW51bSBkb21haW4pIiBpbiBzeW10YWIuaC4NCk5vdCBzdXJlIGlmIHRoaXMgbWlnaHQg YmUgY29uZnVzaW5nLiAgSSBkb24ndCBoYXZlIGEgc3Ryb25nIG9waW5pb24gaGVyZS4NCg0KPiAr ew0KPiArICBzd2l0Y2ggKGtpbmQpDQo+ICsgICAgew0KPiArICAgIGNhc2Ugc3ltYm9sX3NlYXJj aF9raW5kOjpWQVJJQUJMRToNCj4gKyAgICAgIHJldHVybiBTRUFSQ0hfVkFSX0RPTUFJTjsNCj4g KyAgICBjYXNlIHN5bWJvbF9zZWFyY2hfa2luZDo6RlVOQ1RJT046DQo+ICsgICAgICByZXR1cm4g U0VBUkNIX0ZVTkNUSU9OX0RPTUFJTjsNCj4gKyAgICBjYXNlIHN5bWJvbF9zZWFyY2hfa2luZDo6 VFlQRToNCg0KU2hvdWxkIHdlIGFkZCBhIGNvbW1lbnQgd2h5IHRoZSAiIFNFQVJDSF9TVFJVQ1Rf RE9NQUlOIiBpcw0KaW5jbHVkZWQ/ICBJIHRoaW5rIHRoaXMgbWlnaHQgYmUgaGVscGZ1bCBmb3Ig ZnV0dXJlIHJlYWRlcnMsIGUuZy4NCiJTb21lIGxhbmd1YWdlcyBoYXZlIGEgdGFnIG5hbWVzcGFj ZS4gIFNlYXJjaCB0aGUgIlNUUlVDVF9ET01BSU4iLCB0b28uIg0KDQo+ICsgICAgICByZXR1cm4g U0VBUkNIX1RZUEVfRE9NQUlOIHwgU0VBUkNIX1NUUlVDVF9ET01BSU47DQo+ICsgICAgY2FzZSBz eW1ib2xfc2VhcmNoX2tpbmQ6Ok1PRFVMRToNCj4gKyAgICAgIHJldHVybiBTRUFSQ0hfTU9EVUxF X0RPTUFJTjsNCj4gKyAgICB9DQo+ICsNCj4gKyAgZ2RiX2Fzc2VydF9ub3RfcmVhY2hlZCAoImlu dmFsaWQgc3ltYm9sX3NlYXJjaF9raW5kIik7DQo+ICt9DQo+ICsNCj4gIC8qIFNlZSBzeW10YWIu aC4gICovDQo+IA0KPiAgYm9vbA0KPiAgZ2xvYmFsX3N5bWJvbF9zZWFyY2hlcjo6aXNfc3VpdGFi bGVfbXN5bWJvbA0KPiAtCShjb25zdCBkb21haW5fc2VhcmNoX2ZsYWdzIGtpbmQsIGNvbnN0IG1p bmltYWxfc3ltYm9sICptc3ltYm9sKQ0KPiArCShzeW1ib2xfc2VhcmNoX2tpbmQga2luZCwgY29u c3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wpDQo+ICB7DQo+ICAgIHN3aXRjaCAobXN5bWJvbC0+ dHlwZSAoKSkNCj4gICAgICB7DQo+IEBAIC00NzEwLDEyICs0NzMwLDEyIEBAIGdsb2JhbF9zeW1i b2xfc2VhcmNoZXI6OmlzX3N1aXRhYmxlX21zeW1ib2wNCj4gICAgICBjYXNlIG1zdF9ic3M6DQo+ ICAgICAgY2FzZSBtc3RfZmlsZV9kYXRhOg0KPiAgICAgIGNhc2UgbXN0X2ZpbGVfYnNzOg0KPiAt ICAgICAgcmV0dXJuIChraW5kICYgU0VBUkNIX1ZBUl9ET01BSU4pICE9IDA7DQo+ICsgICAgICBy ZXR1cm4ga2luZCA9PSBzeW1ib2xfc2VhcmNoX2tpbmQ6OlZBUklBQkxFOw0KPiAgICAgIGNhc2Ug bXN0X3RleHQ6DQo+ICAgICAgY2FzZSBtc3RfZmlsZV90ZXh0Og0KPiAgICAgIGNhc2UgbXN0X3Nv bGliX3RyYW1wb2xpbmU6DQo+ICAgICAgY2FzZSBtc3RfdGV4dF9nbnVfaWZ1bmM6DQo+IC0gICAg ICByZXR1cm4gKGtpbmQgJiBTRUFSQ0hfRlVOQ1RJT05fRE9NQUlOKSAhPSAwOw0KPiArICAgICAg cmV0dXJuIGtpbmQgPT0gc3ltYm9sX3NlYXJjaF9raW5kOjpGVU5DVElPTjsNCj4gICAgICBkZWZh dWx0Og0KPiAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiAgICAgIH0NCj4gQEAgLTQ3MjcsNyArNDc0 Nyw2IEBAIGJvb2wNCj4gIGdsb2JhbF9zeW1ib2xfc2VhcmNoZXI6OmV4cGFuZF9zeW10YWJzDQo+ ICAJKG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Y29tcGlsZWRfcmVnZXg+ ICZwcmVnKSBjb25zdA0KPiAgew0KPiAtICBkb21haW5fc2VhcmNoX2ZsYWdzIGtpbmQgPSBtX2tp bmQ7DQo+ICAgIGJvb2wgZm91bmRfZnVuY19tc3ltYm9sX3dpdGhvdXRfZGVidWdfaW5mbyA9IGZh bHNlOw0KPiANCj4gICAgYXV0byBkb19maWxlX21hdGNoID0gWyZdIChjb25zdCBjaGFyICpmaWxl bmFtZSwgYm9vbCBiYXNlbmFtZXMpDQo+IEBAIC00NzQ4LDcgKzQ3NjcsNyBAQCBnbG9iYWxfc3lt Ym9sX3NlYXJjaGVyOjpleHBhbmRfc3ltdGFicw0KPiAgICAgICB9LA0KPiAgICAgICBOVUxMLA0K PiAgICAgICBTRUFSQ0hfR0xPQkFMX0JMT0NLIHwgU0VBUkNIX1NUQVRJQ19CTE9DSywNCj4gLSAg ICAga2luZCk7DQo+ICsgICAgIHRvX3NlYXJjaF9mbGFncyAobV9raW5kKSk7DQo+IA0KPiAgICAv KiBIZXJlLCB3ZSBzZWFyY2ggdGhyb3VnaCB0aGUgbWluaW1hbCBzeW1ib2wgdGFibGVzIGZvciBm dW5jdGlvbnMgdGhhdA0KPiAgICAgICBtYXRjaCwgYW5kIGZvcmNlIHRoZWlyIHN5bWJvbHMgdG8g YmUgcmVhZC4gIFRoZSBzeW1ib2wgd2lsbCB0aGVuIGJlIGZvdW5kDQo+IEBAIC00NzY0LDcgKzQ3 ODMsNyBAQCBnbG9iYWxfc3ltYm9sX3NlYXJjaGVyOjpleHBhbmRfc3ltdGFicw0KPiAgICAgICBz eW10YWIuICBXaGVuIG5vIGZpbGUgbmFtZXMgd2VyZSBnaXZlbiB0aGUgY2FsbGVyIHVuY29uZGl0 aW9uYWxseSByZXNjYW5zDQo+ICAgICAgIHRoZSBtaW5pbWFsIHN5bWJvbHMgZm9yIFNFQVJDSF9W QVJfRE9NQUlOLiAgKi8NCj4gICAgaWYgKG1fZmlsZW5hbWVzLmVtcHR5ICgpDQo+IC0gICAgICAm JiAoa2luZCAmIFNFQVJDSF9GVU5DVElPTl9ET01BSU4pICE9IDApDQo+ICsgICAgICAmJiBtX2tp bmQgPT0gc3ltYm9sX3NlYXJjaF9raW5kOjpGVU5DVElPTikNCj4gICAgICB7DQo+ICAgICAgICBm b3IgKG1pbmltYWxfc3ltYm9sICptc3ltYm9sIDogb2JqZmlsZS0+bXN5bWJvbHMgKCkpDQo+ICAJ ew0KPiBAQCAtNDc3Myw3ICs0NzkyLDcgQEAgZ2xvYmFsX3N5bWJvbF9zZWFyY2hlcjo6ZXhwYW5k X3N5bXRhYnMNCj4gIAkgIGlmIChtc3ltYm9sLT5jcmVhdGVkX2J5X2dkYikNCj4gIAkgICAgY29u dGludWU7DQo+IA0KPiAtCSAgaWYgKGlzX3N1aXRhYmxlX21zeW1ib2wgKGtpbmQsIG1zeW1ib2wp KQ0KPiArCSAgaWYgKGlzX3N1aXRhYmxlX21zeW1ib2wgKG1fa2luZCwgbXN5bWJvbCkpDQo+ICAJ ICAgIHsNCj4gIAkgICAgICBpZiAoIXByZWcuaGFzX3ZhbHVlICgpDQo+ICAJCSAgfHwgcHJlZy0+ ZXhlYyAobXN5bWJvbC0+bmF0dXJhbF9uYW1lICgpLCAwLA0KPiBAQCAtNDgwNCw3ICs0ODIzLDcg QEAgZ2xvYmFsX3N5bWJvbF9zZWFyY2hlcjo6YWRkX21hdGNoaW5nX3N5bWJvbHMNCj4gIAkgY29u c3Qgc3RkOjpvcHRpb25hbDxjb21waWxlZF9yZWdleD4gJnRyZWcsDQo+ICAJIHN0ZDo6c2V0PHN5 bWJvbF9zZWFyY2g+ICpyZXN1bHRfc2V0KSBjb25zdA0KPiAgew0KPiAtICBkb21haW5fc2VhcmNo X2ZsYWdzIGtpbmQgPSBtX2tpbmQ7DQo+ICsgIGRvbWFpbl9zZWFyY2hfZmxhZ3MgZG9tYWluID0g dG9fc2VhcmNoX2ZsYWdzIChtX2tpbmQpOw0KPiANCj4gICAgLyogQWRkIG1hdGNoaW5nIHN5bWJv bHMgKGlmIG5vdCBhbHJlYWR5IHByZXNlbnQpLiAgKi8NCj4gICAgZm9yIChjb21wdW5pdF9zeW10 YWIgJmN1c3QgOiBvYmpmaWxlLT5jb21wdW5pdHMgKCkpDQo+IEBAIC00ODMyLDcgKzQ4NTEsNyBA QCBnbG9iYWxfc3ltYm9sX3NlYXJjaGVyOjphZGRfbWF0Y2hpbmdfc3ltYm9scw0KPiAgCQkJCQkg bV9maWxlbmFtZXMsIGZhbHNlKSkpKQ0KPiAgCQljb250aW51ZTsNCj4gDQo+IC0JICAgICAgaWYg KCFzeW0tPm1hdGNoZXMgKGtpbmQpKQ0KPiArCSAgICAgIGlmICghc3ltLT5tYXRjaGVzIChkb21h aW4pKQ0KPiAgCQljb250aW51ZTsNCj4gDQo+ICAJICAgICAgaWYgKHByZWcuaGFzX3ZhbHVlICgp ICYmIHByZWctPmV4ZWMgKHN5bS0+bmF0dXJhbF9uYW1lICgpLCAwLA0KPiBAQCAtNDg0NSw3ICs0 ODY0LDcgQEAgZ2xvYmFsX3N5bWJvbF9zZWFyY2hlcjo6YWRkX21hdGNoaW5nX3N5bWJvbHMNCj4g IAkJICAgJiYgIXRyZWdfbWF0Y2hlc19zeW1fdHlwZV9uYW1lICgqdHJlZywgc3ltKSkpDQo+ICAJ CWNvbnRpbnVlOw0KPiANCj4gLQkgICAgICBpZiAoKGtpbmQgJiBTRUFSQ0hfVkFSX0RPTUFJTikg IT0gMCkNCj4gKwkgICAgICBpZiAobV9raW5kID09IHN5bWJvbF9zZWFyY2hfa2luZDo6VkFSSUFC TEUpDQo+ICAJCXsNCj4gIAkJICBpZiAoc3ltLT5sb2NfY2xhc3MgKCkgPT0gTE9DX1VOUkVTT0xW RUQNCj4gIAkJICAgICAgLyogTE9DX0NPTlNUIGNhbiBiZSB1c2VkIGZvciBtb3JlIHRoYW4NCj4g QEAgLTQ4ODIsOCArNDkwMSw2IEBADQo+IGdsb2JhbF9zeW1ib2xfc2VhcmNoZXI6OmFkZF9tYXRj aGluZ19tc3ltYm9scw0KPiAgCShvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBzdGQ6Om9wdGlvbmFs PGNvbXBpbGVkX3JlZ2V4PiAmcHJlZywNCj4gIAkgc3RkOjp2ZWN0b3I8c3ltYm9sX3NlYXJjaD4g KnJlc3VsdHMpIGNvbnN0DQo+ICB7DQo+IC0gIGRvbWFpbl9zZWFyY2hfZmxhZ3Mga2luZCA9IG1f a2luZDsNCj4gLQ0KPiAgICBmb3IgKG1pbmltYWxfc3ltYm9sICptc3ltYm9sIDogb2JqZmlsZS0+ bXN5bWJvbHMgKCkpDQo+ICAgICAgew0KPiAgICAgICAgUVVJVDsNCj4gQEAgLTQ4OTEsNyArNDkw OCw3IEBADQo+IGdsb2JhbF9zeW1ib2xfc2VhcmNoZXI6OmFkZF9tYXRjaGluZ19tc3ltYm9scw0K PiAgICAgICAgaWYgKG1zeW1ib2wtPmNyZWF0ZWRfYnlfZ2RiKQ0KPiAgCWNvbnRpbnVlOw0KPiAN Cj4gLSAgICAgIGlmIChpc19zdWl0YWJsZV9tc3ltYm9sIChraW5kLCBtc3ltYm9sKSkNCj4gKyAg ICAgIGlmIChpc19zdWl0YWJsZV9tc3ltYm9sIChtX2tpbmQsIG1zeW1ib2wpKQ0KPiAgCXsNCj4g IAkgIGlmICghcHJlZy5oYXNfdmFsdWUgKCkNCj4gIAkgICAgICB8fCBwcmVnLT5leGVjIChtc3lt Ym9sLT5uYXR1cmFsX25hbWUgKCksIDAsDQo+IEBAIC00ODk5LDcgKzQ5MTYsNyBAQA0KPiBnbG9i YWxfc3ltYm9sX3NlYXJjaGVyOjphZGRfbWF0Y2hpbmdfbXN5bWJvbHMNCj4gIAkgICAgew0KPiAg CSAgICAgIC8qIEZvciBmdW5jdGlvbnMgd2UgY2FuIGRvIGEgcXVpY2sgY2hlY2sgb2Ygd2hldGhl ciB0aGUNCj4gIAkJIHN5bWJvbCBtaWdodCBiZSBmb3VuZCB2aWEgZmluZF9wY19zeW10YWIuICAq Lw0KPiAtCSAgICAgIGlmICgoa2luZCAmIFNFQVJDSF9GVU5DVElPTl9ET01BSU4pID09IDANCj4g KwkgICAgICBpZiAobV9raW5kICE9IHN5bWJvbF9zZWFyY2hfa2luZDo6RlVOQ1RJT04NCj4gIAkJ ICB8fCAoZmluZF9jb21wdW5pdF9zeW10YWJfZm9yX3BjDQo+ICAJCSAgICAgIChtc3ltYm9sLT52 YWx1ZV9hZGRyZXNzIChvYmpmaWxlKSkgPT0gTlVMTCkpDQo+ICAJCXsNCj4gQEAgLTUwMDYsMTIg KzUwMjMsMTIgQEAgZ2xvYmFsX3N5bWJvbF9zZWFyY2hlcjo6c2VhcmNoICgpIGNvbnN0DQo+ICAg ICAgIG1pbmltYWwgc3ltYm9sLCBhcyB3ZSBhc3N1bWUgdGhhdCBhIG1pbmltYWwgc3ltYm9sIGRv ZXMgbm90IGhhdmUgYQ0KPiAgICAgICB0eXBlLiAgKi8NCj4gICAgaWYgKChmb3VuZF9mdW5jX21z eW1ib2xfd2l0aG91dF9kZWJ1Z19pbmZvDQo+IC0gICAgICAgfHwgKG1fZmlsZW5hbWVzLmVtcHR5 ICgpICYmIChtX2tpbmQgJiBTRUFSQ0hfVkFSX0RPTUFJTikgIT0gMCkpDQo+ICsgICAgICAgfHwg KG1fZmlsZW5hbWVzLmVtcHR5ICgpICYmIG1fa2luZCA9PQ0KPiBzeW1ib2xfc2VhcmNoX2tpbmQ6 OlZBUklBQkxFKSkNCj4gICAgICAgICYmICFtX2V4Y2x1ZGVfbWluc3ltcw0KPiAgICAgICAgJiYg IXRyZWcuaGFzX3ZhbHVlICgpKQ0KPiAgICAgIHsNCj4gLSAgICAgIGdkYl9hc3NlcnQgKChtX2tp bmQgJiAoU0VBUkNIX1ZBUl9ET01BSU4gfA0KPiBTRUFSQ0hfRlVOQ1RJT05fRE9NQUlOKSkNCj4g LQkJICAhPSAwKTsNCj4gKyAgICAgIGdkYl9hc3NlcnQgKG1fa2luZCA9PSBzeW1ib2xfc2VhcmNo X2tpbmQ6OlZBUklBQkxFDQo+ICsJCSAgfHwgbV9raW5kID09IHN5bWJvbF9zZWFyY2hfa2luZDo6 RlVOQ1RJT04pOw0KPiAgICAgICAgZm9yIChvYmpmaWxlICZvYmpmaWxlIDogY3VycmVudF9wcm9n cmFtX3NwYWNlLT5vYmpmaWxlcyAoKSkNCj4gIAlpZiAoIWFkZF9tYXRjaGluZ19tc3ltYm9scyAo Jm9iamZpbGUsIHByZWcsICZyZXN1bHQpKQ0KPiAgCSAgYnJlYWs7DQo+IEBAIC01MTQzLDcgKzUx NjAsNyBAQCBwcmludF9tc3ltYm9sX2luZm8gKGJvdW5kX21pbmltYWxfc3ltYm9sDQo+IG1zeW1i b2wpDQo+IA0KPiAgc3RhdGljIHZvaWQNCj4gIHN5bXRhYl9zeW1ib2xfaW5mbyAoYm9vbCBxdWll dCwgYm9vbCBleGNsdWRlX21pbnN5bXMsDQo+IC0JCSAgICBjb25zdCBjaGFyICpyZWdleHAsIGRv bWFpbl9lbnVtIGtpbmQsDQo+ICsJCSAgICBjb25zdCBjaGFyICpyZWdleHAsIHN5bWJvbF9zZWFy Y2hfa2luZCBraW5kLA0KPiAgCQkgICAgY29uc3QgY2hhciAqdF9yZWdleHAsIGludCBmcm9tX3R0 eSkNCj4gIHsNCj4gICAgY29uc3QgY2hhciAqbGFzdF9maWxlbmFtZSA9ICIiOw0KPiBAQCAtNTE1 MiwxMSArNTE2OSw3IEBAIHN5bXRhYl9zeW1ib2xfaW5mbyAoYm9vbCBxdWlldCwgYm9vbA0KPiBl eGNsdWRlX21pbnN5bXMsDQo+ICAgIGlmIChyZWdleHAgIT0gbnVsbHB0ciAmJiAqcmVnZXhwID09 ICdcMCcpDQo+ICAgICAgcmVnZXhwID0gbnVsbHB0cjsNCj4gDQo+IC0gIGRvbWFpbl9zZWFyY2hf ZmxhZ3MgZmxhZ3MgPSB0b19zZWFyY2hfZmxhZ3MgKGtpbmQpOw0KPiAtICBpZiAoa2luZCA9PSBU WVBFX0RPTUFJTikNCj4gLSAgICBmbGFncyB8PSBTRUFSQ0hfU1RSVUNUX0RPTUFJTjsNCj4gLQ0K PiAtICBnbG9iYWxfc3ltYm9sX3NlYXJjaGVyIHNwZWMgKGZsYWdzLCByZWdleHApOw0KPiArICBn bG9iYWxfc3ltYm9sX3NlYXJjaGVyIHNwZWMgKGtpbmQsIHJlZ2V4cCk7DQo+ICAgIHNwZWMuc2V0 X3N5bWJvbF90eXBlX3JlZ2V4cCAodF9yZWdleHApOw0KPiAgICBzcGVjLnNldF9leGNsdWRlX21p bnN5bXMgKGV4Y2x1ZGVfbWluc3ltcyk7DQo+ICAgIHN0ZDo6dmVjdG9yPHN5bWJvbF9zZWFyY2g+ IHN5bWJvbHMgPSBzcGVjLnNlYXJjaCAoKTsNCj4gQEAgLTUxNjYsMjAgKzUxNzksMjAgQEAgc3lt dGFiX3N5bWJvbF9pbmZvIChib29sIHF1aWV0LCBib29sDQo+IGV4Y2x1ZGVfbWluc3ltcywNCj4g ICAgICAgIGNvbnN0IGNoYXIgKmNsYXNzbmFtZTsNCj4gICAgICAgIHN3aXRjaCAoa2luZCkNCj4g IAl7DQo+IC0JY2FzZSBWQVJfRE9NQUlOOg0KPiArCWNhc2Ugc3ltYm9sX3NlYXJjaF9raW5kOjpW QVJJQUJMRToNCj4gIAkgIGNsYXNzbmFtZSA9ICJ2YXJpYWJsZSI7DQo+ICAJICBicmVhazsNCj4g LQljYXNlIEZVTkNUSU9OX0RPTUFJTjoNCj4gKwljYXNlIHN5bWJvbF9zZWFyY2hfa2luZDo6RlVO Q1RJT046DQo+ICAJICBjbGFzc25hbWUgPSAiZnVuY3Rpb24iOw0KPiAgCSAgYnJlYWs7DQo+IC0J Y2FzZSBUWVBFX0RPTUFJTjoNCj4gKwljYXNlIHN5bWJvbF9zZWFyY2hfa2luZDo6VFlQRToNCj4g IAkgIGNsYXNzbmFtZSA9ICJ0eXBlIjsNCj4gIAkgIGJyZWFrOw0KPiAtCWNhc2UgTU9EVUxFX0RP TUFJTjoNCj4gKwljYXNlIHN5bWJvbF9zZWFyY2hfa2luZDo6TU9EVUxFOg0KPiAgCSAgY2xhc3Nu YW1lID0gIm1vZHVsZSI7DQo+ICAJICBicmVhazsNCj4gIAlkZWZhdWx0Og0KPiAtCSAgZ2RiX2Fz c2VydF9ub3RfcmVhY2hlZCAoImludmFsaWQgZG9tYWluIGVudW0iKTsNCj4gKwkgIGdkYl9hc3Nl cnRfbm90X3JlYWNoZWQgKCJpbnZhbGlkIHN5bWJvbF9zZWFyY2hfa2luZCIpOw0KDQpJIHRoaW5r IHdlIGNvdWxkIGRyb3AgdGhlICJkZWZhdWx0IiBjYXNlIGFzIHBhcnQgb2YgdGhpcyByZWZhY3Rv cmluZy4gIEFsbA0KY2FzZXMgYXJlIGhhbmRsZWQ7IHdlIGxvc2UgY29tcGlsZSB0aW1lIHdhcm5p bmdzIGZvciB1bmhhbmRsZWQgY2FzZXMgd2l0aA0KdGhlICJkZWZhdWx0IiBjYXNlLg0KDQo+ICAJ fQ0KPiANCj4gICAgICAgIGlmIChyZWdleHAgIT0gTlVMTCkNCj4gQEAgLTUzMDQsNyArNTMxNyw3 IEBAIGluZm9fdmFyaWFibGVzX2NvbW1hbmQgKGNvbnN0IGNoYXIgKmFyZ3MsIGludA0KPiBmcm9t X3R0eSkNCj4gICAgICBhcmdzID0gbnVsbHB0cjsNCj4gDQo+ICAgIHN5bXRhYl9zeW1ib2xfaW5m bw0KPiAtICAgIChvcHRzLnF1aWV0LCBvcHRzLmV4Y2x1ZGVfbWluc3ltcywgYXJncywgVkFSX0RP TUFJTiwNCj4gKyAgICAob3B0cy5xdWlldCwgb3B0cy5leGNsdWRlX21pbnN5bXMsIGFyZ3MsIHN5 bWJvbF9zZWFyY2hfa2luZDo6VkFSSUFCTEUsDQo+ICAgICAgIG9wdHMudHlwZV9yZWdleHAuZW1w dHkgKCkgPyBudWxscHRyIDogb3B0cy50eXBlX3JlZ2V4cC5jX3N0ciAoKSwNCj4gICAgICAgZnJv bV90dHkpOw0KPiAgfQ0KPiBAQCAtNTMyMyw3ICs1MzM2LDcgQEAgaW5mb19mdW5jdGlvbnNfY29t bWFuZCAoY29uc3QgY2hhciAqYXJncywgaW50DQo+IGZyb21fdHR5KQ0KPiAgICAgIGFyZ3MgPSBu dWxscHRyOw0KPiANCj4gICAgc3ltdGFiX3N5bWJvbF9pbmZvDQo+IC0gICAgKG9wdHMucXVpZXQs IG9wdHMuZXhjbHVkZV9taW5zeW1zLCBhcmdzLCBGVU5DVElPTl9ET01BSU4sDQo+ICsgICAgKG9w dHMucXVpZXQsIG9wdHMuZXhjbHVkZV9taW5zeW1zLCBhcmdzLCBzeW1ib2xfc2VhcmNoX2tpbmQ6 OkZVTkNUSU9OLA0KPiAgICAgICBvcHRzLnR5cGVfcmVnZXhwLmVtcHR5ICgpID8gbnVsbHB0ciA6 IG9wdHMudHlwZV9yZWdleHAuY19zdHIgKCksDQo+ICAgICAgIGZyb21fdHR5KTsNCj4gIH0NCj4g QEAgLTUzNjYsOCArNTM3OSw4IEBAIGluZm9fdHlwZXNfY29tbWFuZCAoY29uc3QgY2hhciAqYXJn cywgaW50DQo+IGZyb21fdHR5KQ0KPiAgICAgICgmYXJncywgZ2RiOjpvcHRpb246OlBST0NFU1Nf T1BUSU9OU19VTktOT1dOX0lTX09QRVJBTkQsIGdycCk7DQo+ICAgIGlmIChhcmdzICE9IG51bGxw dHIgJiYgKmFyZ3MgPT0gJ1wwJykNCj4gICAgICBhcmdzID0gbnVsbHB0cjsNCj4gLSAgc3ltdGFi X3N5bWJvbF9pbmZvIChvcHRzLnF1aWV0LCBmYWxzZSwgYXJncywgVFlQRV9ET01BSU4sIG51bGxw dHIsDQo+IC0JCSAgICAgIGZyb21fdHR5KTsNCj4gKyAgc3ltdGFiX3N5bWJvbF9pbmZvIChvcHRz LnF1aWV0LCBmYWxzZSwgYXJncywgc3ltYm9sX3NlYXJjaF9raW5kOjpUWVBFLA0KPiArCQkgICAg ICBudWxscHRyLCBmcm9tX3R0eSk7DQo+ICB9DQo+IA0KPiAgLyogQ29tbWFuZCBjb21wbGV0ZXIg Zm9yICdpbmZvIHR5cGVzJyBjb21tYW5kLiAgKi8NCj4gQEAgLTUzOTksOCArNTQxMiw4IEBAIGlu Zm9fbW9kdWxlc19jb21tYW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQNCj4gZnJvbV90dHkpDQo+ ICAgICAgKCZhcmdzLCBnZGI6Om9wdGlvbjo6UFJPQ0VTU19PUFRJT05TX1VOS05PV05fSVNfT1BF UkFORCwgZ3JwKTsNCj4gICAgaWYgKGFyZ3MgIT0gbnVsbHB0ciAmJiAqYXJncyA9PSAnXDAnKQ0K PiAgICAgIGFyZ3MgPSBudWxscHRyOw0KPiAtICBzeW10YWJfc3ltYm9sX2luZm8gKG9wdHMucXVp ZXQsIHRydWUsIGFyZ3MsIE1PRFVMRV9ET01BSU4sIG51bGxwdHIsDQo+IC0JCSAgICAgIGZyb21f dHR5KTsNCj4gKyAgc3ltdGFiX3N5bWJvbF9pbmZvIChvcHRzLnF1aWV0LCB0cnVlLCBhcmdzLCBz eW1ib2xfc2VhcmNoX2tpbmQ6Ok1PRFVMRSwNCj4gKwkJICAgICAgbnVsbHB0ciwgZnJvbV90dHkp Ow0KPiAgfQ0KPiANCj4gIC8qIEltcGxlbWVudCB0aGUgJ2luZm8gbWFpbicgY29tbWFuZC4gICov DQo+IEBAIC01NDQxLDcgKzU0NTQsNyBAQCByYnJlYWtfY29tbWFuZCAoY29uc3QgY2hhciAqcmVn ZXhwLCBpbnQNCj4gZnJvbV90dHkpDQo+ICAgICAgIGJlY2F1c2UgdGhlIHN0ZDo6bW92ZSBudWxs aWZpZXMgZmlsZV9uYW1lLiAgKi8NCj4gICAgYm9vbCBmaWxlX25hbWVfcCA9IGZpbGVfbmFtZSAh PSBudWxscHRyOw0KPiANCj4gLSAgZ2xvYmFsX3N5bWJvbF9zZWFyY2hlciBzcGVjIChTRUFSQ0hf RlVOQ1RJT05fRE9NQUlOLCByZWdleHApOw0KPiArICBnbG9iYWxfc3ltYm9sX3NlYXJjaGVyIHNw ZWMgKHN5bWJvbF9zZWFyY2hfa2luZDo6RlVOQ1RJT04sIHJlZ2V4cCk7DQo+ICAgIGlmIChmaWxl X25hbWVfcCkNCj4gICAgICBzcGVjLmFkZF9maWxlbmFtZSAoc3RkOjptb3ZlIChmaWxlX25hbWUp KTsNCj4gICAgc3RkOjp2ZWN0b3I8c3ltYm9sX3NlYXJjaD4gc3ltYm9scyA9IHNwZWMuc2VhcmNo ICgpOw0KPiBAQCAtNjY1NCwxMiArNjY2NywxMiBAQCBzdGF0aWMgc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQNCj4gKmluZm9fbW9kdWxlX2NtZGxpc3QgPSBOVUxMOw0KPiANCj4gIHN0ZDo6dmVjdG9y PG1vZHVsZV9zeW1ib2xfc2VhcmNoPg0KPiAgc2VhcmNoX21vZHVsZV9zeW1ib2xzIChjb25zdCBj aGFyICptb2R1bGVfcmVnZXhwLCBjb25zdCBjaGFyICpyZWdleHAsDQo+IC0JCSAgICAgICBjb25z dCBjaGFyICp0eXBlX3JlZ2V4cCwgZG9tYWluX3NlYXJjaF9mbGFncyBraW5kKQ0KPiArCQkgICAg ICAgY29uc3QgY2hhciAqdHlwZV9yZWdleHAsIHN5bWJvbF9zZWFyY2hfa2luZCBraW5kKQ0KPiAg ew0KPiAgICBzdGQ6OnZlY3Rvcjxtb2R1bGVfc3ltYm9sX3NlYXJjaD4gcmVzdWx0czsNCj4gDQo+ ICAgIC8qIFNlYXJjaCBmb3IgYWxsIG1vZHVsZXMgbWF0Y2hpbmcgTU9EVUxFX1JFR0VYUC4gICov DQo+IC0gIGdsb2JhbF9zeW1ib2xfc2VhcmNoZXIgc3BlYzEgKFNFQVJDSF9NT0RVTEVfRE9NQUlO LA0KPiBtb2R1bGVfcmVnZXhwKTsNCj4gKyAgZ2xvYmFsX3N5bWJvbF9zZWFyY2hlciBzcGVjMSAo c3ltYm9sX3NlYXJjaF9raW5kOjpNT0RVTEUsDQo+IG1vZHVsZV9yZWdleHApOw0KPiAgICBzcGVj MS5zZXRfZXhjbHVkZV9taW5zeW1zICh0cnVlKTsNCj4gICAgc3RkOjp2ZWN0b3I8c3ltYm9sX3Nl YXJjaD4gbW9kdWxlcyA9IHNwZWMxLnNlYXJjaCAoKTsNCj4gDQo+IEBAIC02NzA1LDkgKzY3MTgs MTAgQEAgc2VhcmNoX21vZHVsZV9zeW1ib2xzIChjb25zdCBjaGFyDQo+ICptb2R1bGVfcmVnZXhw LCBjb25zdCBjaGFyICpyZWdleHAsDQo+ICBzdGF0aWMgdm9pZA0KPiAgaW5mb19tb2R1bGVfc3Vi Y29tbWFuZCAoYm9vbCBxdWlldCwgY29uc3QgY2hhciAqbW9kdWxlX3JlZ2V4cCwNCj4gIAkJCWNv bnN0IGNoYXIgKnJlZ2V4cCwgY29uc3QgY2hhciAqdHlwZV9yZWdleHAsDQo+IC0JCQlkb21haW5f c2VhcmNoX2ZsYWdzIGtpbmQpDQo+ICsJCQlzeW1ib2xfc2VhcmNoX2tpbmQga2luZCkNCj4gIHsN Cj4gLSAgZ2RiX2Fzc2VydCAoa2luZCA9PSBTRUFSQ0hfRlVOQ1RJT05fRE9NQUlOIHx8IGtpbmQg PT0NCj4gU0VBUkNIX1ZBUl9ET01BSU4pOw0KPiArICBnZGJfYXNzZXJ0IChraW5kID09IHN5bWJv bF9zZWFyY2hfa2luZDo6RlVOQ1RJT04NCj4gKwkgICAgICB8fCBraW5kID09IHN5bWJvbF9zZWFy Y2hfa2luZDo6VkFSSUFCTEUpOw0KPiANCj4gICAgLyogUHJpbnQgYSBoZWFkZXIgbGluZS4gIERv bid0IGJ1aWxkIHRoZSBoZWFkZXIgbGluZSBiaXQgYnkgYml0IGFzIHRoaXMNCj4gICAgICAgcHJl dmVudHMgaW50ZXJuYXRpb25hbGlzYXRpb24uICAqLw0KPiBAQCAtNjcxOCwxMiArNjczMiwxMiBA QCBpbmZvX21vZHVsZV9zdWJjb21tYW5kIChib29sIHF1aWV0LCBjb25zdA0KPiBjaGFyICptb2R1 bGVfcmVnZXhwLA0KPiAgCSAgaWYgKHR5cGVfcmVnZXhwID09IG51bGxwdHIpDQo+ICAJICAgIHsN Cj4gIAkgICAgICBpZiAocmVnZXhwID09IG51bGxwdHIpDQo+IC0JCWdkYl9wcmludGYgKChraW5k ID09IFNFQVJDSF9WQVJfRE9NQUlODQo+ICsJCWdkYl9wcmludGYgKChraW5kID09IHN5bWJvbF9z ZWFyY2hfa2luZDo6VkFSSUFCTEUNCj4gIAkJCSAgICAgPyBfKCJBbGwgdmFyaWFibGVzIGluIGFs bCBtb2R1bGVzOiIpDQo+ICAJCQkgICAgIDogXygiQWxsIGZ1bmN0aW9ucyBpbiBhbGwgbW9kdWxl czoiKSkpOw0KPiAgCSAgICAgIGVsc2UNCj4gIAkJZ2RiX3ByaW50Zg0KPiAtCQkgICgoa2luZCA9 PSBTRUFSQ0hfVkFSX0RPTUFJTg0KPiArCQkgICgoa2luZCA9PSBzeW1ib2xfc2VhcmNoX2tpbmQ6 OlZBUklBQkxFDQo+ICAJCSAgICA/IF8oIkFsbCB2YXJpYWJsZXMgbWF0Y2hpbmcgcmVndWxhciBl eHByZXNzaW9uIg0KPiAgCQkJIiBcIiVzXCIgaW4gYWxsIG1vZHVsZXM6IikNCj4gIAkJICAgIDog XygiQWxsIGZ1bmN0aW9ucyBtYXRjaGluZyByZWd1bGFyIGV4cHJlc3Npb24iDQo+IEBAIC02NzM0 LDcgKzY3NDgsNyBAQCBpbmZvX21vZHVsZV9zdWJjb21tYW5kIChib29sIHF1aWV0LCBjb25zdCBj aGFyDQo+ICptb2R1bGVfcmVnZXhwLA0KPiAgCSAgICB7DQo+ICAJICAgICAgaWYgKHJlZ2V4cCA9 PSBudWxscHRyKQ0KPiAgCQlnZGJfcHJpbnRmDQo+IC0JCSAgKChraW5kID09IFNFQVJDSF9WQVJf RE9NQUlODQo+ICsJCSAgKChraW5kID09IHN5bWJvbF9zZWFyY2hfa2luZDo6VkFSSUFCTEUNCj4g IAkJICAgID8gXygiQWxsIHZhcmlhYmxlcyB3aXRoIHR5cGUgbWF0Y2hpbmcgcmVndWxhciAiDQo+ ICAJCQkiZXhwcmVzc2lvbiBcIiVzXCIgaW4gYWxsIG1vZHVsZXM6IikNCj4gIAkJICAgIDogXygi QWxsIGZ1bmN0aW9ucyB3aXRoIHR5cGUgbWF0Y2hpbmcgcmVndWxhciAiDQo+IEBAIC02NzQyLDcg KzY3NTYsNyBAQCBpbmZvX21vZHVsZV9zdWJjb21tYW5kIChib29sIHF1aWV0LCBjb25zdCBjaGFy DQo+ICptb2R1bGVfcmVnZXhwLA0KPiAgCQkgICB0eXBlX3JlZ2V4cCk7DQo+ICAJICAgICAgZWxz ZQ0KPiAgCQlnZGJfcHJpbnRmDQo+IC0JCSAgKChraW5kID09IFNFQVJDSF9WQVJfRE9NQUlODQo+ ICsJCSAgKChraW5kID09IHN5bWJvbF9zZWFyY2hfa2luZDo6VkFSSUFCTEUNCj4gIAkJICAgID8g XygiQWxsIHZhcmlhYmxlcyBtYXRjaGluZyByZWd1bGFyIGV4cHJlc3Npb24gIg0KPiAgCQkJIlwi JXNcIixcblx0d2l0aCB0eXBlIG1hdGNoaW5nIHJlZ3VsYXIgIg0KPiAgCQkJImV4cHJlc3Npb24g XCIlc1wiIGluIGFsbCBtb2R1bGVzOiIpDQo+IEBAIC02NzU4LDcgKzY3NzIsNyBAQCBpbmZvX21v ZHVsZV9zdWJjb21tYW5kIChib29sIHF1aWV0LCBjb25zdCBjaGFyDQo+ICptb2R1bGVfcmVnZXhw LA0KPiAgCSAgICB7DQo+ICAJICAgICAgaWYgKHJlZ2V4cCA9PSBudWxscHRyKQ0KPiAgCQlnZGJf cHJpbnRmDQo+IC0JCSAgKChraW5kID09IFNFQVJDSF9WQVJfRE9NQUlODQo+ICsJCSAgKChraW5k ID09IHN5bWJvbF9zZWFyY2hfa2luZDo6VkFSSUFCTEUNCj4gIAkJICAgID8gXygiQWxsIHZhcmlh YmxlcyBpbiBhbGwgbW9kdWxlcyBtYXRjaGluZyByZWd1bGFyICINCj4gIAkJCSJleHByZXNzaW9u IFwiJXNcIjoiKQ0KPiAgCQkgICAgOiBfKCJBbGwgZnVuY3Rpb25zIGluIGFsbCBtb2R1bGVzIG1h dGNoaW5nIHJlZ3VsYXIgIg0KPiBAQCAtNjc2Niw3ICs2NzgwLDcgQEAgaW5mb19tb2R1bGVfc3Vi Y29tbWFuZCAoYm9vbCBxdWlldCwgY29uc3QgY2hhcg0KPiAqbW9kdWxlX3JlZ2V4cCwNCj4gIAkJ ICAgbW9kdWxlX3JlZ2V4cCk7DQo+ICAJICAgICAgZWxzZQ0KPiAgCQlnZGJfcHJpbnRmDQo+IC0J CSAgKChraW5kID09IFNFQVJDSF9WQVJfRE9NQUlODQo+ICsJCSAgKChraW5kID09IHN5bWJvbF9z ZWFyY2hfa2luZDo6VkFSSUFCTEUNCj4gIAkJICAgID8gXygiQWxsIHZhcmlhYmxlcyBtYXRjaGlu ZyByZWd1bGFyIGV4cHJlc3Npb24gIg0KPiAgCQkJIlwiJXNcIixcblx0aW4gYWxsIG1vZHVsZXMg bWF0Y2hpbmcgcmVndWxhciAiDQo+ICAJCQkiZXhwcmVzc2lvbiBcIiVzXCI6IikNCj4gQEAgLTY3 NzksNyArNjc5Myw3IEBAIGluZm9fbW9kdWxlX3N1YmNvbW1hbmQgKGJvb2wgcXVpZXQsIGNvbnN0 IGNoYXINCj4gKm1vZHVsZV9yZWdleHAsDQo+ICAJICAgIHsNCj4gIAkgICAgICBpZiAocmVnZXhw ID09IG51bGxwdHIpDQo+ICAJCWdkYl9wcmludGYNCj4gLQkJICAoKGtpbmQgPT0gU0VBUkNIX1ZB Ul9ET01BSU4NCj4gKwkJICAoKGtpbmQgPT0gc3ltYm9sX3NlYXJjaF9raW5kOjpWQVJJQUJMRQ0K PiAgCQkgICAgPyBfKCJBbGwgdmFyaWFibGVzIHdpdGggdHlwZSBtYXRjaGluZyByZWd1bGFyICIN Cj4gIAkJCSJleHByZXNzaW9uIFwiJXNcIlxuXHRpbiBhbGwgbW9kdWxlcyBtYXRjaGluZyAiDQo+ ICAJCQkicmVndWxhciBleHByZXNzaW9uIFwiJXNcIjoiKQ0KPiBAQCAtNjc4OSw3ICs2ODAzLDcg QEAgaW5mb19tb2R1bGVfc3ViY29tbWFuZCAoYm9vbCBxdWlldCwgY29uc3QgY2hhcg0KPiAqbW9k dWxlX3JlZ2V4cCwNCj4gIAkJICAgdHlwZV9yZWdleHAsIG1vZHVsZV9yZWdleHApOw0KPiAgCSAg ICAgIGVsc2UNCj4gIAkJZ2RiX3ByaW50Zg0KPiAtCQkgICgoa2luZCA9PSBTRUFSQ0hfVkFSX0RP TUFJTg0KPiArCQkgICgoa2luZCA9PSBzeW1ib2xfc2VhcmNoX2tpbmQ6OlZBUklBQkxFDQo+ICAJ CSAgICA/IF8oIkFsbCB2YXJpYWJsZXMgbWF0Y2hpbmcgcmVndWxhciBleHByZXNzaW9uICINCj4g IAkJCSJcIiVzXCIsXG5cdHdpdGggdHlwZSBtYXRjaGluZyByZWd1bGFyIGV4cHJlc3Npb24gIg0K PiAgCQkJIlwiJXNcIixcblx0aW4gYWxsIG1vZHVsZXMgbWF0Y2hpbmcgcmVndWxhciAiDQo+IEBA IC02OTAxLDcgKzY5MTUsNyBAQCBpbmZvX21vZHVsZV9mdW5jdGlvbnNfY29tbWFuZCAoY29uc3Qg Y2hhcg0KPiAqYXJncywgaW50IGZyb21fdHR5KQ0KPiAgICAgIChvcHRzLnF1aWV0LA0KPiAgICAg ICBvcHRzLm1vZHVsZV9yZWdleHAuZW1wdHkgKCkgPyBudWxscHRyIDogb3B0cy5tb2R1bGVfcmVn ZXhwLmNfc3RyICgpLCBhcmdzLA0KPiAgICAgICBvcHRzLnR5cGVfcmVnZXhwLmVtcHR5ICgpID8g bnVsbHB0ciA6IG9wdHMudHlwZV9yZWdleHAuY19zdHIgKCksDQo+IC0gICAgIFNFQVJDSF9GVU5D VElPTl9ET01BSU4pOw0KPiArICAgICBzeW1ib2xfc2VhcmNoX2tpbmQ6OkZVTkNUSU9OKTsNCj4g IH0NCj4gDQo+ICAvKiBJbXBsZW1lbnRzIHRoZSAnaW5mbyBtb2R1bGUgdmFyaWFibGVzJyBjb21t YW5kLiAgKi8NCj4gQEAgLTY5MjAsNyArNjkzNCw3IEBAIGluZm9fbW9kdWxlX3ZhcmlhYmxlc19j b21tYW5kIChjb25zdCBjaGFyDQo+ICphcmdzLCBpbnQgZnJvbV90dHkpDQo+ICAgICAgKG9wdHMu cXVpZXQsDQo+ICAgICAgIG9wdHMubW9kdWxlX3JlZ2V4cC5lbXB0eSAoKSA/IG51bGxwdHIgOiBv cHRzLm1vZHVsZV9yZWdleHAuY19zdHIgKCksIGFyZ3MsDQo+ICAgICAgIG9wdHMudHlwZV9yZWdl eHAuZW1wdHkgKCkgPyBudWxscHRyIDogb3B0cy50eXBlX3JlZ2V4cC5jX3N0ciAoKSwNCj4gLSAg ICAgU0VBUkNIX1ZBUl9ET01BSU4pOw0KPiArICAgICBzeW1ib2xfc2VhcmNoX2tpbmQ6OlZBUklB QkxFKTsNCj4gIH0NCj4gDQo+ICAvKiBDb21tYW5kIGNvbXBsZXRlciBmb3IgJ2luZm8gbW9kdWxl IC4uLicgc3ViLWNvbW1hbmRzLiAgKi8NCj4gZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuaCBiL2dk Yi9zeW10YWIuaA0KPiBpbmRleCA2NDQzMjE2ZmQ3ZjAuLmEzNTQ0OWZiZWVkYSAxMDA2NDQNCj4g LS0tIGEvZ2RiL3N5bXRhYi5oDQo+ICsrKyBiL2dkYi9zeW10YWIuaA0KPiBAQCAtMjU4Niw2ICsy NTg2LDIzIEBAIHN0cnVjdCBzeW1ib2xfc2VhcmNoDQo+ICAJCQkJICBjb25zdCBzeW1ib2xfc2Vh cmNoICZzeW1fYik7DQo+ICB9Ow0KPiANCj4gKy8qIFRoZSBraW5kIG9mIHN5bWJvbHMgc2VhcmNo ZWQgZm9yIGJ5IGdsb2JhbF9zeW1ib2xfc2VhcmNoZXIuICAqLw0KPiArDQo+ICtlbnVtIGNsYXNz IHN5bWJvbF9zZWFyY2hfa2luZA0KPiArew0KPiArICAvKiBWYXJpYWJsZXMsIGV4Y2x1ZGluZyBl bnVtIGNvbnN0YW50cy4gICovDQo+ICsgIFZBUklBQkxFLA0KPiArDQo+ICsgIC8qIEZ1bmN0aW9u cy4gICovDQo+ICsgIEZVTkNUSU9OLA0KPiArDQo+ICsgIC8qIFR5cGUgbmFtZXMuICAqLw0KDQpJ SVVDLCB0aGlzIGNvdmVycyAiU0VBUkNIX1RZUEVfRE9NQUlOIHwgU0VBUkNIX1NUUlVDVF9ET01B SU4iID8NClNob3VsZCB0aGUgY29tbWVudCBiZSBleHRlbmRlZCB0byBzdGF0ZSB0aGlzIGV4cGxp Y2l0bHksIGUuZy4sICJUeXBlIG5hbWVzLA0KaW5jbHVkaW5nIHN0cnVjdCwgdW5pb24gYW5kIGVu dW0gdGFncy4iID8NCg0KPiArICBUWVBFLA0KPiArDQo+ICsgIC8qIEZvcnRyYW4gbW9kdWxlcy4g ICovDQo+ICsgIE1PRFVMRSwNCj4gK307DQo+ICsNCj4gIC8qIEluIG9yZGVyIHRvIHNlYXJjaCBm b3IgZ2xvYmFsIHN5bWJvbHMgb2YgYSBwYXJ0aWN1bGFyIGtpbmQgbWF0Y2hpbmcNCj4gICAgIHBh cnRpY3VsYXIgcmVndWxhciBleHByZXNzaW9ucywgY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMg c3RydWN0dXJlIGFuZA0KPiAgICAgY2FsbCB0aGUgU0VBUkNIIG1lbWJlciBmdW5jdGlvbi4gICov DQo+IEBAIC0yNTk0LDcgKzI2MTEsNyBAQCBjbGFzcyBnbG9iYWxfc3ltYm9sX3NlYXJjaGVyDQo+ ICBwdWJsaWM6DQo+IA0KPiAgICAvKiBDb25zdHJ1Y3Rvci4gICovDQo+IC0gIGdsb2JhbF9zeW1i b2xfc2VhcmNoZXIgKGRvbWFpbl9zZWFyY2hfZmxhZ3Mga2luZCwNCj4gKyAgZ2xvYmFsX3N5bWJv bF9zZWFyY2hlciAoc3ltYm9sX3NlYXJjaF9raW5kIGtpbmQsDQo+ICAJCQkgIGNvbnN0IGNoYXIg KnN5bWJvbF9uYW1lX3JlZ2V4cCkNCj4gICAgICA6IG1fa2luZCAoa2luZCksDQo+ICAgICAgICBt X3N5bWJvbF9uYW1lX3JlZ2V4cCAoc3ltYm9sX25hbWVfcmVnZXhwKQ0KPiBAQCAtMjYzNSwxNCAr MjY1Miw4IEBAIGNsYXNzIGdsb2JhbF9zeW1ib2xfc2VhcmNoZXINCj4gICAgLyogVGhlIHNldCBv ZiBzb3VyY2UgZmlsZXMgdG8gc2VhcmNoIGluIGZvciBtYXRjaGluZyBzeW1ib2xzLiAgKi8NCj4g ICAgc3RkOjp2ZWN0b3I8Z2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4+IG1fZmlsZW5hbWVz Ow0KPiANCj4gLSAgLyogVGhlIGtpbmQgb2Ygc3ltYm9scyBhcmUgd2Ugc2VhcmNoaW5nIGZvci4N Cj4gLSAgICAgVkFSSUFCTEVTX0RPTUFJTiAtIFNlYXJjaCBhbGwgc3ltYm9scywgZXhjbHVkaW5n IGZ1bmN0aW9ucywgdHlwZQ0KPiAtCQkJbmFtZXMsIGFuZCBjb25zdGFudHMgKGVudW1zKS4NCj4g LSAgICAgRlVOQ1RJT05TX0RPTUFJTiAtIFNlYXJjaCBhbGwgZnVuY3Rpb25zLi4NCj4gLSAgICAg VFlQRVNfRE9NQUlOICAgICAtIFNlYXJjaCBhbGwgdHlwZSBuYW1lcy4NCj4gLSAgICAgTU9EVUxF U19ET01BSU4gICAtIFNlYXJjaCBhbGwgRm9ydHJhbiBtb2R1bGVzLg0KPiAtICAgICBBTExfRE9N QUlOICAgICAgIC0gTm90IHZhbGlkIGZvciB0aGlzIGZ1bmN0aW9uLiAgKi8NCj4gLSAgZG9tYWlu X3NlYXJjaF9mbGFncyBtX2tpbmQ7DQo+ICsgIC8qIFRoZSBraW5kIG9mIHN5bWJvbHMgd2UgYXJl IHNlYXJjaGluZyBmb3IuICAqLw0KPiArICBzeW1ib2xfc2VhcmNoX2tpbmQgbV9raW5kOw0KPiAN Cj4gICAgLyogUmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIGFnYWluc3QgdGhlIHN5bWJvbCBu YW1lLiAgKi8NCj4gICAgY29uc3QgY2hhciAqbV9zeW1ib2xfbmFtZV9yZWdleHAgPSBudWxscHRy Ow0KPiBAQCAtMjY4Niw3ICsyNjk3LDcgQEAgY2xhc3MgZ2xvYmFsX3N5bWJvbF9zZWFyY2hlcg0K PiAgCQkJICAgICAgc3RkOjp2ZWN0b3I8c3ltYm9sX3NlYXJjaD4gKnJlc3VsdHMpIGNvbnN0Ow0K PiANCj4gICAgLyogUmV0dXJuIHRydWUgaWYgTVNZTUJPTCBpcyBvZiB0eXBlIEtJTkQuICAqLw0K PiAtICBzdGF0aWMgYm9vbCBpc19zdWl0YWJsZV9tc3ltYm9sIChjb25zdCBkb21haW5fc2VhcmNo X2ZsYWdzIGtpbmQsDQo+ICsgIHN0YXRpYyBib29sIGlzX3N1aXRhYmxlX21zeW1ib2wgKHN5bWJv bF9zZWFyY2hfa2luZCBraW5kLA0KPiAgCQkJCSAgIGNvbnN0IG1pbmltYWxfc3ltYm9sICptc3lt Ym9sKTsNCj4gIH07DQo+IA0KPiBAQCAtMjcwMyw3ICsyNzE0LDcgQEAgdXNpbmcgbW9kdWxlX3N5 bWJvbF9zZWFyY2ggPQ0KPiBzdGQ6OnBhaXI8c3ltYm9sX3NlYXJjaCwgc3ltYm9sX3NlYXJjaD47 DQo+ICAgICB3aXRoaW4gdGhlIG1vZHVsZS4gICovDQo+ICBleHRlcm4gc3RkOjp2ZWN0b3I8bW9k dWxlX3N5bWJvbF9zZWFyY2g+IHNlYXJjaF9tb2R1bGVfc3ltYm9scw0KPiAgCShjb25zdCBjaGFy ICptb2R1bGVfcmVnZXhwLCBjb25zdCBjaGFyICpyZWdleHAsDQo+IC0JIGNvbnN0IGNoYXIgKnR5 cGVfcmVnZXhwLCBkb21haW5fc2VhcmNoX2ZsYWdzIGtpbmQpOw0KPiArCSBjb25zdCBjaGFyICp0 eXBlX3JlZ2V4cCwgc3ltYm9sX3NlYXJjaF9raW5kIGtpbmQpOw0KPiANCj4gIC8qIENvbnZlcnQg YSBnbG9iYWwgb3Igc3RhdGljIHN5bWJvbCBTWU0gKGJhc2VkIG9uIEJMT0NLLCB3aGljaCBzaG91 bGQgYmUNCj4gICAgIGVpdGhlciBHTE9CQUxfQkxPQ0sgb3IgU1RBVElDX0JMT0NLKSBpbnRvIGEg c3RyaW5nIGZvciB1c2UgaW4gJ2luZm8nDQo+IC0tDQo+IDIuNTUuMA0KDQpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fDQpJbnRlbCBEZXV0c2NobGFuZCBHbWJIIA0KDQpS ZWdpc3RlcmVkIEFkZHJlc3M6IERvcm5hY2hlciBTdHJhc3NlIDEsIDg1NjIyIEZlbGRraXJjaGVu LCBHZXJtYW55IA0KDQpUZWw6ICs0OSAoODkpIDk5MTQzLTAgDQoNCnd3dy5pbnRlbC5kZSANCg0K TWFuYWdpbmcgRGlyZWN0b3JzOiBDYW5kaWNlIE1vb3JlLCBKZWZmcmV5IFNjaG5laWRlcm1hbiwg UmFtYWNoYW5kcmFuIFNpdGFyYW1hbg0KDQpDaGFpcnBlcnNvbiBvZiB0aGUgU3VwZXJ2aXNvcnkg Qm9hcmQ6IFNvbmphIFBpZXJlcg0KDQpSZWdpc3RlcmVkIFNlYXQ6IE11bmljaCBDb21tZXJjaWFs IFJlZ2lzdGVyIEI6IEFtdHNnZXJpY2h0IE11bmljaCBIUkIgMTg2OTI4DQoNClRoaXMgZS1tYWls IGFuZCBhbnkgYXR0YWNobWVudHMgbWF5IGNvbnRhaW4gY29uZmlkZW50aWFsIG1hdGVyaWFsIGZv cg0KdGhlIHNvbGUgdXNlIG9mIHRoZSBpbnRlbmRlZCByZWNpcGllbnQocykuIEFueSByZXZpZXcg b3IgZGlzdHJpYnV0aW9uDQpieSBvdGhlcnMgaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4gSWYgeW91 IGFyZSBub3QgdGhlIGludGVuZGVkDQpyZWNpcGllbnQsIHBsZWFzZSBjb250YWN0IHRoZSBzZW5k ZXIgYW5kIGRlbGV0ZSBhbGwgY29waWVzLgo=