From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 81U5JRX1aGkG0wQAWB0awg (envelope-from ) for ; Thu, 15 Jan 2026 09:09:25 -0500 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=bD+GhS3s; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 75208378002; Thu, 15 Jan 2026 09:09:25 -0500 (EST) 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 66E591E070 for ; Thu, 15 Jan 2026 09:09:22 -0500 (EST) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id C59104BA2E29 for ; Thu, 15 Jan 2026 14:09:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C59104BA2E29 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=bD+GhS3s Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by sourceware.org (Postfix) with ESMTPS id 92E954BA2E1D for ; Thu, 15 Jan 2026 14:08:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 92E954BA2E1D 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 92E954BA2E1D Authentication-Results: server2.sourceware.org; arc=fail smtp.remote-ip=198.175.65.10 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1768486096; cv=fail; b=e6eQqveO8RuPPQikO/3tOczYXlA+eUNgC5px0fcHBWU1QW+R2evWbAxI1ltP2SbR0kYmPXj+9ptg9rsJVU4TmF8ppyVlBvgioMfrA5jyzdeUW/C7lTAMa4A/LW0cGXmtmxntbYahT0MEISAAoFc1Pa662fpdKF7iwBJfGJGrw+c= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1768486096; c=relaxed/simple; bh=Nb/Of36J8cTCy/GLwgwfSRcDPUNyFED9A2TFPK5SlVE=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=PPmeqZInIYgHpy9PhlmSW2l+GFYiBDHwN9IWbbUsI7hyr4kCaw5TVxx25DgGxBtAvoPMEa9s965cRIkHjpwuku5k2IdbkFuZhkWUdd0MMqpU5tSRcuC7ATZAUpWlIAHazvki+kQNB450BjPX1UOb/T/ME7CY5Fa0Qgqq7/uDDUM= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 92E954BA2E1D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1768486091; x=1800022091; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version:content-transfer-encoding; bh=Nb/Of36J8cTCy/GLwgwfSRcDPUNyFED9A2TFPK5SlVE=; b=bD+GhS3swSuoK4Qkr5+AW9zdNtYsjqkfbijIxrwOc34sD6Oy76Ij68L0 a3AwEr4fq9K9COwT52SifZ5aPwDOsVV3OZMTGpoXRBPyq9Kd4sun1L9QN HD475OTyfSopmGDVocFF9vfTL5flLtYAlYTlloZZASXR9FDByk/k4Line SB0tHT5GaS7KCZMOlqShUopTD/UxZjjwkR5odebIWz8QQCHli+OC8nju9 a42DgQFiPz1OjjB+zScz7z2cpkqx7vDxxMOzSw+BdGhnIpUJj9L53Qx87 kR9q5F9MXsSkGeAKjCFe0CWIUYDA/TNuwHTZUz656UCG22eLx7OQfeTRn A==; X-CSE-ConnectionGUID: Xmlr8bj4SD6jbp0PprIGxQ== X-CSE-MsgGUID: gIwbOXWkQIu2Y+ufPXy+ew== X-IronPort-AV: E=McAfee;i="6800,10657,11672"; a="87204874" X-IronPort-AV: E=Sophos;i="6.21,228,1763452800"; d="scan'208";a="87204874" Received: from fmviesa004.fm.intel.com ([10.60.135.144]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 06:05:52 -0800 X-CSE-ConnectionGUID: 4D5QDSRRSLKKuMzIwGS4Jw== X-CSE-MsgGUID: nBL0YEiuSnOUgf6MrGUNQQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,228,1763452800"; d="scan'208";a="209821744" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by fmviesa004.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2026 06:05:50 -0800 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Thu, 15 Jan 2026 06:05:49 -0800 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29 via Frontend Transport; Thu, 15 Jan 2026 06:05:49 -0800 Received: from BL2PR02CU003.outbound.protection.outlook.com (52.101.52.57) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Thu, 15 Jan 2026 06:05:48 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=q5XlpqnS2Ox9yyY0FYHViZYqMgoA9AKTVEr1rTfc/6CBJZyc39r3Y/fC8JkDs+soOFVYoJ+fIFjn2r4VPAnpWeoEhhpKS/YSJRsNPD6rxV+shFVF87sqE11g5eSmK/prkPanvyBL6Ry4M3ZbHjbwkx7Pxk5bwnPrIEQkwdC1UNMUuMyGe7yE1WMdk0B0WSITYjnCNlJXjqKAMhPPd7pUtRqDeeiPDNhMdEIRAsb/YdBSbppB4qpge/uVOdv0PNjmaS+c9vflwYW23qj7uMhAsXBvlV1IDQSK4jyGCZGRTH4zYwFV8hgcC4042gCZK/b2ODBhXQgs3DqA/aFvBO//yg== 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=4JsOYXPalXGU/Y61NrXUfkOOS98oG6bzY0Wq/Ac0/uo=; b=Lhvmg08dtP67gLkHneVdv4C2DRXwH94XxR7zTiJOyiYm+USNNDYIwIL1JrC6O5FJrG+XD8HNN9x6SV51j6h+w2tMYnb7mXo2e+kW+AtJHzYk8I8hZiu1BH9jJPz59gB9rh3iMJJSUh/htierdfeCi4nQbbyJomZKU+cTh/+fMYzoAdFIVHygxOOXRTr9rDSr5ayQI69q4T7IYDA+Fnu4mH0am4+qMmE1El2IFxmx2BvawmTYD3zHk10JX3FNTOcSSveUZKu4DSV6SeFRjmpkSjxX9XGjrTOlze6fFrqrPhznqvV3CiqQpKcqa27rvFDXWl30PV+sbNWuLZ6E5iIKfQ== 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 PH0PR11MB7636.namprd11.prod.outlook.com (2603:10b6:510:26f::13) by PH0PR11MB5951.namprd11.prod.outlook.com (2603:10b6:510:145::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.5; Thu, 15 Jan 2026 14:05:45 +0000 Received: from PH0PR11MB7636.namprd11.prod.outlook.com ([fe80::d611:6fa9:bc34:46b]) by PH0PR11MB7636.namprd11.prod.outlook.com ([fe80::d611:6fa9:bc34:46b%3]) with mapi id 15.20.9520.005; Thu, 15 Jan 2026 14:05:45 +0000 From: "Schimpe, Christina" To: Thiago Jung Bauermann CC: "gdb-patches@sourceware.org" Subject: RE: [PATCH 6/9] gdb: Implement 'bt shadow' to print the shadow stack backtrace. Thread-Topic: [PATCH 6/9] gdb: Implement 'bt shadow' to print the shadow stack backtrace. Thread-Index: AQHcLHyk6BixCK9m9kO4uqiIeHhyW7Tb3WWkgBvHSJCADRa/MIAAzKFA Date: Thu, 15 Jan 2026 14:05:44 +0000 Message-ID: References: <20250923111842.4091694-1-christina.schimpe@intel.com> <20250923111842.4091694-7-christina.schimpe@intel.com> <874irfsoqc.fsf@linaro.org> <877bvdsah7.fsf@linaro.org> In-Reply-To: <877bvdsah7.fsf@linaro.org> 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: PH0PR11MB7636:EE_|PH0PR11MB5951:EE_ x-ms-office365-filtering-correlation-id: c430c93a-ee22-404d-9708-08de543f2d11 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|10070799003|376014|1800799024|7142099003|38070700021; x-microsoft-antispam-message-info: =?utf-8?B?U2ZJV1cxelFlVmVpcDZGMzc3YU1aTHQ2WVlXOFd4d2FTaWV1a3BJaUgxenpV?= =?utf-8?B?U1MrbjJOZFhmbCtLb000cW15NEt2MWVYMkxSWkpIVHFkcE5JMy9tcmNKeDl6?= =?utf-8?B?K2FuMGJSZkFweXFvMkFuczhzbCtvMmRCMUhkU2lGUzViTnBrcXBnN0FFVFJ5?= =?utf-8?B?WEN2TjBieVdFRFowZlByam52UGZFVmhZdFNFMWV0OVF5eGpQQ21TdlIzUHVG?= =?utf-8?B?R1g0ZG4wTzdpQ05xcEliQ1BiTkd2WHY1clliYXJhQUtLeGNNaUNETWxxM2ZQ?= =?utf-8?B?TjlOUmV0TkRWVjBFdnF1L1k0aFZZRExTR3YrL3VLbHRzTmhpb2N3NXdEVkJ2?= =?utf-8?B?MytrYTczUHgycS8ybFBJT1NaNkdDb2I2M0pUckJGVnJROGhJVVBTekpIYmFE?= =?utf-8?B?TU11ZTV2RDJBRUZjTkdXWFFkc2trR1ZFTnpWNEphazFsdndmQUJOTUdoNHR3?= =?utf-8?B?MmhPc1FwWmNlZkdsczU5SVVyYjRpRk9YSGJDa2g4ZjcyUDREY3BRYzJYN05O?= =?utf-8?B?L2RFd2pKN0I1Q1NQSWhERE1rd2RoempxdVZjelltcHpyWERRMzNBcVJkYTl0?= =?utf-8?B?RXhjRGJOZWIrd3BweFN5MCsvVXgvZDRKb2ROY2Fod2pzSVhHekdwSS9ZSVZi?= =?utf-8?B?cDJtVVlTNXVSMDhtRWV2Y3Z6TjBsZytibUZ0NUZ1OVJUeC83SkNHZ1VobXFt?= =?utf-8?B?TEZ6MFdGNXROU1hkUEVQOHJ0WVpZeTFjQzZkUGkwTUJ6OXN4YlR6TTI0aWd6?= =?utf-8?B?cFdXUVZnaU1SM3ZqL1RYSlhnV210R2lxZllHZTJxNmJhZlk0cm5lZkZnM2Nk?= =?utf-8?B?bkFUQjRZcmMzUWlJdVpaTW1Ua0ltclNyQyttQWN3czF4aGhZaWVad1JKamhE?= =?utf-8?B?ckJRV2hiem9Rb3E4Yk16M2NzWHY3RlNQQWhYYzdjckVvK0RMSnJKc0VlbjQ1?= =?utf-8?B?ZFFaa3cwZEhFSjhaL1RFcHZNbEQzVmR4Y3VWVlpSYTMrRWZ2Z044OVg5UWcz?= =?utf-8?B?UlpoWlJkRlVZNFlXYjBXM1dVTVJrMUlneUZ0V0N5M3Y2SmVPNHRHdi9YaEh5?= =?utf-8?B?TTNjbUM1aDN6WVZFaHpCbnd5UE9FZ1VLeDhqRDlaanQ1bzFMZG56dVhIY245?= =?utf-8?B?aEpHcTZQR2VLdENFekZkYTZNZlVxdHpaV0RFVndNdHZUQTg5QytmUWRjYWd5?= =?utf-8?B?UWdKUkJpTmx6MUZXVFgzcktnYkRLMlFHTjNxM1FXTmE4d0wwOGxZcE10LzM5?= =?utf-8?B?Wm5DdWdabUhyNlR0bEFVVC9wWGgrZklmUmZvUjZjOUpkbVRobG41Qk5zMjdX?= =?utf-8?B?MlF1Qm5RV1B0TXNtTW1iaWFFdFllOFNDTkhrdmw5R2o1R1ByNHI4SVB2TnFl?= =?utf-8?B?NERHMERCakg4aTJWbHJqdVFBRFJicGo5TC9ET21CNDc2a1RjS1h1L0hSMWJm?= =?utf-8?B?NWFCK0sxb2d6QlJXSk9oMHNxZ3ByVGZoVEtLQWluaDBTWnBxN05xRmpxbk95?= =?utf-8?B?amFxMmYxc0xuSmppUUlrUjhNSzdCUDJJTlhLYW1DSkZ0cDIrTTNpMDIzRmFh?= =?utf-8?B?M29vUi9va0lTT3BGZHNOYThTVS92aWdOcUw1Sy9jeVRhdGU3QWdBc3ZETVlJ?= =?utf-8?B?ajVFaURITW5tYytJQURZczBPemRzbWMvc2d5N3YwellrdHVRR1dLbTZ5U0xW?= =?utf-8?B?MUNLVjR3MCt1YktPMUJveVQwZkVOMHFJd0lPSVZZd011K00wK3VUODg4cTNV?= =?utf-8?B?eDVMMVZYOWM2TDJCZXV6cUlmQ29lcWFMcE1MWTZlNmh1UGFrZDhnRWg5S3NO?= =?utf-8?B?TU90OTRiUkJRM0hmZ1hsSU9MUitmYlFQdUJ2V2RDaWZwNnk5Q0dKdjIva1lk?= =?utf-8?B?STROSWMxSVVBOC9lVWZpTXg2QkRqY1JwYkl6WGZOTjdSYjFxNVA3QjljZUV0?= =?utf-8?B?aElQSEpVcW9xdHlkdHloQUF5eXZadG5xOTBEcEtod3RmS2JmZkc2b013bG9h?= =?utf-8?B?R2RNSG1RMENsS0V4SGFYdU5yRnVRQkZUakYrYUpET2lHZ1VHU0tFcnZpaENI?= =?utf-8?B?UXJFd043R1Q1OUtGd2lad1FoSEhWQ2lzZXE1aHJSQjd5bDZLUWx5dUdhY1NS?= =?utf-8?B?NkE5a0JJaTlPUFBWNVdWNjQwaFBheUk0WlZqS2lVZEVmY0R3MjlpelV5Yjg5?= =?utf-8?Q?Nk09YbJrI+8fytIextyBKPM=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR11MB7636.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(10070799003)(376014)(1800799024)(7142099003)(38070700021); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 2 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eG9sdHBGaHRKVmliM052MnprRUE5QWo1TURJR0tGbHVNdytXeDVnOVFWdVVZ?= =?utf-8?B?QXQrNFpFcW1NK0owcnRwQmo5eEliemtuakR4ekI5OWxueWNBSU1oZW9VREpL?= =?utf-8?B?WnUvNlB6YUh3VTg1Wkl6Ry90aVp5WTBnM1ZVV0RGd2ZsZjJaUElId001cEcv?= =?utf-8?B?akl3QXJXKzMyaUJ4WVBvd3FlRmtBS0xZcnY5ckxYalpydFBpUXhyWE9rcGxw?= =?utf-8?B?dzZNOXVtUHhoUUEreWFPcSt6Q2c0VldIRTNVQWF0NmRzK0Frb2greFNHbEdM?= =?utf-8?B?T0owTDVCUUQxb2RQekN1THEwOEk1NDBGTFVhY3JBc0JTUFRueU84T2tqU1Jn?= =?utf-8?B?UDU3MzdpMWRaMnhjalZBMWNxeXNnb21VWmdoSFpyRWFaSVBUVFNVbUVJN090?= =?utf-8?B?NnpBMmMyYXErRGp5NXFtVWdyanZLLzdOVmpSb3RrM0lqNmRGdnB5d29jSkdj?= =?utf-8?B?N0gyOFNOVCt0RXVxenJnd2wzcVRFUmtYTTN1My9vTERzR0FteFBVS0JFQ2Vn?= =?utf-8?B?WHpPSTBib0hWckFSV3E1QkVOb01TaWpXTmNjLytPbmx1TmNCMlk0cXlnS0dI?= =?utf-8?B?S0d4bzZUdjFHSlpObFc3NjY3UzlVejVjRkk0Q0Y4c1ludWNoSFhHWVdtNlpr?= =?utf-8?B?RHdtalQ1c3BuRkhoQjFFTjFYejhaSXAwSXI0S3NEOXZOZnp5aXFsWXhzOGlq?= =?utf-8?B?R1FncUNzNDhndk1iNU9kc3hGL2NYcE1GNXJ0ZDM5L0svd2daRkxId1FtdDZw?= =?utf-8?B?cnhHWFQ5cUZFeGFUY1lRelh4YTVxSFpkR21RcytoQ3JBcGsvTW83ZXNEL3dk?= =?utf-8?B?RUVWdEtlWmhjejFxdFl2dThha0tNRm9pZDBBV3UraWxxZE1XWU9kNmlxbmNV?= =?utf-8?B?YnBobWVCSW4zNXBFU09vU2pZUktrMVBvSjlaczdkWDhoaURqOG1zSWJyZWVj?= =?utf-8?B?blZENFBhcEZpdVErSnBNczliSE0wL1dPcDcvYzF0dkltQng3Smc5YWQrbVY3?= =?utf-8?B?OTc1eW4rMjdwM05VWHNVMU55cXA1OWdsb3FWT3RFM1VtNnc5dS96ektMcHRk?= =?utf-8?B?RENyZFZld1Q4Y3FIaTNTSlJFRDhHditTMnhQbFp4YUtwbkZHSzFVeGs3eXZI?= =?utf-8?B?Y2hreUJOK0FkVG9lbEpBNlVtRHo5K0ZkTU81ME1oQ1pOckNsOHFhaHQxQnV5?= =?utf-8?B?cmF5cndleHQ3SDFoKzZBdUNwMTF3cU1aNzN1QVN3N2g0ZDdCMDF6V2luUVk5?= =?utf-8?B?VWxQSmorQmprcmFhb1JMUG9kN0EwWUhYQ2NpZU9EVTZDSjRyekJPUEVKM0lv?= =?utf-8?B?djBJa3JFWTRvajNBUWdSUnBwdkl2Yk1mKytENWRESVlhQ2xWS2d6SmE2Yjli?= =?utf-8?B?UUVtTUxNUGZjWCtOYWhXOHdyQWpmek5YWFFRRlpyMEdVeVFvdzJKVWltcWVq?= =?utf-8?B?dEI1NkswWGJmMkN2TXltOHBTTDF0VjFaZkE5OENNYkV2Y3VPandqOFFkNFR3?= =?utf-8?B?R1lFaTZBdFNLTGRnRzJOWUVnMnJsemwrWHQ0YktHN1VHeHN3Sjdzc1JKaElj?= =?utf-8?B?dTl2RThDQmJwWVdPYVZWWTl4ajlPR1pWbGlrM1lpRUxSc3Z1Z28rZHdaZWdG?= =?utf-8?B?d2ExVjJrc0h3am1LZElUWURFTVUvZHhPalVaajlabWpPQVRjUVBPVTJmb1dO?= =?utf-8?B?ZlRsZ3Z2SHJGVkRkV2V2L2dXTnNHZllFVEJMUTZQMVdkYzQ4VE9TcTd6YTV5?= =?utf-8?B?eXQ1TDhabjc4U0NZemRNRi9iL01vcU9kSXcrRjhQOWx1WFJNRXZYQ0VUY3g1?= =?utf-8?B?NWw1b0V0L29rVnZUU29RN2p5NlcrVzJUVmhuMWJ1OWh6OUd5M2dUSUdBZEpZ?= =?utf-8?B?TVpudlhiUkx0SG1XNlpmZjZ2QzhOYUJGdE5rVlhaaXBiQjVvNVdhbXRMWWlE?= =?utf-8?B?SWhRWFcxUDNzMXVIZTF6bzJiUDFjY1RUeE9JU1BZTjQ4WDVYYVNYQSt6SjFh?= =?utf-8?B?d1JqNjM0N3FsUnN6OGNzRHBpZ0F2T3JBY2J6QWVQNmtKa2tUazFlSkMrK0Ra?= =?utf-8?B?ZmYydkxHblJnMU42TWdyalEwb2hNTDlPM3BMSkJZWEx1WndxYjV1VG8yWkU1?= =?utf-8?B?V2tXNUxBNURpdGlRZWtXYko5RHFqck45dmc0TWlNSzYrTThWV0JZTkFSbnQx?= =?utf-8?B?blI0Rkg2UEJYdVM2QWVuMDMxampma0h0N0I1WGNyL2tjYmJSUjBSTDZrTkh6?= =?utf-8?B?aWQxUk1DM0ZUcXV3SW05RjE5Qm8zdjFnalRmRmZnTDljT05LdVRMSmVlU0Y3?= =?utf-8?B?VURnRzdTZXNLMjVjcGc0NnM1RmhoUUhhUyt6UU1FNktlZDdUUmVRWTdNMTY3?= =?utf-8?Q?uzAQU+KCjODJm146+nQUpWoOIflzqTsAs+w8b40TUlgbe?= x-ms-exchange-antispam-messagedata-1: ykoIEOxjTdJVWA== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB7636.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c430c93a-ee22-404d-9708-08de543f2d11 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jan 2026 14:05:44.8510 (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: Engf3GoJGmVoK2vFkj1ukYpr1PbRrVeSxbrygFZDct6reLXKCvFTqmChzaQzWt5Vvn987z4dsnt24eaHDzhu6sReSav91SFRJ45V1oErpmI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5951 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 SEkgVGhpYWdvLCANCg0KUGxlYXNlIGZpbmQgbXkgY29tbWVudHMgYmVsb3cuDQoNCj4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVGhpYWdvIEp1bmcgQmF1ZXJtYW5uIDx0aGlh Z28uYmF1ZXJtYW5uQGxpbmFyby5vcmc+DQo+IFNlbnQ6IE1pdHR3b2NoLCAyNi4gTm92ZW1iZXIg MjAyNSAwNTowNw0KPiBUbzogU2NoaW1wZSwgQ2hyaXN0aW5hIDxjaHJpc3RpbmEuc2NoaW1wZUBp bnRlbC5jb20+DQo+IENjOiBnZGItcGF0Y2hlc0Bzb3VyY2V3YXJlLm9yZw0KPiBTdWJqZWN0OiBS ZTogW1BBVENIIDYvOV0gZ2RiOiBJbXBsZW1lbnQgJ2J0IHNoYWRvdycgdG8gcHJpbnQgdGhlIHNo YWRvdw0KPiBzdGFjayBiYWNrdHJhY2UuDQo+IA0KPiAiU2NoaW1wZSwgQ2hyaXN0aW5hIiA8Y2hy aXN0aW5hLnNjaGltcGVAaW50ZWwuY29tPiB3cml0ZXM6DQo+IA0KPiA+IEhpIFRoaWFnbywNCj4g Pg0KPiA+IFRoYW5rcyBmb3IgdGFraW5nIHRoZSB0aW1lIHRvIHByb3ZpZGUgdGhpcyByZXZpZXfi gJRJIHJlYWxseSBhcHByZWNpYXRlIHlvdXINCj4gZGV0YWlsZWQgaW5wdXQhDQo+IA0KPiBZb3Un cmUgbW9zdCB3ZWxjb21lLiBUaGFuayB5b3UgZm9yIHB1c2hpbmcgdGhlIHNoYWRvdyBzdGFjayBm ZWF0dXJlDQo+IGZvcndhcmQhDQo+IA0KPiA+IEnigJl2ZSBpbXBsZW1lbnRlZCBwYXJ0IG9mIHlv dXIgZmVlZGJhY2ssIGFuZCB0aGVyZSBhcmUgc3RpbGwgYSBmZXcgb3Blbg0KPiBwb2ludHMgSeKA mWQgbGlrZSB0byBjbGFyaWZ5Lg0KPiA+IEkgaG9wZSBJIGRpZG7igJl0IG1pc3MgYW55IG9mIHlv dXIgY29tbWVudHMsIGFzIHRoZSByZXZpZXcgaGFzIGJlY29tZSBxdWl0ZQ0KPiBjb21wcmVoZW5z aXZlLg0KPiANCj4gSW5kZWVkLCB0aGUgcmV2aWV3IGVuZGVkIHVwIG1vcmUgZGV0YWlsZWQgdGhh biBJIGFudGljaXBhdGVkIGJlY2F1c2UgSSdtDQo+IHVzaW5nIHRoZSByZXZpZXcgcHJvY2VzcyB0 byBhbHNvIGRldmVsb3AgdGhlIEFBcmNoNjQgc2lkZS4gVGhpcyBtYWRlIG1lIGRpZw0KPiBpbnRv IHRoZSBjb2RlIHF1aXRlIGEgYml0Lg0KPiANCj4gPiBQbGVhc2UgZmluZCBteSByZXNwb25zZXMg YW5kIG9wZW4gcXVlc3Rpb25zIGJlbG93LiBMb29raW5nIGZvcndhcmQgdG8NCj4geW91ciB0aG91 Z2h0cyENCj4gDQo+IFRoYW5rcyENCj4gDQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4+IEZyb206IFRoaWFnbyBKdW5nIEJhdWVybWFubiA8dGhpYWdvLmJhdWVybWFubkBsaW5h cm8ub3JnPg0KPiA+PiBTZW50OiBGcmVpdGFnLCAzMS4gT2t0b2JlciAyMDI1IDA1OjAyDQo+ID4+ IFRvOiBTY2hpbXBlLCBDaHJpc3RpbmEgPGNocmlzdGluYS5zY2hpbXBlQGludGVsLmNvbT4NCj4g Pj4gQ2M6IGdkYi1wYXRjaGVzQHNvdXJjZXdhcmUub3JnDQo+ID4+IFN1YmplY3Q6IFJlOiBbUEFU Q0ggNi85XSBnZGI6IEltcGxlbWVudCAnYnQgc2hhZG93JyB0byBwcmludCB0aGUNCj4gPj4gc2hh ZG93IHN0YWNrIGJhY2t0cmFjZS4NCj4gPj4NCj4gPj4gQ2hyaXN0aW5hIFNjaGltcGUgPGNocmlz dGluYS5zY2hpbXBlQGludGVsLmNvbT4gd3JpdGVzOg0KPiA+Pg0KPiA+PiA+IEV4YW1wbGUgZm9y IHRoZSBvdXRwdXQgb2YgJ2J0IHNoYWRvdycgb24gYW1kNjQgbGludXg6DQo+ID4+ID4gfn4NCj4g Pj4gPiAoZ2RiKSBidCBzaGFkb3cNCj4gPj4gPiAvIzAgIDB4MDAwMDAwMDAwMDQwMTExZiBpbiBj YWxsMSBhdCBhbWQ2NC1zaGFkb3ctc3RhY2suYzoxNA0KPiA+PiA+IC8jMSAgMHgwMDAwMDAwMDAw NDAxMTJmIGluIG1haW4gYXQgYW1kNjQtc2hhZG93LXN0YWNrLmM6MjENCj4gPj4gPiAvIzIgIDB4 MDAwMDdmZmZmN2MzZmU3MCBpbiBfX2xpYmNfc3RhcnRfY2FsbF9tYWluIGF0DQo+ID4+ID4gLi4v c3lzZGVwcy9ucHRsL2xpYmNfc3RhcnRfY2FsbF9tYWluLmg6NTgNCj4gPj4gPiAvIzMgIDB4MDAw MDdmZmZmN2MzZmYyMCBpbiBfX2xpYmNfc3RhcnRfbWFpbl9pbXBsIGF0DQo+ID4+ID4gLi4vY3N1 L2xpYmMtc3RhcnQuYzoxMjgNCj4gPj4gPiAvIzQgIDB4MDAwMDAwMDAwMDQwMTA0NSBpbiBfc3Rh cnQNCj4gPj4gPiB+fg0KPiA+Pg0KPiA+PiBIZXJlJ3MgYW4gZXhhbXBsZSBvdXRwdXQgaW4gbXkg YWFyY2g2NC1saW51eCB0ZXN0IFZNOg0KPiA+Pg0KPiA+PiAoZ2RiKSBidCBzaGFkb3cNCj4gPj4g IzAgIDB4MDAwMGFhYWFhYWFhMDhhYyBpbiBjYWxsMiBhdCBhYXJjaDY0LWdjcy1yZXR1cm4uYzo2 NQ0KPiA+PiAjMSAgMHgwMDAwYWFhYWFhYWEwOGMwIGluIGNhbGwxIGF0IGFhcmNoNjQtZ2NzLXJl dHVybi5jOjcxDQo+ID4+ICMyICAweDAwMDBhYWFhYWFhYTA5ZDQgaW4gbWFpbiBhdCBhYXJjaDY0 LWdjcy1yZXR1cm4uYzoxMTANCj4gPj4gIzMgIDB4MDAwMDAwMDAwMDAwMDAwMCBpbiA/Pw0KPiA+ Pg0KPiA+PiBBbmQgaGVyZSBpcyB0aGUgcmVndWxhciBiYWNrdHJhY2UgYXQgdGhlIHNhbWUgcG9p bnQ6DQo+ID4+DQo+ID4+IChnZGIpIGJ0DQo+ID4+ICMwICBjYWxsMyAoKSBhdCBhYXJjaDY0LWdj cy1yZXR1cm4uYzo1OA0KPiA+PiAjMSAgMHgwMDAwYWFhYWFhYWEwOGFjIGluIGNhbGwyICgpIGF0 IGFhcmNoNjQtZ2NzLXJldHVybi5jOjY0DQo+ID4+ICMyICAweDAwMDBhYWFhYWFhYTA4YzAgaW4g Y2FsbDEgKCkgYXQgYWFyY2g2NC1nY3MtcmV0dXJuLmM6NzANCj4gPj4gIzMgIDB4MDAwMGFhYWFh YWFhMDlkNCBpbiBtYWluICgpIGF0IGFhcmNoNjQtZ2NzLXJldHVybi5jOjEwNw0KPiA+Pg0KPiA+ PiBJIGhhdmUgYSBmZXcgY29tbWVudHMgb24gdGhpcyBvdXRwdXQsIGF0IGxlYXN0IGFzIGl0IGlz IGFwcGVhcnMgZm9yDQo+ID4+IEdDUy4gSSdtIGFzc3VtaW5nIHg4NiBzaGFkb3cgc3RhY2sgb3V0 cHV0IGlzIHNpbWlsYXI6DQo+ID4+DQo+ID4+IDEuIFRoZSBmaXJzdCB0aGluZyB0aGF0IEkgbm90 aWNlIGlzIHRoYXQgdGhlIG51bWJlciBvZiB0aGUgZnJhbWVzDQo+ID4+IGRvbid0IG1hdGNoIGJl dHdlZW4gdGhlIHJlZ3VsYXIgc3RhY2sgYW5kIHRoZSBzaGFkb3cgc3RhY2s6IGZyYW1lIDANCj4g Pj4gaW4gdGhlIHJlZ3VsYXIgc3RhY2sgZG9lc24ndCBleGlzdCBpbiB0aGUgc2hhZG93IHN0YWNr LCByZWd1bGFyIGZyYW1lDQo+ID4+IDEgaXMgc2hhZG93IGZyYW1lIDAsIGFuZCBzbyBvbi4NCj4g Pj4NCj4gPj4gSSB0aGluayB0aGlzIGlzIGNvbmZ1c2luZy4gSXQgbWFrZXMgc2Vuc2UgdGhhdCBm cmFtZSAwIGRvZXNuJ3QgYXBwZWFyDQo+ID4+IGluIHRoZSBzaGFkb3cgc3RhY2sgYmFja3RyYWNl IGJlY2F1c2UgdGhlcmUgcmVhbGx5IGlzbid0IGFuIGVudHJ5IGZvcg0KPiA+PiBpdCBpbiB0aGUg c2hhZG93IHN0YWNrLCBidXQgSSB0aGluayB0aGUgc2hhZG93IGVudHJpZXMgc2hvdWxkIHN0YXJ0 DQo+ID4+IHdpdGggbnVtYmVyIDEsIHRvIGJlIGNvbnNpc3RlbnQuDQo+ID4NCj4gPiBNaCwgaXQn cyBwcm9iYWJseSBiZXR0ZXIgdG8gYWxpZ24sIEkgYWdyZWUuDQo+ID4gSSdsbCBnbyB3aXRoIHN0 YXJ0aW5nIGZyYW1lICMxIGluIHRoZSB2MiwgYW5kIGFkZCBhIGNvbW1lbnQgYWJvdXQgdGhhdA0K PiA+IGluIHRoZSBjb21taXQgbWVzc2FnZS4NCg0KVGhpbmtpbmcgYWJvdXQgdGhpcyBhZ2FpbiBJ IHdvbmRlciBpZiBpdCdzIGEgZ29vZCBpZGVhIHRvIHN0YXJ0IHRoZSBudW1iZXJpbmcgd2l0aCAj MS4gDQpCZXNpZGVzIGZyYW1lICMwLCB0aGVyZSBhcmUgbXVsdGlwbGUgcmVhc29ucyB3aHkgdGhl IG51bWJlcmluZyBvZiB0aGUgbm9ybWFsIGJhY2t0cmFjZQ0KaXMgb3V0LW9mLXN5bmMgd2l0aCB0 aGUgc2hhZG93IHN0YWNrIGJhY2t0cmFjZSwgZS5nLiBpbmxpbmUgY2FsbHMsIHRhaWwgY2FsbHMg b3IgcHl0aG9uIGZyYW1lDQpmaWx0ZXJzLg0KDQpBbm90aGVyIG9wdGlvbiBpcyB0byBhZGQgdGhl IG9yaWdpbmFsICMwIGZyYW1lIHVzaW5nIHRoZSBjdXJyZW50ICRwYy4gQnV0IHdoYXQgSSBkb27i gJl0IGxpa2UNCmFib3V0IHRoaXMsIGlzIHRoYXQgdGhlIHVzZXIgY291bGQgYmUgY29uZnVzZWQg YW5kIHRoaW5rIHRoYXQgJHBjIGlzIG9uIHRoZSBzaGFkb3cgc3RhY2suDQoNCldoYXQgZG8geW91 IHRoaW5rPw0KDQo+ID4+IDIuIFRoZSBsaW5lIG51bWJlcnMgY29ycmVzcG9uZGluZyB0byB0aGUg cmV0dXJuIGFkZHJlc3NlcyBkb24ndCBtYXRjaA0KPiA+PiBiZXR3ZWVuIHRoZSByZWd1bGFyIGJh Y2t0cmFjZSBhbmQgdGhlIHNoYWRvdyBiYWNrdHJhY2UsIGV2ZW4gdGhvdWdoDQo+ID4+IHRoZSBy ZXR1cm4gYWRkcmVzc2VzIGFyZSB0aGUgc2FtZS4gSSB3b3VsZCBzYXkgdGhpcyBpcyBhIGJ1Zy4g UGVyaGFwcw0KPiA+PiB0aGVyZSBjYW4gYmUgYSB0ZXN0IG1ha2luZyBzdXJlIHRoZXkgbWF0Y2gs IGlmIGl0J3Mgbm90IHRvbyBjb21wbGljYXRlZD8NCj4gPg0KPiA+IFRoZSByZWFzb24gZm9yIHRo YXQgaXMgZXhwbGFpbmVkIGluIGEgY29tbWVudCBpbg0KPiBkb19wcmludF9zaGFkb3dfc3RhY2tf ZnJhbWVfaW5mbzoNCj4gPg0KPiA+ICAgLyogSW4gY29udHJhc3QgdG8gZmluZF9mcmFtZV9zYWwg d2hpY2ggaXMgdXNlZCBmb3IgdGhlIG9yZGluYXJ5IGJhY2t0cmFjZQ0KPiA+ICAgICAgY29tbWFu ZCwgd2UgYWx3YXlzIHdhbnQgdG8gcHJpbnQgdGhlIGxpbmUgdGhhdCBpcyBhY3R1YWxseSByZWZl cnJlZA0KPiA+ICAgICAgdG8gYnkgdGhlIGFkZHJlc3MgaW4gdGhlIGxpbmV0YWJsZS4gIFRoYXQn cyB3aHkgd2UgYWx3YXlzIHBhc3MgMCBoZXJlDQo+ID4gICAgICBhcyBzZWNvbmQgYXJndW1lbnQu ICAqLw0KPg0KPiBJIGRvbid0IHVuZGVyc3RhbmQgd2h5IHdlIHdhbnQgdG8gYWx3YXlzIHByaW50 IHRoZSBsaW5lIHRoYXQgaXMgYWN0dWFsbHkNCj4gcmVmZXJyZWQgdG8gYnkgdGhlIGFkZHJlc3Mg aW4gdGhlIGxpbmV0YWJsZS4gZmluZF9mcmFtZV9zYWwgaGFzIHRoaXMNCj4gY29tbWVudDoNCj4g DQo+ICAgLyogSWYgRlJBTUUgaXMgbm90IHRoZSBpbm5lcm1vc3QgZnJhbWUsIHRoYXQgbm9ybWFs bHkgbWVhbnMgdGhhdA0KPiAgICAgIEZSQU1FLT5wYyBwb2ludHMgYXQgdGhlIHJldHVybiBpbnN0 cnVjdGlvbiAod2hpY2ggaXMgKmFmdGVyKiB0aGUNCj4gICAgICBjYWxsIGluc3RydWN0aW9uKSwg YW5kIHdlIHdhbnQgdG8gZ2V0IHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlDQo+ICAgICAgY2FsbCAo YmVjYXVzZSB0aGUgY2FsbCBpcyB3aGVyZSB0aGUgdXNlciB0aGlua3MgdGhlIHByb2dyYW0gaXMp Lg0KPiANCj4gRG9lc24ndCB0aGF0IGFsc28gYXBwbHkgdG8gdGhlIGFkZHJlc3NlcyBpbiB0aGUg c2hhZG93IHN0YWNrPw0KDQpDdXJyZW50bHkgaW4gdjEgb2YgdGhpcyBzZXJpZXMsIEkgcHJpbnQg dGhlIGxpbmUgY29udGFpbmluZyB0aGUgcmV0dXJuIGFkZHJlc3MNCndoaWNoIHJlc3VsdHMgaW4g dGhlIGJlaGF2aW91ciB5b3UgZGVzY3JpYmUgaW4gcG9pbnQgMiBhYm92ZTogIlRoZSBsaW5lDQpu dW1iZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJldHVybiBhZGRyZXNzZXMgZG9uJ3QgbWF0Y2gg YmV0d2VlbiB0aGUNCnJlZ3VsYXIgYmFja3RyYWNlIGFuZCB0aGUgc2hhZG93IGJhY2t0cmFjZSwg Li4uIi4gIElmIHRoZSB1c2VyIHJ1bnMNCiJidCAtc2hhZG93IiwgSSdkIGV4cGVjdCB0aGF0IGhl IGlzIGZhbWlsaWFyIHdpdGggdGhlIGNvbmNlcHQgb2Ygc2hhZG93IHN0YWNrcw0KYW5kIEkgdGhv dWdodCBpdCB3b3VsZCBjb25mdXNlIGhpbSBtb3JlIGlmIHdlIHNob3cgYSBsaW5lIHdoaWNoIGlz IG5vdCBhDQpyZXR1cm4gYWRkcmVzcy4gIEJ1dCBvbiB0aGUgb3RoZXIgaGFuZCwgd2Ugd2FudCB0 byBhbGlnbiB3aXRoIHRoZSBub3JtYWwNCmJhY2t0cmFjZSBhbmQgcHJpbnQgdGhlIGxpbmUgY29u dGFpbmluZyB0aGUgY2FsbC4uLg0KDQo+ID4gRG8geW91IHRoaW5rIHdlIHNob3VsZCBhbGlnbiB0 aGlzIHdpdGggdGhlIGJlaGF2aW9yIG9mIHRoZSBvcmRpbmFyeQ0KPiA+IGJhY2t0cmFjZSBjb21t YW5kIGhlcmUgYXMgd2VsbD8NCj4gDQo+IEkgdGhpbmsgc28sIGJ1dCBtYXliZSB0aGVyZSdzIHNv bWV0aGluZyBJJ20gbm90IGNvbnNpZGVyaW5nLg0KDQouLi5idXQgc2luY2UgdGhlIG92ZXJhbGwg ZGlyZWN0aW9uIGlzIHRvIGFsaWduIG1vcmUgd2l0aCB0aGUgbm9ybWFsIGJhY2t0cmFjZSwNCkkg YWdyZWUgd2l0aCB5b3UgaGVyZS4g8J+Yig0KSW4gY2FzZSB0aGUgbm9ybWFsIGJhY2t0cmFjZSBp cyBicm9rZW4gZHVlIGZvciBpbnN0YW5jZSBhIHByb2dyYW1taW5nIGVycm9yDQpzdWNoIGFzIGEg YnVmZmVyIG92ZXJmbG93IHRoZSB1c2VyIGNhbiB1c2UgImJ0IC1zaGFkb3ciIGFzIGFsdGVybmF0 aXZlLiAgSW4gdGhhdCBjYXNlLCANCmltcGxlbWVudGluZyBmcmFtZSBhcmd1bWVudHMgd291bGQg cHJvYmFibHkgYmUgaGVscGZ1bCwgdG9vLiBCdXQgaWYgd2UgZG8gdGhpcw0KYWZ0ZXJ3YXJkcywg d2UnbGwgY2hhbmdlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mICJidCAtc2hhZG93Ii4gT24gdGhl IG90aGVyIGhhbmQsDQp0aGlzIHNlcmllcyBpcyBhbHJlYWR5IGJpZyBlbm91Z2guLi4NCkFuZCwg aWYgd2UgZ28gdGhhdCBkaXJlY3Rpb24sIEkgd29uZGVyIGlmIHdlIHNob3VsZG4ndCBzb21laG93 IGNvbnN0cnVjdCBmcmFtZSAjMA0KZm9yIHRoZSBzaGFkb3cgc3RhY2suIEJ1dCBhcyBkZXNjcmli ZWQgYWJvdmUsIEkndmUgYWxzbyBzb21lIGNvbmNlcm5zIGZvciB0aGF0Lg0KDQpXaGF0IGRvIHlv dSB0aGluaz8NCiANCj4gPiBJ4oCZbSBub3QgZW50aXJlbHkgc3VyZSBpZiB0aGF0IGFwcHJvYWNo IG1pZ2h0IGJlIHRvbyBzdHJhaWdodGZvcndhcmQsDQo+ID4gc2luY2Ugd2UgY2Fu4oCZdCBzaW1w bHkgY2FsbCB0aGUgZ2V0X2ZyYW1lX2FkZHJlc3NfaW5fYmxvY2sgZnVuY3Rpb24gYXMNCj4gPiB0 aGUgb3JkaW5hcnkgYnQgY29tbWFuZCBkb2VzIHdoZW4gaW52b2tpbmcgaXQgZnJvbSBmaW5kX2Zy YW1lX3NhbC4NCj4gDQo+IEZyb20gd2hhdCBJIHVuZGVyc3RhbmQgb2YgdGhlIGJpZyBjb21tZW50 IGluIGdldF9mcmFtZV9hZGRyZXNzX2luX2Jsb2NrLA0KPiB3ZSBjYW4gY3JlYXRlIGFuIGVxdWl2 YWxlbnQgZnVuY3Rpb24gZm9yIHNoYWRvdyBzdGFjayBmcmFtZXM6IGl0IHNob3VsZA0KPiByZXR1 cm4gYW4gYWRqdXN0ZWQgUEMgZm9yIGZyYW1lcyBjb3JyZXNwb25kaW5nIHRvIG5vcm1hbCBmdW5j dGlvbiBjYWxscywNCj4gd2hpY2ggYXJlIGFsbCBleGNlcHQ6DQo+IA0KPiAxLiBzZW50aW5lbCBm cmFtZQ0KPiAyLiBzaWduYWwgZnJhbWUNCj4gMy4gZHVtbXkgZnJhbWUNCj4gDQo+IFRoZXNlIGFy ZSBlYXN5IHRvIHJlY29nbmlzZSAob3IgaW4gdGhlIGNhc2Ugb2YgMywgY2FuIGJlIG1hZGUgZWFz eSB0bw0KPiByZWNvZ25pc2UpIGluIHRoZSBzaGFkb3cgc3RhY2s6DQo+IA0KPiAxLiBTaW5jZSB0 aGUgc2hhZG93IHN0YWNrIGRvZXNuJ3QgaGF2ZSBmcmFtZSAjMCwgdGhpc19mcmFtZSBpcyBuZXZl ciB0aGUNCj4gc2VudGluZWwgb25lLiBBbmQgbmV4dF9mcmFtZSB3aWxsIGJlIHRoZSAic2VudGlu ZWwiIGlmIHRoaXNfZnJhbWUgaXMgdGhlIGZpcnN0DQo+IG9uZSBpbiB0aGUgc2hhZG93IHN0YWNr Lg0KPiAyLiBUaGUgTGludXgga2VybmVsIG9uIGJvdGggQUFyY2g2NCBhbmQgSW50ZWwgcHV0cyBh IG1hcmtlciBpbiB0aGUgc2hhZG93DQo+IHN0YWNrIHdoZW4gYSBzaWduYWwgaXMgaGFuZGxlZCwg c28gd2UgY2FuIGxvb2sgZm9yIGl0IGluIHRoZSBzaGFkb3cgc3RhY2sgdG8NCj4gcmVjb2duaXpl IHRoZSBzaWduYWwgZnJhbWUuDQoNClllcywgdGhpcyBpcyB3aGF0IHdlIGFscmVhZHkgZGlzY3Vz c2VkIGhlcmUgSUlSQzoNCmh0dHBzOi8vc291cmNld2FyZS5vcmcvcGlwZXJtYWlsL2dkYi1wYXRj aGVzLzIwMjUtTm92ZW1iZXIvMjIyNTg4Lmh0bWwNCg0KSSBjaGFuZ2VkIHRoZSBnZGJhcmNoIGhv b2sgaXNfbm9fcmV0dXJuX2FkZHJlc3MgdG8gYWRkaXRpb25hbGx5IHRha2UgYSBzdHJpbmcsIA0K d2hpY2ggaXMgY29uZmlndXJlZCB0byAgPHNpZ2ZyYW1lIHRva2VuPiBpbiBjYXNlIG9mIHNpZ25h bHMgZm9yIHRoZSBhbWQ2NA0KaW1wbGVtZW50YXRpb24uDQoNCkluIHRoZSBvdGhlciB0aHJlYWQg eW91IHN0YXRlZCBhbHNvOiANCiJJbiB0aGlzIGV4YW1wbGUgIjxzaWduYWwgaGFuZGxlciBjYWxs ZWQ+IiBtZXNzYWdlIHdvdWxkIHJlcGxhY2UgdGhlIFZEU08NCmZ1bmN0aW9uIG5hbWUgaW4gZW50 cnkgIzAuIEFsc28gbm90ZSB0aGF0IGl0J3MgYW4gYWN0dWFsIHJldHVybiBhZGRyZXNzDQpidXQg d2Ugc3RpbGwgd2FudCB0byBzaG93IGEgY3VzdG9tIG1lc3NhZ2UgZm9yIGl0LiINCg0KSSBhbSBu b3Qgc3VyZSB5ZXQgZm9yIHg4NiBob3cgdG8gZGV0ZWN0IHRoZSBzaGFkb3cgc3RhY2sgZWxlbWVu dCBmb3Igd2hpY2ggeW91DQp3YW50IHRvIGRpc3BsYXkgPHNpZ25hbCBoYW5kbGVyIGNhbGxlZD4s IHNpbmNlIHRoaXMgaXMgYSBub3JtYWwgcmV0dXJuIGFkZHJlc3MuDQpIb3cgZG8geW91IHBsYW4g dG8gZGV0ZWN0IHRoaXMgZm9yIEdDUyA/DQoNCj4gMy4gV2UgY2FuIGNoYW5nZSBHREIgdG8gYWxz byBwdXQgYSBtYXJrZXIgaW4gdGhlIHNoYWRvdyBzdGFjayB3aGVuIGl0IGRvZXMNCj4gYW4gaW5m ZXJpb3IgZnVuY3Rpb24gY2FsbCwgYW5kIGxvb2sgZm9yIGl0IGluIHRoZSBzaGFkb3cgc3RhY2su DQoNCldlIGNhbGwgc2hhZG93X3N0YWNrX3B1c2ggaW4gZ2VuZXJpYyBHREIgY29kZS4gRG8geW91 IHRoaW5rIHdlIGNvdWxkIGZpbmQgYW4NCmFyY2hpdGVjdHVyZSBpbmRlcGVuZGVudCBtYXJrZXIg Pw0KVGhlbiB3ZSBjYW4gYWxzbyByZXR1cm4gdHJ1ZSB3aXRoIHRoZSBnZGJhcmNoIGhvb2sgaXNf bm9fcmV0dXJuX2FkZHJlc3MgYW5kDQpzZXQgdGhlICBzdHJpbmcgdG8gPGZ1bmN0aW9uIGNhbGxl ZCBmcm9tIGdkYj4uDQoNCkkgYW0ganVzdCBub3Qgc3VyZSBpZiB0aGUgbGludXgga2VybmVsIGV2 ZXIgZGVjaWRlcyB0byBleHRlbmQgaXRzIGZ1bmN0aW9uYWxpdHkgZm9yDQpDRVQgc2hhZG93IHN0 YWNrIGFuZCB1c2VzIHRoZSBiaXRzIHRoYXQgd2UgdXNlIGZvciBvdXIgbWFya2VyLg0KSW4gdGhl b3J5IHRoZSBsaW51eCBrZXJuZWwgY291bGQgZGVjaWRlIHRvIHN1cHBvcnQgMzJiaXQgc2hhZG93 IHN0YWNrICBmb3IgeDg2DQpvbmUgZGF5LCBvciBzdXBlcnZpc29yIHNoYWRvdyBzdGFja3Mg4oCT IGFuZCBJIGFtIG5vdCBzdXJlIHdoYXQgYml0cyB0aGUga2VybmVsDQptaWdodCBzZXQgaW4gdGhl IHNoYWRvdyBzdGFjayBlbGVtZW50cyB0byBzdXBwb3J0IHRoaXMuDQpJIHdvbmRlciBpZiB3ZSBz aG91bGQgZGlzY3VzcyB0aGlzIGluIHRoZSBsaW51eCBrZXJuZWwgbWFpbGluZyBsaXN0cy4NCg0K QnV0IGlmIHdlIGRldGVjdCBkdW1teSBhbmQgc2lnbmFsIGZyYW1lcyB3aXRoIHRoZSBnZGJhcmNo IGhvb2sgaXNfbm9fcmV0dXJuX2FkZHJlc3MsDQp3ZSBzaG91bGQgb25seSBjYWxsIGZpbmRfc2Fs X2Zvcl9wYyBmb3Igbm9ybWFsIHJldHVybiBhZGRyZXNzZXMgb24gdGhlIHNoYWRvdyBzdGFjay4g DQoNClNvIEkgdGhpbmsgaXQgc2hvdWxkIGJlIHNhZmUgdG8gc2ltcGx5IGNhbGwgZmluZF9zYWxf Zm9yX3BjIGFzIGZvbGxvd3M6DQogIHN5bXRhYl9hbmRfbGluZSBzYWwgPSBmaW5kX3NhbF9mb3Jf cGMgKGZyYW1lLnZhbHVlLCAxKTsNCg0KT3IgYW0gSSBtaXNzaW5nIHNvbWV0aGluZyA/DQoNCj4g Pj4gPiArLyogUmV0dXJuIHRydWUsIGlmIFBDIGlzIGluIHRoZSBtaWRkbGUgb2YgYSBzdGF0ZW1l bnQuICBOb3RlIHRoYXQgaW4gdGhlDQo+ID4+ID4gKyAgIG1pZGRsZSBvZiBhIHN0YXRlbWVudCBQ QyByYW5nZSBpbmNsdWRlcyBzYWwuZW5kIChTQUwuUEMsIFNBTC5FTkRdLg0KPiA+PiA+ICsgICBS ZXR1cm4gZmFsc2UsIGlmDQo+ID4+ID4gKyAgIC0gU0FMLklTX1NUTVQgaXMgZmFsc2UNCj4gPj4g PiArICAgLSB0aGVyZSBpcyBubyBsb2NhdGlvbiBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGgg dGhpcyBTQUwsIHdoaWNoDQo+ID4+ID4gKyAgIGNvdWxkIGhhcHBlbiBpbiBjYXNlIG9mIGlubGlu ZWQgZnVuY3Rpb25zDQo+ID4+ID4gKyAgIC0gUEMgaXMgbm90IGluIHRoZSByYW5nZSAoU0FMLlBD LCBTQUwuRU5EXS4NCj4gPj4gPiArICAgVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIHN0YWNr LmM6ZnJhbWVfc2hvd19hZGRyZXNzIGJ1dCBpcyB1c2VkDQo+ID4+ID4gKyAgIHRvIGRldGVybWlu ZSBpZiB3ZSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIHN0YXRlbWVudCBvbmx5LCBub3QgdG8NCj4g ZGVjaWRlDQo+ID4+ID4gKyAgIGlmIHdlIHNob3VsZCBwcmludCBhIGZyYW1lJ3MgYWRkcmVzcy4g ICovDQo+ID4+ID4gKw0KPiA+PiA+ICtzdGF0aWMgYm9vbA0KPiA+PiA+ICtwY19pbl9taWRkbGVf b2Zfc3RhdGVtZW50IChDT1JFX0FERFIgcGMsIHN5bXRhYl9hbmRfbGluZSBzYWwpIHsNCj4gPj4g PiArICBpZiAoc2FsLmlzX3N0bXQgPT0gZmFsc2UpDQo+ID4+ID4gKyAgICByZXR1cm4gZmFsc2U7 DQo+ID4+ID4gKw0KPiA+PiA+ICsgIC8qIElmIHRoZXJlIGlzIGEgbGluZSBudW1iZXIsIGJ1dCBu byBQQywgdGhlbiB0aGVyZSBpcyBubyBsb2NhdGlvbg0KPiA+PiA+ICsgICAgIGluZm9ybWF0aW9u IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNhbC4gIFRoZSBvbmx5IHdheSB0aGF0IHNob3VsZA0KPiA+ PiA+ICsgICAgIGhhcHBlbiBpcyBmb3IgdGhlIGNhbGwgc2l0ZXMgb2YgaW5saW5lZCBmdW5jdGlv bnMgKFNBTCBjb21lcyBmcm9tDQo+ID4+ID4gKyAgICAgZmluZF9mcmFtZV9zYWwpLiAgT3RoZXJ3 aXNlLCB3ZSB3b3VsZCBoYXZlIHNvbWUgUEMgcmFuZ2UgaWYNCj4gPj4gPiArIHRoZQ0KPiA+Pg0K PiA+PiBJbiB0aGUgY2FzZSBvZiBzdGFjay5jOmZyYW1lX3Nob3dfYWRkcmVzcywgU0FMIGNvbWVz IGZyb20NCj4gPj4gZmluZF9mcmFtZV9zYWwsIGJ1dCBpbiB0aGlzIGNhc2UgaXQgY29tZXMgZnJv bSBmaW5kX3BjX2xpbmUsIHJpZ2h0Pw0KPiA+DQo+ID4gWWVzLCBpdCBjb21lcyBmcm9tIGZpbmRf c2FsX2Zvcl9wYyAod2hlbiByZWJhc2VkIG9uIGxhdGVzdCBtYXN0ZXIsDQo+IGZpbmRfcGNfbGlu ZSB3YXMgcmVuYW1lZCkuDQo+ID4NCj4gPj4gRG9lcyB0aGUgY29tbWVudCBzdGlsbCBhcHBseSBp biB0aGlzIGNhc2U/DQo+ID4NCj4gPiBHb29kIHF1ZXN0aW9uLCBJIHJlbWVtYmVyIEkgc3R1bWJs ZWQgb3ZlciB0aGlzIGEgY291cGxlIG9mIHRpbWVzIHdoZW4NCj4gaW1wbGVtZW50aW5nIHRoaXMu DQo+ID4gSW4gYW55IGNhc2UsIHRoZSBjb21tZW50IG5lZWRzIHRvIGJlIGNvcnJlY3RlZCB0byAi KFNBTCBjb21lcyBmcm9tDQo+IGZpbmRfc2FsX2Zvcl9wYykuIg0KPiA+IElmIHdlIG5lZWQgdGhp cyBjaGVjaywgSSBhbSBub3Qgc3VyZS4gSW4gbXkgZXhwZXJpbWVudHMgd2l0aCBpbmxpbmVkDQo+ ID4gZnVuY3Rpb25zIEkgY291bGQgbm90IHJlcHJvZHVjZSB0aGF0IHNjZW5hcmlvLiBCdXQgSSBr ZXB0IGl0LCB0byBiZSBzYWZlLg0KPiANCj4gRnJvbSBteSByZWFkaW5nIG9mIGZpbmRfcGNfbGlu ZSAvIGZpbmRfc2FsX2Zvcl9wYywgaXQgZG9lc24ndCByZXR1cm4gYSBzYWwgd2l0aA0KPiBsaW5l IG51bWJlciBidXQgbm8gUEMuIEJ1dCBJJ20gbm90IHZlcnkgZmFtaWxpYXIgd2l0aCB0aGlzIHBh cnQgb2YgdGhlIGNvZGUuDQo+IEJ1dCBJIGRvbid0IG1pbmQga2VlcGluZyB0aGlzIGNoZWNrICh3 aXRoIGFuIGFkanVzdGVkIGNvbW1lbnQsIGFzIHlvdQ0KPiBtZW50aW9uKS4NCg0KT2suDQoNCj4g Pj4gPiArICAgICBTQUwgY2FtZSBmcm9tIGEgbGluZSB0YWJsZS4gIEhvd2V2ZXIsIGFzIHdlIGRv bid0IGhhdmUgYSBmcmFtZSBmb3INCj4gPj4gPiArICAgICB0aGlzIGZ1bmN0aW9uIHdlIGNhbm5v dCBhc3NlcnQgKGluIGNvbnRyYXN0IHRvDQo+ID4+ID4gKyAgICAgZnJhbWVfc2hvd19hZGRyZXNz KS4gICovDQo+ID4+ID4gKyAgaWYgKHNhbC5saW5lICE9IDAgJiYgc2FsLnBjID09IDAgJiYgc2Fs LmVuZCA9PSAwKQ0KPiA+PiA+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiA+PiA+ICsNCj4gPj4gPiAr ICByZXR1cm4gcGMgPiBzYWwucGMgJiYgcGMgPD0gc2FsLmVuZDsgfQ0KPiANCj4gPHNuaXA+DQo+ IA0KPiA+PiA+ICsvKiBFeHRyYWN0IGEgY2hhciBhcnJheSB3aGljaCBjYW4gYmUgdXNlZCBmb3Ig cHJpbnRpbmcgYSByZWFzb25hYmxlDQo+ID4+ID4gKyAgIGVycm9yIG1lc3NhZ2UgZm9yIFJFQVNP Ti4gIE5vdGUgdGhhdCBpbiBjYXNlIFJFQVNPTiBoYXMgdGhlIHZhbHVlDQo+ID4+ID4gKyAgIE5P X0VSUk9SIHRoZSByZXR1cm5lZCBhcnJheSBpcyBlbXB0eS4gICovDQo+ID4+ID4gKw0KPiA+PiA+ ICtzdGF0aWMgY29uc3QgY2hhciAqDQo+ID4+ID4gK3NzcF91bndpbmRfc3RvcF9yZWFzb25fdG9f ZXJyX3N0cmluZyAoc3NwX3Vud2luZF9zdG9wX3JlYXNvbg0KPiA+PiA+ICtyZWFzb24pIHsNCj4g Pj4gPiArICBzd2l0Y2ggKHJlYXNvbikNCj4gPj4gPiArICAgIHsNCj4gPj4gPiArICAgIGNhc2Ug c3NwX3Vud2luZF9zdG9wX3JlYXNvbjo6bm9fZXJyb3I6DQo+ID4+ID4gKyAgICAgIHJldHVybiBf KCIiKTsNCj4gPj4NCj4gPj4gVGhlIGVtcHR5IHN0cmluZyBkb2Vzbid0IG5lZWQgdG8gYmUgdHJh bnNsYXRlZA0KPiA+DQo+ID4gVHJ1ZS4NCj4gPg0KPiA+PiBBbGwgY2FsbGVycyBtYWtlIHN1cmUg dGhhdCByZWFzb24gaXNuJ3Qgbm9fZXJyb3IsIHNvIHBlcmhhcHMganVzdCByZW1vdmUNCj4gdGhp cyBjYXNlPw0KPiA+DQo+ID4gSSBhbSBub3Qgc3VyZSwgaWYgSSBjYW4gZm9sbG93IGNvbXBsZXRl bHkuIFlvdSBtZWFuIEkgc2hvdWxkIHJlbW92ZSB0aGUgY2FzZQ0KPiBhbmQgcmVwbGFjZQ0KPiA+ ICAgZ2RiX2Fzc2VydF9ub3RfcmVhY2hlZCAoImludmFsaWQgcmVhc29uIik7IHdpdGggcmV0dXJu ICIiID8NCj4gDQo+IEkgbWVhbiBqdXN0IHJlbW92ZSB0aGlzIGNhc2UgZnJvbSB0aGUgc3dpdGNo LiBUaGVuIHRoaXMgZnVuY3Rpb24gd2lsbCBhc3NlcnQNCj4gd2hlbmV2ZXIgcmVhc29uICE9IHNz cF91bndpbmRfc3RvcF9yZWFzb246Om1lbW9yeV9yZWFkX2Vycm9yLg0KDQpPaywgbm93IHRoZSBm dW5jdGlvbiBsb29rcyBhcyBmb2xsb3dzOg0KDQpzdGF0aWMgY29uc3QgY2hhciAqDQpzc3BfdW53 aW5kX3N0b3BfcmVhc29uX3RvX2Vycl9zdHJpbmcgKHNzcF91bndpbmRfc3RvcF9yZWFzb24gcmVh c29uKQ0Kew0KICBzd2l0Y2ggKHJlYXNvbikNCiAgICB7DQogICAgY2FzZSBzc3BfdW53aW5kX3N0 b3BfcmVhc29uOjptZW1vcnlfcmVhZF9lcnJvcjoNCiAgICAgIHJldHVybiBfKCJzaGFkb3cgc3Rh Y2sgbWVtb3J5IHJlYWQgZmFpbHVyZSIpOw0KICAgIH0NCg0KICBnZGJfYXNzZXJ0X25vdF9yZWFj aGVkICgiaW52YWxpZCB1bndpbmQgc3RvcCByZWFzb24uIik7DQp9DQoNCj4gPj4gPiArICAgIGNh c2Ugc3NwX3Vud2luZF9zdG9wX3JlYXNvbjo6bWVtb3J5X3JlYWRfZXJyb3I6DQo+ID4+ID4gKyAg ICAgIHJldHVybiBfKCJzaGFkb3cgc3RhY2sgbWVtb3J5IHJlYWQgZmFpbHVyZSIpOw0KPiA+PiA+ ICsgICAgfQ0KPiA+PiA+ICsNCj4gPj4gPiArICBnZGJfYXNzZXJ0X25vdF9yZWFjaGVkICgiaW52 YWxpZCByZWFzb24iKTsgfQ0KPiANCj4gPHNuaXA+DQo+IA0KPiA+PiA+ICsvKiAgSWYgcG9zc2li bGUsIHJldHVybiBhIHNoYWRvdyBzdGFjayBmcmFtZSBpbmZvIHdoaWNoIGlzIENPVU5UDQo+IGVs ZW1lbnRzDQo+ID4+ID4gKyAgICBhYm92ZSB0aGUgYm90dG9tIG9mIHRoZSBzaGFkb3cgc3RhY2su ICBGUkFNRSBzaG91bGQgcG9pbnQgdG8gdGhlDQo+IHRvcA0KPiA+PiA+ICsgICAgb2YgdGhlIHNo YWRvdyBzdGFjay4gIFJBTkdFIGlzIHRoZSBzaGFkb3cgc3RhY2sgbWVtb3J5IHJhbmdlDQo+ID4+ ID4gKyAgICBbc3RhcnRfYWRkcmVzcywgZW5kX2FkZHJlc3MpIGNvcnJlc3BvbmRpbmcgdG8gRlJB TUUncyBzaGFkb3cNCj4gc3RhY2sNCj4gPj4gPiArICAgIHBvaW50ZXIuICBJZiBDT1VOVCBpcyBi aWdnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIG9uIHRoZQ0KPiBzaGFkb3cNCj4gPj4g PiArICAgIHN0YWNrLCByZXR1cm4gRlJBTUUuDQo+ID4+DQo+ID4+IEhlcmUgaXMgYW5vdGhlciBw bGFjZSB3aGVyZSBJIGZpbmQgImFib3ZlL2JvdHRvbS90b3AiIGNvbmZ1c2luZywNCj4gPj4gc2lu Y2Ugc3RhY2tzIGNhbiBncm93IHVwIG9yIGdyb3cgZG93biAoYXMgcG9pbnRlZCBvdXQgaW4gdGhl IG5leHQNCj4gPj4gY29tbWVudCBpbiB0aGlzIGZ1bmN0aW9uKSwgYW5kIHRoZXNlIHRlcm1zIG1l YW4gZGlmZmVyZW50IHRoaW5ncyBpbiBlYWNoDQo+IGNhc2UuDQo+ID4NCj4gPiBZZXMsIHRoZSBj b21tZW50IGlzIG5vdw0KPiA+ICIuLi5hYm92ZSB0aGUgb3V0ZXJtb3N0IChvbGRlc3QpIGVsZW1l bnQgb2YgdGhlIHNoYWRvdyBzdGFjay4iDQo+ID4NCj4gPiBJIGhvcGUgdGhpcyBpcyBtb3JlIHN0 cmFpZ2h0LWZvcndhcmQuDQo+IA0KPiBUaGVyZSdzIHN0aWxsICJhYm92ZSIgYW5kICJ0b3AiLiBB IHN1Z2dlc3Rpb246DQo+IA0KPiAiSWYgcG9zc2libGUsIHJldHVybiBhIHNoYWRvdyBzdGFjayBm cmFtZSBpbmZvIHdoaWNoIGlzIENPVU5UIGVsZW1lbnRzDQo+IG5ld2VyIHRoYW4gdGhlIG91dGVy bW9zdCAob2xkZXN0KSBlbGVtZW50IG9mIHRoZSBzaGFkb3cgc3RhY2suICBGUkFNRQ0KPiBzaG91 bGQgcG9pbnQgdG8gdGhlIG5ld2VzdCBlbGVtZW50IG9mIHRoZSBzaGFkb3cgc3RhY2suLi4iDQoN CkkgbWlzc2VkIHRvIGFsc28gdXBkYXRlIHlvdSBvbiB0aGUgZm9sbG93aW5nIHNlbnRlbmNlcyA6 LyBJJ2xsIGNoYW5nZSB0aGlzIGNvbW1lbnQNCmFueXdheXMgYWdhaW4gZHVlIHRvIHRoZSBkaXNj dXNzaW9uIGJlbG93LiANCg0KPiANCj4gPj4gPiArICAgIEluIGNhc2Ugb2YgZmFpbHVyZSwgYXNz aWduIGFuIGFwcHJvcHJpYXRlIHNzcF91bndpbmRfc3RvcF9yZWFzb24gaW4NCj4gPj4gPiArICAg IEZSQU1FLT5VTldJTkRfU1RPUF9SRUFTT04uICAqLw0KPiA+PiA+ICsNCj4gPj4gPiArc3RhdGlj IHN0ZDo6b3B0aW9uYWw8c2hhZG93X3N0YWNrX2ZyYW1lX2luZm8+DQo+ID4+ID4gK2dldF90cmFp bGluZ19vdXRlcm1vc3Rfc2hhZG93X3N0YWNrX2ZyYW1lX2luZm8NCj4gPj4gPiArICAoZ2RiYXJj aCAqZ2RiYXJjaCwgY29uc3Qgc3RkOjpwYWlyPENPUkVfQUREUiwgQ09SRV9BRERSPiByYW5nZSwN Cj4gPj4gPiArICAgY29uc3QgVUxPTkdFU1QgY291bnQsIHNoYWRvd19zdGFja19mcmFtZV9pbmZv ICZmcmFtZSkgew0KPiA+PiA+ICsgIC8qIENvbXB1dGUgdGhlIG51bWJlciBvZiBieXRlcyBvbiB0 aGUgc2hhZG93IHN0YWNrLCBzdGFydGluZyBhdA0KPiA+PiA+ICsgICAgIEZSQU1FLT5TU1AsIHdo aWNoIGRlcGVuZHMgb24gdGhlIGRpcmVjdGlvbiB0aGUgc2hhZG93IHN0YWNrDQo+ID4+ID4gKyAg ICAgZ3Jvd3MuICAqLw0KPiA+PiA+ICsgIGNvbnN0IGludCBlbGVtZW50X3NpemUNCj4gPj4gPiAr ICAgID0gZ2RiYXJjaF9zaGFkb3dfc3RhY2tfZWxlbWVudF9zaXplX2FsaWduZWQgKGdkYmFyY2gp Ow0KPiA+PiA+ICsgIGNvbnN0IHVuc2lnbmVkIGxvbmcgc2hhZG93X3N0YWNrX2J5dGVzDQo+ID4+ ID4gKyAgICA9IChnZGJhcmNoX3N0YWNrX2dyb3dzX2Rvd24gKGdkYmFyY2gpKQ0KPiA+Pg0KPiA+ PiBUaGUgcGFyZW50aGVzZXMgYXJvdW5kIHRoZSBmdW5jdGlvbiBjYWxsIGFyZSBzdXBlcmZsdW91 cy4NCj4gPg0KPiA+IEZpeGVkLg0KPiA+DQo+ID4+ID4gKyAgICAgICA/IHJhbmdlLnNlY29uZCAt IGZyYW1lLnNzcCA6IGZyYW1lLnNzcCAtIHJhbmdlLmZpcnN0ICsNCj4gPj4gPiArIGVsZW1lbnRf c2l6ZTsNCj4gPj4gPiArDQo+ID4+ID4gKyAgZ2RiX2Fzc2VydCAoKHNoYWRvd19zdGFja19ieXRl cyAlIGVsZW1lbnRfc2l6ZSkgPT0gMCk7ICBjb25zdA0KPiA+PiA+ICsgdW5zaWduZWQgbG9uZyBz aGFkb3dfc3RhY2tfc2l6ZQ0KPiA+PiA+ICsgICAgPSBzaGFkb3dfc3RhY2tfYnl0ZXMgLyBlbGVt ZW50X3NpemU7DQo+ID4+DQo+ID4+IFRoaXMgbGluZSBmaXRzIDgwIGNvbHVtbnMgYW5kIGRvZXNu J3QgbmVlZCB0byBiZSBicm9rZW4uDQo+ID4+DQo+ID4+ID4gKyAgY29uc3QgbG9uZyBsZXZlbCA9 IHNoYWRvd19zdGFja19zaXplIC0gY291bnQ7DQo+ID4+DQo+ID4+IEluIGEgY29tbWVudCBmdXJ0 aGVyIGJlbG93IHlvdSBtZW50aW9uIHRoYXQgbGV2ZWwgaXMgMC1iYXNlZCwgYnV0DQo+ID4+IGRv ZXNuJ3QgdGhpcyBleHByZXNzaW9uIG1lYW4gdGhhdCBpdCdzIDEtYmFzZWQ/IFBlcmhhcHMgaXQn cyBtaXNzaW5nDQo+ID4+IGENCj4gPj4gIi0gMSIgdGVybT8NCg0KQSBzaGFkb3cgc3RhY2sgd2l0 aCA1IGVsZW1lbnRzIChzaGFkb3dfc3RhY2tfc2l6ZSA9IDUpIGhhcyAjMC0jNCBmcmFtZXMuDQpX ZSBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gY2FzZSBjb3VudCBpcyBuZWdhdGl2ZSAoYnQgLXNoYWRv dyAtMikgd2l0aCBpdHMgYWJzb2x1dGUNCnZhbHVlIHNvIHRoZSBjYWxjdWxhdGlvbiBmb3IgbGV2 ZWwgaXMgNS0yID0gMy4NClRoaXMgaXMgdGhlIHJpZ2h0IGxldmVsIHRvIHN0YXJ0IHdpdGggZm9y IGEgc2hhZG93IHN0YWNrIGluY2x1ZGluZyBmcmFtZSAjMyBhbmQgIzQuDQoNCn5+fg0KKGdkYikg YnQgLXNoYWRvdw0KIzAgIDB4MDAwMDU1NTU1NTU1NTE0YSBpbiBjYWxsMSBhdCBhbWQ2NC1zaGFk b3ctc3RhY2suYzoyNw0KIzEgIDB4MDAwMDU1NTU1NTU1NTE1ZiBpbiBtYWluIGF0IGFtZDY0LXNo YWRvdy1zdGFjay5jOjM4DQojMiAgMHgwMDAwN2ZmZmY3YzJhMWNhIGluIF9fbGliY19zdGFydF9j YWxsX21haW4gYXQgLi4vc3lzZGVwcy9ucHRsL2xpYmNfc3RhcnRfY2FsbF9tYWluLmg6NTgNCiMz ICAweDAwMDA3ZmZmZjdjMmEyOGIgaW4gX19saWJjX3N0YXJ0X21haW5faW1wbCBhdCAuLi9jc3Uv bGliYy1zdGFydC5jOjM2MA0KIzQgIDB4MDAwMDU1NTU1NTU1NTA2NSBpbiBfc3RhcnQNCihnZGIp IGJ0IC1zaGFkb3cgLTINCiMzICAweDAwMDA3ZmZmZjdjMmEyOGIgaW4gX19saWJjX3N0YXJ0X21h aW5faW1wbCBhdCAuLi9jc3UvbGliYy1zdGFydC5jOjM2MA0KIzQgIDB4MDAwMDU1NTU1NTU1NTA2 NSBpbiBfc3RhcnQgCQ0Kfn5+DQoNCj4gPj4gQWxzbywgdGhpcyBkb2Vzbid0IHdvcmsgZm9yIEdD UyBiZWNhdXNlIGl0IGFzc3VtZXMgYWxsIGVsZW1lbnRzIGluDQo+ID4+IHRoZSBzdGFjayBhcmUg cmV0dXJuIGFkZHJlc3Nlcy4gSW4gR0NTLCB0aGUgb2xkZXN0IGVsZW1lbnQgaXMgYSAwDQo+ID4+ IGVudHJ5IFRoZSAwIGVudHJ5IGlzIHdoeSB0aGlzIHBhdGNoIHJlcXVpcmVzIEFBcmNoNjQgdG8g aW1wbGVtZW50IGl0cw0KPiA+PiBvd24gZ2RiYXJjaCB0b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3Rh Y2sgaG9vay4NCj4gPg0KPiA+IFRoZXJlIGlzIGNsZWFybHkgYW4gaXNzdWUgd2l0aCB0aGlzIGZ1 bmN0aW9uLiAgQnV0IEkgYW0gbm90IHN1cmUgaWYgSSBjYW4gZm9sbG93DQo+IGhlcmUuDQo+ID4g U2hvdWxkbid0IHRoZSBpc3N1ZSBiZSBmaXhlZCB3aGVuIHBhc3NpbmcgTEVWRUwgaW5zdGVhZCBv ZiBDT1VOVCwgYXMNCj4gcG9pbnRlZCBvdXQgYnkgeW91IGJlbG93Pw0KPiANCj4gUGFzc2luZyBs ZXZlbCBpbnN0ZWFkIG9mIGNvdW50IGlzIG5lY2Vzc2FyeSBidXQgbm90IHN1ZmZpY2llbnQuDQo+ IA0KPiBUaGUgZnVuY3Rpb24ncyBkb2N1bWVudGF0aW9uIGNvbW1lbnQgc2F5cyB0aGF0IGl0IHJl dHVybnMgImEgc2hhZG93IHN0YWNrDQo+IGZyYW1lIGluZm8gd2hpY2ggaXMgQ09VTlQgZWxlbWVu dHMgbmV3ZXIgdGhhbiB0aGUgb3V0ZXJtb3N0DQo+IChvbGRlc3QpIGVsZW1lbnQgb2YgdGhlIHNo YWRvdyBzdGFjayIuIE9uZSBleGFtcGxlOg0KPiANCj4gU3VwcG9zZSB0aGF0IHRoZSBzaGFkb3cg c3RhY2sgaGFzIDUgZWxlbWVudHMgYW5kIGNvdW50IGlzIDIuIFRoZW4gbGV2ZWwgYXMNCj4gY2Fs Y3VsYXRlZCBieSB5b3VyIHBhdGNoIGlzIDMgKDUgLSAyKS4gU28gZnJhbWUuc3NwIHdpbGwgYmUg YWRqdXN0ZWQgYnkNCj4gMyBlbGVtZW50cyBieSB0aGUgY2FsbCB0byB1cGRhdGVfc2hhZG93X3N0 YWNrX3BvaW50ZXIgZnVydGhlciBiZWxvdy4gVGhpcyBpcw0KPiB3cm9uZyB0aG91Z2gsIGJlY2F1 c2UgaXQgbWFrZXMgbmV3X3NzcCBwb2ludCB0byAxIGVsZW1lbnQgbmV3ZXIgdGhhbiB0aGUNCj4g b2xkZXN0IGVsZW1lbnQgb2YgdGhlIHNoYWRvdyBzdGFjay4NCj4gSWYgbGV2ZWwgaXMgY2FsY3Vs YXRlZCBpbnN0ZWFkIGFzIGxldmVsID0gc2hhZG93X3N0YWNrX3NpemUgLSBjb3VudCAtIDEgdGhl biBpbg0KPiB0aGlzIGV4YW1wbGUgaXQgd2lsbCBiZSAyIGFuZCBuZXdfc3NwIHdpbGwgcG9pbnQg dG8gMiBlbGVtZW50cyBuZXdlciB0aGFuIHRoZQ0KPiBvbGRlc3QgZWxlbWVudCBvZiB0aGUgc2hh ZG93IHN0YWNrLCB3aGljaCBtYXRjaGVzIHRoZSBkb2N1bWVudGF0aW9uDQo+IGNvbW1lbnQuDQoN CkFoLCBJIHRoaW5rIG5vdyBJIGdldCB5b3VyIHBvaW50LjopDQoNCldlIHByaW50IHRoZSBvdXRl cm1vc3QgMiBmcmFtZXMsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZG9jcw0KIldpdGggYSBuZWdhdGl2 ZSBDT1VOVCwgcHJpbnQgb3V0ZXJtb3N0IC1DT1VOVCBmcmFtZXMuIiBmb3IgImJ0IC1zaGFkb3cg LTIiLg0KDQpCdXQgdGhlIGNvbW1lbnQgb2YgdGhlIGZ1bmN0aW9uIGdldF90cmFpbGluZ19vdXRl cm1vc3Rfc2hhZG93X3N0YWNrX2ZyYW1lX2luZm8NCmRvZXMgbm90IG1hdGNoLiANCg0KIi4uLnJl dHVybiBhIHNoYWRvdyBzdGFjayBmcmFtZSBpbmZvIHdoaWNoIGlzIENPVU5UIGVsZW1lbnRzDQog ICAgYWJvdmUgdGhlIG91dGVybW9zdCAob2xkZXN0KSBlbGVtZW50IG9mIHRoZSBzaGFkb3cgc3Rh Y2suIg0KDQpCYXNlZCBvbiB0aGF0IGZvciAiYnQgLXNoYWRvdyAtMiIsDQp+fn4NCiMwICAweDAw MDA1NTU1NTU1NTUxNGEgaW4gY2FsbDEgYXQgYW1kNjQtc2hhZG93LXN0YWNrLmM6MjcNCiMxICAw eDAwMDA1NTU1NTU1NTUxNWYgaW4gbWFpbiBhdCBhbWQ2NC1zaGFkb3ctc3RhY2suYzozOA0KIzIg IDB4MDAwMDdmZmZmN2MyYTFjYSBpbiBfX2xpYmNfc3RhcnRfY2FsbF9tYWluIGF0IC4uL3N5c2Rl cHMvbnB0bC9saWJjX3N0YXJ0X2NhbGxfbWFpbi5oOjU4DQojMyAgMHgwMDAwN2ZmZmY3YzJhMjhi IGluIF9fbGliY19zdGFydF9tYWluX2ltcGwgYXQgLi4vY3N1L2xpYmMtc3RhcnQuYzozNjANCiM0 ICAweDAwMDA1NTU1NTU1NTUwNjUgaW4gX3N0YXJ0DQp+fn4NCndlIHdhbnQgdG8gcmV0dXJuIHRo ZSBmcmFtZSBiZWxvbmdpbmcgdG8gIzMsIHNvIHRoZSBmcmFtZSB3aGljaCBpcyBDT1VOVC0xIGVs ZW1lbnRzDQphYm92ZSB0aGUgb2xkZXN0IGVsZW1lbnQgb2YgdGhlIHNoYWRvdyBzdGFjay4NCg0K QnV0IHN0aWxsIHByZWZlciB0byBwYXNzIENPVU5UIGRpcmVjdGx5LCB3aXRob3V0IGFueSBmdXJ0 aGVyIGNhbGN1bGF0aW9ucyB0byB0aGlzIGZ1bmN0aW9uLCANCnNpbWlsYXIgYXMgaXQncyBkb25l IGZvciB0aGUgbm9ybWFsIGJhY2t0cmFjZSBpbiB0cmFpbGluZ19vdXRlcm1vc3RfZnJhbWUuICBU aGVyZSB0aGUNCmNvbW1lbnQgaXMgDQoNCi8qIFJldHVybiB0aGUgc3RhcnRpbmcgZnJhbWUgbmVl ZGVkIHRvIGhhbmRsZSBDT1VOVCBvdXRlcm1vc3QgZnJhbWVzLiAgKi8uDQoNCkkgZm91bmQgdGhp cyBjb21tZW50IGEgYml0IGNvbmZ1c2luZyBiYWNrIHRoZW4gd2hlbiBJIGltcGxlbWVudGVkIGl0 LCBidXQgbm93IGl0IG1ha2VzDQpwZXJmZWN0IHNlbnNlIHRvIG1lLiAgSSB0aGluayBJJ2xsIGNo YW5nZSBpdCBiYWNrIHRvIHRoYXQgb25lLCBkb2VzIHRoYXQgc291bmQgb2sgdG8geW91ID8NCk5v dyB0aGUgZnVsbCBjb21tZW50IGlzOg0KDQovKiAgSWYgcG9zc2libGUsIHJldHVybiB0aGUgc3Rh cnRpbmcgc2hhZG93IHN0YWNrIGZyYW1lIGluZm8gbmVlZGVkIHRvIGhhbmRsZQ0KICAgIENPVU5U IG91dGVybW9zdCBmcmFtZXMuICBGUkFNRSBzaG91bGQgcG9pbnQgdG8gdGhlIGlubmVybW9zdCAo bmV3ZXN0KQ0KICAgIGVsZW1lbnQgb2YgdGhlIHNoYWRvdyBzdGFjay4gIFJBTkdFIGlzIHRoZSBz aGFkb3cgc3RhY2sgbWVtb3J5IHJhbmdlDQogICAgW3N0YXJ0X2FkZHJlc3MsIGVuZF9hZGRyZXNz KSBjb3JyZXNwb25kaW5nIHRvIEZSQU1FJ3Mgc2hhZG93IHN0YWNrIHBvaW50ZXIuDQogICAgSWYg Q09VTlQgaXMgYmlnZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBvbiB0aGUgc2hhZG93 IHN0YWNrLCByZXR1cm4NCiAgICBGUkFNRS4gIEluIGNhc2Ugb2YgZmFpbHVyZSwgYXNzaWduIGFu IGFwcHJvcHJpYXRlIHNzcF91bndpbmRfc3RvcF9yZWFzb24gaW4NCiAgICBGUkFNRS0+VU5XSU5E X3N0b3BfUkVBU09OLiAgKi8NCg0KPiBCdXQgdGhhdCBzdGlsbCBkb2Vzbid0IHdvcmsgZm9yIEFB cmNoNjQsIGJlY2F1c2UgZXZlcnkgc2hhZG93IHN0YWNrIHRoZXJlIGhhcw0KPiBhbiBleHRyYSBl bGVtZW50IGF0IHRoZSBiZWdpbm5pbmcgd2hpY2ggYWxzbyBuZWVkcyB0byBiZSBkaXNjb3VudGVk LCBzbyBpbg0KPiB0aGlzIGNhc2UgaXQgc2hvdWxkIGJlOg0KPiANCj4gICBjb25zdCBsb25nIGxl dmVsID0gc2hhZG93X3N0YWNrX3NpemUgLSBjb3VudCAtIDI7DQo+IA0KPiBCdXQgdGhlbiBpdCdz IHdyb25nIGZvciBJbnRlbC4NCj4gDQo+ID4gQW5kIGlmIG5vdCwgZG8geW91IGhhdmUgYW4gaWRl YSBob3cgd2UgY2FuIGZpeCB0aGlzPw0KPiANCj4gSSBzdWdnZXN0IGFkZGluZyBhIGdkYmFyY2gg bWV0aG9kIHdoaWNoIGdpdmVuIFJBTkdFLCByZXR1cm5zIGhvdyBtYW55DQo+IGVudHJpZXMgdGhl cmUgYXJlIGluIHRoZSBzaGFkb3cgc3RhY2suIEFuZCB0byBjYWxjdWxhdGUgbGV2ZWwgYXM6DQo+ IA0KPiAgIGNvbnN0IGxvbmcgbGV2ZWwgPSBzaGFkb3dfc3RhY2tfc2l6ZSAtIGNvdW50IC0gMTsN Cj4gDQo+IFdoZXJlIGNvdW50IGlzIHRoZSByZXN1bHQgb2YgdGhlIGdkYmFyY2ggaG9vay4NCg0K SSBhZ3JlZSwgSSdsbCBhZGQgYSBnZGJhcmNoIGhvb2sgZm9yIHRoZSBzaGFkb3cgc3RhY2sgc2l6 ZS4NCg0KPiA+PiBGaW5hbGx5LCBub3QgYSBjb25jZXJuIGZvciB1c2Vyc3BhY2Ugc3VwcG9ydCAo YW5kIHRodXMgdGhpcyBwYXRjaA0KPiA+PiBzZXJpZXMpIGJ1dCBmb3IgT1MgYW5kIGh5cGVydmlz b3Igc29mdHdhcmUgdGhlcmUncyBhbm90aGVyIGtpbmQgb2YNCj4gPj4gR0NTIGVudHJ5IHdoaWNo IGlzIHRoZSBleGNlcHRpb24gcmV0dXJuIHJlY29yZCB0aGF0IGlzIHB1dCBvbiB0aGUNCj4gPj4g c3RhY2sgd2hlbiBhbiBleGNlcHRpb24gaXMgdGFrZW4uIFRoYXQgZW50cnkgaXMgMzIgYnl0ZXMg aW4gc2l6ZS4gIEkNCj4gPj4gbWVudGlvbiB0aGlzIGp1c3QgdG8gaWxsdXN0cmF0ZSB0aGF0IGNh bGN1bGF0aW5nIHRoZSBudW1iZXIgb2YNCj4gPj4gZW50cmllcyBpbiB0aGUgc3RhY2sgY2FuIGJl IG5vbi0gdHJpdmlhbC4NCj4gPg0KPiA+IE9oLCBJIHNlZS4gSXNuJ3QgdGhhdCBhbHJlYWR5IGEg cHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50IHVud2luZGluZyBvZg0KPiA+IHRoZSBzaGFkb3cgc3Rh Y2sgcG9pbnRlciBmb3IgR0NTPyBIb3cgd291bGQgeW91IGZpeCBpdCB0aGVyZSA/DQo+IA0KPiBJ dCdzIG5vdCBhIHByb2JsZW0gZm9yIG5vdyBiZWNhdXNlIEdDUyBzdXBwb3J0IGlzIG9ubHkgaW1w bGVtZW50ZWQgZm9yDQo+IExpbnV4IHVzZXJzcGFjZSBpbmZlcmlvcnMuIEl0J3MgYSBicmlkZ2Ug dG8gYmUgY3Jvc3NlZCBpbiB0aGUgZnV0dXJlLiA6KQ0KPiANCj4gSSBqdXN0IG1lbnRpb25lZCB0 aGlzIGNhc2UgdG8gaWxsdXN0cmF0ZSB0aGF0IGFzc3VtaW5nIHRoYXQgYWxsIGVudHJpZXMgaW4g dGhlDQo+IHNoYWRvdyBzdGFjayBoYXZlIHRoZSBzYW1lIHNpemUgaXMgZnJhZ2lsZS4gQnV0IGZv ciBub3cgaXQncyBnb29kIGVub3VnaCwgc28NCj4gcGVyaGFwcyBJIHNob3VsZG4ndCBoYXZlIG1l bnRpb25lZCBpdC4NCj4gDQo+ID4+IE5vdCBzdXJlIGhvdyB0byBhY2NvdW50IGZvciB0aGVzZSB2 YXJpYXRpb25zIGluIGdlbmVyaWMgY29kZS4gTWF5YmUNCj4gPj4gYWRkIGEgbmV3IGdkYmFyY2gg bWV0aG9kIGZvciByZXR1cm5pbmcgdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZQ0KPiA+PiBz aGFkb3cgc3RhY2s/DQo+ID4NCj4gPiBUbyBpbXBsZW1lbnQgdGhpcywgSSBiZWxpZXZlIHdlIGhh dmUgdHdvIHBvc3NpYmxlIGFwcHJvYWNoZXM6DQo+ID4NCj4gPiAoMSkgQXNzdW1lIHdlIGNhbiBk ZXRlcm1pbmUgdGhlIG51bWJlciBvZiBlbGVtZW50cyB3aXRob3V0IHVud2luZGluZw0KPiA+IGVh Y2ggZnJhbWUgKGFzIGl0IGlzIGN1cnJlbnRseSB0aGUgY2FzZSkuIEluIHRoaXMgc2NlbmFyaW8s IHdlIGNvdWxkDQo+ID4gaW50cm9kdWNlIGEgZ2VuZXJpYyBnZGJhcmNoIGhvb2sgdG8gcmV0cmll dmUgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3INCj4gYXJjaGl0ZWN0dXJlcyB0aGF0IHJlcXVp cmUgYSBkaWZmZXJlbnQgY2FsY3VsYXRpb24uDQo+ID4NCj4gPiAoMikgVW53aW5kIGVhY2ggc2hh ZG93IHN0YWNrIGZyYW1lIHRvIG9idGFpbiB0aGUgdHJhaWxpbmcgb3V0ZXJtb3N0DQo+ID4gZnJh bWUsIHNpbWlsYXIgdG8gaG93IHRoZSBub3JtYWwgYmFja3RyYWNlIHdvcmtzLg0KPiA+DQo+ID4g RG8geW91IHNlZSBhbnkgYWRkaXRpb25hbCBvcHRpb25zPw0KPiANCj4gTm8sIEkgY2FuIGFsc28g b25seSB0aGluayBvZiB0aGVzZS4NCj4gDQo+ID4gQWx0ZXJuYXRpdmVseSwgd2UgY291bGQga2Vl cCB0aGUgY3VycmVudCBhcHByb2FjaCBmb3Igbm93ICh3aXRob3V0IHRoZQ0KPiA+IGdkYmFyY2gg aG9vaywgYmFzZWQgb24gdGhlIGV4aXN0aW5nIGNhbGN1bGF0aW9uKSBhbmQgb25seSByZXZpc2Ug dGhlDQo+ID4gaW1wbGVtZW50YXRpb24gaWYgb3RoZXIgT1Mgb3IgaHlwZXJ2aXNvciBzb2Z0d2Fy ZSByZXF1aXJlIGRpZmZlcmVudCBsb2dpY+KAlA0KPiBvbmNlIHdlIGhhdmUgdGhlIGFiaWxpdHkg dG8gdGVzdCB0aG9zZSBjYXNlcyBwcm9wZXJseS4NCj4gPiBXaGF0IGFyZSB5b3VyIHRob3VnaHRz Pw0KPiANCj4gVGhlIGN1cnJlbnQgYXBwcm9hY2ggaXNuJ3QgZmVhc2libGUgYmVjYXVzZSBsZXZl bCBuZWVkcyB0byBiZSBjYWxjdWxhdGVkIGluDQo+IG9uZSB3YXkgZm9yIEludGVsLCBhbmQgYSBk aWZmZXJlbnQgd2F5IGZvciBBQXJjaDY0LiBJIHN1Z2dlc3QgdGhlIGdkYmFyY2gNCj4gaG9vayBv cHRpb24uDQoNClllcywgSSdsbCBhZGQgdGhlIGhvb2sgZm9yIHRoZSBzaGFkb3cgc3RhY2sgc2l6 ZS4NCg0KPiA+PiA+ICsNCj4gPj4gPiArICAvKiBDT1VOVCBleGNlZWRzIHRoZSBudW1iZXIgb2Yg ZWxlbWVudHMgb24gdGhlIHNoYWRvdyBzdGFjay4NCj4gUmV0dXJuIHRoZQ0KPiA+PiA+ICsgICAg IHN0YXJ0aW5nIHNoYWRvdyBzdGFjayBmcmFtZSBpbmZvIEZSQU1FLiAgKi8gIGlmIChsZXZlbCA8 PSAwKQ0KPiA+PiA+ICsgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2hhZG93X3N0YWNrX2ZyYW1l X2luZm8+IChmcmFtZSk7DQo+ID4+ID4gKw0KPiA+PiA+ICsgIENPUkVfQUREUiBuZXdfc3NwID0g dXBkYXRlX3NoYWRvd19zdGFja19wb2ludGVyDQo+ID4+ID4gKyAgICAoZ2RiYXJjaCwgZnJhbWUu c3NwLCBjb3VudCwgc3NwX3VwZGF0ZV9kaXJlY3Rpb246OmJvdHRvbSk7DQo+ID4+DQo+ID4+IFNo b3VsZG4ndCB1cGRhdGVfc2hhZG93X3N0YWNrX3BvaW50ZXIgYmUgY2FsbGVkIHdpdGggJ2xldmVs JyByYXRoZXINCj4gPj4gdGhhbiAnY291bnQnIGFzIGFyZ3VtZW50Pw0KPiA+DQo+ID4gQWgsIHlv deKAmXJlIGFic29sdXRlbHkgcmlnaHQuIEnigJltIGNlcnRhaW4gdGhpcyB3b3JrZWQgYXQgc29t ZSBwb2ludCBiZWZvcmUgSQ0KPiBwb3N0ZWQgaXQuDQo+ID4gSeKAmW0gbm90IHN1cmUgaG93IHRo aXMgaXNzdWUgc2xpcHBlZCBpbuKAlGFuZCBldmVuIG1vcmUgY29uY2VybmluZyB0aGF0IG15DQo+ IHRlc3RzIGRpZG7igJl0IGNhdGNoIGl0Lg0KPiA+DQo+ID4+ID4gKyAgaWYgKGdkYmFyY2hfc3Rh Y2tfZ3Jvd3NfZG93biAoZ2RiYXJjaCkpDQo+ID4+ID4gKyAgICBnZGJfYXNzZXJ0IChuZXdfc3Nw IDwgcmFuZ2Uuc2Vjb25kKTsgIGVsc2UNCj4gPj4gPiArICAgIGdkYl9hc3NlcnQgKG5ld19zc3Ag Pj0gcmFuZ2UuZmlyc3QpOw0KPiA+PiA+ICsNCj4gPj4gPiArICBDT1JFX0FERFIgbmV3X3ZhbHVl Ow0KPiA+PiA+ICsgIGlmICghcmVhZF9zaGFkb3dfc3RhY2tfbWVtb3J5IChnZGJhcmNoLCBuZXdf c3NwLCAmbmV3X3ZhbHVlLA0KPiA+PiA+ICsJCQkJICZmcmFtZS51bndpbmRfc3RvcF9yZWFzb24p KQ0KPiA+PiA+ICsgICAgcmV0dXJuIHt9Ow0KPiA+PiA+ICsNCj4gPj4gPiArICByZXR1cm4gc3Rk OjpvcHRpb25hbDxzaGFkb3dfc3RhY2tfZnJhbWVfaW5mbz4NCj4gPj4gPiArICAgICh7bmV3X3Nz cCwgbmV3X3ZhbHVlLCAoVUxPTkdFU1QpIGxldmVsLA0KPiA+PiA+ICsgICAgICBzc3BfdW53aW5k X3N0b3BfcmVhc29uOjpub19lcnJvcn0pOw0KPiA+Pg0KPiA+PiBUaGlzIGxpbmUgY2F1c2VzIGEg Y29tcGlsYXRpb24gZXJyb3IgaW4gYXJtLWxpbnV4LWdudWVhYmloZiwgYW5kIEkNCj4gPj4gc3Vw cG9zZSBvdGhlciAzMi1iaXQgdGFyZ2V0cyBhcyB3ZWxsOg0KPiA+Pg0KPiA+PiAvaG9tZS9iYXVl cm1hbm4vc3JjL2JpbnV0aWxzLWdkYi9nZGIvc2hhZG93LXN0YWNrLmM6NDcxOjI3OiBlcnJvcjoN Cj4gPj4gbmFycm93aW5nIGNvbnZlcnNpb24gb2Yg4oCYKFVMT05HRVNUKSgobG9uZyBpbnQpbGV2 ZWwp4oCZIGZyb20g4oCYVUxPTkdFU1TigJkNCj4gPj4ge2FrYSDigJhsb25nIGxvbmcgdW5zaWdu ZWQgaW504oCZfSB0byDigJhsb25nIHVuc2lnbmVkIGludOKAmSBbLVdlcnJvcj1uYXJyb3dpbmdd DQo+ID4+ICAgNDcxIHwgICAgICh7bmV3X3NzcCwgbmV3X3ZhbHVlLCAoVUxPTkdFU1QpIGxldmVs LA0KPiA+PiBzc3BfdW53aW5kX3N0b3BfcmVhc29uOjpub19lcnJvcn0pOw0KPiA+PiAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fg0KPiA+Pg0KPiA+PiBB bHNvLCBpdCBmaXRzIDgwIGNvbHVtbnMgYW5kIGRvZXNuJ3QgbmVlZCB0byBiZSBicm9rZW4uDQo+ ID4NCj4gPiBUaGFua3MsIGNhc3RpbmcgaXQgYXMgZm9sbG93czoNCj4gPiAodW5zaWduZWQgbG9u ZykgbGV2ZWwNCj4gPiBzaG91bGQgaG9wZWZ1bGx5IGZpeCB0aGlzLiBBbmQgdGhlbiBJIHdpbGwg aGF2ZSBtb3JlIHRoYW4gODAgY2hhcmFjdGVycy4NCj4gDQo+IE9rLg0KPiANCj4gPj4gPiArfQ0K PiA+PiA+ICsNCj4gPj4gPiArc3RkOjpvcHRpb25hbDxzaGFkb3dfc3RhY2tfZnJhbWVfaW5mbz4N Cj4gPj4gPiArc2hhZG93X3N0YWNrX2ZyYW1lX2luZm86OnVud2luZF9wcmV2X3NoYWRvd19zdGFj a19mcmFtZV9pbmZvDQo+ID4+ID4gKyAgKGdkYmFyY2ggKmdkYmFyY2gsIHN0ZDo6cGFpcjxDT1JF X0FERFIsIENPUkVfQUREUj4gcmFuZ2UpIHsNCj4gPj4gPiArICAvKiBJZiB0aGUgdXNlcidzIGJh Y2t0cmFjZSBsaW1pdCBoYXMgYmVlbiBleGNlZWRlZCwgc3RvcC4gIFdlIG11c3QNCj4gPj4gPiAr ICAgICBhZGQgdHdvIHRvIHRoZSBjdXJyZW50IGxldmVsOyBvbmUgb2YgdGhvc2UgYWNjb3VudHMg Zm9yDQo+ID4+ID4gKyAgICAgYmFja3RyYWNlX2xpbWl0IGJlaW5nIDEtYmFzZWQgYW5kIHRoZSBs ZXZlbCBiZWluZyAwLWJhc2VkLCBhbmQgdGhlDQo+ID4+ID4gKyAgICAgb3RoZXIgYWNjb3VudHMg Zm9yIHRoZSBsZXZlbCBvZiB0aGUgbmV3IGZyYW1lIGluc3RlYWQgb2YgdGhlIGxldmVsDQo+ID4+ ID4gKyAgICAgb2YgdGhlIGN1cnJlbnQgZnJhbWUuICAqLw0KPiA+PiA+ICsgIGlmICh0aGlzLT5s ZXZlbCArIDIgPiB1c2VyX3NldF9iYWNrdHJhY2Vfb3B0aW9ucy5iYWNrdHJhY2VfbGltaXQpDQo+ ID4+ID4gKyAgICByZXR1cm4ge307DQo+ID4+ID4gKw0KPiA+PiA+ICsgIENPUkVfQUREUiBuZXdf c3NwDQo+ID4+ID4gKyAgICA9IHVwZGF0ZV9zaGFkb3dfc3RhY2tfcG9pbnRlciAoZ2RiYXJjaCwg dGhpcy0+c3NwLCAxLA0KPiA+PiA+ICsJCQkJICAgc3NwX3VwZGF0ZV9kaXJlY3Rpb246OmJvdHRv bSk7DQo+ID4+ID4gKw0KPiA+PiA+ICsgIGlmIChnZGJhcmNoX3N0YWNrX2dyb3dzX2Rvd24gKGdk YmFyY2gpKQ0KPiA+Pg0KPiA+PiBUbyBtYWtlIHRoaXMgd29yayBmb3IgR0NTLCBJIGhhZCB0byBh ZGQgYW5vdGhlciBpZiBzdGF0ZW1lbnQgYmVmb3JlDQo+ID4+IHRoZSBvbmUgYWJvdmUsIHRvIGhh bmRsZSB0aGUgY2FzZSB3aGVyZSBuZXdfc3NwIGlzIGF0IHRoZSBpbml0aWFsIDAgdmFsdWU6DQo+ ID4+DQo+ID4+ICAgaWYgKGdkYmFyY2hfdG9wX2FkZHJfZW1wdHlfc2hhZG93X3N0YWNrX3AgKGdk YmFyY2gpDQo+ID4+ICAgICAgICYmIGdkYmFyY2hfdG9wX2FkZHJfZW1wdHlfc2hhZG93X3N0YWNr IChnZGJhcmNoLCBuZXdfc3NwLA0KPiByYW5nZSkpDQo+ID4+ICAgICByZXR1cm4ge307DQo+ID4+ ICAgZWxzZSBpZiAoZ2RiYXJjaF9zdGFja19ncm93c19kb3duIChnZGJhcmNoKSkNCj4gPj4gICAg IOKLrg0KPiA+Pg0KPiA+PiBPdGhlcndpc2UgImJ0IHNoYWRvdyIgd2lsbCBwcmludCB0aGUgMCBl bnRyeToNCj4gPj4NCj4gPj4gKGdkYikgYnQgc2hhZG93DQo+ID4+ICMwICAweDAwMDBhYWFhYWFh YTA4YWMgaW4gY2FsbDIgYXQgYWFyY2g2NC1nY3MtcmV0dXJuLmM6NjUNCj4gPj4gIzEgIDB4MDAw MGFhYWFhYWFhMDhjMCBpbiBjYWxsMSBhdCBhYXJjaDY0LWdjcy1yZXR1cm4uYzo3MQ0KPiA+PiAj MiAgMHgwMDAwYWFhYWFhYWEwOWQ0IGluIG1haW4gYXQgYWFyY2g2NC1nY3MtcmV0dXJuLmM6MTEw DQo+ID4+ICMzICAweDAwMDAwMDAwMDAwMDAwMDAgaW4gPz8NCj4gPg0KPiA+IFllcywgSSBtaXNz ZWQgdGhhdC4gVGhhbmtzLg0KPiA+DQo+ID4+ID4gKyAgICB7DQo+ID4+ID4gKyAgICAgIC8qIFRo ZSBzaGFkb3cgc3RhY2sgZ3Jvd3MgZG93bndhcmRzLiAgKi8NCj4gPj4gPiArICAgICAgaWYgKG5l d19zc3AgPj0gcmFuZ2Uuc2Vjb25kKQ0KPiA+PiA+ICsJew0KPiA+PiA+ICsJICAvKiBXZSByZWFj aGVkIHRoZSBib3R0b20gb2YgdGhlIHNoYWRvdyBzdGFjay4gICovDQo+ID4+DQo+ID4+IEluIHRo aXMgY2FzZSwgd2UgcmVhY2hlZCB0aGUgdG9wIGFjdHVhbGx5LiBUaGlzIGlzIHdoeSBJIGZpbmQg aXQNCj4gPj4gY29uZnVzaW5nIHRvIHVzZSBib3R0b20vdG9wIGFzIGlmIGl0IHdoZXJlIGFnbm9z dGljIHRvIHdoZXRoZXIgdGhlIHN0YWNrDQo+IGdyb3dzIHVwIG9yIGRvd24uLi4NCj4gPg0KPiA+ IEluIG15IHZpc2lvbiB0aGlzIGlzIHRvICJib3R0b20iIGFjdHVhbGx5LCBpZiB5b3UgbG9vayBh dCB0aGlzIGZyb20gYSAic3RhY2siDQo+IHBlcnNwZWN0aXZlLg0KPiA+IEJ1dCBJIGNoYW5nZWQg dGhpcyB0byAiV2UgcmVhY2hlZCB0aGUgb3V0ZXJtb3N0IGVsZW1lbnQiLg0KPiANCj4gVGhhbmtz Lg0KPiANCj4gPj4gPiArICAvKiBDaGVjayBpZiBTVEFSVF9TU1AgcG9pbnRzIHRvIGEgc2hhZG93 IHN0YWNrIG1lbW9yeSByYW5nZSBhbmQNCj4gdXNlDQo+ID4+ID4gKyAgICAgdGhlIHJldHVybmVk IHJhbmdlIHRvIGRldGVybWluZSB3aGVuIHRvIHN0b3AgdW53aW5kaW5nLg0KPiA+PiA+ICsgICAg IE5vdGUgdGhhdCBhIHNoYWRvdyBzdGFjayBtZW1vcnkgcmFuZ2UgY2FuIGNoYW5nZSwgZHVlIHRv IHNoYWRvdw0KPiBzdGFjaw0KPiA+PiA+ICsgICAgIHN3aXRjaGVzIGZvciBpbnN0YW5jZSBvbiB4 ODYgZm9yIGFuIGludGVyLXByaXZpbGVnZSBmYXIgY2FsbCBvciB3aGVuDQo+ID4+ID4gKyAgICAg Y2FsbGluZyBhbiBpbnRlcnJ1cHQvZXhjZXB0aW9uIGhhbmRsZXIgYXQgYSBoaWdoZXIgcHJpdmls ZWdlIGxldmVsLg0KPiA+PiA+ICsgICAgIFNoYWRvdyBzdGFjayBmb3IgdXNlcnNwYWNlIGlzIHN1 cHBvcnRlZCBmb3IgYW1kNjQgbGludXggc3RhcnRpbmcNCj4gd2l0aA0KPiA+PiA+ICsgICAgIExp bnV4IGtlcm5lbCB2Ni42LiAgSG93ZXZlciwgc2hhZG93IHN0YWNrIHN3aXRjaGVzIGFyZSBub3QN Cj4gc3VwcG9ydGVkDQo+ID4+ID4gKyAgICAgZHVlIHRvIG1pc3Npbmcga2VybmVsIHNwYWNlIHN1 cHBvcnQuICBXZSB0aGVyZWZvcmUgaW1wbGVtZW50IHRoaXMNCj4gPj4gPiArICAgICBjb21tYW5k IHdpdGhvdXQgc3VwcG9ydCBmb3Igc2hhZG93IHN0YWNrIHN3aXRjaGVzIGZvciBub3cuDQo+ID4+ ID4gKyAqLw0KPiA+Pg0KPiA+PiBIbSwgSSdtIG5vdCBzdXJlIGlmIGFhcmNoNjQtbGludXggc3Vw cG9ydHMgR0NTIHN3aXRjaGluZy4gVGhlDQo+ID4+IGtlcm5lbCdzIGdjcy5yc3QgZG9jdW1lbnRh dGlvbiBzYXlzOg0KPiA+Pg0KPiA+PiAgICogVGhlIGFyY2hpdGVjdHVyZSBwcm92aWRlcyBpbnN0 cnVjdGlvbnMgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIGd1YXJkZWQNCj4gPj4gICAgIGNvbnRyb2wg c3RhY2tzIHdpdGggY2hlY2tzIHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgc3RhY2sgaXMgYSB2YWxp ZA0KPiA+PiAgICAgdGFyZ2V0IGZvciBzd2l0Y2hpbmcuDQo+ID4+DQo+ID4+IEFuZCBhIGNvbW1l bnQgaW4gQUFyY2g2NCdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtYXBfc2hhZG93X3N0YWNrDQo+ ID4+IHN5c2NhbGwgc2F5czoNCj4gPj4NCj4gPj4gICAvKg0KPiA+PiAgICAqIFB1dCBhIGNhcCB0 b2tlbiBhdCB0aGUgZW5kIG9mIHRoZSBhbGxvY2F0ZWQgcmVnaW9uIHNvIGl0DQo+ID4+ICAgICog Y2FuIGJlIHN3aXRjaGVkIHRvLg0KPiA+PiAgICAqLw0KPiA+Pg0KPiA+PiBCdXQgSSBkb24ndCBz ZWUgYW55dGhpbmcgcG9zaXRpdmVseSBtZW50aW9uIHRoYXQgaXQncyBzdXBwb3J0ZWQuDQo+ID4+ IEkgYXNzdW1lIHNvLCBidXQgSSdsbCBoYXZlIHRvIGNvbmZpcm0uIElmIHRoYXQgaXMgdGhlIGNh c2UsIGxhdGVyIEkNCj4gPj4gd2lsbCBzdWJtaXQgYSBwYXRjaCB3aXRoIGFueSBuZWNlc3Nhcnkg Y2hhbmdlcy4NCj4gPg0KPiA+IE9rLCBzbyBrZWVwaW5nIHRoZSBjdXJyZW50IGNvbW1lbnQgaXMg ZmluZSBmb3IgeW91Pw0KPiANCj4gWWVzLiBTb3JyeSwgdGhhdCB3YXMgYW5vdGhlciBjb25mdXNp bmcgZGlncmVzc2lvbiBmcm9tIG1lLg0KDQpObyB3b3JyaWVzLiDwn5iKDQoNCj4gPj4gPiArICBz dGQ6OnBhaXI8Q09SRV9BRERSLCBDT1JFX0FERFI+IHJhbmdlOw0KPiA+PiA+ICsgIGlmICghZ2Ri YXJjaF9hZGRyZXNzX2luX3NoYWRvd19zdGFja19tZW1vcnlfcmFuZ2UgKGdkYmFyY2gsDQo+ICpz dGFydF9zc3AsDQo+ID4+ID4gKwkJCQkJCSAgICAgJnJhbmdlKSkNCj4gPj4NCj4gPj4gU2hvdWxk bid0IHRoaXMgaWYgY29uZGl0aW9uIGFsc28gY2hlY2sNCj4gPj4gZ2RiYXJjaF90b3BfYWRkcl9l bXB0eV9zaGFkb3dfc3RhY2s/DQo+ID4NCj4gPiBGb3IgeDg2IHRoaXMgbG9naWMgaXMgZmluZSwg YnV0IEkgYXNzdW1lIGZvciBHQ1MgdGhpcyBkb2VzIG5vdCB3b3JrDQo+ID4gZm9yIGVtcHR5IHNo YWRvdyBzdGFja3M/DQo+IA0KPiBJbmRlZWQsIHdlIG5lZWQgdGhlIGV4dHJhIGNoZWNrIGZvciBH Q1MuDQoNClRoZSBjb2RlIGluIGJhY2t0cmFjZV9zaGFkb3dfY29tbWFuZCAgbm93IGxvb2tzIGFz IGZvbGxvd3M6DQoNClsuLi5dDQogIC8qIENoZWNrIGlmIFNUQVJUX1NTUCBwb2ludHMgdG8gYSBz aGFkb3cgc3RhY2sgbWVtb3J5IHJhbmdlIGFuZCB1c2UNCiAgICAgdGhlIHJldHVybmVkIHJhbmdl IHRvIGRldGVybWluZSB3aGVuIHRvIHN0b3AgdW53aW5kaW5nLg0KICAgICBOb3RlIHRoYXQgYSBz aGFkb3cgc3RhY2sgbWVtb3J5IHJhbmdlIGNhbiBjaGFuZ2UsIGR1ZSB0byBzaGFkb3cgc3RhY2sN CiAgICAgc3dpdGNoZXMgZm9yIGluc3RhbmNlIG9uIHg4NiBmb3IgYW4gaW50ZXItcHJpdmlsZWdl IGZhciBjYWxsIG9yIHdoZW4NCiAgICAgY2FsbGluZyBhbiBpbnRlcnJ1cHQvZXhjZXB0aW9uIGhh bmRsZXIgYXQgYSBoaWdoZXIgcHJpdmlsZWdlIGxldmVsLg0KICAgICBTaGFkb3cgc3RhY2sgZm9y IHVzZXJzcGFjZSBpcyBzdXBwb3J0ZWQgZm9yIGFtZDY0IGxpbnV4IHN0YXJ0aW5nIHdpdGgNCiAg ICAgTGludXgga2VybmVsIHY2LjYuICBIb3dldmVyLCBzaGFkb3cgc3RhY2sgc3dpdGNoZXMgYXJl IG5vdCBzdXBwb3J0ZWQNCiAgICAgZHVlIHRvIG1pc3Npbmcga2VybmVsIHNwYWNlIHN1cHBvcnQu ICBXZSB0aGVyZWZvcmUgaW1wbGVtZW50IHRoaXMNCiAgICAgY29tbWFuZCB3aXRob3V0IHN1cHBv cnQgZm9yIHNoYWRvdyBzdGFjayBzd2l0Y2hlcyBmb3Igbm93LiAgKi8NCiAgYm9vbCBpc190b3Bf YWRkcl9lbXB0eV9zaGFkb3dfc3RhY2sgPSBmYWxzZTsNCiAgc3RkOjpwYWlyPENPUkVfQUREUiwg Q09SRV9BRERSPiByYW5nZTsNCiAgaWYgKCFnZGJhcmNoX2FkZHJlc3NfaW5fc2hhZG93X3N0YWNr X21lbW9yeV9yYW5nZSAoZ2RiYXJjaCwgKnN0YXJ0X3NzcCwNCgkJCQkJCSAgICAgJnJhbmdlKSkN CiAgICB7DQogICAgICAvKiBGb3IgeDg2LCBpZiB0aGUgY3VycmVudCBzaGFkb3cgc3RhY2sgcG9p bnRlciBkb2VzIG5vdCBwb2ludCB0bw0KCSBzaGFkb3cgc3RhY2sgbWVtb3J5IGJ1dCBpcyB2YWxp ZCwgdGhlIHNoYWRvdyBzdGFjayBpcyBlbXB0eS4gICovDQogICAgICBpc190b3BfYWRkcl9lbXB0 eV9zaGFkb3dfc3RhY2sgPSB0cnVlOw0KICAgIH0NCg0KICBpZiAoIWlzX3RvcF9hZGRyX2VtcHR5 X3NoYWRvd19zdGFjaykNCiAgICB7DQogICAgICAvKiBGb3IgQVJNJ3MgR3VhcmRlZCBDb250cm9s IFN0YWNrLCB0aGUgc2hhZG93IHN0YWNrIGNhbiBiZSBlbXB0eQ0KCSBldmVuIHRob3VnaCBTVEFS VF9TU1AgcG9pbnRzIHRvIHNoYWRvdyBzdGFjayBtZW1vcnkgcmFuZ2UuICAqLw0KICAgICAgaXNf dG9wX2FkZHJfZW1wdHlfc2hhZG93X3N0YWNrDQoJPSBnZGJhcmNoX3RvcF9hZGRyX2VtcHR5X3No YWRvd19zdGFja19wIChnZGJhcmNoKQ0KCSAgJiYgZ2RiYXJjaF90b3BfYWRkcl9lbXB0eV9zaGFk b3dfc3RhY2sgKGdkYmFyY2gsICpzdGFydF9zc3AsIHJhbmdlKTsNCiAgICB9DQoNCiAgaWYgKGlz X3RvcF9hZGRyX2VtcHR5X3NoYWRvd19zdGFjaykNCiAgICB7DQogICAgICBnZGJfcHJpbnRmIChf KCJUaGUgc2hhZG93IHN0YWNrIGlzIGVtcHR5LlxuIikpOw0KICAgICAgcmV0dXJuOw0KICAgIH0N ClsuLi5dDQoNCklzIHRoYXQgb2sgPw0KDQo+ID4+ID4gKyAgICB7DQo+ID4+ID4gKyAgICAgIC8q IElmIHRoZSBjdXJyZW50IHNoYWRvdyBzdGFjayBwb2ludGVyIGRvZXMgbm90IHBvaW50IHRvIHNo YWRvdw0KPiA+PiA+ICsJIHN0YWNrIG1lbW9yeSwgdGhlIHNoYWRvdyBzdGFjayBpcyBlbXB0eS4g ICovDQo+ID4+ID4gKyAgICAgIGdkYl9wcmludGYgKF8oIlRoZSBzaGFkb3cgc3RhY2sgaXMgZW1w dHkuXG4iKSk7DQo+ID4+ID4gKyAgICAgIHJldHVybjsNCj4gPj4gPiArICAgIH0NCj4gPj4gPiAr DQo+ID4+ID4gKyAgLyogRXh0cmFjdCB0aGUgZmlyc3Qgc2hhZG93IHN0YWNrIGZyYW1lIGluZm8g KGxldmVsIDApLiAgKi8NCj4gPj4gPiArICBzc3BfdW53aW5kX3N0b3BfcmVhc29uIHJlYXNvbiA9 DQo+ID4+ID4gK3NzcF91bndpbmRfc3RvcF9yZWFzb246Om5vX2Vycm9yOw0KPiA+PiA+ICsgIHN0 ZDo6b3B0aW9uYWw8c2hhZG93X3N0YWNrX2ZyYW1lX2luZm8+IGN1cnJlbnQ7DQo+ID4+ID4gKyAg Q09SRV9BRERSIG5ld192YWx1ZTsNCj4gPj4gPiArICBpZiAocmVhZF9zaGFkb3dfc3RhY2tfbWVt b3J5IChnZGJhcmNoLCAqc3RhcnRfc3NwLCAmbmV3X3ZhbHVlLA0KPiAmcmVhc29uKSkNCj4gPj4g PiArICAgIGN1cnJlbnQgPSB7KnN0YXJ0X3NzcCwgbmV3X3ZhbHVlLCAwLA0KPiA+PiA+ICsJICAg ICAgIHNzcF91bndpbmRfc3RvcF9yZWFzb246Om5vX2Vycm9yfTsNCj4gPj4NCj4gPj4gVGhpcyBs aW5lIGZpdHMgaW4gODAgY29sdW1ucyBhbmQgZG9lc24ndCBuZWVkIHRvIGJlIGJyb2tlbi4NCj4g Pg0KPiA+IFllcywgSSBjaGFuZ2VkIHRoYXQuDQo+ID4NCj4gPj4gPiArDQo+ID4+ID4gKyAgc3Rk OjpvcHRpb25hbDxzaGFkb3dfc3RhY2tfZnJhbWVfaW5mbz4gdHJhaWxpbmcgPSBjdXJyZW50Ow0K PiA+PiA+ICsNCj4gPj4gPiArICBMT05HRVNUIGNvdW50ID0gLTE7DQo+ID4+ID4gKyAgaWYgKGN1 cnJlbnQuaGFzX3ZhbHVlICgpICYmIGNvdW50X2V4cCAhPSBudWxscHRyKQ0KPiA+PiA+ICsgICAg ew0KPiA+PiA+ICsgICAgICBjb3VudCA9IHBhcnNlX2FuZF9ldmFsX2xvbmcgKGNvdW50X2V4cCk7 DQo+ID4+ID4gKyAgICAgIC8qIElmIGNvdW50IGlzIG5lZ2F0aXZlLCB1cGRhdGUgdHJhaWxpbmcg d2l0aCB0aGUgc2hhZG93IHN0YWNrIGZyYW1lDQo+ID4+ID4gKwkgaW5mbyBmcm9tIHdoaWNoIHdl IHNob3VsZCBzdGFydCBwcmludGluZy4gICovDQo+ID4+DQo+ID4+IEFjdHVhbGx5LCB0cmFpbGlu ZyB3aWxsIGJlIHRoZSBmcmFtZSBhYm92ZSB0aGUgb25lIGZyb20gd2hpY2ggd2UNCj4gPj4gc2hv dWxkIHN0YXJ0IHByaW50aW5nLiBGb3IgZXhhbXBsZSwgaWYgY291bnQgaXMgLTMNCj4gPj4gZ2V0 X3RyYWlsaW5nX291dGVybW9zdF9zaGFkb3dfc3RhY2tfZnJhbWVfaW5mbyB3aWxsIHJldHVybiB0 aGUgZnJhbWUNCj4gPj4gIndoaWNoIGlzIENPVU5UIGVsZW1lbnRzIGFib3ZlIHRoZSBib3R0b20g b2YgdGhlIHNoYWRvdyBzdGFjayIsIHdoaWNoDQo+ID4+IGluIHRoaXMgY2FzZSBpcyB0aGUgNHRo IGZyYW1lIGNvdW50aW5nIGZyb20gdGhlIG9sZGVzdCBmcmFtZS4gQnV0IHdlDQo+ID4+IG5lZWQg dG8gc3RhcnQgcHJpbnRpbmcgZnJvbSB0aGUgM3JkIG9sZGVzdCBmcmFtZSAuLi4NCj4gPg0KPiA+ PiA+ICsgICAgICBpZiAoY291bnQgPCAwKQ0KPiA+PiA+ICsJew0KPiA+PiA+ICsJICB0cmFpbGlu ZyA9IGdldF90cmFpbGluZ19vdXRlcm1vc3Rfc2hhZG93X3N0YWNrX2ZyYW1lX2luZm8NCj4gPj4g PiArCQkgICAgICAgKGdkYmFyY2gsIHJhbmdlLCBzdGQ6OmFicyAoY291bnQpLCAqY3VycmVudCk7 DQo+ID4+DQo+ID4+IC4uLiBzbyB0aGlzIGNhbGwgc2hvdWxkIHBhc3Mgc3RkOjphYnMgKGNvdW50 KSAtIDEgYXMgYXJndW1lbnQuDQo+ID4NCj4gPiBIbSwgSSBhbSBub3Qgc3VyZSBpZiBJIGNhbiBm b2xsb3cuIFdpdGggdGhlIGZpeCBmb3IgcGFzc2luZyBsZXZlbA0KPiA+IGluc3RlYWQgb2YgY291 bnQgbXkgY3VycmVudCBvdXRwdXQgbG9va3MgYXMgZm9sbG93Og0KPiA+DQo+ID4gfn5+DQo+ID4g QnJlYWtwb2ludCAxLCBjYWxsMiAoKSBhdCAvdG1wL2FtZDY0LXNoYWRvdy1zdGFjay5jOjIxDQo+ ID4gMjEgICAgICAgIHJldHVybiA0MjsgLyogYnJlYWsgY2FsbDIuICAqLw0KPiA+IChnZGIpIGJ0 IC1wYXN0LW1haW4NCj4gPiAjMCAgY2FsbDIgKCkgYXQgL3RtcCAvYW1kNjQtc2hhZG93LXN0YWNr LmM6MjENCj4gPiAjMSAgMHgwMDAwNTU1NTU1NTU1MTQyIGluIGNhbGwxICgpIGF0IC90bXAvYW1k NjQtc2hhZG93LXN0YWNrLmM6MjcNCj4gPiAjMiAgMHgwMDAwNTU1NTU1NTU1MTUzIGluIG1haW4g KCkgYXQgL3RtcC9hbWQ2NC1zaGFkb3ctc3RhY2suYzozOA0KPiA+ICMzICAweDAwMDA3ZmZmZjdj MmExY2EgaW4gX19saWJjX3N0YXJ0X2NhbGxfbWFpbiAoWy4uLl0NCj4gPiAjNCAgMHgwMDAwN2Zm ZmY3YzJhMjhiIGluIF9fbGliY19zdGFydF9tYWluX2ltcGwgKFsuLi5dKSBhdA0KPiA+IC4uL2Nz dS9saWJjLXN0YXJ0LmM6MzYwDQo+ID4gIzUgIDB4MDAwMDU1NTU1NTU1NTA2NSBpbiBfc3RhcnQg KCkNCj4gPiAoZ2RiKSBidCAtcGFzdC1tYWluIC0zDQo+ID4gIzMgIDB4MDAwMDdmZmZmN2MyYTFj YSBpbiBfX2xpYmNfc3RhcnRfY2FsbF9tYWluIChbLi4uXSkgYXQNCj4gLi4vc3lzZGVwcy9ucHRs L2xpYmNfc3RhcnRfY2FsbF9tYWluLmg6NTgNCj4gPiAjNCAgMHgwMDAwN2ZmZmY3YzJhMjhiIGlu IF9fbGliY19zdGFydF9tYWluX2ltcGwgKFsuLi5dKSAgICBhdCAuLi9jc3UvbGliYy0NCj4gc3Rh cnQuYzozNjANCj4gPiAjNSAgMHgwMDAwNTU1NTU1NTU1MDY1IGluIF9zdGFydCAoKQ0KPiA+IChn ZGIpIGJ0IHNoYWRvdyAtMw0KPiA+ICMyICAweDAwMDA3ZmZmZjdjMmExY2EgaW4gX19saWJjX3N0 YXJ0X2NhbGxfbWFpbiBhdA0KPiA+IC4uL3N5c2RlcHMvbnB0bC9saWJjX3N0YXJ0X2NhbGxfbWFp bi5oOjc0DQo+ID4gIzMgIDB4MDAwMDdmZmZmN2MyYTI4YiBpbiBfX2xpYmNfc3RhcnRfbWFpbl9p bXBsIGF0DQo+ID4gLi4vY3N1L2xpYmMtc3RhcnQuYzoxMjgNCj4gPiAjNCAgMHgwMDAwNTU1NTU1 NTU1MDY1IGluIF9zdGFydA0KPiA+IChnZGIpIGJ0IHNoYWRvdw0KPiA+ICMwICAweDAwMDA1NTU1 NTU1NTUxNDIgaW4gY2FsbDEgYXQgL3RtcC9hbWQ2NC1zaGFkb3ctc3RhY2suYzoyOA0KPiA+ICMx ICAweDAwMDA1NTU1NTU1NTUxNTMgaW4gbWFpbiBhdCAvdG1wL2FtZDY0LXNoYWRvdy1zdGFjay5j OjM5DQo+ID4gIzIgIDB4MDAwMDdmZmZmN2MyYTFjYSBpbiBfX2xpYmNfc3RhcnRfY2FsbF9tYWlu IGF0DQo+ID4gLi4vc3lzZGVwcy9ucHRsL2xpYmNfc3RhcnRfY2FsbF9tYWluLmg6NzQNCj4gPiAj MyAgMHgwMDAwN2ZmZmY3YzJhMjhiIGluIF9fbGliY19zdGFydF9tYWluX2ltcGwgYXQNCj4gPiAu Li9jc3UvbGliYy1zdGFydC5jOjEyOA0KPiA+ICM0ICAweDAwMDA1NTU1NTU1NTUwNjUgaW4gX3N0 YXJ0DQo+ID4gfn5+DQo+ID4NCj4gPiBXaGljaCBpcyBjb3JyZWN0IGZyb20gbXkgcGVyc3BlY3Rp dmUsIGJ1dCBtYXliZSBJIGFtIG1pc3Npbmcgc29tZXRoaW5nLg0KPiA+IEkgdGhpbmsgSSBsb3N0 IHRoZSBvdmVydmlldyBhIGJpdCwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIGlzc3VlcyBpbiBteQ0K PiA+IGNvZGUgaGVyZSwgdW5mb3J0dW5hdGVseS4gOi8gTm90ZSB0aGF0IGZvciB0aGlzIG91dHB1 dCBJIHN0aWxsIHByaW50IHRoZSBsZXZlbA0KPiBzdGFydGluZyBhdCAwLiBXaWxsIGFwcGx5IHRo aXMgY2hhbmdlIG9uY2UgdGhlIG90aGVyIGlzc3VlcyBhcmUgY2xlYXIuDQo+IA0KPiBJIHRoaW5r IHRoaXMgaXMgd29ya2luZyBmb3IgeW91IGJlY2F1c2Ugb2YgdGhlIG9mZi1ieS1vbmUgZXJyb3Ig aW4gdGhlDQo+IGNhbGN1bGF0aW9uIG9mIGxldmVsIGluIGdldF90cmFpbGluZ19vdXRlcm1vc3Rf c2hhZG93X3N0YWNrX2ZyYW1lX2luZm8NCj4gdGhhdCBJIG1lbnRpb25lZCBhYm92ZS4gSSB0aGlu ayB0aGUgb2ZmLWJ5LW9uZSBlcnJvciBoZXJlIGNvbXBlbnNhdGVzIHRoZQ0KPiBvdGhlciBvbmUu DQoNCkFzIEkgc2FpZCwgaW4gdGhlIHNpbWlsYXIgY29kZSBpbiBzdGFjay5jIHdlIGFsc28gZG9u J3QgcGFzcyBzdGQ6OmFicyAoY291bnQpIC0gMSwgYnV0IGhhdmUgdGhpcw0KY29kZSBpbnN0ZWFk OiAidHJhaWxpbmcgPSB0cmFpbGluZ19vdXRlcm1vc3RfZnJhbWUgKC1jb3VudCk7Ig0KDQpTbyBJ IHN0aWxsIHRoaW5rIHdlIHNob3VsZCBrZWVwIHRoZSBjdXJyZW50IGNhbGN1bGF0aW9uIGFuZCBw YXNzaW5nIG9mIGNvdW50IHRvDQpnZXRfdHJhaWxpbmdfb3V0ZXJtb3N0X3NoYWRvd19zdGFja19m cmFtZV9pbmZvLCBidXQgSSBzaG91bGQgYWRhcHQgdGhlDQpjb21tZW50Lg0KDQoNCj4gPj4gPiAr ICAgIHsNCj4gPj4gPiArICAgICAgUVVJVDsNCj4gPj4gPiArDQo+ID4+ID4gKyAgICAgIHByaW50 X3NoYWRvd19zdGFja19mcmFtZV9pbmZvIChnZGJhcmNoLCBwcmludF9vcHRpb25zLCAqY3VycmVu dCwNCj4gPj4gPiArCQkJCSAgICAgTE9DQVRJT04pOw0KPiA+PiA+ICsNCj4gPj4gPiArICAgICAg dHJhaWxpbmcgPSBjdXJyZW50Ow0KPiA+PiA+ICsgICAgICBjdXJyZW50ID0gY3VycmVudC0+dW53 aW5kX3ByZXZfc2hhZG93X3N0YWNrX2ZyYW1lX2luZm8NCj4gKGdkYmFyY2gsDQo+ID4+ID4gKwkJ CQkJCQkgICAgICByYW5nZSk7DQo+ID4+DQo+ID4+IFRoaXMgbGluZSBmaXRzIGluIDgwIGNvbHVt bnMgYW5kIGRvZXNuJ3QgbmVlZCB0byBiZSBicm9rZW4uDQo+ID4NCj4gPiBIbSwgd2VpcmQsIEkg YWdhaW4gY291bnQgbW9yZSB0aGFuIDgwIGNvbHVtbnMuDQo+IA0KPiBTdHJhbmdlIGluZGVlZC4N Cj4gDQo+ID4+ID4gKyAgICB9DQo+ID4+ID4gKw0KPiA+PiA+ICsgIC8qIElmIHdlJ3ZlIHN0b3Bw ZWQgYmVmb3JlIHRoZSBlbmQsIG1lbnRpb24gdGhhdC4gICovICBpZg0KPiA+PiA+ICsgKGN1cnJl bnQgJiYgZnJvbV90dHkpDQo+ID4+DQo+ID4+IFdoaWxlIGl0J3MgY29ycmVjdCB0byB1c2UgYW4g c3RkOjpvcHRpb25hbCBpbiB0aGlzIHdheSB0byBjaGVjaw0KPiA+PiB3aGV0aGVyIGl0IGhhcyBh IHZhbHVlLCBJTUhPIGl0J3MgY2xlYXJlciB0byBiZSBtb3JlIGV4cGxpY2l0IGFuZCB1c2UgdGhl DQo+IGhhc192YWx1ZSBtZXRob2QuDQo+ID4+IEl0J3MgYWxzbyBjb25zaXN0ZW50IHdpdGggdGhl IHJlc3Qgb2YgdGhlIGNvZGUgaW4gdGhpcyBmdW5jdGlvbi4NCj4gPg0KPiA+IEkgYWdyZWUuIEkg Zml4ZWQgdGhhdC4NCj4gPg0KPiA+PiA+ICsgICAgZ2RiX3ByaW50ZiAoXygiKE1vcmUgc2hhZG93 IHN0YWNrIGZyYW1lcyBmb2xsb3cuLi4pXG4iKSk7DQo+ID4+ID4gKw0KPiA+PiA+ICsgIC8qIElm IHdlJ3ZlIHJ1biBvdXQgb2Ygc2hhZG93IHN0YWNrIGZyYW1lcywgYW5kIHRoZSByZWFzb24gYXBw ZWFycyB0bw0KPiA+PiA+ICsgICAgIGJlIGFuIGVycm9yIGNvbmRpdGlvbiwgcHJpbnQgaXQuICAq LyAgaWYgKCFjdXJyZW50Lmhhc192YWx1ZQ0KPiA+PiA+ICsgKCkgJiYgdHJhaWxpbmcuaGFzX3Zh bHVlICgpDQo+ID4+DQo+ID4+IElmIEknbSBub3QgbWlzdGFrZW4sIHRyYWlsaW5nLmhhc192YWx1 ZSAoKSBpcyBhbHdheXMgdHJ1ZSBhdCB0aGlzIHBvaW50Lg0KPiA+DQo+ID4gSSBhZ3JlZSwgdGhp cyBsb2dpYyBpcyBmcm9tIGJhY2t0cmFjZV9jb21tYW5kXzEuDQo+ID4gSSB0aGluayBhZGRpbmcg YW4gYXNzZXJ0IGhlcmUgc2hvdWxkIGJlIGZpbmUgaW5zdGVhZCwgc28gSSBzdWdnZXN0IHRoZQ0K PiBmb2xsb3dpbmc6DQo+ID4NCj4gPiB+fn4NCj4gPiBbLi4uXQ0KPiA+ICAgLyogSWYgd2UndmUg c3RvcHBlZCBiZWZvcmUgdGhlIGVuZCwgbWVudGlvbiB0aGF0LiAgKi8NCj4gPiAgIGlmIChjdXJy ZW50Lmhhc192YWx1ZSAoKSAmJiBmcm9tX3R0eSkNCj4gPiAgICAgZ2RiX3ByaW50ZiAoXygiKE1v cmUgc2hhZG93IHN0YWNrIGZyYW1lcyBmb2xsb3cuLi4pXG4iKSk7DQo+ID4NCj4gPiAgIC8qIER1 ZSB0byB0aGUgbG9vcCBhYm92ZSwgdHJhaWxpbmcgYWx3YXlzIGhhcyBhIHZhbHVlIGF0IHRoaXMg cG9pbnQuICAqLw0KPiA+ICAgZ2RiX2Fzc2VydCAodHJhaWxpbmcuaGFzX3ZhbHVlICgpKTsNCj4g Pg0KPiA+ICAgLyogSWYgd2UndmUgcnVuIG91dCBvZiBzaGFkb3cgc3RhY2sgZnJhbWVzLCBhbmQg dGhlIHJlYXNvbiBhcHBlYXJzIHRvDQo+ID4gICAgICBiZSBhbiBlcnJvciBjb25kaXRpb24sIHBy aW50IGl0LiAgKi8gWy4uLl0gfn5+DQo+ID4NCj4gPiBQbGVhc2UgbGV0IG1lIGtub3cgaWYgeW91 IHRoaW5rIG90aGVyd2lzZS4NCj4gDQo+IExvb2tzIGdvb2QgdG8gbWUuDQo+IA0KPiAtLQ0KPiBU aGlhZ28NCg0KVGhhbmtzIGFnYWluIGZvciB0aGUgZmVlZGJhY2ssDQoNCkNocmlzdGluYQ0KSW50 ZWwgRGV1dHNjaGxhbmQgR21iSA0KUmVnaXN0ZXJlZCBBZGRyZXNzOiBEb3JuYWNoZXIgU3RyYcOf ZSAxLCA4NTYyMiBGZWxka2lyY2hlbiwgR2VybWFueQ0KVGVsOiArNDkgODkgOTkxIDQzMCwgd3d3 LmludGVsLmRlDQpNYW5hZ2luZyBEaXJlY3RvcnM6IEhhcnJ5IERlbWFzLCBKZWZmcmV5IFNjaG5l aWRlcm1hbiwgWWluIENob25nIFNvcnJlbGwNCkNoYWlycGVyc29uIG9mIHRoZSBTdXBlcnZpc29y eSBCb2FyZDogTmljb2xlIExhdQ0KUmVnaXN0ZXJlZCBTZWF0OiBNdW5pY2gNCkNvbW1lcmNpYWwg UmVnaXN0ZXI6IEFtdHNnZXJpY2h0IE3DvG5jaGVuIEhSQiAxODY5MjgK