From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id D9BA6385842F for ; Fri, 11 Feb 2022 22:19:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D9BA6385842F Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 21BL0So8023181; Fri, 11 Feb 2022 22:19:45 GMT Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by mx0b-00069f02.pphosted.com with ESMTP id 3e5pmv9ga3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 11 Feb 2022 22:19:45 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 21BMFQMY058306; Fri, 11 Feb 2022 22:19:43 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2173.outbound.protection.outlook.com [104.47.57.173]) by userp3020.oracle.com with ESMTP id 3e1jpyhggr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 11 Feb 2022 22:19:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hZ6PiJjqPWuURM8lWkhvo+PZr8u2qi2IhvKNgHulfpTFY53tGi+E92q/2k8Ez5zxZ5/JVyn7gAu+vfqh/ZAD/kfAmSE/cEMEEzfA5RZO27H3PEieCjYmhEQnIdl76vbSYu5EbuUh7X0p1DsI0X/CydofDr10sKpob/gBThHi7OKfNR5QWIn0ChyU9wdRI5oHTt5a/RcExueh0OBtrO2hIKthMEs08AWvLK2OQ2MYCfSId7Rb1B2/FDUz9ViFWUfJGCxy4tMT0Z22tVZwWepEJhiLfL1OKRSaRbh+Rgz6vNunnccObL9/jOXi2cTVqqMwlv4WL9YwT9A6TvaDD9vIdQ== 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=9eVjBuwMZhxpvK307sKGUYFCW9UIpPvFgtB1aJuWeDo=; b=WHdAP5scnh7jphaF3CwOA5CSSWx4iFtySVx1CrpmS+S/2KkLsRO5yea962jBPYeTUqaOsqSVM8N+QeObstuSrbqePZbl93loE9DzUuFeBJ29fN9OfXUSXaaCN6ocgawVM+QO5Jep9Rzd0i+INw+eWwey41TeoPfJYyXVuhlOp+Kn1mccdE52ZEdZzVFpRQKu7HiIsP7xE1KF8+S+fnhD5OPXTp8A//wiSrSGa0w51XtNEZXw5JQX1C8gOsh4z4dy5MhcQAVRWieeDxc5myt2z88by+TPPCV4k8xCChO/FSP7vLLRX1CDCpXSoj1o7h6mhg85E9UMM+s5uugWF3D/CQ== 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 DM5PR10MB1356.namprd10.prod.outlook.com (2603:10b6:3:11::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.12; Fri, 11 Feb 2022 22:19:42 +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 22:19:42 +0000 From: Qing Zhao To: Jason Merrill CC: Jakub Jelinek , 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+AIAAGJEAgAAN64CAABemgIAABymA Date: Fri, 11 Feb 2022 22:19:41 +0000 Message-ID: <7CD68E8E-4594-43F0-8964-605B5B33A171@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> <58075E24-AD19-4B12-9550-DB0464F469DB@oracle.com> <1af663c5-6451-06ec-8c98-7a22e6a83c42@redhat.com> In-Reply-To: <1af663c5-6451-06ec-8c98-7a22e6a83c42@redhat.com> 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: d03b07d8-2398-46aa-7df8-08d9edac99cd x-ms-traffictypediagnostic: DM5PR10MB1356: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: i80+K+xsZcBraluD/d2BTreKRYyqqt353lrQrKtCbNMlY/uvJmRAcVZDGroMEw7R+wkcaKIJG27EI2ZVWEKLLhvmI8sxvv6Uzby90s5gbY7E2py9WPSVCUUAnPOpZYt0L6c/hGGh3WKlEIWaaumcH2iCzzkY1Ynsld8Q33At5Yt7v60pzDhtbmdRXebdlfRsNyVa4i6BTHAnSezRZLe8QYiNNuHLaEDACcm1bB0Xnh+VsW3vLcDF94oCbMGr7Zr1zVoD6aHnCi+k4hwGFCl5W2BmwGhkF+Qhg/TBqZLu98bBcFxM9QaxtfGQ+kCwVZofqh1Bn3zByVbLglt9yLz4EIMa/QFAXf/dU2BaQmlmv8idTT/W4znC8GfEYji77jnuTGNRrA6k/RNOcZ3z+xroG5JIGibknaLV5TtJpILt8acfxwAEIxpj4gUPRYIInhIf2Zmc+UA2TSZOCWPLoZUV/BWucRGn0W8oaO3v3aiFOli4GjKLV2FzkimAo0OaeksgyNh6szdjDypPsWaSWfM0hJQDcRdJdEzXfx2xXcKyayOfOBwHVwshsIy3MsJDK7IHjuRZCutaC++LnBwRR+ImvPaDte+x7QEDbyiitoov4W7dUrSD4n49y/TtBeyennoTHWJp5mLCWvpmHhVj1WJJEcdcUhR5hGsmOPMx11/1aoUEGcUqrVfZuqJciU3IpPO2icBeeuKXwUt2oNwVGrMpExxW+aw0T6V2hvrS3SDaNss= 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)(2616005)(91956017)(76116006)(6916009)(66476007)(66556008)(66446008)(508600001)(38100700002)(38070700005)(66946007)(316002)(64756008)(8936002)(54906003)(4326008)(33656002)(6512007)(44832011)(83380400001)(36756003)(6486002)(6506007)(86362001)(71200400001)(5660300002)(8676002)(122000001)(186003)(53546011)(2906002)(45980500001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RDJ6aXpyZHJoNEY2Zk45amc2V3d3dW9IMTBTRkM0ZEtCN0dqS1Q2NElpWGVC?= =?utf-8?B?K0w5S1BSdGUzRGptbGJ3eFpOOWhYT3gwS2xBMlJHc1gxUzJLWmtEUlNyalY3?= =?utf-8?B?NHl1dmdFdlN2Z1pPenp1VHVNTkR4VXNlazFJdVZKWmpBZGplcnZ3T2JmRml4?= =?utf-8?B?c2xCOHI1N3pyTzVoMXpxU0doWU5lSGNhTU9oVEFIRnFZSmEyNnlWcGk3U2g2?= =?utf-8?B?TlNPUGZWNXNSSitCVzVhUjBoZEI2Y2tYazFueElnaytTRCsydjNGRjEzZGFo?= =?utf-8?B?Y2VFTnhUSldib2tXTDMrajBwZG52cTVLSVVBeXlRT2ZIc2QrcFJIMnZjS0VH?= =?utf-8?B?YXNKc2I5bkc1NVA2WXdDNmY5d09XcTBHMDRIUTFOUVExaUhrMVZoVkVWY3RF?= =?utf-8?B?clRGR1ZTclFkY1VUSFQ1S1NtdWZiUCtjR3RUVWdnczQwRkVSQ1lvTEhzKzR4?= =?utf-8?B?ZWNYQWYrOW9YeS8xMUhVNm1zMzdqOS9FUjk5UHFnS0ZOdFR1LzFTZ0lCNkkv?= =?utf-8?B?WUhQalpxY2FrSENyQkpZUTJneGh5V0Rta0RManBScXc1c1BIMHpFSjlVaHE0?= =?utf-8?B?bE5rMFYzRHdhWHphZ04yOVpYRk82Z3dWTERuVVRYL0RTWkpyNkNJYnNsYW4x?= =?utf-8?B?RDJaOUdGUlJnblJ5NVlVSEh2bE5SRHZxSTF1b1Vuc0J5eE1jVHVCQ1krNXpx?= =?utf-8?B?SGMwMU1iRnBjNkpYRis5TnkzdGdLRWFnR09CUUdTM3lRR3p5eXoxc09sRTBr?= =?utf-8?B?T1RXZ0VmSkhnQjhyUjk2MTZSOFhqWmZiNU5udmg4Y042ajcyTG15QWRab0Ja?= =?utf-8?B?MUdEMXNuejRmL2tJRkNBWmQrVk5lSldqNm9OVTcwckxLNUt5MXVRdkhoMDFv?= =?utf-8?B?OUdZWUxXbVJKZk1XSm0xam9YbEJlS0dVVm5HcHk4bjFpbGJSQmFvUjhiMnJL?= =?utf-8?B?bnZQTC9tM1dBZ1pjSnVLeXV6YnhuUVN5R0RNZkVibStCelVuNnBORDFHUWhx?= =?utf-8?B?WU5jcGZiUDZVanVrVTFad0h6b1ZwYTZJN3Bqcll0dGFPZDI3UTNId1lBbmx2?= =?utf-8?B?UWhFMkhmRlFKeS8xalNUR0VaR25CSXBzakxjS0ljMFBSc2VvZDMrajFCWElG?= =?utf-8?B?ejBMc1lvMEdoT3VRdHZIZHpmNWFrb0hpOEtqWnJwWXNyb3NFT1RJN05jaVM0?= =?utf-8?B?MnlNT0dLRnBsNnZEVldLMEdJb0lXbDVqRk0rR0wrTmd2ekF3dW5WeG5yL2Yr?= =?utf-8?B?dkVhRjJ3MzF1d2FtQUZvUzkvR3hlN1Q0QlV6SGhJMlFmazkyVzRJTFV6UWl2?= =?utf-8?B?L0M5ZkZIcTNzV1d4M0h3SlBlUXNPYWMvV3V6RndGV3hxWDRlQ0dsZCtIM3Vu?= =?utf-8?B?V3pwT1NxdGtlRy8yVS8xK3hGT2pjTWFra3dkUlI3SlJqN1pGSDRwelcweWRJ?= =?utf-8?B?ei9yaXhvMGhGZ29EcURDQzRFYjRZMFprUDV2MUhibnN5Zy9TbFhhdndnMDlw?= =?utf-8?B?Uk1Jbk1PbUsydmZJYWpHbXEvQmhVSkhLd0NSVlBOanFFcFBiWmUySG9MRW5O?= =?utf-8?B?NDZwQThNbjJ1WWRzQlFtOW5Xa0FVU0tJQWw4U09saVVBMm9IaHNXUmpISDBa?= =?utf-8?B?MEZ2UThDQTgvNTlyM3dLSEl4dmtFZjk1N21pQjkwcGZqd3dVdmVXQXpvMlhG?= =?utf-8?B?R2xid0JpUVZ4alMzYVF3Y0JLeVZHVytYNWI4MFJQMGJSWkI1RG0xZ0VKVm9V?= =?utf-8?B?L1BTQnJlaXE1UlZ5Y0cxWk42YnBsTjRCOGFJK3dHbXdoeXdwdGRORit6TStp?= =?utf-8?B?Z1lhbTNiWEhFOGZMOVlBOTNMMURhZTJLU2NKTER4Q0tteHRxclB3N0k4Tlp6?= =?utf-8?B?Y08rTHM3WHJsVHR4dXg5YlRubVhTZ0FSTmhIT1g0bXJSd0FMY0ZEZi9uWDRP?= =?utf-8?B?cEFxVTBJSGtqQzYyS0RuWVk1UnAybEN3U2VXQi9HTmdlaEpuTFIyVUtlS1p0?= =?utf-8?B?UVh2encwTzlTeXpXVTN4aXNhMzRRWFg3ZzgwbUUzVG1QK054UUQ2bDZscmZU?= =?utf-8?B?UXU4UWU4UTZGQ3R4NEtzSG9YcDhOUUFyNkhGM2QrQnM0dEFhWHNUeUx5d2hy?= =?utf-8?B?R2ZuWGVRN3ArUVA5aUMwdW5qdG5UbmVPTU51aW9GY0pWZFYwKzdpSkNLVUxP?= =?utf-8?B?d0g1YWh4N0M3Q1F6T0dBbWZsOEZJc0JHN0p2QXQ1R0VaYkUwU0JYWWNVaTlw?= =?utf-8?B?dEhFNmZ0THh0NDlxM1ZKRGExYXhBPT0=?= Content-Type: text/plain; charset="utf-8" Content-ID: <6C52EC67DF5EF04AABD789EAF552DABF@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: d03b07d8-2398-46aa-7df8-08d9edac99cd X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Feb 2022 22:19:41.9237 (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: 5a8WdnuZc/rStRLY9yctrLy3J6ckcNjHYZNWonthbuioh6YbyAgzOdo8UlzoUqtsWV4vbEdUgFBhPLU3Y0+Dig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR10MB1356 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10255 signatures=673431 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 mlxscore=0 bulkscore=0 malwarescore=0 suspectscore=0 phishscore=0 adultscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2201110000 definitions=main-2202110112 X-Proofpoint-GUID: WKcwxhqAfIeLORLIgz59P3oYuSFRTKK- X-Proofpoint-ORIG-GUID: WKcwxhqAfIeLORLIgz59P3oYuSFRTKK- X-Spam-Status: No, score=-5.3 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 22:19:49 -0000 DQoNCj4gT24gRmViIDExLCAyMDIyLCBhdCAzOjU0IFBNLCBKYXNvbiBNZXJyaWxsIDxqYXNvbkBy ZWRoYXQuY29tPiB3cm90ZToNCj4gDQo+IE9uIDIvMTEvMjIgMTU6MjksIFFpbmcgWmhhbyB3cm90 ZToNCj4+PiBPbiBGZWIgMTEsIDIwMjIsIGF0IDE6MzkgUE0sIEphc29uIE1lcnJpbGwgPGphc29u QHJlZGhhdC5jb20+IHdyb3RlOg0KPj4+IA0KPj4+IE9uIDIvMTEvMjIgMTM6MTEsIFFpbmcgWmhh byB3cm90ZToNCj4+Pj4gSGksIEphc29uLA0KPj4+Pj4gT24gRmViIDExLCAyMDIyLCBhdCAxMToy NyBBTSwgSmFzb24gTWVycmlsbCA8amFzb25AcmVkaGF0LmNvbT4gd3JvdGU6DQo+Pj4+Pj4+PiAN Cj4+Pj4+Pj4+IFN1cmUsIHdlIG1pZ2h0IGFzIHdlbGwgbWFrZSB0aGlzIGNvZGUgbW9yZSByb2J1 c3QuICBCdXQgd2UgY2FuIGRvIGJldHRlciB0aGFuIDx1bm5hbWVkIHR5cGU+IGlmIHdlIGNoZWNr IFRZUEVfUFRSTUVNRlVOQ19QLg0KPj4+Pj4+PiBPa2F5LCBzbyB3aGF0IHNob3VsZCB3ZSBwcmlu dCB0byB0aGUgdXNlciBpZiBpdCdzIOKAnFRZUEVfUFRSTUVNRlVOQ19Q4oCdPyBQcmludCBub3Ro aW5nIG9yIHNvbWUgc3BlY2lhbCBzdHJpbmc/DQo+Pj4+Pj4+PiANCj4+Pj4+Pj4+PiAyLiBUaGUg c2Vjb25kIGxldmVsIGlzc3VlIGlzIHdoYXQgeW91IHN1Z2dlc3RlZCBpbiB0aGUgYWJvdmUsIHNo YWxsIHdlIHByaW50IHRoZSDigJxjb21waWxlciBnZW5lcmF0ZWQgaW50ZXJuYWwgdHlwZeKAnSAg dG8gdGhlIHVzZXI/IEFuZCBJIGFncmVlIHdpdGggeW91IHRoYXQgaXQgbWlnaHQgbm90IGJlIGEg Z29vZCBpZGVhIHRvIHByaW50IHN1Y2ggY29tcGlsZXIgaW50ZXJuYWwgbmFtZXMgdG8gdGhlIHVz ZXIuICBBcmUgd2UgZG8gdGhpcyByaWdodCBub3cgaW4gZ2VuZXJhbD8gKGkuZSwgY2hlY2sgd2hl dGhlciB0aGUgY3VycmVudCBUWVBFIGlzIGEgc291cmNlIGxldmVsIFRZUEUgb3IgYSBjb21waWxl ciBpbnRlcm5hbCBUWVBFLCBhbmQgdGhlbiBvbmx5IHByaW50IG91dCB0aGUgbmFtZSBvZiBUWVBF IGZvciB0aGUgc291cmNlIGxldmVsIFRZUEU/KSBhbmQgaXMgdGhlcmUgYSBiaXQgaW4gdGhlIFRZ UEUgdG8gZGlzdGluZ3Vpc2ggd2hldGhlciBhIFRZUEUgaXMgdXNlciAtbGV2ZWwgdHlwZSBvciBh IGNvbXBpbGVyIGdlbmVyYXRlZCBpbnRlcm5hbCB0eXBlPw0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4+ IEkgdGhpbmsgdGhlIHJlYWwgcHJvYmxlbSBjb21lcyBzb29uZXIsIHdoZW4gY19mb2xkX2luZGly ZWN0X3JlZl9mb3Jfd2FybiB0dXJucyBhIE1FTV9SRUYgd2l0aCBSRUNPUkRfVFlQRSBpbnRvIGEg Q09NUE9ORU5UX1JFRiB3aXRoIFBPSU5URVJfVFlQRS4NCj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IFdo YXTigJlzIHRoZSBtYWpvciBpc3N1ZSBmb3IgdGhpcyB0cmFuc2Zvcm1hdGlvbj8gKEkgd2lsbCBz dHVkeSB0aGlzIGluIG1vcmUgZGV0YWlscykuDQo+Pj4+Pj4+PiANCj4+Pj4+Pj4+IFdlIHRvbGQg Y19mb2xkX2luZGlyZWN0X3JlZiB0aGF0IHdlIHdhbnQgYSBSRUNPUkRfVFlQRSAodGhlIFBNRiBh cyBhIHdob2xlKSBhbmQgaXQgZ2F2ZSB1cyBiYWNrIGEgUE9JTlRFUl9UWVBFIGluc3RlYWQgKHRo ZSBfX3BtZiBtZW1iZXIpLiBGb2xkaW5nIHNob3VsZG4ndCBjaGFuZ2UgdGhlIHR5cGUgb2YgYW4g ZXhwcmVzc2lvbiBsaWtlIHRoYXQuDQo+Pj4+Pj4+IA0KPj4+Pj4+PiBZZXMsIHRoaXMgaXMgbm90 IGNvcnJlY3QgdHJhbnNmb3JtYXRpb24sIHdpbGwgc3R1ZHkgaW4gbW9yZSBkZXRhaWwgYW5kIHRy eSB0byBmaXggaXQuDQo+Pj4+Pj4gQWZ0ZXIgYSBkZWVwZXIgc3R1ZHkgb2YgY29tbWl0ICByMTEt NjcyOS1nYWRiNTIwNjA2Y2UzZTFlMSAod2hpY2ggdHJpZ2dlcmVkIHRoZSBJQ0UgYW5kIGludHJv ZHVjZWQgdGhlIG5ldyByb3V0aW5lIOKAnGNfZm9sZF9pbmRpcmVjdF9yZWZfZm9yX3dhcm7igJ0p LCBmcm9tIG15IHVuZGVyc3RhbmRpbmcsICB0aGUgYWJvdmUgdHJhbnNmb3JtYXRpb24gZnJvbSBh IFJFQ09SRF9UWVBFICh0aGUgUE1GIGFzIGEgd2hvbGUpIHRvIFBPSU5URVJfVFlQRSAodGhlIF9f cG1mIG1lbWJlcikgaXMgd2hhdCB0aGUgZnVuY3Rpb24gaW50ZW5kZWQgdG8gZG8gYXMgZm9sbG93 aW5nOg0KPj4+Pj4+IDE4MjMgc3RhdGljIHRyZWUNCj4+Pj4+PiAxODI0IGNfZm9sZF9pbmRpcmVj dF9yZWZfZm9yX3dhcm4gKGxvY2F0aW9uX3QgbG9jLCB0cmVlIHR5cGUsIHRyZWUgb3AsDQo+Pj4+ Pj4gMTgyNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRfaW50ICZvZmYpDQo+ Pj4+Pj4gMTgyNiB7DQo+Pj4+Pj4g4oCmDQo+Pj4+Pj4gMTg3MCAqLyogKChmb28gKikmc3RydWN0 X3dpdGhfZm9vX2ZpZWxkKVt4XSA9PiBDT01QT05FTlRfUkVGICovKg0KPj4+Pj4+IDE4NzEgICBl bHNlIGlmIChUUkVFX0NPREUgKG9wdHlwZSkgPT0gUkVDT1JEX1RZUEUpDQo+Pj4+Pj4gMTg3MiAg ICAgew0KPj4+Pj4+IDE4NzMgICAgICAgZm9yICh0cmVlIGZpZWxkID0gVFlQRV9GSUVMRFMgKG9w dHlwZSk7DQo+Pj4+Pj4gMTg3NCAgICAgICAgICAgIGZpZWxkOyBmaWVsZCA9IERFQ0xfQ0hBSU4g KGZpZWxkKSkNCj4+Pj4+PiAxODc1ICAgICAgICAgaWYgKFRSRUVfQ09ERSAoZmllbGQpID09IEZJ RUxEX0RFQ0wNCj4+Pj4+PiDigKYNCj4+Pj4+PiAxODg2IGlmKHVwb3MgPD0gb2ZmICYmIG9mZiA8 IHVwb3MgKyBlbF9zeikNCj4+Pj4+PiAxODg3ICAgICAgICAgICAgICAgew0KPj4+Pj4+IDE4ODgg ICAgICAgICAgICAgICAgIHRyZWUgY29wID0gYnVpbGQzX2xvYyAobG9jLCBDT01QT05FTlRfUkVG LCBUUkVFX1RZUEUgKGZpZWxkKSwNCj4+Pj4+PiAxODg5ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb3AsIGZpZWxkLCBOVUxMX1RSRUUpOw0KPj4+Pj4+IDE4OTAgICAgICAg ICAgICAgICAgIG9mZiA9IG9mZiAtIHVwb3M7DQo+Pj4+Pj4gVGhlIGFib3ZlIGNvZGUgd2FzIHVz ZWQgdG8gdHJhbnNmb3JtIGEgTUVNX1JFRiB0byBhIFJFQ09SRF9UWVBFIHRvIGEgQ09NUE9ORU5U X1JFRiB0byB0aGUgY29ycmVzcG9uZGluZyBGSUVMRC4NCj4+Pj4+IA0KPj4+Pj4gWWVzLCB0aGF0 J3Mgd2hhdCB0aGUgYWJvdmUgY29kZSB3b3VsZCBjb3JyZWN0bHkgZG8gaWYgVFlQRSB3ZXJlIHRo ZSBwb2ludGVyLXRvLW1ldGhvZCB0eXBlLiAgSXQncyB3cm9uZyBmb3IgdGhpcyBjYXNlIGJlY2F1 c2UgVFlQRSBpcyB1bnJlbGF0ZWQgdG8gVFJFRV9UWVBFIChmaWVsZCkuDQo+Pj4+PiANCj4+Pj4+ IEkgdGhpbmsgdGhlIHByb2JsZW0gaXMganVzdCB0aGlzIGxpbmU6DQo+Pj4+PiANCj4+Pj4+PiAg ICAgICAgICAgICAgICBpZiAodHJlZSByZXQgPSBjX2ZvbGRfaW5kaXJlY3RfcmVmX2Zvcl93YXJu IChsb2MsIHR5cGUsIGNvcCwNCj4+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmYpKQ0KPj4+Pj4+ICAgICAgICAgICAgICAg ICAgcmV0dXJuIHJldDsNCj4+Pj4+PiAgICAgICAgICAgICAgICByZXR1cm4gY29wOw0KPj4+Pj4g ICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eDQo+Pj4+PiANCj4+Pj4+IFRoZSByZWN1cnNpdmUg Y2FsbCBkb2VzIHRoZSBwcm9wZXIgdHlwZSBjaGVja2luZywgYnV0IHRoZW4gdGhlICJyZXR1cm4g Y29wIiBsaW5lIHJldHVybnMgdGhlIENPTVBPTkVOVF9SRUYgZXZlbiB0aG91Z2ggdGhlIHR5cGUg Y2hlY2sgZmFpbGVkLiBUaGUgcGFyYWxsZWwgY29kZSBpbiBjeHhfZm9sZF9pbmRpcmVjdF9yZWZf MSBkb2Vzbid0IGhhdmUgdGhpcyBsaW5lLA0KPj4+PiBKdXN0IGNvbXBhcmVkIHRoZSByb3V0aW5l IOKAnGN4eF9mb2xkX2luZGlyZWN0X3JlZl8x4oCdIGFuZCDigJxjX2ZvbGRfaW5kaXJlY3RfcmVm X2Zvcl93YXJu4oCdLCBsb29rcyBsaWtlIHRoZXJlIGFyZSBtb3JlIHBsYWNlcyB0aGF0IGhhdmUg c3VjaCBkaWZmZXJlbmNlLCBmb3IgZXhhbXBsZSwNCj4+Pj4gSW4g4oCcY3h4X2ZvbGRfaW5kaXJl Y3RfcmVmXzHigJ06DQo+Pj4+ICAgLyogKChmb28gKikmZm9vYXJyYXkpW3hdID0+IGZvb2FycmF5 W3hdICovDQo+Pj4+ICAgZWxzZSBpZiAoVFJFRV9DT0RFIChvcHR5cGUpID09IEFSUkFZX1RZUEUN Cj4+Pj4gICAgICAgICAgICAmJiB0cmVlX2ZpdHNfdWh3aV9wIChUWVBFX1NJWkVfVU5JVCAoVFJF RV9UWVBFIChvcHR5cGUpKSkNCj4+Pj4gICAgICAgICAgICAmJiAhaW50ZWdlcl96ZXJvcCAoVFlQ RV9TSVpFX1VOSVQgKFRSRUVfVFlQRSAob3B0eXBlKSkpKQ0KPj4+PiDigKYNCj4+Pj4gICAgICAg aWYgKHRyZWVfZml0c191aHdpX3AgKG1pbl92YWwpKQ0KPj4+PiAgICAgICAgIHsNCj4+Pj4gICAg ICAgICAgIHRyZWUgaW5kZXggPSBzaXplX2ludCAoaWR4ICsgdHJlZV90b191aHdpIChtaW5fdmFs KSk7DQo+Pj4+ICAgICAgICAgICBvcCA9IGJ1aWxkNF9sb2MgKGxvYywgQVJSQVlfUkVGLCBUUkVF X1RZUEUgKG9wdHlwZSksIG9wLCBpbmRleCwNCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTF9UUkVFLCBOVUxMX1RSRUUpOw0KPj4+PiAJICByZXR1cm4gY3h4X2ZvbGRfaW5kaXJl Y3RfcmVmXzEgKGN0eCwgbG9jLCB0eXBlLCBvcCwgcmVtLA0KPj4+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eV9iYXNlKTsNCj4+Pj4gCX0NCj4+Pj4gSG93 ZXZlciwgaW4g4oCcY19mb2xkX2luZGlyZWN0X3JlZl9mb3Jfd2FybuKAnSwgdGhlIGNvcnJlc3Bv bmRpbmcgcGFydCBpczoNCj4+Pj4gICAvKiAoKGZvbyAqKSZmb29hcnJheSlbeF0gPT4gZm9vYXJy YXlbeF0gKi8NCj4+Pj4gICBpZiAoVFJFRV9DT0RFIChvcHR5cGUpID09IEFSUkFZX1RZUEUNCj4+ Pj4gICAgICAgJiYgVFlQRV9TSVpFX1VOSVQgKFRSRUVfVFlQRSAob3B0eXBlKSkNCj4+Pj4gICAg ICAgJiYgVFJFRV9DT0RFIChUWVBFX1NJWkVfVU5JVCAoVFJFRV9UWVBFIChvcHR5cGUpKSkgPT0g SU5URUdFUl9DU1QNCj4+Pj4gICAgICAgJiYgIWludGVnZXJfemVyb3AgKFRZUEVfU0laRV9VTklU IChUUkVFX1RZUEUgKG9wdHlwZSkpKSkNCj4+Pj4g4oCmDQo+Pj4+ICAgICAgIGlmIChUUkVFX0NP REUgKG1pbl92YWwpID09IElOVEVHRVJfQ1NUKQ0KPj4+PiAgICAgICAgIHsNCj4+Pj4gICAgICAg ICAgIHRyZWUgaW5kZXgNCj4+Pj4gICAgICAgICAgICAgPSB3aWRlX2ludF90b190cmVlIChzaXpl dHlwZSwgaWR4ICsgd2k6OnRvX29mZnNldCAobWluX3ZhbCkpOw0KPj4+PiAgICAgICAgICAgb3Ag PSBidWlsZDRfbG9jIChsb2MsIEFSUkFZX1JFRiwgVFJFRV9UWVBFIChvcHR5cGUpLCBvcCwgaW5k ZXgsDQo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTExfVFJFRSwgTlVMTF9UUkVF KTsNCj4+Pj4gICAgICAgICAgIG9mZiA9IHJlbTsNCj4+Pj4gICAgICAgICAgIGlmICh0cmVlIHJl dCA9IGNfZm9sZF9pbmRpcmVjdF9yZWZfZm9yX3dhcm4gKGxvYywgdHlwZSwgb3AsIG9mZikpDQo+ Pj4+ICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+Pj4+ICAgICAgICAgICByZXR1cm4gb3A7DQo+ Pj4+ICAgICAgICAgfQ0KPj4+PiBUaGUgZXhhY3RseSBzYW1lIGRpZmZlcmVuY2UgYXMgZm9yIOKA nFJFQ09SRF9UWVBF4oCdLiBTbywgSSBzdXNwZWN0IHRoYXQgaXTigJlzIGEgdHlwbyBmb3Ig4oCc UkVDT1JEX1RZUEXigJ0gaW4g4oCcY19mb2xkX2luZGlyZWN0X3JlZl9mb3Jfd2FybuKAnS4NCj4+ Pj4+IGFuZCByZW1vdmluZyBpdCBmaXhlcyB0aGUgdGVzdGNhc2UsIHNvIEkgc2VlDQo+Pj4+PiAN Cj4+Pj4+IHdhcm5pbmc6IOKAmCoocHRybWVtZnVuYyopJngucHRybWVtZnVuYzo6cHRy4oCZIGlz IHVzZWQgdW5pbml0aWFsaXplZA0KPj4+PiBUaGUgcXVlc3Rpb24gaXM6DQo+Pj4+IEZvciB0aGUg Zm9sbG93aW5nIElSOg0KPj4+PiAgIHN0cnVjdCBzcCB4Ow0KPj4+PiAgIHZvaWQgKCo8VDM4OT4p ICh2b2lkKSBfMTsNCj4+Pj4gIC4uLg0KPj4+PiAgIDxiYiAyPiBbbG9jYWwgY291bnQ6IDEwNzM3 NDE4MjRdOg0KPj4+PiAgIF8xID0gTUVNWyhzdHJ1Y3QgcHRybWVtZnVuY19VICopJnhdLnB0cjsN Cj4+Pj4gICBfNyA9IF8xICE9IDhCOw0KPj4+PiBXaGljaCBtZXNzYWdlIGlzIGJldHRlcjoNCj4+ Pj4gMS4gd2FybmluZzog4oCYKihwdHJtZW1mdW5jKikmeC5wdHJtZW1mdW5jOjpwdHLigJkgaXMg dXNlZCB1bmluaXRpYWxpemVkDQo+Pj4+IE9yDQo+Pj4+IDIuIHdhcm5pbmc6IOKAmCoocHRybWVt ZnVuYyopKChjaGFyKikmeCArIG9mZnNldG9mKHZvaWQgKFM6OiopKCksX19QVFJNRU1GVU5DKSku cHRybWVtZnVuYzo6cHRy4oCZIGlzIHVzZWQgdW5pbml0aWFsaXplZA0KPj4+PiBGcm9tIHRoZSBz b3VyY2UgY29kZToNCj4+Pj4gPT09PQ0KPj4+PiBzdHJ1Y3QgUw0KPj4+PiB7DQo+Pj4+ICAgaW50 IGo7DQo+Pj4+IH07DQo+Pj4+IHN0cnVjdCBUIDogcHVibGljIFMNCj4+Pj4gew0KPj4+PiAgIHZp cnR1YWwgdm9pZCBoICgpIHt9DQo+Pj4+IH07DQo+Pj4+IHN0cnVjdCBwdHJtZW1mdW5jDQo+Pj4+ IHsNCj4+Pj4gICB2b2lkICgqcHRyKSAoKTsNCj4+Pj4gfTsNCj4+Pj4gdHlwZWRlZiB2b2lkIChT Ojoqc3ApKCk7DQo+Pj4+IGludCBtYWluICgpDQo+Pj4+IHsNCj4+Pj4gICBUIHQ7DQo+Pj4+ICAg c3AgeDsNCj4+Pj4gICBwdHJtZW1mdW5jICp4cCA9IChwdHJtZW1mdW5jICopICZ4Ow0KPj4+PiAg IGlmICh4cC0+cHRyICE9ICgodm9pZCAoKikoKSkoc2l6ZW9mKHZvaWQgKikpKSkNCj4+Pj4gICAg IHJldHVybiAxOw0KPj4+PiB9DQo+Pj4+ID09PT0NCj4+Pj4gVGhlIHJlZmVyZW5jZSDigJx4cC0+ cHRy4oCdIHdlbnQgdGhyb3VnaCBmcm9tIOKAnHjigJ0gdG8g4oCceHDigJ0sIGFuZCB0aGVyZSBp cyBhIGNsZWFyIHR5cGUgY2FzdGluZyBmcm9tIFM6Ol9fUFRSTUVNRlVOQyB0byBwdHJtZW1mdW5j OjpwdHIuDQo+Pj4+IFNoYWxsIHdlIGVtaXQgc3VjaCB0eXBlIGNhc3RpbmcgdG8gdGhlIHVzZXI/ DQo+Pj4gDQo+Pj4gQnV0IHRoZXJlIGlzIG5vIHN1Y2ggY2FzdCBpbiB0aGUgc291cmNlOyB0aGUg Y2FzdCBpcyAocHRybWVtZnVuYyopJngsIHdoaWNoIGFwcGVhcnMgaW4gdGhlIGZpeGVkIG1lc3Nh Z2UuDQo+PiBzdGlsbCBhIGxpdHRsZSBjb25mdXNlZCBoZXJlOiAgdGhlIG9yaWdpbmFsIHR5cGUg Zm9yIOKAnHjigJ0gaXMg4oCcc3DigJ0NCj4gDQo+IFllcy4NCj4gDQo+PiAoaXMg4oCcc3DigJ0g ZXF1YWwgdG8g4oCcUzo6X19QVFJNRU1GVU5D4oCdPykNCj4gDQo+IE5vLg0KPiANCj4+IHRoZW4g aXQgd2FzIGNhc3RlZCB0byDigJxwdHJtZW1mdW5jICrigJ0uDQo+IA0KPiBZZXMuDQo+IA0KPj4g U28sIHNob3VsZCB0aGlzIHR5cGUgY29udmVyc2lvbiBmcm9tIOKAnFM6Ol9fUFRSTUVNRlVOQ+KA nSB0byDigJxwdHJtZW1mdW5jICrigJ0gYmUgZXhwb3NlZCB0byB0aGUgdXNlciBpbiB0aGUgbWVz c2FnZT8NCj4gDQo+IFRoZSBjb252ZXJzaW9uIGZyb20gc3AqIHRvIHB0cm1lbWZ1bmMqIGlzIGV4 cG9zZWQgYXMgKHB0cm1lbWZ1bmMqKSwgd2hpY2ggaXMgbm9ybWFsIEMrKyBzeW50YXg7IGEgY2Fz dCBvbmx5IG5hbWVzIHRoZSB0YXJnZXQgdHlwZSwgbm90IHRoZSBzb3VyY2UgdHlwZS4NCk9rYXks IEkgc2VlIG5vdy4NCg0KdGhhbmtzLg0KDQpRaW5nDQo+IA0KPj4+IFRob3VnaCAqKHB0cm1lbWZ1 bmMqKSZ4LnB0cm1lbWZ1bmM6OnB0ciBpcyB3cm9uZyBzeW50YXgsIGl0IHNob3VsZCBiZSAoKHB0 cm1lbWZ1bmMqKSZ4KS0+cHRyDQo+Pj4gDQo+Pj4gSmFrdWIsIHRoaXMgaXMgeW91ciBjb2RlIGZy b20gcjExLTY3Mjk7IGZyb20gdGhlIGNvbW1lbnQgb24gdGhhdCBjb21taXQgaXQgc291bmRzIGxp a2UgeW91IHdlcmUgZGVsaWJlcmF0ZWx5IGlnbm9yaW5nIHR5cGUgaW5jb21wYXRpYmlsaXR5IGhl cmUsIGFuZCBteSBzdWdnZXN0ZWQgZml4IGNoYW5nZXMgdHdvIGxpbmVzIGluIHVuaW5pdC00MC5j LiAgV2hhdCBkbyB5b3UgdGhpbmsgc2hvdWxkIGhhcHBlbiBmb3IgdGhpcyB0ZXN0Y2FzZT8NCg0K