From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on2077.outbound.protection.outlook.com [40.107.8.77]) by sourceware.org (Postfix) with ESMTPS id A193F3858D35 for ; Mon, 27 Feb 2023 12:14:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A193F3858D35 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uiT7UIwqpXvdxRHu9SpcJ5gMiuXZN9qcZXhWY05newY=; b=AQ6pEhtpPkXnVh9jBVg2Zl7pfZ+ZER/a3i+B1Lh5p16HjAdeBHP63+ev/eH5E/Mi2AhywzuTv/D7GFqpCzzaPdvwFqL7BEozyrwT5rRcBk2kaHrH7Inx/7wKAbncwcwOygqPlbDiCTw+9p1hzniUUWMJpjI7A0WWA43OhA/A1Co= Received: from DU2PR04CA0249.eurprd04.prod.outlook.com (2603:10a6:10:28e::14) by AS8PR08MB10150.eurprd08.prod.outlook.com (2603:10a6:20b:62a::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.25; Mon, 27 Feb 2023 12:14:19 +0000 Received: from DBAEUR03FT006.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:28e:cafe::b7) by DU2PR04CA0249.outlook.office365.com (2603:10a6:10:28e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.29 via Frontend Transport; Mon, 27 Feb 2023 12:14:19 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT006.mail.protection.outlook.com (100.127.142.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.14 via Frontend Transport; Mon, 27 Feb 2023 12:14:19 +0000 Received: ("Tessian outbound 3ad958cd7492:v132"); Mon, 27 Feb 2023 12:14:19 +0000 X-CR-MTA-TID: 64aa7808 Received: from 5300eee0da73.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 432715DB-6DC6-4AD4-AD27-852BBD553712.1; Mon, 27 Feb 2023 12:14:11 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 5300eee0da73.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 27 Feb 2023 12:14:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BBetkZruiwusaCk7VFEAtl+Yh3kvMxz5O545PKpftPK/bzdVFz888WAmwejQp0MzKtc1dCZBoZouA4mb6Nd7f/98vu/RrELH6ealy7NMgtWAulyzOu45Ler5tF466Iin6+Cwhou0f6eJMkHA24XQ9dtP8q412h3D4hOreUv5eQj+U2uaDDrqxqs/o1Yk3yEP14wSmiqeLOVWJP48UQ1KIVvZ5pV+CaECfMv/42uttZlm6+f6K+0E1W34ZLRDfCnxp6+NyMHpy65Ju9JSw56uMQZJ6+GB+EAKy+ZAcCz2JTBFP5efaM1RSzRpBGg1X2fGwNAyeeYhp7TDuk5aEyhDpw== 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=uiT7UIwqpXvdxRHu9SpcJ5gMiuXZN9qcZXhWY05newY=; b=Vx4OjkkYhjjo2V0CbfwHYBVT32Y0Kl3VEc9A5Ab1pCX+J35+sSEh/xiqUG/ZOsbCByB0WdFzJIkW0noPMpGOwAXVrr0HxKeu1189hJmXuV/k09djULurow7F8T8UDxTS0BaKgdzTkIcrfjd58Gl/XubBgwqeoDIEMn7JipNW5y+awkaDy5eJAYbbPNR/3hK8oXnFto/QrzkOAst9KRLFJS5BJpIHPUlMQi/g6z8D+gWwc/UCiq/wr8SRerGKLh57sxK06Hvlm1K9Eboo3bfCyk/D+EbSQlmpuJHlLxfUZRCzadHNveABk4jc7BCv3BqLiNWqasNLcCYQcJm5UzcBfg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uiT7UIwqpXvdxRHu9SpcJ5gMiuXZN9qcZXhWY05newY=; b=AQ6pEhtpPkXnVh9jBVg2Zl7pfZ+ZER/a3i+B1Lh5p16HjAdeBHP63+ev/eH5E/Mi2AhywzuTv/D7GFqpCzzaPdvwFqL7BEozyrwT5rRcBk2kaHrH7Inx/7wKAbncwcwOygqPlbDiCTw+9p1hzniUUWMJpjI7A0WWA43OhA/A1Co= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by DU0PR08MB8688.eurprd08.prod.outlook.com (2603:10a6:10:400::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.25; Mon, 27 Feb 2023 12:14:05 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::210c:d369:23f7:84fe]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::210c:d369:23f7:84fe%6]) with mapi id 15.20.6134.027; Mon, 27 Feb 2023 12:14:05 +0000 From: Tamar Christina To: Richard Sandiford CC: Tamar Christina via Gcc-patches , nd , "rguenther@suse.de" , "jlaw@ventanamicro.com" Subject: RE: [PATCH 1/2]middle-end: Fix wrong overmatching of div-bitmask by using new optabs [PR108583] Thread-Topic: [PATCH 1/2]middle-end: Fix wrong overmatching of div-bitmask by using new optabs [PR108583] Thread-Index: AQHZPKpK/SYCPI4EDky3xQ0ADEnbFq7IMBSsgAABFlCAAA4mH4AafFawgAAUWIyAAABN8A== Date: Mon, 27 Feb 2023 12:14:05 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 0C461435537A21469E7F99F488979FB9.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|DU0PR08MB8688:EE_|DBAEUR03FT006:EE_|AS8PR08MB10150:EE_ X-MS-Office365-Filtering-Correlation-Id: b9180489-2375-4e33-cff2-08db18bc270e x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: +V6E1eCu/5HsroEWIskk2+wX7sJLCj/yDILxmAwcZWP11ciEzva7tujyu6qouP9bVXCYlErcD0+sS1uoR/9AAAPLNJpKemIxc6QUxRTGhTwejt8Kr0hRyOcu5R9CQ1/9J8L/pUk0s3xVd25rf4TjEmFxjq/Rh05hLxXkYOsHtDA8kk/nPwRMaq7YIE0gCMSLaleC5j81TIsd9b1bR+VxV1c5T3/6MQxz7ZuxGC60J3JPAS8m/d1w/i+qJabmpWKBVatEgPlOdRQ+QEU4waJqdPUyo9SZSvfbYlV4xux4TL0Sj2bZ761dClh8C/x3eoFSQN9PMZL8G8c5UJCLxupWozNcv0pcnOPnV/9KsHunLgs4kclPKdyrElxyGbCD7ahZQ97NyUWILUG0dFmOI69A0vuQzuYYRvJQUG4+zuCtwgodAz9KNYEsWuFpC/J33im9+yjgrt6OW5ApZKPeqbZrN0oNNOk37qX9egEX3whL0BE5SqDpYHgxnuU+mhULUJj8OLw3qnLXiDtjrw7F1lsCyfR//4g6kn9SS1Q6mh3ZyzrklxvTnfxkwweuYWn/jhZCQxuWMInTmjB/ougEk4mif7dxjSVVaSLQvMFFolWr45IUqztU8kWhseylbt3VOwYtOpGJ3rBNIjM8Yzek4LzEoY0RxRzckR7pHC0dZSli5c/+HNIyYw4zwoU+9ewweQTd/iP3KJipXySW/SQvHKC2tmaiJSnU2K9iMCuinpKjB5E= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB5325.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(346002)(39860400002)(376002)(396003)(136003)(451199018)(2906002)(4326008)(41300700001)(8936002)(66556008)(66946007)(6862004)(66476007)(84970400001)(8676002)(64756008)(66446008)(76116006)(55016003)(38070700005)(71200400001)(38100700002)(6636002)(316002)(86362001)(54906003)(478600001)(52536014)(6506007)(26005)(5660300002)(30864003)(7696005)(186003)(9686003)(53546011)(83380400001)(33656002)(122000001)(579004)(559001);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8688 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT006.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: a6fd9c8c-2d47-43d0-b6de-08db18bc1ebc X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: M/gjgsm0j4OD1JJJ1yVTcalNJH7caJ9VghF7urt3GAG6GdhWhTxd3YT/CzxpXI47Na7Td3je+hMdsGcnXY9F5T0Svn8ixAMInTV0yChXwVzvSHt3m1eW241erd7gUGLAlMOD9S1x72wTKjQqenla2lYNSqj/CE2p7W1+mr0Od+qhHstz5nN3IPZeR1jadNIJoIn8FdO1GK67tDbmWTJKemtVuHIue+84DD7iXvuVx6VkC4uhtyGGco8zL3F+xZz307zMehPKtnVMAk2NFKxBVhfuNA+2Y8y53SoH5yrBX8t5BZmq0SUmjqVenK2ACNxXwDC6oF71HoY3ZFj750n+RnNa3bXyhqjD2DLDOXS+z3Ip+Kx2SY2QRfIbt2dWbyMEet8q3axq1nZeuk+Fq+nG6vsf3f173IPxSPhUzxZd5QxHIHiYJFcRwEZPZNIR2DK71Trlt+gie8Bnx2fqv/hD7C/qSSPI+8RkwK8PUu5D0Bg/TSK3F7Hq6+T6GR7zxZARlSO1yin56RQ+pURSaJ2Na2uB/s/YwxJQAkHz44vnlR5TAhvJ4HKQhCZWMgi0QbMLLe9NA6t/SeWfNYyjsqvaG8CPKpR2+WXKPHJLFE7rqQyE+NVx6LA7ciBbmesTRrk0dGqiLQ2Zvogj7Vlkbca7rcqzXW+chkLilfosGiywZujNRkBAuzgH8WJh2rq7CirMwdI4E6DpGa94w7dvRs10pDL1I98tY6EkI3zXVFtGTsM= X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230025)(4636009)(376002)(39860400002)(346002)(396003)(136003)(451199018)(36840700001)(46966006)(40470700004)(5660300002)(30864003)(40460700003)(356005)(478600001)(81166007)(107886003)(41300700001)(82740400003)(7696005)(8936002)(6862004)(4326008)(33656002)(36860700001)(8676002)(52536014)(54906003)(53546011)(6636002)(9686003)(70206006)(6506007)(316002)(86362001)(70586007)(26005)(55016003)(186003)(40480700001)(83380400001)(84970400001)(82310400005)(2906002)(336012)(47076005);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Feb 2023 12:14:19.1257 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b9180489-2375-4e33-cff2-08db18bc270e X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DBAEUR03FT006.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB10150 X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_LOTSOFHASH,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY 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: PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSaWNoYXJkIFNhbmRpZm9yZCA8 cmljaGFyZC5zYW5kaWZvcmRAYXJtLmNvbT4NCj4gU2VudDogTW9uZGF5LCBGZWJydWFyeSAyNywg MjAyMyAxMjoxMiBQTQ0KPiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJt LmNvbT4NCj4gQ2M6IFRhbWFyIENocmlzdGluYSB2aWEgR2NjLXBhdGNoZXMgPGdjYy1wYXRjaGVz QGdjYy5nbnUub3JnPjsgbmQNCj4gPG5kQGFybS5jb20+OyByZ3VlbnRoZXJAc3VzZS5kZTsgamxh d0B2ZW50YW5hbWljcm8uY29tDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS8yXW1pZGRsZS1lbmQ6 IEZpeCB3cm9uZyBvdmVybWF0Y2hpbmcgb2YgZGl2LWJpdG1hc2sNCj4gYnkgdXNpbmcgbmV3IG9w dGFicyBbUFIxMDg1ODNdDQo+IA0KPiBUYW1hciBDaHJpc3RpbmEgPFRhbWFyLkNocmlzdGluYUBh cm0uY29tPiB3cml0ZXM6DQo+ID4gSGksDQo+ID4NCj4gPj4gPiBJIGF2b2lkZWQgb3BlbiBjb2Rp bmcgaXQgd2l0aCBhZGQgYW5kIHNoaWZ0IGJlY2F1c2UgaXQgY3JlYXRlcyBhIDQNCj4gPj4gPiBp bnN0cnVjdGlvbnMgKGFuZCBzaGlmdHMgd2hpY2ggYXJlIHR5cGljYWxseSBzbG93KSBkZXBlbmRl bmN5IGNoYWluDQo+ID4+ID4gaW5zdGVhZCBvZiBhIGxvYWQgYW5kIG11bHRpcGx5LiAgVGhpcyBj aGFuZ2UsIHVubGVzcyB0aGUgdGFyZ2V0IGlzDQo+ID4+ID4ga25vd24gdG8gb3B0aW1pemUgaXQg ZnVydGhlciBpcyB1bmxpa2VseSB0byBiZSBiZW5lZmljaWFsLiAgQW5kIGJ5DQo+ID4+ID4gdGhl IHRpbWUgd2UgZ2V0IHRvIGNvc3RpbmcgdGhlIG9ubHkgYWx0ZXJuYXRpdmUgaXMgdG8gdW5kbyB0 aGUNCj4gPj4gPiBleGlzdGluZyBwYXR0ZXJuIGFuZA0KPiA+PiBzbyB5b3UgbG9zZSB0aGUgZ2Vu ZXJhbCBzaGlmdCBvcHRpbWl6YXRpb24uDQo+ID4+ID4NCj4gPj4gPiBTbyBpdCBzZWVtZWQgdW53 aXNlIHRvIG9wZW4gY29kZSBhcyBzaGlmdHMsIGdpdmVuIHRoZSBjb2RlZ2VuIG91dA0KPiA+PiA+ IG9mIHRoZSB2ZWN0b3JpemVyIHdvdWxkIGJlIGRlZ2VuZXJhdGUgZm9yIG1vc3QgdGFyZ2V0cyBv ciBvbmUgbmVlZHMNCj4gPj4gPiB0aGUgbW9yZSBjb21wbGljYXRlZCByb3V0ZSBvZiBjb3N0aW5n IGR1cmluZyBwYXR0ZXJuIG1hdGNoaW5nIGFscmVhZHkuDQo+ID4+DQo+ID4+IEhtbSwgT0suICBU aGF0IHNlZW1zIGxpa2UgYSBjb3N0LW1vZGVsIHRoaW5nIHRob3VnaCwgcmF0aGVyIHRoYW4NCj4g Pj4gc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIGV4cG9zZWQgdGhyb3VnaCBvcHRhYnMuICBBbmQg SSBpbWFnaW5lIHRoZQ0KPiA+PiBvcGVuLWNvZGVkIHZlcnNpb24gd291bGQgc3RpbGwgYmUgYmV0 dGVyIHRoYW4gbm90aGluZyBvbiB0YXJnZXRzIHdpdGhvdXQNCj4gaGlnaHBhcnQgbXVsdGlwbHku DQo+ID4+DQo+ID4+IFNvIGhvdyBhYm91dCByZXBsYWNpbmcgdGhlIGhvb2sgd2l0aCBvbmUgdGhh dCBzaW1wbHkgYXNrcyB3aGV0aGVyDQo+ID4+IGRpdmlzaW9uIHRocm91Z2ggaGlnaHBhcnQgbXVs dGlwbGljYXRpb24gaXMgcHJlZmVycmVkIG92ZXIgdGhlIGFkZC9zaGlmdA0KPiBzZXF1ZW5jZT8N Cj4gPj4gKFVuZm9ydHVuYXRlbHkgaXQncyBub3QgZ29pbmcgdG8gYmUgcG9zc2libGUgdG8gd29y ayB0aGF0IG91dCBmcm9tDQo+ID4+IGV4aXN0aW5nDQo+ID4+IGluZm9ybWF0aW9uLikNCj4gPg0K PiA+IFNvIHRoaXMgZG9lc24ndCB3b3JrIGZvciBTVkUuICBGb3IgU1ZFIHRoZSBtdWx0aXBsaWNh dGlvbiB3aWRlbmluZw0KPiA+IHBhc3MgaW50cm9kdWNlcyBGTUFzIGF0IGdpbXBsZSBsZXZlbC4g IFNvIGluIHRoZSBjYXNlcyB3aGVyZSB0aGUNCj4gPiBvcGVyYXRpb24gaXMgZmVkIGZyb20gYSB3 aWRlbmluZyBtdWx0aXBsaWNhdGlvbiB3ZSBlbmQgdXAgZ2VuZXJhdGluZyBGTUEuDQo+IElmIHRo YXQgd2FzIGl0IEkgY291bGQgaGF2ZSBtYXRjaGVkIEZNQS4NCj4gPg0KPiA+IEJ1dCBpdCBhbHNv IHB1c2hlcyB0aGUgbXVsdGlwbGljYXRpb24gaW4gdGhlIHNlY29uZCBvcGVyYW5kIGJlY2F1c2Ug aXQNCj4gPiBubyBsb25nZXIgaGFzIGEgbXVsIHRvIHNoYXJlIHRoZSByZXN1bHRzIHdpdGguDQo+ ID4NCj4gPiBJbiBhbnkgY2FzZSwgdGhlIGdpbXBsZSBjb2RlIGlzIHRyYW5zZm9ybWVkIGludG8N Cj4gPg0KPiA+IHZlY3RfXzMuOF8xMjIgPSAuTUFTS19MT0FEIChfMjksIDhCLCBsb29wX21hc2tf MTIxKTsNCj4gPiB2ZWN0X3BhdHRfNTcuOV8xMjMgPSAodmVjdG9yKFs4LDhdKSB1bnNpZ25lZCBz aG9ydCkgdmVjdF9fMy44XzEyMjsNCj4gPiB2ZWN0X3BhdHRfNjQuMTFfMTI3ID0gLkZNQSAodmVj dF9wYXR0XzU3LjlfMTIzLCB2ZWN0X2NzdF9fMTI0LCB7IDI1NywNCj4gPiAuLi4gfSk7DQo+ID4g dmVjdF9wYXR0XzY1LjEyXzEyOCA9IHZlY3RfcGF0dF82NC4xMV8xMjcgPj4gODsNCj4gPiB2ZWN0 X3BhdHRfNjYuMTNfMTI5ID0gLkZNQSAodmVjdF9wYXR0XzU3LjlfMTIzLCB2ZWN0X2NzdF9fMTI0 LA0KPiA+IHZlY3RfcGF0dF82NS4xMl8xMjgpOw0KPiA+IHZlY3RfcGF0dF82Mi4xNF8xMzAgPSB2 ZWN0X3BhdHRfNjYuMTNfMTI5ID4+IDg7DQo+ID4gdmVjdF9wYXR0XzY4LjE1XzEzMSA9ICh2ZWN0 b3IoWzgsOF0pIHVuc2lnbmVkIGNoYXJELjIxKQ0KPiA+IHZlY3RfcGF0dF82Mi4xNF8xMzA7DQo+ ID4NCj4gPiBUaGlzIHRyYW5zZm9ybWF0aW9uIGlzIG11Y2ggd29yc2UgdGhhbiB0aGUgb3JpZ2lu YWwgY29kZSwgaXQgZXh0ZW5kZWQNCj4gPiB0aGUgZGVwZW5kZW5jeSBjaGFpbiB3aXRoIGFub3Ro ZXIgZXhwZW5zaXZlIGluc3RydWN0aW9uLiBJIGNhbiB0cnkgdG8NCj4gPiBjb3JyZWN0IHRoaXMg aW4gUlRMIGJ5IG1hdGNoaW5nIEZNQSBhbmQgc2hpZnQgYW5kIHNwbGl0dGluZyBpbnRvIE1VTCAr DQo+IEFEREhOQiBhbmQgaG9wZSBDU0UgdGFrZXMgY2FyZSBvZiB0aGUgZXh0cmEgbXVsLg0KPiA+ DQo+ID4gQnV0IHRoaXMgc2VlbXMgbGlrZSBhIGhhY2ssIGFuZCBpdCdzIGJhc2ljYWxseSB1bmRv aW5nIHRoZSBlYXJsaWVyDQo+ID4gdHJhbnNmb3JtYXRpb24uICBJdCBzZWVtcyB0byBtZSB0aGF0 IHRoZSBvcGVuIGNvZGluZyBpcyBhIGJhZCBpZGVhLg0KPiANCj4gQ291bGQgeW91IHBvc3QgdGhl IHBhdGNoIHRoYXQgZ2l2ZXMgdGhpcyByZXN1bHQ/ICBJJ2xsIGhhdmUgYSBwb2tlIGFyb3VuZC4N Cg0KU3VyZSwgSSdsbCBwb3N0IHRoZSBuZXcgc2VyaWVzLCBpdCBuZWVkcyBhbGwgb2YgdGhlbS4N Cg0KVGFtYXIuDQoNCj4gDQo+IFRoYW5rcywNCj4gUmljaGFyZA0KPiANCj4gPiBEbyB5b3Ugc3Rp bGwgd2FudCBpdCBSaWNoYXJkPw0KPiA+DQo+ID4gVGhhbmtzLA0KPiA+IFRhbWFyDQo+ID4+DQo+ ID4+IFRoYW5rcywNCj4gPj4gUmljaGFyZA0KPiA+Pg0KPiA+PiA+DQo+ID4+ID4+DQo+ID4+ID4+ IFNvbWUgY29tbWVudHMgaW4gYWRkaXRpb24gdG8gUmljaGFyZCdzOg0KPiA+PiA+Pg0KPiA+PiA+ PiBUYW1hciBDaHJpc3RpbmEgdmlhIEdjYy1wYXRjaGVzIDxnY2MtcGF0Y2hlc0BnY2MuZ251Lm9y Zz4gd3JpdGVzOg0KPiA+PiA+PiA+IEhpIEFsbCwNCj4gPj4gPj4gPg0KPiA+PiA+PiA+IEFzIGRp c2N1c3NlZCBpbiB0aGUgdGlja2V0LCB0aGlzIHJlcGxhY2VzIHRoZSBhcHByb2FjaCBmb3INCj4g Pj4gPj4gPiBvcHRpbWl6aW5nIHRoZSBkaXYgYnkgYml0bWFzayBvcGVyYXRpb24gZnJvbSBhIGhv b2sgaW50byBvcHRhYnMNCj4gPj4gPj4gPiBpbXBsZW1lbnRlZCB0aHJvdWdoIGFkZF9oaWdocGFy dC4NCj4gPj4gPj4gPg0KPiA+PiA+PiA+IEluIG9yZGVyIHRvIGJlIGFibGUgdG8gdXNlIHRoaXMg d2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIHRoZQ0KPiA+PiA+PiA+IGN1cnJlbnQgcHJlY2lzaW9u IGhhcyBlbm91Z2ggYml0cyB0byBkbyB0aGUgb3BlcmF0aW9uIHdpdGhvdXQNCj4gPj4gPj4gPiBh bnkgb2YgdGhlIGFkZGl0aW9ucw0KPiA+PiA+PiBvdmVyZmxvd2luZy4NCj4gPj4gPj4gPg0KPiA+ PiA+PiA+IFdlIHVzZSByYW5nZSBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgdGhpcyBhbmQgb25s eSBkbyB0aGUNCj4gPj4gPj4gPiBvcGVyYXRpb24gaWYgd2UncmUgc3VyZSBhbSBvdmVyZmxvdyB3 b24ndCBvY2N1ci4NCj4gPj4gPj4gPg0KPiA+PiA+PiA+IEJvb3RzdHJhcHBlZCBSZWd0ZXN0ZWQg b24gYWFyY2g2NC1ub25lLWxpbnV4LWdudSBhbmQgPG9uLWdvaW5nPg0KPiA+PiA+PiBpc3N1ZXMu DQo+ID4+ID4+ID4NCj4gPj4gPj4gPiBPayBmb3IgbWFzdGVyPw0KPiA+PiA+PiA+DQo+ID4+ID4+ ID4gVGhhbmtzLA0KPiA+PiA+PiA+IFRhbWFyDQo+ID4+ID4+ID4NCj4gPj4gPj4gPiBnY2MvQ2hh bmdlTG9nOg0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gCVBSIHRhcmdldC8xMDg1ODMNCj4gPj4gPj4g PiAJKiBkb2MvdG0udGV4aSAoVEFSR0VUX1ZFQ1RPUklaRV9DQU5fU1BFQ0lBTF9ESVZfQllfQ09O U1QpOg0KPiA+PiA+PiBSZW1vdmUuDQo+ID4+ID4+ID4gCSogZG9jL3RtLnRleGkuaW46IExpa2V3 aXNlLg0KPiA+PiA+PiA+IAkqIGV4cGxvdy5jYyAocm91bmRfcHVzaCwgYWxpZ25fZHluYW1pY19h ZGRyZXNzKTogUmV2ZXJ0DQo+ID4+ID4+ID4gcHJldmlvdXMNCj4gPj4gPj4gcGF0Y2guDQo+ID4+ ID4+ID4gCSogZXhwbWVkLmNjIChleHBhbmRfZGl2bW9kKTogTGlrZXdpc2UuDQo+ID4+ID4+ID4g CSogZXhwbWVkLmggKGV4cGFuZF9kaXZtb2QpOiBMaWtld2lzZS4NCj4gPj4gPj4gPiAJKiBleHBy LmNjIChmb3JjZV9vcGVyYW5kLCBleHBhbmRfZXhwcl9kaXZtb2QpOiBMaWtld2lzZS4NCj4gPj4g Pj4gPiAJKiBvcHRhYnMuY2MgKGV4cGFuZF9kb3VibGV3b3JkX21vZCwNCj4gPj4gPj4gZXhwYW5k X2RvdWJsZXdvcmRfZGl2bW9kKTogTGlrZXdpc2UuDQo+ID4+ID4+ID4gCSogaW50ZXJuYWwtZm4u ZGVmIChBRERIKTogTmV3Lg0KPiA+PiA+PiA+IAkqIG9wdGFicy5kZWYgKHNhZGRfaGlnaHBhcnRf b3B0YWIsIHVhZGRfaGlnaHBhcnRfb3B0YWIpOiBOZXcuDQo+ID4+ID4+ID4gCSogZG9jL21kLnRl eGk6IERvY3VtZW50IHRoZW0uDQo+ID4+ID4+ID4gCSogZG9jL3J0bC50ZXhpOiBMaWtld2lzZS4N Cj4gPj4gPj4gPiAJKiB0YXJnZXQuZGVmIChjYW5fc3BlY2lhbF9kaXZfYnlfY29uc3QpOiBSZW1v dmUuDQo+ID4+ID4+ID4gCSogdGFyZ2V0Lmg6IFJlbW92ZSB0cmVlLWNvcmUuaCBpbmNsdWRlDQo+ ID4+ID4+ID4gCSogdGFyZ2hvb2tzLmNjIChkZWZhdWx0X2Nhbl9zcGVjaWFsX2Rpdl9ieV9jb25z dCk6IFJlbW92ZS4NCj4gPj4gPj4gPiAJKiB0YXJnaG9va3MuaCAoZGVmYXVsdF9jYW5fc3BlY2lh bF9kaXZfYnlfY29uc3QpOiBSZW1vdmUuDQo+ID4+ID4+ID4gCSogdHJlZS12ZWN0LWdlbmVyaWMu Y2MgKGV4cGFuZF92ZWN0b3Jfb3BlcmF0aW9uKTogUmVtb3ZlIGhvb2suDQo+ID4+ID4+ID4gCSog dHJlZS12ZWN0LXBhdHRlcm5zLmNjICh2ZWN0X3JlY29nX2Rpdm1vZF9wYXR0ZXJuKTogUmVtb3Zl DQo+ID4+ID4+ID4gaG9vaw0KPiA+PiA+PiBhbmQNCj4gPj4gPj4gPiAJaW1wbGVtZW50IG5ldyBv YnRhYiByZWNvZ25pdGlvbiBiYXNlZCBvbiByYW5nZS4NCj4gPj4gPj4gPiAJKiB0cmVlLXZlY3Qt c3RtdHMuY2MgKHZlY3Rvcml6YWJsZV9vcGVyYXRpb24pOiBSZW1vdmUgaG9vay4NCj4gPj4gPj4g Pg0KPiA+PiA+PiA+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPiA+PiA+PiA+DQo+ID4+ID4+ ID4gCVBSIHRhcmdldC8xMDg1ODMNCj4gPj4gPj4gPiAJKiBnY2MuZGcvdmVjdC92ZWN0LWRpdi1i aXRtYXNrLTQuYzogTmV3IHRlc3QuDQo+ID4+ID4+ID4gCSogZ2NjLmRnL3ZlY3QvdmVjdC1kaXYt Yml0bWFzay01LmM6IE5ldyB0ZXN0Lg0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gLS0tIGlubGluZSBj b3B5IG9mIHBhdGNoIC0tDQo+ID4+ID4+ID4gZGlmZiAtLWdpdCBhL2djYy9kb2MvbWQudGV4aSBi L2djYy9kb2MvbWQudGV4aSBpbmRleA0KPiA+PiA+PiA+DQo+ID4+ID4+DQo+ID4+DQo+IDcyMzVk MzRjNGIzMDk0OWZlYmZhMTBkNWE2MjZhYzkzNTgyODFjZmEuLjAyMDA0YzRiMGY0ZDg4ZGZmZTk4 MGYNCj4gPj4gNzQwODANCj4gPj4gPj4gMw0KPiA+PiA+PiA+IDg1OTVlMjFhZjM1ZCAxMDA2NDQN Cj4gPj4gPj4gPiAtLS0gYS9nY2MvZG9jL21kLnRleGkNCj4gPj4gPj4gPiArKysgYi9nY2MvZG9j L21kLnRleGkNCj4gPj4gPj4gPiBAQCAtNTY2OCw2ICs1NjY4LDE4IEBAIHJlcHJlc2VudGVkIGlu IFJUTCB1c2luZyBhDQo+ID4+ID4+IEBjb2Rle3NtdWxfaGlnaHBhcnR9IFJUWCBleHByZXNzaW9u Lg0KPiA+PiA+PiA+ICBTaW1pbGFyLCBidXQgdGhlIG11bHRpcGxpY2F0aW9uIGlzIHVuc2lnbmVk LiAgVGhpcyBtYXkgYmUNCj4gPj4gPj4gPiByZXByZXNlbnRlZCBpbiBSVEwgdXNpbmcgYW4gQGNv ZGV7dW11bF9oaWdocGFydH0gUlRYIGV4cHJlc3Npb24uDQo+ID4+ID4+ID4NCj4gPj4gPj4gPiAr QGNpbmRleCBAY29kZXtzYWRkQHZhcnttfTNfaGlnaHBhcnR9IGluc3RydWN0aW9uIHBhdHRlcm4g QGl0ZW0NCj4gPj4gPj4gPiArQHNhbXB7c211bEB2YXJ7bX0zX2hpZ2hwYXJ0fQ0KPiA+PiA+Pg0K PiA+PiA+PiBzYWRkDQo+ID4+ID4+DQo+ID4+ID4+ID4gK1BlcmZvcm0gYSBzaWduZWQgYWRkaXRp b24gb2Ygb3BlcmFuZHMgMSBhbmQgMiwgd2hpY2ggaGF2ZSBtb2RlDQo+ID4+ID4+ID4gK0B2YXJ7 bX0sIGFuZCBzdG9yZSB0aGUgbW9zdCBzaWduaWZpY2FudCBoYWxmIG9mIHRoZSBwcm9kdWN0IGlu DQo+ID4+ID4+ID4gK29wZXJhbmQNCj4gPj4gMC4NCj4gPj4gPj4gPiArVGhlIGxlYXN0IHNpZ25p ZmljYW50IGhhbGYgb2YgdGhlIHByb2R1Y3QgaXMgZGlzY2FyZGVkLiAgVGhpcw0KPiA+PiA+PiA+ ICttYXkgYmUgcmVwcmVzZW50ZWQgaW4gUlRMIHVzaW5nIGEgQGNvZGV7c2FkZF9oaWdocGFydH0g UlRYDQo+IGV4cHJlc3Npb24uDQo+ID4+ID4+ID4gKw0KPiA+PiA+PiA+ICtAY2luZGV4IEBjb2Rl e3VhZGRAdmFye219M19oaWdocGFydH0gaW5zdHJ1Y3Rpb24gcGF0dGVybiBAaXRlbQ0KPiA+PiA+ PiA+ICtAc2FtcHt1YWRkQHZhcnttfTNfaGlnaHBhcnR9IFNpbWlsYXIsIGJ1dCB0aGUgYWRkaXRp b24gaXMNCj4gdW5zaWduZWQuDQo+ID4+ID4+ID4gK1RoaXMgbWF5IGJlIHJlcHJlc2VudGVkIGlu IFJUTCB1c2luZyBhbiBAY29kZXt1YWRkX2hpZ2hwYXJ0fQ0KPiA+PiA+PiA+ICtSVFggZXhwcmVz c2lvbi4NCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gIEBjaW5kZXggQGNvZGV7bWFkZEB2YXJ7bX1A dmFye259NH0gaW5zdHJ1Y3Rpb24gcGF0dGVybiAgQGl0ZW0NCj4gPj4gPj4gPiBAc2FtcHttYWRk QHZhcnttfUB2YXJ7bn00fSAgTXVsdGlwbHkgb3BlcmFuZHMgMSBhbmQgMiwgc2lnbi0NCj4gPj4g ZXh0ZW5kDQo+ID4+ID4+ID4gdGhlbSB0byBtb2RlIEB2YXJ7bn0sIGFkZCBkaWZmIC0tZ2l0IGEv Z2NjL2RvYy9ydGwudGV4aQ0KPiA+PiA+PiA+IGIvZ2NjL2RvYy9ydGwudGV4aSBpbmRleA0KPiA+ PiA+PiA+DQo+ID4+ID4+DQo+ID4+DQo+IGQxMzgwZTFlYjNiYTZiMjg1MzY4NmY0MWYyYmY5Mzdi ZmNiZWQxZmUuLjYzYTdlZjZlNTY2ZWVlYTRmMTRjMDANCj4gPj4gMzQzDQo+ID4+ID4+IGQxNw0K PiA+PiA+PiA+IDE5NDBlYzQyMjJmMyAxMDA2NDQNCj4gPj4gPj4gPiAtLS0gYS9nY2MvZG9jL3J0 bC50ZXhpDQo+ID4+ID4+ID4gKysrIGIvZ2NjL2RvYy9ydGwudGV4aQ0KPiA+PiA+PiA+IEBAIC0y NTM1LDYgKzI1MzUsMTcgQEAgb3V0IGluIG1hY2hpbmUgbW9kZSBAdmFye219Lg0KPiA+PiA+PiA+ IEBjb2Rle3NtdWxfaGlnaHBhcnR9IHJldHVybnMgdGhlIGhpZ2ggcGFydCAgb2YgYSBzaWduZWQN Cj4gPj4gPj4gPiBtdWx0aXBsaWNhdGlvbiwgQGNvZGV7dW11bF9oaWdocGFydH0gcmV0dXJucyB0 aGUgaGlnaCBwYXJ0ICBvZg0KPiA+PiA+PiA+IGFuIHVuc2lnbmVkDQo+ID4+ID4+IG11bHRpcGxp Y2F0aW9uLg0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gK0BmaW5kZXggc2FkZF9oaWdocGFydA0KPiA+ PiA+PiA+ICtAZmluZGV4IHVhZGRfaGlnaHBhcnQNCj4gPj4gPj4gPiArQGNpbmRleCBoaWdoLXBh cnQgYWRkaXRpb24NCj4gPj4gPj4gPiArQGNpbmRleCBhZGRpdGlvbiBoaWdoIHBhcnQNCj4gPj4g Pj4gPiArQGl0ZW0gKHNhZGRfaGlnaHBhcnQ6QHZhcnttfSBAdmFye3h9IEB2YXJ7eX0pIEBpdGVt eA0KPiA+PiA+PiA+ICsodWFkZF9oaWdocGFydDpAdmFye219IEB2YXJ7eH0gQHZhcnt5fSkgUmVw cmVzZW50cyB0aGUNCj4gPj4gPj4gPiAraGlnaC1wYXJ0IGFkZGl0aW9uIG9mIEB2YXJ7eH0gYW5k IEB2YXJ7eX0gY2FycmllZCBvdXQgaW4gbWFjaGluZQ0KPiBtb2RlIEB2YXJ7bX0uDQo+ID4+ID4+ ID4gK0Bjb2Rle3NhZGRfaGlnaHBhcnR9IHJldHVybnMgdGhlIGhpZ2ggcGFydCBvZiBhIHNpZ25l ZA0KPiA+PiA+PiA+ICthZGRpdGlvbiwgQGNvZGV7dWFkZF9oaWdocGFydH0gcmV0dXJucyB0aGUg aGlnaCBwYXJ0IG9mIGFuIHVuc2lnbmVkDQo+IGFkZGl0aW9uLg0KPiA+PiA+Pg0KPiA+PiA+PiBU aGUgcGF0Y2ggZG9lc24ndCBhZGQgdGhlc2UgUlRMIGNvZGVzIHRob3VnaC4NCj4gPj4gPj4NCj4g Pj4gPj4gPiArDQo+ID4+ID4+ID4gIEBmaW5kZXggZm1hDQo+ID4+ID4+ID4gIEBjaW5kZXggZnVz ZWQgbXVsdGlwbHktYWRkDQo+ID4+ID4+ID4gIEBpdGVtIChmbWE6QHZhcnttfSBAdmFye3h9IEB2 YXJ7eX0gQHZhcnt6fSkgZGlmZiAtLWdpdA0KPiA+PiA+PiA+IGEvZ2NjL2RvYy90bS50ZXhpIGIv Z2NjL2RvYy90bS50ZXhpIGluZGV4DQo+ID4+ID4+ID4NCj4gPj4gPj4NCj4gPj4NCj4gYzZjODkx OTcyZDFlNThjZDE2M2IyNTliYTk2YTU5OWQ2MjMyNjg2NS4uM2FiMjAzMWEzMzZiODc1OGQ1Nw0K PiA+PiA5MTQ4NDANCj4gPj4gPj4gMTdlDQo+ID4+ID4+ID4gNmIwZDYyYWIwNzdlIDEwMDY0NA0K PiA+PiA+PiA+IC0tLSBhL2djYy9kb2MvdG0udGV4aQ0KPiA+PiA+PiA+ICsrKyBiL2djYy9kb2Mv dG0udGV4aQ0KPiA+PiA+PiA+IEBAIC02MTM3LDIyICs2MTM3LDYgQEAgaW5zdHJ1Y3Rpb24gcGF0 dGVybi4gIFRoZXJlIGlzIG5vIG5lZWQNCj4gPj4gPj4gPiBmb3IgdGhlIGhvb2sgdG8gaGFuZGxl IHRoZXNlIHR3byAgaW1wbGVtZW50YXRpb24gYXBwcm9hY2hlcyBpdHNlbGYuDQo+ID4+ID4+ID4g IEBlbmQgZGVmdHlwZWZuDQo+ID4+ID4+ID4NCj4gPj4gPj4gPiAtQGRlZnR5cGVmbiB7VGFyZ2V0 IEhvb2t9IGJvb2wNCj4gPj4gPj4gPiBUQVJHRVRfVkVDVE9SSVpFX0NBTl9TUEVDSUFMX0RJVl9C WV9DT05TVCAoZW51bQ0KPiA+PiA+PiBAdmFye3RyZWVfY29kZX0sIHRyZWUNCj4gPj4gPj4gPiBA dmFye3ZlY3R5cGV9LCB3aWRlX2ludCBAdmFye2NvbnN0YW50fSwgcnR4ICpAdmFye291dHB1dH0s IHJ0eA0KPiA+PiA+PiA+IEB2YXJ7aW4wfSwgcnR4IEB2YXJ7aW4xfSkgLVRoaXMgaG9vayBpcyB1 c2VkIHRvIHRlc3Qgd2hldGhlciB0aGUNCj4gPj4gPj4gPiB0YXJnZXQgaGFzIGEgc3BlY2lhbCBt ZXRob2Qgb2YgLWRpdmlzaW9uIG9mIHZlY3RvcnMgb2YgdHlwZQ0KPiA+PiA+PiA+IEB2YXJ7dmVj dHlwZX0NCj4gPj4gPj4gdXNpbmcgdGhlIHZhbHVlIEB2YXJ7Y29uc3RhbnR9LCAtYW5kIHByb2R1 Y2luZyBhIHZlY3RvciBvZiB0eXBlDQo+ID4+ID4+IEB2YXJ7dmVjdHlwZX0uICBUaGUgZGl2aXNp b24gLXdpbGwgdGhlbiBub3QgYmUgZGVjb21wb3NlZCBieSB0aGUNCj4gPj4gPj4gdmVjdG9yaXpl ciBhbmQga2VwdCBhcyBhIGRpdi4NCj4gPj4gPj4gPiAtDQo+ID4+ID4+ID4gLVdoZW4gdGhlIGhv b2sgaXMgYmVpbmcgdXNlZCB0byB0ZXN0IHdoZXRoZXIgdGhlIHRhcmdldCBzdXBwb3J0cw0KPiA+ PiA+PiA+IGEgc3BlY2lhbCAtZGl2aWRlLCBAdmFye2luMH0sIEB2YXJ7aW4xfSwgYW5kIEB2YXJ7 b3V0cHV0fSBhcmUgYWxsIG51bGwuDQo+ID4+ID4+ID4gV2hlbiB0aGUgaG9vayAtaXMgYmVpbmcg dXNlZCB0byBlbWl0IGEgZGl2aXNpb24sIEB2YXJ7aW4wfSBhbmQNCj4gPj4gPj4gPiBAdmFye2lu MX0gYXJlIHRoZSBzb3VyY2UgLXZlY3RvcnMgb2YgdHlwZSBAdmFye3ZlY3R0eXBlfSBhbmQNCj4g Pj4gPj4gPiBAdmFye291dHB1dH0gaXMgdGhlIGRlc3RpbmF0aW9uIHZlY3RvciBvZiAtdHlwZSBA dmFye3ZlY3R5cGV9Lg0KPiA+PiA+PiA+IC0NCj4gPj4gPj4gPiAtUmV0dXJuIHRydWUgaWYgdGhl IG9wZXJhdGlvbiBpcyBwb3NzaWJsZSwgZW1pdHRpbmcgaW5zdHJ1Y3Rpb25zDQo+ID4+ID4+ID4g Zm9yIGl0IC1pZiBydHhlcyBhcmUgcHJvdmlkZWQgYW5kIHVwZGF0aW5nIEB2YXJ7b3V0cHV0fS4N Cj4gPj4gPj4gPiAtQGVuZCBkZWZ0eXBlZm4NCj4gPj4gPj4gPiAtDQo+ID4+ID4+ID4gIEBkZWZ0 eXBlZm4ge1RhcmdldCBIb29rfSB0cmVlDQo+ID4+ID4+ID4gVEFSR0VUX1ZFQ1RPUklaRV9CVUlM VElOX1ZFQ1RPUklaRURfRlVOQ1RJT04gKHVuc2lnbmVkDQo+ID4+ID4+IEB2YXJ7Y29kZX0sDQo+ ID4+ID4+ID4gdHJlZSBAdmFye3ZlY190eXBlX291dH0sIHRyZWUgQHZhcnt2ZWNfdHlwZV9pbn0p ICBUaGlzIGhvb2sNCj4gPj4gPj4gPiBzaG91bGQgcmV0dXJuIHRoZSBkZWNsIG9mIGEgZnVuY3Rp b24gdGhhdCBpbXBsZW1lbnRzIHRoZQ0KPiA+PiA+PiA+IHZlY3Rvcml6ZWQgdmFyaWFudCBvZiB0 aGUgZnVuY3Rpb24gd2l0aCB0aGUgQGNvZGV7Y29tYmluZWRfZm59DQo+ID4+ID4+ID4gY29kZSBk aWZmIC0tZ2l0IGEvZ2NjL2RvYy90bS50ZXhpLmluIGIvZ2NjL2RvYy90bS50ZXhpLmluIGluZGV4 DQo+ID4+ID4+ID4NCj4gPj4gPj4NCj4gPj4NCj4gNjEzYjI1MzQxNDk0MTVmNDQyMTYzZDU5OTUw M2VmYWY0MjNiNjczYi4uODc5MGY0ZTQ0Yjk4YjUxYWQ1ZA0KPiA+PiAxZWZlYzANCj4gPj4gPj4g YTNhDQo+ID4+ID4+ID4gYmNjZDFjMjkzYzdiIDEwMDY0NA0KPiA+PiA+PiA+IC0tLSBhL2djYy9k b2MvdG0udGV4aS5pbg0KPiA+PiA+PiA+ICsrKyBiL2djYy9kb2MvdG0udGV4aS5pbg0KPiA+PiA+ PiA+IEBAIC00MTczLDggKzQxNzMsNiBAQCBhZGRyZXNzOyAgYnV0IG9mdGVuIGEgbWFjaGluZS1k ZXBlbmRlbnQNCj4gPj4gPj4gc3RyYXRlZ3kgY2FuIGdlbmVyYXRlIGJldHRlciBjb2RlLg0KPiA+ PiA+PiA+DQo+ID4+ID4+ID4gIEBob29rIFRBUkdFVF9WRUNUT1JJWkVfVkVDX1BFUk1fQ09OU1QN Cj4gPj4gPj4gPg0KPiA+PiA+PiA+IC1AaG9vayBUQVJHRVRfVkVDVE9SSVpFX0NBTl9TUEVDSUFM X0RJVl9CWV9DT05TVA0KPiA+PiA+PiA+IC0NCj4gPj4gPj4gPiAgQGhvb2sgVEFSR0VUX1ZFQ1RP UklaRV9CVUlMVElOX1ZFQ1RPUklaRURfRlVOQ1RJT04NCj4gPj4gPj4gPg0KPiA+PiA+PiA+ICBA aG9vayBUQVJHRVRfVkVDVE9SSVpFX0JVSUxUSU5fTURfVkVDVE9SSVpFRF9GVU5DVElPTg0KPiA+ PiA+PiA+IGRpZmYgLS1naXQgYS9nY2MvZXhwbG93LmNjIGIvZ2NjL2V4cGxvdy5jYyBpbmRleA0K PiA+PiA+PiA+DQo+ID4+ID4+DQo+ID4+DQo+IDgzNDM5YjMyYWJlMWI5YWE0Yjc5ODNlYjYyOTgw NGY5NzQ4NmFjYmQuLmJlOTE5NWIzMzMyM2VlNTU5N2ZjDQo+ID4+IDIxMmYwDQo+ID4+ID4+IGJl Zg0KPiA+PiA+PiA+IGEwMTZlZWE0NTczYyAxMDA2NDQNCj4gPj4gPj4gPiAtLS0gYS9nY2MvZXhw bG93LmNjDQo+ID4+ID4+ID4gKysrIGIvZ2NjL2V4cGxvdy5jYw0KPiA+PiA+PiA+IEBAIC0xMDM3 LDcgKzEwMzcsNyBAQCByb3VuZF9wdXNoIChydHggc2l6ZSkNCj4gPj4gPj4gPiAgICAgICBUUlVO Q19ESVZfRVhQUi4gICovDQo+ID4+ID4+ID4gICAgc2l6ZSA9IGV4cGFuZF9iaW5vcCAoUG1vZGUs IGFkZF9vcHRhYiwgc2l6ZSwgYWxpZ25tMV9ydHgsDQo+ID4+ID4+ID4gIAkJICAgICAgIE5VTExf UlRYLCAxLCBPUFRBQl9MSUJfV0lERU4pOw0KPiA+PiA+PiA+IC0gIHNpemUgPSBleHBhbmRfZGl2 bW9kICgwLCBUUlVOQ19ESVZfRVhQUiwgUG1vZGUsIE5VTEwsIE5VTEwsDQo+ID4+ID4+ID4gc2l6 ZSwgYWxpZ25fcnR4LA0KPiA+PiA+PiA+ICsgIHNpemUgPSBleHBhbmRfZGl2bW9kICgwLCBUUlVO Q19ESVZfRVhQUiwgUG1vZGUsIHNpemUsDQo+ID4+ID4+ID4gKyBhbGlnbl9ydHgsDQo+ID4+ID4+ ID4gIAkJCU5VTExfUlRYLCAxKTsNCj4gPj4gPj4gPiAgICBzaXplID0gZXhwYW5kX211bHQgKFBt b2RlLCBzaXplLCBhbGlnbl9ydHgsIE5VTExfUlRYLCAxKTsNCj4gPj4gPj4gPg0KPiA+PiA+PiA+ IEBAIC0xMjAzLDcgKzEyMDMsNyBAQCBhbGlnbl9keW5hbWljX2FkZHJlc3MgKHJ0eCB0YXJnZXQs DQo+ID4+ID4+ID4gdW5zaWduZWQNCj4gPj4gPj4gcmVxdWlyZWRfYWxpZ24pDQo+ID4+ID4+ID4g IAkJCSBnZW5faW50X21vZGUgKHJlcXVpcmVkX2FsaWduIC8NCj4gQklUU19QRVJfVU5JVCAtIDEs DQo+ID4+ID4+ID4gIAkJCQkgICAgICAgUG1vZGUpLA0KPiA+PiA+PiA+ICAJCQkgTlVMTF9SVFgs IDEsIE9QVEFCX0xJQl9XSURFTik7DQo+ID4+ID4+ID4gLSAgdGFyZ2V0ID0gZXhwYW5kX2Rpdm1v ZCAoMCwgVFJVTkNfRElWX0VYUFIsIFBtb2RlLCBOVUxMLCBOVUxMLA0KPiA+PiA+PiA+IHRhcmdl dCwNCj4gPj4gPj4gPiArICB0YXJnZXQgPSBleHBhbmRfZGl2bW9kICgwLCBUUlVOQ19ESVZfRVhQ UiwgUG1vZGUsIHRhcmdldCwNCj4gPj4gPj4gPiAgCQkJICBnZW5faW50X21vZGUgKHJlcXVpcmVk X2FsaWduIC8NCj4gQklUU19QRVJfVU5JVCwNCj4gPj4gPj4gPiAgCQkJCQlQbW9kZSksDQo+ID4+ ID4+ID4gIAkJCSAgTlVMTF9SVFgsIDEpOw0KPiA+PiA+PiA+IGRpZmYgLS1naXQgYS9nY2MvZXhw bWVkLmggYi9nY2MvZXhwbWVkLmggaW5kZXgNCj4gPj4gPj4gPg0KPiA+PiA+Pg0KPiA+Pg0KPiAw NDE5ZTJkYWM4NTg1MDg4OWNlMGJlZTU5NTE1ZTMxYTgwYzU4MmRlLi40ZGZlNjM1YzIyZWU0OWYy ZGJhNGMNCj4gPj4gNTM2NA0KPiA+PiA+PiAwOTQNCj4gPj4gPj4gPiAxNjI4MDY4ZjM5MDEgMTAw NjQ0DQo+ID4+ID4+ID4gLS0tIGEvZ2NjL2V4cG1lZC5oDQo+ID4+ID4+ID4gKysrIGIvZ2NjL2V4 cG1lZC5oDQo+ID4+ID4+ID4gQEAgLTcxMCw5ICs3MTAsOCBAQCBleHRlcm4gcnR4IGV4cGFuZF9z aGlmdCAoZW51bSB0cmVlX2NvZGUsDQo+ID4+ID4+ID4gbWFjaGluZV9tb2RlLCBydHgsIHBvbHlf aW50NjQsIHJ0eCwgIGV4dGVybiBydHgNCj4gPj4gPj4gPiBtYXliZV9leHBhbmRfc2hpZnQNCj4g Pj4gPj4gKGVudW0gdHJlZV9jb2RlLCBtYWNoaW5lX21vZGUsIHJ0eCwgaW50LCBydHgsDQo+ID4+ ID4+ID4gIAkJCSAgICAgICBpbnQpOw0KPiA+PiA+PiA+ICAjaWZkZWYgR0NDX09QVEFCU19IDQo+ ID4+ID4+ID4gLWV4dGVybiBydHggZXhwYW5kX2Rpdm1vZCAoaW50LCBlbnVtIHRyZWVfY29kZSwg bWFjaGluZV9tb2RlLA0KPiA+PiA+PiA+IHRyZWUsDQo+ID4+ID4+IHRyZWUsDQo+ID4+ID4+ID4g LQkJCSAgcnR4LCBydHgsIHJ0eCwgaW50LA0KPiA+PiA+PiA+IC0JCQkgIGVudW0gb3B0YWJfbWV0 aG9kcyA9DQo+IE9QVEFCX0xJQl9XSURFTik7DQo+ID4+ID4+ID4gK2V4dGVybiBydHggZXhwYW5k X2Rpdm1vZCAoaW50LCBlbnVtIHRyZWVfY29kZSwgbWFjaGluZV9tb2RlLA0KPiA+PiA+PiA+ICty dHgsDQo+ID4+ID4+IHJ0eCwNCj4gPj4gPj4gPiArCQkJICBydHgsIGludCwgZW51bSBvcHRhYl9t ZXRob2RzID0NCj4gPj4gPj4gT1BUQUJfTElCX1dJREVOKTsNCj4gPj4gPj4gPiAgI2VuZGlmDQo+ ID4+ID4+ID4gICNlbmRpZg0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gZGlmZiAtLWdpdCBhL2djYy9l eHBtZWQuY2MgYi9nY2MvZXhwbWVkLmNjIGluZGV4DQo+ID4+ID4+ID4NCj4gPj4gPj4NCj4gPj4N Cj4gOTE3MzYwMTk5Y2E1NjE1N2NmM2MzNjkzYjY1ZTkzY2Q5ZDhlZDI0NC4uMTU1M2VhOGUzMWVi NjQzMzAyNWENCj4gPj4gYjE4YTMNCj4gPj4gPj4gYTU5DQo+ID4+ID4+ID4gYzE2OWQzYjc2OTJm IDEwMDY0NA0KPiA+PiA+PiA+IC0tLSBhL2djYy9leHBtZWQuY2MNCj4gPj4gPj4gPiArKysgYi9n Y2MvZXhwbWVkLmNjDQo+ID4+ID4+ID4gQEAgLTQyMjIsOCArNDIyMiw4IEBAIGV4cGFuZF9zZGl2 X3BvdzIgKHNjYWxhcl9pbnRfbW9kZQ0KPiBtb2RlLA0KPiA+PiBydHgNCj4gPj4gPj4gb3AwLA0K PiA+PiA+PiA+IEhPU1RfV0lERV9JTlQgZCkNCj4gPj4gPj4gPg0KPiA+PiA+PiA+ICBydHgNCj4g Pj4gPj4gPiAgZXhwYW5kX2Rpdm1vZCAoaW50IHJlbV9mbGFnLCBlbnVtIHRyZWVfY29kZSBjb2Rl LCBtYWNoaW5lX21vZGUNCj4gPj4gPj4gbW9kZSwNCj4gPj4gPj4gPiAtCSAgICAgICB0cmVlIHRy ZWVvcDAsIHRyZWUgdHJlZW9wMSwgcnR4IG9wMCwgcnR4IG9wMSwgcnR4IHRhcmdldCwNCj4gPj4g Pj4gPiAtCSAgICAgICBpbnQgdW5zaWduZWRwLCBlbnVtIG9wdGFiX21ldGhvZHMgbWV0aG9kcykN Cj4gPj4gPj4gPiArCSAgICAgICBydHggb3AwLCBydHggb3AxLCBydHggdGFyZ2V0LCBpbnQgdW5z aWduZWRwLA0KPiA+PiA+PiA+ICsJICAgICAgIGVudW0gb3B0YWJfbWV0aG9kcyBtZXRob2RzKQ0K PiA+PiA+PiA+ICB7DQo+ID4+ID4+ID4gICAgbWFjaGluZV9tb2RlIGNvbXB1dGVfbW9kZTsNCj4g Pj4gPj4gPiAgICBydHggdHF1b3RpZW50Ow0KPiA+PiA+PiA+IEBAIC00Mzc1LDE3ICs0Mzc1LDYg QEAgZXhwYW5kX2Rpdm1vZCAoaW50IHJlbV9mbGFnLCBlbnVtDQo+ID4+IHRyZWVfY29kZQ0KPiA+ PiA+PiA+IGNvZGUsIG1hY2hpbmVfbW9kZSBtb2RlLA0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gICAg bGFzdF9kaXZfY29uc3QgPSAhIHJlbV9mbGFnICYmIG9wMV9pc19jb25zdGFudCA/IElOVFZBTCAo b3AxKSA6DQo+ID4+ID4+ID4gMDsNCj4gPj4gPj4gPg0KPiA+PiA+PiA+IC0gIC8qIENoZWNrIGlm IHRoZSB0YXJnZXQgaGFzIHNwZWNpZmljIGV4cGFuc2lvbnMgZm9yIHRoZSBkaXZpc2lvbi4NCj4g Pj4gPj4gPiAqLw0KPiA+PiA+PiA+IC0gIHRyZWUgY3N0Ow0KPiA+PiA+PiA+IC0gIGlmICh0cmVl b3AwDQo+ID4+ID4+ID4gLSAgICAgICYmIHRyZWVvcDENCj4gPj4gPj4gPiAtICAgICAgJiYgKGNz dCA9IHVuaWZvcm1faW50ZWdlcl9jc3RfcCAodHJlZW9wMSkpDQo+ID4+ID4+ID4gLSAgICAgICYm IHRhcmdldG0udmVjdG9yaXplLmNhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCAoY29kZSwgVFJFRV9U WVBFDQo+ID4+ID4+ICh0cmVlb3AwKSwNCj4gPj4gPj4gPiAtCQkJCQkJICAgICB3aTo6dG9fd2lk ZSAoY3N0KSwNCj4gPj4gPj4gPiAtCQkJCQkJICAgICAmdGFyZ2V0LCBvcDAsIG9wMSkpDQo+ID4+ ID4+ID4gLSAgICByZXR1cm4gdGFyZ2V0Ow0KPiA+PiA+PiA+IC0NCj4gPj4gPj4gPiAtDQo+ID4+ ID4+ID4gICAgLyogTm93IGNvbnZlcnQgdG8gdGhlIGJlc3QgbW9kZSB0byB1c2UuICAqLw0KPiA+ PiA+PiA+ICAgIGlmIChjb21wdXRlX21vZGUgIT0gbW9kZSkNCj4gPj4gPj4gPiAgICAgIHsNCj4g Pj4gPj4gPiBAQCAtNDYyOSw4ICs0NjE4LDggQEAgZXhwYW5kX2Rpdm1vZCAoaW50IHJlbV9mbGFn LCBlbnVtDQo+ID4+IHRyZWVfY29kZQ0KPiA+PiA+PiBjb2RlLCBtYWNoaW5lX21vZGUgbW9kZSwN Cj4gPj4gPj4gPiAgCQkJICAgIHx8IChvcHRhYl9oYW5kbGVyIChzZGl2bW9kX29wdGFiLA0KPiBp bnRfbW9kZSkNCj4gPj4gPj4gPiAgCQkJCSE9IENPREVfRk9SX25vdGhpbmcpKSkNCj4gPj4gPj4g PiAgCQkgICAgICBxdW90aWVudCA9IGV4cGFuZF9kaXZtb2QgKDAsIFRSVU5DX0RJVl9FWFBSLA0K PiA+PiA+PiA+IC0JCQkJCQlpbnRfbW9kZSwgdHJlZW9wMCwNCj4gdHJlZW9wMSwNCj4gPj4gPj4g PiAtCQkJCQkJb3AwLCBnZW5faW50X21vZGUNCj4gKGFic19kLA0KPiA+PiA+PiA+ICsJCQkJCQlp bnRfbW9kZSwgb3AwLA0KPiA+PiA+PiA+ICsJCQkJCQlnZW5faW50X21vZGUNCj4gKGFic19kLA0K PiA+PiA+PiA+ICAJCQkJCQkJICAgICAgaW50X21vZGUpLA0KPiA+PiA+PiA+ICAJCQkJCQlOVUxM X1JUWCwgMCk7DQo+ID4+ID4+ID4gIAkJICAgIGVsc2UNCj4gPj4gPj4gPiBAQCAtNDgxOSw4ICs0 ODA4LDggQEAgZXhwYW5kX2Rpdm1vZCAoaW50IHJlbV9mbGFnLCBlbnVtDQo+ID4+IHRyZWVfY29k ZQ0KPiA+PiA+PiBjb2RlLCBtYWNoaW5lX21vZGUgbW9kZSwNCj4gPj4gPj4gPiAgCQkJCSAgICAg IHNpemUgLSAxLCBOVUxMX1JUWCwgMCk7DQo+ID4+ID4+ID4gIAkJdDMgPSBmb3JjZV9vcGVyYW5k IChnZW5fcnR4X01JTlVTIChpbnRfbW9kZSwgdDEsDQo+IG5zaWduKSwNCj4gPj4gPj4gPiAgCQkJ CSAgICBOVUxMX1JUWCk7DQo+ID4+ID4+ID4gLQkJdDQgPSBleHBhbmRfZGl2bW9kICgwLCBUUlVO Q19ESVZfRVhQUiwgaW50X21vZGUsDQo+ID4+ID4+IHRyZWVvcDAsDQo+ID4+ID4+ID4gLQkJCQkg ICAgdHJlZW9wMSwgdDMsIG9wMSwgTlVMTF9SVFgsIDApOw0KPiA+PiA+PiA+ICsJCXQ0ID0gZXhw YW5kX2Rpdm1vZCAoMCwgVFJVTkNfRElWX0VYUFIsIGludF9tb2RlLA0KPiB0MywNCj4gPj4gPj4g b3AxLA0KPiA+PiA+PiA+ICsJCQkJICAgIE5VTExfUlRYLCAwKTsNCj4gPj4gPj4gPiAgCQlpZiAo dDQpDQo+ID4+ID4+ID4gIAkJICB7DQo+ID4+ID4+ID4gIAkJICAgIHJ0eCB0NTsNCj4gPj4gPj4g PiBkaWZmIC0tZ2l0IGEvZ2NjL2V4cHIuY2MgYi9nY2MvZXhwci5jYyBpbmRleA0KPiA+PiA+PiA+ DQo+ID4+ID4+DQo+ID4+DQo+IDE1YmUxYzhkYjk5OTEwM2JiOWU1ZmEzM2RhYTQ0YWUwNmRlNWFj ZTguLjc4ZDM1Mjk3ZTc1NTIxNjMzOTA3DQo+ID4+IDhkNWINCj4gPj4gPj4gMjI4MA0KPiA+PiA+ PiA+IGM2ZTI3N2YyNmQ3MiAxMDA2NDQNCj4gPj4gPj4gPiAtLS0gYS9nY2MvZXhwci5jYw0KPiA+ PiA+PiA+ICsrKyBiL2djYy9leHByLmNjDQo+ID4+ID4+ID4gQEAgLTgyMDcsMTcgKzgyMDcsMTYg QEAgZm9yY2Vfb3BlcmFuZCAocnR4IHZhbHVlLCBydHggdGFyZ2V0KQ0KPiA+PiA+PiA+ICAJICAg IHJldHVybiBleHBhbmRfZGl2bW9kICgwLA0KPiA+PiA+PiA+ICAJCQkJICBGTE9BVF9NT0RFX1Ag KEdFVF9NT0RFDQo+ICh2YWx1ZSkpDQo+ID4+ID4+ID4gIAkJCQkgID8gUkRJVl9FWFBSIDogVFJV TkNfRElWX0VYUFIsDQo+ID4+ID4+ID4gLQkJCQkgIEdFVF9NT0RFICh2YWx1ZSksIE5VTEwsIE5V TEwsDQo+IG9wMSwgb3AyLA0KPiA+PiA+PiA+IC0JCQkJICB0YXJnZXQsIDApOw0KPiA+PiA+PiA+ ICsJCQkJICBHRVRfTU9ERSAodmFsdWUpLCBvcDEsIG9wMiwgdGFyZ2V0LA0KPiAwKTsNCj4gPj4g Pj4gPiAgCWNhc2UgTU9EOg0KPiA+PiA+PiA+IC0JICByZXR1cm4gZXhwYW5kX2Rpdm1vZCAoMSwg VFJVTkNfTU9EX0VYUFIsIEdFVF9NT0RFDQo+ICh2YWx1ZSksDQo+ID4+ID4+IE5VTEwsIE5VTEws DQo+ID4+ID4+ID4gLQkJCQlvcDEsIG9wMiwgdGFyZ2V0LCAwKTsNCj4gPj4gPj4gPiArCSAgcmV0 dXJuIGV4cGFuZF9kaXZtb2QgKDEsIFRSVU5DX01PRF9FWFBSLCBHRVRfTU9ERQ0KPiAodmFsdWUp LA0KPiA+PiA+PiBvcDEsIG9wMiwNCj4gPj4gPj4gPiArCQkJCXRhcmdldCwgMCk7DQo+ID4+ID4+ ID4gIAljYXNlIFVESVY6DQo+ID4+ID4+ID4gLQkgIHJldHVybiBleHBhbmRfZGl2bW9kICgwLCBU UlVOQ19ESVZfRVhQUiwgR0VUX01PREUNCj4gKHZhbHVlKSwNCj4gPj4gPj4gTlVMTCwgTlVMTCwN Cj4gPj4gPj4gPiAtCQkJCW9wMSwgb3AyLCB0YXJnZXQsIDEpOw0KPiA+PiA+PiA+ICsJICByZXR1 cm4gZXhwYW5kX2Rpdm1vZCAoMCwgVFJVTkNfRElWX0VYUFIsIEdFVF9NT0RFDQo+ICh2YWx1ZSks DQo+ID4+ID4+IG9wMSwgb3AyLA0KPiA+PiA+PiA+ICsJCQkJdGFyZ2V0LCAxKTsNCj4gPj4gPj4g PiAgCWNhc2UgVU1PRDoNCj4gPj4gPj4gPiAtCSAgcmV0dXJuIGV4cGFuZF9kaXZtb2QgKDEsIFRS VU5DX01PRF9FWFBSLCBHRVRfTU9ERQ0KPiAodmFsdWUpLA0KPiA+PiA+PiBOVUxMLCBOVUxMLA0K PiA+PiA+PiA+IC0JCQkJb3AxLCBvcDIsIHRhcmdldCwgMSk7DQo+ID4+ID4+ID4gKwkgIHJldHVy biBleHBhbmRfZGl2bW9kICgxLCBUUlVOQ19NT0RfRVhQUiwgR0VUX01PREUNCj4gKHZhbHVlKSwN Cj4gPj4gPj4gb3AxLCBvcDIsDQo+ID4+ID4+ID4gKwkJCQl0YXJnZXQsIDEpOw0KPiA+PiA+PiA+ ICAJY2FzZSBBU0hJRlRSVDoNCj4gPj4gPj4gPiAgCSAgcmV0dXJuIGV4cGFuZF9zaW1wbGVfYmlu b3AgKEdFVF9NT0RFICh2YWx1ZSksIGNvZGUsIG9wMSwNCj4gb3AyLA0KPiA+PiA+PiA+ICAJCQkJ ICAgICAgdGFyZ2V0LCAwLCBPUFRBQl9MSUJfV0lERU4pOyBAQA0KPiAtDQo+ID4+ID4+IDkxNzAs MTMgKzkxNjksMTEgQEANCj4gPj4gPj4gPiBleHBhbmRfZXhwcl9kaXZtb2QgKHRyZWVfY29kZSBj b2RlLCBtYWNoaW5lX21vZGUgbW9kZSwgdHJlZQ0KPiA+PiA+PiB0cmVlb3AwLA0KPiA+PiA+PiA+ ICAgICAgICBib29sIHNwZWVkX3AgPSBvcHRpbWl6ZV9pbnNuX2Zvcl9zcGVlZF9wICgpOw0KPiA+ PiA+PiA+ICAgICAgICBkb19wZW5kaW5nX3N0YWNrX2FkanVzdCAoKTsNCj4gPj4gPj4gPiAgICAg ICAgc3RhcnRfc2VxdWVuY2UgKCk7DQo+ID4+ID4+ID4gLSAgICAgIHJ0eCB1bnNfcmV0ID0gZXhw YW5kX2Rpdm1vZCAobW9kX3AsIGNvZGUsIG1vZGUsIHRyZWVvcDAsDQo+IHRyZWVvcDEsDQo+ID4+ ID4+ID4gLQkJCQkgICBvcDAsIG9wMSwgdGFyZ2V0LCAxKTsNCj4gPj4gPj4gPiArICAgICAgcnR4 IHVuc19yZXQgPSBleHBhbmRfZGl2bW9kIChtb2RfcCwgY29kZSwgbW9kZSwgb3AwLCBvcDEsDQo+ ID4+ID4+ID4gKyB0YXJnZXQsIDEpOw0KPiA+PiA+PiA+ICAgICAgICBydHhfaW5zbiAqdW5zX2lu c25zID0gZ2V0X2luc25zICgpOw0KPiA+PiA+PiA+ICAgICAgICBlbmRfc2VxdWVuY2UgKCk7DQo+ ID4+ID4+ID4gICAgICAgIHN0YXJ0X3NlcXVlbmNlICgpOw0KPiA+PiA+PiA+IC0gICAgICBydHgg c2duX3JldCA9IGV4cGFuZF9kaXZtb2QgKG1vZF9wLCBjb2RlLCBtb2RlLCB0cmVlb3AwLA0KPiB0 cmVlb3AxLA0KPiA+PiA+PiA+IC0JCQkJICAgb3AwLCBvcDEsIHRhcmdldCwgMCk7DQo+ID4+ID4+ ID4gKyAgICAgIHJ0eCBzZ25fcmV0ID0gZXhwYW5kX2Rpdm1vZCAobW9kX3AsIGNvZGUsIG1vZGUs IG9wMCwgb3AxLA0KPiA+PiA+PiA+ICsgdGFyZ2V0LCAwKTsNCj4gPj4gPj4gPiAgICAgICAgcnR4 X2luc24gKnNnbl9pbnNucyA9IGdldF9pbnNucyAoKTsNCj4gPj4gPj4gPiAgICAgICAgZW5kX3Nl cXVlbmNlICgpOw0KPiA+PiA+PiA+ICAgICAgICB1bnNpZ25lZCB1bnNfY29zdCA9IHNlcV9jb3N0 ICh1bnNfaW5zbnMsIHNwZWVkX3ApOyBAQA0KPiA+PiA+PiA+IC05MTk4LDgNCj4gPj4gPj4gPiAr OTE5NSw3IEBAIGV4cGFuZF9leHByX2Rpdm1vZCAodHJlZV9jb2RlIGNvZGUsIG1hY2hpbmVfbW9k ZQ0KPiA+PiA+PiBtb2RlLCB0cmVlIHRyZWVvcDAsDQo+ID4+ID4+ID4gICAgICAgIGVtaXRfaW5z biAoc2duX2luc25zKTsNCj4gPj4gPj4gPiAgICAgICAgcmV0dXJuIHNnbl9yZXQ7DQo+ID4+ID4+ ID4gICAgICB9DQo+ID4+ID4+ID4gLSAgcmV0dXJuIGV4cGFuZF9kaXZtb2QgKG1vZF9wLCBjb2Rl LCBtb2RlLCB0cmVlb3AwLCB0cmVlb3AxLA0KPiA+PiA+PiA+IC0JCQlvcDAsIG9wMSwgdGFyZ2V0 LCB1bnNpZ25lZHApOw0KPiA+PiA+PiA+ICsgIHJldHVybiBleHBhbmRfZGl2bW9kIChtb2RfcCwg Y29kZSwgbW9kZSwgb3AwLCBvcDEsIHRhcmdldCwNCj4gPj4gPj4gPiArIHVuc2lnbmVkcCk7DQo+ ID4+ID4+ID4gIH0NCj4gPj4gPj4gPg0KPiA+PiA+PiA+ICBydHgNCj4gPj4gPj4gPiBkaWZmIC0t Z2l0IGEvZ2NjL2ludGVybmFsLWZuLmRlZiBiL2djYy9pbnRlcm5hbC1mbi5kZWYgaW5kZXgNCj4g Pj4gPj4gPg0KPiA+PiA+Pg0KPiA+Pg0KPiAyMmI0YTJkOTI5NjcwNzZjNjU4OTY1YWZjYWVhZjM5 YjQ0OWE4Y2FmLi4yNzk2ZDM2NjlhMDgwNjUzODA1Mg0KPiA+PiA1ODRmNWENCj4gPj4gPj4gM2IN Cj4gPj4gPj4gPiA4YTczNGJhYTgwMGYgMTAwNjQ0DQo+ID4+ID4+ID4gLS0tIGEvZ2NjL2ludGVy bmFsLWZuLmRlZg0KPiA+PiA+PiA+ICsrKyBiL2djYy9pbnRlcm5hbC1mbi5kZWYNCj4gPj4gPj4g PiBAQCAtMTc0LDYgKzE3NCw4IEBAIERFRl9JTlRFUk5BTF9TSUdORURfT1BUQUJfRk4NCj4gKEFW R19DRUlMLA0KPiA+PiA+PiBFQ0ZfQ09OU1QNCj4gPj4gPj4gPiB8IEVDRl9OT1RIUk9XLCBmaXJz dCwNCj4gPj4gPj4gPg0KPiA+PiA+PiA+ICBERUZfSU5URVJOQUxfU0lHTkVEX09QVEFCX0ZOIChN VUxILCBFQ0ZfQ09OU1QgfA0KPiA+PiA+PiBFQ0ZfTk9USFJPVywgZmlyc3QsDQo+ID4+ID4+ID4g IAkJCSAgICAgIHNtdWxfaGlnaHBhcnQsIHVtdWxfaGlnaHBhcnQsIGJpbmFyeSkNCj4gPj4gPj4g PiArREVGX0lOVEVSTkFMX1NJR05FRF9PUFRBQl9GTiAoQURESCwgRUNGX0NPTlNUIHwNCj4gPj4g Pj4gRUNGX05PVEhST1csIGZpcnN0LA0KPiA+PiA+PiA+ICsJCQkgICAgICBzYWRkX2hpZ2hwYXJ0 LCB1YWRkX2hpZ2hwYXJ0LCBiaW5hcnkpDQo+ID4+ID4+ID4gIERFRl9JTlRFUk5BTF9TSUdORURf T1BUQUJfRk4gKE1VTEhTLCBFQ0ZfQ09OU1QgfA0KPiA+PiA+PiBFQ0ZfTk9USFJPVywgZmlyc3Qs DQo+ID4+ID4+ID4gIAkJCSAgICAgIHNtdWxocywgdW11bGhzLCBiaW5hcnkpDQo+IERFRl9JTlRF Uk5BTF9TSUdORURfT1BUQUJfRk4NCj4gPj4gPj4gPiAoTVVMSFJTLCBFQ0ZfQ09OU1QgfA0KPiA+ PiA+PiBFQ0ZfTk9USFJPVywgZmlyc3QsDQo+ID4+ID4+ID4gZGlmZiAtLWdpdCBhL2djYy9vcHRh YnMuY2MgYi9nY2Mvb3B0YWJzLmNjIGluZGV4DQo+ID4+ID4+ID4NCj4gPj4gPj4NCj4gPj4NCj4g Y2YyMmJmZWMzZjU1MTNmNTZkMjJjODY2MjMxZWRiZjMyMmZmNjk0NS4uNDc0Y2NiZDc5MTViNGYx NDRjZWJlMDMNCj4gPj4gNjlhNg0KPiA+PiA+PiBlDQo+ID4+ID4+ID4gNzcwODJjMWU2MTdiIDEw MDY0NA0KPiA+PiA+PiA+IC0tLSBhL2djYy9vcHRhYnMuY2MNCj4gPj4gPj4gPiArKysgYi9nY2Mv b3B0YWJzLmNjDQo+ID4+ID4+ID4gQEAgLTExMDYsOSArMTEwNiw4IEBAIGV4cGFuZF9kb3VibGV3 b3JkX21vZCAobWFjaGluZV9tb2RlDQo+ID4+ID4+IG1vZGUsIHJ0eCBvcDAsIHJ0eCBvcDEsIGJv b2wgdW5zaWduZWRwKQ0KPiA+PiA+PiA+ICAJCXJldHVybiBOVUxMX1JUWDsNCj4gPj4gPj4gPiAg CSAgICB9DQo+ID4+ID4+ID4gIAl9DQo+ID4+ID4+ID4gLSAgICAgIHJ0eCByZW1haW5kZXIgPSBl eHBhbmRfZGl2bW9kICgxLCBUUlVOQ19NT0RfRVhQUiwNCj4gd29yZF9tb2RlLA0KPiA+PiA+PiBO VUxMLCBOVUxMLA0KPiA+PiA+PiA+IC0JCQkJICAgICBzdW0sIGdlbl9pbnRfbW9kZSAoSU5UVkFM IChvcDEpLA0KPiA+PiA+PiA+IC0JCQkJCQkJd29yZF9tb2RlKSwNCj4gPj4gPj4gPiArICAgICAg cnR4IHJlbWFpbmRlciA9IGV4cGFuZF9kaXZtb2QgKDEsIFRSVU5DX01PRF9FWFBSLA0KPiA+PiB3 b3JkX21vZGUsDQo+ID4+ID4+IHN1bSwNCj4gPj4gPj4gPiArCQkJCSAgICAgZ2VuX2ludF9tb2Rl IChJTlRWQUwgKG9wMSksDQo+ID4+ID4+IHdvcmRfbW9kZSksDQo+ID4+ID4+ID4gIAkJCQkgICAg IE5VTExfUlRYLCAxLCBPUFRBQl9ESVJFQ1QpOw0KPiA+PiA+PiA+ICAgICAgICBpZiAocmVtYWlu ZGVyID09IE5VTExfUlRYKQ0KPiA+PiA+PiA+ICAJcmV0dXJuIE5VTExfUlRYOw0KPiA+PiA+PiA+ IEBAIC0xMjExLDggKzEyMTAsOCBAQCBleHBhbmRfZG91Ymxld29yZF9kaXZtb2QNCj4gKG1hY2hp bmVfbW9kZQ0KPiA+PiA+PiBtb2RlLCBydHgNCj4gPj4gPj4gPiBvcDAsIHJ0eCBvcDEsIHJ0eCAq cmVtLA0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gICAgaWYgKG9wMTEgIT0gY29uc3QxX3J0eCkNCj4g Pj4gPj4gPiAgICAgIHsNCj4gPj4gPj4gPiAtICAgICAgcnR4IHJlbTIgPSBleHBhbmRfZGl2bW9k ICgxLCBUUlVOQ19NT0RfRVhQUiwgbW9kZSwgTlVMTCwNCj4gPj4gTlVMTCwNCj4gPj4gPj4gcXVv dDEsDQo+ID4+ID4+ID4gLQkJCQlvcDExLCBOVUxMX1JUWCwgdW5zaWduZWRwLA0KPiA+PiA+PiBP UFRBQl9ESVJFQ1QpOw0KPiA+PiA+PiA+ICsgICAgICBydHggcmVtMiA9IGV4cGFuZF9kaXZtb2Qg KDEsIFRSVU5DX01PRF9FWFBSLCBtb2RlLCBxdW90MSwNCj4gPj4gPj4gb3AxMSwNCj4gPj4gPj4g PiArCQkJCU5VTExfUlRYLCB1bnNpZ25lZHAsDQo+IE9QVEFCX0RJUkVDVCk7DQo+ID4+ID4+ID4g ICAgICAgIGlmIChyZW0yID09IE5VTExfUlRYKQ0KPiA+PiA+PiA+ICAJcmV0dXJuIE5VTExfUlRY Ow0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gQEAgLTEyMjYsOCArMTIyNSw4IEBAIGV4cGFuZF9kb3Vi bGV3b3JkX2Rpdm1vZA0KPiAobWFjaGluZV9tb2RlDQo+ID4+ID4+IG1vZGUsIHJ0eCBvcDAsIHJ0 eCBvcDEsIHJ0eCAqcmVtLA0KPiA+PiA+PiA+ICAgICAgICBpZiAocmVtMiA9PSBOVUxMX1JUWCkN Cj4gPj4gPj4gPiAgCXJldHVybiBOVUxMX1JUWDsNCj4gPj4gPj4gPg0KPiA+PiA+PiA+IC0gICAg ICBydHggcXVvdDIgPSBleHBhbmRfZGl2bW9kICgwLCBUUlVOQ19ESVZfRVhQUiwgbW9kZSwgTlVM TCwNCj4gPj4gTlVMTCwNCj4gPj4gPj4gcXVvdDEsDQo+ID4+ID4+ID4gLQkJCQkgb3AxMSwgTlVM TF9SVFgsIHVuc2lnbmVkcCwNCj4gPj4gPj4gT1BUQUJfRElSRUNUKTsNCj4gPj4gPj4gPiArICAg ICAgcnR4IHF1b3QyID0gZXhwYW5kX2Rpdm1vZCAoMCwgVFJVTkNfRElWX0VYUFIsIG1vZGUsDQo+ ID4+ID4+ID4gKyBxdW90MSwNCj4gPj4gb3AxMSwNCj4gPj4gPj4gPiArCQkJCSBOVUxMX1JUWCwg dW5zaWduZWRwLA0KPiBPUFRBQl9ESVJFQ1QpOw0KPiA+PiA+PiA+ICAgICAgICBpZiAocXVvdDIg PT0gTlVMTF9SVFgpDQo+ID4+ID4+ID4gIAlyZXR1cm4gTlVMTF9SVFg7DQo+ID4+ID4+ID4NCj4g Pj4gPj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL29wdGFicy5kZWYgYi9nY2Mvb3B0YWJzLmRlZiBpbmRl eA0KPiA+PiA+PiA+DQo+ID4+ID4+DQo+ID4+DQo+IDY5NWY1OTExYjMwMGM5Y2E1NzM3ZGU5YmU4 MDlmYTAxYWFiZTVlMDEuLjc3YTE1MmVjMmQxOTQ5ZGVjYTJjMg0KPiA+PiBkN2E1DQo+ID4+ID4+ IGNjYg0KPiA+PiA+PiA+IGY2MTQ3OTQ3MzUxYSAxMDA2NDQNCj4gPj4gPj4gPiAtLS0gYS9nY2Mv b3B0YWJzLmRlZg0KPiA+PiA+PiA+ICsrKyBiL2djYy9vcHRhYnMuZGVmDQo+ID4+ID4+ID4gQEAg LTI2NSw2ICsyNjUsOCBAQCBPUFRBQl9EIChzcGFjZXNoaXBfb3B0YWIsICJzcGFjZXNoaXAkYTMi KQ0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gIE9QVEFCX0QgKHNtdWxfaGlnaHBhcnRfb3B0YWIsICJz bXVsJGEzX2hpZ2hwYXJ0IikgIE9QVEFCX0QNCj4gPj4gPj4gPiAodW11bF9oaWdocGFydF9vcHRh YiwgInVtdWwkYTNfaGlnaHBhcnQiKQ0KPiA+PiA+PiA+ICtPUFRBQl9EIChzYWRkX2hpZ2hwYXJ0 X29wdGFiLCAic2FkZCRhM19oaWdocGFydCIpIE9QVEFCX0QNCj4gPj4gPj4gPiArKHVhZGRfaGln aHBhcnRfb3B0YWIsICJ1YWRkJGEzX2hpZ2hwYXJ0IikNCj4gPj4gPj4gPg0KPiA+PiA+PiA+ICBP UFRBQl9EIChjbXBtZW1fb3B0YWIsICJjbXBtZW0kYSIpICBPUFRBQl9EIChjbXBzdHJfb3B0YWIs DQo+ID4+ID4+ID4gImNtcHN0ciRhIikgZGlmZiAtLWdpdCBhL2djYy90YXJnZXQuZGVmIGIvZ2Nj L3RhcmdldC5kZWYgaW5kZXgNCj4gPj4gPj4gPg0KPiA+PiA+Pg0KPiA+Pg0KPiBkYjhhZjBjYmU4 MTYyNDUxM2YxMTRmYzliYmQ4YmU2MWQ4NTVmNDA5Li5lMGE1YzdhZGJkOTYyZjVkMDhlZDANCj4g Pj4gOGQxZA0KPiA+PiA+PiA4MWENCj4gPj4gPj4gPiBmYTJjMmJhYTY0YTUgMTAwNjQ0DQo+ID4+ ID4+ID4gLS0tIGEvZ2NjL3RhcmdldC5kZWYNCj4gPj4gPj4gPiArKysgYi9nY2MvdGFyZ2V0LmRl Zg0KPiA+PiA+PiA+IEBAIC0xOTA1LDI1ICsxOTA1LDYgQEAgaW1wbGVtZW50YXRpb24gYXBwcm9h Y2hlcyBpdHNlbGYuIiwNCj4gPj4gPj4gPiAgCWNvbnN0IHZlY19wZXJtX2luZGljZXMgJnNlbCks DQo+ID4+ID4+ID4gICBOVUxMKQ0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gLURFRkhPT0sNCj4gPj4g Pj4gPiAtKGNhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCwNCj4gPj4gPj4gPiAtICJUaGlzIGhvb2sg aXMgdXNlZCB0byB0ZXN0IHdoZXRoZXIgdGhlIHRhcmdldCBoYXMgYSBzcGVjaWFsDQo+ID4+ID4+ ID4gbWV0aG9kIG9mXG5cIC1kaXZpc2lvbiBvZiB2ZWN0b3JzIG9mIHR5cGUgQHZhcnt2ZWN0eXBl fSB1c2luZw0KPiA+PiA+PiA+IHRoZSB2YWx1ZSBAdmFye2NvbnN0YW50fSxcblwgLWFuZCBwcm9k dWNpbmcgYSB2ZWN0b3Igb2YgdHlwZQ0KPiA+PiA+PiA+IEB2YXJ7dmVjdHlwZX0uICBUaGUgZGl2 aXNpb25cblwgLXdpbGwgdGhlbiBub3QgYmUgZGVjb21wb3NlZCBieQ0KPiA+PiA+PiA+IHRoZSB2 ZWN0b3JpemVyIGFuZCBrZXB0IGFzIGEgZGl2LlxuXCAtXG5cIC1XaGVuIHRoZSBob29rIGlzDQo+ ID4+ID4+ID4gYmVpbmcgdXNlZCB0byB0ZXN0IHdoZXRoZXIgdGhlIHRhcmdldCBzdXBwb3J0cyBh IHNwZWNpYWxcblwNCj4gPj4gPj4gPiAtZGl2aWRlLCBAdmFye2luMH0sIEB2YXJ7aW4xfSwgYW5k IEB2YXJ7b3V0cHV0fSBhcmUgYWxsIG51bGwuDQo+ID4+ID4+ID4gV2hlbiB0aGUgaG9va1xuXCAt aXMgYmVpbmcgdXNlZCB0byBlbWl0IGEgZGl2aXNpb24sIEB2YXJ7aW4wfQ0KPiA+PiA+PiA+IGFu ZCBAdmFye2luMX0gYXJlIHRoZSBzb3VyY2VcblwgLXZlY3RvcnMgb2YgdHlwZSBAdmFye3ZlY3R0 eXBlfQ0KPiA+PiA+PiA+IGFuZCBAdmFye291dHB1dH0gaXMgdGhlIGRlc3RpbmF0aW9uIHZlY3Rv ciBvZlxuXCAtdHlwZQ0KPiA+PiA+PiA+IEB2YXJ7dmVjdHlwZX0uXG5cIC1cblwgLVJldHVybiB0 cnVlIGlmIHRoZSBvcGVyYXRpb24gaXMNCj4gPj4gPj4gPiBwb3NzaWJsZSwgZW1pdHRpbmcgaW5z dHJ1Y3Rpb25zIGZvciBpdFxuXCAtaWYgcnR4ZXMgYXJlIHByb3ZpZGVkDQo+ID4+ID4+ID4gYW5k IHVwZGF0aW5nIEB2YXJ7b3V0cHV0fS4iLA0KPiA+PiA+PiA+IC0gYm9vbCwgKGVudW0gdHJlZV9j b2RlLCB0cmVlIHZlY3R5cGUsIHdpZGVfaW50IGNvbnN0YW50LCBydHggKm91dHB1dCwNCj4gPj4g Pj4gPiAtCXJ0eCBpbjAsIHJ0eCBpbjEpLA0KPiA+PiA+PiA+IC0gZGVmYXVsdF9jYW5fc3BlY2lh bF9kaXZfYnlfY29uc3QpDQo+ID4+ID4+ID4gLQ0KPiA+PiA+PiA+ICAvKiBSZXR1cm4gdHJ1ZSBp ZiB0aGUgdGFyZ2V0IHN1cHBvcnRzIG1pc2FsaWduZWQgc3RvcmUvbG9hZCBvZiBhDQo+ID4+ID4+ ID4gICAgIHNwZWNpZmljIGZhY3RvciBkZW5vdGVkIGluIHRoZSB0aGlyZCBwYXJhbWV0ZXIuICBU aGUgbGFzdCBwYXJhbWV0ZXINCj4gPj4gPj4gPiAgICAgaXMgdHJ1ZSBpZiB0aGUgYWNjZXNzIGlz IGRlZmluZWQgaW4gYSBwYWNrZWQgc3RydWN0LiAgKi8NCj4gPj4gPj4gPiBkaWZmIC0tZ2l0IGEv Z2NjL3RhcmdldC5oIGIvZ2NjL3RhcmdldC5oIGluZGV4DQo+ID4+ID4+ID4NCj4gPj4gPj4NCj4g Pj4NCj4gMDNmZDAzYTUyMDc1YjQ4MzYxNTkwMzVlYzE0MDc4YzBhZWJkZDdlOS4uOTM2OTE4ODI3 NTcyMzJjNTE0ZmMNCj4gPj4gYTgyYjkNCj4gPj4gPj4gOWY5DQo+ID4+ID4+ID4gMTMxNThjMmQ0 N2IxIDEwMDY0NA0KPiA+PiA+PiA+IC0tLSBhL2djYy90YXJnZXQuaA0KPiA+PiA+PiA+ICsrKyBi L2djYy90YXJnZXQuaA0KPiA+PiA+PiA+IEBAIC01MSw3ICs1MSw2IEBADQo+ID4+ID4+ID4gICNp bmNsdWRlICJpbnNuLWNvZGVzLmgiDQo+ID4+ID4+ID4gICNpbmNsdWRlICJ0bS5oIg0KPiA+PiA+ PiA+ICAjaW5jbHVkZSAiaGFyZC1yZWctc2V0LmgiDQo+ID4+ID4+ID4gLSNpbmNsdWRlICJ0cmVl LWNvcmUuaCINCj4gPj4gPj4gPg0KPiA+PiA+PiA+ICAjaWYgQ0hFQ0tJTkdfUA0KPiA+PiA+PiA+ DQo+ID4+ID4+ID4gZGlmZiAtLWdpdCBhL2djYy90YXJnaG9va3MuaCBiL2djYy90YXJnaG9va3Mu aCBpbmRleA0KPiA+PiA+PiA+DQo+ID4+ID4+DQo+ID4+DQo+IGExZGYyNjBmNTQ4M2RjODRmMThk OGYxMmM1MjAyNDg0YTMyZDViYjcuLmE2YTQ4MDljYTkxYmFhNWQ3ZmFkMg0KPiA+PiAyNDQ1NA0K PiA+PiA+PiA5Mw0KPiA+PiA+PiA+IDE3YTMxMzkwZjBjMiAxMDA2NDQNCj4gPj4gPj4gPiAtLS0g YS9nY2MvdGFyZ2hvb2tzLmgNCj4gPj4gPj4gPiArKysgYi9nY2MvdGFyZ2hvb2tzLmgNCj4gPj4g Pj4gPiBAQCAtMjA5LDggKzIwOSw2IEBAIGV4dGVybiB2b2lkDQo+ID4+ID4+ID4gZGVmYXVsdF9h ZGRyX3NwYWNlX2RpYWdub3NlX3VzYWdlIChhZGRyX3NwYWNlX3QsIGxvY2F0aW9uX3QpOw0KPiA+ PiA+PiA+IGV4dGVybiBydHggZGVmYXVsdF9hZGRyX3NwYWNlX2NvbnZlcnQgKHJ0eCwgdHJlZSwg dHJlZSk7ICBleHRlcm4NCj4gPj4gPj4gPiB1bnNpZ25lZCBpbnQgZGVmYXVsdF9jYXNlX3ZhbHVl c190aHJlc2hvbGQgKHZvaWQpOyAgZXh0ZXJuIGJvb2wNCj4gPj4gPj4gPiBkZWZhdWx0X2hhdmVf Y29uZGl0aW9uYWxfZXhlY3V0aW9uICh2b2lkKTsgLWV4dGVybiBib29sDQo+ID4+ID4+ID4gZGVm YXVsdF9jYW5fc3BlY2lhbF9kaXZfYnlfY29uc3QgKGVudW0gdHJlZV9jb2RlLCB0cmVlLA0KPiA+ PiA+PiB3aWRlX2ludCwNCj4gPj4gPj4gPiAtCQkJCQkgICAgICBydHggKiwgcnR4LCBydHgpOw0K PiA+PiA+PiA+DQo+ID4+ID4+ID4gIGV4dGVybiBib29sIGRlZmF1bHRfbGliY19oYXNfZnVuY3Rp b24gKGVudW0gZnVuY3Rpb25fY2xhc3MsDQo+ID4+ID4+ID4gdHJlZSk7IGV4dGVybiBib29sIGRl ZmF1bHRfbGliY19oYXNfZmFzdF9mdW5jdGlvbiAoaW50IGZjb2RlKTsNCj4gPj4gPj4gPiBkaWZm IC0tZ2l0IGEvZ2NjL3Rhcmdob29rcy5jYyBiL2djYy90YXJnaG9va3MuY2MgaW5kZXgNCj4gPj4g Pj4gPg0KPiA+PiA+Pg0KPiA+Pg0KPiBmZTAxMTY1MjFmZWFmMzIxODdlN2JjMTEzYmY5M2IxODA1 ODUyYzc5Li4yMTE1MjU3MjBhNjIwZDZmNTMzZTINCj4gPj4gZGE5MWUNCj4gPj4gPj4gMDMNCj4g Pj4gPj4gPiA4NzczMzdhOTMxZTcgMTAwNjQ0DQo+ID4+ID4+ID4gLS0tIGEvZ2NjL3Rhcmdob29r cy5jYw0KPiA+PiA+PiA+ICsrKyBiL2djYy90YXJnaG9va3MuY2MNCj4gPj4gPj4gPiBAQCAtMTg0 MCwxNCArMTg0MCw2IEBAIGRlZmF1bHRfaGF2ZV9jb25kaXRpb25hbF9leGVjdXRpb24NCj4gKHZv aWQpDQo+ID4+ID4+ID4gICAgcmV0dXJuIEhBVkVfY29uZGl0aW9uYWxfZXhlY3V0aW9uOyAgfQ0K PiA+PiA+PiA+DQo+ID4+ID4+ID4gLS8qIERlZmF1bHQgdGhhdCBubyBkaXZpc2lvbiBieSBjb25z dGFudCBvcGVyYXRpb25zIGFyZSBzcGVjaWFsLg0KPiA+PiA+PiA+ICovIC1ib29sIC1kZWZhdWx0 X2Nhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCAoZW51bSB0cmVlX2NvZGUsDQo+ID4+ID4+ID4gdHJl ZSwgd2lkZV9pbnQsIHJ0eCAqLCBydHgsDQo+ID4+ID4+ID4gLQkJCQkgIHJ0eCkNCj4gPj4gPj4g PiAtew0KPiA+PiA+PiA+IC0gIHJldHVybiBmYWxzZTsNCj4gPj4gPj4gPiAtfQ0KPiA+PiA+PiA+ IC0NCj4gPj4gPj4gPiAgLyogQnkgZGVmYXVsdCB3ZSBhc3N1bWUgdGhhdCBjOTkgZnVuY3Rpb25z IGFyZSBwcmVzZW50IGF0IHRoZSBydW50aW1lLA0KPiA+PiA+PiA+ICAgICBidXQgc2luY29zIGlz IG5vdC4gICovDQo+ID4+ID4+ID4gIGJvb2wNCj4gPj4gPj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNrLTQuYw0KPiA+PiA+PiA+IGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNrLTQuYw0KPiA+PiA+PiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+ID4+ID4gaW5kZXgNCj4gPj4gPj4gPg0KPiA+PiA+Pg0K PiA+Pg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODFmODk0 NjkyMjI1MDIzNGINCj4gPj4gZjc1OWUwYTANCj4gPj4gPj4gYTANCj4gPj4gPj4gPiA0ZWE4YzFm NzNlM2MNCj4gPj4gPj4gPiAtLS0gL2Rldi9udWxsDQo+ID4+ID4+ID4gKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNrLTQuYw0KPiA+PiA+PiA+IEBAIC0wLDAg KzEsMjUgQEANCj4gPj4gPj4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVj dF9pbnQgfSAqLw0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArI2luY2x1ZGUgPHN0ZGludC5oPg0K PiA+PiA+PiA+ICsjaW5jbHVkZSAidHJlZS12ZWN0LmgiDQo+ID4+ID4+ID4gKw0KPiA+PiA+PiA+ ICt0eXBlZGVmIHVuc2lnbmVkIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3NpemVfXyAoMTYpKSkg VjsNCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKChfX25vaW5s aW5lX18pKQ0KPiA+PiA+PiA+ICtfX2F0dHJpYnV0ZV9fKChfX25vY2xvbmVfXykpIFYgZm9vIChW IHYsIHVuc2lnbmVkIHNob3J0IGkpIHsNCj4gPj4gPj4gPiArICB2IC89IGk7DQo+ID4+ID4+ID4g KyAgcmV0dXJuIHY7DQo+ID4+ID4+ID4gK30NCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gK2ludA0K PiA+PiA+PiA+ICttYWluICh2b2lkKQ0KPiA+PiA+PiA+ICt7DQo+ID4+ID4+ID4gKyAgViB2ID0g Zm9vICgoVikgeyAweGZmZmZmZmZmLCAweGZmZmZmZmZmLCAweGZmZmZmZmZmLA0KPiA+PiA+PiA+ ICsweGZmZmZmZmZmIH0sIDB4ZmZmZik7DQo+ID4+ID4+ID4gKyAgZm9yICh1bnNpZ25lZCBpID0g MDsgaSA8IHNpemVvZiAodikgLyBzaXplb2YgKHZbMF0pOyBpKyspDQo+ID4+ID4+ID4gKyAgICBp ZiAodltpXSAhPSAweDAwMDEwMDAxKQ0KPiA+PiA+PiA+ICsgICAgICBfX2J1aWx0aW5fYWJvcnQg KCk7DQo+ID4+ID4+ID4gKyAgcmV0dXJuIDA7DQo+ID4+ID4+ID4gK30NCj4gPj4gPj4gPiArDQo+ ID4+ID4+ID4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgInZlY3RfcmVjb2df ZGl2bW9kX3BhdHRlcm46DQo+ID4+ID4+ID4gK2RldGVjdGVkIiAidmVjdCIgeyB0YXJnZXQgYWFy Y2g2NCotKi0qIH0gfSB9ICovDQo+ID4+ID4+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3ZlY3QvdmVjdC1kaXYtYml0bWFzay01LmMNCj4gPj4gPj4gPiBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3ZlY3QvdmVjdC1kaXYtYml0bWFzay01LmMNCj4gPj4gPj4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+PiA+PiA+IGluZGV4DQo+ID4+ID4+ID4NCj4gPj4gPj4NCj4gPj4NCj4g MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRlYjFhNGRhY2JhNDgx ZTYzDQo+ID4+IDA2YjQ5OTENCj4gPj4gPj4gNGQyDQo+ID4+ID4+ID4gYTI5YjkzM2RlNjI1DQo+ ID4+ID4+ID4gLS0tIC9kZXYvbnVsbA0KPiA+PiA+PiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3ZlY3QvdmVjdC1kaXYtYml0bWFzay01LmMNCj4gPj4gPj4gPiBAQCAtMCwwICsxLDU4IEBA DQo+ID4+ID4+ID4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0g Ki8NCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gPj4gPj4g PiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ID4+ID4+ID4gKyNpbmNsdWRlICJ0cmVlLXZlY3QuaCIN Cj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gKyNkZWZpbmUgTiA1MA0KPiA+PiA+PiA+ICsjZGVmaW5l IFRZUEUgdWludDhfdA0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArI2lmbmRlZiBERUJVRw0KPiA+ PiA+PiA+ICsjZGVmaW5lIERFQlVHIDANCj4gPj4gPj4gPiArI2VuZGlmDQo+ID4+ID4+ID4gKw0K PiA+PiA+PiA+ICsjZGVmaW5lIEJBU0UgKChUWVBFKSAtMSA8IDAgPyAtMTI2IDogNCkNCj4gPj4g Pj4gPiArDQo+ID4+ID4+ID4gKw0KPiA+PiA+PiA+ICtfX2F0dHJpYnV0ZV9fKChub2lwYSwgbm9p bmxpbmUsIG9wdGltaXplKCJPMSIpKSkgdm9pZA0KPiA+PiA+PiA+ICtmdW4xKFRZUEUqIHJlc3Ry aWN0IHBpeGVsLCBUWVBFIGxldmVsLCBpbnQgbikgew0KPiA+PiA+PiA+ICsgIGZvciAoaW50IGkg PSAwOyBpIDwgbjsgaSs9MSkNCj4gPj4gPj4gPiArICAgIHBpeGVsW2ldID0gKHBpeGVsW2ldICsg bGV2ZWwpIC8gMHhmZjsgfQ0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArX19hdHRyaWJ1dGVfXygo bm9pcGEsIG5vaW5saW5lLCBvcHRpbWl6ZSgiTzMiKSkpIHZvaWQNCj4gPj4gPj4gPiArZnVuMihU WVBFKiByZXN0cmljdCBwaXhlbCwgVFlQRSBsZXZlbCwgaW50IG4pIHsNCj4gPj4gPj4gPiArICBm b3IgKGludCBpID0gMDsgaSA8IG47IGkrPTEpDQo+ID4+ID4+ID4gKyAgICBwaXhlbFtpXSA9IChw aXhlbFtpXSArIGxldmVsKSAvIDB4ZmY7IH0NCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gK2ludCBt YWluICgpDQo+ID4+ID4+ID4gK3sNCj4gPj4gPj4gPiArICBUWVBFIGFbTl07DQo+ID4+ID4+ID4g KyAgVFlQRSBiW05dOw0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArICBmb3IgKGludCBpID0gMDsg aSA8IE47ICsraSkNCj4gPj4gPj4gPiArICAgIHsNCj4gPj4gPj4gPiArICAgICAgYVtpXSA9IEJB U0UgKyBpICogMTM7DQo+ID4+ID4+ID4gKyAgICAgIGJbaV0gPSBCQVNFICsgaSAqIDEzOw0KPiA+ PiA+PiA+ICsgICAgICBpZiAoREVCVUcpDQo+ID4+ID4+ID4gKyAgICAgICAgcHJpbnRmICgiJWQ6 IDB4JXhcbiIsIGksIGFbaV0pOw0KPiA+PiA+PiA+ICsgICAgfQ0KPiA+PiA+PiA+ICsNCj4gPj4g Pj4gPiArICBmdW4xIChhLCBOIC8gMiwgTik7DQo+ID4+ID4+ID4gKyAgZnVuMiAoYiwgTiAvIDIs IE4pOw0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsr aSkNCj4gPj4gPj4gPiArICAgIHsNCj4gPj4gPj4gPiArICAgICAgaWYgKERFQlVHKQ0KPiA+PiA+ PiA+ICsgICAgICAgIHByaW50ZiAoIiVkID0gMHgleCA9PSAweCV4XG4iLCBpLCBhW2ldLCBiW2ld KTsNCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gKyAgICAgIGlmIChhW2ldICE9IGJbaV0pDQo+ID4+ ID4+ID4gKyAgICAgICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiA+PiA+PiA+ICsgICAgfQ0KPiA+ PiA+PiA+ICsgIHJldHVybiAwOw0KPiA+PiA+PiA+ICt9DQo+ID4+ID4+ID4gKw0KPiA+PiA+PiA+ ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImRpdm1vZCBwYXR0ZXJuIHJlY29nbml6 ZWQiICJ2ZWN0Ig0KPiA+PiA+PiA+ICt7IHRhcmdldCBhYXJjaDY0Ki0qLSogfSB9IH0gKi8NCj4g Pj4gPj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1nZW5lcmljLmNjIGIvZ2NjL3RyZWUt dmVjdC1nZW5lcmljLmNjDQo+ID4+ID4+ID4gaW5kZXgNCj4gPj4gPj4gPg0KPiA+PiA+Pg0KPiA+ Pg0KPiAxNjZhMjQ4ZjRiOTUxMmQ0YzZmYzhkNzYwYjQ1OGI3YTQ2N2Y3NzkwLi41MTlhODI0ZWM3 MjdkNGQ0ZjI4Yw0KPiA+PiAxNDA3N2QNCj4gPj4gPj4gYzMNCj4gPj4gPj4gPiBlOTcwYmVkNzVl ZjYgMTAwNjQ0DQo+ID4+ID4+ID4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1nZW5lcmljLmNjDQo+ID4+ ID4+ID4gKysrIGIvZ2NjL3RyZWUtdmVjdC1nZW5lcmljLmNjDQo+ID4+ID4+ID4gQEAgLTEyMzcs MTcgKzEyMzcsNiBAQCBleHBhbmRfdmVjdG9yX29wZXJhdGlvbg0KPiA+PiA+PiAoZ2ltcGxlX3N0 bXRfaXRlcmF0b3IgKmdzaSwgdHJlZSB0eXBlLCB0cmVlIGNvbXB1dGVfdHlwZQ0KPiA+PiA+PiA+ ICAJICB0cmVlIHJoczIgPSBnaW1wbGVfYXNzaWduX3JoczIgKGFzc2lnbik7DQo+ID4+ID4+ID4g IAkgIHRyZWUgcmV0Ow0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gLQkgIC8qIENoZWNrIGlmIHRoZSB0 YXJnZXQgd2FzIGdvaW5nIHRvIGhhbmRsZSBpdCB0aHJvdWdoIHRoZQ0KPiBzcGVjaWFsDQo+ID4+ ID4+ID4gLQkgICAgIGRpdmlzaW9uIGNhbGxiYWNrIGhvb2suICAqLw0KPiA+PiA+PiA+IC0JICB0 cmVlIGNzdCA9IHVuaWZvcm1faW50ZWdlcl9jc3RfcCAocmhzMik7DQo+ID4+ID4+ID4gLQkgIGlm IChjc3QgJiYNCj4gPj4gPj4gPiAtCSAgICAgIHRhcmdldG0udmVjdG9yaXplLmNhbl9zcGVjaWFs X2Rpdl9ieV9jb25zdCAoY29kZSwgdHlwZSwNCj4gPj4gPj4gPiAtCQkJCQkJCSAgd2k6OnRvX3dp ZGUNCj4gKGNzdCksDQo+ID4+ID4+ID4gLQkJCQkJCQkgIE5VTEwsDQo+ID4+ID4+ID4gLQkJCQkJ CQkgIE5VTExfUlRYLA0KPiA+PiA+PiBOVUxMX1JUWCkpDQo+ID4+ID4+ID4gLQkgICAgcmV0dXJu IE5VTExfVFJFRTsNCj4gPj4gPj4gPiAtDQo+ID4+ID4+ID4gLQ0KPiA+PiA+PiA+ICAJICBpZiAo IW9wdGltaXplDQo+ID4+ID4+ID4gIAkgICAgICB8fCAhVkVDVE9SX0lOVEVHRVJfVFlQRV9QICh0 eXBlKQ0KPiA+PiA+PiA+ICAJICAgICAgfHwgVFJFRV9DT0RFIChyaHMyKSAhPSBWRUNUT1JfQ1NU IGRpZmYgLS1naXQNCj4gPj4gPj4gPiBhL2djYy90cmVlLXZlY3QtcGF0dGVybnMuY2MgYi9nY2Mv dHJlZS12ZWN0LXBhdHRlcm5zLmNjIGluZGV4DQo+ID4+ID4+ID4NCj4gPj4gPj4NCj4gPj4NCj4g NjkzNGFlYmM2OWYyMzFhZjI0NjY4ZjBhMWMzZDE0MGU5N2Y1NTQ4Ny4uZTM5ZDdlNmIzNjJlZjQ0 ZWIyZmM0Ng0KPiA+PiA3ZjMzDQo+ID4+ID4+IDY5DQo+ID4+ID4+ID4gZGUyYWZlYTEzOWQ2IDEw MDY0NA0KPiA+PiA+PiA+IC0tLSBhL2djYy90cmVlLXZlY3QtcGF0dGVybnMuY2MNCj4gPj4gPj4g PiArKysgYi9nY2MvdHJlZS12ZWN0LXBhdHRlcm5zLmNjDQo+ID4+ID4+ID4gQEAgLTM5MTQsMTIg KzM5MTQsODIgQEAgdmVjdF9yZWNvZ19kaXZtb2RfcGF0dGVybiAodmVjX2luZm8NCj4gPj4gKnZp bmZvLA0KPiA+PiA+PiA+ICAgICAgICByZXR1cm4gcGF0dGVybl9zdG10Ow0KPiA+PiA+PiA+ICAg ICAgfQ0KPiA+PiA+PiA+ICAgIGVsc2UgaWYgKChjc3QgPSB1bmlmb3JtX2ludGVnZXJfY3N0X3Ag KG9wcm5kMSkpDQo+ID4+ID4+ID4gLQkgICAmJiB0YXJnZXRtLnZlY3Rvcml6ZS5jYW5fc3BlY2lh bF9kaXZfYnlfY29uc3QgKHJoc19jb2RlLA0KPiA+PiA+PiB2ZWN0eXBlLA0KPiA+PiA+PiA+IC0J CQkJCQkJICB3aTo6dG9fd2lkZQ0KPiAoY3N0KSwNCj4gPj4gPj4gPiAtCQkJCQkJCSAgTlVMTCwN Cj4gTlVMTF9SVFgsDQo+ID4+ID4+ID4gLQkJCQkJCQkgIE5VTExfUlRYKSkNCj4gPj4gPj4gPiAr CSAgICYmIFRZUEVfVU5TSUdORUQgKGl0eXBlKQ0KPiA+PiA+PiA+ICsJICAgJiYgcmhzX2NvZGUg PT0gVFJVTkNfRElWX0VYUFINCj4gPj4gPj4gPiArCSAgICYmIHZlY3R5cGUNCj4gPj4gPj4gPiAr CSAgICYmIGRpcmVjdF9pbnRlcm5hbF9mbl9zdXBwb3J0ZWRfcCAoSUZOX0FEREgsIHZlY3R5cGUs DQo+ID4+ID4+ID4gKwkJCQkJICAgICAgT1BUSU1JWkVfRk9SX1NQRUVEKSkNCj4gPj4gPj4gPiAg ICAgIHsNCj4gPj4gPj4gPiAtICAgICAgcmV0dXJuIE5VTEw7DQo+ID4+ID4+ID4gKyAgICAgIC8q IGRpdiBvcHRpbWl6YXRpb25zIHVzaW5nIG5hcnJvd2luZ3MNCj4gPj4gPj4gPiArICAgICAgIHdl IGNhbiBkbyB0aGUgZGl2aXNpb24gZS5nLiBzaG9ydHMgYnkgMjU1IGZhc3RlciBieSBjYWxjdWxh dGluZyBpdCBhcw0KPiA+PiA+PiA+ICsgICAgICAgKHggKyAoKHggKyAyNTcpID4+IDgpKSA+PiA4 IGFzc3VtaW5nIHRoZSBvcGVyYXRpb24gaXMgZG9uZSBpbg0KPiA+PiA+PiA+ICsgICAgICAgZG91 YmxlIHRoZSBwcmVjaXNpb24gb2YgeC4NCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gKyAgICAgICBJ ZiB3ZSBpbWFnaW5lIGEgc2hvcnQgYXMgYmVpbmcgY29tcG9zZWQgb2YgdHdvIGJsb2NrcyBvZiBi eXRlcw0KPiB0aGVuDQo+ID4+ID4+ID4gKyAgICAgICBhZGRpbmcgMjU3IG9yIDBiMDAwMF8wMDAx XzAwMDBfMDAwMSB0byB0aGUgbnVtYmVyIGlzDQo+ID4+IGVxdWl2YWxlbnQgdG8NCj4gPj4gPj4g PiArICAgICAgIGFkZGluZyAxIHRvIGVhY2ggc3ViIGNvbXBvbmVudDoNCj4gPj4gPj4gPiArDQo+ ID4+ID4+ID4gKwkgICAgc2hvcnQgdmFsdWUgb2YgMTYtYml0cw0KPiA+PiA+PiA+ICsgICAgICAg 4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQDQo+ID4+ID4+ID4gKyAg ICAgICDilIIgICAgICAgICAgICAgIOKUgiAgICAgICAgICAgICAgICDilIINCj4gPj4gPj4gPiAr ICAgICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmA0KPiA+PiA+ PiA+ICsJIDgtYml0IHBhcnQxIOKWsiAgOC1iaXQgcGFydDIgICDilrINCj4gPj4gPj4gPiArCQkg ICAgIOKUgiAgICAgICAgICAgICAgICDilIINCj4gPj4gPj4gPiArCQkgICAgIOKUgiAgICAgICAg ICAgICAgICDilIINCj4gPj4gPj4gPiArCQkgICAgKzEgICAgICAgICAgICAgICArMQ0KPiA+PiA+ PiA+ICsNCj4gPj4gPj4gPiArICAgICAgIGFmdGVyIHRoZSBmaXJzdCBhZGRpdGlvbiwgd2UgaGF2 ZSB0byBzaGlmdCByaWdodCBieSA4LCBhbmQgbmFycm93IHRoZQ0KPiA+PiA+PiA+ICsgICAgICAg cmVzdWx0cyBiYWNrIHRvIGEgYnl0ZS4gIFJlbWVtYmVyIHRoYXQgdGhlIGFkZGl0aW9uIG11c3Qg YmUgZG9uZQ0KPiBpbg0KPiA+PiA+PiA+ICsgICAgICAgZG91YmxlIHRoZSBwcmVjaXNpb24gb2Yg dGhlIGlucHV0LiAgSG93ZXZlciBpZiB3ZSBrbm93DQo+ID4+ID4+ID4gKyB0aGF0IHRoZQ0KPiA+ PiA+PiBhZGRpdGlvbg0KPiA+PiA+PiA+ICsgICAgICAgYHggKyAyNTdgIGRvZXMgbm90IG92ZXJm bG93IHRoZW4gd2UgY2FuIGRvIHRoZSBvcGVyYXRpb24NCj4gPj4gPj4gPiArIGluIHRoZQ0KPiA+ PiA+PiBjdXJyZW50DQo+ID4+ID4+ID4gKyAgICAgICBwcmVjaXNpb24uICBJbiB3aGljaCBjYXNl IHdlIGRvbid0IG5lZWQgdGhlIHBhY2sgYW5kIHVucGFja3MuICAqLw0KPiA+PiA+PiA+ICsgICAg ICBhdXRvIHdjc3QgPSB3aTo6dG9fd2lkZSAoY3N0KTsNCj4gPj4gPj4gPiArICAgICAgaW50IHBv dyA9IHdpOjpleGFjdF9sb2cyICh3Y3N0ICsgMSk7DQo+ID4+ID4+ID4gKyAgICAgIGlmIChwb3cg PT0gKGludCkgKGVsZW1lbnRfcHJlY2lzaW9uICh2ZWN0eXBlKSAvIDIpKQ0KPiA+PiA+PiA+ICsJ ew0KPiA+PiA+PiA+ICsJICB3aWRlX2ludCBtaW4sbWF4Ow0KPiA+PiA+PiA+ICsJICAvKiBJZiB3 ZSdyZSBpbiBhIHBhdHRlcm4gd2UgbmVlZCB0byBmaW5kIHRoZSBvcmdpbmFsIGRlZmluaXRpb24u DQo+ICovDQo+ID4+ID4+ID4gKwkgIHRyZWUgb3AwID0gb3BybmQwOw0KPiA+PiA+PiA+ICsJICBn aW1wbGUgKnN0bXQgPSBTU0FfTkFNRV9ERUZfU1RNVCAob3BybmQwKTsNCj4gPj4gPj4gPiArCSAg c3RtdF92ZWNfaW5mbyBzdG10X2luZm8gPSB2aW5mby0+bG9va3VwX3N0bXQgKHN0bXQpOw0KPiA+ PiA+PiA+ICsJICBpZiAoaXNfcGF0dGVybl9zdG10X3AgKHN0bXRfaW5mbykpDQo+ID4+ID4+ID4g KwkgICAgew0KPiA+PiA+PiA+ICsJICAgICAgYXV0byBvcmlnX3N0bXQgPSBTVE1UX1ZJTkZPX1JF TEFURURfU1RNVA0KPiAoc3RtdF9pbmZvKTsNCj4gPj4gPj4gPiArCSAgICAgIGlmIChpc19naW1w bGVfYXNzaWduIChTVE1UX1ZJTkZPX1NUTVQgKG9yaWdfc3RtdCkpKQ0KPiA+PiA+PiA+ICsJCW9w MCA9IGdpbXBsZV9hc3NpZ25fbGhzIChTVE1UX1ZJTkZPX1NUTVQNCj4gKG9yaWdfc3RtdCkpOw0K PiA+PiA+PiA+ICsJICAgIH0NCj4gPj4gPj4NCj4gPj4gPj4gSWYgdGhpcyBpcyBnZW5lcmFsbHkg c2FmZSAoSSdtIHNraXBwaW5nIHRoaW5raW5nIGFib3V0IGl0IGluIHRoZQ0KPiA+PiA+PiBpbnRl cmVzdHMgb2YgYSBxdWljayByZXZpZXcgOi0pKSwgdGhlbiBJIHRoaW5rIGl0IHNob3VsZCBiZSBk b25lDQo+ID4+ID4+IGluIHZlY3RfZ2V0X3JhbmdlX2luZm8gaW5zdGVhZC4gIFVzaW5nIGdpbXBs ZV9nZXRfbGhzIHdvdWxkIGJlDQo+ID4+ID4+IG1vcmUgZ2VuZXJhbCB0aGFuIGhhbmRsaW5nIGp1 c3QgYXNzaWdubWVudHMuDQo+ID4+ID4+DQo+ID4+ID4+ID4gKw0KPiA+PiA+PiA+ICsJICAvKiBD aGVjayB0aGF0IG5vIG92ZXJmbG93IHdpbGwgb2NjdXIuICBJZiB3ZSBkb24ndCBoYXZlIHJhbmdl DQo+ID4+ID4+ID4gKwkgICAgIGluZm9ybWF0aW9uIHdlIGNhbid0IHBlcmZvcm0gdGhlIG9wdGlt aXphdGlvbi4gICovDQo+ID4+ID4+ID4gKwkgIGlmICh2ZWN0X2dldF9yYW5nZV9pbmZvIChvcDAs ICZtaW4sICZtYXgpKQ0KPiA+PiA+PiA+ICsJICAgIHsNCj4gPj4gPj4gPiArCSAgICAgIHdpZGVf aW50IG9uZSA9IHdpOjp0b193aWRlIChidWlsZF9vbmVfY3N0IChpdHlwZSkpOw0KPiA+PiA+PiA+ ICsJICAgICAgd2lkZV9pbnQgYWRkZXIgPSB3aTo6YWRkIChvbmUsIHdpOjpsc2hpZnQgKG9uZSwg cG93KSk7DQo+ID4+ID4+ID4gKwkgICAgICB3aTo6b3ZlcmZsb3dfdHlwZSBvdmY7DQo+ID4+ID4+ ID4gKwkgICAgICAvKiBXZSBuZWVkIGFkZGVyIGFuZCBtYXggaW4gdGhlIHNhbWUgcHJlY2lzaW9u LiAgKi8NCj4gPj4gPj4gPiArCSAgICAgIHdpZGVfaW50IHphZGRlcg0KPiA+PiA+PiA+ICsJCT0g d2lkZV9pbnRfc3RvcmFnZTo6ZnJvbSAoYWRkZXIsIHdpOjpnZXRfcHJlY2lzaW9uDQo+IChtYXgp LA0KPiA+PiA+PiA+ICsJCQkJCSAgVU5TSUdORUQpOw0KPiA+PiA+PiA+ICsJICAgICAgd2k6OmFk ZCAobWF4LCB6YWRkZXIsIFVOU0lHTkVELCAmb3ZmKTsNCj4gPj4gPj4NCj4gPj4gPj4gQ291bGQg eW91IGV4cGxhaW4gdGhpcyBhIGJpdCBtb3JlPyAgV2hlbiBkbyB3ZSBoYXZlIG1pc21hdGNoZWQN Cj4gPj4gPj4gcHJlY2lzaW9ucz8NCj4gPj4gPg0KPiA+PiA+IEMgcHJvbW90aW9uIHJ1bGVzIHdp bGwgcHJvbW90ZSBlLmcuDQo+ID4+ID4NCj4gPj4gPiB2b2lkIGZ1bjIodWludDhfdCogcmVzdHJp Y3QgcGl4ZWwsIHVpbnQ4X3QgbGV2ZWwsIGludCBuKSB7DQo+ID4+ID4gICBmb3IgKGludCBpID0g MDsgaSA8IG47IGkrPTEpDQo+ID4+ID4gICAgIHBpeGVsW2ldID0gKHBpeGVsW2ldICsgbGV2ZWwp IC8gMHhmZjsgfQ0KPiA+PiA+DQo+ID4+ID4gQW5kIGhhdmUgdGhlIGFkZGl0aW9uIGJlIGRvbmUg YXMgYSAzMiBiaXQgaW50ZWdlci4gIFRoZSB2ZWN0b3JpemVyDQo+ID4+ID4gd2lsbCBkZW1vdGUg dGhpcyBkb3duIHRvIGEgc2hvcnQsIGJ1dCByYW5nZSBpbmZvcm1hdGlvbiBpcyBub3QNCj4gPj4g PiBzdG9yZWQgZm9yIHBhdHRlcm5zLiAgU28gSW4gdGhlIGFib3ZlIHRoZSByYW5nZSB3aWxsIGNv cnJlY3RseSBiZQ0KPiA+PiA+IDB4MWZlIGJ1dCB0aGUgcHJlY2lzaW9uIHdpbGwgYmUgdGhhdCBv ZiB0aGUgb3JpZ2luYWwgZXhwcmVzc2lvbiwgc28NCj4gPj4gPiAzMi4gIFRoaXMgd2lsbCBiZSBh IG1pc21hdGNoIHdpdGggaXR5cGUgd2hpY2ggaXMgZGVyaXZlZCBmcm9tIHRoZQ0KPiA+PiA+IHNp emUgdGhlIHZlY3Rvcml6ZXINCj4gPj4gd2lsbCBwZXJmb3JtIHRoZSBvcGVyYXRpb24gaW4uDQo+ ID4+ID4NCj4gPj4gPiBUaGFua3MsDQo+ID4+ID4gVGFtYXINCj4gPj4gPg0KPiA+PiA+Pg0KPiA+ PiA+PiBUaGFua3MsDQo+ID4+ID4+IFJpY2hhcmQNCj4gPj4gPj4NCj4gPj4gPj4gPiArCSAgICAg IGlmIChvdmYgPT0gd2k6Ok9WRl9OT05FKQ0KPiA+PiA+PiA+ICsJCXsNCj4gPj4gPj4gPiArCQkg ICp0eXBlX291dCA9IHZlY3R5cGU7DQo+ID4+ID4+ID4gKwkJICB0cmVlIHRhZGRlciA9IHdpZGVf aW50X3RvX3RyZWUgKGl0eXBlLCBhZGRlcik7DQo+ID4+ID4+ID4gKwkJICBnY2FsbCAqcGF0dDEN Cj4gPj4gPj4gPiArCQkgICAgPSBnaW1wbGVfYnVpbGRfY2FsbF9pbnRlcm5hbCAoSUZOX0FEREgs IDIsIG9wcm5kMCwNCj4gPj4gPj4gdGFkZGVyKTsNCj4gPj4gPj4gPiArCQkgIHRyZWUgbGhzID0g dmVjdF9yZWNvZ190ZW1wX3NzYV92YXIgKGl0eXBlLCBOVUxMKTsNCj4gPj4gPj4gPiArCQkgIGdp bXBsZV9jYWxsX3NldF9saHMgKHBhdHQxLCBsaHMpOw0KPiA+PiA+PiA+ICsJCSAgYXBwZW5kX3Bh dHRlcm5fZGVmX3NlcSAodmluZm8sIHN0bXRfdmluZm8sIHBhdHQxLA0KPiA+PiA+PiB2ZWN0eXBl KTsNCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gKwkJICBwYXR0ZXJuX3N0bXQNCj4gPj4gPj4gPiAr CQkgICAgPSBnaW1wbGVfYnVpbGRfY2FsbF9pbnRlcm5hbCAoSUZOX0FEREgsIDIsIG9wcm5kMCwN Cj4gbGhzKTsNCj4gPj4gPj4gPiArCQkgIGxocyA9IHZlY3RfcmVjb2dfdGVtcF9zc2FfdmFyIChp dHlwZSwgTlVMTCk7DQo+ID4+ID4+ID4gKwkJICBnaW1wbGVfY2FsbF9zZXRfbGhzIChwYXR0ZXJu X3N0bXQsIGxocyk7DQo+ID4+ID4+ID4gKw0KPiA+PiA+PiA+ICsJCSAgcmV0dXJuIHBhdHRlcm5f c3RtdDsNCj4gPj4gPj4gPiArCQl9DQo+ID4+ID4+ID4gKwkgICAgfQ0KPiA+PiA+PiA+ICsJfQ0K PiA+PiA+PiA+ICAgICAgfQ0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gICAgaWYgKHByZWMgPiBIT1NU X0JJVFNfUEVSX1dJREVfSU5UIGRpZmYgLS1naXQNCj4gPj4gPj4gPiBhL2djYy90cmVlLXZlY3Qt c3RtdHMuY2MgYi9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjIGluZGV4DQo+ID4+ID4+ID4NCj4gPj4g Pj4NCj4gPj4NCj4gZWI0Y2ExZjE4NGUzNzRkMTc3ZWI0M2Q1ZWI5M2FjZjZlNmE4ZmRlOS4uM2Ew ZmI1YWQ4OThhZDQyYzM4NjdmMA0KPiA+PiBiOTUNCj4gPj4gPj4gNjRmDQo+ID4+ID4+ID4gYzRl MDY2ZTUwMDgxIDEwMDY0NA0KPiA+PiA+PiA+IC0tLSBhL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MN Cj4gPj4gPj4gPiArKysgYi9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjDQo+ID4+ID4+ID4gQEAgLTYy NjMsMTUgKzYyNjMsNiBAQCB2ZWN0b3JpemFibGVfb3BlcmF0aW9uICh2ZWNfaW5mbyAqdmluZm8s DQo+ID4+ID4+ID4gIAl9DQo+ID4+ID4+ID4gICAgICAgIHRhcmdldF9zdXBwb3J0X3AgPSAob3B0 YWJfaGFuZGxlciAob3B0YWIsIHZlY19tb2RlKQ0KPiA+PiA+PiA+ICAJCQkgICE9IENPREVfRk9S X25vdGhpbmcpOw0KPiA+PiA+PiA+IC0gICAgICB0cmVlIGNzdDsNCj4gPj4gPj4gPiAtICAgICAg aWYgKCF0YXJnZXRfc3VwcG9ydF9wDQo+ID4+ID4+ID4gLQkgICYmIG9wMQ0KPiA+PiA+PiA+IC0J ICAmJiAoY3N0ID0gdW5pZm9ybV9pbnRlZ2VyX2NzdF9wIChvcDEpKSkNCj4gPj4gPj4gPiAtCXRh cmdldF9zdXBwb3J0X3ANCj4gPj4gPj4gPiAtCSAgPSB0YXJnZXRtLnZlY3Rvcml6ZS5jYW5fc3Bl Y2lhbF9kaXZfYnlfY29uc3QgKGNvZGUsDQo+IHZlY3R5cGUsDQo+ID4+ID4+ID4gLQkJCQkJCQl3 aTo6dG9fd2lkZQ0KPiAoY3N0KSwNCj4gPj4gPj4gPiAtCQkJCQkJCU5VTEwsDQo+IE5VTExfUlRY LA0KPiA+PiA+PiA+IC0JCQkJCQkJTlVMTF9SVFgpOw0KPiA+PiA+PiA+ICAgICAgfQ0KPiA+PiA+ PiA+DQo+ID4+ID4+ID4gICAgYm9vbCB1c2luZ19lbXVsYXRlZF92ZWN0b3JzX3AgPSB2ZWN0X2Vt dWxhdGVkX3ZlY3Rvcl9wDQo+ID4+ID4+ID4gKHZlY3R5cGUpOw0K