From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2134.outbound.protection.outlook.com [40.107.102.134]) by sourceware.org (Postfix) with ESMTPS id CE38C3858D3C for ; Wed, 13 Dec 2023 08:14:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CE38C3858D3C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=os.amperecomputing.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=os.amperecomputing.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org CE38C3858D3C Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.102.134 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1702455280; cv=pass; b=n+5RVB7kB9r0NC3SCPiWVJsufQZxXIt2LoLngye8WY68OOAbv3Ufv5ot1cbLkoEXi+n4rLikYX8D/VyS+KrhmwHALtcLyi5/g7HOcQD6es2QM438xksoLq2XyraPa81+2T84qbytr7runEHZvogHO8OydqwAaY8ssCrP+tKKjGs= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1702455280; c=relaxed/simple; bh=C/pmIEwVLiELPV6ZkByh2fi+y8I5pFua6yCdXmK/zKk=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=RqiFo7BKWdRMjVgRrCMKgPnPKt2InOxvMvoSGG38c8SgO6PrfaB+8Stcw1oSi37eIh2ZcaRoanzMXYboFtvDGCN/fH6BycIwuWYCXHwFCdqNhWxW+HF2LubQKMBgdF3TSmFDgD4HAvPxkj75MQCgeQxFr1HQG3N9OTdmuYsULcE= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NbLdnfdfHdkW4O64uxP7nVGdt6nYIMc8W50wH0USlrqhJi5Pvhf/6SQ/4FllyQJ9pj7OzUeMnZo32EOPGlfJQ9csMT4B5m47cTvsfT2w3UmJNFNerBXDwhz97ICXd3RdIXnt15btE0YYHcWEyVfh04wbN//8lmnq/TX7pNJ0LKFzRWIR8MXbJmC+sTrLef2y6frr4shkHQCWovPAPWRLNts81rl9pv4jthucSqs+cp/T+vDd1JE7l8dZholpNL6OX1W37W2z8CnGjir+vJA5+MSQ50RuKy9eGAzLbyRNWC93BDbY57OY6KgqwGTFSqWAzgAG4sNwArTKY0pL48US/A== 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=+quWo8Bqzs6Gbxf9hKSs+MJ0FamNF25dqscHAUBt5Ec=; b=bzJJaRaK33U4VjcKzBtiievQ0jIubhU1KAQKVAiIRDnjdMdIv+0nSXgb5QeEHrUGfK8WbWp5O9ZdqfFgzKPojwSBNbPJYEcivsvqAS1Al43/lgPOgv9ATKeuTovKmDQYDQgBIx1h9ZYDI+UPsD5WXchEgUX4P61KjlOeMNTjCcEEZ13RsqZnHfNfy9fT4F+tqLucciKeoUEfdIfrpYdrm85ckggznrEKlVhmkOSAQne7L538Wu3euJnb3r/aAOVetb3tzyz/1VS+4nM7HWSvhl0i58GW0UsOivplFHCW2jA8OnR4THj/kgLY7+MQ3m+hVay4hvj8yM55ij2pRLfksA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+quWo8Bqzs6Gbxf9hKSs+MJ0FamNF25dqscHAUBt5Ec=; b=Ge8bXgk5EZQZT7HUzLtJdWdiiuPBYhUFWaFROlc0rUb3Ug+J91HIQHXkanZe2PUPn0EDT8elgzdBfjXHn2s49bYXu/3ZWEiDK9Op37d58EVvAfa/6H1GMGl6/ewkGnEib2w5h6wOnwMjAy+9h1D1hHy2fZoLdWWBYQVH4JtKKWI= Received: from SN6PR01MB4240.prod.exchangelabs.com (2603:10b6:805:ae::22) by SJ2PR01MB8555.prod.exchangelabs.com (2603:10b6:a03:554::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26; Wed, 13 Dec 2023 08:14:29 +0000 Received: from SN6PR01MB4240.prod.exchangelabs.com ([fe80::5669:ba60:a9d7:6ab0]) by SN6PR01MB4240.prod.exchangelabs.com ([fe80::5669:ba60:a9d7:6ab0%4]) with mapi id 15.20.7091.022; Wed, 13 Dec 2023 08:14:28 +0000 From: Di Zhao OS To: Richard Biener CC: "gcc-patches@gcc.gnu.org" Subject: RE: [PATCH v4] [tree-optimization/110279] Consider FMA in get_reassociation_width Thread-Topic: [PATCH v4] [tree-optimization/110279] Consider FMA in get_reassociation_width Thread-Index: AdnnBSPtK+NgbkElQ86FLpG1NcmCuQRMvhQAAHJVX2AEf9pAgAEvAawgAu98zgABhes98AJjtNGAACyQqeA= Date: Wed, 13 Dec 2023 08:14:28 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: zh-CN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_ActionId=aaf5d0dc-2ca9-4c06-a060-683576b60dde;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_ContentBits=0;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Enabled=true;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Method=Standard;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Name=Confidential (Default);MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SetDate=2023-12-12T08:17:05Z;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SiteId=3bc2b170-fd94-476d-b0ce-4229bdc904a7; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR01MB4240:EE_|SJ2PR01MB8555:EE_ x-ms-office365-filtering-correlation-id: 82364df8-d1c8-4348-526f-08dbfbb38709 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: zWSLDLnWecxhRDPN5SFU0nmPISgwWmaJE87L3Jlydebw/SpbBaVnFT8ZnqUqrIfizT/4W/xauw/NbQLEZZF68Um/ckxRy6NUHjaGyST2rX9ZYlGxZTrBlMUxBwKTlV1SwHh8HJjGXEeM8c3MzSJYMve1AC2+ALgmA6NbUxqijOvepJ1KIJZwrdGHb3Zlx0LJooA4a8ktcnMayd0wbEvTyeeEELJ1ibhjeGpu4CKbIrHF3Mw7teEBsEN9wRZSR7Zxmcbhh6O0iRyLvOCw+OLUJ9G9D5vfQIf08YRVFaZHw2djwxWF7fE9TpeBcHXwTi6nT2Gfs/6nBshSZlRGwnmNfWxsUtFeSMhQdGXan0JfX8jBIWUadSCHFW0Vrb0PI4SjlTtYaCOF+ZQu6R8LHEsC+9J+yOkMaZ6huG/iO/EpPimtctSsMwvS2TLuBTeqKVz+urbJYUtmK4/hx9swCxAPqsUJmh7IYCUB1zlbmvhI4kJJn5XmAef2NWzQk84Qkz9i2A9Jyvklbd6YAMQZgegeW31TsyhAYPf1B5BusFFDYTxJiIQGE5i0Nn0B9SOKSkF0Z8FL8hIGwMCvtxK3v73jmCPEnJuIRUS/LMjZyOwE6GU= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR01MB4240.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230031)(136003)(366004)(396003)(376002)(39850400004)(346002)(230922051799003)(64100799003)(1800799012)(451199024)(186009)(84970400001)(86362001)(33656002)(55016003)(66899024)(66946007)(9686003)(7696005)(6506007)(53546011)(41300700001)(99936003)(66556008)(76116006)(966005)(38070700009)(66574015)(26005)(38100700002)(83380400001)(71200400001)(30864003)(2906002)(8676002)(64756008)(5660300002)(66476007)(66446008)(478600001)(4326008)(52536014)(122000001)(8936002)(6916009)(316002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Qk1OQXZ5UTM3WFNjTEFkN3c5MlViWjFYbFNpblU4Q3VTUy9jKzJaT3NvV1ZB?= =?utf-8?B?TnNNRFp4R1FhUklCNU0rYzF0MFFrRjdNNUR6RXNSZGlrWk96aFdYaVJEeGRu?= =?utf-8?B?dEdBTWdHUTJCMFVoTzRZQUZRNzR6R3hTZVdSZ1BNbzExYnRsN1FBOVJRRGpo?= =?utf-8?B?dnlxZ1JUNTQvNmtrWUhtNHdmWURYZUllMGpjdm4zNkJRakVnNDJpQkNvb3FH?= =?utf-8?B?UkZUNzFSLzNmWm9uSU9YL2hGWG1oMjBCZEZoNXIvbEYvUmNFcmhieWhWWFdM?= =?utf-8?B?K3htWTVTSkVqdWZ6cUxsRCt3RHd0OGFZQXVuNHNOQTR2L0U2NzVZZ2YrdXdl?= =?utf-8?B?NCtvQVg1RGRoRTZna0huK3RQbytOTzFhRll3TWNReHVVS3pEYkdGMmZVMHJ6?= =?utf-8?B?MHY4blY3WDV1UFNiTHN5a09wb3BjUkNXQzBXc1NTWVJTaXBvRFRjUHJkK1Ny?= =?utf-8?B?TzEwUVQ5c0ZEUkxJT1lKa0Z3cWV1OVZyK3BkRytCSWQ3allLVUM1cEhBaTFn?= =?utf-8?B?aGVMTWhnZktPaHJtUjNlODdMb0lUaGNEK0g0b0pVUXRxZnhMUnFhUitBYlpx?= =?utf-8?B?aHZzQkt0eklGVUovZ01WNXdoTXdrTC9nYXQrRXZVZFBITFFjN0xieFdLSi8y?= =?utf-8?B?aW5QQmZWeGkyanlUWC9ibUh0MUFBMiszdVU5VXhrZ25jNzBDU2U4Rjc5N3F5?= =?utf-8?B?Uis5Q0NBSFgvOWRESGRGc1ZaTElMejMxRkRMT0tYS3gwZnlVZUR0aVJYTEFU?= =?utf-8?B?c3VzVUI1UGJESFRrRWZaUlEwTWtOSUtGMUF3UFZBWHVSVTR4UW1wSTBUSWhk?= =?utf-8?B?VWxZeCtoL3h4OEJBYlQ2dWEvRVZVZ3AvV2VSeDQzeDY3QVNDcHJDMlVnMlVX?= =?utf-8?B?TTVhaWVScHlyNm9wM2gxNmN4RGFReUJwMjNMemtDR1ZDNXZMb295TXlkUFFs?= =?utf-8?B?ZjNHNVY3MU91TmdvTTU0RVFHcXM1WThkdlRWU3g0OW1uOEkzSzFlbkxHOE03?= =?utf-8?B?S0ViODBXazdqSm04KzdDR2ZicVJZWDRCdmN2M0ZxTlhVWXFQdFh5bC95ODlV?= =?utf-8?B?TUROZnJJZ2hmckJ0Y0hJc0wyRThvUHJ2THRrdnVYbDlrcjhQa1k1cUVtaEt2?= =?utf-8?B?YU9yaGtDekRxdVdMNlhrRUV0aUhUZnZ4R1Uyalp0dVFVYUUwTkxoMnJFaWtU?= =?utf-8?B?M0wxY0tKSnEva3g1MHlsWS81ejQyeHVyQWczTzY4dkpodkxuT0ZOczhueU90?= =?utf-8?B?TXMybzFJRXRJS1lSZkZUVzE1aURWelNqR2ZFWVg2UWVicklFZFg2QkpNYUVm?= =?utf-8?B?SnZJLzNpNHdlQ2l3OGRWdUtJaDE5ZmlBODNqcXk3YU8yaURrSWlTbFJ0QThW?= =?utf-8?B?ajVNZ0VCNktoMDN6RkFTL0FMVktTdnlDNzdPR0VCRHhMb0hoSS9ITVd1ckQ1?= =?utf-8?B?Y3UzTTlPSlpndkg0bnFiMVJHZWNsc0M0R0lNRXpiQ3R6eFFhRmpXbDVuQzlo?= =?utf-8?B?MHBlN3N2bVRaVnNzNmRHZ1h5amt6OWlWMGROWExOS29VQWZvTUxOV3k4Kzh3?= =?utf-8?B?aDRjbFp1ZlpZeTF3Sm5CRm5FR01IaDJXejlWNU95UkpYVFZoMVArajFiTUFS?= =?utf-8?B?eGpNN1RaU2pMU2lQUVdUcm16alF1VW1XYnp1Y3luNTg0K05SYmlRcWdnSzBK?= =?utf-8?B?Y1BpZHJqNGRLcVFPdWhCV1oyTmllRDEwUC9UcUVSb2N6VTRodk9SeDdER3NQ?= =?utf-8?B?UzNNemdMQmRicXdoR0Q4ZTJuNjE4V1BwQWVhMWdqWkFWdWxIM1VtQ2IvLzd2?= =?utf-8?B?S2w4ZkZ6TVZ3VlRNMno0K2ZteUhVSkFjcGZCQ3ZsR1NacXhOczlFL1RHUld4?= =?utf-8?B?SUVweHFiek12Y3BXNlhueis3TytZajdWVVRDYW1mbVlocVhHTUcxczRSMnRG?= =?utf-8?B?M3RCMW1RTVFyenJnSkJIR1pHS3hRWUFrQWRmYVBwSSszQ1BqMWVXQ3VaS0NS?= =?utf-8?B?TWkySVRlYVFsYVhDNmJIMW5oUWEvMmhkUUt6anBjYUJhdEdUMG1TS3V4QmJL?= =?utf-8?B?aDczSWZ0YlhHeTlGamxBVEYwTTVhQ1l2R0lORUFoay9pV2FUVEd3dEo5Mk1t?= =?utf-8?B?MWpJNFI1KytndTBrOHZJWFlrZ0lreWIxMUVSb0ZWTDN6NDVyTWVWMTVPcWVz?= =?utf-8?B?a2c9PQ==?= Content-Type: multipart/mixed; boundary="_002_SN6PR01MB42405D4A9923012D17B40D5CE88DASN6PR01MB4240prod_" MIME-Version: 1.0 X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR01MB4240.prod.exchangelabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82364df8-d1c8-4348-526f-08dbfbb38709 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Dec 2023 08:14:28.5942 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: YQoBxUVhfx58JLua7qQxDBZ7XZTCr/vJCAdgcuvFMtZZa7g9FF2MCUui0l37eWY/xDry7nkjCK4NjS1lAPdPbH8qwTHigC63ISSYN8dULov+EZBDWE05oRDk0wIpvDjj X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR01MB8555 X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_002_SN6PR01MB42405D4A9923012D17B40D5CE88DASN6PR01MB4240prod_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGVsbG8gUmljaGFyZCwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBS aWNoYXJkIEJpZW5lciA8cmljaGFyZC5ndWVudGhlckBnbWFpbC5jb20+DQo+IFNlbnQ6IE1vbmRh eSwgRGVjZW1iZXIgMTEsIDIwMjMgNzowMSBQTQ0KPiBUbzogRGkgWmhhbyBPUyA8ZGl6aGFvQG9z LmFtcGVyZWNvbXB1dGluZy5jb20+DQo+IENjOiBnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZw0KPiBT dWJqZWN0OiBSZTogW1BBVENIIHY0XSBbdHJlZS1vcHRpbWl6YXRpb24vMTEwMjc5XSBDb25zaWRl ciBGTUEgaW4NCj4gZ2V0X3JlYXNzb2NpYXRpb25fd2lkdGgNCj4gDQo+IE9uIFdlZCwgTm92IDI5 LCAyMDIzIGF0IDM6MzbigK9QTSBEaSBaaGFvIE9TDQo+IDxkaXpoYW9Ab3MuYW1wZXJlY29tcHV0 aW5nLmNvbT4gd3JvdGU6DQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4gPiBGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmljaGFyZC5ndWVudGhlckBnbWFpbC5jb20+DQo+ ID4gPiBTZW50OiBUdWVzZGF5LCBOb3ZlbWJlciAyMSwgMjAyMyA5OjAxIFBNDQo+ID4gPiBUbzog RGkgWmhhbyBPUyA8ZGl6aGFvQG9zLmFtcGVyZWNvbXB1dGluZy5jb20+DQo+ID4gPiBDYzogZ2Nj LXBhdGNoZXNAZ2NjLmdudS5vcmcNCj4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjRdIFt0cmVl LW9wdGltaXphdGlvbi8xMTAyNzldIENvbnNpZGVyIEZNQSBpbg0KPiA+ID4gZ2V0X3JlYXNzb2Np YXRpb25fd2lkdGgNCj4gPiA+DQo+ID4gPiBPbiBUaHUsIE5vdiA5LCAyMDIzIGF0IDY6NTPigK9Q TSBEaSBaaGFvIE9TIDxkaXpoYW9Ab3MuYW1wZXJlY29tcHV0aW5nLmNvbT4NCj4gPiA+IHdyb3Rl Og0KPiA+ID4gPg0KPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ ID4gRnJvbTogUmljaGFyZCBCaWVuZXIgPHJpY2hhcmQuZ3VlbnRoZXJAZ21haWwuY29tPg0KPiA+ ID4gPiA+IFNlbnQ6IFR1ZXNkYXksIE9jdG9iZXIgMzEsIDIwMjMgOTo0OCBQTQ0KPiA+ID4gPiA+ IFRvOiBEaSBaaGFvIE9TIDxkaXpoYW9Ab3MuYW1wZXJlY29tcHV0aW5nLmNvbT4NCj4gPiA+ID4g PiBDYzogZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmcNCj4gPiA+ID4gPiBTdWJqZWN0OiBSZTogW1BB VENIIHY0XSBbdHJlZS1vcHRpbWl6YXRpb24vMTEwMjc5XSBDb25zaWRlciBGTUEgaW4NCj4gPiA+ ID4gPiBnZXRfcmVhc3NvY2lhdGlvbl93aWR0aA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gT24gU3Vu LCBPY3QgOCwgMjAyMyBhdCA2OjQw4oCvUE0gRGkgWmhhbyBPUw0KPiA8ZGl6aGFvQG9zLmFtcGVy ZWNvbXB1dGluZy5jb20+DQo+ID4gPiA+ID4gd3JvdGU6DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gQXR0YWNoZWQgaXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgcGF0Y2guDQo+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+ID4gPiBG cm9tOiBSaWNoYXJkIEJpZW5lciA8cmljaGFyZC5ndWVudGhlckBnbWFpbC5jb20+DQo+ID4gPiA+ ID4gPiA+IFNlbnQ6IEZyaWRheSwgT2N0b2JlciA2LCAyMDIzIDU6MzMgUE0NCj4gPiA+ID4gPiA+ ID4gVG86IERpIFpoYW8gT1MgPGRpemhhb0Bvcy5hbXBlcmVjb21wdXRpbmcuY29tPg0KPiA+ID4g PiA+ID4gPiBDYzogZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmcNCj4gPiA+ID4gPiA+ID4gU3ViamVj dDogUmU6IFtQQVRDSCB2NF0gW3RyZWUtb3B0aW1pemF0aW9uLzExMDI3OV0gQ29uc2lkZXIgRk1B IGluDQo+ID4gPiA+ID4gPiA+IGdldF9yZWFzc29jaWF0aW9uX3dpZHRoDQo+ID4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiA+IE9uIFRodSwgU2VwIDE0LCAyMDIzIGF0IDI6NDPigK9QTSBEaSBaaGFv IE9TDQo+ID4gPiA+ID4gPiA+IDxkaXpoYW9Ab3MuYW1wZXJlY29tcHV0aW5nLmNvbT4gd3JvdGU6 DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBUaGlzIGlzIGEgbmV3IHZlcnNpb24g b2YgdGhlIHBhdGNoIG9uICJuZXN0ZWQgRk1BIi4NCj4gPiA+ID4gPiA+ID4gPiBTb3JyeSBmb3Ig dXBkYXRpbmcgdGhpcyBhZnRlciBzbyBsb25nLCBJJ3ZlIGJlZW4gc3R1ZHlpbmcgYW5kDQo+ID4g PiA+ID4gPiA+ID4gd3JpdGluZyBtaWNybyBjYXNlcyB0byBzb3J0IG91dCB0aGUgY2F1c2Ugb2Yg dGhlIHJlZ3Jlc3Npb24uDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFNvcnJ5IGZvciB0 YWtpbmcgc28gbG9uZyB0byByZXBseS4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBG aXJzdCwgZm9sbG93aW5nIHByZXZpb3VzIGRpc2N1c3Npb246DQo+ID4gPiA+ID4gPiA+ID4gKGh0 dHBzOi8vZ2NjLmdudS5vcmcvcGlwZXJtYWlsL2djYy1wYXRjaGVzLzIwMjMtDQo+ID4gPiBTZXB0 ZW1iZXIvNjI5MDgwLmh0bWwpDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiAxLiBG cm9tIHRlc3RpbmcgbW9yZSBhbHRlcmVkIGNhc2VzLCBJIGRvbid0IHRoaW5rIHRoZQ0KPiA+ID4g PiA+ID4gPiA+IHByb2JsZW0gaXMgdGhhdCByZWFzc29jaWF0aW9uIHdvcmtzIGxvY2FsbHkuIElu IHRoYXQ6DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiAgIDEpIE9uIHRoZSBleGFt cGxlIHdpdGggbXVsdGlwbGljYXRpb25zOg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ ID4gICAgICAgICB0bXAxID0gYSArIGMgKiBjICsgZCAqIGQgKyB4ICogeTsNCj4gPiA+ID4gPiA+ ID4gPiAgICAgICAgIHRtcDIgPSB4ICogdG1wMTsNCj4gPiA+ID4gPiA+ID4gPiAgICAgICAgIHJl c3VsdCArPSAoYSArIGMgKyBkICsgdG1wMik7DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gPiAgIEdpdmVuICJyZXN1bHQiIHJld3JpdHRlbiBieSB3aWR0aD0yLCB0aGUgcGVyZm9ybWFu Y2UgaXMNCj4gPiA+ID4gPiA+ID4gPiAgIHdvcnNlIGlmIHdlIHJld3JpdGUgInRtcDEiIHdpdGgg d2lkdGg9Mi4gSW4gY29udHJhc3QsIGlmIHdlDQo+ID4gPiA+ID4gPiA+ID4gICByZW1vdmUgdGhl IG11bHRpcGxpY2F0aW9ucyBmcm9tIHRoZSBleGFtcGxlIChhbmQgbWFrZSAidG1wMSINCj4gPiA+ ID4gPiA+ID4gPiAgIG5vdCBzaW5nZSB1c2VkKSwgYW5kIHN0aWxsIHJld3JpdGUgInJlc3VsdCIg Ynkgd2lkdGg9MiwgdGhlbg0KPiA+ID4gPiA+ID4gPiA+ICAgcmV3cml0aW5nICJ0bXAxIiB3aXRo IHdpZHRoPTIgaXMgYmV0dGVyLiAoTWFrZSBzZW5zZSBiZWNhdXNlDQo+ID4gPiA+ID4gPiA+ID4g ICB0aGUgdHJlZSdzIGRlcHRoIGF0ICJyZXN1bHQiIGlzIHN0aWxsIHNtYWxsZXIgaWYgd2UgcmV3 cml0ZQ0KPiA+ID4gPiA+ID4gPiA+ICAgInRtcDEiLikNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gPiA+ICAgMikgSSB0cmllZCB0byBtb2RpZnkgdGhlIGFzc2VtYmx5IGNvZGUgb2YgdGhl IGV4YW1wbGUgd2l0aG91dA0KPiA+ID4gPiA+ID4gPiA+ICAgRk1BLCBzbyB0aGUgd2lkdGggb2Yg InJlc3VsdCIgaXMgNC4gT24gQW1wZXJlMSB0aGVyZSdzIG5vDQo+ID4gPiA+ID4gPiA+ID4gICBv YnZpb3VzIGltcHJvdmVtZW50LiBTbyBhbHRob3VnaCB0aGlzIGlzIGFuIGludGVyZXN0aW5nDQo+ ID4gPiA+ID4gPiA+ID4gICBwcm9ibGVtLCBpdCBkb2Vzbid0IHNlZW0gbGlrZSB0aGUgY2F1c2Ug b2YgdGhlIHJlZ3Jlc3Npb24uDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IE9LLCBJIHNl ZS4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiAyLiBGcm9tIGFzc2VtYmx5IGNvZGUg b2YgdGhlIGNhc2Ugd2l0aCBGTUEsIG9uZSBwcm9ibGVtIGlzDQo+ID4gPiA+ID4gPiA+ID4gdGhh dCwgcmV3cml0aW5nICJ0bXAxIiB0byBwYXJhbGxlbCBkaWRuJ3QgZGVjcmVhc2UgdGhlDQo+ID4g PiA+ID4gPiA+ID4gbWluaW11bSBDUFUgY3ljbGVzICh0YWtpbmcgTVVMVF9FWFBScyBpbnRvIGFj Y291bnQpLCBidXQNCj4gPiA+ID4gPiA+ID4gPiBpbmNyZWFzZWQgY29kZSBzaXplLCBzbyB0aGUg b3ZlcmhlYWQgaXMgaW5jcmVhc2VkLg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g ICAgYSkgV2hlbiAidG1wMSIgaXMgbm90IHJlLXdyaXR0ZW4gdG8gcGFyYWxsZWw6DQo+ID4gPiA+ ID4gPiA+ID4gICAgICAgICBmbWFkZCBkMzEsIGQyLCBkMiwgZDMwDQo+ID4gPiA+ID4gPiA+ID4g ICAgICAgICBmbWFkZCBkMzEsIGQzLCBkMywgZDMxDQo+ID4gPiA+ID4gPiA+ID4gICAgICAgICBm bWFkZCBkMzEsIGQ0LCBkNSwgZDMxICAvLyJ0bXAxIg0KPiA+ID4gPiA+ID4gPiA+ICAgICAgICAg Zm1hZGQgZDMxLCBkMzEsIGQ0LCBkMw0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g ICAgYikgV2hlbiAidG1wMSIgaXMgcmUtd3JpdHRlbiB0byBwYXJhbGxlbDoNCj4gPiA+ID4gPiA+ ID4gPiAgICAgICAgIGZtdWwgIGQzMSwgZDQsIGQ1DQo+ID4gPiA+ID4gPiA+ID4gICAgICAgICBm bWFkZCBkMjcsIGQyLCBkMiwgZDMwDQo+ID4gPiA+ID4gPiA+ID4gICAgICAgICBmbWFkZCBkMzEs IGQzLCBkMywgZDMxDQo+ID4gPiA+ID4gPiA+ID4gICAgICAgICBmYWRkICBkMzEsIGQzMSwgZDI3 ICAgICAvLyJ0bXAxIg0KPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgZm1hZGQgZDMxLCBkMzEsIGQ0 LCBkMw0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gRm9yIHZlcnNpb24gYSksIHRo ZXJlIGFyZSAzIGRlcGVuZGVudCBGTUFzIHRvIGNhbGN1bGF0ZSAidG1wMSIuDQo+ID4gPiA+ID4g PiA+ID4gRm9yIHZlcnNpb24gYiksIHRoZXJlIGFyZSBhbHNvIDMgZGVwZW5kZW50IGluc3RydWN0 aW9ucyBpbiB0aGUNCj4gPiA+ID4gPiA+ID4gPiBsb25nZXIgcGF0aDogdGhlIDFzdCwgM3JkIGFu ZCA0dGguDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFllcywgaXQgZG9lc24ndCByZWFs bHkgY2hhbmdlIGFueXRoaW5nLiAgVGhlIHBhdGNoIGhhcw0KPiA+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gPiArICAvKiBJZiB0aGVyZSdzIGNvZGUgbGlrZSAiYWNjID0gYSAqIGIgKyBjICogZCAr IGFjYyIgaW4gYSB0aWdodA0KPiBsb29wLA0KPiA+ID4gPiA+IHNvbWUNCj4gPiA+ID4gPiA+ID4g KyAgICAgdWFyY2hzIGNhbiBleGVjdXRlIHJlc3VsdHMgbGlrZToNCj4gPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gPiArICAgICAgIF8xID0gYSAqIGI7DQo+ID4gPiA+ID4gPiA+ICsgICAgICAg XzIgPSAuRk1BIChjLCBkLCBfMSk7DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgYWNjXzEgPSBhY2Nf MCArIF8yOw0KPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ICsgICAgIGluIHBhcmFsbGVs LCB3aGlsZSB0dXJuaW5nIGl0IGludG8NCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiAr ICAgICAgIF8xID0gLkZNQShhLCBiLCBhY2NfMCk7DQo+ID4gPiA+ID4gPiA+ICsgICAgICAgYWNj XzEgPSAuRk1BKGMsIGQsIF8xKTsNCj4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiArICAg ICBoaW5kZXJzIHRoYXQsIGJlY2F1c2UgdGhlbiB0aGUgZmlyc3QgRk1BIGRlcGVuZHMgb24gdGhl DQo+IHJlc3VsdA0KPiA+ID4gPiA+ID4gPiBvZiBwcmVjZWRpbmcNCj4gPiA+ID4gPiA+ID4gKyAg ICAgaXRlcmF0aW9uLiAgKi8NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gSSBjYW4ndCBz ZWUgd2hhdCBjYW4gYmUgcnVuIGluIHBhcmFsbGVsIGZvciB0aGUgZmlyc3QgY2FzZS4NCj4gVGhl IC5GTUENCj4gPiA+ID4gPiA+ID4gZGVwZW5kcyBvbiB0aGUgbXVsdGlwbGljYXRpb24gYSAqIGIu ICBJZmYgdGhlIHVhcmNoIHNvbWVob3cNCj4gZGVjb21wb3Nlcw0KPiA+ID4gPiA+ID4gPiAuRk1B IGludG8gbXVsdGlwbHkgKyBhZGQgdGhlbiB0aGUgYyAqIGQgbXVsdGlwbHkgY291bGQgcnVuIGlu DQo+IHBhcmFsbGVsDQo+ID4gPiA+ID4gPiA+IHdpdGggdGhlIGEgKiBiIG11bHRpcGx5IHdoaWNo IF9taWdodF8gYmUgYWJsZSB0byBoaWRlIHNvbWUgb2YgdGhlDQo+ID4gPiA+ID4gPiA+IGxhdGVu Y3kgb2YgdGhlIGZ1bGwgLkZNQS4gIExpa2Ugb24geDg2IFplbiBGTUEgaGFzIGEgbGF0ZW5jeSBv ZiA0DQo+ID4gPiA+ID4gPiA+IGN5Y2xlcyBidXQgYSBtdWx0aXBseSBvbmx5IDMuICBCdXQgSSBu ZXZlciBnb3QgY29uZmlybWF0aW9uIGZyb20NCj4gYW55DQo+ID4gPiA+ID4gPiA+IG9mIHRoZSBD UFUgZGVzaWduZXJzIHRoYXQgLkZNQXMgYXJlIGlzc3VlZCB3aGVuIHRoZSBtdWx0aXBseQ0KPiA+ ID4gPiA+ID4gPiBvcGVyYW5kcyBhcmUgcmVhZHkgYW5kIHRoZSBhZGQgb3BlcmFuZCBjYW4gYmUg Zm9yd2FyZGVkLg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBJIGFsc28gd29uZGVyIHdo eSB0aGUgbXVsdGlwbGljYXRpb25zIG9mIHRoZSB0d28tRk1BIHNlcXVlbmNlDQo+ID4gPiA+ID4g PiA+IHRoZW4gY2Fubm90IGJlIGV4ZWN1dGVkIGF0IHRoZSBzYW1lIHRpbWU/ICBTbyBJIGhhdmUg c29tZSBkb3VidA0KPiA+ID4gPiA+ID4gPiBvZiB0aGUgdGhlb3J5IGFib3ZlLg0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+IFRoZSBwYXJhbGxlbCBleGVjdXRpb24gZm9yIHRoZSBjb2RlIHNuaXBw ZXQgYWJvdmUgd2FzIHRoZSBvdGhlcg0KPiA+ID4gPiA+ID4gaXNzdWUgKHByZXZpb3VzbHkgZGlz Y3Vzc2VkIGhlcmU6DQo+ID4gPiA+ID4gPiBodHRwczovL2djYy5nbnUub3JnL3BpcGVybWFpbC9n Y2MtcGF0Y2hlcy8yMDIzLUF1Z3VzdC82Mjg5NjAuaHRtbCkuDQo+ID4gPiA+ID4gPiBTb3JyeSBp dCdzIGEgYml0IGNvbmZ1c2luZyB0byBpbmNsdWRlIHRoYXQgaGVyZSwgYnV0IHRoZXNlIDIgZml4 ZXMNCj4gPiA+ID4gPiA+IG5lZWRzIHRvIGJlIGNvbWJpbmVkIHRvIGF2b2lkIG5ldyByZWdyZXNz aW9ucy4gU2luY2UgY29uc2lkZXJpbmcNCj4gPiA+ID4gPiA+IEZNQSBpbiBnZXRfcmVhc3NvY2lh dGlvbl93aWR0aCBwcm9kdWNlcyBtb3JlIHJlc3VsdHMgb2Ygd2lkdGg9MSwNCj4gPiA+ID4gPiA+ IHNvIHRoZXJlIHdvdWxkIGJlIG1vcmUgbG9vcCBkZXBlbmRpbmcgRk1BIGNoYWlucy4NCj4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+IElmZiB0aGlzIHJlYWxseSBpcyB0aGUgcmVhc29uIGZvciB0 aGUgc2VxdWVuY2UgdG8gZXhlY3V0ZSB3aXRoDQo+IGxvd2VyDQo+ID4gPiA+ID4gPiA+IG92ZXJh bGwgbGF0ZW5jeSBhbmQgd2Ugd2FudCB0byBhdHRhY2sgdGhpcyBvbiBHSU1QTEUgdGhlbiBJIHRo aW5rDQo+ID4gPiA+ID4gPiA+IHdlIG5lZWQgYSB0YXJnZXQgaG9vayB0ZWxsaW5nIHVzIHRoaXMg ZmFjdCAoSSBhbHNvIHdvbmRlciBpZiBzdWNoDQo+ID4gPiA+ID4gPiA+IGJlaGF2aW9yIGNhbiBi ZSBtb2RlbGVkIGluIHRoZSBzY2hlZHVsZXIgcGlwZWxpbmUgZGVzY3JpcHRpb24gYXQNCj4gYWxs PykNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBTbyBpdCBzZWVtcyB0byBtZSB0aGUg Y3VycmVudCBnZXRfcmVhc3NvY2lhdGlvbl93aWR0aCBhbGdvcml0aG0NCj4gPiA+ID4gPiA+ID4g PiBpc24ndCBvcHRpbWFsIGluIHRoZSBwcmVzZW5jZSBvZiBGTUEuIFNvIEkgbW9kaWZpZWQgdGhl IHBhdGNoIHRvDQo+ID4gPiA+ID4gPiA+ID4gaW1wcm92ZSBnZXRfcmVhc3NvY2lhdGlvbl93aWR0 aCwgcmF0aGVyIHRoYW4gY2hlY2sgZm9yIGNvZGUNCj4gPiA+ID4gPiA+ID4gPiBwYXR0ZXJucy4g KEFsdGhvdWdoIHRoZXJlIGNvdWxkIGJlIHNvbWUgb3RoZXIgY29tcGxpY2F0ZWQNCj4gPiA+ID4g PiA+ID4gPiBmYWN0b3JzIHNvIHRoZSByZWdyZXNzaW9uIGlzIG1vcmUgb2J2aW91cyB3aGVuIHRo ZXJlJ3MgIm5lc3RlZA0KPiA+ID4gPiA+ID4gPiA+IEZNQSIuIEJ1dCB3aXRoIHRoaXMgcGF0Y2gg dGhhdCBzaG91bGQgYmUgYXZvaWRlZCBvciByZWR1Y2VkLikNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gPiA+IFdpdGggdGhpcyBwYXRjaCA1MDgubmFtZF9yIDEtY29weSBydW4gaGFzIDcl IGltcHJvdmVtZW50IG9uDQo+ID4gPiA+ID4gPiA+ID4gQW1wZXJlMSwgb24gSW50ZWwgWGVvbiB0 aGVyZSdzIGFib3V0IDMlLiBXaGlsZSBJJ20gc3RpbGwNCj4gPiA+ID4gPiA+ID4gPiBjb2xsZWN0 aW5nIGRhdGEgb24gb3RoZXIgQ1BVcywgSSdkIGxpa2UgdG8ga25vdyBob3cgZG8geW91DQo+ID4g PiA+ID4gPiA+ID4gdGhpbmsgb2YgdGhpcy4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiA+IEFib3V0IGNoYW5nZXMgaW4gdGhlIHBhdGNoOg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiA+ID4gMS4gV2hlbiB0aGUgb3AgbGlzdCBmb3JtcyBhIGNvbXBsZXRlIEZNQSBjaGFpbiwg dHJ5IHRvIHNlYXJjaA0KPiA+ID4gPiA+ID4gPiA+IGZvciBhIHNtYWxsZXIgd2lkdGggY29uc2lk ZXJpbmcgdGhlIGJlbmVmaXQgb2YgdXNpbmcgRk1BLiBXaXRoDQo+ID4gPiA+ID4gPiA+ID4gYSBz bWFsbGVyIHdpZHRoLCB0aGUgaW5jcmVtZW50IG9mIGNvZGUgc2l6ZSBpcyBzbWFsbGVyIHdoZW4N Cj4gPiA+ID4gPiA+ID4gPiBicmVha2luZyB0aGUgY2hhaW4uDQo+ID4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPiA+IEJ1dCB0aGlzIGlzIGFsbCBoaWdobHkgdGFyZ2V0IHNwZWNpZmljIChjb2RlIHNp emUgZXZlbiBtb3JlIHNvKS4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gSG93IEkgdW5k ZXJzdGFuZCB5b3VyIGFwcHJvYWNoIHRvIGZpeGluZyB0aGUgaXNzdWUgbGVhZHMgbWUgdG8NCj4g PiA+ID4gPiA+ID4gdGhlIHN1Z2dlc3Rpb24gdG8gcHJpb3JpdGl6ZSBwYXJhbGxlbCByZXdyaXRp bmcsIHRodXMgYWx0ZXINCj4gPiA+ID4gPiByYW5rX29wc19mb3JfZm1hLA0KPiA+ID4gPiA+ID4g PiB0YWtpbmcgdGhlIHJlYXNzb2Mgd2lkdGggaW50byBhY2NvdW50ICh0aGUgY29tcHV0ZWQgd2lk dGggc2hvdWxkDQo+IGJlDQo+ID4gPiA+ID4gPiA+IHVuY2hhbmdlZCBmcm9tIHJhbmtfb3BzX2Zv cl9mbWEpIGluc3RlYWQgb2YgImZpeGluZyB1cCIgdGhlDQo+IHBhcmFsbGVsDQo+ID4gPiA+ID4g PiA+IHJld3JpdGluZyBvZiBGTUFzICh3ZWxsLCB0aGV5IGFyZSBub3QgeWV0IGZvcm1lZCBvZiBj b3Vyc2UpLg0KPiA+ID4gPiA+ID4gPiBnZXRfcmVhc3NvY2lhdGlvbl93aWR0aCBoYXMgJ2dldF9y ZXF1aXJlZF9jeWNsZXMnLCB0aGUgYWJvdmUNCj4gdGhlb3J5DQo+ID4gPiA+ID4gPiA+IGNvdWxk IGJlIHZlcmlmaWVkIHdpdGggYSB2ZXJ5IHNpbXBsZSB0b3kgcGlwZWxpbmUgbW9kZWwuICBXZSdk DQo+IGhhdmUNCj4gPiA+ID4gPiA+ID4gdG8gYXNrIHRoZSB0YXJnZXQgZm9yIHRoZSByZWFzc29j IHdpZHRoIGZvciBNVUxUX0VYUFJzIGFzIHdlbGwgKG9yDQo+ID4gPiBtYXliZQ0KPiA+ID4gPiA+ ID4gPiBldmVuIEZNQV9FWFBScykuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFRha2lu ZyB0aGUgd2lkdGggb2YgRk1BcyBpbnRvIGFjY291bnQgd2hlbiBjb21wdXRpbmcgdGhlIHJlYXNz b2MNCj4gd2lkdGgNCj4gPiA+ID4gPiA+ID4gbWlnaHQgYmUgYW5vdGhlciB3YXkgdG8gYXR0YWNr IHRoaXMuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gUHJldmlvdXNseSBJIHRyaWVkIHRvIHNv bHZlIHRoaXMgZ2VuZXJhbGx5LCBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0DQo+ID4gPiA+ID4gPiBG TUEgKHNtYWxsZXIgY29kZSBzaXplKSBpcyBwcmVmZXJyZWQuIE5vdyBJIGFncmVlIGl0J3MgZGlm ZmljdWx0DQo+ID4gPiA+ID4gPiBzaW5jZTogMSkgQXMgeW91IG1lbnRpb25lZCwgdGhlIGxhdGVu Y3kgb2YgRk1BLCBGTVVMIGFuZCBGQUREIGNhbg0KPiA+ID4gPiA+ID4gYmUgZGlmZmVyZW50LiAy KSBGcm9tIG15IHRlc3QgcmVzdWx0IG9uIGRpZmZlcmVudCBtYWNoaW5lcyB3ZQ0KPiA+ID4gPiA+ ID4gaGF2ZSwgaXQgc2VlbXMgc2ltcGx5IGFkZGluZyB0aGUgY3ljbGVzIHRvZ2V0aGVyIGlzIG5v dCBhIGdvb2Qgd2F5DQo+ID4gPiA+ID4gPiB0byBlc3RpbWF0ZSB0aGUgbGF0ZW5jeSBvZiBjb25z ZWN1dGl2ZSBGTUEuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gSSB0aGluayBhbiBlYXNpZXIg d2F5IHRvIGZpeCB0aGlzIGlzIHRvIGFkZCBhIHBhcmFtZXRlciB0byBzdWdnZXN0DQo+ID4gPiA+ ID4gPiB0aGUgbGVuZ3RoIG9mIGNvbXBsZXRlIEZNQSBjaGFpbiB0byBrZWVwLiAoSXQgY2FuIGJl IHNldCBieSB0YXJnZXQNCj4gPiA+ID4gPiA+IHNwZWNpZmljIHR1bmluZyB0aGVuLikgQW5kIHdl IGNhbiBicmVhayBsb25nZXIgRk1BIGNoYWlucyBmb3INCj4gPiA+ID4gPiA+IGJldHRlciBwYXJh bGxlbGlzbS4gQXR0YWNoZWQgaXMgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbi4gV2l0aA0KPiA+ID4g PiA+ID4gbWF4LWZtYS1jaGFpbi1sZW49OCwgdGhlcmUncyBhYm91dCA3JSBpbXByb3ZlbWVudCBp biBzcGVjMjAxNw0KPiA+ID4gPiA+ID4gNTA4Lm5hbWRfciBvbiBhbXBlcmUxLCBhbmQgdGhlIG92 ZXJhbGwgaW1wcm92ZW1lbnQgb24gZnByYXRlIGlzDQo+ID4gPiA+ID4gPiBhYm91dCAxJS4NCj4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBTaW5jZSB0aGVyZSdzIGNvZGUgaW4gcmFua19vcHNfZm9y X2ZtYSB0byBpZGVudGlmeSBNVUxUX0VYUFJzIGZyb20NCj4gPiA+ID4gPiA+IG90aGVycywgSSBs ZWZ0IGl0IGJlZm9yZSBnZXRfcmVhc3NvY2lhdGlvbl93aWR0aCBzbyB0aGUgbnVtYmVyIG9mDQo+ ID4gPiA+ID4gPiBNVUxUX0VYUFJzIGNhbiBiZSB1c2VkLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g U29ycnkgYWdhaW4gZm9yIHRoZSBkZWxheSBpbiByZXBseWluZy4NCj4gPiA+ID4gPg0KPiA+ID4g PiA+ICsgIC8qIENoZWNrIGlmIGtlZXBpbmcgY29tcGxldGUgRk1BIGNoYWlucyBpcyBwcmVmZXJy ZWQuICAqLw0KPiA+ID4gPiA+ICsgIGlmICh3aWR0aCA+IDEgJiYgbXVsdF9udW0gPj0gMiAmJiBw YXJhbV9tYXhfZm1hX2NoYWluX2xlbikNCj4gPiA+ID4gPiArICAgIHsNCj4gPiA+ID4gPiArICAg ICAgLyogbnVtX2ZtYV9jaGFpbiArIChudW1fZm1hX2NoYWluIC0gMSkgPj0gbnVtX3BsdXMgLiAg Ki8NCj4gPiA+ID4gPiArICAgICAgaW50IG51bV9vdGhlcnMgPSBvcHNfbnVtIC0gbXVsdF9udW07 DQo+ID4gPiA+ID4gKyAgICAgIGludCBudW1fZm1hX2NoYWluID0gQ0VJTCAobnVtX290aGVycyAr IDEsIDIpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgaWYgKG51bV9mbWFfY2hhaW4g PCB3aWR0aA0KPiA+ID4gPiA+ICsgICAgICAgICAmJiBDRUlMIChtdWx0X251bSwgbnVtX2ZtYV9j aGFpbikgPD0gcGFyYW1fbWF4X2ZtYV9jaGFpbl9sZW4pDQo+ID4gPiA+ID4gKyAgICAgICB3aWR0 aCA9IG51bV9mbWFfY2hhaW47DQo+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4NCj4gPiA+ID4g PiBzbyBoZXJlICdtdWx0X251bScgc2VydmVzIGFzIGEgaGV1cmlzdGljYWwgdmFsdWUgaG93IG1h bnkNCj4gPiA+ID4gPiBGTUFzIHdlIGNvdWxkIGJ1aWxkLiAgSWYgdGhhdCB3ZXJlIGNsb3NlIHRv IG9wc19udW0gLSAxIHRoZW4NCj4gPiA+ID4gPiB3ZSdkIGhhdmUgYSBjaGFpbiBvZiBGTUFzLiAg Tm90IHN1cmUgaG93IHlvdSBnZXQgYXQNCj4gPiA+ID4gPiBudW1fb3RoZXJzIC8gMiBoZXJlLiAg TWF5YmUgd2UgbmVlZCB0byBlbGFib3JhdGUgb24gd2hhdCBhbg0KPiA+ID4gPiA+IEZNQSBjaGFp biBpcz8gIEkgdGhvdWdodCBpdCBpcyBGTUEgKEZNQSAoRk1BICguLi4sIGIsIGMpLCBkLCBlKSwg ZiwgZykNCj4gPiA+ID4gPiB3aGVyZSBlYWNoIChiLGMpIHBhaXIgaXMgcmVhbGx5IGp1c3Qgb25l IG9wZXJhbmQgaW4gdGhlIG9wcyBhcnJheSwNCj4gPiA+ID4gPiBvbmUgb2YgdGhlICdtdWx0J3Mu ICBUaHVzIGEgRk1BIGNoYWluIGlzIF9ub3RfDQo+ID4gPiA+ID4gRk1BIChhLCBiLCBjKSArIEZN QSAoZCwgZSwgZikgKyBGTUEgKC4uLikgKyAuLi4sIHJpZ2h0Pw0KPiA+ID4gPg0KPiA+ID4gPiBU aGUgIkZNQSBjaGFpbiIgaGVyZSByZWZlcnMgdG8gY29uc2VjdXRpdmUgRk1BcywgZWFjaCB0YWtp bmcNCj4gPiA+ID4gVGhlIHByZXZpb3VzIG9uZSdzIHJlc3VsdCBhcyB0aGUgdGhpcmQgb3BlcmF0 b3IsIGkuZS4NCj4gPiA+ID4gLi4uIEZNQShlLCBmLCBGTUEoYywgZCwgRk1BIChhLCBiLCByKSkp Li4uIC4gU28gb3JpZ2luYWwgb3ANCj4gPiA+ID4gbGlzdCBsb29rcyBsaWtlICJyICsgYSAqIGIg KyBjICogZCArIGUgKiBmICsgLi4uIi4gVGhlc2UgRk1Bcw0KPiA+ID4gPiB3aWxsIGVuZCB1cCB1 c2luZyB0aGUgc2FtZSBhY2N1bXVsYXRlIHJlZ2lzdGVyLg0KPiA+ID4gPg0KPiA+ID4gPiBXaGVu IG51bV9vdGhlcnM9MiBvciAzLCB0aGVyZSBjYW4gYmUgMiBjb21wbGV0ZSBjaGFpbnMsIGUuZy4N Cj4gPiA+ID4gICAgICAgICBGTUEgKGQsIGUsIEZNQSAoYSwgYiwgYykpICsgRk1BIChmLCBnLCBo KQ0KPiA+ID4gPiBvcg0KPiA+ID4gPiAgICAgICAgIEZNQSAoZCwgZSwgRk1BIChhLCBiLCBjKSkg KyBGTUEgKGYsIGcsIGgpICsgaSAuDQo+ID4gPiA+IEFuZCBzbyBvbiwgdGhhdCdzIHdoZXJlIHRo ZSAiQ0VJTCAobnVtX290aGVycyArIDEsIDIpIiBjb21lcyBmcm9tLg0KPiA+ID4gPg0KPiA+ID4g PiA+DQo+ID4gPiA+ID4gRm9ybWluZyBhbiBGTUEgY2hhaW4gZWZmZWN0aXZlbHkgcmVkdWNlcyB0 aGUgcmVhc3NvY2lhdGlvbiB3aWR0aA0KPiA+ID4gPiA+IG9mIHRoZSBwYXJ0aWNpcGF0aW5nIG11 bHRpcGxpZXMuICBJZiB3ZSB3ZXJlIG5vdCB0byBmb3JtIEZNQXMgYWxsDQo+ID4gPiA+ID4gdGhl IG11bHRpcGxpZXMgY291bGQgZXhlY3V0ZSBpbiBwYXJhbGxlbC4NCj4gPiA+ID4gPg0KPiA+ID4g PiA+IFNvIHdoYXQgZG9lcyB0aGUgYWJvdmUgZG8sIGluIHRlcm1zIG9mIGFkanVzdGluZyB0aGUg cmVhc3NvY2lhdGlvbg0KPiA+ID4gPiA+IHdpZHRoIGZvciB0aGUgX2FkZHNfLCBhbmQgd2hhdCdz IHRoZSByaXBwbGUtZG93biBlZmZlY3Qgb24gbGF0ZXINCj4gPiA+ID4gPiBGTUEgZm9ybWluZz8N Cj4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBUaGUgYWJvdmUgY29kZSBjYWxjdWxhdGVzIHRo ZSBudW1iZXIgb2Ygc3VjaCBGTUEgY2hhaW5zIGluIHRoZSBvcA0KPiA+ID4gPiBsaXN0LiBBbmQg aWYgdGhlIGxlbmd0aCBvZiBlYWNoIGNoYWluIGRvZXNuJ3QgZXhjZWVkDQo+ID4gPiA+IHBhcmFt X21heF9mbWFfY2hhaW5fbGVuLCB0aGVuIHdpZHRoIGlzIHNldCB0byB0aGUgbnVtYmVyIG9mIGNo YWlucywNCj4gPiA+ID4gc28gd2Ugd29uJ3QgYnJlYWsgdGhlbSAoYmVjYXVzZSByZXdyaXRlX2V4 cHJfdHJlZV9wYXJhbGxlbCBoYW5kbGVzDQo+ID4gPiA+IHRoaXMgd2VsbCkuDQo+ID4gPiA+DQo+ ID4gPiA+ID4gVGhlIGNoYW5nZSBzdGlsbCBmZWVscyBsaWtlIHdoYWNrLWEtbW9sZSBwbGF5aW5n IHJhdGhlciB0aGFuDQo+IHVuZGVyc3RhbmRpbmcNCj4gPiA+ID4gPiB0aGUgZnVuZGFtZW50YWwg aXNzdWUgb24gdGhlIHRhcmdldHMuDQo+ID4gPiA+DQo+ID4gPiA+IEkgdGhpbmsgdGhlIGNvbXBs ZXhpdHkgaXMgaW4gaG93IHRoZSBpbnN0cnVjdGlvbnMgYXJlIHBpcGVkLg0KPiA+ID4gPiBTb21l IEFybSBDUFVzIHN1Y2ggYXMgTmVvdmVyc2UgVjIgc3VwcG9ydHMgImxhdGUtZm9yd2FyZGluZyI6 DQo+ID4gPiA+ICJGUCBtdWx0aXBseS1hY2N1bXVsYXRlIHBpcGVsaW5lcyBzdXBwb3J0IGxhdGUt Zm9yd2FyZGluZyBvZg0KPiA+ID4gPiBhY2N1bXVsYXRlIG9wZXJhbmRzIGZyb20gc2ltaWxhciDO vE9QcywgYWxsb3dpbmcgYSB0eXBpY2FsDQo+ID4gPiA+IHNlcXVlbmNlIG9mIG11bHRpcGx5LWFj Y3VtdWxhdGUgzrxPUHMgdG8gaXNzdWUgb25lIGV2ZXJ5IE4NCj4gPiA+ID4gY3ljbGVzIi4gKCJO IiBpcyBzbWFsbGVyIHRoYW4gdGhlIGxhdGVuY3kgb2YgYSBzaW5nbGUgRk1BDQo+ID4gPiA+IGlu c3RydWN0aW9uLikgU28ga2VlcGluZyBzdWNoIEZNQSBjaGFpbnMgY2FuIHV0aWxpemUgc3VjaA0K PiA+ID4gPiBmZWF0dXJlIGFuZCB1c2VzIGxlc3MgRlAgdW5pdHMuIEkgZ3Vlc3MgdGhlIGNhc2Ug aXMgc2ltaWxhciBvbg0KPiA+ID4gPiBzb21lIGxhdGUgWDg2IENQVXMuDQo+ID4gPiA+DQo+ID4g PiA+IElmIHdlIHRyeSB0byBjb21wdXRlIHRoZSBtaW5pbXVtIGNpcmNsZXMgb2YgZWFjaCBvcHRp b24sIEkgdGhpbmsNCj4gPiA+ID4gYXQgbGVhc3Qgd2UnbGwgbmVlZCB0byBrbm93IHdoZXRoZXIg dGhlIHRhcmdldCBoYXMgc2ltaWxhcg0KPiA+ID4gPiBmZWF0dXJlLCBhbmQgdGhlIGxhdGVuY3kg b2YgZWFjaCB1b3AuIFdoaWxlIHVzaW5nIGFuDQo+ID4gPiA+IGV4cGVyaWVudGlhbCBsZW5ndGgg b2YgYmVuZWZpY2lhbCBGTUEgY2hhaW4gY291bGQgYmUgYSBzaG9ydGN1dC4NCj4gPiA+ID4gKE1h eWJlIGFsbG93aW5nIGRpZmZlcmVudCBsZW5ndGhzIGZvciBkaWZmZXJlbnQgZGF0YSB3aWR0aHMg aXMNCj4gPiA+ID4gYmV0dGVyLikNCj4gPiA+DQo+ID4gPiBIbS4gIFNvIGV2ZW4gd2hlbiB3ZSBj YW4gbGF0ZS1mb3J3YXJkIGluIGFuIEZNQSBjaGFpbg0KPiA+ID4gaW5jcmVhc2luZyB0aGUgd2lk dGggc2hvdWxkIHR5cGljYWxseSBiZSBzdGlsbCBiZXR0ZXI/DQo+ID4gPg0KPiA+ID4gXzEgPSBG TUEgKF8yICogXzMgKyBfNCk7DQo+ID4gPiBfNSA9IEZNQSAoXzYgKiBfNyArIF8xKTsNCj4gPiA+ DQo+ID4gPiBzYXkgd2l0aCBsYXRlLWZvcndhcmRpbmcgd2UgY2FuIGhpZGUgdGhlIGxhdGVuY3kg b2YgdGhlIF82ICogXzcNCj4gPiA+IG11bHRpcGx5IGFuZCB0aGUgb3ZlcmFsbCBsYXRlbmN5IG9m IHRoZSB0d28gRk1BcyBhYm92ZSBiZWNvbWUNCj4gPiA+IGxhdCAoRk1BKSArIGxhdCAoQUREKSBp biB0aGUgaWRlYWwgY2FzZS4gIEFsdGVybmF0aXZlbHkgd2UgZG8NCj4gPiA+DQo+ID4gPiBfMSA9 IEZNQSAoXzIgKiBfIDMgKyBfNCk7DQo+ID4gPiBfOCA9IF82ICogXyA3Ow0KPiA+ID4gXzUgPSBf MSArIF84Ow0KPiA+ID4NCj4gPiA+IHdoZXJlIGlmIHRoZSBGTUEgYW5kIHRoZSBtdWx0aXBseSBj YW4gZXhlY3V0ZSBpbiBwYXJhbGxlbA0KPiA+ID4gKHdlIGhhdmUgdHdvIEZNQSBwaXBlcykgdGhl IGxhdGVuY3kgd291bGQgYmUgbGF0IChGTUEpICsgbGF0IChBREQpLg0KPiA+ID4gQnV0IHdoZW4g d2Ugb25seSBoYXZlIGEgc2luZ2xlIHBpcGVsaW5lIGNhcGFibGUgb2YNCj4gPiA+IEZNQSBvciBt dWx0aXBsaWVzIHRoZW4gaXQgaXMgYXQgbGVhc3QgTUlOIChsYXQgKEZNQSkgKyAxLCBsYXQgKE1V TCkgKyAxKQ0KPiA+ID4gKyBsYXQgKEFERCksIGl0IGRlcGVuZHMgb24gbHVjayB3aGV0aGVyIHRo ZSBGTUEgb3IgdGhlIE1VTCBpcw0KPiA+ID4gaXNzdWVkIGZpcnN0IHRoZXJlLg0KPiA+ID4NCj4g PiA+IFNvIGlmIGxhdGUtZm9yd2FyZCB3b3JrcyByZWFsbHkgd2VsbCBhbmQgdGhlIGFkZCBwYXJ0 IG9mIHRoZSBGTUENCj4gPiA+IGhhcyB2ZXJ5IGxvdyBsYXRlbmN5IGNvbXBhcmVkIHRvIHRoZSBt dWx0aXBsaWNhdGlvbiBwYXJ0IGhhdmluZw0KPiA+ID4gYSBzbWFsbGVyIHJlYXNzb2Mgd2lkdGgg c2hvdWxkIHBheSBvZmYgaGVyZSBhbmQgd2UgbWlnaHQgYmUNCj4gPiA+IGFibGUgdG8gc2ltcGx5 IGNvbnRyb2wgdGhpcyB2aWEgdGhlIGV4aXN0aW5nIHRhcmdldCBob29rPw0KPiA+ID4NCj4gPiA+ IEknbSBub3QgYXdhcmUgb2YgeDg2IENQVXMgaGF2aW5nIGxhdGUtZm9yd2FyZGluZyBjYXBhYmls aXRpZXMNCj4gPiA+IGJ1dCB1c3VhbGx5IHRoZSBsYXRlbmN5IG9mIG11bHRpcGxpY2F0aW9uIGFu ZCBGTUEgaXMgdmVyeSBzaW1pbGFyDQo+ID4gPiBhbmQgb25lIGNhbiBpc3N1ZSB0d28gRk1BcyBh bmQgcG9zc2libHkgbW9yZSBBRERzIGluIHBhcmFsbGVsLg0KPiA+ID4NCj4gPiA+IEFzIHNhaWQg SSB0aGluayB0aGlzIGRldGFpbCAobGF0ZS1mb3J3YXJkKSBzaG91bGQgbWF5YmUgcmVmbGVjdGVk DQo+ID4gPiBpbnRvIGdldF9yZXF1aXJlZF9jeWNsZXMsIHBvc3NpYmx5IGd1aWRlZCBieSBhIGRp ZmZlcmVudA0KPiA+ID4gdGFyZ2V0bS5zY2hlZC5yZWFzc29jaWF0aW9uX3dpZHRoIGZvciBNVUxU X0VYUFIgdnMgUExVU19FWFBSPw0KPiA+ID4NCj4gPg0KPiA+IFRvIG15IHVuZGVyc3RhbmRpbmcs IHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSB0YXJnZXQgZnVsbHkNCj4gPiBwaXBlbGluZXMg Rk1BIGluc3RydWN0aW9ucywgc28gdGhlIE1VTFQgcGFydCBjYW4gc3RhcnQgZmlyc3QgaWYNCj4g PiBpdHMgb3BlcmFuZHMgYXJlIHJlYWR5LiBXaGlsZSB0YXJnZXRtLnNjaGVkLnJlYXNzb2NpYXRp b25fd2lkdGgNCj4gPiByZWZsZWN0cyB0aGUgbnVtYmVyIG9mIHBpcGVzIGZvciBzb21lIG9wZXJh dGlvbiwgc28gaXQgY2FuIGd1aWRlDQo+ID4gZ2V0X3JlcXVpcmVkX2N5Y2xlcyBmb3IgYSBzZXF1 ZW5jZSBvZiBpZGVudGljYWwgb3BlcmF0aW9ucw0KPiA+IChlLmcuIEEgKiBCICogQyAqIEQgb3Ig QSArIEIgKyBDICsgRCkuIFNpbmNlIHRoZSBwcm9ibGVtIGluDQo+ID4gdGhpcyBjYXNlIGlzIG5v dCB0aGUgbnVtYmVyIG9mIHBpcGVzIGZvciBGTUEsIEkgdGhpbmsgYW5vdGhlcg0KPiA+IGluZGlj YXRvciBtYXliZSBiZXR0ZXIuDQo+ID4NCj4gPiAoQ3VycmVudGx5IHRoZSBmbWFfcmVhc3NvY193 aWR0aCBmb3IgQUFyY2g2NCBpcyB0byBjb250cm9sDQo+ID4gd2hldGhlciByZWFzc29jaWF0aW9u IG9uIEZBREQgaXMgT0suIFRoaXMgd29ya2Fyb3VuZCBkb2Vzbid0DQo+ID4gd29yayB3ZWxsIG9u IHNvbWUgY2FzZXMsIGZvciBleGFtcGxlIGl0IHR1cm5zIGRvd24gcmVhc3NvY2lhdGlvbg0KPiA+ IGV2ZW4gd2hlbiB0aGVyZSdzIG5vIEZNQSBhdCBhbGwuIFNvIEkgdGhpbmsgd2UnZCBiZXR0ZXIg bm90DQo+ID4gZm9sbG93IHRoZSBzY2hlbWEuKQ0KPiA+DQo+ID4gQXR0YWNoZWQgaXMgYSBuZXcg dmVyc2lvbiBvZiB0aGUgcGF0Y2ggd2l0aCBhIGZsYWcgdG8gaW5kaWNhdGUNCj4gPiB3aGV0aGVy IEZNQSBpcyBmdWxseSBwaXBlbGluZWQsIGFuZDogMSkgbGF0IChNVUwpID49IGxhdCAoQUREKTsN Cj4gPiAyKSBzeW1tZXRyaWMgdW5pdHMgYXJlIHVzZWQgb3IgRk1VTC9GQUREL0ZNQS4gT3RoZXJ3 aXNlIHRoZQ0KPiA+IHBhdGNoIG1heSBub3QgYmUgYmVuZWZpY2lhbC4NCj4gPg0KPiA+IEl0IHRy aWVzIHRvIGNhbGN1bGF0ZSB0aGUgbGF0ZW5jaWVzIGluY2x1ZGluZyBNVUxUX0VYUFJzLiBTaW5j ZQ0KPiA+IHRoZSBjb2RlIGlzIGRpZmZlcmVudCB3aXRoIHRoZSBjdXJyZW50IGNvZGUgKHRoZSBx dWljay1zZWFyY2gNCj4gPiBwYXJ0KSwgSSBoYXZlbid0IGluY2x1ZGVkIGl0IGluc2lkZSBnZXRf cmVxdWlyZWRfY3ljbGVzLg0KPiANCj4gKzsgSWYgdGhlIGZsYWcgJ2Z1bGx5LXBpcGVsaW5lZC1m bWEnIGlzIHNldCwgcmVhc3NvY2lhdGlvbiB0YWtlcyBpbnRvIGFjY291bnQNCj4gKzsgdGhlIGJl bmlmaXQgb2YgcGFyYWxsZWxpemluZyBGTUEncyBtdWx0aXBseSBwYXJ0IGFuZCBhZGRpdGlvbiBw YXJ0Lg0KPiArZmZ1bGx5LXBpcGVsaW5lZC1mbWENCj4gK0NvbW1vbiBWYXIoZmxhZ19mdWxseV9w aXBlbGluZWRfZm1hKQ0KPiArQXNzdW1lIHRoZSB0YXJnZXQgZnVsbHkgcGlwZWxpbmVzIEZNQSBp bnN0cnVjdGlvbiwgYW5kIHN5bW1ldHJpYyB1bml0cyBhcmUNCj4gdXNlZA0KPiArZm9yIEZNVUwv RkFERC9GTUEuDQo+IA0KPiBwbGVhc2UgdXNlIGEgLS1wYXJhbSBmb3Igbm93LCBJIHRoaW5rIHRh cmdldHMgbWlnaHQgd2FudCB0byBzZXQgdGhpcyBiYXNlZA0KPiBvbiBhY3RpdmUgY29yZSB0dW5p bmcuDQo+IA0KPiArLyogR2l2ZW4gdGhhdCB0aGUgdGFyZ2V0IGZ1bGx5IHBpcGVsaW5lcyBGTUEg aW5zdHJ1Y3Rpb25zLCByZXR1cm4gbGF0ZW5jeSBvZg0KPiArICAgTVVMVF9FWFBScyB0aGF0IGNh bid0IGJlIGhpZGVkIGJ5IEZNQS4gIFdJRFRIIGlzIHRoZSBudW1iZXIgb2YgcGlwZXMuICAqLw0K PiArDQo+IA0KPiByZXR1cm4gdGhlIGxhdGVuY3kgLi4gY2FuJ3QgYmUgaGlkZGVuIGJ5IHRoZSBG TUENCj4gDQo+IEZvciBkb2N1bWVudGF0aW9uIHB1cnBvc2VzIGl0IHNob3VsZCBiZSBzdGF0ZWQg dGhhdCBtdWx0X251bSA8PSBvcHNfbnVtDQo+IA0KPiArICAvKiBJZiB0aGUgdGFyZ2V0IGZ1bGx5 IHBpcGVsaW5lcyBGTUEgaW5zdHJ1Y3Rpb24sIHRoZSBtdWx0aXBseSBwYXJ0IGNhbg0KPiBzdGFy dA0KPiANCj4gaW5zdHJ1Y3Rpb25zDQo+IA0KPiArICAgICBmaXJzdCBpZiBpdHMgb3BlcmFuZHMg YXJlIHJlYWR5LiAgQXNzdW1pbmcgc3ltbWV0cmljIHBpcGVzIGFyZSB1c2VkIGZvcg0KPiANCj4g cy9maXJzdC9hbHJlYWR5Lw0KPiANCj4gKyAgICAgRk1VTC9GQUREL0ZNQSwgdGhlbiBmb3IgYSBz ZXF1ZW5jZSBvZiBGTUEgbGlrZToNCj4gKw0KPiArICAgICAgIF84ID0gLkZNQSAoXzIsIF8zLCBf MSk7DQo+ICsgICAgICAgXzkgPSAuRk1BIChfNSwgXzQsIF84KTsNCj4gKyAgICAgICBfMTAgPSAu Rk1BIChfNywgXzYsIF85KTsNCj4gKw0KPiArICAgICAsIGlmIHdpZHRoPTEsIHRoZSBsYXRlbmN5 IGlzIGxhdGVuY3koTVVMVCkgKyBsYXRlbmN5KEFERCkqMy4NCj4gKyAgICAgV2hpbGUgd2l0aCB3 aWR0aD0yOg0KPiArDQo+ICsgICAgICAgXzggPSBfNCAqIF81Ow0KPiArICAgICAgIF85ID0gLkZN QSAoXzIsIF8zLCBfMSk7DQo+ICsgICAgICAgXzEwID0gLkZNQSAoXzYsIF83LCBfOCk7DQo+ICsg ICAgICAgXzExID0gXzkgKyBfMTA7DQo+ICsNCj4gKyAgICAgLCBpdCBpcyBsYXRlbmN5KE1VTFQp KjIgKyBsYXRlbmN5KEFERCkqMi4gIEFzc3VtaW5nIGxhdGVuY3koTVVMVCkgPD0NCj4gKyAgICAg bGF0ZW5jeShBREQpLCB0aGUgcHJldmlvdXMgb25lIGlzIHByZWZlcnJlZC4NCj4gDQo+IGxhdGVu Y3kgKE1VTFQpID49IGxhdGVuY3kgKEFERCk/DQo+IA0KPiAiLi4gdGhlIGZpcnN0IHZhcmlhbnQg aXMgcHJlZmVycmVkLiINCj4gDQo+ICsNCj4gKyAgICAgRmluZCBvdXQgaWYgd2UgY2FuIGdldCBh IHNtYWxsZXIgd2lkdGggY29uc2lkZXJpbmcgRk1BLiAgKi8NCg0KQ29ycmVjdGVkIHRoZXNlIGVy cm9ycy4gVGhhbmsgeW91IGZvciB0aGUgY29ycmVjdGlvbnMuDQoNCj4gKyAgICAgIC8qIFdoZW4g ZmxhZ19mdWxseV9waXBlbGluZWRfZm1hIGlzIHNldCwgYXNzdW1lcyBzeW1tZXRyaWMgcGlwZXMg YXJlDQo+IHVzZWQNCj4gKyAgICAgICAgZm9yIEZNVUwvRkFERC9GTUEuICAqLw0KPiArICAgICAg aW50IGxhdF9tdWwgPSBnZXRfbXVsdF9sYXRlbmN5X2NvbnNpZGVyX2ZtYSAob3BzX251bSwgbXVs dF9udW0sIHdpZHRoKTsNCj4gDQo+IHdoYXQgZG9lcyAic3ltbWV0cmljIHBpcGVzIiBhY3R1YWxs eSBtZWFuPyAgRm9yIHg4NiBaZW4zIHdlIGhhdmUNCj4gdHdvIEZNQSBwaXBlcyAodGhhdCBjYW4g YWxzbyBkbyBBREQgYW5kIE1VTCkgYW5kIG9uZSBwaXBlIHRoYXQgY2FuDQo+IGRvIEFERC4gIElz IHRoYXQgdGhlbiBub24tc3ltbWV0cmljIGJlY2F1c2Ugd2UgY2FuIGlzc3VlIG1vcmUgYWRkcw0K PiBpbiBwYXJhbGxlbCB0aGFuIEZNQS9NVUw/DQoNCiJzeW1tZXRyaWMgcGlwZXMiIHdhcyB0byBp bmRpY2F0ZSB0aGF0IEZBREQvRk1BL0ZNVUwgdXNlIHRoZSBzYW1lIHVuaXQNCnNldCwgc28gdGhl IHdpZHRocyBhcmUgdW5pZm9ybSwgYW5kIHRoZSBjYWxjdWxhdGlvbnMgaW4gdGhpcyBwYXRjaCBj YW4NCmFwcGx5LiBJIHRoaW5rIHRoaXMgY2FuIGJlIHJlbGF4ZWQgZm9yIHNjZW5hcmlvcyBsaWtl IFplbjMsIGJ5IHNlYXJjaGluZw0KZm9yIGEgc21hbGxlciB3aWR0aCBvbmx5IHVzaW5nIHRoZSBw aXBlcyBmb3IgRk1VTC9GTUEuIEJ1dCBpZiB0aGUgcGlwZXMNCmZvciBGTVVMIGFuZCBGQUREIGFy ZSBzZXBhcmF0ZWQsIGZvciBleGFtcGxlIDEgZm9yIEZNQS9GTVVMIGFuZCAyIG90aGVyDQpwaXBl cyBmb3IgRkFERCwgdGhlbiB0aGUgbWluaW11bSBjaXJjbGUgbWlnaHQgYmUgaW5jb3JyZWN0Lg0K DQpDaGFuZ2VkIHRoZSBkZXNjcmlwdGlvbnMgYW5kIGNvZGUgaW4gZ2V0X3JlYXNzb2NpYXRpb25f d2lkdGggYSBiaXQgdG8NCmluY2x1ZGUgdGhlIGNhc2UgbGlrZSBaZW4zOg0KDQorICAgICAgLyog V2hlbiBwYXJhbV9mdWxseV9waXBlbGluZWRfZm1hIGlzIHNldCwgYXNzdW1lIEZNVUwgYW5kIEZN QSB1c2UgdGhlDQorCSBzYW1lIHVuaXRzIHRoYXQgY2FuIGFsc28gZG8gRkFERC4gIEZvciBvdGhl ciBzY2VuYXJpb3MsIHN1Y2ggYXMgd2hlbg0KKwkgRk1VTCBhbmQgRkFERCBhcmUgdXNpbmcgZGlz dGluY3QgdW5pdHMsIHRoZSBmb2xsb3dpbmcgY29kZSBtYXkgbm90DQorCSBhcHBseS4gICovDQor ICAgICAgaW50IHdpZHRoX211bHQgPSB0YXJnZXRtLnNjaGVkLnJlYXNzb2NpYXRpb25fd2lkdGgg KE1VTFRfRVhQUiwgbW9kZSk7DQorICAgICAgZ2NjX2NoZWNraW5nX2Fzc2VydCAod2lkdGhfbXVs dCA8PSB3aWR0aCk7DQorDQorICAgICAgLyogTGF0ZW5jeSBvZiBNVUxUX0VYUFJzLiAgKi8NCisg ICAgICBpbnQgbGF0X211bA0KKwk9IGdldF9tdWx0X2xhdGVuY3lfY29uc2lkZXJfZm1hIChvcHNf bnVtLCBtdWx0X251bSwgd2lkdGhfbXVsdCk7DQoNCj4gT3RoZXJ3aXNlIHRoaXMgbG9va3MgT0sg bm93Lg0KPiANCj4gVGhhbmtzLA0KPiBSaWNoYXJkLg0KPiANCj4gPiA+ID4gPiArICAvKiBJZiB0 aGVyZSdzIGxvb3AgZGVwZW5kZW50IEZNQSByZXN1bHQsIHJldHVybiB3aWR0aD0yIHRvIGF2b2lk IGl0Lg0KPiA+ID4gVGhpcw0KPiA+ID4gPiA+IGlzDQo+ID4gPiA+ID4gKyAgICAgYmV0dGVyIHRo YW4gc2tpcHBpbmcgdGhlc2UgRk1BIGNhbmRpZGF0ZXMgaW4gd2lkZW5pbmdfbXVsLiAgKi8NCj4g PiA+ID4gPg0KPiA+ID4gPiA+IGJldHRlciB0aGFuIHNraXBwaW5nLCBidXQgeW91IGRvbid0IHRv dWNoIGl0IHRoZXJlPyAgSSBzdXBwb3NlIHdpZHRoDQo+ID09IDINCj4gPiA+ID4gPiB3aWxsIGJ5 cGFzcyB0aGUgc2tpcHBpbmcsIHJpZ2h0PyAgVGhpcyBoZXVyaXN0aWMgb25seSBjb21lcyBpbiB3 aGVuDQo+IHRoZQ0KPiA+ID4gYWJvdmUNCj4gPiA+ID4gPiBjaGFuZ2UgbWFkZSB3aWR0aCA9PSAx LCBzaW5jZSBvdGhlcndpc2Ugd2UgaGF2ZSBhbiBlYXJsaWVyDQo+ID4gPiA+ID4NCj4gPiA+ID4g PiAgIGlmICh3aWR0aCA9PSAxKQ0KPiA+ID4gPiA+ICAgICByZXR1cm4gd2lkdGg7DQo+ID4gPiA+ ID4NCj4gPiA+ID4gPiB3aGljaCBhbHMgZ3VhcmFudGVlcyB3aWR0aCA9PSAyIHdhcyBhbGxvd2Vk IGJ5IHRoZSBob29rL3BhcmFtLCByaWdodD8NCj4gPiA+ID4NCj4gPiA+ID4gWWVzLCB0aGF0J3Mg cmlnaHQuDQo+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiArICBpZiAod2lkdGggPT0gMSAm JiBtdWx0X251bQ0KPiA+ID4gPiA+ICsgICAgICAmJiBtYXliZV9sZSAodHJlZV90b19wb2x5X2lu dDY0IChUWVBFX1NJWkUgKFRSRUVfVFlQRSAobGhzKSkpLA0KPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICBwYXJhbV9hdm9pZF9mbWFfbWF4X2JpdHMpKQ0KPiA+ID4gPiA+ICsgICAgew0KPiA+ ID4gPiA+ICsgICAgICAvKiBMb29rIGZvciBjcm9zcyBiYWNrZWRnZSBkZXBlbmRlbmN5Og0KPiA+ ID4gPiA+ICsgICAgICAgMS4gTEhTIGlzIGEgcGhpIGFyZ3VtZW50IGluIHRoZSBzYW1lIGJhc2lj IGJsb2NrIGl0IGlzIGRlZmluZWQuDQo+ID4gPiA+ID4gKyAgICAgICAyLiBBbmQgdGhlIHJlc3Vs dCBvZiB0aGUgcGhpIG5vZGUgaXMgdXNlZCBpbiBPUFMuICAqLw0KPiA+ID4gPiA+ICsgICAgICBi YXNpY19ibG9jayBiYiA9IGdpbXBsZV9iYiAoU1NBX05BTUVfREVGX1NUTVQgKGxocykpOw0KPiA+ ID4gPiA+ICsgICAgICBnaW1wbGVfc3RtdF9pdGVyYXRvciBnc2k7DQo+ID4gPiA+ID4gKyAgICAg IGZvciAoZ3NpID0gZ3NpX3N0YXJ0X3BoaXMgKGJiKTsgIWdzaV9lbmRfcCAoZ3NpKTsgZ3NpX25l eHQNCj4gKCZnc2kpKQ0KPiA+ID4gPiA+ICsgICAgICAgew0KPiA+ID4gPiA+ICsgICAgICAgICBn cGhpICpwaGkgPSBkeW5fY2FzdDxncGhpICo+IChnc2lfc3RtdCAoZ3NpKSk7DQo+ID4gPiA+ID4g KyAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnaW1wbGVfcGhpX251bV9hcmdzIChw aGkpOyArK2kpDQo+ID4gPiA+ID4gKyAgICAgICAgICAgew0KPiA+ID4gPiA+ICsgICAgICAgICAg ICAgdHJlZSBvcCA9IFBISV9BUkdfREVGIChwaGksIGkpOw0KPiA+ID4gPiA+ICsgICAgICAgICAg ICAgaWYgKCEob3AgPT0gbGhzICYmIGdpbXBsZV9waGlfYXJnX2VkZ2UgKHBoaSwgaSktPnNyYyA9 PQ0KPiBiYikpDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gPiA+ DQo+ID4gPiA+ID4gSSB0aGluayBpdCdzIGVhc2llciB0byBpdGVyYXRlIG92ZXIgdGhlIGltbWVk aWF0ZSB1c2VzIG9mIExIUyBsaWtlDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgIEZPUl9FQUNIX0lN TV9VU0VfRkFTVCAodXNlX3AsIGl0ZXIsIGxocykNCj4gPiA+ID4gPiAgICAgIGlmIChncGhpICpw aGkgPSBkeW5fY2FzdCA8Z3BoaSAqPiAoVVNFX1NUTVQgKHVzZV9wKSkpDQo+ID4gPiA+ID4gICAg ICAgIHsNCj4gPiA+ID4gPiAgICAgICAgICAgaWYgKGdpbXBsZV9waGlfYXJnX2VkZ2UgKHBoaSwg cGhpX2FyZ19pbmRleF9mcm9tX3VzZQ0KPiA+ID4gPiA+ICh1c2VfcCkpLT5zcmMgIT0gYmIpDQo+ ID4gPiA+ID4gICAgICAgICAgICAgY29udGludWU7DQo+ID4gPiA+ID4gLi4uDQo+ID4gPiA+ID4g ICAgICAgIH0NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IG90aGVyd2lzZSBJIHRoaW5rIF90aGlzXyBw YXJ0IG9mIHRoZSBwYXRjaCBsb29rcyByZWFzb25hYmxlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g QXMgeW91IHNheSBoZXVyaXN0aWNhbGx5IHRoZXkgbWlnaHQgZ28gdG9nZXRoZXIgYnV0IEkgdGhp bmsgd2Ugc2hvdWxkDQo+ID4gPiBzcGxpdA0KPiA+ID4gPiA+IHRoZQ0KPiA+ID4gPiA+IHBhdGNo IC0gdGhlIGNyb3NzLWxvb3AgcGFydCBjYW4gcHJvYmFibHkgc3RhbmQgaW5kZXBlbmRlbnRseS4g IENhbiB5b3UNCj4gPiA+IGFkanVzdA0KPiA+ID4gPiA+IGFuZCByZS1wb3N0Pw0KPiA+ID4gPg0K PiA+ID4gPiBBdHRhY2hlZCBpcyB0aGUgc2VwYXJhdGVkIHBhcnQgZm9yIGNyb3NzLWxvb3AgRk1B LiBUaGFuayB5b3UgZm9yIHRoZQ0KPiA+ID4gY29ycmVjdGlvbi4NCj4gPiA+DQo+ID4gPiBUaGF0 IGNyb3NzLWxvb3AgRk1BIHBhdGNoIGlzIE9LLg0KPiA+DQo+ID4gQ29tbWl0dGVkIHRoaXMgcGFy dCBhdCA3NDYzNDRkZC4NCj4gPg0KPiA+IFRoYW5rcywNCj4gPiBEaQ0KPiA+DQo+ID4gPg0KPiA+ ID4gVGhhbmtzLA0KPiA+ID4gUmljaGFyZC4NCj4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBB cyBmb3IgdGhlIGZpcnN0IHBhcnQgSSBzdGlsbCBkb24ndCB1bmRlcnN0YW5kIHZlcnkgd2VsbCBh bmQgYW0gc3RpbGwNCj4gPiA+IGhvcGluZw0KPiA+ID4gPiA+IHdlDQo+ID4gPiA+ID4gY2FuIGdl dCBhd2F5IHdpdGhvdXQgeWV0IGFub3RoZXIga25vYiB0byB0dW5lLg0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gUmljaGFyZC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ IDIuIFRvIGF2b2lkIHJlZ3Jlc3Npb25zLCBpbmNsdWRlZCB0aGUgb3RoZXIgcGF0Y2gNCj4gPiA+ ID4gPiA+ID4gPiAoaHR0cHM6Ly9nY2MuZ251Lm9yZy9waXBlcm1haWwvZ2NjLXBhdGNoZXMvMjAy My0NCj4gPiA+IFNlcHRlbWJlci82MjkyMDMuaHRtbCkNCj4gPiA+ID4gPiA+ID4gPiBvbiB0aGlz IHRyYWNrZXIgYWdhaW4uIFRoaXMgaXMgYmVjYXVzZSBtb3JlIEZNQSB3aWxsIGJlIGtlcHQNCj4g PiA+ID4gPiA+ID4gPiB3aXRoIDEuLCBzbyB3ZSBuZWVkIHRvIHJ1bGUgb3V0IHRoZSBsb29wIGRl cGVuZGVudA0KPiA+ID4gPiA+ID4gPiA+IEZNQSBjaGFpbnMgd2hlbiBwYXJhbV9hdm9pZF9mbWFf bWF4X2JpdHMgaXMgc2V0Lg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBTb3JyeSBhZ2Fp biBmb3IgdGFraW5nIHNvIGxvbmcgdG8gcmVwbHkuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiA+IEknbGwgbm90ZSB3ZSBoYXZlIGFuIG9kZCBjYXNlIG9uIHg4NiBaZW4yKD8pIGFzIHdlbGwg d2hpY2ggd2UNCj4gZG9uJ3QNCj4gPiA+IHJlYWxseQ0KPiA+ID4gPiA+ID4gPiB1bmRlcnN0YW5k IGZyb20gYSBDUFUgYmVoYXZpb3IgcGVyc3BlY3RpdmUuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiA+IFRoYW5rcywNCj4gPiA+ID4gPiA+ID4gUmljaGFyZC4NCj4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gPiBUaGFua3MsDQo+ID4gPiA+ID4gPiA+ID4gRGkgWmhhbw0KPiA+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gLS0tLQ0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiA+ID4gICAgICAgICBQUiB0cmVlLW9wdGltaXphdGlvbi8xMTAyNzkNCj4gPiA+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gPiA+IGdjYy9DaGFuZ2VMb2c6DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gPiAgICAgICAgICogdHJlZS1zc2EtcmVhc3NvYy5jYw0KPiAocmFua19vcHNfZm9y X2JldHRlcl9wYXJhbGxlbGlzbV9wKToNCj4gPiA+ID4gPiA+ID4gPiAgICAgICAgIE5ldyBmdW5j dGlvbiB0byBjaGVjayB3aGV0aGVyIHJhbmtpbmcgdGhlIG9wcyByZXN1bHRzIGluDQo+ID4gPiA+ ID4gPiA+ID4gICAgICAgICBiZXR0ZXIgcGFyYWxsZWxpc20uDQo+ID4gPiA+ID4gPiA+ID4gICAg ICAgICAoZ2V0X3JlYXNzb2NpYXRpb25fd2lkdGgpOiBBZGQgbmV3IHBhcmFtZXRlcnMuIFNlYXJj aA0KPiBmb3INCj4gPiA+ID4gPiA+ID4gPiAgICAgICAgIHNtYWxsZXIgd2lkdGggY29uc2lkZXJp bmcgdGhlIGJlbmVmaXQgb2YgRk1BLg0KPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgKHJhbmtfb3Bz X2Zvcl9mbWEpOiBDaGFuZ2UgcmV0dXJuIHZhbHVlIHRvIGJlIG51bWJlciBvZg0KPiA+ID4gPiA+ ID4gPiA+ICAgICAgICAgTVVMVF9FWFBScy4NCj4gPiA+ID4gPiA+ID4gPiAgICAgICAgIChyZWFz c29jaWF0ZV9iYik6IEZvciAzIG9wcywgcmVmaW5lIHRoZSBjb25kaXRpb24gdG8NCj4gY2FsbA0K PiA+ID4gPiA+ID4gPiA+ICAgICAgICAgc3dhcF9vcHNfZm9yX2JpbmFyeV9zdG10Lg0KPiA+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQo+ID4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiAgICAgICAgICogZ2NjLmRnL3ByMTEwMjc5LmM6 IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFRoYW5rcywNCj4gPiA+ID4gPiA+ IERpIFpoYW8NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAtLS0tDQo+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gICAgICAgICBQUiB0cmVlLW9wdGltaXphdGlvbi8xMTAyNzkNCj4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiBnY2MvQ2hhbmdlTG9nOg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAg ICAgICAgKiBkb2MvaW52b2tlLnRleGk6IERlc2NyaXB0aW9uIG9mIHBhcmFtX21heF9mbWFfY2hh aW5fbGVuLg0KPiA+ID4gPiA+ID4gICAgICAgICAqIHBhcmFtcy5vcHQ6IE5ldyBwYXJhbWV0ZXIg cGFyYW1fbWF4X2ZtYV9jaGFpbl9sZW4uDQo+ID4gPiA+ID4gPiAgICAgICAgICogdHJlZS1zc2Et cmVhc3NvYy5jYyAoZ2V0X3JlYXNzb2NpYXRpb25fd2lkdGgpOg0KPiA+ID4gPiA+ID4gICAgICAg ICBTdXBwb3J0IHBhcmFtX21heF9mbWFfY2hhaW5fbGVuOyBjaGVjayBmb3IgbG9vcCBkZXBlbmRl bnQNCj4gPiA+ID4gPiA+ICAgICAgICAgRk1Bcy4NCj4gPiA+ID4gPiA+ICAgICAgICAgKHJhbmtf b3BzX2Zvcl9mbWEpOiBSZXR1cm4gdGhlIG51bWJlciBvZiBNVUxUX0VYUFJzLg0KPiA+ID4gPiA+ ID4gICAgICAgICAocmVhc3NvY2lhdGVfYmIpOiBGb3IgMyBvcHMsIHJlZmluZSB0aGUgY29uZGl0 aW9uIHRvIGNhbGwNCj4gPiA+ID4gPiA+ICAgICAgICAgc3dhcF9vcHNfZm9yX2JpbmFyeV9zdG10 Lg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAgICAgICAgKiBnY2MuZGcvcHIxMTAyNzktMS5jOiBOZXcg dGVzdC4NCj4gPiA+ID4gPiA+ICAgICAgICAgKiBnY2MuZGcvcHIxMTAyNzktMi5jOiBOZXcgdGVz dC4NCj4gPiA+ID4gPiA+ICAgICAgICAgKiBnY2MuZGcvcHIxMTAyNzktMy5jOiBOZXcgdGVzdC4N Cj4gPiA+ID4NCj4gPiA+ID4gLS0tDQo+ID4gPiA+DQo+ID4gPiA+ICAgICAgICAgUFIgdHJlZS1v cHRpbWl6YXRpb24vMTEwMjc5DQo+ID4gPiA+DQo+ID4gPiA+IGdjYy9DaGFuZ2VMb2c6DQo+ID4g PiA+DQo+ID4gPiA+ICAgICAgICAgKiB0cmVlLXNzYS1yZWFzc29jLmNjIChnZXRfcmVhc3NvY2lh dGlvbl93aWR0aCk6IGNoZWNrDQo+ID4gPiA+ICAgICAgICAgZm9yIGxvb3AgZGVwZW5kZW50IEZN QXMuDQo+ID4gPiA+ICAgICAgICAgKHJlYXNzb2NpYXRlX2JiKTogRm9yIDMgb3BzLCByZWZpbmUg dGhlIGNvbmRpdGlvbiB0byBjYWxsDQo+ID4gPiA+ICAgICAgICAgc3dhcF9vcHNfZm9yX2JpbmFy eV9zdG10Lg0KPiA+ID4gPg0KPiA+ID4gPiBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoNCj4gPiA+ ID4NCj4gPiA+ID4gICAgICAgICAqIGdjYy5kZy9wcjExMDI3OS0xLmM6IE5ldyB0ZXN0Lg0KPiA+ IC0tLQ0KPiA+DQo+ID4gICAgICAgICBQUiB0cmVlLW9wdGltaXphdGlvbi8xMTAyNzkNCj4gPg0K PiA+IGdjYy9DaGFuZ2VMb2c6DQo+ID4NCj4gPiAgICAgICAgICogY29tbW9uLm9wdDogTmV3IGZs YWcgZnVsbHktcGlwZWxpbmVkLWZtYS4NCj4gPiAgICAgICAgICogdHJlZS1zc2EtcmVhc3NvYy5j YyAoZ2V0X211bHRfbGF0ZW5jeV9jb25zaWRlcl9mbWEpOg0KPiA+ICAgICAgICAgUmV0dXJuIGxh dGVuY3kgb2YgTVVMVF9FWFBScyB0aGF0IGNhbid0IGJlIGhpZGVkIGJ5IEZNQS4NCj4gPiAgICAg ICAgIChnZXRfcmVhc3NvY2lhdGlvbl93aWR0aCk6IFNlYXJjaCBmb3Igc21hbGxlciB3aWR0aHMN Cj4gPiAgICAgICAgIGNvbnNpZGVyaW5nIHRoZSBiZW5lZml0IG9mIGZ1bGx5IHBpcGVsaW5lZCBG TUEuDQo+ID4gICAgICAgICAocmFua19vcHNfZm9yX2ZtYSk6IFJldHVybiB0aGUgbnVtYmVyIG9m IE1VTFRfRVhQUnMuDQo+ID4gICAgICAgICAocmVhc3NvY2lhdGVfYmIpOiBQYXNzIHRoZSBudW1i ZXIgb2YgTVVMVF9FWFBScyB0bw0KPiA+ICAgICAgICAgZ2V0X3JlYXNzb2NpYXRpb25fd2lkdGg7 IGF2b2lkIGNhbGxpbmcNCj4gPiAgICAgICAgIGdldF9yZWFzc29jaWF0aW9uX3dpZHRoIHR3aWNl Lg0KPiA+DQo+ID4gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQo+ID4NCj4gPiAgICAgICAgICog Z2NjLmRnL3ByMTEwMjc5LTIuYzogTmV3IHRlc3QuDQoNClRoYW5rcywNCkRpDQoNCi0tLQ0KDQoJ UFIgdHJlZS1vcHRpbWl6YXRpb24vMTEwMjc5DQoNCmdjYy9DaGFuZ2VMb2c6DQoNCgkqIGRvYy9p bnZva2UudGV4aTogTmV3IHBhcmFtZXRlciBmdWxseS1waXBlbGluZWQtZm1hLg0KCSogcGFyYW1z Lm9wdDogTmV3IHBhcmFtZXRlciBmdWxseS1waXBlbGluZWQtZm1hLg0KCSogdHJlZS1zc2EtcmVh c3NvYy5jYyAoZ2V0X211bHRfbGF0ZW5jeV9jb25zaWRlcl9mbWEpOiBSZXR1cm4NCgl0aGUgbGF0 ZW5jeSBvZiBNVUxUX0VYUFJzIHRoYXQgY2FuJ3QgYmUgaGlkZGVuIGJ5IHRoZSBGTUFzLg0KCShn ZXRfcmVhc3NvY2lhdGlvbl93aWR0aCk6IFNlYXJjaCBmb3IgYSBzbWFsbGVyIHdpZHRoDQoJY29u c2lkZXJpbmcgdGhlIGJlbmVmaXQgb2YgZnVsbHkgcGlwZWxpbmVkIEZNQS4NCgkocmFua19vcHNf Zm9yX2ZtYSk6IFJldHVybiB0aGUgbnVtYmVyIG9mIE1VTFRfRVhQUnMuDQoJKHJlYXNzb2NpYXRl X2JiKTogUGFzcyB0aGUgbnVtYmVyIG9mIE1VTFRfRVhQUnMgdG8NCglnZXRfcmVhc3NvY2lhdGlv bl93aWR0aDsgYXZvaWQgY2FsbGluZw0KCWdldF9yZWFzc29jaWF0aW9uX3dpZHRoIHR3aWNlLg0K DQpnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoNCg0KICAgICAgICAqIGdjYy5kZy9wcjExMDI3OS0y LmM6IE5ldyB0ZXN0Lg0K --_002_SN6PR01MB42405D4A9923012D17B40D5CE88DASN6PR01MB4240prod_ Content-Type: application/octet-stream; name="0001-Consider-fully-pipelined-FMA-in-get_reassociation_wi.patch" Content-Description: 0001-Consider-fully-pipelined-FMA-in-get_reassociation_wi.patch Content-Disposition: attachment; filename="0001-Consider-fully-pipelined-FMA-in-get_reassociation_wi.patch"; size=11556; creation-date="Wed, 13 Dec 2023 08:13:22 GMT"; modification-date="Wed, 13 Dec 2023 08:14:27 GMT" Content-Transfer-Encoding: base64 RnJvbSA1YmYyMWFkZTAzNzA0ZTk2NWU0ZDA3YzI2MDNiOTU0MmRjNGMwYWM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiRGkgWmhhbyIgPGRpemhhb0Bvcy5hbXBlcmVjb21wdXRpbmcu Y29tPgpEYXRlOiBUdWUsIDEyIERlYyAyMDIzIDIzOjA2OjE0ICswODAwClN1YmplY3Q6IFtQQVRD SF0gQ29uc2lkZXIgZnVsbHkgcGlwZWxpbmVkIEZNQSBpbiBnZXRfcmVhc3NvY2lhdGlvbl93aWR0 aAoKLS0tCiBnY2MvZG9jL2ludm9rZS50ZXhpICAgICAgICAgICAgICAgfCAgIDYgKysKIGdjYy9w YXJhbXMub3B0ICAgICAgICAgICAgICAgICAgICB8ICAgNyArKwogZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvcHIxMTAyNzktMi5jIHwgIDQxICsrKysrKysrCiBnY2MvdHJlZS1zc2EtcmVhc3NvYy5jYyAg ICAgICAgICAgfCAxNTAgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiA0IGZpbGVzIGNo YW5nZWQsIDE3NyBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjExMDI3OS0yLmMKCmRpZmYgLS1naXQgYS9nY2Mv ZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQppbmRleCBkMzk1YTZhNzQ3ZS4u ZjllYzkzYTgxMDYgMTAwNjQ0Ci0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKKysrIGIvZ2NjL2Rv Yy9pbnZva2UudGV4aQpAQCAtMTYxNTksNiArMTYxNTksMTIgQEAgRW5hYmxlIGxvb3AgdmVjdG9y aXphdGlvbiBvZiBmbG9hdGluZyBwb2ludCBpbmR1Y3Rpb25zLgogQGl0ZW0gYXZvaWQtZm1hLW1h eC1iaXRzCiBNYXhpbXVtIG51bWJlciBvZiBiaXRzIGZvciB3aGljaCB3ZSBhdm9pZCBjcmVhdGlu ZyBGTUFzLgogCitAaXRlbSBmdWxseS1waXBlbGluZWQtZm1hCitXaGV0aGVyIHRoZSB0YXJnZXQg ZnVsbHkgcGlwZWxpbmVzIEZNQSBpbnN0cnVjdGlvbnMuICBJZiBub24temVybywKK3JlYXNzb2Np YXRpb24gY29uc2lkZXJzIHRoZSBiZW5lZml0IG9mIHBhcmFsbGVsaXppbmcgRk1BJ3MgbXVsdGlw bGljYXRpb24KK3BhcnQgYW5kIGFkZGl0aW9uIHBhcnQsIGFzc3VtaW5nIEZNVUwgYW5kIEZNQSB1 c2UgdGhlIHNhbWUgdW5pdHMgdGhhdCBjYW4KK2Fsc28gZG8gRkFERC4KKwogQGl0ZW0gc21zLWxv b3AtYXZlcmFnZS1jb3VudC10aHJlc2hvbGQKIEEgdGhyZXNob2xkIG9uIHRoZSBhdmVyYWdlIGxv b3AgY291bnQgY29uc2lkZXJlZCBieSB0aGUgc3dpbmcgbW9kdWxvIHNjaGVkdWxlci4KIApkaWZm IC0tZ2l0IGEvZ2NjL3BhcmFtcy5vcHQgYi9nY2MvcGFyYW1zLm9wdAppbmRleCBlM2E5M2FjNzQz NS4uYWIxMmI1Mjg1NDAgMTAwNjQ0Ci0tLSBhL2djYy9wYXJhbXMub3B0CisrKyBiL2djYy9wYXJh bXMub3B0CkBAIC0xNDYsNiArMTQ2LDEzIEBAIE1heGltdW0gbnVtYmVyIG9mIG91dGdvaW5nIGVk Z2VzIGluIGEgc3dpdGNoIGJlZm9yZSBFVlJQIHdpbGwgbm90IHByb2Nlc3MgaXQuCiBDb21tb24g Sm9pbmVkIFVJbnRlZ2VyIFZhcihwYXJhbV9mc21fc2NhbGVfcGF0aF9zdG10cykgSW5pdCgyKSBJ bnRlZ2VyUmFuZ2UoMSwgMTApIFBhcmFtIE9wdGltaXphdGlvbgogU2NhbGUgZmFjdG9yIHRvIGFw cGx5IHRvIHRoZSBudW1iZXIgb2Ygc3RhdGVtZW50cyBpbiBhIHRocmVhZGluZyBwYXRoIGNyb3Nz aW5nIGEgbG9vcCBiYWNrZWRnZSB3aGVuIGNvbXBhcmluZyB0byBtYXgtanVtcC10aHJlYWQtZHVw bGljYXRpb24tc3RtdHMuCiAKKy1wYXJhbT1mdWxseS1waXBlbGluZWQtZm1hPQorQ29tbW9uIEpv aW5lZCBVSW50ZWdlciBWYXIocGFyYW1fZnVsbHlfcGlwZWxpbmVkX2ZtYSkgSW5pdCgwKSBJbnRl Z2VyUmFuZ2UoMCwgMSkgUGFyYW0gT3B0aW1pemF0aW9uCitXaGV0aGVyIHRoZSB0YXJnZXQgZnVs bHkgcGlwZWxpbmVzIEZNQSBpbnN0cnVjdGlvbnMuICBJZiBub24temVybywKK3JlYXNzb2NpYXRp b24gY29uc2lkZXJzIHRoZSBiZW5lZml0IG9mIHBhcmFsbGVsaXppbmcgRk1BJ3MgbXVsdGlwbGlj YXRpb24KK3BhcnQgYW5kIGFkZGl0aW9uIHBhcnQsIGFzc3VtaW5nIEZNVUwgYW5kIEZNQSB1c2Ug dGhlIHNhbWUgdW5pdHMgdGhhdCBjYW4KK2Fsc28gZG8gRkFERC4KKwogLXBhcmFtPWdjc2UtYWZ0 ZXItcmVsb2FkLWNyaXRpY2FsLWZyYWN0aW9uPQogQ29tbW9uIEpvaW5lZCBVSW50ZWdlciBWYXIo cGFyYW1fZ2NzZV9hZnRlcl9yZWxvYWRfY3JpdGljYWxfZnJhY3Rpb24pIEluaXQoMTApIFBhcmFt IE9wdGltaXphdGlvbgogVGhlIHRocmVzaG9sZCByYXRpbyBvZiBjcml0aWNhbCBlZGdlcyBleGVj dXRpb24gY291bnQgdGhhdCBwZXJtaXQgcGVyZm9ybWluZyByZWR1bmRhbmN5IGVsaW1pbmF0aW9u IGFmdGVyIHJlbG9hZC4KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMTEwMjc5 LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMTEwMjc5LTIuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDMwNGE3N2FhNjYKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy9wcjExMDI3OS0yLmMKQEAgLTAsMCArMSw0MSBAQAorLyogUFIg dHJlZS1vcHRpbWl6YXRpb24vMTEwMjc5ICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1vcHRpb25zICItT2Zhc3QgLS1wYXJhbSB0cmVlLXJlYXNzb2Mtd2lkdGg9NCAtLXBhcmFt IGZ1bGx5LXBpcGVsaW5lZC1mbWE9MSAtZmR1bXAtdHJlZS1yZWFzc29jMi1kZXRhaWxzIC1mZHVt cC10cmVlLW9wdGltaXplZCIgfSAqLworLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYXJj aD1hcm12OC4yLWEiIHsgdGFyZ2V0IGFhcmNoNjQtKi0qIH0gfSAqLworCisjZGVmaW5lIExPT1Bf Q09VTlQgODAwMDAwMDAwCit0eXBlZGVmIGRvdWJsZSBkYXRhX2U7CisKKyNpbmNsdWRlIDxzdGRp by5oPgorCitfX2F0dHJpYnV0ZV9ub2lubGluZV9fIGRhdGFfZQorZm9vIChkYXRhX2UgaW4pCit7 CisgIGRhdGFfZSBhMSwgYTIsIGEzLCBhNDsKKyAgZGF0YV9lIHRtcCwgcmVzdWx0ID0gMDsKKyAg YTEgPSBpbiArIDAuMTsKKyAgYTIgPSBpbiAqIDAuMTsKKyAgYTMgPSBpbiArIDAuMDE7CisgIGE0 ID0gaW4gKiAwLjU5OworCisgIGRhdGFfZSByZXN1bHQyID0gMDsKKworICBmb3IgKGludCBpYyA9 IDA7IGljIDwgTE9PUF9DT1VOVDsgaWMrKykKKyAgICB7CisgICAgICAvKiBUZXN0IHRoYXQgYSBj b21wbGV0ZSBGTUEgY2hhaW4gd2l0aCBsZW5ndGg9NCBpcyBub3QgYnJva2VuLiAgKi8KKyAgICAg IHRtcCA9IGExICsgYTIgKiBhMiArIGEzICogYTMgKyBhNCAqIGE0IDsKKyAgICAgIHJlc3VsdCAr PSB0bXAgLSBpYzsKKyAgICAgIHJlc3VsdDIgPSByZXN1bHQyIC8gMiAtIHRtcDsKKworICAgICAg YTEgKz0gMC45MTsKKyAgICAgIGEyICs9IDAuMTsKKyAgICAgIGEzIC09IDAuMDE7CisgICAgICBh NCAtPSAwLjg5OworCisgICAgfQorCisgIHJldHVybiByZXN1bHQgKyByZXN1bHQyOworfQorCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtbm90ICJ3YXMgY2hvc2VuIGZvciByZWFzc29j aWF0aW9uIiAicmVhc3NvYzIifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMge1wuRk1BIH0gMyAib3B0aW1pemVkIn0gfSAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYS1yZWFzc29jLmNjIGIvZ2NjL3RyZWUtc3Nh LXJlYXNzb2MuY2MKaW5kZXggY2U5N2ZjOWE4YjguLmQ0NTg5OGVhMWQ1IDEwMDY0NAotLS0gYS9n Y2MvdHJlZS1zc2EtcmVhc3NvYy5jYworKysgYi9nY2MvdHJlZS1zc2EtcmVhc3NvYy5jYwpAQCAt NTQyNSwxMyArNTQyNSwzNSBAQCBnZXRfcmVxdWlyZWRfY3ljbGVzIChpbnQgb3BzX251bSwgaW50 IGNwdV93aWR0aCkKICAgcmV0dXJuIHJlczsKIH0KIAorLyogR2l2ZW4gdGhhdCB0aGUgdGFyZ2V0 IGZ1bGx5IHBpcGVsaW5lcyBGTUEgaW5zdHJ1Y3Rpb25zLCByZXR1cm4gdGhlIGxhdGVuY3kKKyAg IG9mIE1VTFRfRVhQUnMgdGhhdCBjYW4ndCBiZSBoaWRkZW4gYnkgdGhlIEZNQXMuICBXSURUSCBp cyB0aGUgbnVtYmVyIG9mCisgICBwaXBlcy4gICovCisKK3N0YXRpYyBpbmxpbmUgaW50CitnZXRf bXVsdF9sYXRlbmN5X2NvbnNpZGVyX2ZtYSAoaW50IG9wc19udW0sIGludCBtdWx0X251bSwgaW50 IHdpZHRoKQoreworICBnY2NfY2hlY2tpbmdfYXNzZXJ0IChtdWx0X251bSAmJiBtdWx0X251bSA8 PSBvcHNfbnVtKTsKKworICAvKiBGb3IgZWFjaCBwYXJ0aXRpb24sIGlmIG11bHRfbnVtID09IG9w c19udW0sIHRoZXJlJ3MgbGF0ZW5jeShNVUxUKSoyLgorICAgICBlLmc6CisKKwlBICogQiArIEMg KiBECisJPT4KKwlfMSA9IEEgKiBCOworCV8yID0gLkZNQSAoQywgRCwgXzEpOworCisgICAgICBP dGhlcndpc2UgdGhlcmUncyBsYXRlbmN5KE1VTFQpKjEgaW4gdGhlIGZpcnN0IEZNQS4gICovCisg IHJldHVybiBDRUlMIChvcHNfbnVtLCB3aWR0aCkgPT0gQ0VJTCAobXVsdF9udW0sIHdpZHRoKSA/ IDIgOiAxOworfQorCiAvKiBSZXR1cm5zIGFuIG9wdGltYWwgbnVtYmVyIG9mIHJlZ2lzdGVycyB0 byB1c2UgZm9yIGNvbXB1dGF0aW9uIG9mCiAgICBnaXZlbiBzdGF0ZW1lbnRzLgogCi0gICBMSFMg aXMgdGhlIHJlc3VsdCBzc2EgbmFtZSBvZiBPUFMuICAqLworICAgTEhTIGlzIHRoZSByZXN1bHQg c3NhIG5hbWUgb2YgT1BTLiAgTVVMVF9OVU0gaXMgbnVtYmVyIG9mIHN1Yi1leHByZXNzaW9ucwor ICAgdGhhdCBhcmUgTVVMVF9FWFBScywgd2hlbiBPUFMgYXJlIFBMVVNfRVhQUnMgb3IgTUlOVVNf RVhQUnMuICAqLwogCiBzdGF0aWMgaW50Ci1nZXRfcmVhc3NvY2lhdGlvbl93aWR0aCAodmVjPG9w ZXJhbmRfZW50cnkgKj4gKm9wcywgdHJlZSBsaHMsCitnZXRfcmVhc3NvY2lhdGlvbl93aWR0aCAo dmVjPG9wZXJhbmRfZW50cnkgKj4gKm9wcywgaW50IG11bHRfbnVtLCB0cmVlIGxocywKIAkJCSBl bnVtIHRyZWVfY29kZSBvcGMsIG1hY2hpbmVfbW9kZSBtb2RlKQogewogICBpbnQgcGFyYW1fd2lk dGggPSBwYXJhbV90cmVlX3JlYXNzb2Nfd2lkdGg7CkBAIC01NDU3LDE2ICs1NDc5LDY4IEBAIGdl dF9yZWFzc29jaWF0aW9uX3dpZHRoICh2ZWM8b3BlcmFuZF9lbnRyeSAqPiAqb3BzLCB0cmVlIGxo cywKICAgICAgc28gd2UgY2FuIHBlcmZvcm0gYSBiaW5hcnkgc2VhcmNoIGZvciB0aGUgbWluaW1h bCB3aWR0aCB0aGF0IHN0aWxsCiAgICAgIHJlc3VsdHMgaW4gdGhlIG9wdGltYWwgY3ljbGUgY291 bnQuICAqLwogICB3aWR0aF9taW4gPSAxOwotICB3aGlsZSAod2lkdGggPiB3aWR0aF9taW4pCisK KyAgLyogSWYgdGhlIHRhcmdldCBmdWxseSBwaXBlbGluZXMgRk1BIGluc3RydWN0aW9uLCB0aGUg bXVsdGlwbHkgcGFydCBjYW4gc3RhcnQKKyAgICAgYWxyZWFkeSBpZiBpdHMgb3BlcmFuZHMgYXJl IHJlYWR5LiAgQXNzdW1pbmcgc3ltbWV0cmljIHBpcGVzIGFyZSB1c2VkIGZvcgorICAgICBGTVVM L0ZBREQvRk1BLCB0aGVuIGZvciBhIHNlcXVlbmNlIG9mIEZNQSBsaWtlOgorCisJXzggPSAuRk1B IChfMiwgXzMsIF8xKTsKKwlfOSA9IC5GTUEgKF81LCBfNCwgXzgpOworCV8xMCA9IC5GTUEgKF83 LCBfNiwgXzkpOworCisgICAgICwgaWYgd2lkdGg9MSwgdGhlIGxhdGVuY3kgaXMgbGF0ZW5jeShN VUxUKSArIGxhdGVuY3koQUREKSozLgorICAgICBXaGlsZSB3aXRoIHdpZHRoPTI6CisKKwlfOCA9 IF80ICogXzU7CisJXzkgPSAuRk1BIChfMiwgXzMsIF8xKTsKKwlfMTAgPSAuRk1BIChfNiwgXzcs IF84KTsKKwlfMTEgPSBfOSArIF8xMDsKKworICAgICAsIGl0IGlzIGxhdGVuY3koTVVMVCkqMiAr IGxhdGVuY3koQUREKSoyLiAgQXNzdW1pbmcgbGF0ZW5jeShNVUxUKSA+PQorICAgICBsYXRlbmN5 KEFERCksIHRoZSBmaXJzdCB2YXJpYW50IGlzIHByZWZlcnJlZC4KKworICAgICBGaW5kIG91dCBp ZiB3ZSBjYW4gZ2V0IGEgc21hbGxlciB3aWR0aCBjb25zaWRlcmluZyBGTUEuICAqLworICBpZiAo d2lkdGggPiAxICYmIG11bHRfbnVtICYmIHBhcmFtX2Z1bGx5X3BpcGVsaW5lZF9mbWEpCiAgICAg ewotICAgICAgaW50IHdpZHRoX21pZCA9ICh3aWR0aCArIHdpZHRoX21pbikgLyAyOworICAgICAg LyogV2hlbiBwYXJhbV9mdWxseV9waXBlbGluZWRfZm1hIGlzIHNldCwgYXNzdW1lIEZNVUwgYW5k IEZNQSB1c2UgdGhlCisJIHNhbWUgdW5pdHMgdGhhdCBjYW4gYWxzbyBkbyBGQURELiAgRm9yIG90 aGVyIHNjZW5hcmlvcywgc3VjaCBhcyB3aGVuCisJIEZNVUwgYW5kIEZBREQgYXJlIHVzaW5nIHNl cGFyYXRlZCB1bml0cywgdGhlIGZvbGxvd2luZyBjb2RlIG1heSBub3QKKwkgYXBwbHkuICAqLwor ICAgICAgaW50IHdpZHRoX211bHQgPSB0YXJnZXRtLnNjaGVkLnJlYXNzb2NpYXRpb25fd2lkdGgg KE1VTFRfRVhQUiwgbW9kZSk7CisgICAgICBnY2NfY2hlY2tpbmdfYXNzZXJ0ICh3aWR0aF9tdWx0 IDw9IHdpZHRoKTsKKworICAgICAgLyogTGF0ZW5jeSBvZiBNVUxUX0VYUFJzLiAgKi8KKyAgICAg IGludCBsYXRfbXVsCisJPSBnZXRfbXVsdF9sYXRlbmN5X2NvbnNpZGVyX2ZtYSAob3BzX251bSwg bXVsdF9udW0sIHdpZHRoX211bHQpOworCisgICAgICAvKiBRdWljayBzZWFyY2ggbWlnaHQgbm90 IGFwcGx5LiAgU28gc3RhcnQgZnJvbSAxLiAgKi8KKyAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwg d2lkdGhfbXVsdDsgaSsrKQorCXsKKwkgIGludCBsYXRfbXVsX25ldworCSAgICA9IGdldF9tdWx0 X2xhdGVuY3lfY29uc2lkZXJfZm1hIChvcHNfbnVtLCBtdWx0X251bSwgaSk7CisJICBpbnQgbGF0 X2FkZF9uZXcgPSBnZXRfcmVxdWlyZWRfY3ljbGVzIChvcHNfbnVtLCBpKTsKIAotICAgICAgaWYg KGdldF9yZXF1aXJlZF9jeWNsZXMgKG9wc19udW0sIHdpZHRoX21pZCkgPT0gY3ljbGVzX2Jlc3Qp Ci0Jd2lkdGggPSB3aWR0aF9taWQ7Ci0gICAgICBlbHNlIGlmICh3aWR0aF9taW4gPCB3aWR0aF9t aWQpCi0Jd2lkdGhfbWluID0gd2lkdGhfbWlkOwotICAgICAgZWxzZQotCWJyZWFrOworCSAgLyog QXNzdW1lIGxhdGVuY3koTVVMVCkgPj0gbGF0ZW5jeShBREQpLiAgKi8KKwkgIGlmIChsYXRfbXVs IC0gbGF0X211bF9uZXcgPj0gbGF0X2FkZF9uZXcgLSBjeWNsZXNfYmVzdCkKKwkgICAgeworCSAg ICAgIHdpZHRoID0gaTsKKwkgICAgICBicmVhazsKKwkgICAgfQorCX0KKyAgICB9CisgIGVsc2UK KyAgICB7CisgICAgICB3aGlsZSAod2lkdGggPiB3aWR0aF9taW4pCisJeworCSAgaW50IHdpZHRo X21pZCA9ICh3aWR0aCArIHdpZHRoX21pbikgLyAyOworCisJICBpZiAoZ2V0X3JlcXVpcmVkX2N5 Y2xlcyAob3BzX251bSwgd2lkdGhfbWlkKSA9PSBjeWNsZXNfYmVzdCkKKwkgICAgd2lkdGggPSB3 aWR0aF9taWQ7CisJICBlbHNlIGlmICh3aWR0aF9taW4gPCB3aWR0aF9taWQpCisJICAgIHdpZHRo X21pbiA9IHdpZHRoX21pZDsKKwkgIGVsc2UKKwkgICAgYnJlYWs7CisJfQogICAgIH0KIAogICAv KiBJZiB0aGVyZSdzIGxvb3AgZGVwZW5kZW50IEZNQSByZXN1bHQsIHJldHVybiB3aWR0aD0yIHRv IGF2b2lkIGl0LiAgVGhpcyBpcwpAQCAtNjgzNiw4ICs2OTEwLDEwIEBAIHRyYW5zZm9ybV9zdG10 X3RvX211bHRpcGx5IChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpLCBnaW1wbGUgKnN0bXQsCiAg ICBSZWFycmFuZ2Ugb3BzIHRvIC0+IGUgKyBhICogYiArIGMgKiBkIGdlbmVyYXRlczoKIAogICAg XzQgID0gLkZNQSAoY183KEQpLCBkXzgoRCksIF8zKTsKLSAgIF8xMSA9IC5GTUEgKGFfNShEKSwg Yl82KEQpLCBfNCk7ICAqLwotc3RhdGljIGJvb2wKKyAgIF8xMSA9IC5GTUEgKGFfNShEKSwgYl82 KEQpLCBfNCk7CisKKyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIE1VTFRfRVhQUnMgaW4gdGhlIGNo YWluLiAgKi8KK3N0YXRpYyBpbnQKIHJhbmtfb3BzX2Zvcl9mbWEgKHZlYzxvcGVyYW5kX2VudHJ5 ICo+ICpvcHMpCiB7CiAgIG9wZXJhbmRfZW50cnkgKm9lOwpAQCAtNjg1MSw5ICs2OTI3LDI2IEBA IHJhbmtfb3BzX2Zvcl9mbWEgKHZlYzxvcGVyYW5kX2VudHJ5ICo+ICpvcHMpCiAgICAgICBpZiAo VFJFRV9DT0RFIChvZS0+b3ApID09IFNTQV9OQU1FKQogCXsKIAkgIGdpbXBsZSAqZGVmX3N0bXQg PSBTU0FfTkFNRV9ERUZfU1RNVCAob2UtPm9wKTsKLQkgIGlmIChpc19naW1wbGVfYXNzaWduIChk ZWZfc3RtdCkKLQkgICAgICAmJiBnaW1wbGVfYXNzaWduX3Joc19jb2RlIChkZWZfc3RtdCkgPT0g TVVMVF9FWFBSKQotCSAgICBvcHNfbXVsdC5zYWZlX3B1c2ggKG9lKTsKKwkgIGlmIChpc19naW1w bGVfYXNzaWduIChkZWZfc3RtdCkpCisJICAgIHsKKwkgICAgICBpZiAoZ2ltcGxlX2Fzc2lnbl9y aHNfY29kZSAoZGVmX3N0bXQpID09IE1VTFRfRVhQUikKKwkJb3BzX211bHQuc2FmZV9wdXNoIChv ZSk7CisJICAgICAgLyogQSBuZWdhdGUgb24gdGhlIG11bHRpcGxpY2F0aW9uIGxlYWRzIHRvIEZO TUEuICAqLworCSAgICAgIGVsc2UgaWYgKGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKGRlZl9zdG10 KSA9PSBORUdBVEVfRVhQUgorCQkgICAgICAgJiYgVFJFRV9DT0RFIChnaW1wbGVfYXNzaWduX3Jo czEgKGRlZl9zdG10KSkgPT0gU1NBX05BTUUpCisJCXsKKwkJICBnaW1wbGUgKm5lZ19kZWZfc3Rt dAorCQkgICAgPSBTU0FfTkFNRV9ERUZfU1RNVCAoZ2ltcGxlX2Fzc2lnbl9yaHMxIChkZWZfc3Rt dCkpOworCQkgIGlmIChpc19naW1wbGVfYXNzaWduIChuZWdfZGVmX3N0bXQpCisJCSAgICAgICYm IGdpbXBsZV9iYiAobmVnX2RlZl9zdG10KSA9PSBnaW1wbGVfYmIgKGRlZl9zdG10KQorCQkgICAg ICAmJiBnaW1wbGVfYXNzaWduX3Joc19jb2RlIChuZWdfZGVmX3N0bXQpID09IE1VTFRfRVhQUikK KwkJICAgIG9wc19tdWx0LnNhZmVfcHVzaCAob2UpOworCQkgIGVsc2UKKwkJICAgIG9wc19vdGhl cnMuc2FmZV9wdXNoIChvZSk7CisJCX0KKwkgICAgICBlbHNlCisJCW9wc19vdGhlcnMuc2FmZV9w dXNoIChvZSk7CisJICAgIH0KIAkgIGVsc2UKIAkgICAgb3BzX290aGVycy5zYWZlX3B1c2ggKG9l KTsKIAl9CkBAIC02ODY5LDcgKzY5NjIsOCBAQCByYW5rX29wc19mb3JfZm1hICh2ZWM8b3BlcmFu ZF9lbnRyeSAqPiAqb3BzKQogICAgICBQdXR0aW5nIG9wcyB0aGF0IG5vdCBkZWYgZnJvbSBtdWx0 IGluIGZyb250IGNhbiBnZW5lcmF0ZSBtb3JlIEZNQXMuCiAKICAgICAgMi4gSWYgYWxsIG9wcyBh cmUgZGVmaW5lZCB3aXRoIG11bHQsIHdlIGRvbid0IG5lZWQgdG8gcmVhcnJhbmdlIHRoZW0uICAq LwotICBpZiAob3BzX211bHQubGVuZ3RoICgpID49IDIgJiYgb3BzX211bHQubGVuZ3RoICgpICE9 IG9wc19sZW5ndGgpCisgIHVuc2lnbmVkIG11bHRfbnVtID0gb3BzX211bHQubGVuZ3RoICgpOwor ICBpZiAobXVsdF9udW0gPj0gMiAmJiBtdWx0X251bSAhPSBvcHNfbGVuZ3RoKQogICAgIHsKICAg ICAgIC8qIFB1dCBuby1tdWx0IG9wcyBhbmQgbXVsdCBvcHMgYWx0ZXJuYXRlbHkgYXQgdGhlIGVu ZCBvZiB0aGUKIAkgcXVldWUsIHdoaWNoIGlzIGNvbmR1Y2l2ZSB0byBnZW5lcmF0aW5nIG1vcmUg Rk1BIGFuZCByZWR1Y2luZyB0aGUKQEAgLTY4ODUsOSArNjk3OSw4IEBAIHJhbmtfb3BzX2Zvcl9m bWEgKHZlYzxvcGVyYW5kX2VudHJ5ICo+ICpvcHMpCiAJICBpZiAob3BpbmRleCA+IDApCiAJICAg IG9waW5kZXgtLTsKIAl9Ci0gICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gIHJldHVybiBmYWxz ZTsKKyAgcmV0dXJuIG11bHRfbnVtOwogfQogLyogUmVhc3NvY2lhdGUgZXhwcmVzc2lvbnMgaW4g YmFzaWMgYmxvY2sgQkIgYW5kIGl0cyBwb3N0LWRvbWluYXRvciBhcwogICAgY2hpbGRyZW4uCkBA IC03MDUyLDggKzcxNDUsOCBAQCByZWFzc29jaWF0ZV9iYiAoYmFzaWNfYmxvY2sgYmIpCiAJCXsK IAkJICBtYWNoaW5lX21vZGUgbW9kZSA9IFRZUEVfTU9ERSAoVFJFRV9UWVBFIChsaHMpKTsKIAkJ ICBpbnQgb3BzX251bSA9IG9wcy5sZW5ndGggKCk7Ci0JCSAgaW50IHdpZHRoOwotCQkgIGJvb2wg aGFzX2ZtYSA9IGZhbHNlOworCQkgIGludCB3aWR0aCA9IDA7CisJCSAgaW50IG11bHRfbnVtID0g MDsKIAogCQkgIC8qIEZvciBiaW5hcnkgYml0IG9wZXJhdGlvbnMsIGlmIHRoZXJlIGFyZSBhdCBs ZWFzdCAzCiAJCSAgICAgb3BlcmFuZHMgYW5kIHRoZSBsYXN0IG9wZXJhbmQgaW4gT1BTIGlzIGEg Y29uc3RhbnQsCkBAIC03MDc2LDE2ICs3MTY5LDE3IEBAIHJlYXNzb2NpYXRlX2JiIChiYXNpY19i bG9jayBiYikKIAkJCQkJCSAgICAgIG9wdF90eXBlKQogCQkgICAgICAmJiAocmhzX2NvZGUgPT0g UExVU19FWFBSIHx8IHJoc19jb2RlID09IE1JTlVTX0VYUFIpKQogCQkgICAgewotCQkgICAgICBo YXNfZm1hID0gcmFua19vcHNfZm9yX2ZtYSAoJm9wcyk7CisJCSAgICAgIG11bHRfbnVtID0gcmFu a19vcHNfZm9yX2ZtYSAoJm9wcyk7CiAJCSAgICB9CiAKIAkJICAvKiBPbmx5IHJld3JpdGUgdGhl IGV4cHJlc3Npb24gdHJlZSB0byBwYXJhbGxlbCBpbiB0aGUKIAkJICAgICBsYXN0IHJlYXNzb2Mg cGFzcyB0byBhdm9pZCB1c2VsZXNzIHdvcmsgYmFjay1hbmQtZm9ydGgKIAkJICAgICB3aXRoIGlu aXRpYWwgbGluZWFyaXphdGlvbi4gICovCisJCSAgYm9vbCBoYXNfZm1hID0gbXVsdF9udW0gPj0g MiAmJiBtdWx0X251bSAhPSBvcHNfbnVtOwogCQkgIGlmICghcmVhc3NvY19pbnNlcnRfcG93aV9w CiAJCSAgICAgICYmIG9wcy5sZW5ndGggKCkgPiAzCi0JCSAgICAgICYmICh3aWR0aAotCQkJICA9 IGdldF9yZWFzc29jaWF0aW9uX3dpZHRoICgmb3BzLCBsaHMsIHJoc19jb2RlLCBtb2RlKSkKKwkJ ICAgICAgJiYgKHdpZHRoID0gZ2V0X3JlYXNzb2NpYXRpb25fd2lkdGggKCZvcHMsIG11bHRfbnVt LCBsaHMsCisJCQkJCQkJICAgcmhzX2NvZGUsIG1vZGUpKQogCQkJICAgPiAxKQogCQkgICAgewog CQkgICAgICBpZiAoZHVtcF9maWxlICYmIChkdW1wX2ZsYWdzICYgVERGX0RFVEFJTFMpKQpAQCAt NzEwNiwxMCArNzIwMCwxMiBAQCByZWFzc29jaWF0ZV9iYiAoYmFzaWNfYmxvY2sgYmIpCiAJCSAg ICAgIGlmIChsZW4gPj0gMwogCQkJICAmJiAoIWhhc19mbWEKIAkJCSAgICAgIC8qIHdpZHRoID4g MSBtZWFucyByYW5raW5nIG9wcyByZXN1bHRzIGluIGJldHRlcgotCQkJCSBwYXJhbGxlbGlzbS4g ICovCi0JCQkgICAgICB8fCBnZXRfcmVhc3NvY2lhdGlvbl93aWR0aCAoJm9wcywgbGhzLCByaHNf Y29kZSwKLQkJCQkJCQkgIG1vZGUpCi0JCQkJICAgPiAxKSkKKwkJCQkgcGFyYWxsZWxpc20uICBD aGVjayBjdXJyZW50IHZhbHVlIHRvIGF2b2lkCisJCQkJIGNhbGxpbmcgZ2V0X3JlYXNzb2NpYXRp b25fd2lkdGggYWdhaW4uICAqLworCQkJICAgICAgfHwgKHdpZHRoICE9IDEKKwkJCQkgICYmIGdl dF9yZWFzc29jaWF0aW9uX3dpZHRoICgKKwkJCQkgICAgICAgJm9wcywgbXVsdF9udW0sIGxocywg cmhzX2NvZGUsIG1vZGUpCisJCQkJICAgICAgID4gMSkpKQogCQkJc3dhcF9vcHNfZm9yX2JpbmFy eV9zdG10IChvcHMsIGxlbiAtIDMpOwogCiAJCSAgICAgIG5ld19saHMgPSByZXdyaXRlX2V4cHJf dHJlZSAoc3RtdCwgcmhzX2NvZGUsIDAsIG9wcywKLS0gCjIuMjUuMQoK --_002_SN6PR01MB42405D4A9923012D17B40D5CE88DASN6PR01MB4240prod_--