From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on2051.outbound.protection.outlook.com [40.107.8.51]) by sourceware.org (Postfix) with ESMTPS id B738E3858D28 for ; Fri, 10 Feb 2023 14:54:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B738E3858D28 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=Z4/2JdfEfheDXT0WXEE7qCxLqep6lhYr8uONorjb514=; b=6j+5u7+sM2f9oYBYOHbXj5YIZKPpbFFMGC5ryAkmiR/8B8E8el9Is4CqPfmbmXnh3KKLsNqCX5I9nGG0vTJcJ5cxpJkIotvurIEXdKdF+IpgubbV68J2dqzopu30ELmUuDdCeX/CE6TZrmBGaW9q8MFBZuUDio4SKZPo9IV6J80= Received: from DB6PR07CA0068.eurprd07.prod.outlook.com (2603:10a6:6:2a::30) by AS2PR08MB10109.eurprd08.prod.outlook.com (2603:10a6:20b:64c::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.17; Fri, 10 Feb 2023 14:54:54 +0000 Received: from DBAEUR03FT030.eop-EUR03.prod.protection.outlook.com (2603:10a6:6:2a:cafe::79) by DB6PR07CA0068.outlook.office365.com (2603:10a6:6:2a::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.18 via Frontend Transport; Fri, 10 Feb 2023 14:54:53 +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 DBAEUR03FT030.mail.protection.outlook.com (100.127.142.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.19 via Frontend Transport; Fri, 10 Feb 2023 14:54:53 +0000 Received: ("Tessian outbound 333ca28169fa:v132"); Fri, 10 Feb 2023 14:54:53 +0000 X-CR-MTA-TID: 64aa7808 Received: from 67be47183f19.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id D6F3BF8A-BED4-4701-8C06-1C66056A65FD.1; Fri, 10 Feb 2023 14:54:44 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 67be47183f19.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 10 Feb 2023 14:54:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kOhme6EDPGSty/12acnbSSFVOT7HoTX//A5R27ZpMjQUJj9UN/rejhvfltEzQdEM5UXoBmBFUWLc+G7t1Lcb/lucgEIz+mG16l2Wg4gGJf+SBrHcaFq7wtOZI4Pa+dVSjpsDpwRb9MdpJbi/p3hJCV8HqR43TRLsXbop36o04Qh0SKz/jNxyaDvodzCGZ0pbkaue3JYDThO7Tp6R0qUgaYRYOKpDkYMTAAmDcnsGCIgp7tLhPEDRuT0V4vBbzIJrC6JIjKmE4Q6iokgXM9yWTEIHdxIergMv4tkMsZFQ1QLLaM7B0XPy4dktzxcMgI6y7sGIP8ReldUEagU0WXFFlA== 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=Z4/2JdfEfheDXT0WXEE7qCxLqep6lhYr8uONorjb514=; b=XP2kTOf/zQjOeXPPacDlUBKF+xiSVCS2pz48XslTIWT9+9NAATClZ5zBa6Jmwwt7IvGjq6q7MGbSj/X9whLvsXrqybFjwiFiXrpe2m9XTrSKq9g0/Lwrh9GMIHtGo/cSUrU9rempiHW1/GDx7sSQMz/E/YyZ9dZhWO1kg6kXLC6igHUyV6S0c93AMybDHQs1jeK2WxR1TR/fem4T67F/O/dWdYbbGdmgEWkq4jn0e6aAYaDnn/UBv6ixQ/3qkL84E5z7HZT9im8CANIEoRsEXYoxz9+It9lHHMcEChKmdvJj9FGvhIXkIL6lpkKA9zKOnFpRWsuHIX78xj9FyeQr9w== 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=Z4/2JdfEfheDXT0WXEE7qCxLqep6lhYr8uONorjb514=; b=6j+5u7+sM2f9oYBYOHbXj5YIZKPpbFFMGC5ryAkmiR/8B8E8el9Is4CqPfmbmXnh3KKLsNqCX5I9nGG0vTJcJ5cxpJkIotvurIEXdKdF+IpgubbV68J2dqzopu30ELmUuDdCeX/CE6TZrmBGaW9q8MFBZuUDio4SKZPo9IV6J80= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by GV1PR08MB7732.eurprd08.prod.outlook.com (2603:10a6:150:53::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.18; Fri, 10 Feb 2023 14:54:40 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::8b7b:e3be:cccb:1936]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::8b7b:e3be:cccb:1936%6]) with mapi id 15.20.6086.021; Fri, 10 Feb 2023 14:54:40 +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/SYCPI4EDky3xQ0ADEnbFq7IMBSsgAABFlCAAA4mH4AABbyA Date: Fri, 10 Feb 2023 14:54:39 +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: EA15657DCC3228448993B19B8001DC5F.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_|GV1PR08MB7732:EE_|DBAEUR03FT030:EE_|AS2PR08MB10109:EE_ X-MS-Office365-Filtering-Correlation-Id: 8ae919a6-1f37-479a-a2cc-08db0b76c4d1 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: a9mEsu1ipa16rcf89amd/Ut65qieB0NT9wTbe+n+Bu06cuyAx6y6PBw7R3tIa6uQw+Bk1j0gk+FyY3fHzX7oZjzFg6g5MVvKalX+GWC5R79w/7NeYd+9ysMNo97wsxC/U7Nn6EpKHmuU/NWVlhIbUAe35jst44mM45egT8fY4XkwDV4K4wfKaQ7EiYGwvQfRNHXLdVcmXRmTUzfWPZwQQvKh3x3Me1JPpAyV+u/VOLl4zaM7GCvYm+2fwrxDe72Uck4iIgs35ZF1lwOTU0DwjypPM0sRSNREbUSXX+2xstk2uDvyQQRfx8Oz6NWrRlpr5oq0W2OeWBBxlIp104Ak/mv1Ke8+DPjCXv+zeSLV550b6jhd9x+XxQ2RxdV1ITf1fRAVXWLxoqBJFNbR266KCtAFy3om8g/6JSYZgSxj9tplW/vOksdBL5JkKky3C0n0ro3NVcUj4JqoF575jRlLgGcKMBBCsUSkD6QE7OdwAYp1V29dLka8Xx6E/UUIMSDMrcueUTKMla//oA57KuuOa0eWoJLe4Fu1hbn7iIhbUHhOZWRs48kgYvlP/v0AoWBWossWJlxWnE7XXQmG+ndsvyW95gtaVxh2IJzCYrE75pIAZlZggv/doqQg2lAjrbmAEEvscRtPWNW81nIb9TC2rfMCamOthfY4UrAxUTUKU2Y1BvFmbLtEz2ZfLg0/ZMKOeOzYHdSIbWJxvKWaiHHhMJsoekR8evT/N4J5vdkbWN+C9BrsJr/lrrIzTcGGQ8muKup6AKybzOJoYD6br/UdcQ== 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)(39860400002)(396003)(376002)(136003)(346002)(451199018)(316002)(6636002)(54906003)(38100700002)(122000001)(38070700005)(2906002)(86362001)(30864003)(8676002)(66946007)(66476007)(64756008)(66446008)(4326008)(33656002)(41300700001)(83380400001)(76116006)(5660300002)(6862004)(8936002)(52536014)(55016003)(71200400001)(66556008)(478600001)(84970400001)(7696005)(186003)(26005)(53546011)(6506007)(9686003)(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: GV1PR08MB7732 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: DBAEUR03FT030.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 07db4476-f384-4752-a4d6-08db0b76bc71 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OOUuk7u2AN7OfK37tR/c9Ys6iOFt8e0xyBeUE/0ZUG70CA/EVyNymF9qphKE+qTVNg73ROv90Na4yK4dJE6H26l4qJRauPg/x4S3XbI6RiVMhsP9I7xcgOP5H3KR3tumisTiuUkXB10eHPiGz0zuVT+/DwJ51TWNZC3trU1VD3vJAUht1scycEoImOus39X1Pv3ds6LT9FbaUhb67DZbI6Ig8FRc/7M0tuDPbk9vac96lJ5apltjMIJQfDIW+P8mV6SK+7q4+AU9XAoD10EdlN2CIFkZJ8XmiIBdHRaEnvAZXehrZm7DfPPVWam0lhP4sLq3Pk6oyUDCCyfW2ceSdxNd+d5QSzUc66elimelYgXJRJpQSLKL5Z1Kf3h7+HvBvbyJVWlgDskpN/snuz/NQYmEZ8a6RB5plJhLfB+pS6KJxJhUdhlZA6M+aDGfuZr+MxzcyEWEs6PGz+2hagUwLLiX4hNGjNUqerL1Q6h9q9Ttt0SPF0HthS9Lvb5OYEkaHCwXckqpxWTlN4vtx13Wgr0mGCvonKU8SYcvWpj0YNUnt8yd29G7IvqOHAoVC08/pzSTzPF55SCGfQVgddVl7Tk6IAkPNbUmgXv/bKqxGp9FG/7uEZajFhVbv8nBcMgE4d5QYdTqHoXS98wH6WWSZtk45pzsM2+crItVJAoh2fNti+U7wv2u/kSzwXgssrF/c46otuOe/MpxKffpl8STdpr8ZEP+v4I8Ix2lk6TfO9D/sJY3VigRVP+7KOEycWGWz5l7/4PPm/vQr2vPb7jEiQ== 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)(136003)(39860400002)(346002)(376002)(396003)(451199018)(40470700004)(36840700001)(46966006)(107886003)(82740400003)(6506007)(2906002)(70586007)(70206006)(356005)(33656002)(54906003)(6636002)(86362001)(316002)(40480700001)(41300700001)(8676002)(55016003)(82310400005)(36860700001)(7696005)(4326008)(478600001)(40460700003)(8936002)(81166007)(52536014)(5660300002)(84970400001)(186003)(336012)(9686003)(6862004)(26005)(47076005)(83380400001)(53546011)(30864003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2023 14:54:53.9020 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8ae919a6-1f37-479a-a2cc-08db0b76c4d1 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: DBAEUR03FT030.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB10109 X-Spam-Status: No, score=-10.8 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,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 cmljaGFyZC5zYW5kaWZvcmRAYXJtLmNvbT4NCj4gU2VudDogRnJpZGF5LCBGZWJydWFyeSAxMCwg MjAyMyAyOjMxIFBNDQo+IFRvOiBUYW1hciBDaHJpc3RpbmEgPFRhbWFyLkNocmlzdGluYUBhcm0u Y29tPg0KPiBDYzogVGFtYXIgQ2hyaXN0aW5hIHZpYSBHY2MtcGF0Y2hlcyA8Z2NjLXBhdGNoZXNA Z2NjLmdudS5vcmc+OyBuZA0KPiA8bmRAYXJtLmNvbT47IHJndWVudGhlckBzdXNlLmRlOyBqbGF3 QHZlbnRhbmFtaWNyby5jb20NCj4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzJdbWlkZGxlLWVuZDog Rml4IHdyb25nIG92ZXJtYXRjaGluZyBvZiBkaXYtYml0bWFzaw0KPiBieSB1c2luZyBuZXcgb3B0 YWJzIFtQUjEwODU4M10NCj4gDQo+IFRhbWFyIENocmlzdGluYSA8VGFtYXIuQ2hyaXN0aW5hQGFy bS5jb20+IHdyaXRlczoNCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJv bTogUmljaGFyZCBTYW5kaWZvcmQgPHJpY2hhcmQuc2FuZGlmb3JkQGFybS5jb20+DQo+ID4+IFNl bnQ6IEZyaWRheSwgRmVicnVhcnkgMTAsIDIwMjMgMTozNiBQTQ0KPiA+PiBUbzogVGFtYXIgQ2hy aXN0aW5hIHZpYSBHY2MtcGF0Y2hlcyA8Z2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc+DQo+ID4+IENj OiBUYW1hciBDaHJpc3RpbmEgPFRhbWFyLkNocmlzdGluYUBhcm0uY29tPjsgbmQgPG5kQGFybS5j b20+Ow0KPiA+PiByZ3VlbnRoZXJAc3VzZS5kZTsgamxhd0B2ZW50YW5hbWljcm8uY29tDQo+ID4+ IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS8yXW1pZGRsZS1lbmQ6IEZpeCB3cm9uZyBvdmVybWF0Y2hp bmcgb2YNCj4gPj4gZGl2LWJpdG1hc2sgYnkgdXNpbmcgbmV3IG9wdGFicyBbUFIxMDg1ODNdDQo+ ID4+DQo+ID4+IEkgdGhpbmsgSSdtIG1pc3VuZGVyc3RhbmRpbmcsIGJ1dDogaXQgc2VlbXMgbGlr ZSB3ZSdyZSB0cmVhdGluZyB0aGUNCj4gPj4gYWRkIGhpZ2hwYXJ0IG9wdGFicyBhcyBjb21wYW5p b25zIHRvIHRoZSBtdWwgaGlnaHBhcnQgb3B0YWJzLiAgQnV0DQo+ID4+IEFJVUksIHRoZSBhZGQg aGlnaHBhcnQgb3B0YWIgaXMgdXNlZCBzdWNoIHRoYXQsIGZvciBhbiBOLWJpdCBtb2RlLCB3ZQ0K PiA+PiBkbyBhbiBOLWJpdCBhZGRpdGlvbiBmb2xsb3dlZCBieSBhIHNoaWZ0IGJ5IE4vMi4gIElz IHRoYXQgcmlnaHQ/DQo+ID4+IFRoZSBtdWwgaGlnaHBhcnQgb3B0YWJzIGluc3RlYWQgZG8gYW4g Mk4tYml0IG11bHRpcGxpY2F0aW9uIGZvbGxvd2VkDQo+ID4+IGJ5IGEgc2hpZnQgYnkgTi4NCj4g Pg0KPiA+IENvcnJlY3QuDQo+ID4NCj4gPj4NCj4gPj4gQXBhcnQgZnJvbSBjb25zaXN0ZW5jeSwg dGhlIHJlYXNvbiB0aGlzIG1hdHRlcnMgaXM6IEknbSBub3Qgc3VyZSB3aGF0DQo+ID4+IHdlIGdh aW4gYnkgYWRkaW5nIHRoZSBvcHRhYiByYXRoZXIgdGhhbiBzaW1wbHkgb3Blbi1jb2RpbmcgdGhl DQo+ID4+IGFkZGl0aW9uIGFuZCB0aGUgc2hpZnQgZGlyZWN0bHkgaW50byB0aGUgdmVjdG9yIHBh dHRlcm4uICBJdCBzZWVtcw0KPiA+PiBsaWtlIHRoZSBBQXJjaDY0IGV4cGFuZGVyIGluDQo+ID4+ IDIvMiBkb2VzIGp1c3QgZG8gYW4gb3JkaW5hcnkgTi1iaXQgYWRkaXRpb24gZm9sbG93ZWQgYnkg YW4gb3JkaW5hcnkNCj4gPj4gc2hpZnQgYnkgTi8yLg0KPiA+DQo+ID4gSSBtZW50aW9uZWQgaW4g dGhlIGltcGxlbWVudGF0aW9uLCBidXQgSSBkaWQgc28gYmVjYXVzZSBBQXJjaDY0IGhhcw0KPiA+ IHZhcmlvdXMgb3B0aW1pemF0aW9uIG9uIHNoaWZ0cyB3aGVuIGl0IGNvbWVzIHRvIHRydW5jYXRp bmcgcmVzdWx0cy4gIEkNCj4gPiBkaWRuJ3QgbmVlZCB0byByZXByZXNlbnQgaXQgd2l0aCBzaGlm dHMsIGluIGZhY3QgdGhlIG9yaWdpbmFsIHBhdHRlcm4NCj4gPiBkaWQgbm90LiBCdXQgcmVwcmVz ZW50aW5nIGl0IGRpcmVjdGx5IGluIHRoZSBmaW5hbCBpbnN0cnVjdGlvbnMgYXJlDQo+ID4gcHJv YmxlbWF0aWMgYmVjYXVzZSB0aGVzZSBpbnN0cnVjdGlvbnMgYXJlIHVuc3BlY3MgYW5kIEkgd291 bGQgaGF2ZQ0KPiBuZWVkZWQgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIG9wdGFicyB0byBvcHRpbWl6 ZSB0aGVtIGluLg0KPiA+DQo+ID4gU28gdGhlIHNoaWZ0IHJlcHJlc2VudGF0aW9uIHdhcyBtb3Jl IG5hdHVyYWwgZm9yIEFBcmNoNjQuIEl0IHdvdWxkIG5vdA0KPiA+IGJlIHNheSBmb3INCj4gPiBB QXJjaDMyIHdoaWNoIGRvZXMgbm90IGhhdmUgdGhlc2Ugb3B0aW1pemF0aW9ucyBhbHJlYWR5LiBT VkUgaGFzDQo+ID4gc2ltaWxhciBvcHRpbWl6YXRpb25zIGFuZCBhdCB0aGUgdmVyeSB3b3JzZSB5 b3UgZ2V0IGFuIHVzcmEuDQo+ID4NCj4gPiBJIGF2b2lkZWQgb3BlbiBjb2RpbmcgaXQgd2l0aCBh ZGQgYW5kIHNoaWZ0IGJlY2F1c2UgaXQgY3JlYXRlcyBhIDQNCj4gPiBpbnN0cnVjdGlvbnMgKGFu ZCBzaGlmdHMgd2hpY2ggYXJlIHR5cGljYWxseSBzbG93KSBkZXBlbmRlbmN5IGNoYWluDQo+ID4g aW5zdGVhZCBvZiBhIGxvYWQgYW5kIG11bHRpcGx5LiAgVGhpcyBjaGFuZ2UsIHVubGVzcyB0aGUg dGFyZ2V0IGlzDQo+ID4ga25vd24gdG8gb3B0aW1pemUgaXQgZnVydGhlciBpcyB1bmxpa2VseSB0 byBiZSBiZW5lZmljaWFsLiAgQW5kIGJ5IHRoZQ0KPiA+IHRpbWUgd2UgZ2V0IHRvIGNvc3Rpbmcg dGhlIG9ubHkgYWx0ZXJuYXRpdmUgaXMgdG8gdW5kbyB0aGUgZXhpc3RpbmcgcGF0dGVybg0KPiBh bmQgc28geW91IGxvc2UgdGhlIGdlbmVyYWwgc2hpZnQgb3B0aW1pemF0aW9uLg0KPiA+DQo+ID4g U28gaXQgc2VlbWVkIHVud2lzZSB0byBvcGVuIGNvZGUgYXMgc2hpZnRzLCBnaXZlbiB0aGUgY29k ZWdlbiBvdXQgb2YNCj4gPiB0aGUgdmVjdG9yaXplciB3b3VsZCBiZSBkZWdlbmVyYXRlIGZvciBt b3N0IHRhcmdldHMgb3Igb25lIG5lZWRzIHRoZQ0KPiA+IG1vcmUgY29tcGxpY2F0ZWQgcm91dGUg b2YgY29zdGluZyBkdXJpbmcgcGF0dGVybiBtYXRjaGluZyBhbHJlYWR5Lg0KPiANCj4gSG1tLCBP Sy4gIFRoYXQgc2VlbXMgbGlrZSBhIGNvc3QtbW9kZWwgdGhpbmcgdGhvdWdoLCByYXRoZXIgdGhh biBzb21ldGhpbmcNCj4gdGhhdCBzaG91bGQgYmUgZXhwb3NlZCB0aHJvdWdoIG9wdGFicy4gIEFu ZCBJIGltYWdpbmUgdGhlIG9wZW4tY29kZWQNCj4gdmVyc2lvbiB3b3VsZCBzdGlsbCBiZSBiZXR0 ZXIgdGhhbiBub3RoaW5nIG9uIHRhcmdldHMgd2l0aG91dCBoaWdocGFydA0KPiBtdWx0aXBseS4N Cg0KWWVhaCBidXQgSSBkb24ndCB0aGluayB3ZSd2ZSBldmVyIGRvbmUgY29zdGluZyBvbiBwYXR0 ZXJucyBkdXJpbmcgbWF0Y2hpbmcuDQpJdCdzIGFsd2F5cyBiZWVuIGNvbW1pdCBhbmQgZ28gdW5k ZXIgdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgcmVwbGFjZW1lbnQNCklzIGFsd2F5cyBnb2luZyB0 byBiZSBjaGVhcGVyLg0KDQo+IA0KPiBTbyBob3cgYWJvdXQgcmVwbGFjaW5nIHRoZSBob29rIHdp dGggb25lIHRoYXQgc2ltcGx5IGFza3Mgd2hldGhlciBkaXZpc2lvbg0KPiB0aHJvdWdoIGhpZ2hw YXJ0IG11bHRpcGxpY2F0aW9uIGlzIHByZWZlcnJlZCBvdmVyIHRoZSBhZGQvc2hpZnQgc2VxdWVu Y2U/DQo+IChVbmZvcnR1bmF0ZWx5IGl0J3Mgbm90IGdvaW5nIHRvIGJlIHBvc3NpYmxlIHRvIHdv cmsgdGhhdCBvdXQgZnJvbSBleGlzdGluZw0KPiBpbmZvcm1hdGlvbi4pDQoNCklmIFJpY2hpIGhh cyBubyBvYmplY3Rpb25zIHRvIGl0IEkgY2FuIGRvIHRoYXQgaW5zdGVhZCB0aGVuLi4NCg0KSnVz dCB0byBjbGFyaWZ5LCBhcmUgeW91IHNhdGlzZmllZCB3aXRoIHRoZSBhbnN3ZXIgb24gdGhlIG1p eGVkIHByZWNpc2lvbnM/DQoNClRoYW5rcywNClRhbWFyDQoNCj4gDQo+IFRoYW5rcywNCj4gUmlj aGFyZA0KPiANCj4gPg0KPiA+Pg0KPiA+PiBTb21lIGNvbW1lbnRzIGluIGFkZGl0aW9uIHRvIFJp Y2hhcmQnczoNCj4gPj4NCj4gPj4gVGFtYXIgQ2hyaXN0aW5hIHZpYSBHY2MtcGF0Y2hlcyA8Z2Nj LXBhdGNoZXNAZ2NjLmdudS5vcmc+IHdyaXRlczoNCj4gPj4gPiBIaSBBbGwsDQo+ID4+ID4NCj4g Pj4gPiBBcyBkaXNjdXNzZWQgaW4gdGhlIHRpY2tldCwgdGhpcyByZXBsYWNlcyB0aGUgYXBwcm9h Y2ggZm9yDQo+ID4+ID4gb3B0aW1pemluZyB0aGUgZGl2IGJ5IGJpdG1hc2sgb3BlcmF0aW9uIGZy b20gYSBob29rIGludG8gb3B0YWJzDQo+ID4+ID4gaW1wbGVtZW50ZWQgdGhyb3VnaCBhZGRfaGln aHBhcnQuDQo+ID4+ID4NCj4gPj4gPiBJbiBvcmRlciB0byBiZSBhYmxlIHRvIHVzZSB0aGlzIHdl IG5lZWQgdG8gY2hlY2sgd2hldGhlciB0aGUNCj4gPj4gPiBjdXJyZW50IHByZWNpc2lvbiBoYXMg ZW5vdWdoIGJpdHMgdG8gZG8gdGhlIG9wZXJhdGlvbiB3aXRob3V0IGFueQ0KPiA+PiA+IG9mIHRo ZSBhZGRpdGlvbnMNCj4gPj4gb3ZlcmZsb3dpbmcuDQo+ID4+ID4NCj4gPj4gPiBXZSB1c2UgcmFu Z2UgaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHRoaXMgYW5kIG9ubHkgZG8gdGhlDQo+ID4+ID4g b3BlcmF0aW9uIGlmIHdlJ3JlIHN1cmUgYW0gb3ZlcmZsb3cgd29uJ3Qgb2NjdXIuDQo+ID4+ID4N Cj4gPj4gPiBCb290c3RyYXBwZWQgUmVndGVzdGVkIG9uIGFhcmNoNjQtbm9uZS1saW51eC1nbnUg YW5kIDxvbi1nb2luZz4NCj4gPj4gaXNzdWVzLg0KPiA+PiA+DQo+ID4+ID4gT2sgZm9yIG1hc3Rl cj8NCj4gPj4gPg0KPiA+PiA+IFRoYW5rcywNCj4gPj4gPiBUYW1hcg0KPiA+PiA+DQo+ID4+ID4g Z2NjL0NoYW5nZUxvZzoNCj4gPj4gPg0KPiA+PiA+IAlQUiB0YXJnZXQvMTA4NTgzDQo+ID4+ID4g CSogZG9jL3RtLnRleGkgKFRBUkdFVF9WRUNUT1JJWkVfQ0FOX1NQRUNJQUxfRElWX0JZX0NPTlNU KToNCj4gPj4gUmVtb3ZlLg0KPiA+PiA+IAkqIGRvYy90bS50ZXhpLmluOiBMaWtld2lzZS4NCj4g Pj4gPiAJKiBleHBsb3cuY2MgKHJvdW5kX3B1c2gsIGFsaWduX2R5bmFtaWNfYWRkcmVzcyk6IFJl dmVydCBwcmV2aW91cw0KPiA+PiBwYXRjaC4NCj4gPj4gPiAJKiBleHBtZWQuY2MgKGV4cGFuZF9k aXZtb2QpOiBMaWtld2lzZS4NCj4gPj4gPiAJKiBleHBtZWQuaCAoZXhwYW5kX2Rpdm1vZCk6IExp a2V3aXNlLg0KPiA+PiA+IAkqIGV4cHIuY2MgKGZvcmNlX29wZXJhbmQsIGV4cGFuZF9leHByX2Rp dm1vZCk6IExpa2V3aXNlLg0KPiA+PiA+IAkqIG9wdGFicy5jYyAoZXhwYW5kX2RvdWJsZXdvcmRf bW9kLA0KPiA+PiBleHBhbmRfZG91Ymxld29yZF9kaXZtb2QpOiBMaWtld2lzZS4NCj4gPj4gPiAJ KiBpbnRlcm5hbC1mbi5kZWYgKEFEREgpOiBOZXcuDQo+ID4+ID4gCSogb3B0YWJzLmRlZiAoc2Fk ZF9oaWdocGFydF9vcHRhYiwgdWFkZF9oaWdocGFydF9vcHRhYik6IE5ldy4NCj4gPj4gPiAJKiBk b2MvbWQudGV4aTogRG9jdW1lbnQgdGhlbS4NCj4gPj4gPiAJKiBkb2MvcnRsLnRleGk6IExpa2V3 aXNlLg0KPiA+PiA+IAkqIHRhcmdldC5kZWYgKGNhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCk6IFJl bW92ZS4NCj4gPj4gPiAJKiB0YXJnZXQuaDogUmVtb3ZlIHRyZWUtY29yZS5oIGluY2x1ZGUNCj4g Pj4gPiAJKiB0YXJnaG9va3MuY2MgKGRlZmF1bHRfY2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0KTog UmVtb3ZlLg0KPiA+PiA+IAkqIHRhcmdob29rcy5oIChkZWZhdWx0X2Nhbl9zcGVjaWFsX2Rpdl9i eV9jb25zdCk6IFJlbW92ZS4NCj4gPj4gPiAJKiB0cmVlLXZlY3QtZ2VuZXJpYy5jYyAoZXhwYW5k X3ZlY3Rvcl9vcGVyYXRpb24pOiBSZW1vdmUgaG9vay4NCj4gPj4gPiAJKiB0cmVlLXZlY3QtcGF0 dGVybnMuY2MgKHZlY3RfcmVjb2dfZGl2bW9kX3BhdHRlcm4pOiBSZW1vdmUgaG9vaw0KPiA+PiBh bmQNCj4gPj4gPiAJaW1wbGVtZW50IG5ldyBvYnRhYiByZWNvZ25pdGlvbiBiYXNlZCBvbiByYW5n ZS4NCj4gPj4gPiAJKiB0cmVlLXZlY3Qtc3RtdHMuY2MgKHZlY3Rvcml6YWJsZV9vcGVyYXRpb24p OiBSZW1vdmUgaG9vay4NCj4gPj4gPg0KPiA+PiA+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0K PiA+PiA+DQo+ID4+ID4gCVBSIHRhcmdldC8xMDg1ODMNCj4gPj4gPiAJKiBnY2MuZGcvdmVjdC92 ZWN0LWRpdi1iaXRtYXNrLTQuYzogTmV3IHRlc3QuDQo+ID4+ID4gCSogZ2NjLmRnL3ZlY3QvdmVj dC1kaXYtYml0bWFzay01LmM6IE5ldyB0ZXN0Lg0KPiA+PiA+DQo+ID4+ID4gLS0tIGlubGluZSBj b3B5IG9mIHBhdGNoIC0tDQo+ID4+ID4gZGlmZiAtLWdpdCBhL2djYy9kb2MvbWQudGV4aSBiL2dj Yy9kb2MvbWQudGV4aSBpbmRleA0KPiA+PiA+DQo+ID4+DQo+IDcyMzVkMzRjNGIzMDk0OWZlYmZh MTBkNWE2MjZhYzkzNTgyODFjZmEuLjAyMDA0YzRiMGY0ZDg4ZGZmZTk4MGY3NDA4MA0KPiA+PiAz DQo+ID4+ID4gODU5NWUyMWFmMzVkIDEwMDY0NA0KPiA+PiA+IC0tLSBhL2djYy9kb2MvbWQudGV4 aQ0KPiA+PiA+ICsrKyBiL2djYy9kb2MvbWQudGV4aQ0KPiA+PiA+IEBAIC01NjY4LDYgKzU2Njgs MTggQEAgcmVwcmVzZW50ZWQgaW4gUlRMIHVzaW5nIGENCj4gPj4gQGNvZGV7c211bF9oaWdocGFy dH0gUlRYIGV4cHJlc3Npb24uDQo+ID4+ID4gIFNpbWlsYXIsIGJ1dCB0aGUgbXVsdGlwbGljYXRp b24gaXMgdW5zaWduZWQuICBUaGlzIG1heSBiZQ0KPiA+PiA+IHJlcHJlc2VudGVkIGluIFJUTCB1 c2luZyBhbiBAY29kZXt1bXVsX2hpZ2hwYXJ0fSBSVFggZXhwcmVzc2lvbi4NCj4gPj4gPg0KPiA+ PiA+ICtAY2luZGV4IEBjb2Rle3NhZGRAdmFye219M19oaWdocGFydH0gaW5zdHJ1Y3Rpb24gcGF0 dGVybiBAaXRlbQ0KPiA+PiA+ICtAc2FtcHtzbXVsQHZhcnttfTNfaGlnaHBhcnR9DQo+ID4+DQo+ ID4+IHNhZGQNCj4gPj4NCj4gPj4gPiArUGVyZm9ybSBhIHNpZ25lZCBhZGRpdGlvbiBvZiBvcGVy YW5kcyAxIGFuZCAyLCB3aGljaCBoYXZlIG1vZGUNCj4gPj4gPiArQHZhcnttfSwgYW5kIHN0b3Jl IHRoZSBtb3N0IHNpZ25pZmljYW50IGhhbGYgb2YgdGhlIHByb2R1Y3QgaW4gb3BlcmFuZA0KPiAw Lg0KPiA+PiA+ICtUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgaGFsZiBvZiB0aGUgcHJvZHVjdCBpcyBk aXNjYXJkZWQuICBUaGlzIG1heQ0KPiA+PiA+ICtiZSByZXByZXNlbnRlZCBpbiBSVEwgdXNpbmcg YSBAY29kZXtzYWRkX2hpZ2hwYXJ0fSBSVFggZXhwcmVzc2lvbi4NCj4gPj4gPiArDQo+ID4+ID4g K0BjaW5kZXggQGNvZGV7dWFkZEB2YXJ7bX0zX2hpZ2hwYXJ0fSBpbnN0cnVjdGlvbiBwYXR0ZXJu IEBpdGVtDQo+ID4+ID4gK0BzYW1we3VhZGRAdmFye219M19oaWdocGFydH0gU2ltaWxhciwgYnV0 IHRoZSBhZGRpdGlvbiBpcyB1bnNpZ25lZC4NCj4gPj4gPiArVGhpcyBtYXkgYmUgcmVwcmVzZW50 ZWQgaW4gUlRMIHVzaW5nIGFuIEBjb2Rle3VhZGRfaGlnaHBhcnR9IFJUWA0KPiA+PiA+ICtleHBy ZXNzaW9uLg0KPiA+PiA+ICsNCj4gPj4gPiAgQGNpbmRleCBAY29kZXttYWRkQHZhcnttfUB2YXJ7 bn00fSBpbnN0cnVjdGlvbiBwYXR0ZXJuICBAaXRlbQ0KPiA+PiA+IEBzYW1we21hZGRAdmFye219 QHZhcntufTR9ICBNdWx0aXBseSBvcGVyYW5kcyAxIGFuZCAyLCBzaWduLQ0KPiBleHRlbmQNCj4g Pj4gPiB0aGVtIHRvIG1vZGUgQHZhcntufSwgYWRkIGRpZmYgLS1naXQgYS9nY2MvZG9jL3J0bC50 ZXhpDQo+ID4+ID4gYi9nY2MvZG9jL3J0bC50ZXhpIGluZGV4DQo+ID4+ID4NCj4gPj4NCj4gZDEz ODBlMWViM2JhNmIyODUzNjg2ZjQxZjJiZjkzN2JmY2JlZDFmZS4uNjNhN2VmNmU1NjZlZWVhNGYx NGMwMDM0Mw0KPiA+PiBkMTcNCj4gPj4gPiAxOTQwZWM0MjIyZjMgMTAwNjQ0DQo+ID4+ID4gLS0t IGEvZ2NjL2RvYy9ydGwudGV4aQ0KPiA+PiA+ICsrKyBiL2djYy9kb2MvcnRsLnRleGkNCj4gPj4g PiBAQCAtMjUzNSw2ICsyNTM1LDE3IEBAIG91dCBpbiBtYWNoaW5lIG1vZGUgQHZhcnttfS4NCj4g Pj4gPiBAY29kZXtzbXVsX2hpZ2hwYXJ0fSByZXR1cm5zIHRoZSBoaWdoIHBhcnQgIG9mIGEgc2ln bmVkDQo+ID4+ID4gbXVsdGlwbGljYXRpb24sIEBjb2Rle3VtdWxfaGlnaHBhcnR9IHJldHVybnMg dGhlIGhpZ2ggcGFydCAgb2YgYW4NCj4gPj4gPiB1bnNpZ25lZA0KPiA+PiBtdWx0aXBsaWNhdGlv bi4NCj4gPj4gPg0KPiA+PiA+ICtAZmluZGV4IHNhZGRfaGlnaHBhcnQNCj4gPj4gPiArQGZpbmRl eCB1YWRkX2hpZ2hwYXJ0DQo+ID4+ID4gK0BjaW5kZXggaGlnaC1wYXJ0IGFkZGl0aW9uDQo+ID4+ ID4gK0BjaW5kZXggYWRkaXRpb24gaGlnaCBwYXJ0DQo+ID4+ID4gK0BpdGVtIChzYWRkX2hpZ2hw YXJ0OkB2YXJ7bX0gQHZhcnt4fSBAdmFye3l9KSBAaXRlbXgNCj4gPj4gPiArKHVhZGRfaGlnaHBh cnQ6QHZhcnttfSBAdmFye3h9IEB2YXJ7eX0pIFJlcHJlc2VudHMgdGhlIGhpZ2gtcGFydA0KPiA+ PiA+ICthZGRpdGlvbiBvZiBAdmFye3h9IGFuZCBAdmFye3l9IGNhcnJpZWQgb3V0IGluIG1hY2hp bmUgbW9kZQ0KPiBAdmFye219Lg0KPiA+PiA+ICtAY29kZXtzYWRkX2hpZ2hwYXJ0fSByZXR1cm5z IHRoZSBoaWdoIHBhcnQgb2YgYSBzaWduZWQgYWRkaXRpb24sDQo+ID4+ID4gK0Bjb2Rle3VhZGRf aGlnaHBhcnR9IHJldHVybnMgdGhlIGhpZ2ggcGFydCBvZiBhbiB1bnNpZ25lZCBhZGRpdGlvbi4N Cj4gPj4NCj4gPj4gVGhlIHBhdGNoIGRvZXNuJ3QgYWRkIHRoZXNlIFJUTCBjb2RlcyB0aG91Z2gu DQo+ID4+DQo+ID4+ID4gKw0KPiA+PiA+ICBAZmluZGV4IGZtYQ0KPiA+PiA+ICBAY2luZGV4IGZ1 c2VkIG11bHRpcGx5LWFkZA0KPiA+PiA+ICBAaXRlbSAoZm1hOkB2YXJ7bX0gQHZhcnt4fSBAdmFy e3l9IEB2YXJ7en0pIGRpZmYgLS1naXQNCj4gPj4gPiBhL2djYy9kb2MvdG0udGV4aSBiL2djYy9k b2MvdG0udGV4aSBpbmRleA0KPiA+PiA+DQo+ID4+DQo+IGM2Yzg5MTk3MmQxZTU4Y2QxNjNiMjU5 YmE5NmE1OTlkNjIzMjY4NjUuLjNhYjIwMzFhMzM2Yjg3NThkNTc5MTQ4NDANCj4gPj4gMTdlDQo+ ID4+ID4gNmIwZDYyYWIwNzdlIDEwMDY0NA0KPiA+PiA+IC0tLSBhL2djYy9kb2MvdG0udGV4aQ0K PiA+PiA+ICsrKyBiL2djYy9kb2MvdG0udGV4aQ0KPiA+PiA+IEBAIC02MTM3LDIyICs2MTM3LDYg QEAgaW5zdHJ1Y3Rpb24gcGF0dGVybi4gIFRoZXJlIGlzIG5vIG5lZWQgZm9yDQo+ID4+ID4gdGhl IGhvb2sgdG8gaGFuZGxlIHRoZXNlIHR3byAgaW1wbGVtZW50YXRpb24gYXBwcm9hY2hlcyBpdHNl bGYuDQo+ID4+ID4gIEBlbmQgZGVmdHlwZWZuDQo+ID4+ID4NCj4gPj4gPiAtQGRlZnR5cGVmbiB7 VGFyZ2V0IEhvb2t9IGJvb2wNCj4gPj4gPiBUQVJHRVRfVkVDVE9SSVpFX0NBTl9TUEVDSUFMX0RJ Vl9CWV9DT05TVCAoZW51bQ0KPiA+PiBAdmFye3RyZWVfY29kZX0sIHRyZWUNCj4gPj4gPiBAdmFy e3ZlY3R5cGV9LCB3aWRlX2ludCBAdmFye2NvbnN0YW50fSwgcnR4ICpAdmFye291dHB1dH0sIHJ0 eA0KPiA+PiA+IEB2YXJ7aW4wfSwgcnR4IEB2YXJ7aW4xfSkgLVRoaXMgaG9vayBpcyB1c2VkIHRv IHRlc3Qgd2hldGhlciB0aGUNCj4gPj4gPiB0YXJnZXQgaGFzIGEgc3BlY2lhbCBtZXRob2Qgb2Yg LWRpdmlzaW9uIG9mIHZlY3RvcnMgb2YgdHlwZQ0KPiA+PiA+IEB2YXJ7dmVjdHlwZX0NCj4gPj4g dXNpbmcgdGhlIHZhbHVlIEB2YXJ7Y29uc3RhbnR9LCAtYW5kIHByb2R1Y2luZyBhIHZlY3RvciBv ZiB0eXBlDQo+ID4+IEB2YXJ7dmVjdHlwZX0uICBUaGUgZGl2aXNpb24gLXdpbGwgdGhlbiBub3Qg YmUgZGVjb21wb3NlZCBieSB0aGUNCj4gPj4gdmVjdG9yaXplciBhbmQga2VwdCBhcyBhIGRpdi4N Cj4gPj4gPiAtDQo+ID4+ID4gLVdoZW4gdGhlIGhvb2sgaXMgYmVpbmcgdXNlZCB0byB0ZXN0IHdo ZXRoZXIgdGhlIHRhcmdldCBzdXBwb3J0cyBhDQo+ID4+ID4gc3BlY2lhbCAtZGl2aWRlLCBAdmFy e2luMH0sIEB2YXJ7aW4xfSwgYW5kIEB2YXJ7b3V0cHV0fSBhcmUgYWxsIG51bGwuDQo+ID4+ID4g V2hlbiB0aGUgaG9vayAtaXMgYmVpbmcgdXNlZCB0byBlbWl0IGEgZGl2aXNpb24sIEB2YXJ7aW4w fSBhbmQNCj4gPj4gPiBAdmFye2luMX0gYXJlIHRoZSBzb3VyY2UgLXZlY3RvcnMgb2YgdHlwZSBA dmFye3ZlY3R0eXBlfSBhbmQNCj4gPj4gPiBAdmFye291dHB1dH0gaXMgdGhlIGRlc3RpbmF0aW9u IHZlY3RvciBvZiAtdHlwZSBAdmFye3ZlY3R5cGV9Lg0KPiA+PiA+IC0NCj4gPj4gPiAtUmV0dXJu IHRydWUgaWYgdGhlIG9wZXJhdGlvbiBpcyBwb3NzaWJsZSwgZW1pdHRpbmcgaW5zdHJ1Y3Rpb25z DQo+ID4+ID4gZm9yIGl0IC1pZiBydHhlcyBhcmUgcHJvdmlkZWQgYW5kIHVwZGF0aW5nIEB2YXJ7 b3V0cHV0fS4NCj4gPj4gPiAtQGVuZCBkZWZ0eXBlZm4NCj4gPj4gPiAtDQo+ID4+ID4gIEBkZWZ0 eXBlZm4ge1RhcmdldCBIb29rfSB0cmVlDQo+ID4+ID4gVEFSR0VUX1ZFQ1RPUklaRV9CVUlMVElO X1ZFQ1RPUklaRURfRlVOQ1RJT04gKHVuc2lnbmVkDQo+ID4+IEB2YXJ7Y29kZX0sDQo+ID4+ID4g dHJlZSBAdmFye3ZlY190eXBlX291dH0sIHRyZWUgQHZhcnt2ZWNfdHlwZV9pbn0pICBUaGlzIGhv b2sgc2hvdWxkDQo+ID4+ID4gcmV0dXJuIHRoZSBkZWNsIG9mIGEgZnVuY3Rpb24gdGhhdCBpbXBs ZW1lbnRzIHRoZSAgdmVjdG9yaXplZA0KPiA+PiA+IHZhcmlhbnQgb2YgdGhlIGZ1bmN0aW9uIHdp dGggdGhlIEBjb2Rle2NvbWJpbmVkX2ZufSBjb2RlIGRpZmYgLS1naXQNCj4gPj4gPiBhL2djYy9k b2MvdG0udGV4aS5pbiBiL2djYy9kb2MvdG0udGV4aS5pbiBpbmRleA0KPiA+PiA+DQo+ID4+DQo+ IDYxM2IyNTM0MTQ5NDE1ZjQ0MjE2M2Q1OTk1MDNlZmFmNDIzYjY3M2IuLjg3OTBmNGU0NGI5OGI1 MWFkNWQxZWZlYzANCj4gPj4gYTNhDQo+ID4+ID4gYmNjZDFjMjkzYzdiIDEwMDY0NA0KPiA+PiA+ IC0tLSBhL2djYy9kb2MvdG0udGV4aS5pbg0KPiA+PiA+ICsrKyBiL2djYy9kb2MvdG0udGV4aS5p bg0KPiA+PiA+IEBAIC00MTczLDggKzQxNzMsNiBAQCBhZGRyZXNzOyAgYnV0IG9mdGVuIGEgbWFj aGluZS1kZXBlbmRlbnQNCj4gPj4gc3RyYXRlZ3kgY2FuIGdlbmVyYXRlIGJldHRlciBjb2RlLg0K PiA+PiA+DQo+ID4+ID4gIEBob29rIFRBUkdFVF9WRUNUT1JJWkVfVkVDX1BFUk1fQ09OU1QNCj4g Pj4gPg0KPiA+PiA+IC1AaG9vayBUQVJHRVRfVkVDVE9SSVpFX0NBTl9TUEVDSUFMX0RJVl9CWV9D T05TVA0KPiA+PiA+IC0NCj4gPj4gPiAgQGhvb2sgVEFSR0VUX1ZFQ1RPUklaRV9CVUlMVElOX1ZF Q1RPUklaRURfRlVOQ1RJT04NCj4gPj4gPg0KPiA+PiA+ICBAaG9vayBUQVJHRVRfVkVDVE9SSVpF X0JVSUxUSU5fTURfVkVDVE9SSVpFRF9GVU5DVElPTg0KPiA+PiA+IGRpZmYgLS1naXQgYS9nY2Mv ZXhwbG93LmNjIGIvZ2NjL2V4cGxvdy5jYyBpbmRleA0KPiA+PiA+DQo+ID4+DQo+IDgzNDM5YjMy YWJlMWI5YWE0Yjc5ODNlYjYyOTgwNGY5NzQ4NmFjYmQuLmJlOTE5NWIzMzMyM2VlNTU5N2ZjMjEy ZjANCj4gPj4gYmVmDQo+ID4+ID4gYTAxNmVlYTQ1NzNjIDEwMDY0NA0KPiA+PiA+IC0tLSBhL2dj Yy9leHBsb3cuY2MNCj4gPj4gPiArKysgYi9nY2MvZXhwbG93LmNjDQo+ID4+ID4gQEAgLTEwMzcs NyArMTAzNyw3IEBAIHJvdW5kX3B1c2ggKHJ0eCBzaXplKQ0KPiA+PiA+ICAgICAgIFRSVU5DX0RJ Vl9FWFBSLiAgKi8NCj4gPj4gPiAgICBzaXplID0gZXhwYW5kX2Jpbm9wIChQbW9kZSwgYWRkX29w dGFiLCBzaXplLCBhbGlnbm0xX3J0eCwNCj4gPj4gPiAgCQkgICAgICAgTlVMTF9SVFgsIDEsIE9Q VEFCX0xJQl9XSURFTik7DQo+ID4+ID4gLSAgc2l6ZSA9IGV4cGFuZF9kaXZtb2QgKDAsIFRSVU5D X0RJVl9FWFBSLCBQbW9kZSwgTlVMTCwgTlVMTCwNCj4gPj4gPiBzaXplLCBhbGlnbl9ydHgsDQo+ ID4+ID4gKyAgc2l6ZSA9IGV4cGFuZF9kaXZtb2QgKDAsIFRSVU5DX0RJVl9FWFBSLCBQbW9kZSwg c2l6ZSwgYWxpZ25fcnR4LA0KPiA+PiA+ICAJCQlOVUxMX1JUWCwgMSk7DQo+ID4+ID4gICAgc2l6 ZSA9IGV4cGFuZF9tdWx0IChQbW9kZSwgc2l6ZSwgYWxpZ25fcnR4LCBOVUxMX1JUWCwgMSk7DQo+ ID4+ID4NCj4gPj4gPiBAQCAtMTIwMyw3ICsxMjAzLDcgQEAgYWxpZ25fZHluYW1pY19hZGRyZXNz IChydHggdGFyZ2V0LCB1bnNpZ25lZA0KPiA+PiByZXF1aXJlZF9hbGlnbikNCj4gPj4gPiAgCQkJ IGdlbl9pbnRfbW9kZSAocmVxdWlyZWRfYWxpZ24gLyBCSVRTX1BFUl9VTklUIC0gMSwNCj4gPj4g PiAgCQkJCSAgICAgICBQbW9kZSksDQo+ID4+ID4gIAkJCSBOVUxMX1JUWCwgMSwgT1BUQUJfTElC X1dJREVOKTsNCj4gPj4gPiAtICB0YXJnZXQgPSBleHBhbmRfZGl2bW9kICgwLCBUUlVOQ19ESVZf RVhQUiwgUG1vZGUsIE5VTEwsIE5VTEwsDQo+ID4+ID4gdGFyZ2V0LA0KPiA+PiA+ICsgIHRhcmdl dCA9IGV4cGFuZF9kaXZtb2QgKDAsIFRSVU5DX0RJVl9FWFBSLCBQbW9kZSwgdGFyZ2V0LA0KPiA+ PiA+ICAJCQkgIGdlbl9pbnRfbW9kZSAocmVxdWlyZWRfYWxpZ24gLyBCSVRTX1BFUl9VTklULA0K PiA+PiA+ICAJCQkJCVBtb2RlKSwNCj4gPj4gPiAgCQkJICBOVUxMX1JUWCwgMSk7DQo+ID4+ID4g ZGlmZiAtLWdpdCBhL2djYy9leHBtZWQuaCBiL2djYy9leHBtZWQuaCBpbmRleA0KPiA+PiA+DQo+ ID4+DQo+IDA0MTllMmRhYzg1ODUwODg5Y2UwYmVlNTk1MTVlMzFhODBjNTgyZGUuLjRkZmU2MzVj MjJlZTQ5ZjJkYmE0YzUzNjQNCj4gPj4gMDk0DQo+ID4+ID4gMTYyODA2OGYzOTAxIDEwMDY0NA0K PiA+PiA+IC0tLSBhL2djYy9leHBtZWQuaA0KPiA+PiA+ICsrKyBiL2djYy9leHBtZWQuaA0KPiA+ PiA+IEBAIC03MTAsOSArNzEwLDggQEAgZXh0ZXJuIHJ0eCBleHBhbmRfc2hpZnQgKGVudW0gdHJl ZV9jb2RlLA0KPiA+PiA+IG1hY2hpbmVfbW9kZSwgcnR4LCBwb2x5X2ludDY0LCBydHgsICBleHRl cm4gcnR4IG1heWJlX2V4cGFuZF9zaGlmdA0KPiA+PiAoZW51bSB0cmVlX2NvZGUsIG1hY2hpbmVf bW9kZSwgcnR4LCBpbnQsIHJ0eCwNCj4gPj4gPiAgCQkJICAgICAgIGludCk7DQo+ID4+ID4gICNp ZmRlZiBHQ0NfT1BUQUJTX0gNCj4gPj4gPiAtZXh0ZXJuIHJ0eCBleHBhbmRfZGl2bW9kIChpbnQs IGVudW0gdHJlZV9jb2RlLCBtYWNoaW5lX21vZGUsDQo+IHRyZWUsDQo+ID4+IHRyZWUsDQo+ID4+ ID4gLQkJCSAgcnR4LCBydHgsIHJ0eCwgaW50LA0KPiA+PiA+IC0JCQkgIGVudW0gb3B0YWJfbWV0 aG9kcyA9IE9QVEFCX0xJQl9XSURFTik7DQo+ID4+ID4gK2V4dGVybiBydHggZXhwYW5kX2Rpdm1v ZCAoaW50LCBlbnVtIHRyZWVfY29kZSwgbWFjaGluZV9tb2RlLCBydHgsDQo+ID4+IHJ0eCwNCj4g Pj4gPiArCQkJICBydHgsIGludCwgZW51bSBvcHRhYl9tZXRob2RzID0NCj4gPj4gT1BUQUJfTElC X1dJREVOKTsNCj4gPj4gPiAgI2VuZGlmDQo+ID4+ID4gICNlbmRpZg0KPiA+PiA+DQo+ID4+ID4g ZGlmZiAtLWdpdCBhL2djYy9leHBtZWQuY2MgYi9nY2MvZXhwbWVkLmNjIGluZGV4DQo+ID4+ID4N Cj4gPj4NCj4gOTE3MzYwMTk5Y2E1NjE1N2NmM2MzNjkzYjY1ZTkzY2Q5ZDhlZDI0NC4uMTU1M2Vh OGUzMWViNjQzMzAyNWFiMThhMw0KPiA+PiBhNTkNCj4gPj4gPiBjMTY5ZDNiNzY5MmYgMTAwNjQ0 DQo+ID4+ID4gLS0tIGEvZ2NjL2V4cG1lZC5jYw0KPiA+PiA+ICsrKyBiL2djYy9leHBtZWQuY2MN Cj4gPj4gPiBAQCAtNDIyMiw4ICs0MjIyLDggQEAgZXhwYW5kX3NkaXZfcG93MiAoc2NhbGFyX2lu dF9tb2RlIG1vZGUsDQo+IHJ0eA0KPiA+PiBvcDAsDQo+ID4+ID4gSE9TVF9XSURFX0lOVCBkKQ0K PiA+PiA+DQo+ID4+ID4gIHJ0eA0KPiA+PiA+ICBleHBhbmRfZGl2bW9kIChpbnQgcmVtX2ZsYWcs IGVudW0gdHJlZV9jb2RlIGNvZGUsIG1hY2hpbmVfbW9kZQ0KPiA+PiBtb2RlLA0KPiA+PiA+IC0J ICAgICAgIHRyZWUgdHJlZW9wMCwgdHJlZSB0cmVlb3AxLCBydHggb3AwLCBydHggb3AxLCBydHgg dGFyZ2V0LA0KPiA+PiA+IC0JICAgICAgIGludCB1bnNpZ25lZHAsIGVudW0gb3B0YWJfbWV0aG9k cyBtZXRob2RzKQ0KPiA+PiA+ICsJICAgICAgIHJ0eCBvcDAsIHJ0eCBvcDEsIHJ0eCB0YXJnZXQs IGludCB1bnNpZ25lZHAsDQo+ID4+ID4gKwkgICAgICAgZW51bSBvcHRhYl9tZXRob2RzIG1ldGhv ZHMpDQo+ID4+ID4gIHsNCj4gPj4gPiAgICBtYWNoaW5lX21vZGUgY29tcHV0ZV9tb2RlOw0KPiA+ PiA+ICAgIHJ0eCB0cXVvdGllbnQ7DQo+ID4+ID4gQEAgLTQzNzUsMTcgKzQzNzUsNiBAQCBleHBh bmRfZGl2bW9kIChpbnQgcmVtX2ZsYWcsIGVudW0NCj4gdHJlZV9jb2RlDQo+ID4+ID4gY29kZSwg bWFjaGluZV9tb2RlIG1vZGUsDQo+ID4+ID4NCj4gPj4gPiAgICBsYXN0X2Rpdl9jb25zdCA9ICEg cmVtX2ZsYWcgJiYgb3AxX2lzX2NvbnN0YW50ID8gSU5UVkFMIChvcDEpIDoNCj4gPj4gPiAwOw0K PiA+PiA+DQo+ID4+ID4gLSAgLyogQ2hlY2sgaWYgdGhlIHRhcmdldCBoYXMgc3BlY2lmaWMgZXhw YW5zaW9ucyBmb3IgdGhlIGRpdmlzaW9uLg0KPiA+PiA+ICovDQo+ID4+ID4gLSAgdHJlZSBjc3Q7 DQo+ID4+ID4gLSAgaWYgKHRyZWVvcDANCj4gPj4gPiAtICAgICAgJiYgdHJlZW9wMQ0KPiA+PiA+ IC0gICAgICAmJiAoY3N0ID0gdW5pZm9ybV9pbnRlZ2VyX2NzdF9wICh0cmVlb3AxKSkNCj4gPj4g PiAtICAgICAgJiYgdGFyZ2V0bS52ZWN0b3JpemUuY2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0IChj b2RlLCBUUkVFX1RZUEUNCj4gPj4gKHRyZWVvcDApLA0KPiA+PiA+IC0JCQkJCQkgICAgIHdpOjp0 b193aWRlIChjc3QpLA0KPiA+PiA+IC0JCQkJCQkgICAgICZ0YXJnZXQsIG9wMCwgb3AxKSkNCj4g Pj4gPiAtICAgIHJldHVybiB0YXJnZXQ7DQo+ID4+ID4gLQ0KPiA+PiA+IC0NCj4gPj4gPiAgICAv KiBOb3cgY29udmVydCB0byB0aGUgYmVzdCBtb2RlIHRvIHVzZS4gICovDQo+ID4+ID4gICAgaWYg KGNvbXB1dGVfbW9kZSAhPSBtb2RlKQ0KPiA+PiA+ICAgICAgew0KPiA+PiA+IEBAIC00NjI5LDgg KzQ2MTgsOCBAQCBleHBhbmRfZGl2bW9kIChpbnQgcmVtX2ZsYWcsIGVudW0NCj4gdHJlZV9jb2Rl DQo+ID4+IGNvZGUsIG1hY2hpbmVfbW9kZSBtb2RlLA0KPiA+PiA+ICAJCQkgICAgfHwgKG9wdGFi X2hhbmRsZXIgKHNkaXZtb2Rfb3B0YWIsIGludF9tb2RlKQ0KPiA+PiA+ICAJCQkJIT0gQ09ERV9G T1Jfbm90aGluZykpKQ0KPiA+PiA+ICAJCSAgICAgIHF1b3RpZW50ID0gZXhwYW5kX2Rpdm1vZCAo MCwgVFJVTkNfRElWX0VYUFIsDQo+ID4+ID4gLQkJCQkJCWludF9tb2RlLCB0cmVlb3AwLCB0cmVl b3AxLA0KPiA+PiA+IC0JCQkJCQlvcDAsIGdlbl9pbnRfbW9kZSAoYWJzX2QsDQo+ID4+ID4gKwkJ CQkJCWludF9tb2RlLCBvcDAsDQo+ID4+ID4gKwkJCQkJCWdlbl9pbnRfbW9kZSAoYWJzX2QsDQo+ ID4+ID4gIAkJCQkJCQkgICAgICBpbnRfbW9kZSksDQo+ID4+ID4gIAkJCQkJCU5VTExfUlRYLCAw KTsNCj4gPj4gPiAgCQkgICAgZWxzZQ0KPiA+PiA+IEBAIC00ODE5LDggKzQ4MDgsOCBAQCBleHBh bmRfZGl2bW9kIChpbnQgcmVtX2ZsYWcsIGVudW0NCj4gdHJlZV9jb2RlDQo+ID4+IGNvZGUsIG1h Y2hpbmVfbW9kZSBtb2RlLA0KPiA+PiA+ICAJCQkJICAgICAgc2l6ZSAtIDEsIE5VTExfUlRYLCAw KTsNCj4gPj4gPiAgCQl0MyA9IGZvcmNlX29wZXJhbmQgKGdlbl9ydHhfTUlOVVMgKGludF9tb2Rl LCB0MSwgbnNpZ24pLA0KPiA+PiA+ICAJCQkJICAgIE5VTExfUlRYKTsNCj4gPj4gPiAtCQl0NCA9 IGV4cGFuZF9kaXZtb2QgKDAsIFRSVU5DX0RJVl9FWFBSLCBpbnRfbW9kZSwNCj4gPj4gdHJlZW9w MCwNCj4gPj4gPiAtCQkJCSAgICB0cmVlb3AxLCB0Mywgb3AxLCBOVUxMX1JUWCwgMCk7DQo+ID4+ ID4gKwkJdDQgPSBleHBhbmRfZGl2bW9kICgwLCBUUlVOQ19ESVZfRVhQUiwgaW50X21vZGUsIHQz LA0KPiA+PiBvcDEsDQo+ID4+ID4gKwkJCQkgICAgTlVMTF9SVFgsIDApOw0KPiA+PiA+ICAJCWlm ICh0NCkNCj4gPj4gPiAgCQkgIHsNCj4gPj4gPiAgCQkgICAgcnR4IHQ1Ow0KPiA+PiA+IGRpZmYg LS1naXQgYS9nY2MvZXhwci5jYyBiL2djYy9leHByLmNjIGluZGV4DQo+ID4+ID4NCj4gPj4NCj4g MTViZTFjOGRiOTk5MTAzYmI5ZTVmYTMzZGFhNDRhZTA2ZGU1YWNlOC4uNzhkMzUyOTdlNzU1MjE2 MzM5MDc4ZDViDQo+ID4+IDIyODANCj4gPj4gPiBjNmUyNzdmMjZkNzIgMTAwNjQ0DQo+ID4+ID4g LS0tIGEvZ2NjL2V4cHIuY2MNCj4gPj4gPiArKysgYi9nY2MvZXhwci5jYw0KPiA+PiA+IEBAIC04 MjA3LDE3ICs4MjA3LDE2IEBAIGZvcmNlX29wZXJhbmQgKHJ0eCB2YWx1ZSwgcnR4IHRhcmdldCkN Cj4gPj4gPiAgCSAgICByZXR1cm4gZXhwYW5kX2Rpdm1vZCAoMCwNCj4gPj4gPiAgCQkJCSAgRkxP QVRfTU9ERV9QIChHRVRfTU9ERSAodmFsdWUpKQ0KPiA+PiA+ICAJCQkJICA/IFJESVZfRVhQUiA6 IFRSVU5DX0RJVl9FWFBSLA0KPiA+PiA+IC0JCQkJICBHRVRfTU9ERSAodmFsdWUpLCBOVUxMLCBO VUxMLCBvcDEsIG9wMiwNCj4gPj4gPiAtCQkJCSAgdGFyZ2V0LCAwKTsNCj4gPj4gPiArCQkJCSAg R0VUX01PREUgKHZhbHVlKSwgb3AxLCBvcDIsIHRhcmdldCwgMCk7DQo+ID4+ID4gIAljYXNlIE1P RDoNCj4gPj4gPiAtCSAgcmV0dXJuIGV4cGFuZF9kaXZtb2QgKDEsIFRSVU5DX01PRF9FWFBSLCBH RVRfTU9ERSAodmFsdWUpLA0KPiA+PiBOVUxMLCBOVUxMLA0KPiA+PiA+IC0JCQkJb3AxLCBvcDIs IHRhcmdldCwgMCk7DQo+ID4+ID4gKwkgIHJldHVybiBleHBhbmRfZGl2bW9kICgxLCBUUlVOQ19N T0RfRVhQUiwgR0VUX01PREUgKHZhbHVlKSwNCj4gPj4gb3AxLCBvcDIsDQo+ID4+ID4gKwkJCQl0 YXJnZXQsIDApOw0KPiA+PiA+ICAJY2FzZSBVRElWOg0KPiA+PiA+IC0JICByZXR1cm4gZXhwYW5k X2Rpdm1vZCAoMCwgVFJVTkNfRElWX0VYUFIsIEdFVF9NT0RFICh2YWx1ZSksDQo+ID4+IE5VTEws IE5VTEwsDQo+ID4+ID4gLQkJCQlvcDEsIG9wMiwgdGFyZ2V0LCAxKTsNCj4gPj4gPiArCSAgcmV0 dXJuIGV4cGFuZF9kaXZtb2QgKDAsIFRSVU5DX0RJVl9FWFBSLCBHRVRfTU9ERSAodmFsdWUpLA0K PiA+PiBvcDEsIG9wMiwNCj4gPj4gPiArCQkJCXRhcmdldCwgMSk7DQo+ID4+ID4gIAljYXNlIFVN T0Q6DQo+ID4+ID4gLQkgIHJldHVybiBleHBhbmRfZGl2bW9kICgxLCBUUlVOQ19NT0RfRVhQUiwg R0VUX01PREUgKHZhbHVlKSwNCj4gPj4gTlVMTCwgTlVMTCwNCj4gPj4gPiAtCQkJCW9wMSwgb3Ay LCB0YXJnZXQsIDEpOw0KPiA+PiA+ICsJICByZXR1cm4gZXhwYW5kX2Rpdm1vZCAoMSwgVFJVTkNf TU9EX0VYUFIsIEdFVF9NT0RFICh2YWx1ZSksDQo+ID4+IG9wMSwgb3AyLA0KPiA+PiA+ICsJCQkJ dGFyZ2V0LCAxKTsNCj4gPj4gPiAgCWNhc2UgQVNISUZUUlQ6DQo+ID4+ID4gIAkgIHJldHVybiBl eHBhbmRfc2ltcGxlX2Jpbm9wIChHRVRfTU9ERSAodmFsdWUpLCBjb2RlLCBvcDEsIG9wMiwNCj4g Pj4gPiAgCQkJCSAgICAgIHRhcmdldCwgMCwgT1BUQUJfTElCX1dJREVOKTsgQEAgLQ0KPiA+PiA5 MTcwLDEzICs5MTY5LDExIEBADQo+ID4+ID4gZXhwYW5kX2V4cHJfZGl2bW9kICh0cmVlX2NvZGUg Y29kZSwgbWFjaGluZV9tb2RlIG1vZGUsIHRyZWUNCj4gPj4gdHJlZW9wMCwNCj4gPj4gPiAgICAg ICAgYm9vbCBzcGVlZF9wID0gb3B0aW1pemVfaW5zbl9mb3Jfc3BlZWRfcCAoKTsNCj4gPj4gPiAg ICAgICAgZG9fcGVuZGluZ19zdGFja19hZGp1c3QgKCk7DQo+ID4+ID4gICAgICAgIHN0YXJ0X3Nl cXVlbmNlICgpOw0KPiA+PiA+IC0gICAgICBydHggdW5zX3JldCA9IGV4cGFuZF9kaXZtb2QgKG1v ZF9wLCBjb2RlLCBtb2RlLCB0cmVlb3AwLA0KPiB0cmVlb3AxLA0KPiA+PiA+IC0JCQkJICAgb3Aw LCBvcDEsIHRhcmdldCwgMSk7DQo+ID4+ID4gKyAgICAgIHJ0eCB1bnNfcmV0ID0gZXhwYW5kX2Rp dm1vZCAobW9kX3AsIGNvZGUsIG1vZGUsIG9wMCwgb3AxLA0KPiA+PiA+ICsgdGFyZ2V0LCAxKTsN Cj4gPj4gPiAgICAgICAgcnR4X2luc24gKnVuc19pbnNucyA9IGdldF9pbnNucyAoKTsNCj4gPj4g PiAgICAgICAgZW5kX3NlcXVlbmNlICgpOw0KPiA+PiA+ICAgICAgICBzdGFydF9zZXF1ZW5jZSAo KTsNCj4gPj4gPiAtICAgICAgcnR4IHNnbl9yZXQgPSBleHBhbmRfZGl2bW9kIChtb2RfcCwgY29k ZSwgbW9kZSwgdHJlZW9wMCwNCj4gdHJlZW9wMSwNCj4gPj4gPiAtCQkJCSAgIG9wMCwgb3AxLCB0 YXJnZXQsIDApOw0KPiA+PiA+ICsgICAgICBydHggc2duX3JldCA9IGV4cGFuZF9kaXZtb2QgKG1v ZF9wLCBjb2RlLCBtb2RlLCBvcDAsIG9wMSwNCj4gPj4gPiArIHRhcmdldCwgMCk7DQo+ID4+ID4g ICAgICAgIHJ0eF9pbnNuICpzZ25faW5zbnMgPSBnZXRfaW5zbnMgKCk7DQo+ID4+ID4gICAgICAg IGVuZF9zZXF1ZW5jZSAoKTsNCj4gPj4gPiAgICAgICAgdW5zaWduZWQgdW5zX2Nvc3QgPSBzZXFf Y29zdCAodW5zX2luc25zLCBzcGVlZF9wKTsgQEANCj4gPj4gPiAtOTE5OCw4DQo+ID4+ID4gKzkx OTUsNyBAQCBleHBhbmRfZXhwcl9kaXZtb2QgKHRyZWVfY29kZSBjb2RlLCBtYWNoaW5lX21vZGUN Cj4gPj4gbW9kZSwgdHJlZSB0cmVlb3AwLA0KPiA+PiA+ICAgICAgICBlbWl0X2luc24gKHNnbl9p bnNucyk7DQo+ID4+ID4gICAgICAgIHJldHVybiBzZ25fcmV0Ow0KPiA+PiA+ICAgICAgfQ0KPiA+ PiA+IC0gIHJldHVybiBleHBhbmRfZGl2bW9kIChtb2RfcCwgY29kZSwgbW9kZSwgdHJlZW9wMCwg dHJlZW9wMSwNCj4gPj4gPiAtCQkJb3AwLCBvcDEsIHRhcmdldCwgdW5zaWduZWRwKTsNCj4gPj4g PiArICByZXR1cm4gZXhwYW5kX2Rpdm1vZCAobW9kX3AsIGNvZGUsIG1vZGUsIG9wMCwgb3AxLCB0 YXJnZXQsDQo+ID4+ID4gKyB1bnNpZ25lZHApOw0KPiA+PiA+ICB9DQo+ID4+ID4NCj4gPj4gPiAg cnR4DQo+ID4+ID4gZGlmZiAtLWdpdCBhL2djYy9pbnRlcm5hbC1mbi5kZWYgYi9nY2MvaW50ZXJu YWwtZm4uZGVmIGluZGV4DQo+ID4+ID4NCj4gPj4NCj4gMjJiNGEyZDkyOTY3MDc2YzY1ODk2NWFm Y2FlYWYzOWI0NDlhOGNhZi4uMjc5NmQzNjY5YTA4MDY1MzgwNTI1ODRmNWENCj4gPj4gM2INCj4g Pj4gPiA4YTczNGJhYTgwMGYgMTAwNjQ0DQo+ID4+ID4gLS0tIGEvZ2NjL2ludGVybmFsLWZuLmRl Zg0KPiA+PiA+ICsrKyBiL2djYy9pbnRlcm5hbC1mbi5kZWYNCj4gPj4gPiBAQCAtMTc0LDYgKzE3 NCw4IEBAIERFRl9JTlRFUk5BTF9TSUdORURfT1BUQUJfRk4gKEFWR19DRUlMLA0KPiA+PiBFQ0Zf Q09OU1QNCj4gPj4gPiB8IEVDRl9OT1RIUk9XLCBmaXJzdCwNCj4gPj4gPg0KPiA+PiA+ICBERUZf SU5URVJOQUxfU0lHTkVEX09QVEFCX0ZOIChNVUxILCBFQ0ZfQ09OU1QgfA0KPiA+PiBFQ0ZfTk9U SFJPVywgZmlyc3QsDQo+ID4+ID4gIAkJCSAgICAgIHNtdWxfaGlnaHBhcnQsIHVtdWxfaGlnaHBh cnQsIGJpbmFyeSkNCj4gPj4gPiArREVGX0lOVEVSTkFMX1NJR05FRF9PUFRBQl9GTiAoQURESCwg RUNGX0NPTlNUIHwNCj4gPj4gRUNGX05PVEhST1csIGZpcnN0LA0KPiA+PiA+ICsJCQkgICAgICBz YWRkX2hpZ2hwYXJ0LCB1YWRkX2hpZ2hwYXJ0LCBiaW5hcnkpDQo+ID4+ID4gIERFRl9JTlRFUk5B TF9TSUdORURfT1BUQUJfRk4gKE1VTEhTLCBFQ0ZfQ09OU1QgfA0KPiA+PiBFQ0ZfTk9USFJPVywg Zmlyc3QsDQo+ID4+ID4gIAkJCSAgICAgIHNtdWxocywgdW11bGhzLCBiaW5hcnkpDQo+ID4+ID4g IERFRl9JTlRFUk5BTF9TSUdORURfT1BUQUJfRk4gKE1VTEhSUywgRUNGX0NPTlNUIHwNCj4gPj4g RUNGX05PVEhST1csIGZpcnN0LA0KPiA+PiA+IGRpZmYgLS1naXQgYS9nY2Mvb3B0YWJzLmNjIGIv Z2NjL29wdGFicy5jYyBpbmRleA0KPiA+PiA+DQo+ID4+DQo+IGNmMjJiZmVjM2Y1NTEzZjU2ZDIy Yzg2NjIzMWVkYmYzMjJmZjY5NDUuLjQ3NGNjYmQ3OTE1YjRmMTQ0Y2ViZTAzNjlhNg0KPiA+PiBl DQo+ID4+ID4gNzcwODJjMWU2MTdiIDEwMDY0NA0KPiA+PiA+IC0tLSBhL2djYy9vcHRhYnMuY2MN Cj4gPj4gPiArKysgYi9nY2Mvb3B0YWJzLmNjDQo+ID4+ID4gQEAgLTExMDYsOSArMTEwNiw4IEBA IGV4cGFuZF9kb3VibGV3b3JkX21vZCAobWFjaGluZV9tb2RlDQo+ID4+IG1vZGUsIHJ0eCBvcDAs IHJ0eCBvcDEsIGJvb2wgdW5zaWduZWRwKQ0KPiA+PiA+ICAJCXJldHVybiBOVUxMX1JUWDsNCj4g Pj4gPiAgCSAgICB9DQo+ID4+ID4gIAl9DQo+ID4+ID4gLSAgICAgIHJ0eCByZW1haW5kZXIgPSBl eHBhbmRfZGl2bW9kICgxLCBUUlVOQ19NT0RfRVhQUiwNCj4gd29yZF9tb2RlLA0KPiA+PiBOVUxM LCBOVUxMLA0KPiA+PiA+IC0JCQkJICAgICBzdW0sIGdlbl9pbnRfbW9kZSAoSU5UVkFMIChvcDEp LA0KPiA+PiA+IC0JCQkJCQkJd29yZF9tb2RlKSwNCj4gPj4gPiArICAgICAgcnR4IHJlbWFpbmRl ciA9IGV4cGFuZF9kaXZtb2QgKDEsIFRSVU5DX01PRF9FWFBSLA0KPiB3b3JkX21vZGUsDQo+ID4+ IHN1bSwNCj4gPj4gPiArCQkJCSAgICAgZ2VuX2ludF9tb2RlIChJTlRWQUwgKG9wMSksDQo+ID4+ IHdvcmRfbW9kZSksDQo+ID4+ID4gIAkJCQkgICAgIE5VTExfUlRYLCAxLCBPUFRBQl9ESVJFQ1Qp Ow0KPiA+PiA+ICAgICAgICBpZiAocmVtYWluZGVyID09IE5VTExfUlRYKQ0KPiA+PiA+ICAJcmV0 dXJuIE5VTExfUlRYOw0KPiA+PiA+IEBAIC0xMjExLDggKzEyMTAsOCBAQCBleHBhbmRfZG91Ymxl d29yZF9kaXZtb2QNCj4gKG1hY2hpbmVfbW9kZQ0KPiA+PiBtb2RlLCBydHgNCj4gPj4gPiBvcDAs IHJ0eCBvcDEsIHJ0eCAqcmVtLA0KPiA+PiA+DQo+ID4+ID4gICAgaWYgKG9wMTEgIT0gY29uc3Qx X3J0eCkNCj4gPj4gPiAgICAgIHsNCj4gPj4gPiAtICAgICAgcnR4IHJlbTIgPSBleHBhbmRfZGl2 bW9kICgxLCBUUlVOQ19NT0RfRVhQUiwgbW9kZSwgTlVMTCwNCj4gTlVMTCwNCj4gPj4gcXVvdDEs DQo+ID4+ID4gLQkJCQlvcDExLCBOVUxMX1JUWCwgdW5zaWduZWRwLA0KPiA+PiBPUFRBQl9ESVJF Q1QpOw0KPiA+PiA+ICsgICAgICBydHggcmVtMiA9IGV4cGFuZF9kaXZtb2QgKDEsIFRSVU5DX01P RF9FWFBSLCBtb2RlLCBxdW90MSwNCj4gPj4gb3AxMSwNCj4gPj4gPiArCQkJCU5VTExfUlRYLCB1 bnNpZ25lZHAsIE9QVEFCX0RJUkVDVCk7DQo+ID4+ID4gICAgICAgIGlmIChyZW0yID09IE5VTExf UlRYKQ0KPiA+PiA+ICAJcmV0dXJuIE5VTExfUlRYOw0KPiA+PiA+DQo+ID4+ID4gQEAgLTEyMjYs OCArMTIyNSw4IEBAIGV4cGFuZF9kb3VibGV3b3JkX2Rpdm1vZA0KPiAobWFjaGluZV9tb2RlDQo+ ID4+IG1vZGUsIHJ0eCBvcDAsIHJ0eCBvcDEsIHJ0eCAqcmVtLA0KPiA+PiA+ICAgICAgICBpZiAo cmVtMiA9PSBOVUxMX1JUWCkNCj4gPj4gPiAgCXJldHVybiBOVUxMX1JUWDsNCj4gPj4gPg0KPiA+ PiA+IC0gICAgICBydHggcXVvdDIgPSBleHBhbmRfZGl2bW9kICgwLCBUUlVOQ19ESVZfRVhQUiwg bW9kZSwgTlVMTCwNCj4gTlVMTCwNCj4gPj4gcXVvdDEsDQo+ID4+ID4gLQkJCQkgb3AxMSwgTlVM TF9SVFgsIHVuc2lnbmVkcCwNCj4gPj4gT1BUQUJfRElSRUNUKTsNCj4gPj4gPiArICAgICAgcnR4 IHF1b3QyID0gZXhwYW5kX2Rpdm1vZCAoMCwgVFJVTkNfRElWX0VYUFIsIG1vZGUsIHF1b3QxLA0K PiBvcDExLA0KPiA+PiA+ICsJCQkJIE5VTExfUlRYLCB1bnNpZ25lZHAsIE9QVEFCX0RJUkVDVCk7 DQo+ID4+ID4gICAgICAgIGlmIChxdW90MiA9PSBOVUxMX1JUWCkNCj4gPj4gPiAgCXJldHVybiBO VUxMX1JUWDsNCj4gPj4gPg0KPiA+PiA+IGRpZmYgLS1naXQgYS9nY2Mvb3B0YWJzLmRlZiBiL2dj Yy9vcHRhYnMuZGVmIGluZGV4DQo+ID4+ID4NCj4gPj4NCj4gNjk1ZjU5MTFiMzAwYzljYTU3Mzdk ZTliZTgwOWZhMDFhYWJlNWUwMS4uNzdhMTUyZWMyZDE5NDlkZWNhMmMyZDdhNQ0KPiA+PiBjY2IN Cj4gPj4gPiBmNjE0Nzk0NzM1MWEgMTAwNjQ0DQo+ID4+ID4gLS0tIGEvZ2NjL29wdGFicy5kZWYN Cj4gPj4gPiArKysgYi9nY2Mvb3B0YWJzLmRlZg0KPiA+PiA+IEBAIC0yNjUsNiArMjY1LDggQEAg T1BUQUJfRCAoc3BhY2VzaGlwX29wdGFiLCAic3BhY2VzaGlwJGEzIikNCj4gPj4gPg0KPiA+PiA+ ICBPUFRBQl9EIChzbXVsX2hpZ2hwYXJ0X29wdGFiLCAic211bCRhM19oaWdocGFydCIpICBPUFRB Ql9EDQo+ID4+ID4gKHVtdWxfaGlnaHBhcnRfb3B0YWIsICJ1bXVsJGEzX2hpZ2hwYXJ0IikNCj4g Pj4gPiArT1BUQUJfRCAoc2FkZF9oaWdocGFydF9vcHRhYiwgInNhZGQkYTNfaGlnaHBhcnQiKSBP UFRBQl9EDQo+ID4+ID4gKyh1YWRkX2hpZ2hwYXJ0X29wdGFiLCAidWFkZCRhM19oaWdocGFydCIp DQo+ID4+ID4NCj4gPj4gPiAgT1BUQUJfRCAoY21wbWVtX29wdGFiLCAiY21wbWVtJGEiKSAgT1BU QUJfRCAoY21wc3RyX29wdGFiLA0KPiA+PiA+ICJjbXBzdHIkYSIpIGRpZmYgLS1naXQgYS9nY2Mv dGFyZ2V0LmRlZiBiL2djYy90YXJnZXQuZGVmIGluZGV4DQo+ID4+ID4NCj4gPj4NCj4gZGI4YWYw Y2JlODE2MjQ1MTNmMTE0ZmM5YmJkOGJlNjFkODU1ZjQwOS4uZTBhNWM3YWRiZDk2MmY1ZDA4ZWQw OGQxZA0KPiA+PiA4MWENCj4gPj4gPiBmYTJjMmJhYTY0YTUgMTAwNjQ0DQo+ID4+ID4gLS0tIGEv Z2NjL3RhcmdldC5kZWYNCj4gPj4gPiArKysgYi9nY2MvdGFyZ2V0LmRlZg0KPiA+PiA+IEBAIC0x OTA1LDI1ICsxOTA1LDYgQEAgaW1wbGVtZW50YXRpb24gYXBwcm9hY2hlcyBpdHNlbGYuIiwNCj4g Pj4gPiAgCWNvbnN0IHZlY19wZXJtX2luZGljZXMgJnNlbCksDQo+ID4+ID4gICBOVUxMKQ0KPiA+ PiA+DQo+ID4+ID4gLURFRkhPT0sNCj4gPj4gPiAtKGNhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCwN Cj4gPj4gPiAtICJUaGlzIGhvb2sgaXMgdXNlZCB0byB0ZXN0IHdoZXRoZXIgdGhlIHRhcmdldCBo YXMgYSBzcGVjaWFsDQo+ID4+ID4gbWV0aG9kIG9mXG5cIC1kaXZpc2lvbiBvZiB2ZWN0b3JzIG9m IHR5cGUgQHZhcnt2ZWN0eXBlfSB1c2luZyB0aGUNCj4gPj4gPiB2YWx1ZSBAdmFye2NvbnN0YW50 fSxcblwgLWFuZCBwcm9kdWNpbmcgYSB2ZWN0b3Igb2YgdHlwZQ0KPiA+PiA+IEB2YXJ7dmVjdHlw ZX0uICBUaGUgZGl2aXNpb25cblwgLXdpbGwgdGhlbiBub3QgYmUgZGVjb21wb3NlZCBieSB0aGUN Cj4gPj4gPiB2ZWN0b3JpemVyIGFuZCBrZXB0IGFzIGEgZGl2LlxuXCAtXG5cIC1XaGVuIHRoZSBo b29rIGlzIGJlaW5nIHVzZWQNCj4gPj4gPiB0byB0ZXN0IHdoZXRoZXIgdGhlIHRhcmdldCBzdXBw b3J0cyBhIHNwZWNpYWxcblwgLWRpdmlkZSwNCj4gPj4gPiBAdmFye2luMH0sIEB2YXJ7aW4xfSwg YW5kIEB2YXJ7b3V0cHV0fSBhcmUgYWxsIG51bGwuICBXaGVuIHRoZQ0KPiA+PiA+IGhvb2tcblwg LWlzIGJlaW5nIHVzZWQgdG8gZW1pdCBhIGRpdmlzaW9uLCBAdmFye2luMH0gYW5kIEB2YXJ7aW4x fQ0KPiA+PiA+IGFyZSB0aGUgc291cmNlXG5cIC12ZWN0b3JzIG9mIHR5cGUgQHZhcnt2ZWN0dHlw ZX0gYW5kIEB2YXJ7b3V0cHV0fQ0KPiA+PiA+IGlzIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3Igb2Zc blwgLXR5cGUgQHZhcnt2ZWN0eXBlfS5cblwgLVxuXA0KPiA+PiA+IC1SZXR1cm4gdHJ1ZSBpZiB0 aGUgb3BlcmF0aW9uIGlzIHBvc3NpYmxlLCBlbWl0dGluZyBpbnN0cnVjdGlvbnMNCj4gPj4gPiBm b3IgaXRcblwgLWlmIHJ0eGVzIGFyZSBwcm92aWRlZCBhbmQgdXBkYXRpbmcgQHZhcntvdXRwdXR9 LiIsDQo+ID4+ID4gLSBib29sLCAoZW51bSB0cmVlX2NvZGUsIHRyZWUgdmVjdHlwZSwgd2lkZV9p bnQgY29uc3RhbnQsIHJ0eCAqb3V0cHV0LA0KPiA+PiA+IC0JcnR4IGluMCwgcnR4IGluMSksDQo+ ID4+ID4gLSBkZWZhdWx0X2Nhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCkNCj4gPj4gPiAtDQo+ID4+ ID4gIC8qIFJldHVybiB0cnVlIGlmIHRoZSB0YXJnZXQgc3VwcG9ydHMgbWlzYWxpZ25lZCBzdG9y ZS9sb2FkIG9mIGENCj4gPj4gPiAgICAgc3BlY2lmaWMgZmFjdG9yIGRlbm90ZWQgaW4gdGhlIHRo aXJkIHBhcmFtZXRlci4gIFRoZSBsYXN0IHBhcmFtZXRlcg0KPiA+PiA+ICAgICBpcyB0cnVlIGlm IHRoZSBhY2Nlc3MgaXMgZGVmaW5lZCBpbiBhIHBhY2tlZCBzdHJ1Y3QuICAqLyBkaWZmDQo+ID4+ ID4gLS1naXQgYS9nY2MvdGFyZ2V0LmggYi9nY2MvdGFyZ2V0LmggaW5kZXgNCj4gPj4gPg0KPiA+ Pg0KPiAwM2ZkMDNhNTIwNzViNDgzNjE1OTAzNWVjMTQwNzhjMGFlYmRkN2U5Li45MzY5MTg4Mjc1 NzIzMmM1MTRmY2E4MmI5DQo+ID4+IDlmOQ0KPiA+PiA+IDEzMTU4YzJkNDdiMSAxMDA2NDQNCj4g Pj4gPiAtLS0gYS9nY2MvdGFyZ2V0LmgNCj4gPj4gPiArKysgYi9nY2MvdGFyZ2V0LmgNCj4gPj4g PiBAQCAtNTEsNyArNTEsNiBAQA0KPiA+PiA+ICAjaW5jbHVkZSAiaW5zbi1jb2Rlcy5oIg0KPiA+ PiA+ICAjaW5jbHVkZSAidG0uaCINCj4gPj4gPiAgI2luY2x1ZGUgImhhcmQtcmVnLXNldC5oIg0K PiA+PiA+IC0jaW5jbHVkZSAidHJlZS1jb3JlLmgiDQo+ID4+ID4NCj4gPj4gPiAgI2lmIENIRUNL SU5HX1ANCj4gPj4gPg0KPiA+PiA+IGRpZmYgLS1naXQgYS9nY2MvdGFyZ2hvb2tzLmggYi9nY2Mv dGFyZ2hvb2tzLmggaW5kZXgNCj4gPj4gPg0KPiA+Pg0KPiBhMWRmMjYwZjU0ODNkYzg0ZjE4ZDhm MTJjNTIwMjQ4NGEzMmQ1YmI3Li5hNmE0ODA5Y2E5MWJhYTVkN2ZhZDIyNDQ1NA0KPiA+PiA5Mw0K PiA+PiA+IDE3YTMxMzkwZjBjMiAxMDA2NDQNCj4gPj4gPiAtLS0gYS9nY2MvdGFyZ2hvb2tzLmgN Cj4gPj4gPiArKysgYi9nY2MvdGFyZ2hvb2tzLmgNCj4gPj4gPiBAQCAtMjA5LDggKzIwOSw2IEBA IGV4dGVybiB2b2lkDQo+IGRlZmF1bHRfYWRkcl9zcGFjZV9kaWFnbm9zZV91c2FnZQ0KPiA+PiA+ IChhZGRyX3NwYWNlX3QsIGxvY2F0aW9uX3QpOyAgZXh0ZXJuIHJ0eCBkZWZhdWx0X2FkZHJfc3Bh Y2VfY29udmVydA0KPiA+PiA+IChydHgsIHRyZWUsIHRyZWUpOyAgZXh0ZXJuIHVuc2lnbmVkIGlu dA0KPiA+PiA+IGRlZmF1bHRfY2FzZV92YWx1ZXNfdGhyZXNob2xkICh2b2lkKTsgIGV4dGVybiBi b29sDQo+ID4+ID4gZGVmYXVsdF9oYXZlX2NvbmRpdGlvbmFsX2V4ZWN1dGlvbiAodm9pZCk7IC1l eHRlcm4gYm9vbA0KPiA+PiA+IGRlZmF1bHRfY2FuX3NwZWNpYWxfZGl2X2J5X2NvbnN0IChlbnVt IHRyZWVfY29kZSwgdHJlZSwNCj4gPj4gd2lkZV9pbnQsDQo+ID4+ID4gLQkJCQkJICAgICAgcnR4 ICosIHJ0eCwgcnR4KTsNCj4gPj4gPg0KPiA+PiA+ICBleHRlcm4gYm9vbCBkZWZhdWx0X2xpYmNf aGFzX2Z1bmN0aW9uIChlbnVtIGZ1bmN0aW9uX2NsYXNzLCB0cmVlKTsNCj4gPj4gPiBleHRlcm4g Ym9vbCBkZWZhdWx0X2xpYmNfaGFzX2Zhc3RfZnVuY3Rpb24gKGludCBmY29kZSk7IGRpZmYgLS1n aXQNCj4gPj4gPiBhL2djYy90YXJnaG9va3MuY2MgYi9nY2MvdGFyZ2hvb2tzLmNjIGluZGV4DQo+ ID4+ID4NCj4gPj4NCj4gZmUwMTE2NTIxZmVhZjMyMTg3ZTdiYzExM2JmOTNiMTgwNTg1MmM3OS4u MjExNTI1NzIwYTYyMGQ2ZjUzM2UyZGE5MWUNCj4gPj4gMDMNCj4gPj4gPiA4NzczMzdhOTMxZTcg MTAwNjQ0DQo+ID4+ID4gLS0tIGEvZ2NjL3Rhcmdob29rcy5jYw0KPiA+PiA+ICsrKyBiL2djYy90 YXJnaG9va3MuY2MNCj4gPj4gPiBAQCAtMTg0MCwxNCArMTg0MCw2IEBAIGRlZmF1bHRfaGF2ZV9j b25kaXRpb25hbF9leGVjdXRpb24gKHZvaWQpDQo+ID4+ID4gICAgcmV0dXJuIEhBVkVfY29uZGl0 aW9uYWxfZXhlY3V0aW9uOyAgfQ0KPiA+PiA+DQo+ID4+ID4gLS8qIERlZmF1bHQgdGhhdCBubyBk aXZpc2lvbiBieSBjb25zdGFudCBvcGVyYXRpb25zIGFyZSBzcGVjaWFsLg0KPiA+PiA+ICovIC1i b29sIC1kZWZhdWx0X2Nhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCAoZW51bSB0cmVlX2NvZGUsIHRy ZWUsDQo+ID4+ID4gd2lkZV9pbnQsIHJ0eCAqLCBydHgsDQo+ID4+ID4gLQkJCQkgIHJ0eCkNCj4g Pj4gPiAtew0KPiA+PiA+IC0gIHJldHVybiBmYWxzZTsNCj4gPj4gPiAtfQ0KPiA+PiA+IC0NCj4g Pj4gPiAgLyogQnkgZGVmYXVsdCB3ZSBhc3N1bWUgdGhhdCBjOTkgZnVuY3Rpb25zIGFyZSBwcmVz ZW50IGF0IHRoZSBydW50aW1lLA0KPiA+PiA+ICAgICBidXQgc2luY29zIGlzIG5vdC4gICovDQo+ ID4+ID4gIGJvb2wNCj4gPj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVj dC92ZWN0LWRpdi1iaXRtYXNrLTQuYw0KPiA+PiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVj dC92ZWN0LWRpdi1iaXRtYXNrLTQuYw0KPiA+PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+ ID4gaW5kZXgNCj4gPj4gPg0KPiA+Pg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwLi5jODFmODk0NjkyMjI1MDIzNGJmNzU5ZTBhMA0KPiA+PiBhMA0KPiA+PiA+IDRl YThjMWY3M2UzYw0KPiA+PiA+IC0tLSAvZGV2L251bGwNCj4gPj4gPiArKysgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy92ZWN0L3ZlY3QtZGl2LWJpdG1hc2stNC5jDQo+ID4+ID4gQEAgLTAsMCArMSwy NSBAQA0KPiA+PiA+ICsvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2ludCB9 ICovDQo+ID4+ID4gKw0KPiA+PiA+ICsjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4+ID4gKyNpbmNs dWRlICJ0cmVlLXZlY3QuaCINCj4gPj4gPiArDQo+ID4+ID4gK3R5cGVkZWYgdW5zaWduZWQgX19h dHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fICgxNikpKSBWOw0KPiA+PiA+ICsNCj4gPj4gPiAr c3RhdGljIF9fYXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fbm9j bG9uZV9fKSkNCj4gPj4gPiArViBmb28gKFYgdiwgdW5zaWduZWQgc2hvcnQgaSkgew0KPiA+PiA+ ICsgIHYgLz0gaTsNCj4gPj4gPiArICByZXR1cm4gdjsNCj4gPj4gPiArfQ0KPiA+PiA+ICsNCj4g Pj4gPiAraW50DQo+ID4+ID4gK21haW4gKHZvaWQpDQo+ID4+ID4gK3sNCj4gPj4gPiArICBWIHYg PSBmb28gKChWKSB7IDB4ZmZmZmZmZmYsIDB4ZmZmZmZmZmYsIDB4ZmZmZmZmZmYsIDB4ZmZmZmZm ZmYNCj4gPj4gPiArfSwgMHhmZmZmKTsNCj4gPj4gPiArICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp IDwgc2l6ZW9mICh2KSAvIHNpemVvZiAodlswXSk7IGkrKykNCj4gPj4gPiArICAgIGlmICh2W2ld ICE9IDB4MDAwMTAwMDEpDQo+ID4+ID4gKyAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gPj4g PiArICByZXR1cm4gMDsNCj4gPj4gPiArfQ0KPiA+PiA+ICsNCj4gPj4gPiArLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLW5vdCAidmVjdF9yZWNvZ19kaXZtb2RfcGF0dGVybjoNCj4gPj4g PiArZGV0ZWN0ZWQiICJ2ZWN0IiB7IHRhcmdldCBhYXJjaDY0Ki0qLSogfSB9IH0gKi8NCj4gPj4g PiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNr LTUuYw0KPiA+PiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNr LTUuYw0KPiA+PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+ID4gaW5kZXgNCj4gPj4gPg0K PiA+Pg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGViMWE0 ZGFjYmE0ODFlNjMwNmI0OTkxDQo+ID4+IDRkMg0KPiA+PiA+IGEyOWI5MzNkZTYyNQ0KPiA+PiA+ IC0tLSAvZGV2L251bGwNCj4gPj4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3Zl Y3QtZGl2LWJpdG1hc2stNS5jDQo+ID4+ID4gQEAgLTAsMCArMSw1OCBAQA0KPiA+PiA+ICsvKiB7 IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2ludCB9ICovDQo+ID4+ID4gKw0KPiA+ PiA+ICsjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4+ID4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPiA+ PiA+ICsjaW5jbHVkZSAidHJlZS12ZWN0LmgiDQo+ID4+ID4gKw0KPiA+PiA+ICsjZGVmaW5lIE4g NTANCj4gPj4gPiArI2RlZmluZSBUWVBFIHVpbnQ4X3QNCj4gPj4gPiArDQo+ID4+ID4gKyNpZm5k ZWYgREVCVUcNCj4gPj4gPiArI2RlZmluZSBERUJVRyAwDQo+ID4+ID4gKyNlbmRpZg0KPiA+PiA+ ICsNCj4gPj4gPiArI2RlZmluZSBCQVNFICgoVFlQRSkgLTEgPCAwID8gLTEyNiA6IDQpDQo+ID4+ ID4gKw0KPiA+PiA+ICsNCj4gPj4gPiArX19hdHRyaWJ1dGVfXygobm9pcGEsIG5vaW5saW5lLCBv cHRpbWl6ZSgiTzEiKSkpIHZvaWQgZnVuMShUWVBFKg0KPiA+PiA+ICtyZXN0cmljdCBwaXhlbCwg VFlQRSBsZXZlbCwgaW50IG4pIHsNCj4gPj4gPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkr PTEpDQo+ID4+ID4gKyAgICBwaXhlbFtpXSA9IChwaXhlbFtpXSArIGxldmVsKSAvIDB4ZmY7IH0N Cj4gPj4gPiArDQo+ID4+ID4gK19fYXR0cmlidXRlX18oKG5vaXBhLCBub2lubGluZSwgb3B0aW1p emUoIk8zIikpKSB2b2lkIGZ1bjIoVFlQRSoNCj4gPj4gPiArcmVzdHJpY3QgcGl4ZWwsIFRZUEUg bGV2ZWwsIGludCBuKSB7DQo+ID4+ID4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKz0xKQ0K PiA+PiA+ICsgICAgcGl4ZWxbaV0gPSAocGl4ZWxbaV0gKyBsZXZlbCkgLyAweGZmOyB9DQo+ID4+ ID4gKw0KPiA+PiA+ICtpbnQgbWFpbiAoKQ0KPiA+PiA+ICt7DQo+ID4+ID4gKyAgVFlQRSBhW05d Ow0KPiA+PiA+ICsgIFRZUEUgYltOXTsNCj4gPj4gPiArDQo+ID4+ID4gKyAgZm9yIChpbnQgaSA9 IDA7IGkgPCBOOyArK2kpDQo+ID4+ID4gKyAgICB7DQo+ID4+ID4gKyAgICAgIGFbaV0gPSBCQVNF ICsgaSAqIDEzOw0KPiA+PiA+ICsgICAgICBiW2ldID0gQkFTRSArIGkgKiAxMzsNCj4gPj4gPiAr ICAgICAgaWYgKERFQlVHKQ0KPiA+PiA+ICsgICAgICAgIHByaW50ZiAoIiVkOiAweCV4XG4iLCBp LCBhW2ldKTsNCj4gPj4gPiArICAgIH0NCj4gPj4gPiArDQo+ID4+ID4gKyAgZnVuMSAoYSwgTiAv IDIsIE4pOw0KPiA+PiA+ICsgIGZ1bjIgKGIsIE4gLyAyLCBOKTsNCj4gPj4gPiArDQo+ID4+ID4g KyAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyArK2kpDQo+ID4+ID4gKyAgICB7DQo+ID4+ID4gKyAg ICAgIGlmIChERUJVRykNCj4gPj4gPiArICAgICAgICBwcmludGYgKCIlZCA9IDB4JXggPT0gMHgl eFxuIiwgaSwgYVtpXSwgYltpXSk7DQo+ID4+ID4gKw0KPiA+PiA+ICsgICAgICBpZiAoYVtpXSAh PSBiW2ldKQ0KPiA+PiA+ICsgICAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gPj4gPiArICAg IH0NCj4gPj4gPiArICByZXR1cm4gMDsNCj4gPj4gPiArfQ0KPiA+PiA+ICsNCj4gPj4gPiArLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJkaXZtb2QgcGF0dGVybiByZWNvZ25pemVkIiAi dmVjdCINCj4gPj4gPiAreyB0YXJnZXQgYWFyY2g2NCotKi0qIH0gfSB9ICovDQo+ID4+ID4gZGlm ZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtZ2VuZXJpYy5jYyBiL2djYy90cmVlLXZlY3QtZ2VuZXJp Yy5jYw0KPiA+PiA+IGluZGV4DQo+ID4+ID4NCj4gPj4NCj4gMTY2YTI0OGY0Yjk1MTJkNGM2ZmM4 ZDc2MGI0NThiN2E0NjdmNzc5MC4uNTE5YTgyNGVjNzI3ZDRkNGYyOGMxNDA3N2QNCj4gPj4gYzMN Cj4gPj4gPiBlOTcwYmVkNzVlZjYgMTAwNjQ0DQo+ID4+ID4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1n ZW5lcmljLmNjDQo+ID4+ID4gKysrIGIvZ2NjL3RyZWUtdmVjdC1nZW5lcmljLmNjDQo+ID4+ID4g QEAgLTEyMzcsMTcgKzEyMzcsNiBAQCBleHBhbmRfdmVjdG9yX29wZXJhdGlvbg0KPiA+PiAoZ2lt cGxlX3N0bXRfaXRlcmF0b3IgKmdzaSwgdHJlZSB0eXBlLCB0cmVlIGNvbXB1dGVfdHlwZQ0KPiA+ PiA+ICAJICB0cmVlIHJoczIgPSBnaW1wbGVfYXNzaWduX3JoczIgKGFzc2lnbik7DQo+ID4+ID4g IAkgIHRyZWUgcmV0Ow0KPiA+PiA+DQo+ID4+ID4gLQkgIC8qIENoZWNrIGlmIHRoZSB0YXJnZXQg d2FzIGdvaW5nIHRvIGhhbmRsZSBpdCB0aHJvdWdoIHRoZSBzcGVjaWFsDQo+ID4+ID4gLQkgICAg IGRpdmlzaW9uIGNhbGxiYWNrIGhvb2suICAqLw0KPiA+PiA+IC0JICB0cmVlIGNzdCA9IHVuaWZv cm1faW50ZWdlcl9jc3RfcCAocmhzMik7DQo+ID4+ID4gLQkgIGlmIChjc3QgJiYNCj4gPj4gPiAt CSAgICAgIHRhcmdldG0udmVjdG9yaXplLmNhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCAoY29kZSwg dHlwZSwNCj4gPj4gPiAtCQkJCQkJCSAgd2k6OnRvX3dpZGUgKGNzdCksDQo+ID4+ID4gLQkJCQkJ CQkgIE5VTEwsDQo+ID4+ID4gLQkJCQkJCQkgIE5VTExfUlRYLA0KPiA+PiBOVUxMX1JUWCkpDQo+ ID4+ID4gLQkgICAgcmV0dXJuIE5VTExfVFJFRTsNCj4gPj4gPiAtDQo+ID4+ID4gLQ0KPiA+PiA+ ICAJICBpZiAoIW9wdGltaXplDQo+ID4+ID4gIAkgICAgICB8fCAhVkVDVE9SX0lOVEVHRVJfVFlQ RV9QICh0eXBlKQ0KPiA+PiA+ICAJICAgICAgfHwgVFJFRV9DT0RFIChyaHMyKSAhPSBWRUNUT1Jf Q1NUIGRpZmYgLS1naXQNCj4gPj4gPiBhL2djYy90cmVlLXZlY3QtcGF0dGVybnMuY2MgYi9nY2Mv dHJlZS12ZWN0LXBhdHRlcm5zLmNjIGluZGV4DQo+ID4+ID4NCj4gPj4NCj4gNjkzNGFlYmM2OWYy MzFhZjI0NjY4ZjBhMWMzZDE0MGU5N2Y1NTQ4Ny4uZTM5ZDdlNmIzNjJlZjQ0ZWIyZmM0NjdmMzMN Cj4gPj4gNjkNCj4gPj4gPiBkZTJhZmVhMTM5ZDYgMTAwNjQ0DQo+ID4+ID4gLS0tIGEvZ2NjL3Ry ZWUtdmVjdC1wYXR0ZXJucy5jYw0KPiA+PiA+ICsrKyBiL2djYy90cmVlLXZlY3QtcGF0dGVybnMu Y2MNCj4gPj4gPiBAQCAtMzkxNCwxMiArMzkxNCw4MiBAQCB2ZWN0X3JlY29nX2Rpdm1vZF9wYXR0 ZXJuICh2ZWNfaW5mbw0KPiAqdmluZm8sDQo+ID4+ID4gICAgICAgIHJldHVybiBwYXR0ZXJuX3N0 bXQ7DQo+ID4+ID4gICAgICB9DQo+ID4+ID4gICAgZWxzZSBpZiAoKGNzdCA9IHVuaWZvcm1faW50 ZWdlcl9jc3RfcCAob3BybmQxKSkNCj4gPj4gPiAtCSAgICYmIHRhcmdldG0udmVjdG9yaXplLmNh bl9zcGVjaWFsX2Rpdl9ieV9jb25zdCAocmhzX2NvZGUsDQo+ID4+IHZlY3R5cGUsDQo+ID4+ID4g LQkJCQkJCQkgIHdpOjp0b193aWRlIChjc3QpLA0KPiA+PiA+IC0JCQkJCQkJICBOVUxMLCBOVUxM X1JUWCwNCj4gPj4gPiAtCQkJCQkJCSAgTlVMTF9SVFgpKQ0KPiA+PiA+ICsJICAgJiYgVFlQRV9V TlNJR05FRCAoaXR5cGUpDQo+ID4+ID4gKwkgICAmJiByaHNfY29kZSA9PSBUUlVOQ19ESVZfRVhQ Ug0KPiA+PiA+ICsJICAgJiYgdmVjdHlwZQ0KPiA+PiA+ICsJICAgJiYgZGlyZWN0X2ludGVybmFs X2ZuX3N1cHBvcnRlZF9wIChJRk5fQURESCwgdmVjdHlwZSwNCj4gPj4gPiArCQkJCQkgICAgICBP UFRJTUlaRV9GT1JfU1BFRUQpKQ0KPiA+PiA+ICAgICAgew0KPiA+PiA+IC0gICAgICByZXR1cm4g TlVMTDsNCj4gPj4gPiArICAgICAgLyogZGl2IG9wdGltaXphdGlvbnMgdXNpbmcgbmFycm93aW5n cw0KPiA+PiA+ICsgICAgICAgd2UgY2FuIGRvIHRoZSBkaXZpc2lvbiBlLmcuIHNob3J0cyBieSAy NTUgZmFzdGVyIGJ5IGNhbGN1bGF0aW5nIGl0IGFzDQo+ID4+ID4gKyAgICAgICAoeCArICgoeCAr IDI1NykgPj4gOCkpID4+IDggYXNzdW1pbmcgdGhlIG9wZXJhdGlvbiBpcyBkb25lIGluDQo+ID4+ ID4gKyAgICAgICBkb3VibGUgdGhlIHByZWNpc2lvbiBvZiB4Lg0KPiA+PiA+ICsNCj4gPj4gPiAr ICAgICAgIElmIHdlIGltYWdpbmUgYSBzaG9ydCBhcyBiZWluZyBjb21wb3NlZCBvZiB0d28gYmxv Y2tzIG9mIGJ5dGVzDQo+IHRoZW4NCj4gPj4gPiArICAgICAgIGFkZGluZyAyNTcgb3IgMGIwMDAw XzAwMDFfMDAwMF8wMDAxIHRvIHRoZSBudW1iZXIgaXMgZXF1aXZhbGVudA0KPiB0bw0KPiA+PiA+ ICsgICAgICAgYWRkaW5nIDEgdG8gZWFjaCBzdWIgY29tcG9uZW50Og0KPiA+PiA+ICsNCj4gPj4g PiArCSAgICBzaG9ydCB2YWx1ZSBvZiAxNi1iaXRzDQo+ID4+ID4gKyAgICAgICDilIzilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJANCj4gPj4gPiArICAgICAgIOKUgiAgICAg ICAgICAgICAg4pSCICAgICAgICAgICAgICAgIOKUgg0KPiA+PiA+ICsgICAgICAg4pSU4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYDQo+ID4+ID4gKwkgOC1iaXQgcGFydDEg 4payICA4LWJpdCBwYXJ0MiAgIOKWsg0KPiA+PiA+ICsJCSAgICAg4pSCICAgICAgICAgICAgICAg IOKUgg0KPiA+PiA+ICsJCSAgICAg4pSCICAgICAgICAgICAgICAgIOKUgg0KPiA+PiA+ICsJCSAg ICArMSAgICAgICAgICAgICAgICsxDQo+ID4+ID4gKw0KPiA+PiA+ICsgICAgICAgYWZ0ZXIgdGhl IGZpcnN0IGFkZGl0aW9uLCB3ZSBoYXZlIHRvIHNoaWZ0IHJpZ2h0IGJ5IDgsIGFuZCBuYXJyb3cg dGhlDQo+ID4+ID4gKyAgICAgICByZXN1bHRzIGJhY2sgdG8gYSBieXRlLiAgUmVtZW1iZXIgdGhh dCB0aGUgYWRkaXRpb24gbXVzdCBiZSBkb25lDQo+IGluDQo+ID4+ID4gKyAgICAgICBkb3VibGUg dGhlIHByZWNpc2lvbiBvZiB0aGUgaW5wdXQuICBIb3dldmVyIGlmIHdlIGtub3cgdGhhdA0KPiA+ PiA+ICsgdGhlDQo+ID4+IGFkZGl0aW9uDQo+ID4+ID4gKyAgICAgICBgeCArIDI1N2AgZG9lcyBu b3Qgb3ZlcmZsb3cgdGhlbiB3ZSBjYW4gZG8gdGhlIG9wZXJhdGlvbiBpbg0KPiA+PiA+ICsgdGhl DQo+ID4+IGN1cnJlbnQNCj4gPj4gPiArICAgICAgIHByZWNpc2lvbi4gIEluIHdoaWNoIGNhc2Ug d2UgZG9uJ3QgbmVlZCB0aGUgcGFjayBhbmQgdW5wYWNrcy4gICovDQo+ID4+ID4gKyAgICAgIGF1 dG8gd2NzdCA9IHdpOjp0b193aWRlIChjc3QpOw0KPiA+PiA+ICsgICAgICBpbnQgcG93ID0gd2k6 OmV4YWN0X2xvZzIgKHdjc3QgKyAxKTsNCj4gPj4gPiArICAgICAgaWYgKHBvdyA9PSAoaW50KSAo ZWxlbWVudF9wcmVjaXNpb24gKHZlY3R5cGUpIC8gMikpDQo+ID4+ID4gKwl7DQo+ID4+ID4gKwkg IHdpZGVfaW50IG1pbixtYXg7DQo+ID4+ID4gKwkgIC8qIElmIHdlJ3JlIGluIGEgcGF0dGVybiB3 ZSBuZWVkIHRvIGZpbmQgdGhlIG9yZ2luYWwgZGVmaW5pdGlvbi4gICovDQo+ID4+ID4gKwkgIHRy ZWUgb3AwID0gb3BybmQwOw0KPiA+PiA+ICsJICBnaW1wbGUgKnN0bXQgPSBTU0FfTkFNRV9ERUZf U1RNVCAob3BybmQwKTsNCj4gPj4gPiArCSAgc3RtdF92ZWNfaW5mbyBzdG10X2luZm8gPSB2aW5m by0+bG9va3VwX3N0bXQgKHN0bXQpOw0KPiA+PiA+ICsJICBpZiAoaXNfcGF0dGVybl9zdG10X3Ag KHN0bXRfaW5mbykpDQo+ID4+ID4gKwkgICAgew0KPiA+PiA+ICsJICAgICAgYXV0byBvcmlnX3N0 bXQgPSBTVE1UX1ZJTkZPX1JFTEFURURfU1RNVCAoc3RtdF9pbmZvKTsNCj4gPj4gPiArCSAgICAg IGlmIChpc19naW1wbGVfYXNzaWduIChTVE1UX1ZJTkZPX1NUTVQgKG9yaWdfc3RtdCkpKQ0KPiA+ PiA+ICsJCW9wMCA9IGdpbXBsZV9hc3NpZ25fbGhzIChTVE1UX1ZJTkZPX1NUTVQgKG9yaWdfc3Rt dCkpOw0KPiA+PiA+ICsJICAgIH0NCj4gPj4NCj4gPj4gSWYgdGhpcyBpcyBnZW5lcmFsbHkgc2Fm ZSAoSSdtIHNraXBwaW5nIHRoaW5raW5nIGFib3V0IGl0IGluIHRoZQ0KPiA+PiBpbnRlcmVzdHMg b2YgYSBxdWljayByZXZpZXcgOi0pKSwgdGhlbiBJIHRoaW5rIGl0IHNob3VsZCBiZSBkb25lIGlu DQo+ID4+IHZlY3RfZ2V0X3JhbmdlX2luZm8gaW5zdGVhZC4gIFVzaW5nIGdpbXBsZV9nZXRfbGhz IHdvdWxkIGJlIG1vcmUNCj4gPj4gZ2VuZXJhbCB0aGFuIGhhbmRsaW5nIGp1c3QgYXNzaWdubWVu dHMuDQo+ID4+DQo+ID4+ID4gKw0KPiA+PiA+ICsJICAvKiBDaGVjayB0aGF0IG5vIG92ZXJmbG93 IHdpbGwgb2NjdXIuICBJZiB3ZSBkb24ndCBoYXZlIHJhbmdlDQo+ID4+ID4gKwkgICAgIGluZm9y bWF0aW9uIHdlIGNhbid0IHBlcmZvcm0gdGhlIG9wdGltaXphdGlvbi4gICovDQo+ID4+ID4gKwkg IGlmICh2ZWN0X2dldF9yYW5nZV9pbmZvIChvcDAsICZtaW4sICZtYXgpKQ0KPiA+PiA+ICsJICAg IHsNCj4gPj4gPiArCSAgICAgIHdpZGVfaW50IG9uZSA9IHdpOjp0b193aWRlIChidWlsZF9vbmVf Y3N0IChpdHlwZSkpOw0KPiA+PiA+ICsJICAgICAgd2lkZV9pbnQgYWRkZXIgPSB3aTo6YWRkIChv bmUsIHdpOjpsc2hpZnQgKG9uZSwgcG93KSk7DQo+ID4+ID4gKwkgICAgICB3aTo6b3ZlcmZsb3df dHlwZSBvdmY7DQo+ID4+ID4gKwkgICAgICAvKiBXZSBuZWVkIGFkZGVyIGFuZCBtYXggaW4gdGhl IHNhbWUgcHJlY2lzaW9uLiAgKi8NCj4gPj4gPiArCSAgICAgIHdpZGVfaW50IHphZGRlcg0KPiA+ PiA+ICsJCT0gd2lkZV9pbnRfc3RvcmFnZTo6ZnJvbSAoYWRkZXIsIHdpOjpnZXRfcHJlY2lzaW9u IChtYXgpLA0KPiA+PiA+ICsJCQkJCSAgVU5TSUdORUQpOw0KPiA+PiA+ICsJICAgICAgd2k6OmFk ZCAobWF4LCB6YWRkZXIsIFVOU0lHTkVELCAmb3ZmKTsNCj4gPj4NCj4gPj4gQ291bGQgeW91IGV4 cGxhaW4gdGhpcyBhIGJpdCBtb3JlPyAgV2hlbiBkbyB3ZSBoYXZlIG1pc21hdGNoZWQNCj4gPj4g cHJlY2lzaW9ucz8NCj4gPg0KPiA+IEMgcHJvbW90aW9uIHJ1bGVzIHdpbGwgcHJvbW90ZSBlLmcu DQo+ID4NCj4gPiB2b2lkIGZ1bjIodWludDhfdCogcmVzdHJpY3QgcGl4ZWwsIHVpbnQ4X3QgbGV2 ZWwsIGludCBuKSB7DQo+ID4gICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrPTEpDQo+ID4gICAg IHBpeGVsW2ldID0gKHBpeGVsW2ldICsgbGV2ZWwpIC8gMHhmZjsgfQ0KPiA+DQo+ID4gQW5kIGhh dmUgdGhlIGFkZGl0aW9uIGJlIGRvbmUgYXMgYSAzMiBiaXQgaW50ZWdlci4gIFRoZSB2ZWN0b3Jp emVyDQo+ID4gd2lsbCBkZW1vdGUgdGhpcyBkb3duIHRvIGEgc2hvcnQsIGJ1dCByYW5nZSBpbmZv cm1hdGlvbiBpcyBub3Qgc3RvcmVkDQo+ID4gZm9yIHBhdHRlcm5zLiAgU28gSW4gdGhlIGFib3Zl IHRoZSByYW5nZSB3aWxsIGNvcnJlY3RseSBiZSAweDFmZSBidXQNCj4gPiB0aGUgcHJlY2lzaW9u IHdpbGwgYmUgdGhhdCBvZiB0aGUgb3JpZ2luYWwgZXhwcmVzc2lvbiwgc28gMzIuICBUaGlzDQo+ ID4gd2lsbCBiZSBhIG1pc21hdGNoIHdpdGggaXR5cGUgd2hpY2ggaXMgZGVyaXZlZCBmcm9tIHRo ZSBzaXplIHRoZSB2ZWN0b3JpemVyDQo+IHdpbGwgcGVyZm9ybSB0aGUgb3BlcmF0aW9uIGluLg0K PiA+DQo+ID4gVGhhbmtzLA0KPiA+IFRhbWFyDQo+ID4NCj4gPj4NCj4gPj4gVGhhbmtzLA0KPiA+ PiBSaWNoYXJkDQo+ID4+DQo+ID4+ID4gKwkgICAgICBpZiAob3ZmID09IHdpOjpPVkZfTk9ORSkN Cj4gPj4gPiArCQl7DQo+ID4+ID4gKwkJICAqdHlwZV9vdXQgPSB2ZWN0eXBlOw0KPiA+PiA+ICsJ CSAgdHJlZSB0YWRkZXIgPSB3aWRlX2ludF90b190cmVlIChpdHlwZSwgYWRkZXIpOw0KPiA+PiA+ ICsJCSAgZ2NhbGwgKnBhdHQxDQo+ID4+ID4gKwkJICAgID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50 ZXJuYWwgKElGTl9BRERILCAyLCBvcHJuZDAsDQo+ID4+IHRhZGRlcik7DQo+ID4+ID4gKwkJICB0 cmVlIGxocyA9IHZlY3RfcmVjb2dfdGVtcF9zc2FfdmFyIChpdHlwZSwgTlVMTCk7DQo+ID4+ID4g KwkJICBnaW1wbGVfY2FsbF9zZXRfbGhzIChwYXR0MSwgbGhzKTsNCj4gPj4gPiArCQkgIGFwcGVu ZF9wYXR0ZXJuX2RlZl9zZXEgKHZpbmZvLCBzdG10X3ZpbmZvLCBwYXR0MSwNCj4gPj4gdmVjdHlw ZSk7DQo+ID4+ID4gKw0KPiA+PiA+ICsJCSAgcGF0dGVybl9zdG10DQo+ID4+ID4gKwkJICAgID0g Z2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKElGTl9BRERILCAyLCBvcHJuZDAsIGxocyk7DQo+ ID4+ID4gKwkJICBsaHMgPSB2ZWN0X3JlY29nX3RlbXBfc3NhX3ZhciAoaXR5cGUsIE5VTEwpOw0K PiA+PiA+ICsJCSAgZ2ltcGxlX2NhbGxfc2V0X2xocyAocGF0dGVybl9zdG10LCBsaHMpOw0KPiA+ PiA+ICsNCj4gPj4gPiArCQkgIHJldHVybiBwYXR0ZXJuX3N0bXQ7DQo+ID4+ID4gKwkJfQ0KPiA+ PiA+ICsJICAgIH0NCj4gPj4gPiArCX0NCj4gPj4gPiAgICAgIH0NCj4gPj4gPg0KPiA+PiA+ICAg IGlmIChwcmVjID4gSE9TVF9CSVRTX1BFUl9XSURFX0lOVCBkaWZmIC0tZ2l0DQo+ID4+ID4gYS9n Y2MvdHJlZS12ZWN0LXN0bXRzLmNjIGIvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYyBpbmRleA0KPiA+ PiA+DQo+ID4+DQo+IGViNGNhMWYxODRlMzc0ZDE3N2ViNDNkNWViOTNhY2Y2ZTZhOGZkZTkuLjNh MGZiNWFkODk4YWQ0MmMzODY3ZjBiOTUNCj4gPj4gNjRmDQo+ID4+ID4gYzRlMDY2ZTUwMDgxIDEw MDY0NA0KPiA+PiA+IC0tLSBhL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCj4gPj4gPiArKysgYi9n Y2MvdHJlZS12ZWN0LXN0bXRzLmNjDQo+ID4+ID4gQEAgLTYyNjMsMTUgKzYyNjMsNiBAQCB2ZWN0 b3JpemFibGVfb3BlcmF0aW9uICh2ZWNfaW5mbyAqdmluZm8sDQo+ID4+ID4gIAl9DQo+ID4+ID4g ICAgICAgIHRhcmdldF9zdXBwb3J0X3AgPSAob3B0YWJfaGFuZGxlciAob3B0YWIsIHZlY19tb2Rl KQ0KPiA+PiA+ICAJCQkgICE9IENPREVfRk9SX25vdGhpbmcpOw0KPiA+PiA+IC0gICAgICB0cmVl IGNzdDsNCj4gPj4gPiAtICAgICAgaWYgKCF0YXJnZXRfc3VwcG9ydF9wDQo+ID4+ID4gLQkgICYm IG9wMQ0KPiA+PiA+IC0JICAmJiAoY3N0ID0gdW5pZm9ybV9pbnRlZ2VyX2NzdF9wIChvcDEpKSkN Cj4gPj4gPiAtCXRhcmdldF9zdXBwb3J0X3ANCj4gPj4gPiAtCSAgPSB0YXJnZXRtLnZlY3Rvcml6 ZS5jYW5fc3BlY2lhbF9kaXZfYnlfY29uc3QgKGNvZGUsIHZlY3R5cGUsDQo+ID4+ID4gLQkJCQkJ CQl3aTo6dG9fd2lkZSAoY3N0KSwNCj4gPj4gPiAtCQkJCQkJCU5VTEwsIE5VTExfUlRYLA0KPiA+ PiA+IC0JCQkJCQkJTlVMTF9SVFgpOw0KPiA+PiA+ICAgICAgfQ0KPiA+PiA+DQo+ID4+ID4gICAg Ym9vbCB1c2luZ19lbXVsYXRlZF92ZWN0b3JzX3AgPSB2ZWN0X2VtdWxhdGVkX3ZlY3Rvcl9wDQo+ ID4+ID4gKHZlY3R5cGUpOw0K