From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id ED7FE385841B for ; Fri, 11 Feb 2022 20:29:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org ED7FE385841B Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 21BIvUwL019082; Fri, 11 Feb 2022 20:29:29 GMT Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by mx0b-00069f02.pphosted.com with ESMTP id 3e5gt4a2km-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 11 Feb 2022 20:29:29 +0000 Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 21BKQ01t062866; Fri, 11 Feb 2022 20:29:28 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2173.outbound.protection.outlook.com [104.47.59.173]) by userp3030.oracle.com with ESMTP id 3e1ec80pau-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 11 Feb 2022 20:29:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VaUn0Pi/Y9BfzsOP1Y6ir/yEj6u31a49001+XNmBupgL15wtqvOCV+tq91vxyLXPhQ+dqd5mP/4ZPsVbehj7FXgaReZdgRmPyYDWTN7Ujw1JJBCpjfEEo/z+G/wCJ0vrPOPAxGr5+amVd0pLJBCGG752CkfgQZiESJvvkbKfYXtTZYL6SCNQ3I9U27TgTsP0aQsWmjKpEkgLYizsbEE70Jrwa+LGqdgsaZRELD7GQI0J11f0kT/4tllXyebdAOSLdD9qX2bR2ifqd75pZqv0S8WabRVANhHG57el5RaIMXt2xaEwphYxm5+/8fq4rG26rMDCQ6jtifcdAvlBIAbltg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=dAyHCYWLB7UjpZOCd0HpqiOIwZmPPqmiaJCQ/LlPr8Y=; b=PliKmEEWuzFuoTNdz7/995LRkYNGCWscueviJyVabeIWhTT3tV/k96zhjSfryaYgNGXbb795HlLuj+frIxGRCe6wuWmQnSt/S9zKFhZx+ItI2p1U/QMfrwUnfGcX2PvkPY+f+p2TNgjnGPLeEFBCf6t/cIE9suIRR3Ppm9wW0OTCk37BrUHSAxWF0JHLfHmQ/nXsGK4L0r+ACD3kfGsd3dbXRc7kfnzJqIPp84g67kvzeLg0KJ/KCorfgBhUfqNW+XZtujT2GyytEg5INWZWnLbdX+ZD6aiAeflRqDuQCvknPN0ppkScrRXbZpR02LkQO30KwS5ZqIwtsIRY3pR6+w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by MWHPR1001MB2143.namprd10.prod.outlook.com (2603:10b6:301:36::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Fri, 11 Feb 2022 20:29:24 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::50e0:10b6:4c07:3728]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::50e0:10b6:4c07:3728%8]) with mapi id 15.20.4975.011; Fri, 11 Feb 2022 20:29:24 +0000 From: Qing Zhao To: Jason Merrill , Jakub Jelinek CC: gcc-patches Paul A Clarke via Subject: Re: [PATCH] Fix PR 101515 (ICE in pp_cxx_unqualified_id, at cp/cxx-pretty-print.c:128) Thread-Topic: [PATCH] Fix PR 101515 (ICE in pp_cxx_unqualified_id, at cp/cxx-pretty-print.c:128) Thread-Index: AQHYHToklb/qg1ilsEOO036npqgeeayLX18AgAAqkYCAACvpgIAC0oQAgAAWkICAAAw+AIAAGJEAgAAN64A= Date: Fri, 11 Feb 2022 20:29:24 +0000 Message-ID: <58075E24-AD19-4B12-9550-DB0464F469DB@oracle.com> References: <946D3718-32CD-45B6-8EF5-C41DDC3CA06E@oracle.com> <87823a36-93f3-5541-dc76-5a8c32e51c03@redhat.com> <319ad931-a975-e29c-7b8a-51534d657e01@redhat.com> <9B1729F5-964A-4A12-93B3-148BFE4D96F5@oracle.com> <01B0A297-CC89-4666-9684-BE04BE17E66E@oracle.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3608.120.23.2.7) x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c1540ba9-e039-4516-849e-08d9ed9d31b5 x-ms-traffictypediagnostic: MWHPR1001MB2143:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: F4fZQt+Lp90ECuzHfnKyR0uKQm8dsXS5szayL/ZfK13IYIDncyVM0kA9anGZ7ENR/GspPXMcy3K/wB0VoJnO1ppiDtCGauhR8cB7RyOiFw7mBwcIUf6AWQBuW5b3AFkSR0RLaYDbknW2POsTsmcaFkWTo7yAN/hGwF4fyu9Th7NiWIRX2YWyw07F5TPu5+gmcxiMg8XGHDcU4lAsITqrK6DcnwTb4+418qQQ4Gy2fyvSBG1FX72+2TXfJWvDfUURcA76LSCXlSxz2qcjLAfLqLownzOwhorwzXfl7JhzrxgYraaUqnQnNWmHbOPC5X15gF2EvnFALUhsLpkS2JS8XEIawKubLvCgDbTHMUaxvjGc5dzg22Sa+OnC3aqKyH3tMcPfqsTM/RTYm23ZjxbdBTnvNMzzOKqh5BHa+xNmZM6KuNOYQK1k78qQf8Yiw43NzRlzZBjuTN6KqUBYTBsGISRTMKAnqdCl/qtEJpZFKcgfD6sk5LzTUgU8HY/RRcPLISn3W7DyjUZG4ryVtT86kJdB6qtBaqClWDTbhmO2pvB61qmv0Cb2N+D0qRMaIGNaYchG9kq7dR4oLuJmhFJpEmzcPoqPNi3P9ZjenW4CfX8oTfVju50RhOU7tJ73xe+367W9CJjvZKjR05jcQtowOJ82LNGNqurP6Z7F1bE4tlhCLPF/HauLBWhv9ivWYjj8VLcczESwoVJHrW0YJWuMSpGevDZ6umuHwJLKf6X1JQE= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR10MB4344.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(2906002)(5660300002)(122000001)(26005)(186003)(38070700005)(44832011)(316002)(2616005)(508600001)(110136005)(6486002)(66476007)(66446008)(83380400001)(66556008)(8676002)(8936002)(66946007)(38100700002)(91956017)(6512007)(71200400001)(36756003)(64756008)(33656002)(4326008)(76116006)(86362001)(6506007)(53546011)(45980500001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WWhKSStXaUhSVXcxcG4xU2lXaEtCOHhxSzU2Mko3d2N3bHJRN3FScktlVmZ2?= =?utf-8?B?bXFXQUJEVkRoR2sxSnJGa0xZQXRtZmhtemE4emd0YVA0SExxQ1BzbHZrTEov?= =?utf-8?B?RFpodFpYbXkyRUtYZHMrNUFoNWpGL3RTK1ZmT3BIMjdpTi9iMUxSbGpUa1ow?= =?utf-8?B?b28wbU9BVW0vV0JkWWt2SHVsa1VwcjVxcDZwaXc1WnUwOGNSWnpmZGpwUVpa?= =?utf-8?B?RG11STRKelluVzhSNGFzNUZYaUwzZHRaY1V6a2VFQlRES0ZIZVhhbVBoRnFC?= =?utf-8?B?ZGM1TjBrVUMxeGFzTDh3cmJjSmVFVkJBZitQKzVXNWhTc3VhUHlJeCtKcjJp?= =?utf-8?B?cUNTQXJzZlJQeXZiYUR4ejB4dG1KRVFLR1VaSjd6RUlrMTNSV0N2K3FOVTNx?= =?utf-8?B?R0JZMUFJOTFWd1NqSzBXUVRzaWV1WkZmOWhoWnhEUW1Gakp0YjgzU0dvMmhQ?= =?utf-8?B?cndyZVB6Q3VmaFovMmhVWlZ5Sm1RVndMYnNlTVpQdXV4elNadnA3RzE3ZXp1?= =?utf-8?B?aWlua3E4ZEc3cUp4ZjdEWVZKRnBoemlmWHVlVnVqT1dOV044NGpTQ2JqSFhk?= =?utf-8?B?d0NKY0h1ZWpNZWxKdDhWN1NZNDFBRDZNRmhoUnJKY25HOFlFUkFPOCtaakFX?= =?utf-8?B?MUZaNjUwbGtTODJFUk1wcmJpSXpzOEtNKzdrVkxpMzAzWVRVc0pYREN3ay9t?= =?utf-8?B?MkVQVzYxcVBYV01YMUF2dG04YkhUWWpGNk43YStnSSswcjRBMENGTUp6Snkv?= =?utf-8?B?TWNJQk1Ka3NwTStEaFFORGpQZ2dUOE9CMENJOVBsSWpRdXR5ZGVLZ3o1NXZW?= =?utf-8?B?VHlLTjRKQXRaOVdIdUswYitEZ1lLWGRPT2Z0eENCeHZGbVUwaEd3N29CTWVy?= =?utf-8?B?UWRwcGhJS3hOSmlxRlNiUkcvTUpUMHk1WWhWaXFFbTlKUVZURW1aeEVDTnJT?= =?utf-8?B?LzQvOGtQT2N4dWNyYlVUUUp6VFhHdENJYkYwVUQ2OGZ5d3htdDRDRVNWV0tH?= =?utf-8?B?YXA0ZURUWTluWkdrTkhHZDlJTHNvaEp6ZWpvcXVsMlFFQk5SZmVtOTFkdFBQ?= =?utf-8?B?eldkemlqSm5NZWhPTG1PdERZSnIxSkpvUDR5aEQ5K0k0bTVzYmNxazMveUpn?= =?utf-8?B?K2luRnJpY3A4a2FPcDl4aUlmNWxzbjhNVkNySW1MZUhKckFWMmllKzlYZ1Fz?= =?utf-8?B?Y0pOeG52MEJxSENNaGRRZXZET2tvcUo2VFFEM0hsK1lCZE81ck1zZWpFUnJZ?= =?utf-8?B?VDZQMEVFY0toYllvdExZZGdCK3hHUWw0Y1pNTnFYMzJrbVlwN3FickIweUUw?= =?utf-8?B?VWxIZG1QeWtRWVpnaUdQTHFtTG15UFdoQkRjN1ptNCtEK0VoMk8wZDVTcFpM?= =?utf-8?B?SzR2UzdPUkFRSUxRTDhVSEhZY2JhRE5tY0J1RFBaZ29BK3h2OFJxbWtPMVZr?= =?utf-8?B?MGY5V2tseWRnOFBvenA1SFZVbkIvNWRTQUt6QzBnbmprb24wOXQ0TEZCZ3NM?= =?utf-8?B?d3VQUlgxVVhkZk0wU0RLZGRDWHZSSlFTNW9CNit1bUpLZXpHUVpKekhwMmVp?= =?utf-8?B?bkd2SnhrVUcrd2plUFVNeHl3NmxWTyt5UU1WL0UvNjczZ0pDTWx3ZElteThO?= =?utf-8?B?dUpwcWNEZ0wxdlpvdFpSMHg2bWF6UHBFSGUwS0pqaUlUdVN1TXNZSVVDbjVj?= =?utf-8?B?ekIzMmZUMk5wNTdkWTBUYjJLT0tkTmo5WmNzM2wweWJyWmtVZU1IVlh0R0NN?= =?utf-8?B?UmpDeWp1QlpXWWF1VmFuRVhESGlsd3NTUnkzYSt5YXl1V1BqS3pBNmlPMVQ2?= =?utf-8?B?MlhteCtzdmRRVlNxWkIzbzZMYk5ldHVKclJRUG8xYy9HQWV1cEVwNmxYZ1Y0?= =?utf-8?B?L1Era2NMbFFRa3lwcDh1ZVVueldmbnQ5NkQ1UWZhWjlxaEtOVVJUTmJRS2FK?= =?utf-8?B?a1FpTnVwSDN3MlExdmVLMzVvNDB4QXVRR2FlSXZONWE1Q0lXN2FvSWs2eGNx?= =?utf-8?B?dDg3cnlPK1UydmZET1hvU1V5aEVqYzlCN1QzanpyWjExaUlyYVBUUG53b1Ru?= =?utf-8?B?azN2MkFyL2VUam9vTjJnOWh4YlBiSk5tMHpRVlFNeE5TT1NtdE9wUjkwZk01?= =?utf-8?B?K2hKdDZjQWhTT0Q4N2ZLM2JKTlQwTnBjNGlHMDR3UnVsMHE2U2FoWTVMVGdO?= =?utf-8?Q?0r92/8Lrh7Q6T6mMUBtrweQ=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <16F195FD537EA04EAF300D2CAE80BD75@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR10MB4344.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c1540ba9-e039-4516-849e-08d9ed9d31b5 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Feb 2022 20:29:24.8170 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: X2P/OYDGQ7bprOcmohmYZQnvpOcYI6y/vEyww1nFRbCo25dt4lmBv27JkFh6c1QnyLNqTc0bOhJ5oFqmBsCRVQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1001MB2143 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10255 signatures=673431 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 bulkscore=0 suspectscore=0 mlxlogscore=999 mlxscore=0 adultscore=0 malwarescore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2201110000 definitions=main-2202110106 X-Proofpoint-GUID: Q1F8pHLNWS6FZdH40FE_ruEBfXBK8R1X X-Proofpoint-ORIG-GUID: Q1F8pHLNWS6FZdH40FE_ruEBfXBK8R1X X-Spam-Status: No, score=-5.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Feb 2022 20:29:34 -0000 DQoNCj4gT24gRmViIDExLCAyMDIyLCBhdCAxOjM5IFBNLCBKYXNvbiBNZXJyaWxsIDxqYXNvbkBy ZWRoYXQuY29tPiB3cm90ZToNCj4gDQo+IE9uIDIvMTEvMjIgMTM6MTEsIFFpbmcgWmhhbyB3cm90 ZToNCj4+IEhpLCBKYXNvbiwNCj4+PiBPbiBGZWIgMTEsIDIwMjIsIGF0IDExOjI3IEFNLCBKYXNv biBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPiB3cm90ZToNCj4+Pj4+PiANCj4+Pj4+PiBTdXJl LCB3ZSBtaWdodCBhcyB3ZWxsIG1ha2UgdGhpcyBjb2RlIG1vcmUgcm9idXN0LiAgQnV0IHdlIGNh biBkbyBiZXR0ZXIgdGhhbiA8dW5uYW1lZCB0eXBlPiBpZiB3ZSBjaGVjayBUWVBFX1BUUk1FTUZV TkNfUC4NCj4+Pj4+IE9rYXksIHNvIHdoYXQgc2hvdWxkIHdlIHByaW50IHRvIHRoZSB1c2VyIGlm IGl0J3Mg4oCcVFlQRV9QVFJNRU1GVU5DX1DigJ0/IFByaW50IG5vdGhpbmcgb3Igc29tZSBzcGVj aWFsIHN0cmluZz8NCj4+Pj4+PiANCj4+Pj4+Pj4gMi4gVGhlIHNlY29uZCBsZXZlbCBpc3N1ZSBp cyB3aGF0IHlvdSBzdWdnZXN0ZWQgaW4gdGhlIGFib3ZlLCBzaGFsbCB3ZSBwcmludCB0aGUg4oCc Y29tcGlsZXIgZ2VuZXJhdGVkIGludGVybmFsIHR5cGXigJ0gIHRvIHRoZSB1c2VyPyBBbmQgSSBh Z3JlZSB3aXRoIHlvdSB0aGF0IGl0IG1pZ2h0IG5vdCBiZSBhIGdvb2QgaWRlYSB0byBwcmludCBz dWNoIGNvbXBpbGVyIGludGVybmFsIG5hbWVzIHRvIHRoZSB1c2VyLiAgQXJlIHdlIGRvIHRoaXMg cmlnaHQgbm93IGluIGdlbmVyYWw/IChpLmUsIGNoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgVFlQ RSBpcyBhIHNvdXJjZSBsZXZlbCBUWVBFIG9yIGEgY29tcGlsZXIgaW50ZXJuYWwgVFlQRSwgYW5k IHRoZW4gb25seSBwcmludCBvdXQgdGhlIG5hbWUgb2YgVFlQRSBmb3IgdGhlIHNvdXJjZSBsZXZl bCBUWVBFPykgYW5kIGlzIHRoZXJlIGEgYml0IGluIHRoZSBUWVBFIHRvIGRpc3Rpbmd1aXNoIHdo ZXRoZXIgYSBUWVBFIGlzIHVzZXIgLWxldmVsIHR5cGUgb3IgYSBjb21waWxlciBnZW5lcmF0ZWQg aW50ZXJuYWwgdHlwZT8NCj4+Pj4+PiANCj4+Pj4+Pj4+IEkgdGhpbmsgdGhlIHJlYWwgcHJvYmxl bSBjb21lcyBzb29uZXIsIHdoZW4gY19mb2xkX2luZGlyZWN0X3JlZl9mb3Jfd2FybiB0dXJucyBh IE1FTV9SRUYgd2l0aCBSRUNPUkRfVFlQRSBpbnRvIGEgQ09NUE9ORU5UX1JFRiB3aXRoIFBPSU5U RVJfVFlQRS4NCj4+Pj4+PiANCj4+Pj4+Pj4gV2hhdOKAmXMgdGhlIG1ham9yIGlzc3VlIGZvciB0 aGlzIHRyYW5zZm9ybWF0aW9uPyAoSSB3aWxsIHN0dWR5IHRoaXMgaW4gbW9yZSBkZXRhaWxzKS4N Cj4+Pj4+PiANCj4+Pj4+PiBXZSB0b2xkIGNfZm9sZF9pbmRpcmVjdF9yZWYgdGhhdCB3ZSB3YW50 IGEgUkVDT1JEX1RZUEUgKHRoZSBQTUYgYXMgYSB3aG9sZSkgYW5kIGl0IGdhdmUgdXMgYmFjayBh IFBPSU5URVJfVFlQRSBpbnN0ZWFkICh0aGUgX19wbWYgbWVtYmVyKS4gRm9sZGluZyBzaG91bGRu J3QgY2hhbmdlIHRoZSB0eXBlIG9mIGFuIGV4cHJlc3Npb24gbGlrZSB0aGF0Lg0KPj4+Pj4gDQo+ Pj4+PiBZZXMsIHRoaXMgaXMgbm90IGNvcnJlY3QgdHJhbnNmb3JtYXRpb24sIHdpbGwgc3R1ZHkg aW4gbW9yZSBkZXRhaWwgYW5kIHRyeSB0byBmaXggaXQuDQo+Pj4+IEFmdGVyIGEgZGVlcGVyIHN0 dWR5IG9mIGNvbW1pdCAgcjExLTY3MjktZ2FkYjUyMDYwNmNlM2UxZTEgKHdoaWNoIHRyaWdnZXJl ZCB0aGUgSUNFIGFuZCBpbnRyb2R1Y2VkIHRoZSBuZXcgcm91dGluZSDigJxjX2ZvbGRfaW5kaXJl Y3RfcmVmX2Zvcl93YXJu4oCdKSwgZnJvbSBteSB1bmRlcnN0YW5kaW5nLCAgdGhlIGFib3ZlIHRy YW5zZm9ybWF0aW9uIGZyb20gYSBSRUNPUkRfVFlQRSAodGhlIFBNRiBhcyBhIHdob2xlKSB0byBQ T0lOVEVSX1RZUEUgKHRoZSBfX3BtZiBtZW1iZXIpIGlzIHdoYXQgdGhlIGZ1bmN0aW9uIGludGVu ZGVkIHRvIGRvIGFzIGZvbGxvd2luZzoNCj4+Pj4gMTgyMyBzdGF0aWMgdHJlZQ0KPj4+PiAxODI0 IGNfZm9sZF9pbmRpcmVjdF9yZWZfZm9yX3dhcm4gKGxvY2F0aW9uX3QgbG9jLCB0cmVlIHR5cGUs IHRyZWUgb3AsDQo+Pj4+IDE4MjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0 X2ludCAmb2ZmKQ0KPj4+PiAxODI2IHsNCj4+Pj4g4oCmDQo+Pj4+IDE4NzAgKi8qICgoZm9vICop JnN0cnVjdF93aXRoX2Zvb19maWVsZClbeF0gPT4gQ09NUE9ORU5UX1JFRiAqLyoNCj4+Pj4gMTg3 MSAgIGVsc2UgaWYgKFRSRUVfQ09ERSAob3B0eXBlKSA9PSBSRUNPUkRfVFlQRSkNCj4+Pj4gMTg3 MiAgICAgew0KPj4+PiAxODczICAgICAgIGZvciAodHJlZSBmaWVsZCA9IFRZUEVfRklFTERTIChv cHR5cGUpOw0KPj4+PiAxODc0ICAgICAgICAgICAgZmllbGQ7IGZpZWxkID0gREVDTF9DSEFJTiAo ZmllbGQpKQ0KPj4+PiAxODc1ICAgICAgICAgaWYgKFRSRUVfQ09ERSAoZmllbGQpID09IEZJRUxE X0RFQ0wNCj4+Pj4g4oCmDQo+Pj4+IDE4ODYgaWYodXBvcyA8PSBvZmYgJiYgb2ZmIDwgdXBvcyAr IGVsX3N6KQ0KPj4+PiAxODg3ICAgICAgICAgICAgICAgew0KPj4+PiAxODg4ICAgICAgICAgICAg ICAgICB0cmVlIGNvcCA9IGJ1aWxkM19sb2MgKGxvYywgQ09NUE9ORU5UX1JFRiwgVFJFRV9UWVBF IChmaWVsZCksDQo+Pj4+IDE4ODkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvcCwgZmllbGQsIE5VTExfVFJFRSk7DQo+Pj4+IDE4OTAgICAgICAgICAgICAgICAgIG9mZiA9 IG9mZiAtIHVwb3M7DQo+Pj4+IFRoZSBhYm92ZSBjb2RlIHdhcyB1c2VkIHRvIHRyYW5zZm9ybSBh IE1FTV9SRUYgdG8gYSBSRUNPUkRfVFlQRSB0byBhIENPTVBPTkVOVF9SRUYgdG8gdGhlIGNvcnJl c3BvbmRpbmcgRklFTEQuDQo+Pj4gDQo+Pj4gWWVzLCB0aGF0J3Mgd2hhdCB0aGUgYWJvdmUgY29k ZSB3b3VsZCBjb3JyZWN0bHkgZG8gaWYgVFlQRSB3ZXJlIHRoZSBwb2ludGVyLXRvLW1ldGhvZCB0 eXBlLiAgSXQncyB3cm9uZyBmb3IgdGhpcyBjYXNlIGJlY2F1c2UgVFlQRSBpcyB1bnJlbGF0ZWQg dG8gVFJFRV9UWVBFIChmaWVsZCkuDQo+Pj4gDQo+Pj4gSSB0aGluayB0aGUgcHJvYmxlbSBpcyBq dXN0IHRoaXMgbGluZToNCj4+PiANCj4+Pj4gICAgICAgICAgICAgICAgaWYgKHRyZWUgcmV0ID0g Y19mb2xkX2luZGlyZWN0X3JlZl9mb3Jfd2FybiAobG9jLCB0eXBlLCBjb3AsDQo+Pj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9m ZikpDQo+Pj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+Pj4gICAgICAgICAgICAg ICAgcmV0dXJuIGNvcDsNCj4+PiAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl4NCj4+PiANCj4+ PiBUaGUgcmVjdXJzaXZlIGNhbGwgZG9lcyB0aGUgcHJvcGVyIHR5cGUgY2hlY2tpbmcsIGJ1dCB0 aGVuIHRoZSAicmV0dXJuIGNvcCIgbGluZSByZXR1cm5zIHRoZSBDT01QT05FTlRfUkVGIGV2ZW4g dGhvdWdoIHRoZSB0eXBlIGNoZWNrIGZhaWxlZC4gVGhlIHBhcmFsbGVsIGNvZGUgaW4gY3h4X2Zv bGRfaW5kaXJlY3RfcmVmXzEgZG9lc24ndCBoYXZlIHRoaXMgbGluZSwNCj4+IEp1c3QgY29tcGFy ZWQgdGhlIHJvdXRpbmUg4oCcY3h4X2ZvbGRfaW5kaXJlY3RfcmVmXzHigJ0gYW5kIOKAnGNfZm9s ZF9pbmRpcmVjdF9yZWZfZm9yX3dhcm7igJ0sIGxvb2tzIGxpa2UgdGhlcmUgYXJlIG1vcmUgcGxh Y2VzIHRoYXQgaGF2ZSBzdWNoIGRpZmZlcmVuY2UsIGZvciBleGFtcGxlLA0KPj4gSW4g4oCcY3h4 X2ZvbGRfaW5kaXJlY3RfcmVmXzHigJ06DQo+PiAgIC8qICgoZm9vICopJmZvb2FycmF5KVt4XSA9 PiBmb29hcnJheVt4XSAqLw0KPj4gICBlbHNlIGlmIChUUkVFX0NPREUgKG9wdHlwZSkgPT0gQVJS QVlfVFlQRQ0KPj4gICAgICAgICAgICAmJiB0cmVlX2ZpdHNfdWh3aV9wIChUWVBFX1NJWkVfVU5J VCAoVFJFRV9UWVBFIChvcHR5cGUpKSkNCj4+ICAgICAgICAgICAgJiYgIWludGVnZXJfemVyb3Ag KFRZUEVfU0laRV9VTklUIChUUkVFX1RZUEUgKG9wdHlwZSkpKSkNCj4+IOKApg0KPj4gICAgICAg aWYgKHRyZWVfZml0c191aHdpX3AgKG1pbl92YWwpKQ0KPj4gICAgICAgICB7DQo+PiAgICAgICAg ICAgdHJlZSBpbmRleCA9IHNpemVfaW50IChpZHggKyB0cmVlX3RvX3Vod2kgKG1pbl92YWwpKTsN Cj4+ICAgICAgICAgICBvcCA9IGJ1aWxkNF9sb2MgKGxvYywgQVJSQVlfUkVGLCBUUkVFX1RZUEUg KG9wdHlwZSksIG9wLCBpbmRleCwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTExf VFJFRSwgTlVMTF9UUkVFKTsNCj4+IAkgIHJldHVybiBjeHhfZm9sZF9pbmRpcmVjdF9yZWZfMSAo Y3R4LCBsb2MsIHR5cGUsIG9wLCByZW0sDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbXB0eV9iYXNlKTsNCj4+IAl9DQo+PiBIb3dldmVyLCBpbiDigJxjX2Zv bGRfaW5kaXJlY3RfcmVmX2Zvcl93YXJu4oCdLCB0aGUgY29ycmVzcG9uZGluZyBwYXJ0IGlzOg0K Pj4gICAvKiAoKGZvbyAqKSZmb29hcnJheSlbeF0gPT4gZm9vYXJyYXlbeF0gKi8NCj4+ICAgaWYg KFRSRUVfQ09ERSAob3B0eXBlKSA9PSBBUlJBWV9UWVBFDQo+PiAgICAgICAmJiBUWVBFX1NJWkVf VU5JVCAoVFJFRV9UWVBFIChvcHR5cGUpKQ0KPj4gICAgICAgJiYgVFJFRV9DT0RFIChUWVBFX1NJ WkVfVU5JVCAoVFJFRV9UWVBFIChvcHR5cGUpKSkgPT0gSU5URUdFUl9DU1QNCj4+ICAgICAgICYm ICFpbnRlZ2VyX3plcm9wIChUWVBFX1NJWkVfVU5JVCAoVFJFRV9UWVBFIChvcHR5cGUpKSkpDQo+ PiDigKYNCj4+ICAgICAgIGlmIChUUkVFX0NPREUgKG1pbl92YWwpID09IElOVEVHRVJfQ1NUKQ0K Pj4gICAgICAgICB7DQo+PiAgICAgICAgICAgdHJlZSBpbmRleA0KPj4gICAgICAgICAgICAgPSB3 aWRlX2ludF90b190cmVlIChzaXpldHlwZSwgaWR4ICsgd2k6OnRvX29mZnNldCAobWluX3ZhbCkp Ow0KPj4gICAgICAgICAgIG9wID0gYnVpbGQ0X2xvYyAobG9jLCBBUlJBWV9SRUYsIFRSRUVfVFlQ RSAob3B0eXBlKSwgb3AsIGluZGV4LA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM TF9UUkVFLCBOVUxMX1RSRUUpOw0KPj4gICAgICAgICAgIG9mZiA9IHJlbTsNCj4+ICAgICAgICAg ICBpZiAodHJlZSByZXQgPSBjX2ZvbGRfaW5kaXJlY3RfcmVmX2Zvcl93YXJuIChsb2MsIHR5cGUs IG9wLCBvZmYpKQ0KPj4gICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+ICAgICAgICAgICByZXR1 cm4gb3A7DQo+PiAgICAgICAgIH0NCj4+IFRoZSBleGFjdGx5IHNhbWUgZGlmZmVyZW5jZSBhcyBm b3Ig4oCcUkVDT1JEX1RZUEXigJ0uIFNvLCBJIHN1c3BlY3QgdGhhdCBpdOKAmXMgYSB0eXBvIGZv ciDigJxSRUNPUkRfVFlQReKAnSBpbiDigJxjX2ZvbGRfaW5kaXJlY3RfcmVmX2Zvcl93YXJu4oCd Lg0KPj4+IGFuZCByZW1vdmluZyBpdCBmaXhlcyB0aGUgdGVzdGNhc2UsIHNvIEkgc2VlDQo+Pj4g DQo+Pj4gd2FybmluZzog4oCYKihwdHJtZW1mdW5jKikmeC5wdHJtZW1mdW5jOjpwdHLigJkgaXMg dXNlZCB1bmluaXRpYWxpemVkDQo+PiBUaGUgcXVlc3Rpb24gaXM6DQo+PiBGb3IgdGhlIGZvbGxv d2luZyBJUjoNCj4+ICAgc3RydWN0IHNwIHg7DQo+PiAgIHZvaWQgKCo8VDM4OT4pICh2b2lkKSBf MTsNCj4+ICAuLi4NCj4+ICAgPGJiIDI+IFtsb2NhbCBjb3VudDogMTA3Mzc0MTgyNF06DQo+PiAg IF8xID0gTUVNWyhzdHJ1Y3QgcHRybWVtZnVuY19VICopJnhdLnB0cjsNCj4+ICAgXzcgPSBfMSAh PSA4QjsNCj4+IFdoaWNoIG1lc3NhZ2UgaXMgYmV0dGVyOg0KPj4gMS4gd2FybmluZzog4oCYKihw dHJtZW1mdW5jKikmeC5wdHJtZW1mdW5jOjpwdHLigJkgaXMgdXNlZCB1bmluaXRpYWxpemVkDQo+ PiBPcg0KPj4gMi4gd2FybmluZzog4oCYKihwdHJtZW1mdW5jKikoKGNoYXIqKSZ4ICsgb2Zmc2V0 b2Yodm9pZCAoUzo6KikoKSxfX1BUUk1FTUZVTkMpKS5wdHJtZW1mdW5jOjpwdHLigJkgaXMgdXNl ZCB1bmluaXRpYWxpemVkDQo+PiBGcm9tIHRoZSBzb3VyY2UgY29kZToNCj4+ID09PT0NCj4+IHN0 cnVjdCBTDQo+PiB7DQo+PiAgIGludCBqOw0KPj4gfTsNCj4+IHN0cnVjdCBUIDogcHVibGljIFMN Cj4+IHsNCj4+ICAgdmlydHVhbCB2b2lkIGggKCkge30NCj4+IH07DQo+PiBzdHJ1Y3QgcHRybWVt ZnVuYw0KPj4gew0KPj4gICB2b2lkICgqcHRyKSAoKTsNCj4+IH07DQo+PiB0eXBlZGVmIHZvaWQg KFM6OipzcCkoKTsNCj4+IGludCBtYWluICgpDQo+PiB7DQo+PiAgIFQgdDsNCj4+ICAgc3AgeDsN Cj4+ICAgcHRybWVtZnVuYyAqeHAgPSAocHRybWVtZnVuYyAqKSAmeDsNCj4+ICAgaWYgKHhwLT5w dHIgIT0gKCh2b2lkICgqKSgpKShzaXplb2Yodm9pZCAqKSkpKQ0KPj4gICAgIHJldHVybiAxOw0K Pj4gfQ0KPj4gPT09PQ0KPj4gVGhlIHJlZmVyZW5jZSDigJx4cC0+cHRy4oCdIHdlbnQgdGhyb3Vn aCBmcm9tIOKAnHjigJ0gdG8g4oCceHDigJ0sIGFuZCB0aGVyZSBpcyBhIGNsZWFyIHR5cGUgY2Fz dGluZyBmcm9tIFM6Ol9fUFRSTUVNRlVOQyB0byBwdHJtZW1mdW5jOjpwdHIuDQo+PiBTaGFsbCB3 ZSBlbWl0IHN1Y2ggdHlwZSBjYXN0aW5nIHRvIHRoZSB1c2VyPw0KPiANCj4gQnV0IHRoZXJlIGlz IG5vIHN1Y2ggY2FzdCBpbiB0aGUgc291cmNlOyB0aGUgY2FzdCBpcyAocHRybWVtZnVuYyopJngs IHdoaWNoIGFwcGVhcnMgaW4gdGhlIGZpeGVkIG1lc3NhZ2UuDQoNCnN0aWxsIGEgbGl0dGxlIGNv bmZ1c2VkIGhlcmU6ICB0aGUgb3JpZ2luYWwgdHlwZSBmb3Ig4oCceOKAnSBpcyDigJxzcOKAnSAo aXMg4oCcc3DigJ0gZXF1YWwgdG8g4oCcUzo6X19QVFJNRU1GVU5D4oCdPyksIHRoZW4gaXQgd2Fz IGNhc3RlZCB0byDigJxwdHJtZW1mdW5jICrigJ0uDQpTbywgc2hvdWxkIHRoaXMgdHlwZSBjb252 ZXJzaW9uIGZyb20g4oCcUzo6X19QVFJNRU1GVU5D4oCdIHRvIOKAnHB0cm1lbWZ1bmMgKuKAnSBi ZSBleHBvc2VkIHRvIHRoZSB1c2VyIGluIHRoZSBtZXNzYWdlPyANCg0KUWluZw0KPiANCj4gVGhv dWdoICoocHRybWVtZnVuYyopJngucHRybWVtZnVuYzo6cHRyIGlzIHdyb25nIHN5bnRheCwgaXQg c2hvdWxkIGJlICgocHRybWVtZnVuYyopJngpLT5wdHINCj4gDQo+IEpha3ViLCB0aGlzIGlzIHlv dXIgY29kZSBmcm9tIHIxMS02NzI5OyBmcm9tIHRoZSBjb21tZW50IG9uIHRoYXQgY29tbWl0IGl0 IHNvdW5kcyBsaWtlIHlvdSB3ZXJlIGRlbGliZXJhdGVseSBpZ25vcmluZyB0eXBlIGluY29tcGF0 aWJpbGl0eSBoZXJlLCBhbmQgbXkgc3VnZ2VzdGVkIGZpeCBjaGFuZ2VzIHR3byBsaW5lcyBpbiB1 bmluaXQtNDAuYy4gIFdoYXQgZG8geW91IHRoaW5rIHNob3VsZCBoYXBwZW4gZm9yIHRoaXMgdGVz dGNhc2U/DQo+IA0KPiBKYXNvbg0KDQo=