From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2076.outbound.protection.outlook.com [40.107.6.76]) by sourceware.org (Postfix) with ESMTPS id 05F113855155 for ; Fri, 25 Nov 2022 10:32:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 05F113855155 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=NFKFKbFel0XCUxdmQuE2rQ/FoIQt3XvZ6RtLyHXvCA4=; b=t9OoE4d+Zig7rKao8KDxSlO4cinCwa2PKE6yXVfBzAB8Sm2WA1rFdIvFjtC3dhLAorqrAJ8nI35pQQGKcsXq+USvzWF6bZ1eJqfHSU1DPuQzYsLpmV6TwTMuEHZQO4B2yhZJUMgp+b+WVol6Hy/g9EpTA+ULDyFL9/hlKz/CFQQ= Received: from DU2PR04CA0275.eurprd04.prod.outlook.com (2603:10a6:10:28c::10) by GV2PR08MB9880.eurprd08.prod.outlook.com (2603:10a6:150:de::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.5; Fri, 25 Nov 2022 10:32:19 +0000 Received: from DBAEUR03FT031.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:28c:cafe::56) by DU2PR04CA0275.outlook.office365.com (2603:10a6:10:28c::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.19 via Frontend Transport; Fri, 25 Nov 2022 10:32: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 DBAEUR03FT031.mail.protection.outlook.com (100.127.142.173) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.8 via Frontend Transport; Fri, 25 Nov 2022 10:32:19 +0000 Received: ("Tessian outbound 73ab5f36653e:v130"); Fri, 25 Nov 2022 10:32:19 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 4b4245b81e462b3a X-CR-MTA-TID: 64aa7808 Received: from 7f506e7651fd.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id E127E547-1E3F-48AE-8CAB-B392D75A57A6.1; Fri, 25 Nov 2022 10:32:11 +0000 Received: from EUR02-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 7f506e7651fd.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 25 Nov 2022 10:32:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EY9ynOHLBq8cSQ2wE6IsRFJFBoTG5kVyZmIZzjH4LCrkiFZuy6KMlkedSfOhGq0z1vbQgJ1n70zRWqcMZ/ATa1/Xz5pnarKtRxLEUBgzab1TGcEZ3fJLyLdUwRPbYI/a9B1ZJQTPff7n5iPJeNo1Pmb+CN9cf1V+YFy/uj86WRcFlDwwgFKnntl2I8QWSxIly41yZJ/yZzi/aw93nfkt++S2pXibXWPwObhFqpdgX2JQ+zoaGJbUosMTXBiNJRnuTy7XJQQkD+2yjpZ45PXgRVvP2aaXfQRexieafzJWJjoti5IZQNXD6+U3mAPZfTtvmguqp9j1YwQ8R2JOMfEY/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NFKFKbFel0XCUxdmQuE2rQ/FoIQt3XvZ6RtLyHXvCA4=; b=eKZVY4hw4zqvJq9BVyJb0ixIIEKBji7IXhDVskwe7kcBRh/ElRejNdgiKwyYBQnI8dlBOylhTTbyMGR+FvbSPrPBvJFuF6NQfSoMclwnesCOBc4XDWnzovEutyMxK9zz+f6lCDIZ6MfxEdhReKIK4k+7tEOdHhxtltr1xrPia84Jo3ihcWzlA5Qw1Y6oM/UdNP9RJSUWQ8XaPZB3dMpgoeRodHihwNraaSGhVVHKqJGYQUcm/isl09cQICivLTzDoc/mUvFYDhudVqdN/aE6wbSwv4P9pMNrVaiVOnNBq21gRY0XWPyKEKG1Tbx5IKJTtUa5F6QZ0ESPVdJCcR8Usw== 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=NFKFKbFel0XCUxdmQuE2rQ/FoIQt3XvZ6RtLyHXvCA4=; b=t9OoE4d+Zig7rKao8KDxSlO4cinCwa2PKE6yXVfBzAB8Sm2WA1rFdIvFjtC3dhLAorqrAJ8nI35pQQGKcsXq+USvzWF6bZ1eJqfHSU1DPuQzYsLpmV6TwTMuEHZQO4B2yhZJUMgp+b+WVol6Hy/g9EpTA+ULDyFL9/hlKz/CFQQ= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by PA4PR08MB6189.eurprd08.prod.outlook.com (2603:10a6:102:ef::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.5; Fri, 25 Nov 2022 10:32:00 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::bd2a:aff9:b1a0:2fc7]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::bd2a:aff9:b1a0:2fc7%4]) with mapi id 15.20.5880.005; Fri, 25 Nov 2022 10:32:00 +0000 From: Tamar Christina To: Richard Biener CC: "gcc-patches@gcc.gnu.org" , nd , Richard Sandiford Subject: RE: [PATCH 1/2]middle-end: Support early break/return auto-vectorization. Thread-Topic: [PATCH 1/2]middle-end: Support early break/return auto-vectorization. Thread-Index: AQHY7snIAwho+tAVIES+mK7MOEeJC65E4G+AgAAFtPCACQNYAIAAD5cQgAGLM4CAAAJL8A== Date: Fri, 25 Nov 2022 10:32:00 +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: 61571CA927FC14469D7A73AC2757E0E6.0 Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|PA4PR08MB6189:EE_|DBAEUR03FT031:EE_|GV2PR08MB9880:EE_ X-MS-Office365-Filtering-Correlation-Id: 57915aa3-53b7-4635-b1a5-08daced054bf 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: 9TW7f6HVSD1qBoZknInC3GYZ03OTlWcyeumRGflmGePgelMujxTOWo+9AgMktennyuU4OMJa1RRgr7eWOJXAyVVRhnkbjUucw5ly90uKYbsQPf3UDQNHjpx3kslW6HDcL8+vW12AzbKZGzkWnPHh+LND/GSXbETdBOfQdFKrWW7WaNclc5G+NYEUUFXpsNAsqNi55tS33q01pQ1jFt5ao0GNjXwB76x+4LvviQ72uBwNdrf7CJDDmRqvSC53LkUZUIUn2mfp0u7Kg9YOV+gfxpN8+WfbECOxBEcuMuxslqDLW9LyaVBYQHRiUw86w/j/81UuN/PxUtarGHeUyn27Vq/8AVQRY4BstUTbj2bwrucrSazcEvwPm8EQu1hDoClU6x3Pvsw7RrtMTs8ztOqKiQykxPmnfVmPJ+xGLIz+NSPCAPfYknc9bg8phEpXp+KU37o8Puh8zE9+H8BcpbYCCORExBQKKzfmYwxxr4sHlDdHGfGj041ylX2OAGUZcDh2eulS8bwsVgbMlkd5FR/ZuhRlgxOKEwltai186gcPJFDza+m5asE10D6jJtE4ZzL2dO/7AKGkDNuo1olDrAW0uDESZMZu1tNYaOhOCJ9H1CiZskzEtMiKWLxjYDGVXshvZcxjFmRjJuQ+0ibRFs4QHqnGtyjlCqZPhLLN19S9sZ9rWVZm6SeesNthQrCMnFZJoUTrNDt94gSB4ydgK3+QzlnmsSiG5KDFfeN0eBf5deRPRc0rU94t/FnXFlq8jbtdCyZ83gKqUFZvKXAXjefnRv5gDul+xyqBdZz1V9bEutM= 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:(13230022)(4636009)(366004)(396003)(39860400002)(136003)(346002)(376002)(451199015)(76116006)(66556008)(66476007)(66946007)(64756008)(66446008)(8936002)(33656002)(41300700001)(52536014)(8676002)(4326008)(30864003)(5660300002)(86362001)(122000001)(9686003)(53546011)(26005)(7696005)(6506007)(71200400001)(83380400001)(186003)(54906003)(55016003)(6916009)(316002)(38100700002)(478600001)(38070700005)(2906002)(66899015)(84970400001)(579004)(559001)(357404004);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6189 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: DBAEUR03FT031.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: e9a3b303-d158-46d9-ec40-08daced04948 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XDvF5t/rPoAWScQdjeYsJahQS+xB6MSrUyj0qIE56CMJOzHMAlDSxmOyBiXj2fv4XsgyWH4hgMcrodXATHZbwGd+RxUapRQHwWDv1DXKeU9cdsVb0KTc+LxKQ83s6XLqWrqvjQcxKUcqhbBi8+x322C+YkojOV79sFH1pYb7+vRGn3lhOhuPTGkkj4mGERTIOsTntvWhyohgUmodejc6yg1rAgy7rUXqi2qLLrKs5ZHFvO76aia3Wsq88/4FhEUHfltRP3NkredWBuz8mqXIl0kS/W+QqXvgQ+YgPEnzfCwRLP0XppBTAJHCo2VmKCbxSyS2i7rei5A/cOYlyeCp8CYcwl2TcRwPQbcu0zx3zNGXhcE0Em3+/UjFcrkFiU/SyVCjcPwU5wGoTcfh9umt9LMdbOM0CZ4NNPXyboK4Cv91cgMpJ/6UIyP600n5lT/kmFryk5Nk5fttNLCpOKf7/YuvYSwvmIucFvhr6uPGNgKxAFeIJfskaIs72FH0aL45Ecap9vaAWGL+Y6O99dGHkJKMj4tGRELrIolhxKi1iTYNJpvog0huCg60j5q5duiTVI0uL35O7aikCSku+kxnofzL05iuufDdcCLk4W8cSAmMAb6iqp0wCff0RB8kaCj5cjRQqRezZJXhWs+FYH38nR5yDp5fJijiaMMryhI2j/pH2CBRwb3CZNxvs4/48FkQFw9sRBU1d4ZZu463lGz0qEL015/YFgTf+Ye/EiBr1lKFTG0UdbF2ibyM9OhrxBrkjMB50rOIwHDpcpbte7wCqjLGZrhzQfW2yDPGXwBO0Mc= 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:(13230022)(4636009)(346002)(39860400002)(396003)(136003)(376002)(451199015)(40470700004)(46966006)(36840700001)(83380400001)(81166007)(356005)(36860700001)(2906002)(478600001)(40460700003)(41300700001)(40480700001)(8676002)(55016003)(4326008)(70206006)(70586007)(33656002)(82740400003)(5660300002)(66899015)(26005)(82310400005)(336012)(316002)(54906003)(8936002)(6862004)(52536014)(47076005)(7696005)(53546011)(6506007)(186003)(84970400001)(9686003)(86362001)(30864003)(559001)(579004)(357404004);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Nov 2022 10:32:19.6714 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 57915aa3-53b7-4635-b1a5-08daced054bf 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: DBAEUR03FT031.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB9880 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,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: PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmd1 ZW50aGVyQHN1c2UuZGU+DQo+IFNlbnQ6IEZyaWRheSwgTm92ZW1iZXIgMjUsIDIwMjIgOTozMyBB TQ0KPiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4NCj4gQ2M6 IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnOyBuZCA8bmRAYXJtLmNvbT47IFJpY2hhcmQgU2FuZGlm b3JkDQo+IDxSaWNoYXJkLlNhbmRpZm9yZEBhcm0uY29tPg0KPiBTdWJqZWN0OiBSRTogW1BBVENI IDEvMl1taWRkbGUtZW5kOiBTdXBwb3J0IGVhcmx5IGJyZWFrL3JldHVybiBhdXRvLQ0KPiB2ZWN0 b3JpemF0aW9uLg0KPiANCj4gT24gVGh1LCAyNCBOb3YgMjAyMiwgVGFtYXIgQ2hyaXN0aW5hIHdy b3RlOg0KPiANCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBS aWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+DQo+ID4gPiBTZW50OiBUaHVyc2RheSwg Tm92ZW1iZXIgMjQsIDIwMjIgOTowMyBBTQ0KPiA+ID4gVG86IFRhbWFyIENocmlzdGluYSA8VGFt YXIuQ2hyaXN0aW5hQGFybS5jb20+DQo+ID4gPiBDYzogZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc7 IG5kIDxuZEBhcm0uY29tPjsgUmljaGFyZCBTYW5kaWZvcmQNCj4gPiA+IDxSaWNoYXJkLlNhbmRp Zm9yZEBhcm0uY29tPg0KPiA+ID4gU3ViamVjdDogUkU6IFtQQVRDSCAxLzJdbWlkZGxlLWVuZDog U3VwcG9ydCBlYXJseSBicmVhay9yZXR1cm4gYXV0by0NCj4gPiA+IHZlY3Rvcml6YXRpb24uDQo+ ID4gPg0KPiA+ID4gT24gRnJpLCAxOCBOb3YgMjAyMiwgVGFtYXIgQ2hyaXN0aW5hIHdyb3RlOg0K PiA+ID4NCj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZy b206IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4NCj4gPiA+ID4gPiBTZW50OiBG cmlkYXksIE5vdmVtYmVyIDE4LCAyMDIyIDM6MDQgUE0NCj4gPiA+ID4gPiBUbzogVGFtYXIgQ2hy aXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4NCj4gPiA+ID4gPiBDYzogZ2NjLXBhdGNo ZXNAZ2NjLmdudS5vcmc7IG5kIDxuZEBhcm0uY29tPjsgUmljaGFyZCBTYW5kaWZvcmQNCj4gPiA+ ID4gPiA8UmljaGFyZC5TYW5kaWZvcmRAYXJtLmNvbT4NCj4gPiA+ID4gPiBTdWJqZWN0OiBSZTog W1BBVENIIDEvMl1taWRkbGUtZW5kOiBTdXBwb3J0IGVhcmx5IGJyZWFrL3JldHVybg0KPiBhdXRv LQ0KPiA+ID4gPiA+IHZlY3Rvcml6YXRpb24uDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBPbiBXZWQs IDIgTm92IDIwMjIsIFRhbWFyIENocmlzdGluYSB3cm90ZToNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gSGkgQWxsLA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFRoaXMgcGF0Y2ggYWRkcyBpbml0 aWFsIHN1cHBvcnQgZm9yIGVhcmx5IGJyZWFrIHZlY3Rvcml6YXRpb24gaW4gR0NDLg0KPiA+ID4g PiA+ID4gVGhlIHN1cHBvcnQgaXMgYWRkZWQgZm9yIGFueSB0YXJnZXQgdGhhdCBpbXBsZW1lbnRz IGEgdmVjdG9yDQo+IGNicmFuY2gNCj4gPiA+ID4gPiBvcHRhYi4NCj4gPiA+ID4gPg0KPiA+ID4g PiA+IEknbSBsb29raW5nIGF0IHRoaXMgbm93LCBmaXJzdCBzb21lIGhpZ2gtbGV2ZWwgcXVlc3Rp b25zLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gV2h5IGRvIHdlIG5lZWQgYSBuZXcgY2JyYW5jaCBv cHRhYj8gIEl0IHNlZW1zIGltcGxlbWVudGluZw0KPiA+ID4gPiA+IGEgdmVjdG9yIGNvbXBhcmlz b24gYW5kIG1hc2sgdGVzdCBhZ2FpbnN0IHplcm8gc3VmZmljaWVzPw0KPiA+ID4gPg0KPiA+ID4g PiAgSXQgZG9lc24ndCBkZWZpbmUgYSBuZXcgb3B0YWIsIEl0J3MganVzdCB1c2luZyB0aGUgZXhp c3RpbmcgY2JyYW5jaCBvcHRhYg0KPiB0bw0KPiA+ID4gY2hlY2sNCj4gPiA+ID4gdGhhdCB0aGUg dGFyZ2V0IGNhbiBoYW5kbGUgYSB2ZWN0b3IgY29tcGFyaXNvbiB3aXRoIDAgaW4gYSBicmFuY2gN Cj4gPiA+IHN0YXRlbWVudC4NCj4gPiA+ID4NCj4gPiA+ID4gTm90ZSB0aGF0IGl0IGRvZXNuJ3Qg Z2VuZXJhdGUgYSBjYWxsIHRvIHRoaXMgb3B0YWIsIEdJTVBMRSBleHBhbnNpb24NCj4gYWxyZWFk eQ0KPiA+ID4gd2lsbC4NCj4gPiA+DQo+ID4gPiBBaCwgT0suICBJIHNlZSBleHBhbnNpb24gb2Yg aWYgKHZlY3RvciAhPSB2ZWN0b3IpIGdvZXMgdGhlIGNicmFuY2ggd2F5DQo+ID4gPiBvbmx5Lg0K PiA+ID4NCj4gPiA+ID4gVGhlIHJlYXNvbiBJIGRvbid0IGNoZWNrIGFnYWluc3QganVzdCBjb21w YXJpc29uIHdpdGggMCBhbmQgZXF1YWxpdHkgaXMNCj4gdGhhdA0KPiA+ID4gPiBUeXBpY2FsbHkg c3BlYWtpbmcgYSB2ZWN0b3IgY29tcGFyaXNvbiB3aXRoIDAgaXMgbm90IGV4cGVjdGVkIHRvIHNl dCBhDQo+IGZsYWcuDQo+ID4gPiA+ICBpLmUuIHR5cGljYWxseSBpdCByZXN1bHRzIGluIGp1c3Qg YSB2ZWN0b3Igb2YgQm9vbGVhbnMuDQo+ID4gPg0KPiA+ID4gT24geDg2IFNTRSA0LjEgcHRlc3Qg anVzdCBzZXRzIGZsYWdzIHRob3VnaC4NCj4gPg0KPiA+IFllYWgsIHNvIGRvZXMgdGhlIFNWRXMs IHdoYXQgSSBtZWFudCBpcyB0aGF0IGJlY2F1c2UgdGhlIHZlY3RvciBjb21wYXJlDQo+IGFscmVh ZHkNCj4gPiBzZXRzIGZsYWdzIHNvIHdoZW4gd2UgZ2VuZXJhdGUgdGhlIHB0ZXN0IGZyb20gdGhl IGNicmFuY2ggd2UgZWxpbWluYXRlIGl0DQo+IGxhdGVyDQo+ID4gZHVyaW5nIFJUTCBpZiBpdCdz IHJlZHVuZGFudC4gV2hpY2ggaXMgd2h5IHRoZSBTVkUgY29kZSBpbiBteSBleGFtcGxlDQo+IGRv ZXNuJ3QNCj4gPiBoYXZlIGEgcHRlc3QgYW55bW9yZS4gIEJ1dCBpdCdzIG9ubHkgcmVkdW5kYW50 IGlmIHRoZSBjaGVjayBpcyBhZ2FpbnN0IDAsIG9yDQo+IHRoZQ0KPiA+IHNpemUgb2YgdGhlIGxh bmVzIG9mIHRoZSBtYXNrIHZlY3RvciBtYXRjaCB1cCB0byB0aGF0IG9mIHRoZSBjb21wYXJpc29u Lg0KPiA+DQo+ID4gQnV0IHRoaXMgaXMgcXVpdGUgU1ZFIHNwZWNpZmljIGFuZCBpbnN0ZWFkIG9m IGVuY29kaW5nIGl0IGluIEdJTVBMRSwgd2UgZG8gc28NCj4gaW4gUlRMDQo+ID4gYW5kIG9wdGlt aXplLg0KPiA+DQo+ID4gPiA+IEEgdmVjdG9yIGNvbXBhcmUgd2l0aCAwIGluIGEgYnJhbmNoIHdp bGwgYmUgbG93ZXJlZCB0byBjYnJhbmNoIHRvZGF5IHNvDQo+IEkNCj4gPiA+IGp1c3QNCj4gPiA+ ID4gdXNlIHRoZSBvcHRhYiB0byBzZWUgdGhhdCB0aGUgdGFyZ2V0IGNhbiBoYW5kbGUgdGhpcyBi cmFuY2hpbmcgYW5kIGxlYXZlDQo+ID4gPiA+IGl0IHVwIHRvIHRoZSB0YXJnZXQgdG8gZG8gaG93 ZXZlciBpdCBkZWNpZGVzLg0KPiA+ID4gPg0KPiA+ID4gPiBUaGUgYWx0ZXJuYXRpdmUgd291bGQg cmVxdWlyZSBtZSAoSSB0aGluaykgdG8gcmVkdWNlIHRvIGEgc2NhbGFyIGZvciB0aGUNCj4gPiA+ IGVxdWFsaXR5DQo+ID4gPiA+IGNoZWNrIGFzIHlvdSBtZW50aW9uZWQsIGJ1dCBzdWNoIGNvZGVn ZW4gd291bGQgYmUgd29yc2UgZm9yIHRhcmdldHMNCj4gbGlrZQ0KPiA+ID4gU1ZFDQo+ID4gPiA+ IHdoaWNoIGhhcyBuYXRpdmUgc3VwcG9ydCBmb3IgdGhpcyBvcGVyYXRpb24uICBXZSdkIGhhdmUg dG8gdW5kbyB0aGUNCj4gPiA+IHJlZHVjdGlvbiBkdXJpbmcgUlRMLg0KPiA+ID4gPg0KPiA+ID4g PiBFdmVuIGZvciB0YXJnZXRzIGxpa2UgTkVPTiwgd2UnZCBoYXZlIHRvIHJlcGxhY2UgdGhlIHJl ZHVjdGlvbiBjb2RlLA0KPiA+ID4gYmVjYXVzZSB3ZQ0KPiA+ID4gPiBjYW4gZ2VuZXJhdGUgYmV0 dGVyIGNvZGUgYnkgZG9pbmcgdGhlIHJlZHVjdGlvbiB1c2luZyBwYWlyd2lzZQ0KPiA+ID4gaW5z dHJ1Y3Rpb25zLg0KPiA+ID4gPg0KPiA+ID4gPiBUaGVzZSBraW5kcyBvZiBkaWZmZXJlbmNlcyB0 b2RheSBhcmUgaGFuZGxlZCBieSBjYnJhbmNoX29wdGFiIGFscmVhZHkNCj4gc28NCj4gPiA+IGl0 IHNlZW1lZA0KPiA+ID4gPiBiZXR0ZXIgdG8ganVzdCByZS11c2UgaXQuDQo+ID4gPg0KPiA+ID4g WWVzLCBhZ3JlZWQuDQo+ID4gPg0KPiA+ID4gQnR3LCB0aGUgQyB2ZWN0b3IgZXh0ZW5zaW9uIGRv ZXNuJ3QgYWxsb3cgaWYgKHZlY3RvciAhPSB2ZWN0b3IpIGFuZA0KPiA+ID4gdmVjdG9yIGxvd2Vy aW5nIGRvZXNuJ3Qgc3VwcG9ydCBsb3dlcmluZyB0aGF0IGlmIHRoZSB0YXJnZXQgZG9lc24ndA0K PiA+ID4gc3VwcG9ydCBpdCAoaW5zdGVhZCB3ZSBJQ0UpLg0KPiA+ID4NCj4gPiA+ID4gPg0KPiA+ ID4gPiA+IFlvdSBoYXZlIHNvbWUgZWxhYm9yYXRlIGV4cGxhbmF0aW9uIG9uIGhvdyBwZWVsaW5n IHdvcmtzIGJ1dCBJDQo+ID4gPiA+ID4gc29tZXdoYXQgbWlzcyB0aGUgaGlnaC1sZXZlbCBpZGVh IGhvdyB0byB2ZWN0b3JpemUgdGhlIGVhcmx5DQo+ID4gPiA+ID4gZXhpdC4gIEkndmUgYXBwbGll ZCB0aGUgcGF0Y2hlcyBhbmQgZnJvbSBsb29raW5nIGF0IGhvdw0KPiA+ID4gPiA+IHZlY3QtZWFy bHktYnJlYWtfMS5jIGdldHMgdHJhbnNmb3JtZWQgb24gYWFyY2g2NCBpdCBzZWVtcyB5b3UNCj4g PiA+ID4gPiB2ZWN0b3JpemUNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICBmb3IgKGludCBpID0gMDsg aSA8IE47IGkrKykNCj4gPiA+ID4gPiAgew0KPiA+ID4gPiA+ICAgIHZlY3RfYltpXSA9IHggKyBp Ow0KPiA+ID4gPiA+ICAgIGlmICh2ZWN0X2FbaV0gPiB4KQ0KPiA+ID4gPiA+ICAgICAgYnJlYWs7 DQo+ID4gPiA+ID4gICAgdmVjdF9hW2ldID0geDsNCj4gPiA+ID4gPiAgfQ0KPiA+ID4gPiA+DQo+ ID4gPiA+ID4gYXMNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICBmb3IgKGludCBpID0gMDsgaSA8IE47 KQ0KPiA+ID4gPiA+ICB7DQo+ID4gPiA+ID4gICAgaWYgKGFueSAodmVjdF9hW2ldID4geCkpDQo+ ID4gPiA+ID4gICAgICBicmVhazsNCj4gPiA+ID4gPiAgICBpICs9IFZGOw0KPiA+ID4gPiA+ICAg IHZlY3RfYltpXSA9IHggKyBpOw0KPiA+ID4gPiA+ICAgIHZlY3RfYVtpXSA9IHg7DQo+ID4gPiA+ ID4gIH0NCj4gPiA+ID4gPiAgZm9yICg7IGkgPCBOOyBpKyspDQo+ID4gPiA+ID4gIHsNCj4gPiA+ ID4gPiAgICB2ZWN0X2JbaV0gPSB4ICsgaTsNCj4gPiA+ID4gPiAgICBpZiAodmVjdF9hW2ldID4g eCkNCj4gPiA+ID4gPiAgICAgIGJyZWFrOw0KPiA+ID4gPiA+ICAgIHZlY3RfYVtpXSA9IHg7DQo+ ID4gPiA+ID4gIH0NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEFzIHlvdSBvdXRsaW5lIGJlbG93IHRo aXMgcmVxdWlyZXMgdGhhdCB0aGUgc2lkZS1lZmZlY3RzIGRvbmUgYXMgcGFydA0KPiA+ID4gPiA+ IG9mIDxzdGF0ZW1lbnRzMT4gYW5kIDxjb25kaXRpb24+IGJlZm9yZSBleGl0aW5nIGNhbiBiZSBt b3ZlZCBhZnRlcg0KPiB0aGUNCj4gPiA+ID4gPiBleGl0LCBiYXNpY2FsbHkgeW91IG5lZWQgdG8g YmUgYWJsZSB0byBjb21wdXRlIHdoZXRoZXIgYW55IHNjYWxhcg0KPiA+ID4gPiA+IGl0ZXJhdGlv biBjb3ZlcmVkIGJ5IGEgdmVjdG9yIGl0ZXJhdGlvbiB3aWxsIGV4aXQgdGhlIGxvb3AgZWFybHku DQo+ID4gPiA+ID4gQ29kZSBnZW5lcmF0aW9uIHdpc2UgeW91J2Qgc2ltcGx5ICJpZ25vcmUiIGNv ZGUgZ2VuZXJhdGluZyBlYXJseQ0KPiBleGl0cw0KPiA+ID4gPiA+IGF0IHRoZSBwbGFjZSB0aGV5 IGFwcGVhciBpbiB0aGUgc2NhbGFyIGNvZGUgYW5kIGluc3RlYWQgZW1pdCB0aGVtDQo+ID4gPiA+ ID4gdmVjdG9yaXplZCBpbiB0aGUgbG9vcCBoZWFkZXIuDQo+ID4gPiA+DQo+ID4gPiA+IEluZGVl ZCwgVGhpcyBpcyBob3cgaXQncyBoYW5kbGVkIHRvZGF5LiAgRm9yIGZ1bGx5IG1hc2tlZCBsb29w cyB3ZSBjYW4NCj4gZG8NCj4gPiA+IGJldHRlcg0KPiA+ID4gPiBhbmQgd291bGQgYmUgYSBmdXR1 cmUgZXhwYW5zaW9uLCBidXQgdGhpcyBjb2RlZ2VuIGlzIHNpbXBsZXIgdG8gc3VwcG9ydA0KPiA+ ID4gdG9kYXkNCj4gPiA+ID4gYW5kIGlzIGJlbmVmaWNpYWwgdG8gYWxsIHRhcmdldHMuDQo+ID4g PiA+DQo+ID4gPiA+IEl0IGFsc28gaGFzIHRoZSBiZW5lZml0IHRoYXQgY29tcGxpY2F0ZWQgcmVk dWN0aW9uIHdlIGRvbid0IHN1cHBvcnQNCj4gdG9kYXkNCj4gPiA+IGRvbid0DQo+ID4gPiA+IGFi b3J0IHZlY3Rvcml6YXRpb24gYmVjYXVzZSB3ZSBqdXN0IHB1bnQgdG8gc2NhbGFyLiBFLmcuIHRv ZGF5IHdlIGJhaWwNCj4gb3V0DQo+ID4gPiBvbjoNCj4gPiA+ID4NCj4gPiA+ID4gaWYgKGFbaV0g PiB4KQ0KPiA+ID4gPiB7DQo+ID4gPiA+ICBiID0gYVtpXTsNCj4gPiA+ID4gIGMgPSBpOw0KPiA+ ID4gPiB9DQo+ID4gPiA+DQo+ID4gPiA+IEJ1dA0KPiA+ID4gPg0KPiA+ID4gPiBpZiAoYVtpXSA+ IHgpDQo+ID4gPiA+IHsNCj4gPiA+ID4gIGIgPSBhW2ldOw0KPiA+ID4gPiAgYyA9IGk7DQo+ID4g PiA+ICBicmVhazsNCj4gPiA+ID4gfQ0KPiA+ID4gPg0KPiA+ID4gPiBXb3JrcyBmaW5lLiAgRm9y IGZ1bGx5IG1hc2tlZCBsb29wcywgUmljaGFyZCdzIGRlc2lnbiB3aXRoIG11bHRpcGxlDQo+IHJn cm91cHMNCj4gPiA+IHdvdWxkDQo+ID4gPiA+IEFsbG93IHVzIHRvIGhhbmRsZSB0aGVzZSB0aGlu Z3MgYmV0dGVyIHdpdGhvdXQgdGhlIHNjYWxhciBsb29wIHNob3VsZA0KPiB3ZQ0KPiA+ID4gd2Fu dCB0bw0KPiA+ID4gPiBJbiB0aGUgZnV0dXJlLiBUaGUgY3VycmVudCBkZXNpZ24gZG9lc24ndCBw cm9oaWJpdCB0aGlzIGNob2ljZSBpbiB0aGUNCj4gZnV0dXJlLg0KPiA+ID4gPg0KPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiBDb25jcmV0ZWx5IHRoZSBraW5kIG9mIGxvb3BzIHN1cHBvcnRlZCBhcmUg b2YgdGhlIGZvcm1zOg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICBmb3IgKGludCBpID0gMDsg aSA8IE47IGkrKykNCj4gPiA+ID4gPiA+ICB7DQo+ID4gPiA+ID4gPiAgICA8c3RhdGVtZW50czE+ DQo+ID4gPiA+ID4gPiAgICBpZiAoPGNvbmRpdGlvbj4pDQo+ID4gPiA+ID4gPiAgICAgIDxhY3Rp b24+Ow0KPiA+ID4gPiA+ID4gICAgPHN0YXRlbWVudHMyPg0KPiA+ID4gPiA+ID4gIH0NCj4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiB3aGVyZSA8YWN0aW9uPiBjYW4gYmU6DQo+ID4gPiA+ID4gPiAg LSBicmVhaw0KPiA+ID4gPiA+ID4gIC0gcmV0dXJuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g QW55IG51bWJlciBvZiBzdGF0ZW1lbnRzIGNhbiBiZSB1c2VkIGJlZm9yZSB0aGUgPGFjdGlvbj4g b2NjdXJzLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFNpbmNlIHRoaXMgaXMgYW4gaW5pdGlh bCB2ZXJzaW9uIGZvciBHQ0MgMTMgaXQgaGFzIHRoZSBmb2xsb3dpbmcNCj4gbGltaXRhdGlvbnM6 DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLSBPbmx5IGZpeGVkIHNpemVkIGl0ZXJhdGlvbnMg YW5kIGJ1ZmZlcnMgYXJlIHN1cHBvcnRlZC4gIFRoYXQgaXMgdG8NCj4gc2F5DQo+ID4gPiBhbnkN Cj4gPiA+ID4gPiA+ICAgdmVjdG9ycyBsb2FkZWQgb3Igc3RvcmVkIG11c3QgYmUgdG8gc3RhdGlj YWxseSBhbGxvY2F0ZWQgYXJyYXlzIHdpdGgNCj4gPiA+IGtub3duDQo+ID4gPiA+ID4gPiAgIHNp emVzLiBOIG11c3QgYWxzbyBiZSBrbm93bi4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFdoeT8NCj4g PiA+ID4NCj4gPiA+ID4gTm90IGFuIGludHJpbnNpYyBsaW1pdGF0aW9uLCBqdXN0IG9uZSBkb25l IGZvciBwcmFjdGljYWxpdHkgYW5kIHRvIGtlZXAgdGhlDQo+ID4gPiBwYXRjaA0KPiA+ID4gPiBz aW1wbGVyLiAgVGhlc2UgY2FzZXMgd2VyZSBtb3N0IG9mIHRoZSBjYXNlcyB0aGF0IHdlIHdhbnRl ZC4NCj4gPiA+ID4NCj4gPiA+ID4gU3VwcG9ydGluZyB0aGlzIHJlcXVpcmVzIGFkZGluZyBzdXBw b3J0IGZvciBtdWx0aXBsZS1leGl0cyB0byBhbGwgdGhlDQo+ID4gPiBkaWZmZXJlbnQgcGVlbGlu Zw0KPiA+ID4gPiBhbmQgdmVyc2lvbmluZyBjb2RlIGF0IG9uY2UsIHdoaWNoIHdvdWxkIGJlIGEg bXVjaCBiaWdnZXIgcGF0Y2guDQo+ID4gPiA+DQo+ID4gPiA+IEFkZGl0aW9uYWxseSBmb3IgU1ZF ICh0aGUgbWFpbiB0YXJnZXQgb2YgdGhlIGNvZGVnZW4gY2hhbmdlKSB3ZSdkIHdhbnQNCj4gdG8N Cj4gPiA+IGRvIHRoaXMNCj4gPiA+ID4gdXNpbmcgZmlyc3QgZmF1bHRpbmcgbG9hZHMsICBidXQg dGhlcmUncyBhIGRlcGVuZGVuY3kgdG8gb3RoZXIgdGhpbmdzIHdlDQo+IG11c3QNCj4gPiA+ID4g c3VwcG9ydCBib3RoIGluIEdJTVBMRSBpdHNlbGYgYW5kIHRoZSB2ZWN0b3JpemVyIGJlZm9yZSB3 ZSBjYW4gZG8gdGhpcy4NCj4gPiA+DQo+ID4gPiBCdXQgeW91IGRvIHN1cHBvcnQgZXBpbG9ndWUg cGVlbGluZyBpZiB0aGUgc3RhdGljYWxseSBrbm93biBOIGlzbid0DQo+ID4gPiBkaXZpZGFibGUg YnkgdGhlIFZGLiAgU28gSSBmYWlsIHRvIHNlZSBob3cgYSBub24tY29uc3RhbnQgTiBmYWlscyB0 byB3b3JrPw0KPiA+DQo+ID4gU28gdG9kYXkgdGhlIHZlY3Rvcml6ZXIgaXRzZWxmIGRvZXNuJ3Qg c3VwcG9ydCBhbGlnbm1lbnQgcGVlbGluZyBmb3IgVkxBDQo+IGNvZGUuDQo+ID4gVGFrZSBmb3Ig aW5zdGFuY2U6DQo+ID4NCj4gPiB2b2lkDQo+ID4gZiAodW5zaWduZWQgc2hvcnQgKngsIGludCBu KQ0KPiA+IHsNCj4gPiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQ0KPiA+ICAgICB4W2ld ICs9IHhbaSAtIDE2XTsNCj4gPiB9DQo+ID4NCj4gPiBBbmQgaWYgeW91IGNvbXBpbGUgZm9yIGEg dGFyZ2V0IHRoYXQgcmVxdWlyZXMgc3RyaWN0IGFsaWdubWVudCBlLmcuOg0KPiA+DQo+ID4gLU8z IC1tYXJjaD1hcm12OS1hIC1tdHVuZT10aHVuZGVyeA0KPiA+DQo+ID4gWW91IGdldCBORU9OIGNv ZGUgYmVjYXVzZSBpdCBjYW4ndCBkbyB0aGUgcGVlbGluZy4gIFdlIGRvIGhvd2V2ZXINCj4gc3Vw cG9ydCBpdA0KPiA+IEZvciBWTFMgY29kZSwgaS5lLiAtTzMgLW1hcmNoPWFybXY5LWEgLW1zdmUt dmVjdG9yLWJpdHM9NTEyIC0NCj4gbXR1bmU9dGh1bmRlcngNCj4gPiBUaGUgYWxpZ25tZW50IHdp bGwgaGFwcGVuLCB0aG91Z2ggbm90IHRocm91Z2ggcGVlbGluZyBidXQgbWFza2luZyB0aGUNCj4g Zmlyc3QNCj4gPiBpdGVyYXRpb24gb2YgdGhlIGxvb3Agd2l0aCBhIHByZWRpY2F0ZSB0aGF0IHdp bGwgZG8gdGhlIGFsaWdubWVudC4NCj4gPg0KPiA+IFRoZSByZWFzb24gdGhpcyBpc24ndCBhIGJp ZyBwcm9ibGVtIGZvciBWTFMgY29kZSBpcyB0aGF0IFNWRSBjb3JlcyB0eXBpY2FsbHkNCj4gZG9u J3QNCj4gPiBoYXZlIGEgbWlzYWxpZ25tZW50IHBlbmFsdHkgZm9yIGxvYWRzLg0KPiA+DQo+ID4g V2hpY2ggYnJpbmdzIHVzIHRvLi4NCj4gPg0KPiA+ID4gT3IgbWF5YmUgSSBtaXN1bmRlcnN0b29k IGFuZCB0aGUgcmVxdWlyZW1lbnQgaXMgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdA0KPiA+ID4gb25l IGNvdW50aW5nIElWIHdlIGNhbiBjb21wdXRlIG51bWJlciBvZiBpdGVyYXRpb25zIGZvcj8NCj4g PiA+DQo+ID4NCj4gPiBDb3JyZWN0LCBzbyBmb3IgU1ZFIHRvZGF5IG9ubHkgY291bnRpbmcgbG9v cHMgYXJlIHNhZmUgc2luY2UgeW91IGNhbg0KPiBzdGF0aWNhbGx5DQo+ID4gY29tcHV0ZSB0aGUg bWFzayBmb3IgdGhlIGZpbmFsIGl0ZXJhdGlvbiBzbyB5b3UgZG9uJ3QgZmF1bHQgb24gdGhlIGZp bmFsIHJlYWQNCj4gYnkNCj4gPiBvdmVycmVhZGluZy4NCj4gPg0KPiA+IEZvciBub24tY291bnRp bmcgbG9vcHMgd2UgaGF2ZSBhIHNlcGFyYXRlIG1lY2hhbmlzbSB0byBoYW5kbGUgdGhpcyAoRmly c3QNCj4gPiBGYXVsdGluZyBMb2FkcykgYnV0IHdlIGRvbid0IHN1cHBvcnQgdGhpcyB0b2RheSBp biB0aGUgdmVjdG9yaXplciBlaXRoZXIuDQo+ID4NCj4gPiBOb3cgYXMgZm9yIHRoaXMgcGF0Y2gs IHRoZSBvbmx5IGNoYW5nZXMgdGhhdCB3b3VsZCBiZSBuZWVkZWQgYXJlIGluIGhvdw0KPiB3ZQ0K PiA+IFVwZGF0ZSB0aGUgSVZzIGluIHRoZSBndWFyZCBiZXR3ZWVuIHRoZSB0d28gbG9vcHMuICBT byB0aGlzIHdvdWxkIGJlIGVhc3kNCj4gdG8NCj4gPiBzdXBwb3J0IHdoZW4gd2UgZG8gYWRkIFNW RSBzdXBwb3J0IGZvciBpdC4gICBBbmQgd2UnZCBhZGQgc3VwcG9ydCBmb3IgVkxBDQo+IGFuZA0K PiA+IG5vbi1WTEEgYXQgdGhlIHNhbWUgdGltZSwgYnV0IHRvZGF5IHRoZSBtYWluIHRhcmdldCBm b3IgdGhpcyB3b3JrIGlzIFNWRS4NCj4gVGhvdWdoDQo+ID4gd2Ugd2FudGVkIHRvIGRvIGl0IGlu IGEgd2F5IHRoYXQgd291bGQgYWxzbyBiZW5lZml0IG5vbi1mdWxseSBtYXNrZWQNCj4gdGFyZ2V0 cy4NCj4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAtIGFueSBzdG9yZXMgaW4gPHN0YXRlbWVu dHMxPiBzaG91bGQgbm90IGJlIHRvIHRoZSBzYW1lIG9iamVjdHMgYXMNCj4gaW4NCj4gPiA+ID4g PiA+ICAgPGNvbmRpdGlvbj4uICBMb2FkcyBhcmUgZmluZSBhcyBsb25nIGFzIHRoZXkgZG9uJ3Qg aGF2ZSB0aGUNCj4gcG9zc2liaWxpdHkgdG8NCj4gPiA+ID4gPiA+ICAgYWxpYXMuDQo+ID4gPiA+ ID4NCj4gPiA+ID4gPiBJIHRoaW5rIHRoYXQncyBhIGZ1bmRhbWVudGFsIGxpbWl0YXRpb24gLSB5 b3UgaGF2ZSB0byBiZSBhYmxlIHRvDQo+IGNvbXB1dGUNCj4gPiA+ID4gPiB0aGUgZWFybHkgZXhp dCBjb25kaXRpb24gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgdmVjdG9yaXplZCBsb29wLiAgRm9y DQo+ID4gPiA+ID4gYSBzaW5nbGUgYWx0ZXJuYXRlIGV4aXQgaXQgbWlnaHQgYmUgcG9zc2libGUg dG8gYXBwbHkgbG9vcCByb3RhdGlvbiB0bw0KPiA+ID4gPiA+IG1vdmUgdGhpbmdzIGJ1dCB0aGF0 IGNhbiBpbnRyb2R1Y2UgImJhZCIgY3Jvc3MtaXRlcmF0aW9uDQo+IGRlcGVuZGVuY2VzKD8pDQo+ ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gVGhhdCdzIGFuIGludGVyZXN0aW5nIGlkZWEsIEkn ZCBoYXZlIHRvIHdvcmsgaXQgb3V0IG9uIHBhcGVyLiAgSSBndWVzcyB0aGUNCj4gbWFpbg0KPiA+ ID4gPiBkaWZmaWN1bHR5IGNvbXBhcmVkIHRvIHNheSBjbGFzc2ljYWwgbG9vcCByb3RhdGlvbiBp cyB0aGF0IHRoZSBjb25kaXRpb24NCj4gaW5zaWRlDQo+ID4gPiA+IHRoZSBlYXJseSBicmVhayBz dGF0ZW1lbnQgY2FuIGl0c2VsZiBiZSBkZXBlbmRlbnQgb24gb3RoZXIgc3RhdGVtZW50Lg0KPiBT bw0KPiA+ID4gPiB5b3Ugc3RpbGwgaGF2ZSB0byBtb3ZlIGEgImNoYWluIiBvZiBzdGF0ZW1lbnRz IHdoaWNoIHRoZW1zZWx2ZXMgc3RpbGwNCj4gbmVlZA0KPiA+ID4gdG8NCj4gPiA+ID4gYmUgdmVj dG9yaXplZC4NCj4gPiA+ID4NCj4gPiA+ID4gV2hlcmUgaXQgZ2V0cyBkaWZmaWN1bHQsIGFuZCBw YXJ0aWFsbHkgd2h5IEkgYWxzbyBvbmx5IHN1cHBvcnQgMSBlYXJseSBleGl0DQo+IGluDQo+ID4g PiB0aGlzIGZpcnN0DQo+ID4gPiA+IHZlcnNpb24gaXMgdGhhdCBhIHNlY29uZCBleGl0IGhhcyBh IGRlcGVuZGVuY3kgb24gdGhlIDFzdCBvbmUuIEFuZA0KPiB0aGVyZQ0KPiA+ID4gbWF5DQo+ID4g PiA+IGJlIG90aGVyIHN0YXRlbWVudHMgYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHNlY29uZCBleGl0 LiAgVGhpcyBpcyB3aGVyZSBJDQo+ID4gPiB0aGluaw0KPiA+ID4gPiBsb29wIHJvdGF0aW9uIHdv dWxkIGZhbGwgYXBhcnQgdnMgdGhlIGNvZGUgbW90aW9uIEknbSBkb2luZyBub3cuDQo+ID4gPg0K PiA+ID4gUG9zc2libHksIEkgZGlkbid0IGZ1bGx5IHdvcmsgb3V0IGhvdyBsb29wIHJvdGF0aW9u IGNvdWxkIGhlbHAgYnV0IG5vdGUNCj4gPiA+IHRoYXQgd2UgYWxyZWFkeSBhcHBseSBsb29wIHJv dGF0aW9uIHZpYSBsb29wIGhlYWRlciBjb3B5aW5nIHRoYXQgZm9yDQo+ID4gPiBtdWx0aXBsZSBl eGl0IGxvb3BzIG1pZ2h0IHNlbGVjdCB0aGUgIndyb25nIiBleGl0IC0geW91IG1pZ2h0IHdhbnQg dG8NCj4gPiA+IGNoZWNrIHdoZXRoZXIgaXQgbWFrZXMgc2Vuc2UsIGF0IGxlYXN0IGZvciBwYXNz X2NoX3ZlY3QsIHRvIGFycmFuZ2UgZm9yDQo+ID4gPiB0aGUgY291bnRpbmcgSVYgdG8gYmUgdGhl IGxvb3AgY29udHJvbGxpbmcgb25lLiAgVGhhdCBtaWdodCBhbHJlYWR5IGRvDQo+ID4gPiB0aGUg dHJpY2sgb2YgdGhlIGxvb3Agcm90YXRpb24gKEkganVzdCBjaGVja2VkIHRoZSBwYXNzX2NoX3Zl Y3QgcGFzcw0KPiA+ID4gb25seSBwcm9jZXNzZXMgc2luZ2xlLWV4aXQgbG9vcHMpLg0KPiA+DQo+ ID4gVGhhdCdzIGEgZmFpciBwb2ludC4gIEknbGwgaGF2ZSBhIGxvb2sgYW5kIHNlZSBpZiBJIG5l ZWQgYW55IG1vZGlmaWNhdGlvbnMgdGhlcmUNCj4gPiBvciBpZiB0aGUgbmV3IGxvZ2ljIGR1cmlu ZyBsb29wIGFuYWx5c2lzIGluIHRoZSB2ZWN0b3JpemVyIHN1ZmZpY2VzIChwYXJ0aWN1bGFybHkN Cj4gPiBpcyBwYXNzX2NoX3ZlY3QgaXMgYmFpbGluZyBvdXQuKS4gSSBndWVzcyB0aGUgY29uY2Vy biBoZXJlIGlzIHRoYXQgaWYgeW91IGhhdmUNCj4gPiBtdWx0aXBsZSBJVnMgYW5kIG9uZSBpcyBu b24tY291bnRpbmcgdGhhdCBoYXZpbmcgdGhlIG5vbi1jb3VudGluZyBiZSB0aGUNCj4gbWFpbg0K PiA+IGNvdWxkIGJlIHByb2JsZW1hdGljLg0KPiA+DQo+ID4gPiA+ID4gPiAtIE5vIHN1cHBvcnQg Zm9yIHByb2xvZ3VlIHBlZWxpbmcuICBTaW5jZSB3ZSBvbmx5IHN1cHBvcnQgZml4ZWQNCj4gYnVm ZmVycw0KPiA+ID4gdGhpcw0KPiA+ID4gPiA+ID4gICB3b3VsZG4ndCBiZSBhbiBpc3N1ZSBhcyB3 ZSBhc3N1bWUgdGhlIGFycmF5cyBhcmUgY29ycmVjdGx5IGFsaWduZWQuDQo+ID4gPiA+ID4NCj4g PiA+ID4gPiBIdWgsIEkgZG9uJ3QgdW5kZXJzdGFuZCBob3cgcHJvbG9ndWUgb3IgZXBpbG9ndWUg cGVlbGluZyBpcyBhbiBpc3N1ZT8NCj4gSXMNCj4gPiA+ID4gPiB0aGF0IGp1c3QgYmVjYXVzZSB5 b3UgZGlkbid0IGhhbmRsZSB0aGUgZWFybHkgZXhpdCB0cmlnZ2VyaW5nPw0KPiA+ID4gPg0KPiA+ ID4gPiBZZWFoLCBpdCdzIG5vdCBhbiBpbnRyaW5zaWMgbGltaXRhdGlvbiwgYW5kIHRoZSBjb2Rl IGltcGxlbWVudGVkIGRvZXNuJ3QNCj4gPiA+IGhhdmUNCj4gPiA+ID4gYW55dGhpbmcgdGhhdCB3 b3VsZCBwcmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmcgaW4gdGhlIGZ1dHVyZS4gIEl0J3MganVz dA0KPiA+ID4gc29tZXRoaW5nDQo+ID4gPiA+IHdlIGRpZG4ndCByZXF1aXJlIGZvciB0aGUgY3Vy cmVudCB1c2UtY2FzZXMuDQo+ID4gPiA+DQo+ID4gPiA+IFRvIHN1cHBvcnQgdGhpcyB3ZSdkICJq dXN0IiBuZWVkIHRvIHN1cHBvcnQgcHJvbG9ndWUgcGVlbGluZyBieQ0KPiBicmFuY2hpbmcNCj4g PiA+IHRvDQo+ID4gPiA+IHRoZSBleGl0IGJsb2NrLCBidXQgd2UnZCBoYXZlIHRvIHNwbGl0IHRo ZSBleGl0IGJsb2NrIHNvIHdlIGtlZXAgc2ltcGxlDQo+IHR3bw0KPiA+ID4gPiBhcmd1bWVudCBw aGkgbm9kZXMgZm9yIGVhY2ggcGVlbGVkIGl0ZXJhdGlvbi4gaS5lLiBJIGRvbid0IHRoaW5rIHRo ZXkgY2FuDQo+IGFsbA0KPiA+ID4gZXhpdA0KPiA+ID4gPiB0byB0aGUgc2FtZSBibG9jayAoZG8g d2Ugc3VwcG9ydCBwaGkgbm9kZXMgd2l0aCBOIGVudHJpZXM/KSBhcyBJIGRvbid0DQo+ID4gPiB0 aGluaw0KPiA+ID4gPiB3ZSdkIGJlIGFibGUgdG8gaGFuZGxlIHRoYXQgcmVkdWN0aW9uLg0KPiA+ ID4NCj4gPiA+IFllcywgUEhJIG5vZGVzIGNhbiBoYXZlIGFuIGFyYml0cmFyeSBudW1iZXIgb2Yg aW5jb21pbmcgZWRnZXMuDQo+ID4NCj4gPiBBaGEsIHRoYXQncyBnb29kIHRvIGtub3chDQo+ID4N Cj4gPiA+DQo+ID4gPiA+IFNvIEkga25vdyBob3cgdG8gcG90ZW50aWFsbHkgZG8gaXQsDQo+ID4g PiA+IGFuZCBrZXB0IGl0IGluIG1pbmQgaW4gdGhlIGltcGxlbWVudGF0aW9uLCBidXQganVzdCBm b3IgcHJhY3RpY2FsaXR5L3RpbWUNCj4gPiA+ID4gZGlkIG5vdCBkbyBpdCBhdCB0aGlzIHRpbWUu DQo+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0gRnVsbHkgbWFza2VkIGxvb3BzIG9y IHVubWFza2VkIGxvb3BzIGFyZSBzdXBwb3J0ZWQsIGJ1dCBub3QNCj4gcGFydGlhbGx5DQo+ID4g PiA+ID4gbWFza2VkDQo+ID4gPiA+ID4gPiAgIGxvb3BzLg0KPiA+ID4gPiA+ID4gLSBPbmx5IG9u ZSBhZGRpdGlvbmFsIGV4aXQgaXMgc3VwcG9ydGVkIGF0IHRoaXMgdGltZS4gIFRoZSBtYWpvcml0 eSBvZg0KPiB0aGUNCj4gPiA+ID4gPiBjb2RlDQo+ID4gPiA+ID4gPiAgIHdpbGwgaGFuZGxlIG4g ZXhpdHMuIEJ1dCBub3QgYWxsIHNvIGF0IHRoaXMgdGltZSB0aGlzIHJlc3RyaWN0aW9uIGlzDQo+ IG5lZWRlZC4NCj4gPiA+ID4gPiA+IC0gVGhlIGVhcmx5IGV4aXQgbXVzdCBiZSBiZWZvcmUgdGhl IG5hdHVyYWwgbG9vcCBleGl0L2xhdGNoLiAgVGhlDQo+ID4gPiB2ZWN0b3JpemVyIGlzDQo+ID4g PiA+ID4gPiAgIGRlc2lnbmVkIGluIHdheSB0byBwcm9wYWdlIHBoaS1ub2RlcyBkb3dud2FyZHMu ICBBcyBzdWNoDQo+ID4gPiBzdXBwb3J0aW5nDQo+ID4gPiA+ID4gdGhpcw0KPiA+ID4gPiA+ID4g ICBpbnZlcnRlZCBjb250cm9sIGZsb3cgaXMgaGFyZC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEhv dyBkbyB5b3UgaWRlbnRpZnkgdGhlICJuYXR1cmFsIiBleGl0PyAgSXQncyB0aGUgb25lDQo+ID4g PiA+ID4gbnVtYmVyX29mX2l0ZXJhdGlvbnNfZXhpdCB3b3JrcyBvbj8gIFlvdXIgbm9ybWFsX2V4 aXQgcGlja3MgdGhlDQo+ID4gPiA+ID4gZmlyc3QgZnJvbSB0aGUgbG9vcHMgcmVjb3JkZWQgZXhp dCBsaXN0IGJ1dCBJIGRvbid0IHRoaW5rIHRoYXQgbGlzdA0KPiA+ID4gPiA+IGlzIG9yZGVyZWQg aW4gYW55IHBhcnRpY3VsYXIgd2F5Lg0KPiA+ID4gPg0KPiA+ID4gPiBBaCB0aG91Z2h0IGl0IHdh cyBzaW5jZSBkdXJpbmcgdGhlIGxvb3AgYW5hbHlzaXMgaXQncyBhbHdheXMgdGhlIGZpcnN0IGV4 aXQuDQo+ID4gPiA+IEJ1dCBjYW4gZWFzaWx5IHVwZGF0ZSB0aGUgcGF0Y2ggdG8gZGV0ZXJtaW5l IHRoYXQgaW4gYSBzbWFydGVyIHdheS4NCj4gPiA+DQo+ID4gPiBUaGF0IHdvdWxkIGJlIGFwcHJl Y2lhdGVkLg0KPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICJub3JtYWxfZXhpdCIgd291bGQg cmF0aGVyIGJlIHNpbmdsZV9jb3VudGFibGVfZXhpdCAoKSBvciBzbz8gIEEgbG9vcA0KPiA+ID4g PiA+IGFscmVhZHkgaGFzIGEgbGlzdCBvZiBjb250cm9sX2l2cyAobm90IHN1cmUgaWYgd2UgZXZl ciBoYXZlIG1vcmUgdGhhbg0KPiA+ID4gPiA+IG9uZSksIEkgd29uZGVyIGlmIHRoYXQgY2FuIGJl IGFubm90YXRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGV4aXQNCj4gPiA+ID4gPiBlZGdlPw0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gSSB0aGluayB0aGF0IHZlY3RfYW5hbHl6ZV9sb29wX2Zvcm0g c2hvdWxkIHJlY29yZCB0aGUgY291bnRpbmcgSVYNCj4gPiA+ID4gPiBleGl0IGVkZ2UgYW5kIHRo YXQgcmVjb3JkZWQgZWRnZSBzaG91bGQgYmUgcGFzc2VkIHRvIHV0aWxpdGllcw0KPiA+ID4gPiA+ IGxpa2Ugc2xwZWVsX2Nhbl9kdXBsaWNhdGVfbG9vcF9wIHJhdGhlciB0aGFuIHJlLXF1ZXJ5aW5n DQo+ICdub3JtYWxfZXhpdCcsDQo+ID4gPiA+ID4gZm9yIGV4YW1wbGUgaWYgd2UnZCBoYXZlDQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiBmb3IgKDs7ICsraSwgKytqKQ0KPiA+ID4gPiA+ICAgew0KPiA+ ID4gPiA+ICAgICBpZiAoaSA8IG4pDQo+ID4gPiA+ID4gICAgICAgYnJlYWs7DQo+ID4gPiA+ID4g ICAgIGFbaV0gPSAwOw0KPiA+ID4gPiA+ICAgICBpZiAoaiA8IG0pDQo+ID4gPiA+ID4gICAgICAg YnJlYWs7DQo+ID4gPiA+ID4gICB9DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiB3aGljaCBjb3VudGlu ZyBJViB3ZSBjaG9vc2UgYXMgIm5vcm1hbCIgc2hvdWxkIGJlIHVwIHRvIHRoZQ0KPiB2ZWN0b3Jp emVyLA0KPiA+ID4gPiA+IG5vdCB1cCB0byB0aGUgbG9vcCBpbmZyYXN0cnVjdHVyZS4NCj4gPiA+ ID4NCj4gPiA+ID4gQWgsIFRoYXQncyBhIGZhaXIgZW5vdWdoIHBvaW50IGFuZCBlYXN5IGVub3Vn aCB0byBkby4NCj4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRoZSBwYXRjaCBzaG91bGQg bGlrZWx5IGJlIHNwbGl0LCBkb2luZyBzaW5nbGVfZXhpdCAoKSByZXBsYWNlbWVudHMNCj4gPiA+ ID4gPiB3aXRoLCBzYXksIExPT1BfVklORk9fSVZfRVhJVCAoLi4pIGZpcnN0Lg0KPiA+ID4gPiA+ DQo+ID4gPiA+DQo+ID4gPiA+IE9rLCBJJ2xsIHN0YXJ0IGRvaW5nIHRoYXQgbm93IHdoaWxlIHdh aXRpbmcgZm9yIHRoZSBmdWxsIHJldmlldy4NCj4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gLSBObyBzdXBwb3J0IGZvciBlcGlsb2d1ZSB2ZWN0b3JpemF0aW9uLiAgVGhlIG9ubHkgZXBp bG9ndWUNCj4gc3VwcG9ydGVkIGlzDQo+ID4gPiB0aGUNCj4gPiA+ID4gPiA+ICAgc2NhbGFyIGZp bmFsIG9uZS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBXaXRoIHRoZSBoZWxwIG9mIElQQSB0 aGlzIHN0aWxsIGdldHMgaGl0IHF1aXRlIG9mdGVuLiAgRHVyaW5nIGJvb3RzdHJhcCBpdA0KPiA+ ID4gPiA+ID4gaGl0IHJhdGhlciBmcmVxdWVudGx5IGFzIHdlbGwuDQo+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGNvbXBsZXRlbHkg aGFuZGxpbmcgdGhlDQo+IGVhcmx5DQo+ID4gPiBicmVhaw0KPiA+ID4gPiA+IGluc2lkZQ0KPiA+ ID4gPiA+ID4gdGhlIHZlY3RvciBsb29wIGl0c2VsZiBidXQgaW5zdGVhZCBzdXBwb3J0cyBhZGRp bmcgY2hlY2tzIHN1Y2ggdGhhdCBpZg0KPiB3ZQ0KPiA+ID4gPiA+IGtub3cNCj4gPiA+ID4gPiA+ IHRoYXQgd2UgaGF2ZSB0byBleGl0IGluIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiB0aGVuIHdlIGJy YW5jaCB0byBzY2FsYXINCj4gPiA+IGNvZGUNCj4gPiA+ID4gPiB0bw0KPiA+ID4gPiA+ID4gYWN0 dWFsbHkgZG8gdGhlIGZpbmFsIFZGIGl0ZXJhdGlvbnMgd2hpY2ggaGFuZGxlcyBhbGwgdGhlIGNv ZGUgaW4NCj4gPGFjdGlvbj4uDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gbml0ZXJzIGFuYWx5 c2lzIGFuZCB0aGUgbWFqb3JpdHkgb2YgdGhlIHZlY3Rvcml6ZXIgd2l0aCBoYXJkY29kZWQNCj4g PiA+ID4gPiBzaW5nbGVfZXhpdA0KPiA+ID4gPiA+ID4gaGF2ZSBiZWVuIHVwZGF0ZWQgd2l0aCB0 aGUgdXNlIG9mIGEgbmV3IGZ1bmN0aW9uIG5vcm1hbF9leGl0DQo+IHdoaWNoDQo+ID4gPiA+ID4g cmV0dXJucyB0aGUNCj4gPiA+ID4gPiA+IGxvb3AncyBuYXR1cmFsIGV4aXQuDQo+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gZm9yIG5pdGVycyB0aGUgbmF0dXJhbCBleGl0IGlzIHN0aWxsIHdoYXQg ZGV0ZXJtaW5lcyB0aGUgb3ZlcmFsbA0KPiBpdGVyYXRpb25zDQo+ID4gPiBhcw0KPiA+ID4gPiA+ ID4gdGhhdCBpcyB0aGUgTyhpdGVycykgZm9yIHRoZSBsb29wLg0KPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+IEZvciB0aGUgc2NhbGFyIGxvb3Agd2Uga25vdyB0aGF0IHdoYXRldmVyIGV4aXQgeW91 IHRha2UgeW91IGhhdmUNCj4gdG8NCj4gPiA+ID4gPiBwZXJmb3JtIGF0DQo+ID4gPiA+ID4gPiBt b3N0IFZGIGl0ZXJhdGlvbnMuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gV2hlbiB0aGUgbG9v cCBpcyBwZWVsZWQgZHVyaW5nIHRoZSBjb3B5aW5nIEkgaGF2ZSB0byBnbyB0aHJvdWdoDQo+IGdy ZWF0DQo+ID4gPiA+ID4gbGVuZ3RocyB0bw0KPiA+ID4gPiA+ID4ga2VlcCB0aGUgZG9taW5hdG9y cyB1cCB0byBkYXRlLiAgQWxsIGV4aXRzIGZyb20gdGhlIGZpcnN0IGxvb3AgYXJlDQo+ID4gPiBy ZXdpcmVkIHRvDQo+ID4gPiA+ID4gdGhlDQo+ID4gPiA+ID4gPiBsb29wIGhlYWRlciBvZiB0aGUg c2Vjb25kIGxvb3AuICBCdXQgdGhpcyBjYW4gY2hhbmdlIHRoZSBpbW1lZGlhdGUNCj4gPiA+ID4g PiBkb21pbmF0b3IuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBOb3Qgc3VyZSBob3cgLSBpdCB3b3Vs ZCBwcm9iYWJseSBoZWxwIHRvIGtlZXAgdGhlIG9yaWdpbmFsIHNjYWxhciBsb29wDQo+ID4gPiA+ ID4gYXMgdGhlIGVwaWxvZ3VlIGFuZCBpbnN0ZWFkIGVtaXQgdGhlIHZlY3RvciBsb29wIGFzIGNv cHkgb24gdGhhdCBsb29wcw0KPiA+ID4gPiA+IGVudHJ5IGVkZ2Ugc28gd2lyaW5nIHRoZSBhbHRl cm5hdGUgZXhpdHMgdG8gdGhhdCB2ZXJ5IHNhbWUgcGxhY2UgaXMNCj4gPiA+ID4gPiB0cml2aWFs Pw0KPiA+ID4gPg0KPiA+ID4gPiBIbW0geWVzIGZsaXBwaW5nIHRoZSBsb29wIHdpcmluZyB3b3Vs ZCBzaW1wbGlmeSB0aGUgZG9taW5hdG9ycy4gSSBkaWQgaXQNCj4gdGhpcw0KPiA+ID4gPiB3YXkg YmVjYXVzZSB0aGF0J3MgdGhlIGRpcmVjdGlvbiBub3JtYWwgZXBpbG9ndWUgcGVlbGluZyBkaWQg dG9kYXkuDQo+IEJ1dA0KPiA+ID4gbG9va2luZw0KPiA+ID4gPiBhdCB0aGUgY29kZSB0aGlzIHNo b3VsZCBiZSBlYXN5IHRvIGRvLg0KPiA+ID4gPg0KPiA+ID4gPiBJJ2xsIGFsc28gc3RhcnQgb24g dGhpcyBub3cuDQo+ID4gPg0KPiA+ID4gTm90ZSB0aGVyZSdzIGFsc28gaXRlcmF0ZV9maXhfZG9t aW5hdG9ycyB1c2VkIGluIHNvbWUgQ0ZHIGluZnJhc3RydWN0dXJlDQo+ID4gPiB0byBmaXh1cCB0 aGUgZG9taW5hdG9yIHRyZWUgYWZ0ZXIgY29tcGxleCB0cmFuc2Zvcm1zLg0KPiA+ID4NCj4gPg0K PiA+IE9oIHRoYXQncyBhIGhhbmR5IG9uZSwgSSdsbCB0YWtlIGEgbG9vayBhdCBob3cgaXQgd29y a3MsIGJ1dCB3ZSBtYXkgbm90IG5lZWQNCj4gaXQNCj4gPiBhbnltb3JlIGFmdGVyIGZsaXBwaW5n IHRoZSBsb29wcy4gIEkgZGlkIGF0IHBvaW50cyB0aG91Z2h0IGl0IG1pZ2h0IGJlIGVhc2llcg0K PiB0bw0KPiA+IGp1c3QgcmVjYWxjdWxhdGUgdGhpcyBzaW5jZSBudW1iZXIgb2YgQkIgaW4gdGhl IGxvb3AgdGhhdCBlZmZlY3RzIGRvbWluYXRvcnMNCj4gaXNuJ3QNCj4gPiB0eXBpY2FsbHkgdGhh dCBtdWNoPw0KPiANCj4gSSBzdXBwb3NlIHNvIGluIHByYWN0aWNlLiAgSSBndWVzcyBJJ2QgcHJl ZmVyIGEgc29sdXRpb24gdXNpbmcNCj4gaXRlcmF0ZV9maXhfZG9taW5hdG9ycywgZmxpcHBpbmcg dGhlIGxvb3BzIG1pZ2h0IGhhdmUgaXNzdWVzIHdpdGggb3RoZXINCj4gY29kZSAoSSdtIG5vdCBz dXJlKSAtIGd1ZXNzIHlvdSdsbCBmaWd1cmUgb3V0Lg0KDQpBY2ssIHdpbGwgdXNlIHRoaXMgdGhl biDwn5iKDQoNCj4gDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFdlIGhhZCBzcG9rZW4gb24gSVJD IGFib3V0IHJlbW92aW5nIHRoZSBkb21pbmF0b3JzIHZhbGlkYXRpb24NCj4gY2FsbCBhdA0KPiA+ ID4gdGhlDQo+ID4gPiA+ID4gZW5kIG9mDQo+ID4gPiA+ID4gPiBzbHBlZWxfdHJlZV9kdXBsaWNh dGVfbG9vcF90b19lZGdlX2NmZyBhbmQgbGVhdmluZyBpdCB1cCB0byBjZmcNCj4gPiA+IGNsZWFu dXANCj4gPiA+ID4gPiB0bw0KPiA+ID4gPiA+ID4gcmVtb3ZlIHRoZSBpbnRlcm1lZGlhdGUgYmxv Y2tzIHRoYXQgY2F1c2UgdGhlIGRvbWluYXRvcnMgdG8gZmFpbC4NCj4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPiBIb3dldmVyIHRoaXMgdHVybmVkIG91dCBub3QgdG8gd29yayBhcyBjZmdjbGVhbnVw IGl0c2VsZiByZXF1aXJlcw0KPiB0aGUNCj4gPiA+ID4gPiBkb21pbmF0b3JzDQo+ID4gPiA+ID4g PiBncmFwaC4gICBTbyBpdCdzIHNvbWV3aGF0IGEgY2hpY2tlbiBhbmQgZWdnLiAgVG8gd29yayBh cm91bmQgdGhpcyBJDQo+ID4gPiBhZGRlZA0KPiA+ID4gPiA+IHNvbWUNCj4gPiA+ID4gPiA+IHJ1 bGVzIGZvciB3aGVuIEkgdXBkYXRlIHdoYXQgZG9taW5hdG9yIGFuZCBhbHNvIHJlamVjdCB0aGUg Zm9ybXMgSQ0KPiA+ID4gZG9uJ3QNCj4gPiA+ID4gPiBzdXBwb3J0DQo+ID4gPiA+ID4gPiBkdXJp bmcgdmVjdF9hbmFseXplX2xvb3BfZm9ybS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBJIGhh dmUgdHJpZWQgdG8gc3RydWN0dXJlIHRoZSB1cGRhdGVzIHRvIGxvb3AtbWFuaXAuY2MgaW4gYSB3 YXkgdGhhdA0KPiBpdA0KPiA+ID4gZml0cw0KPiA+ID4gPiA+ID4gd2l0aCB0aGUgY3VycmVudCBm bG93LiAgSSB0aGluayBJIGhhdmUgZG9uZSBhIGRlY2VudCBqb2IsIGJ1dCB0aGVyZQ0KPiBhcmUN Cj4gPiA+IHRoaW5ncw0KPiA+ID4gPiA+IEkNCj4gPiA+ID4gPiA+IGNhbiBhbHNvIGRvIGRpZmZl cmVudGx5IGlmIHByZWZlcnJlZCBhbmQgaGF2ZSBwb2ludGVkIHRoZW0gb3V0IGluDQo+ID4gPiA+ ID4gY29tbWVudHMgaW4NCj4gPiA+ID4gPiA+IHRoZSBzb3VyY2UuDQo+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gRm9yIHRoZSBsb29wIHBlZWxpbmcgd2UgcmV3cml0ZSB0aGUgbG9vcCBmb3JtOg0K PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAg ICBIZWFkZXINCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAtLS0NCj4gPiA+ID4g PiA+ICAgICAgICAgICAgICAgICAgICAgICB8eHwNCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgMg0KPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gPiA+ ID4gPiAgICAgICAgICAgICAgICAgICAgICAgIHYNCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAg ICAtLS0tLS0tMzwtLS0tLS0NCj4gPiA+ID4gPiA+ICAgICAgZWFybHkgZXhpdCB8ICAgICAgfCAg ICAgIHwNCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICB2ICAgICAgdiAgICAgIHwgbGF0Y2gN Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICA3ICAgICAgNC0tLS0tPjYNCj4gPiA+ID4gPiA+ ICAgICAgICAgICAgICAgICB8ICAgICAgfA0KPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgIHwg ICAgICB2DQo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgfCAgICAgIDgNCj4gPiA+ID4gPiA+ ICAgICAgICAgICAgICAgICB8ICAgICAgfA0KPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgIHwg ICAgICB2DQo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgLS0tLS0tPjUNCj4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiBpbnRvDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICAgICAgICAgICAg ICAgICAgICAgSGVhZGVyDQo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgLS0tDQo+ ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgfHh8DQo+ID4gPiA+ID4gPiAgICAgICAg ICAgICAgICAgICAgICAgIDINCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgfA0K PiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICB2DQo+ID4gPiA+ID4gPiAgICAgICAg ICAgICAgICAgLS0tLS0tLTM8LS0tLS0tDQo+ID4gPiA+ID4gPiAgICAgIGVhcmx5IGV4aXQgfCAg ICAgIHwgICAgICB8DQo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgdiAgICAgIHYgICAgICB8 IGxhdGNoDQo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgNyAgICAgIDQtLS0tLT42DQo+ID4g PiA+ID4gPiAgICAgICAgICAgICAgICAgfCAgICAgIHwNCj4gPiA+ID4gPiA+ICAgICAgICAgICAg ICAgICB8ICAgICAgdg0KPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgIHwgICAgICA4DQo+ID4g PiA+ID4gPiAgICAgICAgICAgICAgICAgfCAgICAgIHwNCj4gPiA+ID4gPiA+ICAgICAgICAgICAg ICAgICB8ICAgICAgdg0KPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgIHwgIE5ldyBIZWFkZXIN Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICB8ICAgICAtLS0NCj4gPiA+ID4gPiA+ICAgICAg ICAgICAgICAgICAtLS0tLT58eHwNCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAg OQ0KPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICB8DQo+ID4gPiA+ID4gPiAgICAg ICAgICAgICAgICAgICAgICAgIHYNCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAtLS0tLS0x MDwtLS0tLQ0KPiA+ID4gPiA+ID4gICAgICBlYXJseSBleGl0IHwgICAgICB8ICAgICAgfA0KPiA+ ID4gPiA+ID4gICAgICAgICAgICAgICAgIHYgICAgICB2ICAgICAgfCBsYXRjaA0KPiA+ID4gPiA+ ID4gICAgICAgICAgICAgICAgIDE0ICAgICAxMS0tLS0+MTMNCj4gPiA+ID4gPiA+ICAgICAgICAg ICAgICAgICB8ICAgICAgfA0KPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgIHwgICAgICB2DQo+ ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgfCAgICAgIDEyDQo+ID4gPiA+ID4gPiAgICAgICAg ICAgICAgICAgfCAgICAgIHwNCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICB8ICAgICAgdg0K PiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgIC0tLS0tLT4gNQ0KPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+IFdoZW4gd2UgdmVjdG9yaXplIHdlIG1vdmUgYW55IHN0YXRlbWVudCBub3QgcmVsYXRl ZCB0byB0aGUgZWFybHkNCj4gPiA+IGJyZWFrDQo+ID4gPiA+ID4gaXRzZWxmIHRvDQo+ID4gPiA+ ID4gPiB0aGUgQkIgYWZ0ZXIgdGhlIGVhcmx5IGV4aXQgYW5kIHVwZGF0ZSBhbGwgcmVmZXJlbmNl cyBhcyBhcHByb3ByaWF0ZS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGlzIG1lYW5zIHRo YXQgd2UgY2hlY2sgYXQgdGhlIHN0YXJ0IG9mIGl0ZXJhdGlvbnMgd2hldGhlciB3ZSBhcmUNCj4g PiA+IGdvaW5nIHRvDQo+ID4gPiA+ID4gZXhpdA0KPiA+ID4gPiA+ID4gb3Igbm90LiAgRHVyaW5n IHRoZSBhbmFseWlzIHBoYXNlIHdlIGNoZWNrIHdoZXRoZXIgd2UgYXJlIGFsbG93ZWQNCj4gdG8N Cj4gPiA+IGRvDQo+ID4gPiA+ID4gdGhpcw0KPiA+ID4gPiA+ID4gbW92aW5nIG9mIHN0YXRlbWVu dHMuICBBbHNvIG5vdGUgdGhhdCB3ZSBvbmx5IG1vdmUgdGhlIHZlY3Rvcg0KPiA+ID4gc3RhdGVt ZW50cw0KPiA+ID4gPiA+IGFuZA0KPiA+ID4gPiA+ID4gbGVhdmUgdGhlIHNjYWxhcnMgYWxvbmUu DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gQ29kZWdlbjoNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiBmb3IgZS5nLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICNkZWZpbmUgTiA4MDMNCj4g PiA+ID4gPiA+IHVuc2lnbmVkIHZlY3RfYVtOXTsNCj4gPiA+ID4gPiA+IHVuc2lnbmVkIHZlY3Rf YltOXTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiB1bnNpZ25lZCB0ZXN0NCh1bnNpZ25lZCB4 KQ0KPiA+ID4gPiA+ID4gew0KPiA+ID4gPiA+ID4gIHVuc2lnbmVkIHJldCA9IDA7DQo+ID4gPiA+ ID4gPiAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspDQo+ID4gPiA+ID4gPiAgew0KPiA+ID4g PiA+ID4gICAgdmVjdF9iW2ldID0geCArIGk7DQo+ID4gPiA+ID4gPiAgICBpZiAodmVjdF9hW2ld ID4geCkNCj4gPiA+ID4gPiA+ICAgICAgYnJlYWs7DQo+ID4gPiA+ID4gPiAgICB2ZWN0X2FbaV0g PSB4Ow0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICB9DQo+ID4gPiA+ID4gPiAgcmV0dXJuIHJl dDsNCj4gPiA+ID4gPiA+IH0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBXZSBnZW5lcmF0ZSBm b3IgTkVPTjoNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiB0ZXN0NDoNCj4gPiA+ID4gPiA+ICAg ICAgICAgYWRycCAgICB4MiwgLkxDMA0KPiA+ID4gPiA+ID4gICAgICAgICBhZHJwICAgIHgzLCAu TEFOQ0hPUjANCj4gPiA+ID4gPiA+ICAgICAgICAgZHVwICAgICB2Mi40cywgdzANCj4gPiA+ID4g PiA+ICAgICAgICAgYWRkICAgICB4MywgeDMsIDpsbzEyOi5MQU5DSE9SMA0KPiA+ID4gPiA+ID4g ICAgICAgICBtb3ZpICAgIHY0LjRzLCAweDQNCj4gPiA+ID4gPiA+ICAgICAgICAgYWRkICAgICB4 NCwgeDMsIDMyMTYNCj4gPiA+ID4gPiA+ICAgICAgICAgbGRyICAgICBxMSwgW3gyLCAjOmxvMTI6 LkxDMF0NCj4gPiA+ID4gPiA+ICAgICAgICAgbW92ICAgICB4MSwgMA0KPiA+ID4gPiA+ID4gICAg ICAgICBtb3YgICAgIHcyLCAwDQo+ID4gPiA+ID4gPiAgICAgICAgIC5wMmFsaWduIDMsLDcNCj4g PiA+ID4gPiA+IC5MMzoNCj4gPiA+ID4gPiA+ICAgICAgICAgbGRyICAgICBxMCwgW3gzLCB4MV0N Cj4gPiA+ID4gPiA+ICAgICAgICAgYWRkICAgICB2My40cywgdjEuNHMsIHYyLjRzDQo+ID4gPiA+ ID4gPiAgICAgICAgIGFkZCAgICAgdjEuNHMsIHYxLjRzLCB2NC40cw0KPiA+ID4gPiA+ID4gICAg ICAgICBjbWhpICAgIHYwLjRzLCB2MC40cywgdjIuNHMNCj4gPiA+ID4gPiA+ICAgICAgICAgdW1h eHAgICB2MC40cywgdjAuNHMsIHYwLjRzDQo+ID4gPiA+ID4gPiAgICAgICAgIGZtb3YgICAgeDUs IGQwDQo+ID4gPiA+ID4gPiAgICAgICAgIGNibnogICAgeDUsIC5MNg0KPiA+ID4gPiA+ID4gICAg ICAgICBhZGQgICAgIHcyLCB3MiwgMQ0KPiA+ID4gPiA+ID4gICAgICAgICBzdHIgICAgIHEzLCBb eDEsIHg0XQ0KPiA+ID4gPiA+ID4gICAgICAgICBzdHIgICAgIHEyLCBbeDMsIHgxXQ0KPiA+ID4g PiA+ID4gICAgICAgICBhZGQgICAgIHgxLCB4MSwgMTYNCj4gPiA+ID4gPiA+ICAgICAgICAgY21w ICAgICB3MiwgMjAwDQo+ID4gPiA+ID4gPiAgICAgICAgIGJuZSAgICAgLkwzDQo+ID4gPiA+ID4g PiAgICAgICAgIG1vdiAgICAgdzcsIDMNCj4gPiA+ID4gPiA+IC5MMjoNCj4gPiA+ID4gPiA+ICAg ICAgICAgbHNsICAgICB3MiwgdzIsIDINCj4gPiA+ID4gPiA+ICAgICAgICAgYWRkICAgICB4NSwg eDMsIDMyMTYNCj4gPiA+ID4gPiA+ICAgICAgICAgYWRkICAgICB3NiwgdzIsIHcwDQo+ID4gPiA+ ID4gPiAgICAgICAgIHN4dHcgICAgeDQsIHcyDQo+ID4gPiA+ID4gPiAgICAgICAgIGxkciAgICAg dzEsIFt4MywgeDQsIGxzbCAyXQ0KPiA+ID4gPiA+ID4gICAgICAgICBzdHIgICAgIHc2LCBbeDUs IHg0LCBsc2wgMl0NCj4gPiA+ID4gPiA+ICAgICAgICAgY21wICAgICB3MCwgdzENCj4gPiA+ID4g PiA+ICAgICAgICAgYmNjICAgICAuTDQNCj4gPiA+ID4gPiA+ICAgICAgICAgYWRkICAgICB3MSwg dzIsIDENCj4gPiA+ID4gPiA+ICAgICAgICAgc3RyICAgICB3MCwgW3gzLCB4NCwgbHNsIDJdDQo+ ID4gPiA+ID4gPiAgICAgICAgIGFkZCAgICAgdzYsIHcxLCB3MA0KPiA+ID4gPiA+ID4gICAgICAg ICBzeHR3ICAgIHgxLCB3MQ0KPiA+ID4gPiA+ID4gICAgICAgICBsZHIgICAgIHc0LCBbeDMsIHgx LCBsc2wgMl0NCj4gPiA+ID4gPiA+ICAgICAgICAgc3RyICAgICB3NiwgW3g1LCB4MSwgbHNsIDJd DQo+ID4gPiA+ID4gPiAgICAgICAgIGNtcCAgICAgdzAsIHc0DQo+ID4gPiA+ID4gPiAgICAgICAg IGJjYyAgICAgLkw0DQo+ID4gPiA+ID4gPiAgICAgICAgIGFkZCAgICAgdzQsIHcyLCAyDQo+ID4g PiA+ID4gPiAgICAgICAgIHN0ciAgICAgdzAsIFt4MywgeDEsIGxzbCAyXQ0KPiA+ID4gPiA+ID4g ICAgICAgICBzeHR3ICAgIHgxLCB3NA0KPiA+ID4gPiA+ID4gICAgICAgICBhZGQgICAgIHc2LCB3 MSwgdzANCj4gPiA+ID4gPiA+ICAgICAgICAgbGRyICAgICB3NCwgW3gzLCB4MSwgbHNsIDJdDQo+ ID4gPiA+ID4gPiAgICAgICAgIHN0ciAgICAgdzYsIFt4NSwgeDEsIGxzbCAyXQ0KPiA+ID4gPiA+ ID4gICAgICAgICBjbXAgICAgIHcwLCB3NA0KPiA+ID4gPiA+ID4gICAgICAgICBiY2MgICAgIC5M NA0KPiA+ID4gPiA+ID4gICAgICAgICBzdHIgICAgIHcwLCBbeDMsIHgxLCBsc2wgMl0NCj4gPiA+ ID4gPiA+ICAgICAgICAgYWRkICAgICB3MiwgdzIsIDMNCj4gPiA+ID4gPiA+ICAgICAgICAgY21w ICAgICB3NywgMw0KPiA+ID4gPiA+ID4gICAgICAgICBiZXEgICAgIC5MNA0KPiA+ID4gPiA+ID4g ICAgICAgICBzeHR3ICAgIHgxLCB3Mg0KPiA+ID4gPiA+ID4gICAgICAgICBhZGQgICAgIHcyLCB3 MiwgdzANCj4gPiA+ID4gPiA+ICAgICAgICAgbGRyICAgICB3NCwgW3gzLCB4MSwgbHNsIDJdDQo+ ID4gPiA+ID4gPiAgICAgICAgIHN0ciAgICAgdzIsIFt4NSwgeDEsIGxzbCAyXQ0KPiA+ID4gPiA+ ID4gICAgICAgICBjbXAgICAgIHcwLCB3NA0KPiA+ID4gPiA+ID4gICAgICAgICBiY2MgICAgIC5M NA0KPiA+ID4gPiA+ID4gICAgICAgICBzdHIgICAgIHcwLCBbeDMsIHgxLCBsc2wgMl0NCj4gPiA+ ID4gPiA+IC5MNDoNCj4gPiA+ID4gPiA+ICAgICAgICAgbW92ICAgICB3MCwgMA0KPiA+ID4gPiA+ ID4gICAgICAgICByZXQNCj4gPiA+ID4gPiA+ICAgICAgICAgLnAyYWxpZ24gMiwsMw0KPiA+ID4g PiA+ID4gLkw2Og0KPiA+ID4gPiA+ID4gICAgICAgICBtb3YgICAgIHc3LCA0DQo+ID4gPiA+ID4g PiAgICAgICAgIGIgICAgICAgLkwyDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gYW5kIGZvciBT VkU6DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gdGVzdDQ6DQo+ID4gPiA+ID4gPiAgICAgICAg IGFkcnAgICAgeDIsIC5MQU5DSE9SMA0KPiA+ID4gPiA+ID4gICAgICAgICBhZGQgICAgIHgyLCB4 MiwgOmxvMTI6LkxBTkNIT1IwDQo+ID4gPiA+ID4gPiAgICAgICAgIGFkZCAgICAgeDUsIHgyLCAz MjE2DQo+ID4gPiA+ID4gPiAgICAgICAgIG1vdiAgICAgeDMsIDANCj4gPiA+ID4gPiA+ICAgICAg ICAgbW92ICAgICB3MSwgMA0KPiA+ID4gPiA+ID4gICAgICAgICBjbnR3ICAgIHg0DQo+ID4gPiA+ ID4gPiAgICAgICAgIG1vdiAgICAgejEucywgdzANCj4gPiA+ID4gPiA+ICAgICAgICAgaW5kZXgg ICB6MC5zLCAjMCwgIzENCj4gPiA+ID4gPiA+ICAgICAgICAgcHRydWUgICBwMS5iLCBhbGwNCj4g PiA+ID4gPiA+ICAgICAgICAgcHRydWUgICBwMC5zLCBhbGwNCj4gPiA+ID4gPiA+ICAgICAgICAg LnAyYWxpZ24gMywsNw0KPiA+ID4gPiA+ID4gLkwzOg0KPiA+ID4gPiA+ID4gICAgICAgICBsZDF3 ICAgIHoyLnMsIHAxL3osIFt4MiwgeDMsIGxzbCAyXQ0KPiA+ID4gPiA+ID4gICAgICAgICBhZGQg ICAgIHozLnMsIHowLnMsIHoxLnMNCj4gPiA+ID4gPiA+ICAgICAgICAgY21wbG8gICBwMi5zLCBw MC96LCB6MS5zLCB6Mi5zDQo+ID4gPiA+ID4gPiAgICAgICAgIGIuYW55ICAgLkwyDQo+ID4gPiA+ ID4gPiAgICAgICAgIHN0MXcgICAgejMucywgcDEsIFt4NSwgeDMsIGxzbCAyXQ0KPiA+ID4gPiA+ ID4gICAgICAgICBhZGQgICAgIHcxLCB3MSwgMQ0KPiA+ID4gPiA+ID4gICAgICAgICBzdDF3ICAg IHoxLnMsIHAxLCBbeDIsIHgzLCBsc2wgMl0NCj4gPiA+ID4gPiA+ICAgICAgICAgYWRkICAgICB4 MywgeDMsIHg0DQo+ID4gPiA+ID4gPiAgICAgICAgIGluY3cgICAgejAucw0KPiA+ID4gPiA+ID4g ICAgICAgICBjbXAgICAgIHczLCA4MDMNCj4gPiA+ID4gPiA+ICAgICAgICAgYmxzICAgICAuTDMN Cj4gPiA+ID4gPiA+IC5MNToNCj4gPiA+ID4gPiA+ICAgICAgICAgbW92ICAgICB3MCwgMA0KPiA+ ID4gPiA+ID4gICAgICAgICByZXQNCj4gPiA+ID4gPiA+ICAgICAgICAgLnAyYWxpZ24gMiwsMw0K PiA+ID4gPiA+ID4gLkwyOg0KPiA+ID4gPiA+ID4gICAgICAgICBjbnR3ICAgIHg1DQo+ID4gPiA+ ID4gPiAgICAgICAgIG11bCAgICAgdzEsIHcxLCB3NQ0KPiA+ID4gPiA+ID4gICAgICAgICBjYnog ICAgIHc1LCAuTDUNCj4gPiA+ID4gPiA+ICAgICAgICAgc3h0dyAgICB4MSwgdzENCj4gPiA+ID4g PiA+ICAgICAgICAgc3ViICAgICB3NSwgdzUsICMxDQo+ID4gPiA+ID4gPiAgICAgICAgIGFkZCAg ICAgeDUsIHg1LCB4MQ0KPiA+ID4gPiA+ID4gICAgICAgICBhZGQgICAgIHg2LCB4MiwgMzIxNg0K PiA+ID4gPiA+ID4gICAgICAgICBiICAgICAgIC5MNg0KPiA+ID4gPiA+ID4gICAgICAgICAucDJh bGlnbiAyLCwzDQo+ID4gPiA+ID4gPiAuTDE0Og0KPiA+ID4gPiA+ID4gICAgICAgICBzdHIgICAg IHcwLCBbeDIsIHgxLCBsc2wgMl0NCj4gPiA+ID4gPiA+ICAgICAgICAgY21wICAgICB4MSwgeDUN Cj4gPiA+ID4gPiA+ICAgICAgICAgYmVxICAgICAuTDUNCj4gPiA+ID4gPiA+ICAgICAgICAgbW92 ICAgICB4MSwgeDQNCj4gPiA+ID4gPiA+IC5MNjoNCj4gPiA+ID4gPiA+ICAgICAgICAgbGRyICAg ICB3MywgW3gyLCB4MSwgbHNsIDJdDQo+ID4gPiA+ID4gPiAgICAgICAgIGFkZCAgICAgdzQsIHcw LCB3MQ0KPiA+ID4gPiA+ID4gICAgICAgICBzdHIgICAgIHc0LCBbeDYsIHgxLCBsc2wgMl0NCj4g PiA+ID4gPiA+ICAgICAgICAgYWRkICAgICB4NCwgeDEsIDENCj4gPiA+ID4gPiA+ICAgICAgICAg Y21wICAgICB3MCwgdzMNCj4gPiA+ID4gPiA+ICAgICAgICAgYmNzICAgICAuTDE0DQo+ID4gPiA+ ID4gPiAgICAgICAgIG1vdiAgICAgdzAsIDANCj4gPiA+ID4gPiA+ICAgICAgICAgcmV0DQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gT24gdGhlIHdvcmtsb2FkcyB0aGlzIHdvcmsgaXMgYmFzZWQg b24gd2Ugc2VlIGJldHdlZW4gMi0zeA0KPiA+ID4gcGVyZm9ybWFuY2UNCj4gPiA+ID4gPiB1cGxp ZnQNCj4gPiA+ID4gPiA+IHVzaW5nIHRoaXMgcGF0Y2guDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gT3V0c3RhbmRpbmcgaXNzdWVzOg0KPiA+ID4gPiA+ID4gIC0gVGhlIHBhdGNoIGlzIGZ1bGx5 IGZ1bmN0aW9uYWwgYnV0IGhhcyB0d28gdGhpbmdzIEkgd29uZGVyIGFib3V0DQo+ID4gPiA+ID4g PiAgICAqIEluIHZlY3RfdHJhbnNmb3JtX2Vhcmx5X2JyZWFrIHNob3VsZCBJIGp1c3QgcmVmYWN0 b3INCj4gPiA+ID4gPiB2ZWN0b3JpemFibGVfY29tcGFyaXNvbg0KPiA+ID4gPiA+ID4gICAgICBh bmQgdXNlIGl0IHRvIGdlbmVyYXRlIHRoZSBjb25kaXRpb24gYm9keT8gIFRoYXQgd291bGQgYWxz byBnZXQNCj4gdGhlDQo+ID4gPiA+ID4gY29zdGluZy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEkn bSBsb29raW5nIGF0IHZlY3Rvcml6YWJsZV9lYXJseV9leGl0IGFuZCB2YWxpZGF0ZV9lYXJseV9l eGl0X3N0bXRzDQo+ID4gPiA+ID4gYW5kIEkgdGhpbmsgdGhhdCB0aGlzIHNob3VsZCBiZSBtb3N0 bHkgZG9uZSBhcyBwYXJ0IG9mIGRlcGVuZGVuY2UNCj4gPiA+ID4gPiBhbmFseXNpcyAoYmVjYXVz ZSB0aGF0J3Mgd2hhdCBpdCBpcykgd2hpY2ggc2hvdWxkIGFsc28gcmVtb3ZlIHRoZQ0KPiA+ID4g PiA+IHJlcXVpcmVtZW50IG9mIG9ubHkgaGFuZGxpbmcgZGVjbC1iYXNlZCBhY2Nlc3Nlcz8NCj4g PiA+ID4NCj4gPiA+ID4gVGhhdCBpcyBmYWlyIGVub3VnaCwgZG8geW91IGhhdmUgYSBzcGVjaWZp YyBzcG90IGluIG1pbmQgd2hlcmUgeW91J2QNCj4gPiA+ID4gcHJlZmVyIG1lIHRvIHNsb3QgaXQg aW50bz8NCj4gPiA+DQo+ID4gPiBJZiB5b3UgcmVjb3JkIHRoZSBzZXQgb2YgYWx0ZXJuYXRlIChu b24tSVYpIGV4aXRzIHRoZW4gSSdkIHdpcmUgaXQgaW50bw0KPiA+ID4gdmVjdF9hbmFseXplX2Rh dGFfcmVmX2RlcGVuZGVuY2VzLiAgVGhlcmUgd2UgY29tcHV0ZSBhbGwNCj4gZGVwZW5kZW5jZXMN Cj4gPiA+IGFuZCBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24geW91IGNvdWxkIHB1dCBpbiB0 aGUgd29ya2xpc3QgY29kZQ0KPiA+ID4gZGV0ZXJtaW5pbmcgdGhlIGRhdGEgcmVmcyB0byBtb3Zl IGFuZCB0aG9zZSB0byBtb3ZlIGFjcm9zcywgcmUtdXNpbmcNCj4gPiA+IHRoZSBjb21wdXRlZCBM T09QX1ZJTkZPX0REUlMgKHRoZXJlJ3Mgbm8gZWFzeSB3YXkgdG8gbG9vayB0aGVtIHVwLA0KPiA+ ID4gYnV0IHdhbGtpbmcgdGhlIExPT1BfVklORk9fRERSUyBvbmNlIGFuZCBnb2luZyB0aGUgb3Ro ZXIgd2F5IHNob3VsZA0KPiA+ID4gd29yaykuDQo+ID4NCj4gPiBIbW0gc28gSSB0aGluayB3ZSBt YXkgbm90IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGp1c3Qgb24gdGhlIEREUlMgdG8NCj4ga25v dw0KPiA+IHdoYXQgdG8gbW92ZSBvciBub3QsIHNheSBlLmcuDQo+ID4NCj4gPiBhID0geFtpXQ0K PiA+IGMgKz0gYTsNCj4gPiBiIC09IGENCj4gPiBpZiAoYyA+IGQpDQo+ID4gICBicmVhazsNCj4g Pg0KPiA+IGhlcmUgYm90aCBhIGFuZCBjIG5lZWQgdG8gc3RheSBidXQgYiBjYW4gbW92ZS4gSW4g b25lIG9mIG15IGVhcmxpZXIgdmVyc2lvbg0KPiBvZiB0aGUNCj4gPiBwYXRjaCBJIGRpZCBjb21w dXRlIGEgbGlzdCBvZiBzdGF0ZW1lbnRzIHRvIG1vdmUgZHVyaW5nIHZlY3QgYW5kIGtlcHQgdGhl bQ0KPiBpbiBhIGNhY2hlLg0KPiANCj4gWWVzLCBJJ20gYXdhcmUgdGhhdCB5b3UgbmVlZCB0byBj b21wdXRlIGFsbCBzdG10cyB0aGUgZWFybHkgZXhpdCBjb25kaXRpb24NCj4gZGVwZW5kcyBvbiBh bmQgdGhlbiBtb3ZlICJ0aGUgb3RoZXJzIiAod2hpY2ggbWlnaHQgaGF2ZSBzaWRlLWVmZmVjdHMp Lg0KPiANCj4gPiBUaGlzIGhhZCBwcm8gYW5kIGNvbnM6DQo+ID4NCj4gPiBQcm86IEl0IHNhdmVk IG1lIGZyb20gaGF2aW5nIHRvIHJlLWNvbXB1dGUgdGhpcyBsaXN0IGFnYWluLg0KPiA+IENvbnM6 ICBUaGUgbGlzdCBpcyB0aGUgc2V0IG9mIHNjYWxhciBzdGF0ZW1lbnRzLCBidXQgSSBuZWVkIHRv IG1vdmUgdGhlDQo+IGdlbmVyYXRlZCB2ZWN0b3INCj4gPiAgICAgICAgICAgICBzdGF0ZW1lbnRz LiAgV2hpY2ggbWVhbnMgZm9yIGV2ZXJ5IHN0YXRlbWVudCBpbiB0aGUgbGlzdCBJJ2QgaGF2ZSB0 bw0KPiBsb29rIHVwIGl0cw0KPiA+ICAgICAgICAgICAgIGdlbmVyYXRlZCB2ZWMgc3RhdGVtZW50 cyBhbmQgbW92ZSB0aG9zZSBpbnN0ZWFkLiAgQnV0IEkgYWxzbyBoYXZlDQo+IHRvIGNvcnJlY3Qg dGhlDQo+ID4gICAgICAgICAgICAgVlVTRVMuICBTaW5jZSBJIGhhZCB0byBkbyB0aGUgbGF0dGVy IGFueXdheSBJIGNvbWJpbmVkIHRoZSB0d28NCj4gdHJhdmVyc2Fscy4NCj4gPg0KPiA+ICAgICAg ICAgICAgIEkgY291bGQgY2FjaGUgYSB3b3JrbGlzdCBvZiB3aGljaCBWVVNFUyB0byB1cGRhdGUg ZHVyaW5nIGFuYWx5c2lzIGFzDQo+IHdlbGwgdGhvdWdoLCBpZg0KPiA+ICAgICAgICAgICAgIFRo ZXkgY2FuJ3QgY2hhbmdlIGJldHdlZW4gYW5hbHlzaXMgYW5kIGNvZGVnZW4uICBCdXQgaW4gcHJp bmNpcGxlDQo+IHRoZXJlJ3Mgbm90aGluZw0KPiA+ICAgICAgICAgICAgICBTdG9wcGluZyBhIHNj YWxhciBvciBTTFAgcGF0dGVybiBmcm9tIGJlaW5nIGFibGUgdG8gbm8/DQo+IA0KPiBCdXQgaW4g eW91ciBwYXRjaCB5b3UgYXJlIG1vdmluZyB0aGUgc2NhbGFyIHN0bXRzLCBubz8gIEJlY2F1c2Ug d2UncmUNCj4gZ29pbmcgdG8gaW5zZXJ0IHRoZSB2ZWN0b3Igc3RtdHMgYmVmb3JlIChvciBhZnRl cikgdGhlIHNjYWxhciBzdG10cy4NCj4gDQoNCkFoIG5vLCBJIG1vdmUgdGhlIHZlY3RvciBzdGF0 ZW1lbnQgZHVyaW5nIG1hdGVyaWFsaXphdGlvbi4gIFNpbmNlIHZlY3Rvcml6YXRpb24gb2YgdGhl DQpzY2FsYXIgc3RhdGVtZW50cyBoYXBwZW4gaW4gYSB0b3AgZG93biBmYXNoaW9uLCBJIGtub3cg dGhhdCB3aGVuIEkgdmVjdG9yaXplIGFuIGVhcmx5DQpicmVhayBhbnkgc3RhdGVtZW50IGl0IGNh biBwb3NzaWJseSBkZXBlbmQgb24gaGF2ZSBhbHJlYWR5IGJlZW4gdmVjdG9yaXplZCBzbyBJIHdh bGsNCnRoZSB2ZWN0b3IgdXNlLWRlZiBjaGFpbiBvZiB0aGUgYnJlYWsgYXJndW1lbnRzIGFuZCBs ZWF2ZSB0aGUgc2NhbGFyIGFsb25lLg0KDQpJIGRvIHRoaXMgYmVjYXVzZSBJIHRob3VnaHQgdGhh dCBkb2luZyBpdCBsYXRlIGFsbCBhbmFseXNpcyB3YXMgYWxyZWFkeSBkb25lLiAgQnV0IGFsc28g aW4NCmNhc2UgdmVjdG9yaXphdGlvbiBmYWlscyBJIGRpZCBub3Qgd2FudCB0byBoYXZlIGhhZCBt b2RpZmllZCB0aGUgc2NhbGFyIHN0bXRzIGZvciB0aGUgbmV4dA0Kcm91bmQgb2YgaXRlcmF0aW9u IG9yIHRoZSBzd2l0Y2ggYmV0d2VlbiBTTFAgYW5kIG5vbi1TTFAgbG9vcCB2ZWN0Lg0KDQpTbyBl ZmZlY3RpdmVseSBJIGp1c3QgY2hhbmdlIHRoZSBtYXRlcmlhbGl6YXRpb24gcG9pbnQgb2YgdGhl IGluc3RydWN0aW9ucy4gIFRoZXJlIGlzIHNvbWUNCnByZWNlZGVuY2UgaGVyZSBhcyBlLmcuIHZl Y3Rvcml6aW5nIGEgbGl2ZSByZWR1Y3Rpb24gY2FuIHZlY3Rvcml6ZSB0aGUgcmVkdWN0aW9uIHN0 YXRlbWVudHMNCmluIGEgZGlmZmVyZW50IEJCIHRoYW4gdGhlIHNjYWxhciAoZm9yIGluc3RhbmNl IGF0IHRoZSBleGl0IHBvaW50KS4NCg0KSSBjb3VsZCBtb3ZlIHRoZSBzY2FsYXIgY29kZSB0aG91 Z2gsIGJ1dCB0aGF0IHRoYXQgd291bGQgaGF2ZSBtb3JlIHByb2JsZW1zLg0KDQo+ID4gPg0KPiA+ ID4gTm90ZSB0aGF0IGF0IGxlYXN0IFNMUCBpbiBzb21lIGNhc2VzIHVzZXMgc2NhbGFyIHN0bXQg cG9zaXRpb25zDQo+ID4gPiBkdXJpbmcgYW5hbHlzaXMgdG8gdmFsaWRhdGUgdGhpbmdzLCBzbyBp ZiB5b3UgbW92ZSBzdG10cyBvbmx5DQo+ID4gPiBhIHRyYW5zZm9ybSBzdGFnZSB0aGVyZSBtaWdo dCBiZSB1bmZvcnNlZW4gcHJvYmxlbXMgLi4uDQo+ID4gPg0KPiA+DQo+ID4gSG1tIEkgZ3Vlc3Mg dGhhdCdsbCBiZSB0aGUgc2FtZSBpZiBmb3IgU0xQIHRoZSBub2RlcyB0aGVtc2VsdmVzIGFyZQ0K PiA+IHJlLWFycmFuZ2VkPyAgSSdsbCBkaWcgaW50byB3aGVuIHdlIHVzZSB0aGUgc2NhbGFyICBz dG10cyBmb3IgU0xQLg0KPiA+DQo+ID4gSSBjb3VsZCBpbiBwcmluY2lwbGUgYWRkIGFuIGVudHJ5 IHRvIHRoZSBTTFAgbm9kZSB0byB0ZWxsIGl0IHdoYXQgaXRzDQo+ID4gc2NhbGFyIHByZWQgd2Fz LiAgQnV0IHdlIGN1cnJlbnRseSBkb24ndCBzdXBwb3J0IFBVUkUgc28gaXQncyBwcm9iYWJseQ0K PiA+IG5vdCBibG9ja2luZywgYnV0IHdpbGwgbWFrZSBzdXJlLg0KPiANCj4gU28gd2UncmUgdXNp bmcgdGhlIHN0bXQgVUlEcyB0byBwZXJmb3JtIGRvbWluYXRvciBjaGVja3MNCj4gaW4gdmVjdF9z dG10X2RvbWluYXRlc19zdG10X3AgKFVJRHMgYXJlIGFsc28gdXNlZCB0byBtYXAgc3RtdHMgdG8N Cj4gdGhlaXIgc3RtdF92ZWNfaW5mbyksIGlmIHlvdSBhcmUgcmUtYXJyYW5naW5nIHRoaW5ncyB0 aGVuIHN1Y2gNCj4gZG9taW5hdG9yIHF1ZXJpZXMgbWlnaHQgZ28gd3JvbmcuICBJbiBwYXJ0aWN1 bGFyIFNMUCBsaXZlIGxhbmUgYW5hbHlzaXMNCj4gYW5kIFNMUCBjb2RlIGdlbmVyYXRpb24gdXNl cyB0aGF0IHRvIGZpbmQgaW5zZXJ0aW9uIHBsYWNlcy4NCj4gDQo+IEFuIGFsdGVybmF0ZSB3YXkg dG8gcGVyZm9ybSB2ZWN0b3JpemF0aW9uIG9mIHRoZSBlYXJseSBleGl0IHdvdWxkIGJlDQo+IHRv IGNvZGUtZ2VuZXJhdGUgdGhlbSAoYW5kIHRoZWlyIGRlcGVuZGVuY2VzKSBhdCB0aGUgc3RhcnQg b2YgdGhlDQo+IGxvb3AgYnkgZHVwbGljYXRpbmcgdGhlbS4gIFRoZSBkdXBsaWNhdGlvbiBjb3Vs ZCBiZSBkb25lIGJ5IG1lYW5zDQo+IG9mIGEgcGF0dGVybiBzZXF1ZW5jZSAtIHdlJ2QganVzdCBu ZWVkIGEgc3RtdCB0byBrZXkgdGhhdCBvbiB0aGF0DQo+IHdlIHBsYWNlIGF0IHRoZSBzdGFydCBv ZiB0aGUgbG9vcCAoSSBkb24ndCBoYXZlIGEgbmljZSBpZGVhIHJpZ2h0IG5vdywNCj4gYSAic2Nh bGFyIiBHSU1QTEVfTk9QIG1pZ2h0IGRvKD8pKS4NCj4gDQo+IEZvciBhbGwgdmVjdG9yaXphdGlv bnMgd2l0aCBzaW1pbGFyIGlzc3VlcyB3ZSd2ZSByZXNvcnRlZCB0bw0KPiBpZi1jb252ZXJzaW9u IGRvaW5nIHRoZSAiZW5hYmxpbmciIHRyYW5zZm9ybSBhbmQgdXNpbmcgaWYtY29udmVyc2lvbg0K PiB2ZXJzaW9uaW5nIHRvIGVuc3VyZSB0aGF0IG9ubHkgcHJldmFpbHMgb24gdGhlIHZlY3RvciBs b29wLiAgVGhlDQo+ICJlbmFibGluZyIgdHJhbnNmb3JtIHdvdWxkIGJlIHRvIHBlcmZvcm0gdGhl IGNvZGUgbW90aW9uIHNvIHRoYXQNCj4gdGhlcmUncyBubyBzaWRlLWVmZmVjdHMgYmVmb3JlIHRo ZSBlYXJseSBleGl0KHMpLiAgSSBrbm93IHRoYXQncw0KPiBraW5kIG9mIGEgaGFjaywgYnV0IGl0 IGhhcyBwcm92ZW4gdG8gYmUgZWFzaWVzdCB0aGF0IHdheS4NCj4gDQo+ID4gPiA+ID4NCj4gPiA+ ID4gPiBBcyBmb3IgdmVjdF90cmFuc2Zvcm1fZWFybHlfYnJlYWssIHN1cmUuICBJIGZlYXIgdGhh dCBzaW5jZSB5b3UNCj4gPiA+ID4gPiB0cmFuc2Zvcm0gaWYgKF8xID4gXzIpIHRvIHNvbWUgXzMg PSBfMSA+IF8yOyB1c2UoXzMpIHRoYXQgeW91IG5lZWQNCj4gPiA+ID4gPiB0byBleHBvc2UgdGhp cyB0byB0aGUgYm9vbCBwYXR0ZXJuIGhhbmRsaW5nIG1hY2hpbmVyeSBzb21laG93Lg0KPiA+ID4g PiA+IEkgY2FuIHNlZSB0aGF0IG1vdmluZyBzdG10cyBhcm91bmQgYW5kIGRvaW5nIGl0IHRoZSB3 YXkgeW91IGRvDQo+ID4gPiA+ID4gY29kZS1nZW5lcmF0aW9uIHdpc2UgaXMgZWFzaWVzdC4NCj4g PiA+ID4gPg0KPiA+ID4gPiA+IEhvdyBkb2VzIHRoaXMgd29yayB3aXRoIFNMUCBidHc/ICBZb3Ug ZG9uJ3QgdG91Y2ggdHJlZS12ZWN0LXNscC5jYyBhdA0KPiBhbGwNCj4gPiA+ID4gPiBidXQgbm93 IHRoYXQgd2UgaGF2ZSBtdWx0aXBsZSBCQnMgdGhlcmUncyB0aGUgaXNzdWUgb2Ygc3BsaXR0aW5n DQo+ID4gPiA+ID4gY2hpbGRyZW4gYWNyb3NzIGRpZmZlcmVudCBCQnMgLSB0aGVyZSdzIG9ubHkN Cj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAgICAgICAgICBpZiAoKHBoaV9wIHx8IGdpbXBsZV9jb3Vs ZF90cmFwX3AgKHN0bXRfaW5mby0+c3RtdCkpDQo+ID4gPiA+ID4gICAgICAgICAgICAgICAmJiAo Z2ltcGxlX2JiIChmaXJzdF9zdG10X2luZm8tPnN0bXQpDQo+ID4gPiA+ID4gICAgICAgICAgICAg ICAgICAgIT0gZ2ltcGxlX2JiIChzdG10X2luZm8tPnN0bXQpKSkNCj4gPiA+ID4gPiAgICAgICAg ICAgICB7DQo+ID4gPiA+ID4gICAgICAgICAgICAgICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpDQo+ ID4gPiA+ID4gICAgICAgICAgICAgICAgIGR1bXBfcHJpbnRmX2xvYyAoTVNHX01JU1NFRF9PUFRJ TUlaQVRJT04sDQo+IHZlY3RfbG9jYXRpb24sDQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIkJ1aWxkIFNMUCBmYWlsZWQ6IGRpZmZlcmVudCBCQiBmb3IgUEhJICIN Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3IgcG9zc2libHkg dHJhcHBpbmcgb3BlcmF0aW9uIGluICVHIiwNCj4gPiA+ID4gPiBzdG10KTsNCj4gPiA+ID4gPiAg ICAgICAgICAgICAgIC8qIE1pc21hdGNoLiAgKi8NCj4gPiA+ID4gPiAgICAgICAgICAgICAgIGNv bnRpbnVlOw0KPiA+ID4gPiA+ICAgICAgICAgICAgIH0NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IHJp Z2h0IG5vdyBhbmQgdGhlIGNvZGUgbW90aW9uIHlvdSBhcHBseSBhbHNvIG1pZ2h0IGJyZWFrIHRo ZQ0KPiA+ID4gYXNzdW1wdGlvbnMNCj4gPiA+ID4gPiBvZiB0aGUgZGVwZW5kZW5jZSBhbmFseXNp cyBjb2RlLiAgSSBzdXBwb3NlIHRoYXQgU0xQaW5nIHRoZSBlYXJseSBleGl0DQo+ID4gPiA+ID4g aXNuJ3Qgc3VwcG9ydGVkLCBha2ENCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICBmb3IgKDs7KQ0KPiA+ ID4gPiA+ICAgIHsNCj4gPiA+ID4gPiAgICAgICBpZiAoYVsyKmldID4geCkgYnJlYWs7DQo+ID4g PiA+ID4gICAgICAgaWYgKGFbMippICsgMSA+IHgpIGJyZWFrOw0KPiA+ID4gPiA+IC4uLg0KPiA+ ID4gPiA+ICAgIH0NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IG9yDQo+ID4gPiA+ID4gICAgXzEgPSBh WzIqaV0gPiB4IHwgYVsyKmkgKyAxID4geDsNCj4gPiA+ID4gPiAgICBpZiAoXzEpIGJyZWFrOw0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gPw0KPiA+ID4gPg0KPiA+ID4gPiBJbmRlZWQsIFNMUCB0cmFw cyB3aXRoIHRoZSBmYWlsdXJlIG1lc3NhZ2UgeW91IGhpZ2hsaWdodGVkIGFib3ZlLg0KPiA+ID4g PiBBdCB0aGUgbW9tZW50IEkgYWRkZWQgYSByZXN0cmljdGlvbiB0byBhIHNpbmdsZSBleGl0LCB0 aGlzIHN0b3BzIGl0IGZyb20NCj4gPiA+ID4gZ2V0dGluZyB0aGF0IGZhci4gIChUaGlzIGxpbWl0 YXRpb24gaXMgYmVjYXVzZSB0aGUgY29kZSBtb3Rpb24gb3Zlcg0KPiBtdWx0aXBsZQ0KPiA+ID4g PiBleGl0cyBiZWNvbWVzIGludGVyZXN0aW5nLCBpdCdzIG5vdCBzcGVjaWZpY2FsbHkgZm9yIFNM UCwgYW5kIGlmIFNMUCBkaWQNCj4gd29yayBJDQo+ID4gPiA+IHdvdWxkIG1vdmUgdGhlIGNoZWNr IGR1cmluZyBTTFAgYnVpbGQsIG9yIGFmdGVyKS4NCj4gPiA+ID4NCj4gPiA+ID4gQXNpZGUgZnJv bSB0aGF0LCBkaWZmZXJlbnQgcGFydHMgb2Ygc2xwIGJ1aWxkIGZhaWwgd2l0aCBlLmcuDQo+ID4g PiA+DQo+ID4gPiA+IEJ1aWxkIFNMUCBmYWlsZWQ6IGRpZmZlcmVudCBvcGVyYXRpb24gaW4gc3Rt dCBfMTEgPSBfNCAqIHhfMTcoRCk7DQo+ID4gPiA+DQo+ID4gPiA+IChUaGlzIGlzIHRlc3RjYXNl IDYgaW4gbXkgbGlzdCBvZiB0ZXN0KS4NCj4gPiA+ID4NCj4gPiA+ID4gSHlicmlkIGRvZXMgd29y ayB0aG91Z2gsIGlmIHRoZSBwYXJ0IHdpdGggdGhlIGNvbmRpdGlvbmFsIGlzIGluIHRoZSBub24t DQo+IFNMUA0KPiA+ID4gcGFydC4NCj4gPiA+DQo+ID4gPiBPSywgSSBzZWUuDQo+ID4gPg0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiAgICAqIFRoZSB0ZXN0Y2FzZSB2ZWN0LWVhcmx5LWJyZWFrXzIu YyBzaG93cyBvbmUgZm9ybSB0aGF0IGN1cnJlbnRseQ0KPiA+ID4gPiA+IGRvZXNuJ3Qgd29yaw0K PiA+ID4gPiA+ID4gICAgICBhbmQgY3Jhc2hlcy4gIFRoZSByZWFzb24gaXMgdGhhdCB0aGVyZSdz IGEgbWlzbWF0Y2ggYmV0d2VlbiB0aGUNCj4gPiA+IHR5cGVzDQo+ID4gPiA+ID4gcmVxdWlyZWQN Cj4gPiA+ID4gPiA+ICAgICAgdG8gdmVjdG9yaXplIHRoaXMuICBUaGUgdmVjdG9yIGxvYWRzIGNh dXNlIG11bHRpcGxlIHN0YXRlbWVudHMgdG8NCj4gYmUNCj4gPiA+ID4gPiBnZW5lcmF0ZWQNCj4g PiA+ID4gPiA+ICAgICAgYW5kIHRodXMgcmVxdWlyZSBtdWx0aXBsZSBjb21wYXJpc29ucy4gIElu IHRoaXMgY2FzZSA4IG9mIHRoZW0uDQo+ID4gPiBIb3dldmVyDQo+ID4gPiA+ID4gPiAgICAgIHdo ZW4gZGV0ZXJtaW5pbmcgbmNvcGllcyB0aGUgZWFybHkgZXhpdCB1c2VzIGEgYm9vbGVhbiBtb2Rl DQo+IGFuZCBzbw0KPiA+ID4gPiA+IG5jb3BpZXMNCj4gPiA+ID4gPiA+ICAgICAgaXMgYWx3YXlz IDEuICBJZiBJIGZvcmNlIGl0IGluc3RlYWQgdG8gZGV0ZXJtaW5lIG5jb3BpZXMgYmFzZWQgb24g aXQncw0KPiA+ID4gPiA+ID4gICAgICBvcGVyYW5kcyBpbnN0ZWFkIG9mIHRoZSBmaW5hbCB0eXBl IHRoZW4gd2UgZ2V0IHRoZSBjb25kaXRvbmFsDQo+ID4gPiB2ZWN0b3JpemVkDQo+ID4gPiA+ID4g PiAgICAgIGJ1dCB0aGUgaXQgaGFzIGEgbWlzbWF0Y2ggY29tcGFyaW5nIGludGVnZXIgdmVjdG9y cyB3aXRoDQo+IGJvb2xlYW4uDQo+ID4gPiA+ID4gPiAgICAgIEl0IGZlZWxzIGxpa2UgSSBuZWVk IHNvbWUga2luZCBvZiBib29sZWFuIHJlZHVjdGlvbnMgaGVyZS4uICBTaG91bGQNCj4gSQ0KPiA+ ID4ganVzdA0KPiA+ID4gPiA+ID4gICAgICByZWplY3QgdGhpcyBmb3JtIGZvciBub3c/DQo+ID4g PiA+ID4NCj4gPiA+ID4gPiBUaGF0J3MgcHJvYmFibHkgdGhlIGJvb2wgcGF0dGVybiBoYW5kbGlu ZyBJIGhpbnRlZCBhdCBhYm92ZS4NCj4gPiA+ID4gPiBCb29scy9jb25kaXRpb25zIGFyZSBhd2t3 YXJkLCBtYXliZSB5b3Ugc2hvdWxkIGhhbmRsZSB0aGUNCj4gPiA+ID4gPiBHSU1QTEVfQ09ORHMg YXMgcGF0dGVybnMgY29tcHV0aW5nIHRoZSBhY3R1YWwgY29uZGl0aW9uIGFzIG1hc2sNCj4gPiA+ ID4gPiBmZWQgaW50byBhIGR1bW15IC5JRk5fQ09OU1VNRV9NQVNLIHN0bXQ/DQo+ID4gPiA+DQo+ ID4gPiA+IEluZGVlZCwgdGhvdWdoIG9uZSBhZGRpdGlvbmFsIGRpZmZpY3VsdHkgaGVyZSBpcyB0 aGF0IGluIHRoZSBleGFtcGxlIGZvcg0KPiA+ID4gaW5zdGFuY2UNCj4gPiA+ID4gdGhlIG51bWJl ciBvZiBjb3BpZXMgaXMgbmVlZGVkLCBlLmcuIGlmIHlvdSBoYXZlIHRvIGRvIHdpZGVuaW5nIGJl Zm9yZQ0KPiB0aGUNCj4gPiA+IGNvbXBhcmUuDQo+ID4gPiA+IFRoaXMgbWVhbnMgdGhhdCB5b3Ug aGF2ZSBfaGksIF9sbyBzcGxpdHMuIFNvIHVubGVzcyB5b3Ugc2hvcnQgY2lyY3VpdCB0aGlzDQo+ IGNhbg0KPiA+ID4gbGVhZCB0bw0KPiA+ID4gPiBxdWl0ZSBhIG51bWJlciBvZiBvcGVyYXRpb25z IGJlZm9yZSB5b3UgZXhpdC4NCj4gPiA+ID4NCj4gPiA+ID4gSSBjb3VsZCBhbHNvIGdlbmVyYXRl IGFuIE9SIHJlZHVjdGlvbiBpbiB0aGlzIGNhc2UgaW5zdGVhZCBvZiBuZWVkaW5nIGENCj4gbmV3 DQo+ID4gPiBJRk4sIGJ1dA0KPiA+ID4gPiBJJ2xsIGdvIHdpdGggd2hhdGV2ZXIgeW91IHByZWZl ci9yZWNvbW1lbmQuDQo+ID4gPg0KPiA+ID4gSG1tLCBJIGd1ZXNzIGRvaW5nIGFuIE9SIHJlZHVj dGlvbiBpcyBzaW1wbGVzdCAoYnV0IHRoZW4geW91IGhhdmUgdG8NCj4gPiA+IGNoZWNrIGZvciB0 aGUgTkUvRVEgY29tcGFyZSBvcGVyYXRpb24gc3VwcG9ydCwgbm90IGp1c3QgY2JyYW5jaCkuDQo+ ID4NCj4gPiBJIHNob3VsZCBwcm9iYWJseSBkbyB0aGlzIGFueXdheSwgVGhlIEdpbXBsZSBleHBh bnNpb24gb25seSBzdXBwb3J0cw0KPiA+IE5FL0VRIGZvciBjYnJhbmNoIChhbmQgZXhwbGljaXRs eSBjaGVja3MpLiAgU28gSSdsbCBhbWVuZCBteSBjaGVjayBoZXJlLg0KPiA+DQo+ID4gPiBCdXQN Cj4gPiA+IGRvZXMgdGhhdCBzb2x2ZSB0aGUgYWN0dWFsIHByb2JsZW0/ICBJIHRoaW5rIHRoZSBw cm9ibGVtIGlzIHRoYXQgdGhlDQo+ID4gPiAoc2NhbGFyKSBicmFuY2ggaXNuJ3Qgc2VlbiBhcyBj b25zdW1pbmcgYSAibWFzayIgdmFsdWUgb2YgdGhlIGNvbXBhcmlzb24NCj4gPiA+IGJ5IHRoZSBw YXR0ZXJuIGNvZGUsIHNvIGRvbid0IHdlIG5lZWQgdG8gaGFuZGxlIHRoZSBhbHRlcm5hdGUgZXhp dA0KPiA+ID4gR0lNUExFX0NPTkRzIGluIHNvbWUgd2F5IHRoZXJlPw0KPiA+ID4NCj4gPg0KPiA+ IFJpZ2h0LCBzbyB3aGF0IEkgbWVhbnQgd2FzIHRoYXQgZHVyaW5nIGNvZGVnZW4gSSBjYW4gZGV0 ZXJtaW5lIHRoaXMgY2FzZQ0KPiA+IGV4aXN0IGJ5IGNvbXBhcmluZyB0aGUgTlVOSVRTIG9mIHRo ZSBzdGF0ZW1lbnQgaW4gdGhlIGNvbXBhcmUgd2l0aCB0aGF0DQo+ID4gb2YgdGhlIEJvb2xlYW4g cmVzdWx0LiAgT24gbWlzbWF0Y2ggdGhlIHJhdGlvIGJldHdlZW4gdGhlc2UgdHdvIHdvdWxkDQo+ ID4gdGVsbCBtZSBob3cgbWFueSB2ZWN0b3JzIEknZCBoYXZlIHRvIHJlZHVjZSwgYW5kIEkgc2hv dWxkIGJlIGFibGUgdG8gZ2V0IHRvDQo+ID4gdGhlc2Ugc3RhdGVtZW50cyBieSBsb29raW5nIGF0 IHRoZSBzdGF0ZW1lbnRfdmluZm8gb2YgdGhlIG5vbiAwIG9wZXJhbmQNCj4gb2YgdGhlIGNvbXBh cmUuDQo+ID4NCj4gPiBUaGUgdHJhbnNmb3JtX2Vhcmx5X2JyZWFrIGl0c2VsZiBpcyB0aGUgdGhp bmcgdGhhdCBuZWVkcyB0byBoYW5kbGUgYm90aCB0aGUNCj4gPiB2ZWN0b3JpemF0aW9uIG9mIHRo ZSBHSU1QTEVfQ09ORCBhbmQgdGhlIHVwZGF0aW5nIG9mIHRoZSB2YWx1ZSBpbiB0aGUNCj4gdmFs dWUNCj4gPiBpbiB0aGUgYGlmYC4gIFNvIGFsbCBJJ2QgaGF2ZSB0byBkbyBpcyBwb2ludCBpdCB0 byB0aGUgcmVkdWN0aW9uIHJhdGhlciB0aGFuIHRoZQ0KPiBsYXN0DQo+ID4gdmVjdG9yIHN0YXRl bWVudCBwcm9kdWNlZCBhcyB3ZSBkbyBub3cuDQo+IA0KPiBJIG1lYW4gZm9yIElTQXMgbGlrZSBB Vlg1MTIgYSBib29sZWFuICJ2YWx1ZSIgaGFzIFYxNlFJbW9kZSBidXQgYQ0KPiBib29sZWFuICJt YXNrIiBoYXMgSEltb2RlLiAgVGhlIHBhdHRlcm5zIGV4aXN0IHRvIG1ha2Ugc3VyZSB0aGUNCj4g YXBwcm9wcmlhdGUgdmFyaWFudCBpcyBnZW5lcmF0ZWQgZGVwZW5kaW5nIG9uIGNvbnRleHQuICBE b24ndCB5b3UNCj4gbmVlZCB0byBtYWtlIHN1cmUgeW91IGdldCB0aGUgImNvcnJlY3QiIHZhcmlh bnQgZm9yIGNvZGUgZ2VuZXJhdGluZw0KPiB0aGUgZWFybHkgZXhpdD8gIFRoYXQgaXMsIGl0IGNh biBoYXBwZW4geW91J2xsIGFycml2ZSB3aXRoDQo+IEhJbW9kZSA8IFYxNlFJbW9kZSBmb3IgYSBj aGFyIDwgY2hhciBjb21wYXJpc29uLg0KDQpBaCB5ZXMsIE5vIEkgc2VlIHdoYXQgeW91IG1lYW4u ICBUaGF0J3Mgbm90IHRoZSBwcm9ibGVtIGhlcmUgc2luY2UgSSBkb24ndA0KZ2VuZXJhdGUgYSBz Y2FsYXIgbWFzay4gIFRoZSB2ZWN0b3JpemVyIGNoZWNrcyBmb3IgY2JyYW5jaCB3aXRoIFYxNlFJ bW9kZSBpbg0KdGhpcyBjYXNlIGlmIFYxNlFJbW9kZSBpcyB0aGUgdHJ1dGgtdHlwZSByZXN1bHQg b2YgdGhlIHZlY3RvciBjb21wYXJlLg0KDQpTbyB3ZSBkbyB0aGF0IGZvciBpbnN0YW5jZSBmb3Ig TkVPTiBhbmQgdGhlbiB0aGUgY2JyYW5jaCBleHBhbnNpb24NCmdlbmVyYXRlcyB0aGUgYXBwcm9w cmlhdGUgcmVzdWx0cyB0byBjb21wYXJlIGFnYWluc3QgMC4gIEl0J3Mgd29ydGggbWVudGlvbmlu Zw0KdGhhdCB0aGUgY29tcGFyaXNvbiBnZW5lcmF0ZWQgaXMgbm90IGFnYWluc3Qgc2NhbGFyIDAs IGJ1dCB2ZWN0b3IgYXJyYXkgb2YgMC4NCg0KaS5lLg0KDQogIG1hc2tfXzQyLjE2XzQ0ID0gdmVj dF9jc3RfXzM0IDwgdmVjdF9fMy4xNV80MTsNCiAgaWYgKG1hc2tfXzQyLjE2XzQ0ICE9IHsgMCwg MCwgMCwgMCB9KQ0KICAgIGdvdG8gPGJiIDg+OyBbNS41MCVdDQogIGVsc2UNCiAgICBnb3RvIDxi YiA0PjsgWzk0LjUwJV0NCg0Kc28gZm9yIGluc3RhbmNlIGluIHRoZSBjYXNlIG9mIEFWWCBJJ2Qg ZXhwZWN0IHRoZSBjYnJhbmNoIGltcGxlbWVudGF0aW9uDQp0byBzaW1wbHkgYmUgZS5nOiB2cHRl c3QgeG1tTiwgeG1tTiBhbmQgYSBicmFuY2ggb24gdGhlIFpGIGZsYWdzLg0KDQpJIHRoaW5rIHlv dSBvbmx5IG5lZWQgQVZYIG5vdCBBVlg1MTIsIHNvIHlvdSBkb24ndCBuZWVkIHRvDQpyZWR1Y2Ug d2l0aCB0aGUgVlBURVNUTSogdmFyaWFudHMuICBXZSBvbmx5IGNhcmUgYWJvdXQgdGhlIGZsYWdz Lg0KDQo+IA0KPiBCdXQgbWF5YmUgSSBtaXN1bmRlcnN0b29kIHRoZSBJQ0UgKGhhdmVuJ3QgZHVn IGludG8gaXQgaW4gZGV0YWlsIHlldCkuDQoNClNvIHRoZSBJQ0UgaXMgbW9yZSB3aGVuIHRoZSBu byBjb3BpZXMgcmVxdWlyZWQgZm9yIHRoZSBjb21wYXJlIGRvZXNuJ3QgbWF0Y2gNCnRoYXQgZm9y IHRoZSBicmFuY2guDQoNClNvIGZvciBpbnN0YW5jZQ0KDQpjb21wbGV4IGRvdWJsZSB2ZWN0X2Fb Tl07DQppZiAodmVjdF9hW2ldID09IHgpDQoNCmJlY2F1c2UgY29tcGxleCBpcyBhIGNvbXBvdW5k IHR5cGUgd2hlbiB3ZSB2ZWN0b3JpemUgd2UgbmVlZCB0byB1bnBhY2suDQpTbyB3ZSBlbmQgdXAg Z2VuZXJhdGluZyBmb3IgdGhlIEdJTVBMRV9DT05EOg0KDQogIG1hc2tfXzI3Ljc3XzIyMyA9IHZl Y3RfY3N0X18yMjIgPT0gdmVjdF9fMjUuNTRfMTk5Ow0KICBtYXNrX18yNy43N18yMjQgPSB2ZWN0 X2NzdF9fMjIyID09IHZlY3RfXzI1LjU3XzIwMjsNCiAgbWFza19fMjcuNzdfMjI1ID0gdmVjdF9j c3RfXzIyMiA9PSB2ZWN0X18yNS42MF8yMDU7DQogIG1hc2tfXzI3Ljc3XzIyNiA9IHZlY3RfY3N0 X18yMjIgPT0gdmVjdF9fMjUuNjNfMjA4Ow0KICBtYXNrX18yNy43N18yMjcgPSB2ZWN0X2NzdF9f MjIyID09IHZlY3RfXzI1LjY2XzIxMTsNCiAgbWFza19fMjcuNzdfMjI4ID0gdmVjdF9jc3RfXzIy MiA9PSB2ZWN0X18yNS42OV8yMTQ7DQogIG1hc2tfXzI3Ljc3XzIyOSA9IHZlY3RfY3N0X18yMjIg PT0gdmVjdF9fMjUuNzJfMjE3Ow0KICBtYXNrX18yNy43N18yMzAgPSB2ZWN0X2NzdF9fMjIyID09 IHZlY3RfXzI1Ljc1XzIyMDsNCiAgXzI3ID0geCRyZWFsXzEyID09IF8yNTsNCiAgbWFza19fMjgu NzhfMjMyID0gdmVjdF9jc3RfXzIzMSA9PSB2ZWN0X18yNS41NV8yMDA7DQogIG1hc2tfXzI4Ljc4 XzIzMyA9IHZlY3RfY3N0X18yMzEgPT0gdmVjdF9fMjUuNThfMjAzOw0KICBtYXNrX18yOC43OF8y MzQgPSB2ZWN0X2NzdF9fMjMxID09IHZlY3RfXzI1LjYxXzIwNjsNCiAgbWFza19fMjguNzhfMjM1 ID0gdmVjdF9jc3RfXzIzMSA9PSB2ZWN0X18yNS42NF8yMDk7DQogIG1hc2tfXzI4Ljc4XzIzNiA9 IHZlY3RfY3N0X18yMzEgPT0gdmVjdF9fMjUuNjdfMjEyOw0KICBtYXNrX18yOC43OF8yMzcgPSB2 ZWN0X2NzdF9fMjMxID09IHZlY3RfXzI1LjcwXzIxNTsNCiAgbWFza19fMjguNzhfMjM4ID0gdmVj dF9jc3RfXzIzMSA9PSB2ZWN0X18yNS43M18yMTg7DQogIG1hc2tfXzI4Ljc4XzIzOSA9IHZlY3Rf Y3N0X18yMzEgPT0gdmVjdF9fMjUuNzZfMjIxOw0KICBfMjggPSB4JGltYWdfMTAgPT0gXzI2Ow0K ICBtYXNrX18yOS43OV8yNDAgPSBtYXNrX18yNy43N18yMjMgJiBtYXNrX18yOC43OF8yMzI7DQog IG1hc2tfXzI5Ljc5XzI0MSA9IG1hc2tfXzI3Ljc3XzIyNCAmIG1hc2tfXzI4Ljc4XzIzMzsNCiAg bWFza19fMjkuNzlfMjQyID0gbWFza19fMjcuNzdfMjI1ICYgbWFza19fMjguNzhfMjM0Ow0KICBt YXNrX18yOS43OV8yNDMgPSBtYXNrX18yNy43N18yMjYgJiBtYXNrX18yOC43OF8yMzU7DQogIG1h c2tfXzI5Ljc5XzI0NCA9IG1hc2tfXzI3Ljc3XzIyNyAmIG1hc2tfXzI4Ljc4XzIzNjsNCiAgbWFz a19fMjkuNzlfMjQ1ID0gbWFza19fMjcuNzdfMjI4ICYgbWFza19fMjguNzhfMjM3Ow0KICBtYXNr X18yOS43OV8yNDYgPSBtYXNrX18yNy43N18yMjkgJiBtYXNrX18yOC43OF8yMzg7DQogIG1hc2tf XzI5Ljc5XzI0NyA9IG1hc2tfXzI3Ljc3XzIzMCAmIG1hc2tfXzI4Ljc4XzIzOTsNCiAgXzI5ID0g XzI3ICYgXzI4Ow0KDQpXaGljaCBub3cgbGVhZHMgdG8gd2hhdCB0byBkbyBmb3IgdGhlIGJyYW5j aCBjb21wYXJpc29uLA0KU28gaG93IHRvIHZlY3Rvcml6ZToNCg0KICBpZiAoXzI5ICE9IDApDQoN CldoaWNoIEkgc3VwcG9zZSBJIGhhdmUgdG8gT1IgYWxsIHRoZSBtYXNrX18yOS43OV8yNCogbWFz a3MNClRvZ2V0aGVyIHNvIHRoYXQgSSBjYW4gZ2VuZXJhdGUgbWFza19fMjkuODBfMjQwICE9IHsw LCAwLCAwLCAwIH0gZm9yIHRoZQ0KRmluYWwgY29tcGFyaXNvbi4NCg0KSSBqdXN0IHdhbnRlZCB0 byBjaGVjayBpZiB0aGF0IHdhcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uDQoNClRoYW5rcywNClRh bWFyDQoNCj4gUmljaGFyZC4NCj4gDQo+ID4gQ2hlZXJzLA0KPiA+IFRhbWFyDQo+ID4NCj4gPiA+ ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gQm9vdHN0cmFwcGVkIFJlZ3Rlc3RlZCBvbiBhYXJj aDY0LW5vbmUtbGludXgtZ251LCB4ODZfNjQtcGMtDQo+IGxpbnV4LQ0KPiA+ID4gZ251DQo+ID4g PiA+ID4gYW5kIGlzc3Vlcw0KPiA+ID4gPiA+ID4gbWVudGlvbmVkIGFib3ZlLg0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+IE9LIGVub3VnaCBkZXNpZ24gYW5kIGltcGxlbWVudGF0aW9uIGZvciBH Q0MgMTM/DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBOb3Qgc3VyZSwgSSBkaWRuJ3QgeWV0IGxvb2sg dGhvcm91Z2hseSBhdCB0aGUgcGF0Y2ggaXRzZWxmLg0KPiA+ID4gPg0KPiA+ID4gPiBJJ2xsIGxp Z2h0IHNvbWUgY2FuZGxlcyA/DQo+ID4gPg0KPiA+ID4gOykNCj4gPiA+DQo+ID4gPiBSaWNoYXJk Lg0KPiA+ID4NCj4gPiA+ID4gVGhhbmtzIGZvciB0YWtpbmcgYSBsb29rLA0KPiA+ID4gPiBUYW1h cg0KPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gUmljaGFyZC4NCj4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gVGhhbmtzLA0KPiA+ID4gPiA+ID4gVGFtYXINCj4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiBnY2MvQ2hhbmdlTG9nOg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IAkqIGNmZ2xvb3Au Y2MgKG5vcm1hbF9leGl0KTogTmV3Lg0KPiA+ID4gPiA+ID4gCSogY2ZnbG9vcC5oIChub3JtYWxf ZXhpdCk6IE5ldy4NCj4gPiA+ID4gPiA+IAkqIGRvYy9sb29wLnRleGkgKG5vcm1hbF9leGl0KTog RG9jdW1lbnQuDQo+ID4gPiA+ID4gPiAJKiBkb2Mvc291cmNlYnVpbGQudGV4aSAodmVjdF9lYXJs eV9icmVhayk6IERvY3VtZW50Lg0KPiA+ID4gPiA+ID4gCSogdHJlZS1zY2FsYXItZXZvbHV0aW9u LmNjIChnZXRfbG9vcF9leGl0X2NvbmRpdGlvbik6DQo+IFJlZmFjdG9yLg0KPiA+ID4gPiA+ID4g CShnZXRfZWRnZV9jb25kaXRpb24pOiBOZXcuDQo+ID4gPiA+ID4gPiAJKiB0cmVlLXNjYWxhci1l dm9sdXRpb24uaCAoZ2V0X2VkZ2VfY29uZGl0aW9uKTogbmV3Lg0KPiA+ID4gPiA+ID4gCSogdHJl ZS12ZWN0LWRhdGEtcmVmcy5jYw0KPiAodmVjdF9lbmhhbmNlX2RhdGFfcmVmc19hbGlnbm1lbnQp OiBHZXQNCj4gPiA+ID4gPiBtYWluDQo+ID4gPiA+ID4gPiAJZXhpdCBkdXJpbmcgcGVlbGluZyBj aGVjay4NCj4gPiA+ID4gPiA+IAkqIHRyZWUtdmVjdC1sb29wLW1hbmlwLmNjDQo+ID4gPiA+ID4g PiAJKHNscGVlbF90cmVlX2R1cGxpY2F0ZV9sb29wX3RvX2VkZ2VfY2ZnKTogU3VwcG9ydCBjb3B5 aW5nDQo+IENGR3MNCj4gPiA+ID4gPiB3aXRoDQo+ID4gPiA+ID4gPiAJbXVsdGlwbGUgZXhpdHMg YW5kIHBsYWNlIGF0IHRoZSBlbmQuDQo+ID4gPiA+ID4gPiAJKHZlY3RfdXBkYXRlX2l2c19hZnRl cl92ZWN0b3JpemVyKTogU2tpcCBvbiBlYXJseSBleGl0cy4NCj4gPiA+ID4gPiA+IAkodmVjdF91 cGRhdGVfaXZzX2FmdGVyX2Vhcmx5X2JyZWFrKTogTmV3Lg0KPiA+ID4gPiA+ID4gCShnaW1wbGVf ZmluZF9sYXN0X21lbV91c2UpOiBOZXcuDQo+ID4gPiA+ID4gPiAJKHNscGVlbF91cGRhdGVfcGhp X25vZGVzX2Zvcl9sb29wcywNCj4gPiA+ID4gPiBzbHBlZWxfdXBkYXRlX3BoaV9ub2Rlc19mb3Jf Z3VhcmQyLA0KPiA+ID4gPiA+ID4gCXNscGVlbF91cGRhdGVfcGhpX25vZGVzX2Zvcl9sY3NzYSwN Cj4gPiA+ID4gPiB2ZWN0X2dlbl92ZWN0b3JfbG9vcF9uaXRlcnNfbXVsdF92ZiwNCj4gPiA+ID4g PiA+IAlzbHBlZWxfY2FuX2R1cGxpY2F0ZV9sb29wX3AsDQo+ID4gPiA+ID4gdmVjdF9zZXRfbG9v cF9jb25kaXRpb25fcGFydGlhbF92ZWN0b3JzKToNCj4gPiA+ID4gPiA+IAlVcGRhdGUgZm9yIG11 bHRpcGxlIGV4aXRzLg0KPiA+ID4gPiA+ID4gCSh2ZWN0X3NldF9sb29wX2NvbmRpdGlvbiwNCj4g dmVjdF9zZXRfbG9vcF9jb25kaXRpb25fbm9ybWFsKToNCj4gPiA+ID4gPiBVcGRhdGUNCj4gPiA+ ID4gPiA+IAljb25kaXRpb24gZm9yIGVhcmx5IGV4aXRzLg0KPiA+ID4gPiA+ID4gCSh2ZWN0X2Rv X3BlZWxpbmcpOiBQZWVsIGZvciBlYXJseSBicmVha3MuDQo+ID4gPiA+ID4gPiAJKiB0cmVlLXZl Y3QtbG9vcC5jYyAodmVjdF9nZXRfbG9vcF9uaXRlcnMpOiBBbmFseXplIGFuZA0KPiByZXR1cm4g YWxsDQo+ID4gPiA+ID4gPiAJZXhpdHMuDQo+ID4gPiA+ID4gPiAJKHZlY3RfYW5hbHl6ZV9sb29w X2Zvcm0sIHZlY3RfY3JlYXRlX2xvb3BfdmluZm8pOiBBbmFseXplDQo+IGFsbA0KPiA+ID4gPiA+ IGNvbmRzLg0KPiA+ID4gPiA+ID4gCSh2ZWN0X2RldGVybWluZV9wYXJ0aWFsX3ZlY3RvcnNfYW5k X3BlZWxpbmcpOiBTdXBvcnQNCj4gbXVsdGlwbGUNCj4gPiA+ID4gPiBleGl0cyBieQ0KPiA+ID4g PiA+ID4gCXBlZWluZy4NCj4gPiA+ID4gPiA+IAkodmVjdF9hbmFseXplX2xvb3ApOiBBZGQgYW5h eXNpcyBmb3IgbXVsdGlwbGUgZXhpdHMuDQo+ID4gPiA+ID4gPiAJKG1vdmVfZWFybHlfZXhpdF9z dG10cywgdmVjdF90cmFuc2Zvcm1fZWFybHlfYnJlYWssDQo+ID4gPiA+ID4gPiAJdmFsaWRhdGVf ZWFybHlfZXhpdF9zdG10cywgdmVjdG9yaXphYmxlX2Vhcmx5X2V4aXQpOiBOZXcuDQo+ID4gPiA+ ID4gPiAJKHZlY3Rvcml6YWJsZV9saXZlX29wZXJhdGlvbik6IElnbm9yZSBlYXJseSBicmVhaw0K PiBzdGF0ZW1lbnRzLg0KPiA+ID4gPiA+ID4gCShzY2FsZV9wcm9maWxlX2Zvcl92ZWN0X2xvb3As IHZlY3RfdHJhbnNmb3JtX2xvb3ApOg0KPiBTdXBwb3J0DQo+ID4gPiA+ID4gbXVsdGlwbGUNCj4g PiA+ID4gPiA+IAlleGl0cy4NCj4gPiA+ID4gPiA+IAkqIHRyZWUtdmVjdC1zdG10cy5jYyAodmVj dF9zdG10X3JlbGV2YW50X3ApOiBBbmFseXplIGVhcmx5DQo+IGJyZWFrcy4NCj4gPiA+ID4gPiA+ IAkocHJlcGFyZV92ZWNfbWFzayk6IEV4cG9zZS4NCj4gPiA+ID4gPiA+IAkodmVjdF9hbmFseXpl X3N0bXQsIHZlY3RfdHJhbnNmb3JtX3N0bXQsDQo+IHZlY3RfaXNfc2ltcGxlX3VzZSwNCj4gPiA+ ID4gPiA+IAl2ZWN0X2dldF92ZWN0b3JfdHlwZXNfZm9yX3N0bXQpOiBTdXBwb3J0IGxvb3ANCj4g Y29udHJvbC9lYXJseSBleGl0cy4NCj4gPiA+ID4gPiA+IAkqIHRyZWUtdmVjdG9yaXplci5jYyAo cGFzc192ZWN0b3JpemU6OmV4ZWN1dGUpOiBSZWNvcmQgYWxsDQo+IGV4aXRzIGZvcg0KPiA+ID4g PiA+ID4gCVJQTy4NCj4gPiA+ID4gPiA+IAkqIHRyZWUtdmVjdG9yaXplci5oIChlbnVtIHZlY3Rf ZGVmX3R5cGUpOiBBZGQNCj4gdmVjdF9lYXJseV9leGl0X2RlZi4NCj4gPiA+ID4gPiA+IAkoc2xw ZWVsX2Nhbl9kdXBsaWNhdGVfbG9vcF9wKTogQ2hhbmdlIGxvb3AgdG8NCj4gbG9vcF92ZWNfaW5m by4NCj4gPiA+ID4gPiA+IAkoc3RydWN0IHZlY3RfbG9vcF9mb3JtX2luZm8pOiBBZGQgbG9vcCBj b25kaXRpb25zLg0KPiA+ID4gPiA+ID4gCShMT09QX1ZJTkZPX0VBUkxZX0JSRUFLUywgdmVjdF90 cmFuc2Zvcm1fZWFybHlfYnJlYWssDQo+ID4gPiA+ID4gPiAJdmVjdG9yaXphYmxlX2Vhcmx5X2V4 aXQpOiBOZXcuDQo+ID4gPiA+ID4gPiAJKHByZXBhcmVfdmVjX21hc2spOiBOZXcuDQo+ID4gPiA+ ID4gPiAJKHZlY19pbmZvKTogQWRkIGVhcmx5X2JyZWFrcy4NCj4gPiA+ID4gPiA+IAkobG9vcF92 ZWNfaW5mb19mb3JfbG9vcCk6IE1ha2UgbG9vcCBjb25zdC4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAJ KiBsaWIvdGFyZ2V0LXN1cHBvcnRzLmV4cCAodmVjdF9lYXJseV9icmVhayk6IE5ldy4NCj4gPiA+ ID4gPiA+IAkqIGcrKy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfMS5jYzogTmV3IHRlc3QuDQo+ ID4gPiA+ID4gPiAJKiBnKysuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrXzIuY2M6IE5ldyB0ZXN0 Lg0KPiA+ID4gPiA+ID4gCSogZysrLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVha18zLmNjOiBOZXcg dGVzdC4NCj4gPiA+ID4gPiA+IAkqIGdjYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWstcnVuXzEu YzogTmV3IHRlc3QuDQo+ID4gPiA+ID4gPiAJKiBnY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFr LXJ1bl8xMC5jOiBOZXcgdGVzdC4NCj4gPiA+ID4gPiA+IAkqIGdjYy5kZy92ZWN0L3ZlY3QtZWFy bHktYnJlYWstcnVuXzIuYzogTmV3IHRlc3QuDQo+ID4gPiA+ID4gPiAJKiBnY2MuZGcvdmVjdC92 ZWN0LWVhcmx5LWJyZWFrLXJ1bl8zLmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+ID4gCSogZ2NjLmRn L3ZlY3QvdmVjdC1lYXJseS1icmVhay1ydW5fNC5jOiBOZXcgdGVzdC4NCj4gPiA+ID4gPiA+IAkq IGdjYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWstcnVuXzUuYzogTmV3IHRlc3QuDQo+ID4gPiA+ ID4gPiAJKiBnY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrLXJ1bl82LmM6IE5ldyB0ZXN0Lg0K PiA+ID4gPiA+ID4gCSogZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVhay1ydW5fNy5jOiBOZXcg dGVzdC4NCj4gPiA+ID4gPiA+IAkqIGdjYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWstcnVuXzgu YzogTmV3IHRlc3QuDQo+ID4gPiA+ID4gPiAJKiBnY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFr LXJ1bl85LmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+ID4gCSogZ2NjLmRnL3ZlY3QvdmVjdC1lYXJs eS1icmVhay10ZW1wbGF0ZV8xLmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+ID4gCSogZ2NjLmRnL3Zl Y3QvdmVjdC1lYXJseS1icmVhay10ZW1wbGF0ZV8yLmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+ID4g CSogZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVha18xLmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+ ID4gCSogZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVha18xMC5jOiBOZXcgdGVzdC4NCj4gPiA+ ID4gPiA+IAkqIGdjYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfMTEuYzogTmV3IHRlc3QuDQo+ ID4gPiA+ID4gPiAJKiBnY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrXzEyLmM6IE5ldyB0ZXN0 Lg0KPiA+ID4gPiA+ID4gCSogZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVha18xMy5jOiBOZXcg dGVzdC4NCj4gPiA+ID4gPiA+IAkqIGdjYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfMTQuYzog TmV3IHRlc3QuDQo+ID4gPiA+ID4gPiAJKiBnY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrXzE1 LmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+ID4gCSogZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVh a18yLmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+ID4gCSogZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1i cmVha18zLmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+ID4gCSogZ2NjLmRnL3ZlY3QvdmVjdC1lYXJs eS1icmVha180LmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+ID4gCSogZ2NjLmRnL3ZlY3QvdmVjdC1l YXJseS1icmVha181LmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+ID4gCSogZ2NjLmRnL3ZlY3QvdmVj dC1lYXJseS1icmVha182LmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+ID4gCSogZ2NjLmRnL3ZlY3Qv dmVjdC1lYXJseS1icmVha183LmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+ID4gCSogZ2NjLmRnL3Zl Y3QvdmVjdC1lYXJseS1icmVha184LmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+ID4gCSogZ2NjLmRn L3ZlY3QvdmVjdC1lYXJseS1icmVha185LmM6IE5ldyB0ZXN0Lg0KPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+IC0tLSBpbmxpbmUgY29weSBvZiBwYXRjaCAtLQ0KPiA+ID4gPiA+ID4gZGlmZiAtLWdp dCBhL2djYy9jZmdsb29wLmggYi9nY2MvY2ZnbG9vcC5oDQo+ID4gPiA+ID4gPiBpbmRleA0KPiA+ ID4gPiA+DQo+ID4gPg0KPiA1MjhiMTIxOWJjMzdhZDhmMTE0ZDVjZjM4MWMwY2ZmODk5ZGIzMWVl Li45YzdmMDE5YTUxYWJmZTJkZThlMWRkNzEzNQ0KPiA+ID4gPiA+IGRlYTI0NjNiMDI1NmEwIDEw MDY0NA0KPiA+ID4gPiA+ID4gLS0tIGEvZ2NjL2NmZ2xvb3AuaA0KPiA+ID4gPiA+ID4gKysrIGIv Z2NjL2NmZ2xvb3AuaA0KPiA+ID4gPiA+ID4gQEAgLTM4NSw2ICszODUsNyBAQCBleHRlcm4gYmFz aWNfYmxvY2sNCj4gPiA+ID4gPiAqZ2V0X2xvb3BfYm9keV9pbl9jdXN0b21fb3JkZXIgKGNvbnN0 IGNsYXNzIGxvb3AgKiwgdm9pZCAqLA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICBleHRlcm4g YXV0b192ZWM8ZWRnZT4gZ2V0X2xvb3BfZXhpdF9lZGdlcyAoY29uc3QgY2xhc3MgbG9vcCAqLA0K PiA+ID4gPiA+IGJhc2ljX2Jsb2NrICogPSBOVUxMKTsNCj4gPiA+ID4gPiA+ICBleHRlcm4gZWRn ZSBzaW5nbGVfZXhpdCAoY29uc3QgY2xhc3MgbG9vcCAqKTsNCj4gPiA+ID4gPiA+ICtleHRlcm4g ZWRnZSBub3JtYWxfZXhpdCAoY29uc3QgY2xhc3MgbG9vcCAqKTsNCj4gPiA+ID4gPiA+ICBleHRl cm4gZWRnZSBzaW5nbGVfbGlrZWx5X2V4aXQgKGNsYXNzIGxvb3AgKmxvb3AsIGNvbnN0IHZlYzxl ZGdlPg0KPiAmKTsNCj4gPiA+ID4gPiA+ICBleHRlcm4gdW5zaWduZWQgbnVtX2xvb3BfYnJhbmNo ZXMgKGNvbnN0IGNsYXNzIGxvb3AgKik7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gZGlmZiAt LWdpdCBhL2djYy9jZmdsb29wLmNjIGIvZ2NjL2NmZ2xvb3AuY2MNCj4gPiA+ID4gPiA+IGluZGV4 DQo+ID4gPiA+ID4NCj4gPiA+DQo+IDU3YmY3YjE4NTVkNGRkMjBmYjNmNDIzODgxMjQ5MzJkMGNh MmI0OGEuLjk3YTczNzNmYjZkOTUxNGRhNjAyZDViZTANCj4gPiA+ID4gPiAxMDUwZjJlYzY2MDk0 YmMgMTAwNjQ0DQo+ID4gPiA+ID4gPiAtLS0gYS9nY2MvY2ZnbG9vcC5jYw0KPiA+ID4gPiA+ID4g KysrIGIvZ2NjL2NmZ2xvb3AuY2MNCj4gPiA+ID4gPiA+IEBAIC0xODEyLDYgKzE4MTIsMjAgQEAg c2luZ2xlX2V4aXQgKGNvbnN0IGNsYXNzIGxvb3AgKmxvb3ApDQo+ID4gPiA+ID4gPiAgICAgIHJl dHVybiBOVUxMOw0KPiA+ID4gPiA+ID4gIH0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiArLyog UmV0dXJucyB0aGUgbm9ybWFsIGV4aXQgZWRnZSBvZiBMT09QLCBvciBOVUxMIGlmIExPT1AgaGFz DQo+IGVpdGhlcg0KPiA+ID4gbm8NCj4gPiA+ID4gPiBleGl0Lg0KPiA+ID4gPiA+ID4gKyAgIElm IGxvb3BzIGRvIG5vdCBoYXZlIHRoZSBleGl0cyByZWNvcmRlZCwgTlVMTCBpcyByZXR1cm5lZCBh bHdheXMuDQo+ICovDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArZWRnZQ0KPiA+ID4gPiA+ ID4gK25vcm1hbF9leGl0IChjb25zdCBjbGFzcyBsb29wICpsb29wKQ0KPiA+ID4gPiA+ID4gK3sN Cj4gPiA+ID4gPiA+ICsgIHN0cnVjdCBsb29wX2V4aXQgKmV4aXQgPSBsb29wLT5leGl0cy0+bmV4 dDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIGlmICghbG9vcHNfc3RhdGVfc2F0aXNm aWVzX3AgKExPT1BTX0hBVkVfUkVDT1JERURfRVhJVFMpKQ0KPiA+ID4gPiA+ID4gKyAgICByZXR1 cm4gTlVMTDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiBleGl0LT5lOw0K PiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICAvKiBSZXR1cm5zIHRy dWUgd2hlbiBCQiBoYXMgYW4gaW5jb21pbmcgZWRnZSBleGl0aW5nIExPT1AuICAqLw0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+ICBib29sDQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2Rv Yy9sb29wLnRleGkgYi9nY2MvZG9jL2xvb3AudGV4aQ0KPiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ ID4gPg0KPiA+ID4NCj4gNmU4NjU3YTA3NGQyNDQ3ZGI3YWU5Yjc1Y2JmYmI3MTI4MmI4NDI4Ny4u ZTFkZTJhYzQwZjg3Zjg3OWFiNjkxZjY4Yg0KPiA+ID4gPiA+IGQ0MWIzYmMyMWE4M2JmNyAxMDA2 NDQNCj4gPiA+ID4gPiA+IC0tLSBhL2djYy9kb2MvbG9vcC50ZXhpDQo+ID4gPiA+ID4gPiArKysg Yi9nY2MvZG9jL2xvb3AudGV4aQ0KPiA+ID4gPiA+ID4gQEAgLTIxMSw2ICsyMTEsMTAgQEAgcmVs YXRpb24sIGFuZCBicmVhdGgtZmlyc3Qgc2VhcmNoIG9yZGVyLA0KPiA+ID4gPiA+IHJlc3BlY3Rp dmVseS4NCj4gPiA+ID4gPiA+ICBAaXRlbSBAY29kZXtzaW5nbGVfZXhpdH06IFJldHVybnMgdGhl IHNpbmdsZSBleGl0IGVkZ2Ugb2YgdGhlDQo+IGxvb3AsIG9yDQo+ID4gPiA+ID4gPiAgQGNvZGV7 TlVMTH0gaWYgdGhlIGxvb3AgaGFzIG1vcmUgdGhhbiBvbmUgZXhpdC4gIFlvdSBjYW4gb25seSB1 c2UNCj4gdGhpcw0KPiA+ID4gPiA+ID4gIGZ1bmN0aW9uIGlmIEBjb2Rle0xPT1BTX0hBVkVfUkVD T1JERURfRVhJVFN9IGlzIHVzZWQuDQo+ID4gPiA+ID4gPiArZnVuY3Rpb24gaWYgTE9PUFNfSEFW RV9NQVJLRURfU0lOR0xFX0VYSVRTIHByb3BlcnR5IGlzDQo+IHVzZWQuDQo+ID4gPiA+ID4gPiAr QGl0ZW0gQGNvZGV7bm9ybWFsX2V4aXR9OiBSZXR1cm5zIHRoZSBuYXR1cmFsIGV4aXQgZWRnZSBv ZiB0aGUNCj4gPiA+IGxvb3AsDQo+ID4gPiA+ID4gPiArZXZlbiBpZiB0aGUgbG9vcCBoYXMgbW9y ZSB0aGFuIG9uZSBleGl0LiAgVGhlIG5hdHVyYWwgZXhpdCBpcyB0aGUgZXhpdA0KPiA+ID4gPiA+ ID4gK3RoYXQgd291bGQgbm9ybWFsbHkgYmUgdGFrZW4gd2hlcmUgdGhlIGxvb3AgdG8gYmUgZnVs bHkgZXhlY3V0ZWQuDQo+ID4gPiA+ID4gPiAgQGl0ZW0gQGNvZGV7Z2V0X2xvb3BfZXhpdF9lZGdl c306IEVudW1lcmF0ZXMgdGhlIGV4aXQgZWRnZXMNCj4gb2YgYQ0KPiA+ID4gPiA+IGxvb3AuDQo+ ID4gPiA+ID4gPiAgQGl0ZW0gQGNvZGV7anVzdF9vbmNlX2VhY2hfaXRlcmF0aW9uX3B9OiBSZXR1 cm5zIHRydWUgaWYgdGhlDQo+IGJhc2ljDQo+ID4gPiA+ID4gYmxvY2sNCj4gPiA+ID4gPiA+ICBp cyBleGVjdXRlZCBleGFjdGx5IG9uY2UgZHVyaW5nIGVhY2ggaXRlcmF0aW9uIG9mIGEgbG9vcCAo dGhhdCBpcywgaXQNCj4gPiA+ID4gPiA+IEBAIC02MjMsNCArNjI3LDQgQEAgbWF4aW11bSB2ZXJi b3NpdHkgdGhlIGRldGFpbHMgb2YgYSBkYXRhDQo+ID4gPiA+ID4gZGVwZW5kZW5jZSByZWxhdGlv bnMgYXJyYXksDQo+ID4gPiA+ID4gPiAgQGNvZGV7ZHVtcF9kaXN0X2Rpcl92ZWN0b3JzfSBwcmlu dHMgb25seSB0aGUgY2xhc3NpY2FsIGRpc3RhbmNlDQo+IGFuZA0KPiA+ID4gPiA+ID4gIGRpcmVj dGlvbiB2ZWN0b3JzIGZvciBhIGRhdGEgZGVwZW5kZW5jZSByZWxhdGlvbnMgYXJyYXksIGFuZA0K PiA+ID4gPiA+ID4gIEBjb2Rle2R1bXBfZGF0YV9yZWZlcmVuY2VzfSBwcmludHMgdGhlIGRldGFp bHMgb2YgdGhlIGRhdGENCj4gPiA+IHJlZmVyZW5jZXMNCj4gPiA+ID4gPiA+IC1jb250YWluZWQg aW4gYSBkYXRhIHJlZmVyZW5jZSBhcnJheS4NCj4gPiA+ID4gPiA+ICtjb250YWluZWQgaW4gYSBk YXRhIHJlZmVyZW5jZSBhcnJheQ0KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2djYy9kb2Mvc291 cmNlYnVpbGQudGV4aSBiL2djYy9kb2Mvc291cmNlYnVpbGQudGV4aQ0KPiA+ID4gPiA+ID4gaW5k ZXgNCj4gPiA+ID4gPg0KPiA+ID4NCj4gZTIxYTFkMzgxZTA1ZGExYmZjY2I1NTUwNjhlYTFkYmVh YmQ5ZmM3OS4uMTZmYTk0ZWJmNTMyZDI3Y2Q5YTNhNDVhNw0KPiA+ID4gPiA+IGFhZDU3OGNhNjky MDQ5NiAxMDA2NDQNCj4gPiA+ID4gPiA+IC0tLSBhL2djYy9kb2Mvc291cmNlYnVpbGQudGV4aQ0K PiA+ID4gPiA+ID4gKysrIGIvZ2NjL2RvYy9zb3VyY2VidWlsZC50ZXhpDQo+ID4gPiA+ID4gPiBA QCAtMTY0MCw2ICsxNjQwLDEwIEBAIFRhcmdldCBzdXBwb3J0cyBoYXJkd2FyZSB2ZWN0b3JzIG9m DQo+ID4gPiA+ID4gQGNvZGV7ZmxvYXR9IHdoZW4NCj4gPiA+ID4gPiA+ICBAb3B0aW9uey1mdW5z YWZlLW1hdGgtb3B0aW1pemF0aW9uc30gaXMgbm90IGluIGVmZmVjdC4NCj4gPiA+ID4gPiA+ICBU aGlzIGltcGxpZXMgQGNvZGV7dmVjdF9mbG9hdH0uDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g K0BpdGVtIHZlY3RfZWFybHlfYnJlYWsNCj4gPiA+ID4gPiA+ICtUYXJnZXQgc3VwcG9ydHMgaGFy ZHdhcmUgdmVjdG9yaXphdGlvbiBvZiBsb29wcyB3aXRoIGVhcmx5IGJyZWFrcy4NCj4gPiA+ID4g PiA+ICtUaGlzIHJlcXVpcmVzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBjYnJhbmNoIG9wdGFi IGZvciB2ZWN0b3JzLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gIEBpdGVtIHZlY3RfaW50 DQo+ID4gPiA+ID4gPiAgVGFyZ2V0IHN1cHBvcnRzIGhhcmR3YXJlIHZlY3RvcnMgb2YgQGNvZGV7 aW50fS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrXzEuY2MNCj4gPiA+ID4gPiBiL2djYy90ZXN0 c3VpdGUvZysrLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVha18xLmNjDQo+ID4gPiA+ID4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4gPg0KPiA+ID4NCj4g MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE4MzY0OGNhMzZlMmM4 ZmVlYjc4MzM1ZmMNCj4gPiA+ID4gPiBjZjNmM2I4MmE5N2QyZQ0KPiA+ID4gPiA+ID4gLS0tIC9k ZXYvbnVsbA0KPiA+ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvdmVjdC92ZWN0 LWVhcmx5LWJyZWFrXzEuY2MNCj4gPiA+ID4gPiA+IEBAIC0wLDAgKzEsNjEgQEANCj4gPiA+ID4g PiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctcmVxdWly ZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfZWFybHlfYnJlYWsgfSAqLw0KPiA+ID4gPiA+ID4gKy8q IHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0gKi8NCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLXcgLU8yIiB9ICov DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArdm9pZCBmYW5jeV9hYm9ydChjaGFyICosIGlu dCwgY29uc3QgY2hhciAqKQ0KPiA+ID4gPiA+IF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykp Ow0KPiA+ID4gPiA+ID4gK3RlbXBsYXRlIDx1bnNpZ25lZCBOLCB0eXBlbmFtZT4gc3RydWN0IHBv bHlfaW50X3BvZCB7IGludA0KPiBjb2VmZnNbTl07DQo+ID4gPiB9Ow0KPiA+ID4gPiA+ID4gK3Rl bXBsYXRlIDx1bnNpZ25lZCBOLCB0eXBlbmFtZT4gY2xhc3MgcG9seV9pbnQgOiBwdWJsaWMNCj4g PiA+IHBvbHlfaW50X3BvZDxOLA0KPiA+ID4gPiA+IGludD4gew0KPiA+ID4gPiA+ID4gK3B1Ymxp YzoNCj4gPiA+ID4gPiA+ICsgIHRlbXBsYXRlIDx0eXBlbmFtZSBDYT4gcG9seV9pbnQgJm9wZXJh dG9yKz0oY29uc3QNCj4gPiA+IHBvbHlfaW50X3BvZDxOLA0KPiA+ID4gPiA+IENhPiAmKTsNCj4g PiA+ID4gPiA+ICt9Ow0KPiA+ID4gPiA+ID4gK3RlbXBsYXRlIDx1bnNpZ25lZCBOLCB0eXBlbmFt ZSBDPg0KPiA+ID4gPiA+ID4gK3RlbXBsYXRlIDx0eXBlbmFtZSBDYT4NCj4gPiA+ID4gPiA+ICtw b2x5X2ludDxOLCBDPiAmcG9seV9pbnQ8TiwgQz46Om9wZXJhdG9yKz0oY29uc3QNCj4gcG9seV9p bnRfcG9kPE4sDQo+ID4gPiBDYT4NCj4gPiA+ID4gPiAmYSkgew0KPiA+ID4gPiA+ID4gKyAgZm9y IChpbnQgaSA9IDA7IGkgPCBOOyBpKyspDQo+ID4gPiA+ID4gPiArICAgIHRoaXMtPmNvZWZmc1tp XSArPSBhLmNvZWZmc1tpXTsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiAqdGhpczsNCj4gPiA+ID4g PiA+ICt9DQo+ID4gPiA+ID4gPiArdGVtcGxhdGUgPHVuc2lnbmVkIE4sIHR5cGVuYW1lIENhLCB0 eXBlbmFtZSBDYj4NCj4gPiA+ID4gPiA+ICtwb2x5X2ludDxOLCBsb25nPiBleGFjdF9kaXYocG9s eV9pbnRfcG9kPE4sIENhPiwgQ2IpIHsNCj4gPiA+ID4gPiA+ICsgIHBvbHlfaW50PE4sIGxvbmc+ IHI7DQo+ID4gPiA+ID4gPiArICByZXR1cm4gcjsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4g PiArc3RydWN0IHZlY19wcmVmaXggew0KPiA+ID4gPiA+ID4gKyAgdW5zaWduZWQgbV9udW07DQo+ ID4gPiA+ID4gPiArfTsNCj4gPiA+ID4gPiA+ICtzdHJ1Y3QgdmxfcHRyOw0KPiA+ID4gPiA+ID4g K3N0cnVjdCB2YV9oZWFwIHsNCj4gPiA+ID4gPiA+ICsgIHR5cGVkZWYgdmxfcHRyIGRlZmF1bHRf bGF5b3V0Ow0KPiA+ID4gPiA+ID4gK307DQo+ID4gPiA+ID4gPiArdGVtcGxhdGUgPHR5cGVuYW1l LCB0eXBlbmFtZSBBLCB0eXBlbmFtZSA9IHR5cGVuYW1lDQo+ID4gPiA+ID4gQTo6ZGVmYXVsdF9s YXlvdXQ+DQo+ID4gPiA+ID4gPiArc3RydWN0IHZlYzsNCj4gPiA+ID4gPiA+ICt0ZW1wbGF0ZSA8 dHlwZW5hbWUgVCwgdHlwZW5hbWUgQT4gc3RydWN0IHZlYzxULCBBLCBpbnQ+IHsNCj4gPiA+ID4g PiA+ICsgIFQgJm9wZXJhdG9yW10odW5zaWduZWQpOw0KPiA+ID4gPiA+ID4gKyAgdmVjX3ByZWZp eCBtX3ZlY3BmeDsNCj4gPiA+ID4gPiA+ICsgIFQgbV92ZWNkYXRhW107DQo+ID4gPiA+ID4gPiAr fTsNCj4gPiA+ID4gPiA+ICt0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQT4gVCAmdmVj PFQsIEEsDQo+ID4gPiA+ID4gaW50Pjo6b3BlcmF0b3JbXSh1bnNpZ25lZCBpeCkgew0KPiA+ID4g PiA+ID4gKyAgbV92ZWNwZngubV9udW0gPyBmYW5jeV9hYm9ydCgiIiwgOSwgX19GVU5DVElPTl9f KSwgMCA6IDA7DQo+ID4gPiA+ID4gPiArICByZXR1cm4gbV92ZWNkYXRhW2l4XTsNCj4gPiA+ID4g PiA+ICt9DQo+ID4gPiA+ID4gPiArdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCB2ZWM8VCwg dmFfaGVhcD4gew0KPiA+ID4gPiA+ID4gKyAgVCAmb3BlcmF0b3JbXSh1bnNpZ25lZCBpeCkgeyBy ZXR1cm4gbV92ZWNbaXhdOyB9DQo+ID4gPiA+ID4gPiArICB2ZWM8VCwgdmFfaGVhcCwgaW50PiBt X3ZlYzsNCj4gPiA+ID4gPiA+ICt9Ow0KPiA+ID4gPiA+ID4gK2NsYXNzIGF1dG9fdmVjIDogcHVi bGljIHZlYzxwb2x5X2ludDwyLCBsb25nPiwgdmFfaGVhcD4ge307DQo+ID4gPiA+ID4gPiArdGVt cGxhdGUgPHR5cGVuYW1lPiBjbGFzcyB2ZWN0b3JfYnVpbGRlciA6IHB1YmxpYyBhdXRvX3ZlYyB7 fTsNCj4gPiA+ID4gPiA+ICtjbGFzcyBpbnRfdmVjdG9yX2J1aWxkZXIgOiBwdWJsaWMgdmVjdG9y X2J1aWxkZXI8aW50PiB7DQo+ID4gPiA+ID4gPiArcHVibGljOg0KPiA+ID4gPiA+ID4gKyAgaW50 X3ZlY3Rvcl9idWlsZGVyKHBvbHlfaW50PDIsIGxvbmc+LCBpbnQsIGludCk7DQo+ID4gPiA+ID4g PiArfTsNCj4gPiA+ID4gPiA+ICtib29sIHZlY3RfZ3JvdXBlZF9zdG9yZV9zdXBwb3J0ZWQoKSB7 DQo+ID4gPiA+ID4gPiArICBpbnQgaTsNCj4gPiA+ID4gPiA+ICsgIHBvbHlfaW50PDIsIGxvbmc+ IG5lbHQ7DQo+ID4gPiA+ID4gPiArICBpbnRfdmVjdG9yX2J1aWxkZXIgc2VsKG5lbHQsIDIsIDMp Ow0KPiA+ID4gPiA+ID4gKyAgZm9yIChpID0gMDsgaSA8IDY7IGkrKykNCj4gPiA+ID4gPiA+ICsg ICAgc2VsW2ldICs9IGV4YWN0X2RpdihuZWx0LCAyKTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJMT09Q IFZFQ1RPUklaRUQiICJ2ZWN0IiB9IH0gKi8NCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2crKy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfMi5jYw0KPiA+ID4gPiA+IGIv Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrXzIuY2MNCj4gPiA+ID4g PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4gPiBpbmRleA0KPiA+ID4gPiA+DQo+ ID4gPg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTgzNjQ4 Y2EzNmUyYzhmZWViNzgzMzVmYw0KPiA+ID4gPiA+IGNmM2YzYjgyYTk3ZDJlDQo+ID4gPiA+ID4g PiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy92 ZWN0L3ZlY3QtZWFybHktYnJlYWtfMi5jYw0KPiA+ID4gPiA+ID4gQEAgLTAsMCArMSw2MSBAQA0K PiA+ID4gPiA+ID4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ID4gPiA+ID4gPiArLyogeyBk Zy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9lYXJseV9icmVhayB9ICovDQo+ID4gPiA+ ID4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAqLw0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItdyAt TzIiIH0gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICt2b2lkIGZhbmN5X2Fib3J0KGNo YXIgKiwgaW50LCBjb25zdCBjaGFyICopDQo+ID4gPiA+ID4gX19hdHRyaWJ1dGVfXygoX19ub3Jl dHVybl9fKSk7DQo+ID4gPiA+ID4gPiArdGVtcGxhdGUgPHVuc2lnbmVkIE4sIHR5cGVuYW1lPiBz dHJ1Y3QgcG9seV9pbnRfcG9kIHsgaW50DQo+IGNvZWZmc1tOXTsNCj4gPiA+IH07DQo+ID4gPiA+ ID4gPiArdGVtcGxhdGUgPHVuc2lnbmVkIE4sIHR5cGVuYW1lPiBjbGFzcyBwb2x5X2ludCA6IHB1 YmxpYw0KPiA+ID4gcG9seV9pbnRfcG9kPE4sDQo+ID4gPiA+ID4gaW50PiB7DQo+ID4gPiA+ID4g PiArcHVibGljOg0KPiA+ID4gPiA+ID4gKyAgdGVtcGxhdGUgPHR5cGVuYW1lIENhPiBwb2x5X2lu dCAmb3BlcmF0b3IrPShjb25zdA0KPiA+ID4gcG9seV9pbnRfcG9kPE4sDQo+ID4gPiA+ID4gQ2E+ ICYpOw0KPiA+ID4gPiA+ID4gK307DQo+ID4gPiA+ID4gPiArdGVtcGxhdGUgPHVuc2lnbmVkIE4s IHR5cGVuYW1lIEM+DQo+ID4gPiA+ID4gPiArdGVtcGxhdGUgPHR5cGVuYW1lIENhPg0KPiA+ID4g PiA+ID4gK3BvbHlfaW50PE4sIEM+ICZwb2x5X2ludDxOLCBDPjo6b3BlcmF0b3IrPShjb25zdA0K PiBwb2x5X2ludF9wb2Q8TiwNCj4gPiA+IENhPg0KPiA+ID4gPiA+ICZhKSB7DQo+ID4gPiA+ID4g PiArICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykNCj4gPiA+ID4gPiA+ICsgICAgdGhpcy0+ Y29lZmZzW2ldICs9IGEuY29lZmZzW2ldOw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuICp0aGlzOw0K PiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICt0ZW1wbGF0ZSA8dW5zaWduZWQgTiwgdHlwZW5h bWUgQ2EsIHR5cGVuYW1lIENiPg0KPiA+ID4gPiA+ID4gK3BvbHlfaW50PE4sIGxvbmc+IGV4YWN0 X2Rpdihwb2x5X2ludF9wb2Q8TiwgQ2E+LCBDYikgew0KPiA+ID4gPiA+ID4gKyAgcG9seV9pbnQ8 TiwgbG9uZz4gcjsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiByOw0KPiA+ID4gPiA+ID4gK30NCj4g PiA+ID4gPiA+ICtzdHJ1Y3QgdmVjX3ByZWZpeCB7DQo+ID4gPiA+ID4gPiArICB1bnNpZ25lZCBt X251bTsNCj4gPiA+ID4gPiA+ICt9Ow0KPiA+ID4gPiA+ID4gK3N0cnVjdCB2bF9wdHI7DQo+ID4g PiA+ID4gPiArc3RydWN0IHZhX2hlYXAgew0KPiA+ID4gPiA+ID4gKyAgdHlwZWRlZiB2bF9wdHIg ZGVmYXVsdF9sYXlvdXQ7DQo+ID4gPiA+ID4gPiArfTsNCj4gPiA+ID4gPiA+ICt0ZW1wbGF0ZSA8 dHlwZW5hbWUsIHR5cGVuYW1lIEEsIHR5cGVuYW1lID0gdHlwZW5hbWUNCj4gPiA+ID4gPiBBOjpk ZWZhdWx0X2xheW91dD4NCj4gPiA+ID4gPiA+ICtzdHJ1Y3QgdmVjOw0KPiA+ID4gPiA+ID4gK3Rl bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBBPiBzdHJ1Y3QgdmVjPFQsIEEsIGludD4gew0K PiA+ID4gPiA+ID4gKyAgVCAmb3BlcmF0b3JbXSh1bnNpZ25lZCk7DQo+ID4gPiA+ID4gPiArICB2 ZWNfcHJlZml4IG1fdmVjcGZ4Ow0KPiA+ID4gPiA+ID4gKyAgVCBtX3ZlY2RhdGFbXTsNCj4gPiA+ ID4gPiA+ICt9Ow0KPiA+ID4gPiA+ID4gK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBB PiBUICZ2ZWM8VCwgQSwNCj4gPiA+ID4gPiBpbnQ+OjpvcGVyYXRvcltdKHVuc2lnbmVkIGl4KSB7 DQo+ID4gPiA+ID4gPiArICBtX3ZlY3BmeC5tX251bSA/IGZhbmN5X2Fib3J0KCIiLCA5LCBfX0ZV TkNUSU9OX18pLCAwIDogMDsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiBtX3ZlY2RhdGFbaXhdOw0K PiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICt0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0 IHZlYzxULCB2YV9oZWFwPiB7DQo+ID4gPiA+ID4gPiArICBUICZvcGVyYXRvcltdKHVuc2lnbmVk IGl4KSB7IHJldHVybiBtX3ZlY1tpeF07IH0NCj4gPiA+ID4gPiA+ICsgIHZlYzxULCB2YV9oZWFw LCBpbnQ+IG1fdmVjOw0KPiA+ID4gPiA+ID4gK307DQo+ID4gPiA+ID4gPiArY2xhc3MgYXV0b192 ZWMgOiBwdWJsaWMgdmVjPHBvbHlfaW50PDIsIGxvbmc+LCB2YV9oZWFwPiB7fTsNCj4gPiA+ID4g PiA+ICt0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIHZlY3Rvcl9idWlsZGVyIDogcHVibGljIGF1 dG9fdmVjIHt9Ow0KPiA+ID4gPiA+ID4gK2NsYXNzIGludF92ZWN0b3JfYnVpbGRlciA6IHB1Ymxp YyB2ZWN0b3JfYnVpbGRlcjxpbnQ+IHsNCj4gPiA+ID4gPiA+ICtwdWJsaWM6DQo+ID4gPiA+ID4g PiArICBpbnRfdmVjdG9yX2J1aWxkZXIocG9seV9pbnQ8MiwgbG9uZz4sIGludCwgaW50KTsNCj4g PiA+ID4gPiA+ICt9Ow0KPiA+ID4gPiA+ID4gK2Jvb2wgdmVjdF9ncm91cGVkX3N0b3JlX3N1cHBv cnRlZCgpIHsNCj4gPiA+ID4gPiA+ICsgIGludCBpOw0KPiA+ID4gPiA+ID4gKyAgcG9seV9pbnQ8 MiwgbG9uZz4gbmVsdDsNCj4gPiA+ID4gPiA+ICsgIGludF92ZWN0b3JfYnVpbGRlciBzZWwobmVs dCwgMiwgMyk7DQo+ID4gPiA+ID4gPiArICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQ0KPiA+ID4g PiA+ID4gKyAgICBzZWxbaV0gKz0gZXhhY3RfZGl2KG5lbHQsIDIpOw0KPiA+ID4gPiA+ID4gK30N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAgIkxPT1AgVkVDVE9SSVpFRCIgInZlY3QiIH0gfSAqLw0KPiA+ID4gPiA+ID4gZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVha18zLmNjDQo+ID4g PiA+ID4gYi9nY2MvdGVzdHN1aXRlL2crKy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfMy5jYw0K PiA+ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiA+IGluZGV4DQo+ID4g PiA+ID4NCj4gPiA+DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LmExMmU1Y2E0MzRiMmFjMzdjMDNkYmFhMTINCj4gPiA+ID4gPiAyNzNmZDhlNWFhMjAxOGMNCj4g PiA+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUv ZysrLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVha18zLmNjDQo+ID4gPiA+ID4gPiBAQCAtMCwwICsx LDE2IEBADQo+ID4gPiA+ID4gPiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4gPiA+ID4gPiA+ ICsvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2Vhcmx5X2JyZWFrIH0gKi8N Cj4gPiA+ID4gPiA+ICsvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2ludCB9 ICovDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlv bnMgIi13IC1PMiIgfSAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK2ludCBhYXJjaDY0 X2FkdnNpbWRfdmFsaWRfaW1tZWRpYXRlX2hzX3ZhbDMyOw0KPiA+ID4gPiA+ID4gK2Jvb2wgYWFy Y2g2NF9hZHZzaW1kX3ZhbGlkX2ltbWVkaWF0ZV9ocygpIHsNCj4gPiA+ID4gPiA+ICsgIGZvciAo aW50IHNoaWZ0ID0gMDsgc2hpZnQgPCAzMjsgc2hpZnQgKz0gOCkNCj4gPiA+ID4gPiA+ICsgICAg aWYgKGFhcmNoNjRfYWR2c2ltZF92YWxpZF9pbW1lZGlhdGVfaHNfdmFsMzIgJiBzaGlmdCkNCj4g PiA+ID4gPiA+ICsgICAgICByZXR1cm4gYWFyY2g2NF9hZHZzaW1kX3ZhbGlkX2ltbWVkaWF0ZV9o c192YWwzMjsNCj4gPiA+ID4gPiA+ICsgIGZvciAoOzspDQo+ID4gPiA+ID4gPiArICAgIDsNCj4g PiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wICJMT09QIFZFQ1RPUklaRUQiICJ2ZWN0IiB9IH0gKi8NCj4gPiA+ID4g PiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJl YWstcnVuXzEuYw0KPiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVh cmx5LWJyZWFrLXJ1bl8xLmMNCj4gPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4g PiA+ID4gPiBpbmRleA0KPiA+ID4gPiA+DQo+ID4gPg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwLi4yNDk1YjM2YTcyZWFlOTRjYjdhYmM0YTBkDQo+ID4gPiA+ID4g MTdhNWM5NzlmZDc4MDgzDQo+ID4gPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ID4gPiAr KysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWstcnVuXzEuYw0K PiA+ID4gPiA+ID4gQEAgLTAsMCArMSwxMSBAQA0KPiA+ID4gPiA+ID4gKy8qIHsgZGctZG8gcnVu IH0gKi8NCj4gPiA+ID4gPiA+ICsvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0 X2Vhcmx5X2JyZWFrIH0gKi8NCj4gPiA+ID4gPiA+ICsvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZl LXRhcmdldCB2ZWN0X2ludCB9ICovDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyogeyBk Zy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1PZmFzdCAtc2F2ZS10ZW1wcyIgfSAqLw0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gKyNkZWZpbmUgTiA4MDMNCj4gPiA+ID4gPiA+ICsjZGVmaW5lIFAg MA0KPiA+ID4gPiA+ID4gKyNpbmNsdWRlICJ2ZWN0LWVhcmx5LWJyZWFrLXRlbXBsYXRlXzEuYyIN Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAgIkxPT1AgVkVDVE9SSVpFRCIgInZlY3QiIH0gfSAqLw0KPiA+ID4gPiA+ID4gZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVhay1ydW5fMTAuYw0K PiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrLXJ1 bl8xMC5jDQo+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gaW5k ZXgNCj4gPiA+ID4gPg0KPiA+ID4NCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMC4uOWJjZDdmN2U1N2VmOWExZDQ2NDlkMTg1Ng0KPiA+ID4gPiA+IDliMzQwNjA1MGU1 NDYwMw0KPiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiA+ID4gKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrLXJ1bl8xMC5jDQo+ID4gPiA+ID4g PiBAQCAtMCwwICsxLDExIEBADQo+ID4gPiA+ID4gPiArLyogeyBkZy1kbyBydW4gfSAqLw0KPiA+ ID4gPiA+ID4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfZWFybHlfYnJl YWsgfSAqLw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZl Y3RfaW50IH0gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWFkZGl0aW9u YWwtb3B0aW9ucyAiLU9mYXN0IC1zYXZlLXRlbXBzIiB9ICovDQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArI2RlZmluZSBOIDgwMA0KPiA+ID4gPiA+ID4gKyNkZWZpbmUgUCA3OTkNCj4gPiA+ ID4gPiA+ICsjaW5jbHVkZSAidmVjdC1lYXJseS1icmVhay10ZW1wbGF0ZV8yLmMiDQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJMT09Q IFZFQ1RPUklaRUQiICJ2ZWN0IiB9IH0gKi8NCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWstcnVuXzIuYw0KPiA+ID4gPiA+ IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrLXJ1bl8yLmMNCj4g PiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4gPiBpbmRleA0KPiA+ID4g PiA+DQo+ID4gPg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42 M2Y2MzEwMWE0Njc5MDlmMzI4YmU3ZjNhYw0KPiA+ID4gPiA+IGJjNWJjYjcyMTk2N2ZmDQo+ID4g PiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWstcnVuXzIuYw0KPiA+ID4gPiA+ID4gQEAgLTAsMCAr MSwxMSBAQA0KPiA+ID4gPiA+ID4gKy8qIHsgZGctZG8gcnVuIH0gKi8NCj4gPiA+ID4gPiA+ICsv KiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2Vhcmx5X2JyZWFrIH0gKi8NCj4g PiA+ID4gPiA+ICsvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2ludCB9ICov DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMg Ii1PZmFzdCAtc2F2ZS10ZW1wcyIgfSAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyNk ZWZpbmUgTiA4MDMNCj4gPiA+ID4gPiA+ICsjZGVmaW5lIFAgODAyDQo+ID4gPiA+ID4gPiArI2lu Y2x1ZGUgInZlY3QtZWFybHktYnJlYWstdGVtcGxhdGVfMS5jIg0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiTE9PUCBWRUNUT1JJWkVE IiAidmVjdCIgfSB9ICovDQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrLXJ1bl8zLmMNCj4gPiA+ID4gPiBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVhay1ydW5fMy5jDQo+ID4gPiA+ID4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4gPg0KPiA+ID4N Cj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjI2Yjk1ZTliODUx NzA4MWQ0MWQ3OTRlOQ0KPiA+ID4gPiA+IGUwMjY0ZDYzMDFjODU4OQ0KPiA+ID4gPiA+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92 ZWN0LWVhcmx5LWJyZWFrLXJ1bl8zLmMNCj4gPiA+ID4gPiA+IEBAIC0wLDAgKzEsMTEgQEANCj4g PiA+ID4gPiA+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1 aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9lYXJseV9icmVhayB9ICovDQo+ID4gPiA+ID4gPiAr LyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAqLw0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItT2Zhc3QgLXNh dmUtdGVtcHMiIH0gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsjZGVmaW5lIE4gODAz DQo+ID4gPiA+ID4gPiArI2RlZmluZSBQIDUNCj4gPiA+ID4gPiA+ICsjaW5jbHVkZSAidmVjdC1l YXJseS1icmVhay10ZW1wbGF0ZV8xLmMiDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJMT09QIFZFQ1RPUklaRUQiICJ2ZWN0IiB9IH0g Ki8NCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3Zl Y3QtZWFybHktYnJlYWstcnVuXzQuYw0KPiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dmVjdC92ZWN0LWVhcmx5LWJyZWFrLXJ1bl80LmMNCj4gPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gPiA+ID4gPiBpbmRleA0KPiA+ID4gPiA+DQo+ID4gPg0KPiAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTBlNjQyNjEyMDU1MTE1MmE3YmQ4MDBj DQo+ID4gPiA+ID4gMTVkOWVkNmFiMTViYWRhDQo+ID4gPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJl YWstcnVuXzQuYw0KPiA+ID4gPiA+ID4gQEAgLTAsMCArMSwxMSBAQA0KPiA+ID4gPiA+ID4gKy8q IHsgZGctZG8gcnVuIH0gKi8NCj4gPiA+ID4gPiA+ICsvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZl LXRhcmdldCB2ZWN0X2Vhcmx5X2JyZWFrIH0gKi8NCj4gPiA+ID4gPiA+ICsvKiB7IGRnLXJlcXVp cmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2ludCB9ICovDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1PZmFzdCAtc2F2ZS10ZW1wcyIgfSAq Lw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyNkZWZpbmUgTiA4MDMNCj4gPiA+ID4gPiA+ ICsjZGVmaW5lIFAgMjc4DQo+ID4gPiA+ID4gPiArI2luY2x1ZGUgInZlY3QtZWFybHktYnJlYWst dGVtcGxhdGVfMS5jIg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcCAiTE9PUCBWRUNUT1JJWkVEIiAidmVjdCIgfSB9ICovDQo+ID4gPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJy ZWFrLXJ1bl81LmMNCj4gPiA+ID4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1l YXJseS1icmVhay1ydW5fNS5jDQo+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4gPg0KPiA+ID4NCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQyY2Y0ODZmOWM0MDA1NWRmMGFlZjVmZDIzDQo+ID4gPiA+ ID4gOGQxYWZmN2E3YzdkYQ0KPiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiA+ID4g KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrLXJ1bl81LmMN Cj4gPiA+ID4gPiA+IEBAIC0wLDAgKzEsMTEgQEANCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWRvIHJ1 biB9ICovDQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVj dF9lYXJseV9icmVhayB9ICovDQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2 ZS10YXJnZXQgdmVjdF9pbnQgfSAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qIHsg ZGctYWRkaXRpb25hbC1vcHRpb25zICItT2Zhc3QgLXNhdmUtdGVtcHMiIH0gKi8NCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsjZGVmaW5lIE4gODAwDQo+ID4gPiA+ID4gPiArI2RlZmluZSBQ IDc5OQ0KPiA+ID4gPiA+ID4gKyNpbmNsdWRlICJ2ZWN0LWVhcmx5LWJyZWFrLXRlbXBsYXRlXzEu YyINCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAgIkxPT1AgVkVDVE9SSVpFRCIgInZlY3QiIH0gfSAqLw0KPiA+ID4gPiA+ID4gZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVhay1ydW5fNi5j DQo+ID4gPiA+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWst cnVuXzYuYw0KPiA+ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiA+IGlu ZGV4DQo+ID4gPiA+ID4NCj4gPiA+DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAuLjlmZTcxMzZiNzIxM2E0NjNjYTY1NzNjNjA0DQo+ID4gPiA+ID4gNzZiN2M4ZjUz MWRkY2INCj4gPiA+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiA+ICsrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVhay1ydW5fNi5jDQo+ID4gPiA+ID4g PiBAQCAtMCwwICsxLDExIEBADQo+ID4gPiA+ID4gPiArLyogeyBkZy1kbyBydW4gfSAqLw0KPiA+ ID4gPiA+ID4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfZWFybHlfYnJl YWsgfSAqLw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZl Y3RfaW50IH0gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWFkZGl0aW9u YWwtb3B0aW9ucyAiLU9mYXN0IC1zYXZlLXRlbXBzIiB9ICovDQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArI2RlZmluZSBOIDgwMw0KPiA+ID4gPiA+ID4gKyNkZWZpbmUgUCAwDQo+ID4gPiA+ ID4gPiArI2luY2x1ZGUgInZlY3QtZWFybHktYnJlYWstdGVtcGxhdGVfMi5jIg0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiTE9PUCBW RUNUT1JJWkVEIiAidmVjdCIgfSB9ICovDQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrLXJ1bl83LmMNCj4gPiA+ID4gPiBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVhay1ydW5fNy5jDQo+ID4g PiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4g Pg0KPiA+ID4NCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJm OTNkNzdkYmEzMWI5MzhmNmZkOWU4YzcNCj4gPiA+ID4gPiBmNWU0YWNkZTRhZWVjOQ0KPiA+ID4g PiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrLXJ1bl83LmMNCj4gPiA+ID4gPiA+IEBAIC0wLDAgKzEs MTEgQEANCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+ID4gPiA+ID4gPiArLyog eyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9lYXJseV9icmVhayB9ICovDQo+ID4g PiA+ID4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAqLw0K PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICIt T2Zhc3QgLXNhdmUtdGVtcHMiIH0gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsjZGVm aW5lIE4gODAzDQo+ID4gPiA+ID4gPiArI2RlZmluZSBQIDgwMg0KPiA+ID4gPiA+ID4gKyNpbmNs dWRlICJ2ZWN0LWVhcmx5LWJyZWFrLXRlbXBsYXRlXzIuYyINCj4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkxPT1AgVkVDVE9SSVpFRCIg InZlY3QiIH0gfSAqLw0KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3ZlY3QvdmVjdC1lYXJseS1icmVhay1ydW5fOC5jDQo+ID4gPiA+ID4gYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWstcnVuXzguYw0KPiA+ID4gPiA+ID4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiA+IGluZGV4DQo+ID4gPiA+ID4NCj4gPiA+DQo+ IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MTQ5MjU0NjU2MDZi NTRjNjM4MjIxZmZiDQo+ID4gPiA+ID4gOTVhNWU4ZDNiZWU3OTcNCj4gPiA+ID4gPiA+IC0tLSAv ZGV2L251bGwNCj4gPiA+ID4gPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVj dC1lYXJseS1icmVhay1ydW5fOC5jDQo+ID4gPiA+ID4gPiBAQCAtMCwwICsxLDExIEBADQo+ID4g PiA+ID4gPiArLyogeyBkZy1kbyBydW4gfSAqLw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctcmVxdWly ZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfZWFybHlfYnJlYWsgfSAqLw0KPiA+ID4gPiA+ID4gKy8q IHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0gKi8NCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLU9mYXN0IC1zYXZl LXRlbXBzIiB9ICovDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArI2RlZmluZSBOIDgwMw0K PiA+ID4gPiA+ID4gKyNkZWZpbmUgUCA1DQo+ID4gPiA+ID4gPiArI2luY2x1ZGUgInZlY3QtZWFy bHktYnJlYWstdGVtcGxhdGVfMi5jIg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiTE9PUCBWRUNUT1JJWkVEIiAidmVjdCIgfSB9ICov DQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0 LWVhcmx5LWJyZWFrLXJ1bl85LmMNCj4gPiA+ID4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3Zl Y3QvdmVjdC1lYXJseS1icmVhay1ydW5fOS5jDQo+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4gPg0KPiA+ID4NCj4gMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRlMmI5YzMwMTQ1NmVkYThmOWFkN2VhYQ0K PiA+ID4gPiA+IDY3NjA0NTYzZjBhZmVlNw0KPiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFr LXJ1bl85LmMNCj4gPiA+ID4gPiA+IEBAIC0wLDAgKzEsMTEgQEANCj4gPiA+ID4gPiA+ICsvKiB7 IGRnLWRvIHJ1biB9ICovDQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10 YXJnZXQgdmVjdF9lYXJseV9icmVhayB9ICovDQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1aXJl LWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItT2Zhc3QgLXNhdmUtdGVtcHMiIH0gKi8N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsjZGVmaW5lIE4gODAzDQo+ID4gPiA+ID4gPiAr I2RlZmluZSBQIDI3OA0KPiA+ID4gPiA+ID4gKyNpbmNsdWRlICJ2ZWN0LWVhcmx5LWJyZWFrLXRl bXBsYXRlXzIuYyINCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAgIkxPT1AgVkVDVE9SSVpFRCIgInZlY3QiIH0gfSAqLw0KPiA+ID4gPiA+ ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVh ay10ZW1wbGF0ZV8xLmMNCj4gPiA+ID4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVj dC1lYXJseS1icmVhay10ZW1wbGF0ZV8xLmMNCj4gPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+ID4gPiA+ID4gPiBpbmRleA0KPiA+ID4gPiA+DQo+ID4gPg0KPiAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjcwYThlMmE1YTlkYzk3NTZlZGI1NTgwZg0K PiA+ID4gPiA+IDJkZTAyZGRjYzk1ZGU5DQo+ID4gPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4g PiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWst dGVtcGxhdGVfMS5jDQo+ID4gPiA+ID4gPiBAQCAtMCwwICsxLDQ3IEBADQo+ID4gPiA+ID4gPiAr I2lmbmRlZiBODQo+ID4gPiA+ID4gPiArI2RlZmluZSBOIDgwMw0KPiA+ID4gPiA+ID4gKyNlbmRp Zg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyNpZm5kZWYgUA0KPiA+ID4gPiA+ID4gKyNk ZWZpbmUgUCAwDQo+ID4gPiA+ID4gPiArI2VuZGlmDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArdW5zaWduZWQgdmVjdF9hW05dID0gezB9Ow0KPiA+ID4gPiA+ID4gK3Vuc2lnbmVkIHZlY3Rf YltOXSA9IHswfTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtfX2F0dHJpYnV0ZV9fKChu b2lwYSwgbm9pbmxpbmUpKQ0KPiA+ID4gPiA+ID4gK3Vuc2lnbmVkIHRlc3Q0KHVuc2lnbmVkIHgp DQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyB1bnNpZ25lZCByZXQgPSAwOw0KPiA+ID4g PiA+ID4gKyBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykNCj4gPiA+ID4gPiA+ICsgew0KPiA+ ID4gPiA+ID4gKyAgIHZlY3RfYltpXSA9IHggKyBpOw0KPiA+ID4gPiA+ID4gKyAgIGlmICh2ZWN0 X2FbaV0gPiB4KQ0KPiA+ID4gPiA+ID4gKyAgICAgYnJlYWs7DQo+ID4gPiA+ID4gPiArICAgdmVj dF9hW2ldID0geDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgfQ0KPiA+ID4gPiA+ID4g KyByZXR1cm4gcmV0Ow0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICtleHRlcm4gdm9pZCBhYm9ydCAoKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtpbnQg bWFpbiAoKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIGlu dCB4ID0gMTsNCj4gPiA+ID4gPiA+ICsgIGludCBpZHggPSBQOw0KPiA+ID4gPiA+ID4gKyAgdmVj dF9hW2lkeF0gPSB4ICsgMTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIHRlc3Q0KHgp Ow0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaWYgKHZlY3RfYltpZHhdICE9ICh4ICsg aWR4KSkNCj4gPiA+ID4gPiA+ICsgICAgYWJvcnQgKCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArICBpZiAodmVjdF9hW2lkeF0gIT0geCArIDEpDQo+ID4gPiA+ID4gPiArICAgIGFib3J0 ICgpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaWYgKGlkeCA+IDAgJiYgdmVjdF9h W2lkeC0xXSAhPSB4KQ0KPiA+ID4gPiA+ID4gKyAgICBhYm9ydCAoKTsNCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrLXRlbXBsYXRlXzIuYw0KPiA+ID4gPiA+IGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrLXRlbXBsYXRlXzIuYw0KPiA+ ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiA+IGluZGV4DQo+ID4gPiA+ ID4NCj4gPiA+DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQw ZjkyNGQ5MDQ0MzdlNzE1NjdkMjdjYzFmDQo+ID4gPiA+ID4gMTA4OWU1NjA3ZGNhMGQNCj4gPiA+ ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3ZlY3QvdmVjdC1lYXJseS1icmVhay10ZW1wbGF0ZV8yLmMNCj4gPiA+ID4gPiA+IEBAIC0w LDAgKzEsNTAgQEANCj4gPiA+ID4gPiA+ICsjaWZuZGVmIE4NCj4gPiA+ID4gPiA+ICsjZGVmaW5l IE4gODAzDQo+ID4gPiA+ID4gPiArI2VuZGlmDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr I2lmbmRlZiBQDQo+ID4gPiA+ID4gPiArI2RlZmluZSBQIDANCj4gPiA+ID4gPiA+ICsjZW5kaWYN Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICt1bnNpZ25lZCB2ZWN0X2FbTl0gPSB7MH07DQo+ ID4gPiA+ID4gPiArdW5zaWduZWQgdmVjdF9iW05dID0gezB9Ow0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gK19fYXR0cmlidXRlX18oKG5vaXBhLCBub2lubGluZSkpDQo+ID4gPiA+ID4gPiAr dW5zaWduZWQgdGVzdDQodW5zaWduZWQgeCkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiAr IHVuc2lnbmVkIHJldCA9IDA7DQo+ID4gPiA+ID4gPiArIGZvciAoaW50IGkgPSAwOyBpIDwgTjsg aSsrKQ0KPiA+ID4gPiA+ID4gKyB7DQo+ID4gPiA+ID4gPiArICAgdmVjdF9iW2ldID0geCArIGk7 DQo+ID4gPiA+ID4gPiArICAgaWYgKHZlY3RfYVtpXSA+IHgpDQo+ID4gPiA+ID4gPiArICAgICBy ZXR1cm4gaTsNCj4gPiA+ID4gPiA+ICsgICB2ZWN0X2FbaV0gPSB4Ow0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gKyB9DQo+ID4gPiA+ID4gPiArIHJldHVybiByZXQ7DQo+ID4gPiA+ID4gPiAr fQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK2V4dGVybiB2b2lkIGFib3J0ICgpOw0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK2ludCBtYWluICgpDQo+ID4gPiA+ID4gPiArew0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaW50IHggPSAxOw0KPiA+ID4gPiA+ID4gKyAgaW50 IGlkeCA9IFA7DQo+ID4gPiA+ID4gPiArICB2ZWN0X2FbaWR4XSA9IHggKyAxOw0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gKyAgdW5zaWduZWQgcmVzID0gdGVzdDQoeCk7DQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArICBpZiAocmVzICE9IGlkeCkNCj4gPiA+ID4gPiA+ICsgICAgYWJv cnQgKCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBpZiAodmVjdF9iW2lkeF0gIT0g KHggKyBpZHgpKQ0KPiA+ID4gPiA+ID4gKyAgICBhYm9ydCAoKTsNCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsgIGlmICh2ZWN0X2FbaWR4XSAhPSB4ICsgMSkNCj4gPiA+ID4gPiA+ICsgICAg YWJvcnQgKCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBpZiAoaWR4ID4gMCAmJiB2 ZWN0X2FbaWR4LTFdICE9IHgpDQo+ID4gPiA+ID4gPiArICAgIGFib3J0ICgpOw0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfMS5jDQo+ID4gPiA+ID4gYi9nY2MvdGVz dHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfMS5jDQo+ID4gPiA+ID4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4gPg0KPiA+ID4NCj4g MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFlN2Q2NDg5Yjk5YzI1 YjliNGIzZDFjOA0KPiA+ID4gPiA+IDM5Zjk4NTYyYjZkNGRkNw0KPiA+ID4gPiA+ID4gLS0tIC9k ZXYvbnVsbA0KPiA+ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0 LWVhcmx5LWJyZWFrXzEuYw0KPiA+ID4gPiA+ID4gQEAgLTAsMCArMSwyNyBAQA0KPiA+ID4gPiA+ ID4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1aXJl LWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9lYXJseV9icmVhayB9ICovDQo+ID4gPiA+ID4gPiArLyog eyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAqLw0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItT2Zhc3QiIH0gKi8N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAgIkxPT1AgVkVDVE9SSVpFRCIgInZlY3QiIH0gfSAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKyNpZm5kZWYgTg0KPiA+ID4gPiA+ID4gKyNkZWZpbmUgTiA4MDMNCj4gPiA+ID4gPiA+ ICsjZW5kaWYNCj4gPiA+ID4gPiA+ICt1bnNpZ25lZCB2ZWN0X2FbTl07DQo+ID4gPiA+ID4gPiAr dW5zaWduZWQgdmVjdF9iW05dOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK3Vuc2lnbmVk IHRlc3Q0KHVuc2lnbmVkIHgpDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyB1bnNpZ25l ZCByZXQgPSAwOw0KPiA+ID4gPiA+ID4gKyBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykNCj4g PiA+ID4gPiA+ICsgew0KPiA+ID4gPiA+ID4gKyAgIHZlY3RfYltpXSA9IHggKyBpOw0KPiA+ID4g PiA+ID4gKyAgIGlmICh2ZWN0X2FbaV0gPiB4KQ0KPiA+ID4gPiA+ID4gKyAgICAgYnJlYWs7DQo+ ID4gPiA+ID4gPiArICAgdmVjdF9hW2ldID0geDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsgfQ0KPiA+ID4gPiA+ID4gKyByZXR1cm4gcmV0Ow0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4g PiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJl YWtfMTAuYw0KPiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5 LWJyZWFrXzEwLmMNCj4gPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4g PiBpbmRleA0KPiA+ID4gPiA+DQo+ID4gPg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi45ZTRhZDE3NjMyMDJkZmRhYjNlZDc5NjFlDQo+ID4gPiA+ID4gYWQ1MTE0 ZmNjNjFhMTFiDQo+ID4gPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ID4gPiArKysgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfMTAuYw0KPiA+ID4gPiA+ ID4gQEAgLTAsMCArMSwyOCBAQA0KPiA+ID4gPiA+ID4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICov DQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9lYXJs eV9icmVhayB9ICovDQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJn ZXQgdmVjdF9pbnQgfSAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctYWRk aXRpb25hbC1vcHRpb25zICItT2Zhc3QiIH0gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkxPT1AgVkVDVE9SSVpFRCIgInZlY3Qi IH0gfSAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyNpZm5kZWYgTg0KPiA+ID4gPiA+ ID4gKyNkZWZpbmUgTiA4MDMNCj4gPiA+ID4gPiA+ICsjZW5kaWYNCj4gPiA+ID4gPiA+ICt1bnNp Z25lZCB2ZWN0X2FbTl07DQo+ID4gPiA+ID4gPiArdW5zaWduZWQgdmVjdF9iW05dOw0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gK3Vuc2lnbmVkIHRlc3Q0KHVuc2lnbmVkIHgsaW50IHksIGlu dCB6KQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgdW5zaWduZWQgcmV0ID0gMDsNCj4g PiA+ID4gPiA+ICsgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspDQo+ID4gPiA+ID4gPiArIHsN Cj4gPiA+ID4gPiA+ICsgICB2ZWN0X2JbaV0gPSB4ICsgaTsNCj4gPiA+ID4gPiA+ICsgICBpZiAo dmVjdF9hW2ldID4geCkNCj4gPiA+ID4gPiA+ICsgICAgIGJyZWFrOw0KPiA+ID4gPiA+ID4gKyAg IHZlY3RfYVtpXSA9IHg7DQo+ID4gPiA+ID4gPiArIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsgcmV0ID0geCArIHkgKiB6Ow0KPiA+ID4gPiA+ID4gKyByZXR1cm4gcmV0Ow0KPiA+ID4g PiA+ID4gK30NCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92 ZWN0L3ZlY3QtZWFybHktYnJlYWtfMTEuYw0KPiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrXzExLmMNCj4gPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gPiA+ID4gPiBpbmRleA0KPiA+ID4gPiA+DQo+ID4gPg0KPiAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjEzZGQ5OTA5ZmIwOTI3OGRkOTJhODFh DQo+ID4gPiA+ID4gMjRlZjg1NDk5NGE5ODkwDQo+ID4gPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJl YWtfMTEuYw0KPiA+ID4gPiA+ID4gQEAgLTAsMCArMSwzMSBAQA0KPiA+ID4gPiA+ID4gKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovDQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2 ZS10YXJnZXQgdmVjdF9lYXJseV9icmVhayB9ICovDQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1 aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItT2Zhc3QiIH0gKi8NCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkxPT1Ag VkVDVE9SSVpFRCIgInZlY3QiIH0gfSAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyNp Zm5kZWYgTg0KPiA+ID4gPiA+ID4gKyNkZWZpbmUgTiA4MDMNCj4gPiA+ID4gPiA+ICsjZW5kaWYN Cj4gPiA+ID4gPiA+ICt1bnNpZ25lZCB2ZWN0X2FbTl07DQo+ID4gPiA+ID4gPiArdW5zaWduZWQg dmVjdF9iW05dOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK3Vuc2lnbmVkIHRlc3Q0KHVu c2lnbmVkIHgsIGludCB5KQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgdW5zaWduZWQg cmV0ID0gMDsNCj4gPiA+ID4gPiA+ICtmb3IgKGludCBvID0gMDsgbyA8IHk7IG8rKykNCj4gPiA+ ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArIHJldCArPSBvOw0KPiA+ID4gPiA+ID4gKyBmb3IgKGlu dCBpID0gMDsgaSA8IE47IGkrKykNCj4gPiA+ID4gPiA+ICsgew0KPiA+ID4gPiA+ID4gKyAgIHZl Y3RfYltpXSA9IHggKyBpOw0KPiA+ID4gPiA+ID4gKyAgIGlmICh2ZWN0X2FbaV0gPiB4KQ0KPiA+ ID4gPiA+ID4gKyAgICAgYnJlYWs7DQo+ID4gPiA+ID4gPiArICAgdmVjdF9hW2ldID0geDsNCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgfQ0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ ICsgcmV0dXJuIHJldDsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrXzEyLmMNCj4gPiA+ID4g PiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVha18xMi5jDQo+ID4g PiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4g Pg0KPiA+ID4NCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Mx MGYzMjM4ZjFjYjhlMTMwN2UwMjRhM2UNCj4gPiA+ID4gPiBiY2I1YzI1YTM5ZDFiMg0KPiA+ID4g PiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrXzEyLmMNCj4gPiA+ID4gPiA+IEBAIC0wLDAgKzEsMzEg QEANCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiA+ID4gPiA+ID4gKy8q IHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfZWFybHlfYnJlYWsgfSAqLw0KPiA+ ID4gPiA+ID4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0gKi8N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAi LU9mYXN0IiB9ICovDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wICJMT09QIFZFQ1RPUklaRUQiICJ2ZWN0IiB9IH0gKi8NCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsjaWZuZGVmIE4NCj4gPiA+ID4gPiA+ICsjZGVmaW5lIE4gODAz DQo+ID4gPiA+ID4gPiArI2VuZGlmDQo+ID4gPiA+ID4gPiArdW5zaWduZWQgdmVjdF9hW05dOw0K PiA+ID4gPiA+ID4gK3Vuc2lnbmVkIHZlY3RfYltOXTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICt1bnNpZ25lZCB0ZXN0NCh1bnNpZ25lZCB4LCBpbnQgeSkNCj4gPiA+ID4gPiA+ICt7DQo+ ID4gPiA+ID4gPiArIHVuc2lnbmVkIHJldCA9IDA7DQo+ID4gPiA+ID4gPiArZm9yIChpbnQgbyA9 IDA7IG8gPCB5OyBvKyspDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyByZXQgKz0gbzsN Cj4gPiA+ID4gPiA+ICsgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspDQo+ID4gPiA+ID4gPiAr IHsNCj4gPiA+ID4gPiA+ICsgICB2ZWN0X2JbaV0gPSB4ICsgaTsNCj4gPiA+ID4gPiA+ICsgICBp ZiAodmVjdF9hW2ldID4geCkNCj4gPiA+ID4gPiA+ICsgICAgIHJldHVybiB2ZWN0X2FbaV07DQo+ ID4gPiA+ID4gPiArICAgdmVjdF9hW2ldID0geDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsgfQ0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsgcmV0dXJuIHJldDsNCj4gPiA+ID4g PiA+ICt9DQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVj dC92ZWN0LWVhcmx5LWJyZWFrXzEzLmMNCj4gPiA+ID4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3ZlY3QvdmVjdC1lYXJseS1icmVha18xMy5jDQo+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4gPg0KPiA+ID4NCj4gMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjk2N2I3Mzk1ZWQ3YzE5ZTM4YTQzNmQ2ZQ0K PiA+ID4gPiA+IGRjZmU3YzE1ODBjNzExMw0KPiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFr XzEzLmMNCj4gPiA+ID4gPiA+IEBAIC0wLDAgKzEsMjcgQEANCj4gPiA+ID4gPiA+ICsvKiB7IGRn LWRvIGNvbXBpbGUgfSAqLw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUt dGFyZ2V0IHZlY3RfZWFybHlfYnJlYWsgfSAqLw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctcmVxdWly ZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLU9mYXN0IiB9ICovDQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJMT09QIFZF Q1RPUklaRUQiICJ2ZWN0IiB9IH0gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsjaWZu ZGVmIE4NCj4gPiA+ID4gPiA+ICsjZGVmaW5lIE4gODAzDQo+ID4gPiA+ID4gPiArI2VuZGlmDQo+ ID4gPiA+ID4gPiArdW5zaWduZWQgdmVjdF9hW05dOw0KPiA+ID4gPiA+ID4gK3Vuc2lnbmVkIHZl Y3RfYltOXTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICt1bnNpZ25lZCB0ZXN0NCh1bnNp Z25lZCB4KQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgdW5zaWduZWQgcmV0ID0gMDsN Cj4gPiA+ID4gPiA+ICsgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspDQo+ID4gPiA+ID4gPiAr IHsNCj4gPiA+ID4gPiA+ICsgICB2ZWN0X2JbaV0gPSB4ICsgaTsNCj4gPiA+ID4gPiA+ICsgICBp ZiAodmVjdF9hW2ldID4geCkNCj4gPiA+ID4gPiA+ICsgICAgIHJldHVybiB2ZWN0X2FbaV0gKiB4 Ow0KPiA+ID4gPiA+ID4gKyAgIHZlY3RfYVtpXSA9IHg7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArIH0NCj4gPiA+ID4gPiA+ICsgcmV0dXJuIHJldDsNCj4gPiA+ID4gPiA+ICt9DQo+ID4g PiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5 LWJyZWFrXzE0LmMNCj4gPiA+ID4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1l YXJseS1icmVha18xNC5jDQo+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4g PiA+ID4gaW5kZXgNCj4gPiA+ID4gPg0KPiA+ID4NCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uMDNjY2U1Y2Y2Y2FkZWNiNTIwYjQ2YmU2NjYNCj4gPiA+ID4gPiBi ZjYwOGUzYmM2YTUxMQ0KPiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiA+ID4gKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrXzE0LmMNCj4gPiA+ ID4gPiA+IEBAIC0wLDAgKzEsMjUgQEANCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3Rf ZWFybHlfYnJlYWsgfSAqLw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUt dGFyZ2V0IHZlY3RfaW50IH0gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRn LWFkZGl0aW9uYWwtb3B0aW9ucyAiLU9mYXN0IiB9ICovDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJMT09QIFZFQ1RPUklaRUQiICJ2 ZWN0IiB9IH0gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsjZGVmaW5lIE4gODAzDQo+ ID4gPiA+ID4gPiArdW5zaWduZWQgdmVjdF9hW05dOw0KPiA+ID4gPiA+ID4gK3Vuc2lnbmVkIHZl Y3RfYltOXTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtpbnQgdGVzdDQodW5zaWduZWQg eCkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArIHVuc2lnbmVkIHJldCA9IDA7DQo+ID4g PiA+ID4gPiArIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKQ0KPiA+ID4gPiA+ID4gKyB7DQo+ ID4gPiA+ID4gPiArICAgdmVjdF9iW2ldID0geCArIGk7DQo+ID4gPiA+ID4gPiArICAgaWYgKHZl Y3RfYVtpXSA+IHgpDQo+ID4gPiA+ID4gPiArICAgICByZXR1cm4gaTsNCj4gPiA+ID4gPiA+ICsg ICB2ZWN0X2FbaV0gKz0geCAqIHZlY3RfYltpXTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsgfQ0KPiA+ID4gPiA+ID4gKyByZXR1cm4gcmV0Ow0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4g PiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJl YWtfMTUuYw0KPiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5 LWJyZWFrXzE1LmMNCj4gPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4g PiBpbmRleA0KPiA+ID4gPiA+DQo+ID4gPg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi5kZWM2ODcyZTExMTVmZjY2Njk1ZjVhNTAwZmYNCj4gPiA+ID4gPiBhN2Nh MDFjMGY4ZDNhDQo+ID4gPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ID4gPiArKysgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfMTUuYw0KPiA+ID4gPiA+ ID4gQEAgLTAsMCArMSwyNSBAQA0KPiA+ID4gPiA+ID4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICov DQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9lYXJs eV9icmVhayB9ICovDQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJn ZXQgdmVjdF9pbnQgfSAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctYWRk aXRpb25hbC1vcHRpb25zICItT2Zhc3QiIH0gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkxPT1AgVkVDVE9SSVpFRCIgInZlY3Qi IH0gfSAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyNkZWZpbmUgTiA4MDMNCj4gPiA+ ID4gPiA+ICt1bnNpZ25lZCB2ZWN0X2FbTl07DQo+ID4gPiA+ID4gPiArdW5zaWduZWQgdmVjdF9i W05dOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK2ludCB0ZXN0NCh1bnNpZ25lZCB4KQ0K PiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgaW50IHJldCA9IDA7DQo+ID4gPiA+ID4gPiAr IGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKQ0KPiA+ID4gPiA+ID4gKyB7DQo+ID4gPiA+ID4g PiArICAgdmVjdF9iW2ldID0geCArIGk7DQo+ID4gPiA+ID4gPiArICAgaWYgKHZlY3RfYVtpXSA+ IHgpDQo+ID4gPiA+ID4gPiArICAgICByZXR1cm4gaTsNCj4gPiA+ID4gPiA+ICsgICB2ZWN0X2Fb aV0gKz0geCAqIHZlY3RfYltpXTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgfQ0KPiA+ ID4gPiA+ID4gKyByZXR1cm4gcmV0Ow0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+IGRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfMi5jDQo+ ID4gPiA+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfMi5j DQo+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gaW5kZXgNCj4g PiA+ID4gPg0KPiA+ID4NCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uNzI2OGY2YWUyNDg1ZDAyNzRmZDg1ZWE1M2MNCj4gPiA+ID4gPiBjMWU0NGVmNGI4NGQ1Yw0K PiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrXzIuYw0KPiA+ID4gPiA+ID4gQEAgLTAsMCAr MSwyNyBAQA0KPiA+ID4gPiA+ID4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ID4gPiA+ID4g PiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9lYXJseV9icmVhayB9ICov DQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQg fSAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRp b25zICItT2Zhc3QiIH0gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAgIkxPT1AgVkVDVE9SSVpFRCIgInZlY3QiIH0gfSAqLw0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxjb21wbGV4Lmg+DQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArI2RlZmluZSBOIDEwMjQNCj4gPiA+ID4gPiA+ICtjb21wbGV4IGRv dWJsZSB2ZWN0X2FbTl07DQo+ID4gPiA+ID4gPiArY29tcGxleCBkb3VibGUgdmVjdF9iW05dOw0K PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK2NvbXBsZXggZG91YmxlIHRlc3Q0KGNvbXBsZXgg ZG91YmxlIHgpDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyBjb21wbGV4IGRvdWJsZSBy ZXQgPSAwOw0KPiA+ID4gPiA+ID4gKyBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykNCj4gPiA+ ID4gPiA+ICsgew0KPiA+ID4gPiA+ID4gKyAgIHZlY3RfYltpXSArPSB4ICsgaTsNCj4gPiA+ID4g PiA+ICsgICBpZiAodmVjdF9hW2ldID09IHgpDQo+ID4gPiA+ID4gPiArICAgICByZXR1cm4gaTsN Cj4gPiA+ID4gPiA+ICsgICB2ZWN0X2FbaV0gKz0geCAqIHZlY3RfYltpXTsNCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICsgfQ0KPiA+ID4gPiA+ID4gKyByZXR1cm4gcmV0Ow0KPiA+ID4gPiA+ ID4gK30NCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0 L3ZlY3QtZWFybHktYnJlYWtfMy5jDQo+ID4gPiA+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92 ZWN0L3ZlY3QtZWFybHktYnJlYWtfMy5jDQo+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4gPg0KPiA+ID4NCj4gMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M2ZDI4YmQyZDZlNmU3OTQxNDZiYWY4OQ0KPiA+ ID4gPiA+IGU0M2MzYjcwMjkzYjdkOQ0KPiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4g PiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrXzMu Yw0KPiA+ID4gPiA+ID4gQEAgLTAsMCArMSwyMCBAQA0KPiA+ID4gPiA+ID4gKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovDQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJn ZXQgdmVjdF9lYXJseV9icmVhayB9ICovDQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1aXJlLWVm ZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g Ky8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItT2Zhc3QiIH0gKi8NCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtbm90ICJMT09QIFZF Q1RPUklaRUQiICJ2ZWN0IiB9IH0NCj4gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICt1 bnNpZ25lZCB0ZXN0NChjaGFyIHgsIGNoYXIgKnZlY3QsIGludCBuKQ0KPiA+ID4gPiA+ID4gK3sN Cj4gPiA+ID4gPiA+ICsgdW5zaWduZWQgcmV0ID0gMDsNCj4gPiA+ID4gPiA+ICsgZm9yIChpbnQg aSA9IDA7IGkgPCBuOyBpKyspDQo+ID4gPiA+ID4gPiArIHsNCj4gPiA+ID4gPiA+ICsgICBpZiAo dmVjdFtpXSA+IHgpDQo+ID4gPiA+ID4gPiArICAgICByZXR1cm4gMTsNCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICsgICB2ZWN0W2ldID0geDsNCj4gPiA+ID4gPiA+ICsgfQ0KPiA+ID4gPiA+ ID4gKyByZXR1cm4gcmV0Ow0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfNC5jDQo+ID4gPiA+ ID4gYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfNC5jDQo+ID4g PiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4g Pg0KPiA+ID4NCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE2 YzU2ZmFmMzMwNDQ5YmYxOTY5YjdlNTENCj4gPiA+ID4gPiBmZjFlOTQyNzBkYzg2MQ0KPiA+ID4g PiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrXzQuYw0KPiA+ID4gPiA+ID4gQEAgLTAsMCArMSwyMyBA QA0KPiA+ID4gPiA+ID4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ID4gPiA+ID4gPiArLyog eyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9lYXJseV9icmVhayB9ICovDQo+ID4g PiA+ID4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAqLw0K PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICIt T2Zhc3QiIH0gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAtbm90ICJMT09QIFZFQ1RPUklaRUQiICJ2ZWN0IiB9IH0NCj4gKi8NCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsjZGVmaW5lIE4gMTAyNA0KPiA+ID4gPiA+ID4gK3Vu c2lnbmVkIHZlY3RbTl07DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArdW5zaWduZWQgdGVz dDQodW5zaWduZWQgeCkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArIHVuc2lnbmVkIHJl dCA9IDA7DQo+ID4gPiA+ID4gPiArIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKQ0KPiA+ID4g PiA+ID4gKyB7DQo+ID4gPiA+ID4gPiArICAgaWYgKGkgPiAxNiAmJiB2ZWN0W2ldID4geCkNCj4g PiA+ID4gPiA+ICsgICAgIGJyZWFrOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgIHZl Y3RbaV0gPSB4Ow0KPiA+ID4gPiA+ID4gKyB9DQo+ID4gPiA+ID4gPiArIHJldHVybiByZXQ7DQo+ ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3ZlY3QvdmVjdC1lYXJseS1icmVha181LmMNCj4gPiA+ID4gPiBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVha181LmMNCj4gPiA+ID4gPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4gPiA+ID4gPiBpbmRleA0KPiA+ID4gPiA+DQo+ID4gPg0KPiAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTM2ZDY5NzlkYjFmZDFmOTdiYTJh MjkwZg0KPiA+ID4gPiA+IDc4YWMzYjg0ZjZkZTI0DQo+ID4gPiA+ID4gPiAtLS0gL2Rldi9udWxs DQo+ID4gPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHkt YnJlYWtfNS5jDQo+ID4gPiA+ID4gPiBAQCAtMCwwICsxLDI0IEBADQo+ID4gPiA+ID4gPiArLyog eyBkZy1kbyBjb21waWxlIH0gKi8NCj4gPiA+ID4gPiA+ICsvKiB7IGRnLXJlcXVpcmUtZWZmZWN0 aXZlLXRhcmdldCB2ZWN0X2Vhcmx5X2JyZWFrIH0gKi8NCj4gPiA+ID4gPiA+ICsvKiB7IGRnLXJl cXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2ludCB9ICovDQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1PZmFzdCIgfSAqLw0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiTE9P UCBWRUNUT1JJWkVEIiAidmVjdCIgfSB9ICovDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr I2RlZmluZSBOIDEwMjQNCj4gPiA+ID4gPiA+ICt1bnNpZ25lZCB2ZWN0X2FbTl07DQo+ID4gPiA+ ID4gPiArdW5zaWduZWQgdmVjdF9iW05dOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK3Vu c2lnbmVkIHRlc3Q0KHVuc2lnbmVkIHgpDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyB1 bnNpZ25lZCByZXQgPSAwOw0KPiA+ID4gPiA+ID4gKyBmb3IgKGludCBpID0gMDsgaSA8IE47IGkr KykNCj4gPiA+ID4gPiA+ICsgew0KPiA+ID4gPiA+ID4gKyAgIHZlY3RfYltpXSA9IHggKyBpOw0K PiA+ID4gPiA+ID4gKyAgIGlmICh2ZWN0X2FbaV0gPiB4KQ0KPiA+ID4gPiA+ID4gKyAgICAgcmV0 dXJuIHZlY3RfYVtpXTsNCj4gPiA+ID4gPiA+ICsgICB2ZWN0X2FbaV0gPSB4Ow0KPiA+ID4gPiA+ ID4gKyB9DQo+ID4gPiA+ID4gPiArIHJldHVybiByZXQ7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4g PiA+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1i cmVha182LmMNCj4gPiA+ID4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1lYXJs eS1icmVha182LmMNCj4gPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4g PiBpbmRleA0KPiA+ID4gPiA+DQo+ID4gPg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi4wOTYzMmQ5YWZkYTdlMDdmMWE4NDE3NTE0ZQ0KPiA+ID4gPiA+IGY3NzM1 NmYwMDA0NWJkDQo+ID4gPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ID4gPiArKysgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfNi5jDQo+ID4gPiA+ID4g PiBAQCAtMCwwICsxLDI2IEBADQo+ID4gPiA+ID4gPiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8N Cj4gPiA+ID4gPiA+ICsvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2Vhcmx5 X2JyZWFrIH0gKi8NCj4gPiA+ID4gPiA+ICsvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdl dCB2ZWN0X2ludCB9ICovDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyogeyBkZy1hZGRp dGlvbmFsLW9wdGlvbnMgIi1PZmFzdCIgfSAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgIkxPT1AgVkVDVE9SSVpFRCIgInZl Y3QiIH0gfQ0KPiAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyNkZWZpbmUgTiAxMDI0 DQo+ID4gPiA+ID4gPiArdW5zaWduZWQgdmVjdF9hW05dOw0KPiA+ID4gPiA+ID4gK3Vuc2lnbmVk IHZlY3RfYltOXTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICt1bnNpZ25lZCB0ZXN0NCh1 bnNpZ25lZCB4KQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgdW5zaWduZWQgcmV0ID0g MDsNCj4gPiA+ID4gPiA+ICsgZm9yIChpbnQgaSA9IDA7IGkgPCAoTi8yKTsgaSs9MikNCj4gPiA+ ID4gPiA+ICsgew0KPiA+ID4gPiA+ID4gKyAgIHZlY3RfYltpXSA9IHggKyBpOw0KPiA+ID4gPiA+ ID4gKyAgIHZlY3RfYltpKzFdID0geCArIGkrMTsNCj4gPiA+ID4gPiA+ICsgICBpZiAodmVjdF9h W2ldID4geCB8fCB2ZWN0X2FbaSsxXSA+IHgpDQo+ID4gPiA+ID4gPiArICAgICBicmVhazsNCj4g PiA+ID4gPiA+ICsgICB2ZWN0X2FbaV0gKz0geCAqIHZlY3RfYltpXTsNCj4gPiA+ID4gPiA+ICsg ICB2ZWN0X2FbaSsxXSArPSB4ICogdmVjdF9iW2krMV07DQo+ID4gPiA+ID4gPiArIH0NCj4gPiA+ ID4gPiA+ICsgcmV0dXJuIHJldDsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiBkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrXzcuYw0KPiA+ ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5LWJyZWFrXzcuYw0K PiA+ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiA+IGluZGV4DQo+ID4g PiA+ID4NCj4gPiA+DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LjEwZmQ4YjQyOTUyYzQyZjNkM2EwMTRkYTEwDQo+ID4gPiA+ID4gMzkzMWNhMzk0NDIzZDUNCj4g PiA+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVha183LmMNCj4gPiA+ID4gPiA+IEBAIC0wLDAgKzEs MjcgQEANCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiA+ID4gPiA+ID4g Ky8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfZWFybHlfYnJlYWsgfSAqLw0K PiA+ID4gPiA+ID4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0g Ki8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9u cyAiLU9mYXN0IiB9ICovDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wICJMT09QIFZFQ1RPUklaRUQiICJ2ZWN0IiB9IH0gKi8NCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8Y29tcGxleC5oPg0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKyNkZWZpbmUgTiAxMDI0DQo+ID4gPiA+ID4gPiArY29tcGxleCBkb3Vi bGUgdmVjdF9hW05dOw0KPiA+ID4gPiA+ID4gK2NvbXBsZXggZG91YmxlIHZlY3RfYltOXTsNCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtjb21wbGV4IGRvdWJsZSB0ZXN0NChjb21wbGV4IGRv dWJsZSB4KQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgY29tcGxleCBkb3VibGUgcmV0 ID0gMDsNCj4gPiA+ID4gPiA+ICsgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspDQo+ID4gPiA+ ID4gPiArIHsNCj4gPiA+ID4gPiA+ICsgICB2ZWN0X2JbaV0gKz0geCArIGk7DQo+ID4gPiA+ID4g PiArICAgaWYgKHZlY3RfYVtpXSA9PSB4KQ0KPiA+ID4gPiA+ID4gKyAgICAgYnJlYWs7DQo+ID4g PiA+ID4gPiArICAgdmVjdF9hW2ldICs9IHggKiB2ZWN0X2JbaV07DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArIH0NCj4gPiA+ID4gPiA+ICsgcmV0dXJuIHJldDsNCj4gPiA+ID4gPiA+ICt9 DQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0 LWVhcmx5LWJyZWFrXzguYw0KPiA+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92 ZWN0LWVhcmx5LWJyZWFrXzguYw0KPiA+ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g PiA+ID4gPiA+IGluZGV4DQo+ID4gPiA+ID4NCj4gPiA+DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlNzA2YjI5NTJjZmNlY2YyMDU0NmE2N2E3DQo+ID4gPiA+ ID4gMzViOGQ5MDJjYmI2MDcNCj4gPiA+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiA+ ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1lYXJseS1icmVha184LmMNCj4g PiA+ID4gPiA+IEBAIC0wLDAgKzEsMjcgQEANCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWRvIGNvbXBp bGUgfSAqLw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZl Y3RfZWFybHlfYnJlYWsgfSAqLw0KPiA+ID4gPiA+ID4gKy8qIHsgZGctcmVxdWlyZS1lZmZlY3Rp dmUtdGFyZ2V0IHZlY3RfaW50IH0gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKiB7 IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLU9mYXN0IiB9ICovDQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJMT09QIFZFQ1RPUklaRUQi ICJ2ZWN0IiB9IH0gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8Y29t cGxleC5oPg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyNkZWZpbmUgTiAxMDI0DQo+ID4g PiA+ID4gPiArY2hhciB2ZWN0X2FbTl07DQo+ID4gPiA+ID4gPiArY2hhciB2ZWN0X2JbTl07DQo+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArY2hhciB0ZXN0NChjaGFyIHgsIGNoYXIgKiByZXN0 cmljdCByZXMpDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyBjaGFyIHJldCA9IDA7DQo+ ID4gPiA+ID4gPiArIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKQ0KPiA+ID4gPiA+ID4gKyB7 DQo+ID4gPiA+ID4gPiArICAgdmVjdF9iW2ldICs9IHggKyBpOw0KPiA+ID4gPiA+ID4gKyAgIGlm ICh2ZWN0X2FbaV0gPiB4KQ0KPiA+ID4gPiA+ID4gKyAgICAgYnJlYWs7DQo+ID4gPiA+ID4gPiAr ICAgdmVjdF9hW2ldICs9IHggKiB2ZWN0X2JbaV07DQo+ID4gPiA+ID4gPiArICAgcmVzW2ldICo9 IHZlY3RfYltpXTsNCj4gPiA+ID4gPiA+ICsgfQ0KPiA+ID4gPiA+ID4gKyByZXR1cm4gcmV0Ow0K PiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfOS5jDQo+ID4gPiA+ID4gYi9nY2MvdGVzdHN1aXRl L2djYy5kZy92ZWN0L3ZlY3QtZWFybHktYnJlYWtfOS5jDQo+ID4gPiA+ID4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4gPg0KPiA+ID4NCj4gMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUwZjAyZjNjN2NhZWY0NTdhZGJl MWJlODANCj4gPiA+ID4gPiAyYmJhNTFjZDgxODM5Mw0KPiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVs bA0KPiA+ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWVhcmx5 LWJyZWFrXzkuYw0KPiA+ID4gPiA+ID4gQEAgLTAsMCArMSwyNyBAQA0KPiA+ID4gPiA+ID4gKy8q IHsgZGctZG8gY29tcGlsZSB9ICovDQo+ID4gPiA+ID4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVj dGl2ZS10YXJnZXQgdmVjdF9lYXJseV9icmVhayB9ICovDQo+ID4gPiA+ID4gPiArLyogeyBkZy1y ZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItT2Zhc3QiIH0gKi8NCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtbm90 ICJMT09QIFZFQ1RPUklaRUQiICJ2ZWN0IiB9IH0NCj4gKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ICsjaWZuZGVmIE4NCj4gPiA+ID4gPiA+ICsjZGVmaW5lIE4gODAzDQo+ID4gPiA+ID4g PiArI2VuZGlmDQo+ID4gPiA+ID4gPiArdW5zaWduZWQgdmVjdF9hW05dOw0KPiA+ID4gPiA+ID4g K3Vuc2lnbmVkIHZlY3RfYltOXTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICt1bnNpZ25l ZCB0ZXN0NCh1bnNpZ25lZCB4KQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgdW5zaWdu ZWQgcmV0ID0gMDsNCj4gPiA+ID4gPiA+ICsgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspDQo+ ID4gPiA+ID4gPiArIHsNCj4gPiA+ID4gPiA+ICsgICB2ZWN0X2FbaV0gPSB4ICsgaTsNCj4gPiA+ ID4gPiA+ICsgICBpZiAodmVjdF9hW2ldID4geCkNCj4gPiA+ID4gPiA+ICsgICAgIGJyZWFrOw0K PiA+ID4gPiA+ID4gKyAgIHZlY3RfYVtpXSA9IHg7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArIH0NCj4gPiA+ID4gPiA+ICsgcmV0dXJuIHJldDsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LXN1cHBvcnRzLmV4cA0K PiA+ID4gYi9nY2MvdGVzdHN1aXRlL2xpYi90YXJnZXQtDQo+ID4gPiA+ID4gc3VwcG9ydHMuZXhw DQo+ID4gPiA+ID4gPiBpbmRleA0KPiA+ID4gPiA+DQo+ID4gPg0KPiBjY2JiZWU4NDdmNzU1ZDZm MzAxMTZkNWIzOGU0MDI3YTk5OGI0OGZkLi41Y2JmNTRiZDJhMjNkZmRjNWRjN2IxNDhiDQo+ID4g PiA+ID4gMGRjNmVkNGM2MzgxNGFlIDEwMDY0NA0KPiA+ID4gPiA+ID4gLS0tIGEvZ2NjL3Rlc3Rz dWl0ZS9saWIvdGFyZ2V0LXN1cHBvcnRzLmV4cA0KPiA+ID4gPiA+ID4gKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9saWIvdGFyZ2V0LXN1cHBvcnRzLmV4cA0KPiA+ID4gPiA+ID4gQEAgLTM2NDUsNiArMzY0 NSwxOCBAQCBwcm9jIGNoZWNrX2VmZmVjdGl2ZV90YXJnZXRfdmVjdF9pbnQgeyB9DQo+IHsNCj4g PiA+ID4gPiA+ICAJfX1dDQo+ID4gPiA+ID4gPiAgfQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ICsjIFJldHVybiAxIGlmIHRoZSB0YXJnZXQgc3VwcG9ydHMgaGFyZHdhcmUgdmVjdG9yaXphdGlv biBvZiBlYXJseQ0KPiA+ID4gYnJlYWtzLA0KPiA+ID4gPiA+ID4gKyMgMCBvdGhlcndpc2UuDQo+ ID4gPiA+ID4gPiArIw0KPiA+ID4gPiA+ID4gKyMgVGhpcyB3b24ndCBjaGFuZ2UgZm9yIGRpZmZl cmVudCBzdWJ0YXJnZXRzIHNvIGNhY2hlIHRoZSByZXN1bHQuDQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArcHJvYyBjaGVja19lZmZlY3RpdmVfdGFyZ2V0X3ZlY3RfZWFybHlfYnJlYWsgeyB9 IHsNCj4gPiA+ID4gPiA+ICsgICAgcmV0dXJuIFtjaGVja19jYWNoZWRfZWZmZWN0aXZlX3Rhcmdl dF9pbmRleGVkDQo+IHZlY3RfZWFybHlfYnJlYWsgew0KPiA+ID4gPiA+ID4gKyAgICAgIGV4cHIg ew0KPiA+ID4gPiA+ID4gKwkoW2lzdGFyZ2V0IGFhcmNoNjQqLSotKl0NCj4gPiA+ID4gPiA+ICsJ ICYmIFtjaGVja19lZmZlY3RpdmVfdGFyZ2V0X2FhcmNoNjRfc3ZlXSkNCj4gPiA+ID4gPiA+ICsJ fX1dDQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gICMgUmV0dXJuIDEgaWYgdGhlIHRhcmdl dCBzdXBwb3J0cyBoYXJkd2FyZSB2ZWN0b3JpemF0aW9uIG9mIGNvbXBsZXgNCj4gPiA+ID4gPiBh ZGRpdGlvbnMgb2YNCj4gPiA+ID4gPiA+ICAjIGJ5dGUsIDAgb3RoZXJ3aXNlLg0KPiA+ID4gPiA+ ID4gICMNCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1zY2FsYXItZXZvbHV0aW9u LmggYi9nY2MvdHJlZS1zY2FsYXItZXZvbHV0aW9uLmgNCj4gPiA+ID4gPiA+IGluZGV4DQo+ID4g PiA+ID4NCj4gPiA+DQo+IDBmOTAyMDdiYzczM2RiM2NmODU5NzlkOWIwYjk2MmFlZmEwODMxZDYu LjVhZjdkMmJiYTBkNjIxOTU3MDRhOGQ0MWUNCj4gPiA+ID4gPiBmNmU2MDAzMjcxNjk3NzAgMTAw NjQ0DQo+ID4gPiA+ID4gPiAtLS0gYS9nY2MvdHJlZS1zY2FsYXItZXZvbHV0aW9uLmgNCj4gPiA+ ID4gPiA+ICsrKyBiL2djYy90cmVlLXNjYWxhci1ldm9sdXRpb24uaA0KPiA+ID4gPiA+ID4gQEAg LTIzLDYgKzIzLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElm IG5vdA0KPiBzZWUNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgZXh0ZXJuIHRyZWUgbnVtYmVy X29mX2xhdGNoX2V4ZWN1dGlvbnMgKGNsYXNzIGxvb3AgKik7DQo+ID4gPiA+ID4gPiAgZXh0ZXJu IGdjb25kICpnZXRfbG9vcF9leGl0X2NvbmRpdGlvbiAoY29uc3QgY2xhc3MgbG9vcCAqKTsNCj4g PiA+ID4gPiA+ICtleHRlcm4gZ2NvbmQgKmdldF9lZGdlX2NvbmRpdGlvbiAoZWRnZSk7DQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gIGV4dGVybiB2b2lkIHNjZXZfaW5pdGlhbGl6ZSAodm9pZCk7 DQo+ID4gPiA+ID4gPiAgZXh0ZXJuIGJvb2wgc2Nldl9pbml0aWFsaXplZF9wICh2b2lkKTsNCj4g PiA+ID4gPiA+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1zY2FsYXItZXZvbHV0aW9uLmNjIGIvZ2Nj L3RyZWUtc2NhbGFyLQ0KPiBldm9sdXRpb24uY2MNCj4gPiA+ID4gPiA+IGluZGV4DQo+ID4gPiA+ ID4NCj4gPiA+DQo+IDdlMmEzZTk4NjYxOWRlODdlNGFlOWRhZjE2MTk4YmUxZjEzYjkxN2MuLjMw MTI4NzFkZDdmOWE3ZDE4OTdmOTZhMjkNCj4gPiA+ID4gPiBiMWIwYjI4ZDkwY2I2M2YgMTAwNjQ0 DQo+ID4gPiA+ID4gPiAtLS0gYS9nY2MvdHJlZS1zY2FsYXItZXZvbHV0aW9uLmNjDQo+ID4gPiA+ ID4gPiArKysgYi9nY2MvdHJlZS1zY2FsYXItZXZvbHV0aW9uLmNjDQo+ID4gPiA+ID4gPiBAQCAt ODg0LDcgKzg4NCw3IEBAIHNjZXZfZGZzOjphZGRfdG9fZXZvbHV0aW9uICh0cmVlDQo+IGNocmVj X2JlZm9yZSwNCj4gPiA+ID4gPiBlbnVtIHRyZWVfY29kZSBjb2RlLA0KPiA+ID4gPiA+ID4gICAg cmV0dXJuIHJlczsNCj4gPiA+ID4gPiA+ICB9DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLQ0K PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAvKiBGb2xs b3cgdGhlIHNzYSBlZGdlIGludG8gdGhlIGJpbmFyeSBleHByZXNzaW9uIFJIUzAgQ09ERSBSSFMx Lg0KPiA+ID4gPiA+ID4gICAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJvbmdseSBjb25uZWN0ZWQg Y29tcG9uZW50IGhhcyBiZWVuIGZvdW5kLg0KPiAqLw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ IEBAIC0xMjk1LDggKzEyOTUsMTUgQEAgdGFpbF9yZWN1cnNlOg0KPiA+ID4gPiA+ID4gIGdjb25k ICoNCj4gPiA+ID4gPiA+ICBnZXRfbG9vcF9leGl0X2NvbmRpdGlvbiAoY29uc3QgY2xhc3MgbG9v cCAqbG9vcCkNCj4gPiA+ID4gPiA+ICB7DQo+ID4gPiA+ID4gPiArICByZXR1cm4gZ2V0X2VkZ2Vf Y29uZGl0aW9uIChub3JtYWxfZXhpdCAobG9vcCkpOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsvKiBJZiB0aGUgc3RhdGVtZW50IGp1c3QgYmVmb3JlIHRoZSBF WElUX0VER0UgY29udGFpbnMgYSBjb25kaXRpb24NCj4gPiA+IHRoZW4NCj4gPiA+ID4gPiA+ICsg ICByZXR1cm4gdGhlIGNvbmRpdGlvbiwgb3RoZXJ3aXNlIE5VTEwuICovDQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArZ2NvbmQgKg0KPiA+ID4gPiA+ID4gK2dldF9lZGdlX2NvbmRpdGlvbiAo ZWRnZSBleGl0X2VkZ2Upew0KPiA+ID4gPiA+ID4gICAgZ2NvbmQgKnJlcyA9IE5VTEw7DQo+ID4g PiA+ID4gPiAtICBlZGdlIGV4aXRfZWRnZSA9IHNpbmdsZV9leGl0IChsb29wKTsNCj4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiAgICBpZiAoZHVtcF9maWxlICYmIChkdW1wX2ZsYWdzICYgVERGX1ND RVYpKQ0KPiA+ID4gPiA+ID4gICAgICBmcHJpbnRmIChkdW1wX2ZpbGUsICIoZ2V0X2xvb3BfZXhp dF9jb25kaXRpb24gXG4gICIpOw0KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZl Y3QtZGF0YS1yZWZzLmNjIGIvZ2NjL3RyZWUtdmVjdC1kYXRhLXJlZnMuY2MNCj4gPiA+ID4gPiA+ IGluZGV4DQo+ID4gPiA+ID4NCj4gPiA+DQo+IDRhMjNkNjE3MmFhYTEyYWQ3MDQ5ZGM2MjZlNWM0 YWZiZDVjYTNmNzQuLjAyZTM3MzE3MTY3NTQzMmNkMzJjNGE3MjQ0DQo+ID4gPiA+ID4gMGVlYmRm Zjk4OGJkY2YgMTAwNjQ0DQo+ID4gPiA+ID4gPiAtLS0gYS9nY2MvdHJlZS12ZWN0LWRhdGEtcmVm cy5jYw0KPiA+ID4gPiA+ID4gKysrIGIvZ2NjL3RyZWUtdmVjdC1kYXRhLXJlZnMuY2MNCj4gPiA+ ID4gPiA+IEBAIC0yMDcyLDcgKzIwNzIsNyBAQCB2ZWN0X2VuaGFuY2VfZGF0YV9yZWZzX2FsaWdu bWVudA0KPiA+ID4gPiA+IChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8pDQo+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gICAgLyogQ2hlY2sgaWYgd2UgY2FuIHBvc3NpYmx5IHBlZWwgdGhlIGxvb3Au ICAqLw0KPiA+ID4gPiA+ID4gICAgaWYgKCF2ZWN0X2Nhbl9hZHZhbmNlX2l2c19wIChsb29wX3Zp bmZvKQ0KPiA+ID4gPiA+ID4gLSAgICAgIHx8ICFzbHBlZWxfY2FuX2R1cGxpY2F0ZV9sb29wX3Ag KGxvb3AsIHNpbmdsZV9leGl0IChsb29wKSkNCj4gPiA+ID4gPiA+ICsgICAgICB8fCAhc2xwZWVs X2Nhbl9kdXBsaWNhdGVfbG9vcF9wIChsb29wX3ZpbmZvLCBub3JtYWxfZXhpdA0KPiAobG9vcCkp DQo+ID4gPiA+ID4gPiAgICAgICAgfHwgbG9vcC0+aW5uZXIpDQo+ID4gPiA+ID4gPiAgICAgIGRv X3BlZWxpbmcgPSBmYWxzZTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEv Z2NjL3RyZWUtdmVjdC1sb29wLW1hbmlwLmNjIGIvZ2NjL3RyZWUtdmVjdC1sb29wLQ0KPiBtYW5p cC5jYw0KPiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4gPg0KPiA+ID4NCj4gMWQ5NjEzMGM5ODVl MmRlZmQxNDFjZmRmNjAyMjI0YzczYjRiNDFmMi4uMGIyYTQ5MjA3NTRkODNhZWIzNzk1YjQzNQ0K PiA+ID4gPiA+IDY5M2Q2MWFkY2ZlOTJiNiAxMDA2NDQNCj4gPiA+ID4gPiA+IC0tLSBhL2djYy90 cmVlLXZlY3QtbG9vcC1tYW5pcC5jYw0KPiA+ID4gPiA+ID4gKysrIGIvZ2NjL3RyZWUtdmVjdC1s b29wLW1hbmlwLmNjDQo+ID4gPiA+ID4gPiBAQCAtNzcwLDcgKzc3MCw3IEBAIHZlY3Rfc2V0X2xv b3BfY29uZGl0aW9uX3BhcnRpYWxfdmVjdG9ycw0KPiAoY2xhc3MNCj4gPiA+IGxvb3ANCj4gPiA+ ID4gPiAqbG9vcCwNCj4gPiA+ID4gPiA+ICAgIGFkZF9oZWFkZXJfc2VxIChsb29wLCBoZWFkZXJf c2VxKTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgICAvKiBHZXQgYSBib29sZWFuIHJlc3Vs dCB0aGF0IHRlbGxzIHVzIHdoZXRoZXIgdG8gaXRlcmF0ZS4gICovDQo+ID4gPiA+ID4gPiAtICBl ZGdlIGV4aXRfZWRnZSA9IHNpbmdsZV9leGl0IChsb29wKTsNCj4gPiA+ID4gPiA+ICsgIGVkZ2Ug ZXhpdF9lZGdlID0gbm9ybWFsX2V4aXQgKGxvb3ApOw0KPiA+ID4gPiA+ID4gICAgdHJlZV9jb2Rl IGNvZGUgPSAoZXhpdF9lZGdlLT5mbGFncyAmIEVER0VfVFJVRV9WQUxVRSkgPw0KPiA+ID4gRVFf RVhQUiA6DQo+ID4gPiA+ID4gTkVfRVhQUjsNCj4gPiA+ID4gPiA+ICAgIHRyZWUgemVyb19jdHJs ID0gYnVpbGRfemVyb19jc3QgKFRSRUVfVFlQRSAodGVzdF9jdHJsKSk7DQo+ID4gPiA+ID4gPiAg ICBnY29uZCAqY29uZF9zdG10ID0gZ2ltcGxlX2J1aWxkX2NvbmQgKGNvZGUsIHRlc3RfY3RybCwg emVyb19jdHJsLA0KPiA+ID4gPiA+ID4gQEAgLTc4OSw3ICs3ODksNyBAQCB2ZWN0X3NldF9sb29w X2NvbmRpdGlvbl9wYXJ0aWFsX3ZlY3RvcnMNCj4gKGNsYXNzDQo+ID4gPiBsb29wDQo+ID4gPiA+ ID4gKmxvb3AsDQo+ID4gPiA+ID4gPiAgICBpZiAoZmluYWxfaXYpDQo+ID4gPiA+ID4gPiAgICAg IHsNCj4gPiA+ID4gPiA+ICAgICAgICBnYXNzaWduICphc3NpZ24gPSBnaW1wbGVfYnVpbGRfYXNz aWduIChmaW5hbF9pdiwgb3JpZ19uaXRlcnMpOw0KPiA+ID4gPiA+ID4gLSAgICAgIGdzaV9pbnNl cnRfb25fZWRnZV9pbW1lZGlhdGUgKHNpbmdsZV9leGl0IChsb29wKSwgYXNzaWduKTsNCj4gPiA+ ID4gPiA+ICsgICAgICBnc2lfaW5zZXJ0X29uX2VkZ2VfaW1tZWRpYXRlIChleGl0X2VkZ2UsIGFz c2lnbik7DQo+ID4gPiA+ID4gPiAgICAgIH0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgICBy ZXR1cm4gY29uZF9zdG10Ow0KPiA+ID4gPiA+ID4gQEAgLTc5OSw3ICs3OTksOCBAQCB2ZWN0X3Nl dF9sb29wX2NvbmRpdGlvbl9wYXJ0aWFsX3ZlY3RvcnMNCj4gKGNsYXNzDQo+ID4gPiBsb29wDQo+ ID4gPiA+ID4gKmxvb3AsDQo+ID4gPiA+ID4gPiAgICAgbG9vcCBoYW5kbGVzIGV4YWN0bHkgVkYg c2NhbGFycyBwZXIgaXRlcmF0aW9uLiAgKi8NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgc3Rh dGljIGdjb25kICoNCj4gPiA+ID4gPiA+IC12ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9ub3JtYWwg KGNsYXNzIGxvb3AgKmxvb3AsIHRyZWUgbml0ZXJzLA0KPiB0cmVlDQo+ID4gPiBzdGVwLA0KPiA+ ID4gPiA+ID4gK3ZlY3Rfc2V0X2xvb3BfY29uZGl0aW9uX25vcm1hbCAobG9vcF92ZWNfaW5mbyBs b29wX3ZpbmZvLA0KPiA+ID4gPiA+ID4gKwkJCQljbGFzcyBsb29wICpsb29wLCB0cmVlIG5pdGVy cywgdHJlZQ0KPiBzdGVwLA0KPiA+ID4gPiA+ID4gIAkJCQl0cmVlIGZpbmFsX2l2LCBib29sDQo+ IG5pdGVyc19tYXliZV96ZXJvLA0KPiA+ID4gPiA+ID4gIAkJCQlnaW1wbGVfc3RtdF9pdGVyYXRv ciBsb29wX2NvbmRfZ3NpKQ0KPiA+ID4gPiA+ID4gIHsNCj4gPiA+ID4gPiA+IEBAIC04MDcsNyAr ODA4LDcgQEAgdmVjdF9zZXRfbG9vcF9jb25kaXRpb25fbm9ybWFsIChjbGFzcyBsb29wDQo+ID4g PiAqbG9vcCwNCj4gPiA+ID4gPiB0cmVlIG5pdGVycywgdHJlZSBzdGVwLA0KPiA+ID4gPiA+ID4g ICAgZ2NvbmQgKmNvbmRfc3RtdDsNCj4gPiA+ID4gPiA+ICAgIGdjb25kICpvcmlnX2NvbmQ7DQo+ ID4gPiA+ID4gPiAgICBlZGdlIHBlID0gbG9vcF9wcmVoZWFkZXJfZWRnZSAobG9vcCk7DQo+ID4g PiA+ID4gPiAtICBlZGdlIGV4aXRfZWRnZSA9IHNpbmdsZV9leGl0IChsb29wKTsNCj4gPiA+ID4g PiA+ICsgIGVkZ2UgZXhpdF9lZGdlID0gbm9ybWFsX2V4aXQgKGxvb3ApOw0KPiA+ID4gPiA+ID4g ICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgaW5jcl9nc2k7DQo+ID4gPiA+ID4gPiAgICBib29sIGlu c2VydF9hZnRlcjsNCj4gPiA+ID4gPiA+ICAgIGVudW0gdHJlZV9jb2RlIGNvZGU7DQo+ID4gPiA+ ID4gPiBAQCAtODcyLDcgKzg3MywxMSBAQCB2ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9ub3JtYWwg KGNsYXNzDQo+IGxvb3ANCj4gPiA+ID4gPiAqbG9vcCwgdHJlZSBuaXRlcnMsIHRyZWUgc3RlcCwN Cj4gPiA+ID4gPiA+ICAJIEluIGJvdGggY2FzZXMgdGhlIGxvb3AgbGltaXQgaXMgTklURVJTIC0g U1RFUC4gICovDQo+ID4gPiA+ID4gPiAgICAgICAgZ2ltcGxlX3NlcSBzZXEgPSBOVUxMOw0KPiA+ ID4gPiA+ID4gICAgICAgIGxpbWl0ID0gZm9yY2VfZ2ltcGxlX29wZXJhbmQgKG5pdGVycywgJnNl cSwgdHJ1ZSwgTlVMTF9UUkVFKTsNCj4gPiA+ID4gPiA+IC0gICAgICBsaW1pdCA9IGdpbXBsZV9i dWlsZCAoJnNlcSwgTUlOVVNfRVhQUiwgVFJFRV9UWVBFIChsaW1pdCksDQo+IGxpbWl0LA0KPiA+ ID4gPiA+IHN0ZXApOw0KPiA+ID4gPiA+ID4gKyAgICAgIC8qIEZvciBWTEEgbGVhdmUgbGltaXQg PT0gbml0ZXJzLiAgVGhvdWdoIEkgd29uZGVyIGlmIG1heWJlIEkNCj4gc2hvdWxkDQo+ID4gPiA+ ID4gPiArCSBmb3JjZSBwYXJ0aWFsIGxvb3BzIGhlcmUgYW5kIHVzZQ0KPiA+ID4gPiA+IHZlY3Rf c2V0X2xvb3BfY29uZGl0aW9uX3BhcnRpYWxfdmVjdG9ycw0KPiA+ID4gPiA+ID4gKwkgaW5zdGVh ZC4gIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIFZMIGNoZWNrIGlzIHVzZWxlc3MgaGVyZS4gICov DQo+ID4gPiA+ID4gPiArICAgICAgaWYgKCFMT09QX1ZJTkZPX0VBUkxZX0JSRUFLUyAobG9vcF92 aW5mbykgJiYNCj4gPiA+ID4gPiAhTE9PUF9WSU5GT19OSVRFUlNfS05PV05fUCAobG9vcF92aW5m bykpDQo+ID4gPiA+ID4gPiArCWxpbWl0ID0gZ2ltcGxlX2J1aWxkICgmc2VxLCBNSU5VU19FWFBS LCBUUkVFX1RZUEUgKGxpbWl0KSwNCj4gbGltaXQsDQo+ID4gPiA+ID4gc3RlcCk7DQo+ID4gPiA+ ID4gPiAgICAgICAgaWYgKHNlcSkNCj4gPiA+ID4gPiA+ICAJew0KPiA+ID4gPiA+ID4gIAkgIGJh c2ljX2Jsb2NrIG5ld19iYiA9IGdzaV9pbnNlcnRfc2VxX29uX2VkZ2VfaW1tZWRpYXRlDQo+IChw ZSwNCj4gPiA+ID4gPiBzZXEpOw0KPiA+ID4gPiA+ID4gQEAgLTkwNyw3ICs5MTIsOCBAQCB2ZWN0 X3NldF9sb29wX2NvbmRpdGlvbl9ub3JtYWwgKGNsYXNzIGxvb3ANCj4gPiA+ICpsb29wLA0KPiA+ ID4gPiA+IHRyZWUgbml0ZXJzLCB0cmVlIHN0ZXAsDQo+ID4gPiA+ID4gPiAgICBnc2lfaW5zZXJ0 X2JlZm9yZSAoJmxvb3BfY29uZF9nc2ksIGNvbmRfc3RtdCwNCj4gR1NJX1NBTUVfU1RNVCk7DQo+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICAgLyogUmVjb3JkIHRoZSBudW1iZXIgb2YgbGF0Y2gg aXRlcmF0aW9ucy4gICovDQo+ID4gPiA+ID4gPiAtICBpZiAobGltaXQgPT0gbml0ZXJzKQ0KPiA+ ID4gPiA+ID4gKyAgaWYgKGxpbWl0ID09IG5pdGVycw0KPiA+ID4gPiA+ID4gKyAgICAgIHx8IExP T1BfVklORk9fRUFSTFlfQlJFQUtTIChsb29wX3ZpbmZvKSkNCj4gPiA+ID4gPiA+ICAgICAgLyog Q2FzZSBBOiB0aGUgbG9vcCBpdGVyYXRlcyBOSVRFUlMgdGltZXMuICBTdWJ0cmFjdCBvbmUgdG8g Z2V0IHRoZQ0KPiA+ID4gPiA+ID4gICAgICAgICBsYXRjaCBjb3VudC4gICovDQo+ID4gPiA+ID4g PiAgICAgIGxvb3AtPm5iX2l0ZXJhdGlvbnMgPSBmb2xkX2J1aWxkMiAoTUlOVVNfRVhQUiwgbml0 ZXJzX3R5cGUsDQo+IG5pdGVycywNCj4gPiA+ID4gPiA+IEBAIC05MTgsMTAgKzkyNCwxNyBAQCB2 ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9ub3JtYWwgKGNsYXNzDQo+IGxvb3ANCj4gPiA+ID4gPiAq bG9vcCwgdHJlZSBuaXRlcnMsIHRyZWUgc3RlcCwNCj4gPiA+ID4gPiA+ICAgICAgbG9vcC0+bmJf aXRlcmF0aW9ucyA9IGZvbGRfYnVpbGQyIChUUlVOQ19ESVZfRVhQUiwNCj4gbml0ZXJzX3R5cGUs DQo+ID4gPiA+ID4gPiAgCQkJCSAgICAgICBsaW1pdCwgc3RlcCk7DQo+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gLSAgaWYgKGZpbmFsX2l2KQ0KPiA+ID4gPiA+ID4gKyAgYXV0b192ZWM8ZWRnZT4g ZXhpdHMgPSBnZXRfbG9vcF9leGl0X2VkZ2VzIChsb29wKTsNCj4gPiA+ID4gPiA+ICsgIC8qIEZv ciBtdWx0aXBsZSBleGl0cyB3ZSd2ZSBhbHJlYWR5IG1haW50YWluZWQgTENTU0EgZm9ybSBhbmQN Cj4gPiA+IGhhbmRsZWQNCj4gPiA+ID4gPiA+ICsgICAgIHRoZSBzY2FsYXIgaXRlcmF0aW9uIHVw ZGF0ZSBpbiB0aGUgY29kZSB0aGF0IGRlYWxzIHdpdGggdGhlIG1lcmdlDQo+ID4gPiA+ID4gPiAr ICAgICBibG9jayBhbmQgaXRzIHVwZGF0ZWQgZ3VhcmQuICBJIGNvdWxkIG1vdmUgdGhhdCBjb2Rl IGhlcmUNCj4gaW5zdGVhZA0KPiA+ID4gPiA+ID4gKyAgICAgb2YgaW4gdmVjdF91cGRhdGVfaXZz X2FmdGVyX2Vhcmx5X2JyZWFrIGJ1dCBJIGhhdmUgdG8gc3RpbGwgZGVhbA0KPiA+ID4gPiA+ID4g KyAgICAgd2l0aCB0aGUgdXBkYXRlcyB0byB0aGUgY291bnRlciBgaWAuICBTbyBmb3Igbm93IEkn bGwga2VlcCB0aGVtDQo+ID4gPiA+ID4gPiArICAgICB0b2dldGhlci4gICovDQo+ID4gPiA+ID4g PiArICBpZiAoZmluYWxfaXYgJiYgZXhpdHMubGVuZ3RoICgpID09IDEpDQo+ID4gPiA+ID4gPiAg ICAgIHsNCj4gPiA+ID4gPiA+ICAgICAgICBnYXNzaWduICphc3NpZ247DQo+ID4gPiA+ID4gPiAt ICAgICAgZWRnZSBleGl0ID0gc2luZ2xlX2V4aXQgKGxvb3ApOw0KPiA+ID4gPiA+ID4gKyAgICAg IGVkZ2UgZXhpdCA9IG5vcm1hbF9leGl0IChsb29wKTsNCj4gPiA+ID4gPiA+ICAgICAgICBnY2Nf YXNzZXJ0IChzaW5nbGVfcHJlZF9wIChleGl0LT5kZXN0KSk7DQo+ID4gPiA+ID4gPiAgICAgICAg dHJlZSBwaGlfZGVzdA0KPiA+ID4gPiA+ID4gIAk9IGludGVnZXJfemVyb3AgKGluaXQpID8gZmlu YWxfaXYgOiBjb3B5X3NzYV9uYW1lDQo+IChpbmR4X2FmdGVyX2luY3IpOw0KPiA+ID4gPiA+ID4g QEAgLTk3MiwxMyArOTg1LDE1IEBAIHZlY3Rfc2V0X2xvb3BfY29uZGl0aW9uIChjbGFzcyBsb29w DQo+ICpsb29wLA0KPiA+ID4gPiA+IGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywNCj4gPiA+ID4g PiA+ICAgIGdjb25kICpvcmlnX2NvbmQgPSBnZXRfbG9vcF9leGl0X2NvbmRpdGlvbiAobG9vcCk7 DQo+ID4gPiA+ID4gPiAgICBnaW1wbGVfc3RtdF9pdGVyYXRvciBsb29wX2NvbmRfZ3NpID0gZ3Np X2Zvcl9zdG10IChvcmlnX2NvbmQpOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0gIGlmIChs b29wX3ZpbmZvICYmIExPT1BfVklORk9fVVNJTkdfUEFSVElBTF9WRUNUT1JTX1ANCj4gPiA+ID4g PiAobG9vcF92aW5mbykpDQo+ID4gPiA+ID4gPiArICBpZiAobG9vcF92aW5mbw0KPiA+ID4gPiA+ ID4gKyAgICAgICYmIExPT1BfVklORk9fVVNJTkdfUEFSVElBTF9WRUNUT1JTX1AgKGxvb3Bfdmlu Zm8pKQ0KPiA+ID4gPiA+ID4gICAgICBjb25kX3N0bXQgPSB2ZWN0X3NldF9sb29wX2NvbmRpdGlv bl9wYXJ0aWFsX3ZlY3RvcnMgKGxvb3AsDQo+ID4gPiBsb29wX3ZpbmZvLA0KPiA+ID4gPiA+ID4g IAkJCQkJCQkgbml0ZXJzLA0KPiBmaW5hbF9pdiwNCj4gPiA+ID4gPiA+DQo+IG5pdGVyc19tYXli ZV96ZXJvLA0KPiA+ID4gPiA+ID4NCj4gbG9vcF9jb25kX2dzaSk7DQo+ID4gPiA+ID4gPiAgICBl bHNlDQo+ID4gPiA+ID4gPiAtICAgIGNvbmRfc3RtdCA9IHZlY3Rfc2V0X2xvb3BfY29uZGl0aW9u X25vcm1hbCAobG9vcCwgbml0ZXJzLA0KPiBzdGVwLA0KPiA+ID4gPiA+IGZpbmFsX2l2LA0KPiA+ ID4gPiA+ID4gKyAgICBjb25kX3N0bXQgPSB2ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9ub3JtYWwg KGxvb3BfdmluZm8sDQo+IGxvb3AsDQo+ID4gPiBuaXRlcnMsDQo+ID4gPiA+ID4gPiArCQkJCQkJ c3RlcCwgZmluYWxfaXYsDQo+ID4gPiA+ID4gPiAgCQkJCQkJbml0ZXJzX21heWJlX3plcm8sDQo+ ID4gPiA+ID4gPiAgCQkJCQkJbG9vcF9jb25kX2dzaSk7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gQEAgLTEwNjYsNyArMTA4MSw3IEBAIHNscGVlbF90cmVlX2R1cGxpY2F0ZV9sb29wX3RvX2Vk Z2VfY2ZnDQo+ID4gPiAoY2xhc3MNCj4gPiA+ID4gPiBsb29wICpsb29wLA0KPiA+ID4gPiA+ID4g ICAgZWRnZSBleGl0LCBuZXdfZXhpdDsNCj4gPiA+ID4gPiA+ICAgIGJvb2wgZHVwbGljYXRlX291 dGVyX2xvb3AgPSBmYWxzZTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAtICBleGl0ID0gc2lu Z2xlX2V4aXQgKGxvb3ApOw0KPiA+ID4gPiA+ID4gKyAgZXhpdCA9IG5vcm1hbF9leGl0IChsb29w KTsNCj4gPiA+ID4gPiA+ICAgIGF0X2V4aXQgPSAoZSA9PSBleGl0KTsNCj4gPiA+ID4gPiA+ICAg IGlmICghYXRfZXhpdCAmJiBlICE9IGxvb3BfcHJlaGVhZGVyX2VkZ2UgKGxvb3ApKQ0KPiA+ID4g PiA+ID4gICAgICByZXR1cm4gTlVMTDsNCj4gPiA+ID4gPiA+IEBAIC0xMTA0LDExICsxMTE5LDEx IEBADQo+IHNscGVlbF90cmVlX2R1cGxpY2F0ZV9sb29wX3RvX2VkZ2VfY2ZnDQo+ID4gPiA+ID4g KGNsYXNzIGxvb3AgKmxvb3AsDQo+ID4gPiA+ID4gPiAgICBiYnNbMF0gPSBwcmVoZWFkZXI7DQo+ ID4gPiA+ID4gPiAgICBuZXdfYmJzID0gWE5FV1ZFQyAoYmFzaWNfYmxvY2ssIHNjYWxhcl9sb29w LT5udW1fbm9kZXMgKyAxKTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAtICBleGl0ID0gc2lu Z2xlX2V4aXQgKHNjYWxhcl9sb29wKTsNCj4gPiA+ID4gPiA+ICsgIGV4aXQgPSBub3JtYWxfZXhp dCAoc2NhbGFyX2xvb3ApOw0KPiA+ID4gPiA+ID4gICAgY29weV9iYnMgKGJicywgc2NhbGFyX2xv b3AtPm51bV9ub2RlcyArIDEsIG5ld19iYnMsDQo+ID4gPiA+ID4gPiAgCSAgICAmZXhpdCwgMSwg Jm5ld19leGl0LCBOVUxMLA0KPiA+ID4gPiA+ID4gIAkgICAgYXRfZXhpdCA/IGxvb3AtPmxhdGNo IDogZS0+c3JjLCB0cnVlKTsNCj4gPiA+ID4gPiA+IC0gIGV4aXQgPSBzaW5nbGVfZXhpdCAobG9v cCk7DQo+ID4gPiA+ID4gPiArICBleGl0ID0gbm9ybWFsX2V4aXQgKGxvb3ApOw0KPiA+ID4gPiA+ ID4gICAgYmFzaWNfYmxvY2sgbmV3X3ByZWhlYWRlciA9IG5ld19iYnNbMF07DQo+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gICAgLyogQmVmb3JlIGluc3RhbGxpbmcgUEhJIGFyZ3VtZW50cyBtYWtl IHN1cmUgdGhhdCB0aGUgZWRnZXMNCj4gPiA+ID4gPiA+IEBAIC0xMTc2LDExICsxMTkxLDUzIEBA DQo+IHNscGVlbF90cmVlX2R1cGxpY2F0ZV9sb29wX3RvX2VkZ2VfY2ZnDQo+ID4gPiA+ID4gKGNs YXNzIGxvb3AgKmxvb3AsDQo+ID4gPiA+ID4gPiAgCSAgICAgIGFkZF9waGlfYXJnIChwaGksIG9y aWdfYXJnLCBuZXdfZXhpdCwgb3JpZ19sb2N1cyk7DQo+ID4gPiA+ID4gPiAgCSAgICB9DQo+ID4g PiA+ID4gPiAgCX0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgICAvKiBJZiBoYXZl IG11bHRpcGxlIGV4aXN0LCB3ZSBub3cgbmVlZCB0byBwb2ludCB0aGUgYWRkaXRpb25hbA0KPiBl eGl0cw0KPiA+ID4gPiA+ID4gKwkgZnJvbSB0aGUgb2xkIGxvb3AgdG8gdGhlIGxvb3AgcHJlLWhl YWRlciBvZiB0aGUgbmV3IGNvcGllZA0KPiBsb29wLg0KPiA+ID4gPiA+ID4gKwkgQ3VycmVudGx5 IHdlIG9ubHkgc3VwcG9ydCBzaW1wbGUgZWFybHkgYnJlYWsgdmVjdG9yaXphdGlvbg0KPiBzbyBh bGwNCj4gPiA+ID4gPiA+ICsJIGFkZGl0aW9uYWwgZXhpdHMgbXVzdCBleGl0IHRoZSBsb29wLiBB ZGRpdGlvbmFsbHkgd2UgY2FuIG9ubHkNCj4gcGxhY2UNCj4gPiA+ID4gPiA+ICsJIGNvcGllcyBh dCB0aGUgZW5kLiAgaS5lLiB3ZSBjYW5ub3QgZG8gcHJvbG9ndWUgcGVlbGluZy4gICovDQo+ID4g PiA+ID4gPiArICAgICAgYXV0b192ZWM8ZWRnZT4gZXhpdHMgPSBnZXRfbG9vcF9leGl0X2VkZ2Vz IChsb29wKTsNCj4gPiA+ID4gPiA+ICsgICAgICBib29sIG11bHRpcGxlX2V4aXRzX3AgPSBleGl0 cy5sZW5ndGggKCkgPiAxOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICAgIC8qIENo ZWNrIHRvIHNlZSBpZiBhbGwgb2YgdGhlIGV4aXRzIHBvaW50IHRvIHRoZSBsb29wIGhlYWRlci4g IElmDQo+IHRoZXkNCj4gPiA+ID4gPiA+ICsJIGRvbid0IHRoZW4gd2UgaGF2ZSBhbiBpbnRlcm1l ZGlhdGUgQkIgdGhhdCdzIG5vIGxvbmdlcg0KPiB1c2VmdWwgYWZ0ZXINCj4gPiA+ID4gPiA+ICsJ IHRoZSBjb3B5IGFuZCB3ZSBzaG91bGQgcmVtb3ZlIGl0LiAqLw0KPiA+ID4gPiA+ID4gKyAgICAg IGJvb2wgaW1tX2V4aXQgPSB0cnVlOw0KPiA+ID4gPiA+ID4gKyAgICAgIGZvciAoYXV0byBleGl0 IDogZXhpdHMpDQo+ID4gPiA+ID4gPiArCXsNCj4gPiA+ID4gPiA+ICsJICAgaW1tX2V4aXQgPSBp bW1fZXhpdCAmJiBleGl0LT5kZXN0ID09IGxvb3AtPmhlYWRlcjsNCj4gPiA+ID4gPiA+ICsJICAg aWYgKCFpbW1fZXhpdCkNCj4gPiA+ID4gPiA+ICsJICAgICBicmVhazsNCj4gPiA+ID4gPiA+ICsJ fQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7 IGkgPCBleGl0cy5sZW5ndGggKCk7IGkrKykNCj4gPiA+ID4gPiA+ICsJew0KPiA+ID4gPiA+ID4g KwkgIHJlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaCAoZXhpdHNbaV0sIG5ld19wcmVoZWFkZXIpOw0K PiA+ID4gPiA+ID4gKwkgIGZsdXNoX3BlbmRpbmdfc3RtdHMgKGV4aXRzW2ldKTsNCj4gPiA+ID4g PiA+ICsJfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICAgIC8qIE1haW4gZXhpdCBt dXN0IGJlIHRoZSBsYXN0IHRvIGJlIHJld3JpdHRlbiBhcyBpdCdzIHRoZSBmaXJzdCBwaGkNCj4g PiA+IG5vZGUNCj4gPiA+ID4gPiA+ICsJIGVudHJ5LiAgVGhlIHJlc3QgYXJlIGluIGFycmF5IG9y ZGVyLiAgKi8NCj4gPiA+ID4gPiA+ICAgICAgICByZWRpcmVjdF9lZGdlX2FuZF9icmFuY2hfZm9y Y2UgKGUsIG5ld19wcmVoZWFkZXIpOw0KPiA+ID4gPiA+ID4gICAgICAgIGZsdXNoX3BlbmRpbmdf c3RtdHMgKGUpOw0KPiA+ID4gPiA+ID4gLSAgICAgIHNldF9pbW1lZGlhdGVfZG9taW5hdG9yIChD RElfRE9NSU5BVE9SUywNCj4gbmV3X3ByZWhlYWRlciwNCj4gPiA+IGUtDQo+ID4gPiA+ID4gPnNy Yyk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgICAgLyogT25seSB1cGRhdGUgdGhl IGRvbWluYXRvcnMgb2YgdGhlIG5ld19wcmVoZWFkZXIgdG8gdGhlDQo+IG9sZA0KPiA+ID4gZXhp dCBpZg0KPiA+ID4gPiA+ID4gKwkgd2UgaGF2ZSBlZmZlY3RpdmVseSBhIHNpbmdsZSBleGl0LiAg Ki8NCj4gPiA+ID4gPiA+ICsgICAgICBpZiAoIW11bHRpcGxlX2V4aXRzX3ANCj4gPiA+ID4gPiA+ ICsJICB8fCBleGl0c1sxXS0+c3JjICE9IEVER0VfUFJFRCAoZXhpdHNbMF0tPnNyYywgMCktPnNy YykNCj4gPiA+ID4gPiA+ICsgICAgICAgIHNldF9pbW1lZGlhdGVfZG9taW5hdG9yIChDRElfRE9N SU5BVE9SUywNCj4gbmV3X3ByZWhlYWRlciwNCj4gPiA+IGUtDQo+ID4gPiA+ID4gPnNyYyk7DQo+ ID4gPiA+ID4gPiArICAgICAgZWxzZQ0KPiA+ID4gPiA+ID4gKwlzZXRfaW1tZWRpYXRlX2RvbWlu YXRvciAoQ0RJX0RPTUlOQVRPUlMsDQo+IG5ld19wcmVoZWFkZXIsDQo+ID4gPiA+ID4gZXhpdHNb MV0tPnNyYyk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgICAgYXV0b192ZWM8ZWRn ZT4gbmV3X2V4aXRzID0gZ2V0X2xvb3BfZXhpdF9lZGdlcw0KPiAobmV3X2xvb3ApOw0KPiA+ID4g PiA+ID4gICAgICAgIGlmICh3YXNfaW1tX2RvbSB8fCBkdXBsaWNhdGVfb3V0ZXJfbG9vcCkNCj4g PiA+ID4gPiA+IC0Jc2V0X2ltbWVkaWF0ZV9kb21pbmF0b3IgKENESV9ET01JTkFUT1JTLCBleGl0 X2Rlc3QsDQo+ID4gPiA+ID4gbmV3X2V4aXQtPnNyYyk7DQo+ID4gPiA+ID4gPiArCXsNCj4gPiA+ ID4gPiA+ICsJICBpZiAoIW11bHRpcGxlX2V4aXRzX3ApDQo+ID4gPiA+ID4gPiArCSAgICBzZXRf aW1tZWRpYXRlX2RvbWluYXRvciAoQ0RJX0RPTUlOQVRPUlMsIGV4aXRfZGVzdCwNCj4gPiA+ID4g PiBuZXdfZXhpdC0+c3JjKTsNCj4gPiA+ID4gPiA+ICsJICBlbHNlDQo+ID4gPiA+ID4gPiArCSAg ICBzZXRfaW1tZWRpYXRlX2RvbWluYXRvciAoQ0RJX0RPTUlOQVRPUlMsIGV4aXRfZGVzdCwNCj4g PiA+ID4gPiBuZXdfZXhpdHNbMV0tPnNyYyk7DQo+ID4gPiA+ID4gPiArCX0NCj4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiAgICAgICAgLyogQW5kIHJlbW92ZSB0aGUgbm9uLW5lY2Vzc2FyeSBmb3J3 YXJkZXIgYWdhaW4uICBLZWVwIHRoZQ0KPiBvdGhlcg0KPiA+ID4gPiA+ID4gICAgICAgICAgIG9u ZSBzbyB3ZSBoYXZlIGEgcHJvcGVyIHByZS1oZWFkZXIgZm9yIHRoZSBsb29wIGF0IHRoZSBleGl0 DQo+IGVkZ2UuDQo+ID4gPiAqLw0KPiA+ID4gPiA+ID4gQEAgLTExODksNiArMTI0NiwzOSBAQA0K PiBzbHBlZWxfdHJlZV9kdXBsaWNhdGVfbG9vcF90b19lZGdlX2NmZw0KPiA+ID4gKGNsYXNzDQo+ ID4gPiA+ID4gbG9vcCAqbG9vcCwNCj4gPiA+ID4gPiA+ICAgICAgICBkZWxldGVfYmFzaWNfYmxv Y2sgKHByZWhlYWRlcik7DQo+ID4gPiA+ID4gPiAgICAgICAgc2V0X2ltbWVkaWF0ZV9kb21pbmF0 b3IgKENESV9ET01JTkFUT1JTLCBzY2FsYXJfbG9vcC0NCj4gPiA+ID5oZWFkZXIsDQo+ID4gPiA+ ID4gPiAgCQkJICAgICAgIGxvb3BfcHJlaGVhZGVyX2VkZ2UgKHNjYWxhcl9sb29wKS0NCj4gPnNy Yyk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgICAgLyogRmluYWxseSBhZnRlciB3 aXJpbmcgdGhlIG5ldyBlcGlsb2d1ZSB3ZSBuZWVkIHRvIHVwZGF0ZSBpdHMNCj4gbWFpbg0KPiA+ ID4gPiA+IGV4aXQNCj4gPiA+ID4gPiA+ICsJIHRvIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBleGl0 IHdlIHJlY29yZGVkLiAgT3RoZXIgZXhpdHMgYXJlDQo+IGFscmVhZHkNCj4gPiA+ID4gPiA+ICsJ IGNvcnJlY3QuICAqLw0KPiA+ID4gPiA+ID4gKyAgICAgIGlmICghaW1tX2V4aXQgJiYgbXVsdGlw bGVfZXhpdHNfcCkNCj4gPiA+ID4gPiA+ICsJew0KPiA+ID4gPiA+ID4gKwkgIC8qIEZvciBub3cg d2UgZXhwZWN0IGF0IG1vc3QgYSBzaW5nbGUgc3VjY2Vzc29yIGhlcmUsIGJ1dA0KPiB3ZSBtaWdo dA0KPiA+ID4gPiA+IGJlDQo+ID4gPiA+ID4gPiArCSAgICAgYWJsZSB0byBleHRlbmQgdGhpcyB0 byBtdWx0aXBsZS4gICovDQo+ID4gPiA+ID4gPiArCSAgaWYgKHNpbmdsZV9zdWNjX3AgKG5ld19l eGl0LT5kZXN0KSAmJiBzaW5nbGVfcHJlZF9wDQo+IChuZXdfZXhpdC0NCj4gPiA+ID4gPiA+ZGVz dCkpDQo+ID4gPiA+ID4gPiArCSAgICB7DQo+ID4gPiA+ID4gPiArCSAgICAgIGVkZ2UgZXhpdF9l ZGdlID0gc2luZ2xlX3N1Y2NfZWRnZSAobmV3X2V4aXQtPmRlc3QpOw0KPiA+ID4gPiA+ID4gKwkg ICAgICAvKiBOb3cgY29ycmVjdCB0aGUgZG9taW5hdG9ycyB0aGF0IHdlcmUgbWVzc2VkIHVwDQo+ IGR1cmluZyB0aGUNCj4gPiA+ID4gPiBjb3B5aW5nDQo+ID4gPiA+ID4gPiArCQkgYXMgdGhlIENG RyB3YXMgdHdlYWtlZCBhIGJpdC4gICovDQo+ID4gPiA+ID4gPiArCSAgICAgIC8qIFRoZSBtYWlu IGV4aXQgaXMgbm93IGRvbWluYXRlZCBieSBhIG5ldyBmYWxsIHRocm91Z2gNCj4gZWRnZS4gICov DQo+ID4gPiA+ID4gPiArCSAgICAgIHNldF9pbW1lZGlhdGVfZG9taW5hdG9yIChDRElfRE9NSU5B VE9SUywNCj4gZXhpdF9lZGdlLT5zcmMsDQo+ID4gPiA+ID4gPiArCQkJCSAgICAgICBuZXdfZXhp dHNbMF0tPnNyYyk7DQo+ID4gPiA+ID4gPiArCSAgICAgIC8qIElmIHRoaXMgaXMgYSBmYWxsIHRo cm91Z2ggZWRnZSB0aGVuIGRvbid0IHVwZGF0ZSBkb21zLiAgKi8NCj4gPiA+ID4gPiA+ICsJICAg ICAgaWYgKCFlbXB0eV9ibG9ja19wIChleGl0X2VkZ2UtPnNyYykpDQo+ID4gPiA+ID4gPiArCQlz ZXRfaW1tZWRpYXRlX2RvbWluYXRvciAoQ0RJX0RPTUlOQVRPUlMsDQo+IGV4aXRfZWRnZS0NCj4g PiA+ID4gPiA+ZGVzdCwNCj4gPiA+ID4gPiA+ICsJCQkJCSBuZXdfZXhpdHNbMV0tPnNyYyk7DQo+ ID4gPiA+ID4gPiArCSAgICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCSAgLyogVGhl IGV4aXRzIGZyb20gdGhlIEJCIHdpdGggdGhlIGVhcmx5IGV4aXQgZG9taW5hdGUgdGhlDQo+IG5l dw0KPiA+ID4gPiA+IGZ1bmN0aW9uDQo+ID4gPiA+ID4gPiArCSAgICAgZXhpdCBlZGdlIGFuZCBh bHNvIHRoZSBzZWNvbmQgcGFydCBvZiB0aGUgbG9vcC4gIFRoZSBlZGdlcw0KPiB3ZXJlDQo+ID4g PiA+ID4gPiArCSAgICAgY29waWVkIGNvcnJlY3RseSBidXQgdGhlIGRvbXMgYXJlIHdyb25nIGJl Y2F1c2UgZHVyaW5nDQo+IHRoZQ0KPiA+ID4gPiA+IGNvcHlpbmcNCj4gPiA+ID4gPiA+ICsJICAg ICBzb21lIG9mIHRoZSBpbnRlcm1lZGlhdGUgZWRnZXMgYXJlIHJld3JpdHRlbi4gICAqLw0KPiA+ ID4gPiA+ID4gKwkgIHNldF9pbW1lZGlhdGVfZG9taW5hdG9yIChDRElfRE9NSU5BVE9SUywNCj4g bmV3X2V4aXRzWzBdLT5zcmMsDQo+ID4gPiA+ID4gPiArCQkJCSAgIG5ld19leGl0c1sxXS0+c3Jj KTsNCj4gPiA+ID4gPiA+ICsJICBzZXRfaW1tZWRpYXRlX2RvbWluYXRvciAoQ0RJX0RPTUlOQVRP UlMsDQo+IG5ld19leGl0c1swXS0NCj4gPiA+ID4gPiA+ZGVzdCwNCj4gPiA+ID4gPiA+ICsJCQkJ ICAgbmV3X2V4aXRzWzBdLT5zcmMpOw0KPiA+ID4gPiA+ID4gKwkgIHNldF9pbW1lZGlhdGVfZG9t aW5hdG9yIChDRElfRE9NSU5BVE9SUywNCj4gbmV3X2V4aXRzWzFdLQ0KPiA+ID4gPiA+ID5kZXN0 LA0KPiA+ID4gPiA+ID4gKwkJCQkgICBuZXdfZXhpdHNbMV0tPnNyYyk7DQo+ID4gPiA+ID4gPiAr CX0NCj4gPiA+ID4gPiA+ICAgICAgfQ0KPiA+ID4gPiA+ID4gICAgZWxzZSAvKiBBZGQgdGhlIGNv cHkgYXQgZW50cnkuICAqLw0KPiA+ID4gPiA+ID4gICAgICB7DQo+ID4gPiA+ID4gPiBAQCAtMTMx MCwyMCArMTQwMCwyNCBAQCBzbHBlZWxfYWRkX2xvb3BfZ3VhcmQgKGJhc2ljX2Jsb2NrDQo+ID4g PiBndWFyZF9iYiwNCj4gPiA+ID4gPiB0cmVlIGNvbmQsDQo+ID4gPiA+ID4gPiAgICovDQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gIGJvb2wNCj4gPiA+ID4gPiA+IC1zbHBlZWxfY2FuX2R1cGxp Y2F0ZV9sb29wX3AgKGNvbnN0IGNsYXNzIGxvb3AgKmxvb3AsIGNvbnN0X2VkZ2UNCj4gZSkNCj4g PiA+ID4gPiA+ICtzbHBlZWxfY2FuX2R1cGxpY2F0ZV9sb29wX3AgKGNvbnN0IGxvb3BfdmVjX2lu Zm8gbG9vcF92aW5mbywNCj4gPiA+ID4gPiBjb25zdF9lZGdlIGUpDQo+ID4gPiA+ID4gPiAgew0K PiA+ID4gPiA+ID4gLSAgZWRnZSBleGl0X2UgPSBzaW5nbGVfZXhpdCAobG9vcCk7DQo+ID4gPiA+ ID4gPiArICBjbGFzcyBsb29wICpsb29wID0gTE9PUF9WSU5GT19MT09QIChsb29wX3ZpbmZvKTsN Cj4gPiA+ID4gPiA+ICsgIGVkZ2UgZXhpdF9lID0gbm9ybWFsX2V4aXQgKGxvb3ApOw0KPiA+ID4g PiA+ID4gICAgZWRnZSBlbnRyeV9lID0gbG9vcF9wcmVoZWFkZXJfZWRnZSAobG9vcCk7DQo+ID4g PiA+ID4gPiAgICBnY29uZCAqb3JpZ19jb25kID0gZ2V0X2xvb3BfZXhpdF9jb25kaXRpb24gKGxv b3ApOw0KPiA+ID4gPiA+ID4gICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgbG9vcF9leGl0X2dzaSA9 IGdzaV9sYXN0X2JiIChleGl0X2UtPnNyYyk7DQo+ID4gPiA+ID4gPiAgICB1bnNpZ25lZCBpbnQg bnVtX2JiID0gbG9vcC0+aW5uZXI/IDUgOiAyOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICsg IGlmIChMT09QX1ZJTkZPX0VBUkxZX0JSRUFLUyAobG9vcF92aW5mbykpDQo+ID4gPiA+ID4gPiAr ICAgIG51bV9iYiArPSAxOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gICAgLyogQWxsIGxv b3BzIGhhdmUgYW4gb3V0ZXIgc2NvcGU7IHRoZSBvbmx5IGNhc2UgbG9vcC0+b3V0ZXIgaXMgTlVM TA0KPiBpcw0KPiA+ID4gZm9yDQo+ID4gPiA+ID4gPiAgICAgICB0aGUgZnVuY3Rpb24gaXRzZWxm LiAgKi8NCj4gPiA+ID4gPiA+ICAgIGlmICghbG9vcF9vdXRlciAobG9vcCkNCj4gPiA+ID4gPiA+ ICAgICAgICB8fCBsb29wLT5udW1fbm9kZXMgIT0gbnVtX2JiDQo+ID4gPiA+ID4gPiAgICAgICAg fHwgIWVtcHR5X2Jsb2NrX3AgKGxvb3AtPmxhdGNoKQ0KPiA+ID4gPiA+ID4gLSAgICAgIHx8ICFz aW5nbGVfZXhpdCAobG9vcCkNCj4gPiA+ID4gPiA+ICsgICAgICB8fCAoIXNpbmdsZV9leGl0IChs b29wKSAmJiAhTE9PUF9WSU5GT19FQVJMWV9CUkVBS1MNCj4gPiA+IChsb29wX3ZpbmZvKSkNCj4g PiA+ID4gPiA+ICAgICAgICAvKiBWZXJpZnkgdGhhdCBuZXcgbG9vcCBleGl0IGNvbmRpdGlvbiBj YW4gYmUgdHJpdmlhbGx5IG1vZGlmaWVkLg0KPiAqLw0KPiA+ID4gPiA+ID4gICAgICAgIHx8ICgh b3JpZ19jb25kIHx8IG9yaWdfY29uZCAhPSBnc2lfc3RtdCAobG9vcF9leGl0X2dzaSkpDQo+ID4g PiA+ID4gPiAgICAgICAgfHwgKGUgIT0gZXhpdF9lICYmIGUgIT0gZW50cnlfZSkpDQo+ID4gPiA+ ID4gPiBAQCAtMTUyOCw2ICsxNjIyLDEyIEBAIHZlY3RfdXBkYXRlX2l2c19hZnRlcl92ZWN0b3Jp emVyDQo+ID4gPiA+ID4gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywNCj4gPiA+ID4gPiA+ICAg IGdwaGlfaXRlcmF0b3IgZ3NpLCBnc2kxOw0KPiA+ID4gPiA+ID4gICAgY2xhc3MgbG9vcCAqbG9v cCA9IExPT1BfVklORk9fTE9PUCAobG9vcF92aW5mbyk7DQo+ID4gPiA+ID4gPiAgICBiYXNpY19i bG9jayB1cGRhdGVfYmIgPSB1cGRhdGVfZS0+ZGVzdDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsgIC8qIEZvciBlYXJseSBleGl0cyB3ZSdsbCB1cGRhdGUgdGhlIElWcyBpbg0KPiA+ID4g PiA+ID4gKyAgICAgdmVjdF91cGRhdGVfaXZzX2FmdGVyX2Vhcmx5X2JyZWFrLiAgKi8NCj4gPiA+ ID4gPiA+ICsgIGlmIChMT09QX1ZJTkZPX0VBUkxZX0JSRUFLUyAobG9vcF92aW5mbykpDQo+ID4g PiA+ID4gPiArICAgIHJldHVybjsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICAgIGJhc2lj X2Jsb2NrIGV4aXRfYmIgPSBzaW5nbGVfZXhpdCAobG9vcCktPmRlc3Q7DQo+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gICAgLyogTWFrZSBzdXJlIHRoZXJlIGV4aXN0cyBhIHNpbmdsZS1wcmVkZWNl c3NvciBleGl0IGJiOiAgKi8NCj4gPiA+ID4gPiA+IEBAIC0xNjEzLDYgKzE3MTMsMTg2IEBAIHZl Y3RfdXBkYXRlX2l2c19hZnRlcl92ZWN0b3JpemVyDQo+ID4gPiA+ID4gKGxvb3BfdmVjX2luZm8g bG9vcF92aW5mbywNCj4gPiA+ID4gPiA+ICAgICAgICAvKiBGaXggcGhpIGV4cHJlc3Npb25zIGlu IHRoZSBzdWNjZXNzb3IgYmIuICAqLw0KPiA+ID4gPiA+ID4gICAgICAgIGFkanVzdF9waGlfYW5k X2RlYnVnX3N0bXRzIChwaGkxLCB1cGRhdGVfZSwgbmlfbmFtZSk7DQo+ID4gPiA+ID4gPiAgICAg IH0NCj4gPiA+ID4gPiA+ICsgIHJldHVybjsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArLyogICBGdW5jdGlvbiB2ZWN0X3VwZGF0ZV9pdnNfYWZ0ZXJfZWFybHlf YnJlYWsuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgICAiQWR2YW5jZSIgdGhlIGlu ZHVjdGlvbiB2YXJpYWJsZXMgb2YgTE9PUCB0byB0aGUgdmFsdWUgdGhleQ0KPiBzaG91bGQNCj4g PiA+ID4gPiB0YWtlDQo+ID4gPiA+ID4gPiArICAgICBhZnRlciB0aGUgZXhlY3V0aW9uIG9mIExP T1AuICBUaGlzIGlzIGN1cnJlbnRseSBuZWNlc3NhcnkNCj4gYmVjYXVzZQ0KPiA+ID4gdGhlDQo+ ID4gPiA+ID4gPiArICAgICB2ZWN0b3JpemVyIGRvZXMgbm90IGhhbmRsZSBpbmR1Y3Rpb24gdmFy aWFibGVzIHRoYXQgYXJlIHVzZWQNCj4gYWZ0ZXINCj4gPiA+IHRoZQ0KPiA+ID4gPiA+ID4gKyAg ICAgbG9vcC4gIFN1Y2ggYSBzaXR1YXRpb24gb2NjdXJzIHdoZW4gdGhlIGxhc3QgaXRlcmF0aW9u cyBvZiBMT09QDQo+IGFyZQ0KPiA+ID4gPiA+ID4gKyAgICAgcGVlbGVkLCBiZWNhdXNlIG9mIHRo ZSBlYXJseSBleGl0LiAgV2l0aCBhbiBlYXJseSBleGl0IHdlIGFsd2F5cw0KPiBwZWVsDQo+ID4g PiB0aGUNCj4gPiA+ID4gPiA+ICsgICAgIGxvb3AuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArICAgICBJbnB1dDoNCj4gPiA+ID4gPiA+ICsgICAgIC0gTE9PUF9WSU5GTyAtIGEgbG9vcCBp bmZvIHN0cnVjdHVyZSBmb3IgdGhlIGxvb3AgdGhhdCBpcyBnb2luZyB0bw0KPiBiZQ0KPiA+ID4g PiA+ID4gKwkJICAgIHZlY3Rvcml6ZWQuIFRoZSBsYXN0IGZldyBpdGVyYXRpb25zIG9mIExPT1Ag d2VyZQ0KPiBwZWVsZWQuDQo+ID4gPiA+ID4gPiArICAgICAtIExPT1AgLSBhIGxvb3AgdGhhdCBp cyBnb2luZyB0byBiZSB2ZWN0b3JpemVkLiBUaGUgbGFzdCBmZXcNCj4gaXRlcmF0aW9ucw0KPiA+ ID4gPiA+ID4gKwkgICAgICBvZiBMT09QIHdlcmUgcGVlbGVkLg0KPiA+ID4gPiA+ID4gKyAgICAg LSBWRiAtIFRoZSBsb29wIHZlY3Rvcml6YXRpb24gZmFjdG9yLg0KPiA+ID4gPiA+ID4gKyAgICAg LSBOSVRFUlNfT1JJRyAtIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyB0aGF0IExPT1AgZXhlY3V0 ZXMNCj4gPiA+IChiZWZvcmUNCj4gPiA+ID4gPiBpdCBpcw0KPiA+ID4gPiA+ID4gKwkJICAgICB2 ZWN0b3JpemVkKS4gaS5lLCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBpdnMgc2hvdWxkDQo+IGJl DQo+ID4gPiA+ID4gPiArCQkgICAgIGJ1bXBlZC4NCj4gPiA+ID4gPiA+ICsgICAgIC0gTklURVJT X1ZFQ1RPUiAtIFRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyB0aGF0IHRoZSB2ZWN0b3INCj4gTE9P UA0KPiA+ID4gPiA+IGV4ZWN1dGVzLg0KPiA+ID4gPiA+ID4gKyAgICAgLSBVUERBVEVfRSAtIGEg c3VjY2Vzc29yIGVkZ2Ugb2YgTE9PUC0+ZXhpdCB0aGF0IGlzIG9uIHRoZQ0KPiAob25seSkNCj4g PiA+IHBhdGgNCj4gPiA+ID4gPiA+ICsJCSAgY29taW5nIG91dCBmcm9tIExPT1Agb24gd2hpY2gg dGhlcmUgYXJlIHVzZXMgb2YNCj4gdGhlIExPT1ANCj4gPiA+ID4gPiBpdnMNCj4gPiA+ID4gPiA+ ICsJCSAgKHRoaXMgaXMgdGhlIHBhdGggZnJvbSBMT09QLT5leGl0IHRvIGVwaWxvZ19sb29wLQ0K PiA+ID4gPiA+ID5wcmVoZWFkZXIpLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKwkJICBU aGUgbmV3IGRlZmluaXRpb25zIG9mIHRoZSBpdnMgYXJlIHBsYWNlZCBpbiBMT09QLQ0KPiA+ZXhp dC4NCj4gPiA+ID4gPiA+ICsJCSAgVGhlIHBoaSBhcmdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZWRn ZSBVUERBVEVfRSBpbg0KPiB0aGUgYmINCj4gPiA+ID4gPiA+ICsJCSAgVVBEQVRFX0UtPmRlc3Qg YXJlIHVwZGF0ZWQgYWNjb3JkaW5nbHkuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAg ICBPdXRwdXQ6DQo+ID4gPiA+ID4gPiArICAgICAgIC0gSWYgYXZhaWxhYmxlLCB0aGUgTENTU0Eg cGhpIG5vZGUgZm9yIHRoZSBsb29wIElWIHRlbXAuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArICAgICBBc3N1bXB0aW9uIDE6IExpa2UgdGhlIHJlc3Qgb2YgdGhlIHZlY3Rvcml6ZXIsIHRo aXMgZnVuY3Rpb24NCj4gYXNzdW1lcw0KPiA+ID4gPiA+ID4gKyAgICAgYSBzaW5nbGUgbG9vcCBl eGl0IHRoYXQgaGFzIGEgc2luZ2xlIHByZWRlY2Vzc29yLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKyAgICAgQXNzdW1wdGlvbiAyOiBUaGUgcGhpIG5vZGVzIGluIHRoZSBMT09QIGhlYWRl ciBhbmQgaW4NCj4gdXBkYXRlX2JiDQo+ID4gPiBhcmUNCj4gPiA+ID4gPiA+ICsgICAgIG9yZ2Fu aXplZCBpbiB0aGUgc2FtZSBvcmRlci4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAg IEFzc3VtcHRpb24gMzogVGhlIGFjY2VzcyBmdW5jdGlvbiBvZiB0aGUgaXZzIGlzIHNpbXBsZSBl bm91Z2gNCj4gKHNlZQ0KPiA+ID4gPiA+ID4gKyAgICAgdmVjdF9jYW5fYWR2YW5jZV9pdnNfcCku ICBUaGlzIGFzc3VtcHRpb24gd2lsbCBiZSByZWxheGVkIGluDQo+IHRoZQ0KPiA+ID4gPiA+IGZ1 dHVyZS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgIEFzc3VtcHRpb24gNDogRXhh Y3RseSBvbmUgb2YgdGhlIHN1Y2Nlc3NvcnMgb2YgTE9PUCBleGl0LWJiIGlzDQo+IG9uIGENCj4g PiA+ID4gPiBwYXRoDQo+ID4gPiA+ID4gPiArICAgICBjb21pbmcgb3V0IG9mIExPT1Agb24gd2hp Y2ggdGhlIGl2cyBvZiBMT09QIGFyZSB1c2VkICh0aGlzIGlzDQo+IHRoZQ0KPiA+ID4gcGF0aA0K PiA+ID4gPiA+ID4gKyAgICAgdGhhdCBsZWFkcyB0byB0aGUgZXBpbG9nIGxvb3A7IG90aGVyIHBh dGhzIHNraXAgdGhlIGVwaWxvZyBsb29wKS4NCj4gVGhpcw0KPiA+ID4gPiA+ID4gKyAgICAgcGF0 aCBzdGFydHMgd2l0aCB0aGUgZWRnZSBVUERBVEVfRSwgYW5kIGl0cyBkZXN0aW5hdGlvbg0KPiAo ZGVub3RlZA0KPiA+ID4gPiA+IHVwZGF0ZV9iYikNCj4gPiA+ID4gPiA+ICsgICAgIG5lZWRzIHRv IGhhdmUgaXRzIHBoaXMgdXBkYXRlZC4NCj4gPiA+ID4gPiA+ICsgKi8NCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICtzdGF0aWMgdHJlZQ0KPiA+ID4gPiA+ID4gK3ZlY3RfdXBkYXRlX2l2c19h ZnRlcl9lYXJseV9icmVhayAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLA0KPiBjbGFzcw0KPiA+ ID4gbG9vcA0KPiA+ID4gPiA+ICosDQo+ID4gPiA+ID4gPiArCQkJCSAgIHBvbHlfaW50NjQgdmYs IHRyZWUgbml0ZXJzX29yaWcsDQo+ID4gPiA+ID4gPiArCQkJCSAgIHRyZWUgbml0ZXJzX3ZlY3Rv ciwgZWRnZSB1cGRhdGVfZSkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBncGhpX2l0 ZXJhdG9yIGdzaSwgZ3NpMTsNCj4gPiA+ID4gPiA+ICsgIHRyZWUgbmlfbmFtZSwgaXZ0bXAgPSBO VUxMOw0KPiA+ID4gPiA+ID4gKyAgY2xhc3MgbG9vcCAqbG9vcCA9IExPT1BfVklORk9fTE9PUCAo bG9vcF92aW5mbyk7DQo+ID4gPiA+ID4gPiArICBiYXNpY19ibG9jayB1cGRhdGVfYmIgPSB1cGRh dGVfZS0+ZGVzdDsNCj4gPiA+ID4gPiA+ICsgIGF1dG9fdmVjPGVkZ2U+IGV4aXRzID0gZ2V0X2xv b3BfZXhpdF9lZGdlcyAobG9vcCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBiYXNp Y19ibG9jayBleGl0X2JiID0gZXhpdHNbMF0tPmRlc3Q7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArICBpZiAoIUxPT1BfVklORk9fRUFSTFlfQlJFQUtTIChsb29wX3ZpbmZvKSkNCj4gPiA+ ID4gPiA+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBm b3IgKGdzaSA9IGdzaV9zdGFydF9waGlzIChsb29wLT5oZWFkZXIpLCBnc2kxID0gZ3NpX3N0YXJ0 X3BoaXMNCj4gPiA+ID4gPiAodXBkYXRlX2JiKTsNCj4gPiA+ID4gPiA+ICsgICAgICAgIWdzaV9l bmRfcCAoZ3NpKSAmJiAhZ3NpX2VuZF9wIChnc2kxKTsNCj4gPiA+ID4gPiA+ICsgICAgICAgZ3Np X25leHQgKCZnc2kpLCBnc2lfbmV4dCAoJmdzaTEpKQ0KPiA+ID4gPiA+ID4gKyAgICB7DQo+ID4g PiA+ID4gPiArICAgICAgdHJlZSBpbml0X2V4cHI7DQo+ID4gPiA+ID4gPiArICAgICAgdHJlZSBz dGVwX2V4cHI7DQo+ID4gPiA+ID4gPiArICAgICAgdHJlZSB0eXBlOw0KPiA+ID4gPiA+ID4gKyAg ICAgIHRyZWUgdmFyLCBuaTsNCj4gPiA+ID4gPiA+ICsgICAgICBnaW1wbGVfc3RtdF9pdGVyYXRv ciBsYXN0X2dzaTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgICBncGhpICpwaGkg PSBnc2kxLnBoaSAoKTsNCj4gPiA+ID4gPiA+ICsgICAgICB0cmVlIHBoaV9zc2EgPSBQSElfQVJH X0RFRl9GUk9NX0VER0UgKHBoaSwNCj4gPiA+ID4gPiBsb29wX3ByZWhlYWRlcl9lZGdlIChsb29w KSk7DQo+ID4gPiA+ID4gPiArICAgICAgZ3BoaSAqcGhpMSA9IGFzX2EgPGdwaGkgKj4gKFNTQV9O QU1FX0RFRl9TVE1UIChwaGlfc3NhKSk7DQo+ID4gPiA+ID4gPiArICAgICAgc3RtdF92ZWNfaW5m byBwaGlfaW5mbyA9IGxvb3BfdmluZm8tPmxvb2t1cF9zdG10IChnc2kucGhpICgpKTsNCj4gPiA+ ID4gPiA+ICsgICAgICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpDQo+ID4gPiA+ID4gPiArCWR1bXBf cHJpbnRmX2xvYyAoTVNHX05PVEUsIHZlY3RfbG9jYXRpb24sDQo+ID4gPiA+ID4gPiArCQkJICJ2 ZWN0X3VwZGF0ZV9pdnNfYWZ0ZXJfZWFybHlfYnJlYWs6IHBoaToNCj4gJUciLA0KPiA+ID4gPiA+ ID4gKwkJCSAoZ2ltcGxlICopcGhpKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAg ICAvKiBTa2lwIHJlZHVjdGlvbiBhbmQgdmlydHVhbCBwaGlzLiAgKi8NCj4gPiA+ID4gPiA+ICsg ICAgICBpZiAoIWl2X3BoaV9wIChwaGlfaW5mbykpDQo+ID4gPiA+ID4gPiArCXsNCj4gPiA+ID4g PiA+ICsJICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpDQo+ID4gPiA+ID4gPiArCSAgICBkdW1wX3By aW50Zl9sb2MgKE1TR19OT1RFLCB2ZWN0X2xvY2F0aW9uLA0KPiA+ID4gPiA+ID4gKwkJCSAgICAg InJlZHVjIG9yIHZpcnR1YWwgcGhpLiBza2lwLlxuIik7DQo+ID4gPiA+ID4gPiArCSAgY29udGlu dWU7DQo+ID4gPiA+ID4gPiArCX0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgICAv KiBGb3IgbXVsdGlwbGUgZXhpdHMgd2hlcmUgd2UgaGFuZGxlIGVhcmx5IGV4aXRzIHdlIG5lZWQg dG8NCj4gY2FycnkNCj4gPiA+IG9uDQo+ID4gPiA+ID4gPiArCSB3aXRoIHRoZSBwcmV2aW91cyBJ ViBhcyBsb29wIGl0ZXJhdGlvbiB3YXMgbm90IGRvbmUgYmVjYXVzZQ0KPiB3ZQ0KPiA+ID4gPiA+ IGV4aXRlZA0KPiA+ID4gPiA+ID4gKwkgZWFybHkuICBBcyBzdWNoIGp1c3QgZ3JhYiB0aGUgb3Jp Z2luYWwgSVYuICAqLw0KPiA+ID4gPiA+ID4gKyAgICAgIGlmIChTVE1UX1ZJTkZPX1RZUEUgKHBo aV9pbmZvKSAhPSB1bmRlZl92ZWNfaW5mb190eXBlKQ0KPiA+ID4gPiA+ID4gKwl7DQo+ID4gPiA+ ID4gPiArCSAgdHlwZSA9IFRSRUVfVFlQRSAoZ2ltcGxlX3BoaV9yZXN1bHQgKHBoaSkpOw0KPiA+ ID4gPiA+ID4gKwkgIHN0ZXBfZXhwciA9IFNUTVRfVklORk9fTE9PUF9QSElfRVZPTFVUSU9OX1BB UlQNCj4gPiA+ID4gPiAocGhpX2luZm8pOw0KPiA+ID4gPiA+ID4gKwkgIHN0ZXBfZXhwciA9IHVu c2hhcmVfZXhwciAoc3RlcF9leHByKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsJICAv KiBXZSBwcmV2aW91c2x5IGdlbmVyYXRlZCB0aGUgbmV3IG1lcmdlZCBwaGkgaW4gdGhlDQo+IHNh bWUgQkIgYXMNCj4gPiA+ID4gPiB0aGUNCj4gPiA+ID4gPiA+ICsJICAgICBndWFyZC4gIFNvIHVz ZSB0aGF0IHRvIHBlcmZvcm0gdGhlIHNjYWxpbmcgb24gcmF0aGVyIHRoYW4NCj4gdGhlDQo+ID4g PiA+ID4gPiArCSAgICAgbm9ybWFsIGxvb3AgcGhpIHdoaWNoIGRvbid0IHRha2UgdGhlIGVhcmx5 IGJyZWFrcyBpbnRvDQo+IGFjY291bnQuICAqLw0KPiA+ID4gPiA+ID4gKwkgIGluaXRfZXhwciA9 IGdpbXBsZV9waGlfcmVzdWx0IChwaGkxKTsNCj4gLy9QSElfQVJHX0RFRl9GUk9NX0VER0UNCj4g PiA+ID4gPiAocGhpMSwgbG9vcF9wcmVoZWFkZXJfZWRnZSAobG9vcCkpOw0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKwkgIG5pID0gZm9sZF9idWlsZDIgKE1VTFRfRVhQUiwgVFJFRV9UWVBF IChzdGVwX2V4cHIpLA0KPiA+ID4gPiA+ID4gKwkJCSAgICBmb2xkX2NvbnZlcnQgKFRSRUVfVFlQ RSAoc3RlcF9leHByKSwNCj4gaW5pdF9leHByKSwNCj4gPiA+ID4gPiA+ICsJCQkgICAgYnVpbGRf aW50X2NzdCAoVFJFRV9UWVBFIChzdGVwX2V4cHIpLCB2ZikpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKwkgIHZhciA9IGNyZWF0ZV90bXBfdmFyICh0eXBlLCAidG1wIik7DQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArCSAgbGFzdF9nc2kgPSBnc2lfbGFzdF9iYiAoZXhpdF9iYik7 DQo+ID4gPiA+ID4gPiArCSAgZ2ltcGxlX3NlcSBuZXdfc3RtdHMgPSBOVUxMOw0KPiA+ID4gPiA+ ID4gKwkgIG5pX25hbWUgPSBmb3JjZV9naW1wbGVfb3BlcmFuZCAobmksICZuZXdfc3RtdHMsIGZh bHNlLA0KPiB2YXIpOw0KPiA+ID4gPiA+ID4gKwkgIC8qIEV4aXRfYmIgc2hvdWxkbid0IGJlIGVt cHR5LiAgKi8NCj4gPiA+ID4gPiA+ICsJICBpZiAoIWdzaV9lbmRfcCAobGFzdF9nc2kpKQ0KPiA+ ID4gPiA+ID4gKwkgICAgZ3NpX2luc2VydF9zZXFfYWZ0ZXIgKCZsYXN0X2dzaSwgbmV3X3N0bXRz LA0KPiBHU0lfU0FNRV9TVE1UKTsNCj4gPiA+ID4gPiA+ICsJICBlbHNlDQo+ID4gPiA+ID4gPiAr CSAgICBnc2lfaW5zZXJ0X3NlcV9iZWZvcmUgKCZsYXN0X2dzaSwgbmV3X3N0bXRzLA0KPiBHU0lf U0FNRV9TVE1UKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsJICAvKiBGaXggcGhpIGV4 cHJlc3Npb25zIGluIHRoZSBzdWNjZXNzb3IgYmIuICAqLw0KPiA+ID4gPiA+ID4gKwkgIGFkanVz dF9waGlfYW5kX2RlYnVnX3N0bXRzIChwaGksIHVwZGF0ZV9lLCBuaV9uYW1lKTsNCj4gPiA+ID4g PiA+ICsJfQ0KPiA+ID4gPiA+ID4gKyAgICAgIGVsc2UgaWYgKFNUTVRfVklORk9fVFlQRSAocGhp X2luZm8pID09IHVuZGVmX3ZlY19pbmZvX3R5cGUpDQo+ID4gPiA+ID4gPiArCXsNCj4gPiA+ID4g PiA+ICsJICB0eXBlID0gVFJFRV9UWVBFIChnaW1wbGVfcGhpX3Jlc3VsdCAocGhpKSk7DQo+ID4g PiA+ID4gPiArCSAgc3RlcF9leHByID0gU1RNVF9WSU5GT19MT09QX1BISV9FVk9MVVRJT05fUEFS VA0KPiA+ID4gPiA+IChwaGlfaW5mbyk7DQo+ID4gPiA+ID4gPiArCSAgc3RlcF9leHByID0gdW5z aGFyZV9leHByIChzdGVwX2V4cHIpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKwkgIC8q IFdlIHByZXZpb3VzbHkgZ2VuZXJhdGVkIHRoZSBuZXcgbWVyZ2VkIHBoaSBpbiB0aGUNCj4gc2Ft ZSBCQiBhcw0KPiA+ID4gPiA+IHRoZQ0KPiA+ID4gPiA+ID4gKwkgICAgIGd1YXJkLiAgU28gdXNl IHRoYXQgdG8gcGVyZm9ybSB0aGUgc2NhbGluZyBvbiByYXRoZXIgdGhhbg0KPiB0aGUNCj4gPiA+ ID4gPiA+ICsJICAgICBub3JtYWwgbG9vcCBwaGkgd2hpY2ggZG9uJ3QgdGFrZSB0aGUgZWFybHkg YnJlYWtzIGludG8NCj4gYWNjb3VudC4gICovDQo+ID4gPiA+ID4gPiArCSAgaW5pdF9leHByID0g UEhJX0FSR19ERUZfRlJPTV9FREdFIChwaGkxLA0KPiA+ID4gPiA+IGxvb3BfcHJlaGVhZGVyX2Vk Z2UgKGxvb3ApKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsJICBpZiAodmYuaXNfY29u c3RhbnQgKCkpDQo+ID4gPiA+ID4gPiArCSAgICB7DQo+ID4gPiA+ID4gPiArCSAgICAgIG5pID0g Zm9sZF9idWlsZDIgKE1VTFRfRVhQUiwgVFJFRV9UWVBFIChzdGVwX2V4cHIpLA0KPiA+ID4gPiA+ ID4gKwkJCQlmb2xkX2NvbnZlcnQgKFRSRUVfVFlQRQ0KPiAoc3RlcF9leHByKSwNCj4gPiA+ID4g PiA+ICsJCQkJCSAgICAgIG5pdGVyc192ZWN0b3IpLA0KPiA+ID4gPiA+ID4gKwkJCQlidWlsZF9p bnRfY3N0IChUUkVFX1RZUEUNCj4gKHN0ZXBfZXhwciksIHZmKSk7DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArCSAgICAgIG5pID0gZm9sZF9idWlsZDIgKE1JTlVTX0VYUFIsIFRSRUVfVFlQ RSAoc3RlcF9leHByKSwNCj4gPiA+ID4gPiA+ICsJCQkJZm9sZF9jb252ZXJ0IChUUkVFX1RZUEUN Cj4gKHN0ZXBfZXhwciksDQo+ID4gPiA+ID4gPiArCQkJCQkgICAgICBuaXRlcnNfb3JpZyksDQo+ ID4gPiA+ID4gPiArCQkJCWZvbGRfY29udmVydCAoVFJFRV9UWVBFDQo+IChzdGVwX2V4cHIpLCBu aSkpOw0KPiA+ID4gPiA+ID4gKwkgICAgfQ0KPiA+ID4gPiA+ID4gKwkgIGVsc2UNCj4gPiA+ID4g PiA+ICsJICAgIC8qIElmIHRoZSBsb29wJ3MgVkYgaXNuJ3QgY29uc3RhbnQgdGhlbiB0aGUgbG9v cCBtdXN0IGhhdmUNCj4gYmVlbg0KPiA+ID4gPiA+ID4gKwkgICAgICAgbWFza2VkLCBzbyBhdCB0 aGUgZW5kIG9mIHRoZSBsb29wIHdlIGtub3cgd2UgaGF2ZQ0KPiBmaW5pc2hlZA0KPiA+ID4gPiA+ ID4gKwkgICAgICAgdGhlIGVudGlyZSBsb29wIGFuZCBmb3VuZCBub3RoaW5nLiAgKi8NCj4gPiA+ ID4gPiA+ICsJICAgIG5pID0gYnVpbGRfemVyb19jc3QgKFRSRUVfVFlQRSAoc3RlcF9leHByKSk7 DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCSAgZ2NjX2Fzc2VydCAoVFJFRV9DT0RFIChu aSkgPT0gSU5URUdFUl9DU1QpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKwkgIHZhciA9 IGNyZWF0ZV90bXBfdmFyICh0eXBlLCAidG1wIik7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArCSAgbGFzdF9nc2kgPSBnc2lfbGFzdF9iYiAoZXhpdF9iYik7DQo+ID4gPiA+ID4gPiArCSAg Z2ltcGxlX3NlcSBuZXdfc3RtdHMgPSBOVUxMOw0KPiA+ID4gPiA+ID4gKwkgIG5pX25hbWUgPSBm b3JjZV9naW1wbGVfb3BlcmFuZCAobmksICZuZXdfc3RtdHMsIGZhbHNlLA0KPiB2YXIpOw0KPiA+ ID4gPiA+ID4gKwkgIC8qIEV4aXRfYmIgc2hvdWxkbid0IGJlIGVtcHR5LiAgKi8NCj4gPiA+ID4g PiA+ICsJICBpZiAoIWdzaV9lbmRfcCAobGFzdF9nc2kpKQ0KPiA+ID4gPiA+ID4gKwkgICAgZ3Np X2luc2VydF9zZXFfYWZ0ZXIgKCZsYXN0X2dzaSwgbmV3X3N0bXRzLA0KPiBHU0lfU0FNRV9TVE1U KTsNCj4gPiA+ID4gPiA+ICsJICBlbHNlDQo+ID4gPiA+ID4gPiArCSAgICBnc2lfaW5zZXJ0X3Nl cV9iZWZvcmUgKCZsYXN0X2dzaSwgbmV3X3N0bXRzLA0KPiBHU0lfU0FNRV9TVE1UKTsNCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsJICBhZGp1c3RfcGhpX2FuZF9kZWJ1Z19zdG10cyAocGhp MSwgdXBkYXRlX2UsIG5pX25hbWUpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKwkgIGZv ciAodW5zaWduZWQgaSA9IDE7IGkgPCBleGl0cy5sZW5ndGggKCk7IGkrKykNCj4gPiA+ID4gPiA+ ICsJICAgIGFkanVzdF9waGlfYW5kX2RlYnVnX3N0bXRzIChwaGkxLCBleGl0c1tpXSwNCj4gPiA+ ID4gPiA+ICsJCQkJCWJ1aWxkX2ludF9jc3QgKFRSRUVfVFlQRQ0KPiA+ID4gPiA+IChzdGVwX2V4 cHIpLA0KPiA+ID4gPiA+ID4gKwkJCQkJCSAgICAgICB2ZikpOw0KPiA+ID4gPiA+ID4gKwkgIGl2 dG1wID0gZ2ltcGxlX3BoaV9yZXN1bHQgKHBoaTEpOw0KPiA+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ ID4gPiArICAgICAgZWxzZQ0KPiA+ID4gPiA+ID4gKwljb250aW51ZTsNCj4gPiA+ID4gPiA+ICsg ICAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIGl2dG1wOw0KPiA+ID4g PiA+ID4gIH0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgLyogUmV0dXJuIGEgZ2ltcGxlIHZh bHVlIGNvbnRhaW5pbmcgdGhlIG1pc2FsaWdubWVudCAobWVhc3VyZWQgaW4NCj4gPiA+IHZlY3Rv cg0KPiA+ID4gPiA+ID4gQEAgLTIwOTYsNyArMjM3Niw3IEBAIHZlY3RfZ2VuX3ZlY3Rvcl9sb29w X25pdGVyc19tdWx0X3ZmDQo+ID4gPiA+ID4gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywNCj4g PiA+ID4gPiA+ICAgIGNsYXNzIGxvb3AgKmxvb3AgPSBMT09QX1ZJTkZPX0xPT1AgKGxvb3Bfdmlu Zm8pOw0KPiA+ID4gPiA+ID4gICAgdHJlZSB0eXBlID0gVFJFRV9UWVBFIChuaXRlcnNfdmVjdG9y KTsNCj4gPiA+ID4gPiA+ICAgIHRyZWUgbG9nX3ZmID0gYnVpbGRfaW50X2NzdCAodHlwZSwgZXhh Y3RfbG9nMiAodmYpKTsNCj4gPiA+ID4gPiA+IC0gIGJhc2ljX2Jsb2NrIGV4aXRfYmIgPSBzaW5n bGVfZXhpdCAobG9vcCktPmRlc3Q7DQo+ID4gPiA+ID4gPiArICBiYXNpY19ibG9jayBleGl0X2Ji ID0gbm9ybWFsX2V4aXQgKGxvb3ApLT5kZXN0Ow0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAg IGdjY19hc3NlcnQgKG5pdGVyc192ZWN0b3JfbXVsdF92Zl9wdHIgIT0gTlVMTCk7DQo+ID4gPiA+ ID4gPiAgICB0cmVlIG5pdGVyc192ZWN0b3JfbXVsdF92ZiA9IGZvbGRfYnVpbGQyIChMU0hJRlRf RVhQUiwgdHlwZSwNCj4gPiA+ID4gPiA+IEBAIC0yMTIzLDE5ICsyNDAzLDQ2IEBAIGZpbmRfZ3Vh cmRfYXJnIChjbGFzcyBsb29wICpsb29wLCBjbGFzcw0KPiBsb29wDQo+ID4gPiA+ID4gKmVwaWxv ZyBBVFRSSUJVVEVfVU5VU0VELA0KPiA+ID4gPiA+ID4gIAkJZ3BoaSAqbGNzc2FfcGhpKQ0KPiA+ ID4gPiA+ID4gIHsNCj4gPiA+ID4gPiA+ICAgIGdwaGlfaXRlcmF0b3IgZ3NpOw0KPiA+ID4gPiA+ ID4gLSAgZWRnZSBlID0gc2luZ2xlX2V4aXQgKGxvb3ApOw0KPiA+ID4gPiA+ID4gKyAgZWRnZSBl ID0gbm9ybWFsX2V4aXQgKGxvb3ApOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0gIGdjY19h c3NlcnQgKHNpbmdsZV9wcmVkX3AgKGUtPmRlc3QpKTsNCj4gPiA+ID4gPiA+ICAgIGZvciAoZ3Np ID0gZ3NpX3N0YXJ0X3BoaXMgKGUtPmRlc3QpOyAhZ3NpX2VuZF9wIChnc2kpOyBnc2lfbmV4dA0K PiAoJmdzaSkpDQo+ID4gPiA+ID4gPiAgICAgIHsNCj4gPiA+ID4gPiA+ICAgICAgICBncGhpICpw aGkgPSBnc2kucGhpICgpOw0KPiA+ID4gPiA+ID4gLSAgICAgIGlmIChvcGVyYW5kX2VxdWFsX3Ag KFBISV9BUkdfREVGIChwaGksIDApLA0KPiA+ID4gPiA+ID4gLQkJCSAgIFBISV9BUkdfREVGIChs Y3NzYV9waGksIDApLCAwKSkNCj4gPiA+ID4gPiA+ICsgICAgICAvKiBOZXN0ZWQgbG9vcHMgd2l0 aCBtdWx0aXBsZSBleGl0cyBjYW4gaGF2ZSBkaWZmZXJlbnQgbm8jIHBoaQ0KPiA+ID4gbm9kZQ0K PiA+ID4gPiA+ID4gKwkgYXJndW1lbnRzIGJldHdlZW4gdGhlIG1haW4gbG9vcCBhbmQgZXBpbG9n IGFzIGVwaWxvZyBmYWxscw0KPiB0byB0aGUNCj4gPiA+ID4gPiA+ICsJIHNlY29uZCBsb29wLiAg Ki8NCj4gPiA+ID4gPiA+ICsgICAgICBpZiAoZ2ltcGxlX3BoaV9udW1fYXJncyAocGhpKSA+IGUt PmRlc3RfaWR4DQo+ID4gPiA+ID4gPiArCSAgJiYgb3BlcmFuZF9lcXVhbF9wIChQSElfQVJHX0RF RiAocGhpLCBlLT5kZXN0X2lkeCksDQo+ID4gPiA+ID4gPiArCQkJICAgICAgUEhJX0FSR19ERUYg KGxjc3NhX3BoaSwgMCksIDApKQ0KPiA+ID4gPiA+ID4gIAlyZXR1cm4gUEhJX1JFU1VMVCAocGhp KTsNCj4gPiA+ID4gPiA+ICAgICAgfQ0KPiA+ID4gPiA+ID4gICAgcmV0dXJuIE5VTExfVFJFRTsN Cj4gPiA+ID4gPiA+ICB9DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gKy8qIFN0YXJ0aW5nIGZy b20gdGhlIGN1cnJlbnQgZWRnZSB3YWxrIGFsbCBpbnN0cnVjdGlvbnMgYW5kIGZpbmQgdGhlDQo+ IGxhc3QNCj4gPiA+ID4gPiA+ICsgICBWVVNFL1ZERUYgaW4gdGhlIGJhc2ljIGJsb2NrLiAgKi8N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtzdGF0aWMgdHJlZQ0KPiA+ID4gPiA+ID4gK2dp bXBsZV9maW5kX2xhc3RfbWVtX3VzZSAoZWRnZSBlKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4g PiA+ICsgIGJhc2ljX2Jsb2NrIGJiID0gZS0+c3JjOw0KPiA+ID4gPiA+ID4gKyAgdHJlZSByZXMg PSBOVUxMOw0KPiA+ID4gPiA+ID4gKyAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgaXRlciA9IGdzaV9s YXN0X2JiIChiYik7DQo+ID4gPiA+ID4gPiArICBkbw0KPiA+ID4gPiA+ID4gKyAgew0KPiA+ID4g PiA+ID4gKyAgICBnaW1wbGUgKnN0bXQgPSBnc2lfc3RtdCAoaXRlcik7DQo+ID4gPiA+ID4gPiAr ICAgIGlmICgocmVzID0gZ2ltcGxlX3ZkZWYgKHN0bXQpKSkNCj4gPiA+ID4gPiA+ICsgICAgICBy ZXR1cm4gcmVzOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICBpZiAoKHJlcyA9IGdp bXBsZV92dXNlIChzdG10KSkpDQo+ID4gPiA+ID4gPiArICAgICAgcmV0dXJuIHJlczsNCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgZ3NpX3ByZXYgKCZpdGVyKTsNCj4gPiA+ID4gPiA+ ICsgIH0gd2hpbGUgKCFnc2lfZW5kX3AgKGl0ZXIpKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsgIHJldHVybiBOVUxMOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ICAvKiBGdW5jdGlvbiBzbHBlZWxfdHJlZV9kdXBsaWNhdGVfbG9vcF90b19lZGdlX2Nm ZyBkdXBsY2lhdGVzDQo+ID4gPiA+ID4gRklSU1QvU0VDT05EDQo+ID4gPiA+ID4gPiAgICAgZnJv bSBTRUNPTkQvRklSU1QgYW5kIHB1dHMgaXQgYXQgdGhlIG9yaWdpbmFsIGxvb3Ancw0KPiBwcmVo ZWFkZXIvZXhpdA0KPiA+ID4gPiA+ID4gICAgIGVkZ2UsIHRoZSB0d28gbG9vcHMgYXJlIGFycmFu Z2VkIGFzIGJlbG93Og0KPiA+ID4gPiA+ID4gQEAgLTIxODUsNiArMjQ5Miw3IEBAIGZpbmRfZ3Vh cmRfYXJnIChjbGFzcyBsb29wICpsb29wLCBjbGFzcw0KPiBsb29wDQo+ID4gPiA+ID4gKmVwaWxv ZyBBVFRSSUJVVEVfVU5VU0VELA0KPiA+ID4gPiA+ID4gIHN0YXRpYyB2b2lkDQo+ID4gPiA+ID4g PiAgc2xwZWVsX3VwZGF0ZV9waGlfbm9kZXNfZm9yX2xvb3BzIChsb29wX3ZlY19pbmZvIGxvb3Bf dmluZm8sDQo+ID4gPiA+ID4gPiAgCQkJCSAgIGNsYXNzIGxvb3AgKmZpcnN0LCBjbGFzcyBsb29w ICpzZWNvbmQsDQo+ID4gPiA+ID4gPiArCQkJCSAgIHRyZWUgKmxjc3NhX2l2dG1wLA0KPiA+ID4g PiA+ID4gIAkJCQkgICBib29sIGNyZWF0ZV9sY3NzYV9mb3JfaXZfcGhpcykNCj4gPiA+ID4gPiA+ ICB7DQo+ID4gPiA+ID4gPiAgICBncGhpX2l0ZXJhdG9yIGdzaV91cGRhdGUsIGdzaV9vcmlnOw0K PiA+ID4gPiA+ID4gQEAgLTIxOTIsMTAgKzI1MDAsMTggQEAgc2xwZWVsX3VwZGF0ZV9waGlfbm9k ZXNfZm9yX2xvb3BzDQo+ID4gPiA+ID4gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywNCj4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiAgICBlZGdlIGZpcnN0X2xhdGNoX2UgPSBFREdFX1NVQ0MgKGZp cnN0LT5sYXRjaCwgMCk7DQo+ID4gPiA+ID4gPiAgICBlZGdlIHNlY29uZF9wcmVoZWFkZXJfZSA9 IGxvb3BfcHJlaGVhZGVyX2VkZ2UgKHNlY29uZCk7DQo+ID4gPiA+ID4gPiAtICBiYXNpY19ibG9j ayBiZXR3ZWVuX2JiID0gc2luZ2xlX2V4aXQgKGZpcnN0KS0+ZGVzdDsNCj4gPiA+ID4gPiA+ICsg IGF1dG9fdmVjPGVkZ2U+IGV4aXRzID0gZ2V0X2xvb3BfZXhpdF9lZGdlcyAoZmlyc3QpOw0KPiA+ ID4gPiA+ID4gKyAgYmFzaWNfYmxvY2sgYmV0d2Vlbl9iYiA9IGV4aXRzWzBdLT5kZXN0Ow0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgYm9vbCBlYXJseV9leGl0ID0gTE9PUF9WSU5GT19F QVJMWV9CUkVBS1MgKGxvb3BfdmluZm8pOw0KPiA+ID4gPiA+ID4gKyAgLyogRm9yIGVhcmx5IGV4 aXRzIHdoZW4gd2UgY3JlYXRlIHRoZSBtZXJnZSBCQiB3ZSBtdXN0DQo+IG1haW50YWluIGl0DQo+ ID4gPiBpbg0KPiA+ID4gPiA+ID4gKyAgICAgTENTU0EgZm9ybSwgb3RoZXJ3aXNlIHRoZSBmaW5h bCB2ZWN0b3JpemVyIHBhc3NlcyB3aWxsIGNyZWF0ZSB0aGUNCj4gPiA+ID4gPiA+ICsgICAgIHdy b25nIFBISSBub2RlcyBoZXJlLiAgKi8NCj4gPiA+ID4gPiA+ICsgIGNyZWF0ZV9sY3NzYV9mb3Jf aXZfcGhpcyA9IGNyZWF0ZV9sY3NzYV9mb3JfaXZfcGhpcyB8fA0KPiBlYXJseV9leGl0Ow0KPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAgIGdjY19hc3NlcnQgKGJldHdlZW5fYmIgPT0gc2Vjb25k X3ByZWhlYWRlcl9lLT5zcmMpOw0KPiA+ID4gPiA+ID4gLSAgZ2NjX2Fzc2VydCAoc2luZ2xlX3By ZWRfcCAoYmV0d2Vlbl9iYikgJiYgc2luZ2xlX3N1Y2NfcA0KPiA+ID4gPiA+IChiZXR3ZWVuX2Ji KSk7DQo+ID4gPiA+ID4gPiArICBnY2NfYXNzZXJ0ICgoc2luZ2xlX3ByZWRfcCAoYmV0d2Vlbl9i YikgJiYgc2luZ2xlX3N1Y2NfcA0KPiA+ID4gPiA+IChiZXR3ZWVuX2JiKSkNCj4gPiA+ID4gPiA+ ICsJICAgICAgfHwgZWFybHlfZXhpdCk7DQo+ID4gPiA+ID4gPiAgICAvKiBFaXRoZXIgdGhlIGZp cnN0IGxvb3Agb3IgdGhlIHNlY29uZCBpcyB0aGUgbG9vcCB0byBiZSB2ZWN0b3JpemVkLg0KPiAq Lw0KPiA+ID4gPiA+ID4gICAgZ2NjX2Fzc2VydCAobG9vcCA9PSBmaXJzdCB8fCBsb29wID09IHNl Y29uZCk7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gQEAgLTIyMTUsMTAgKzI1MzEsNDAgQEAg c2xwZWVsX3VwZGF0ZV9waGlfbm9kZXNfZm9yX2xvb3BzDQo+ID4gPiA+ID4gKGxvb3BfdmVjX2lu Zm8gbG9vcF92aW5mbywNCj4gPiA+ID4gPiA+ICAJew0KPiA+ID4gPiA+ID4gIAkgIHRyZWUgbmV3 X3JlcyA9IGNvcHlfc3NhX25hbWUgKFBISV9SRVNVTFQgKG9yaWdfcGhpKSk7DQo+ID4gPiA+ID4g PiAgCSAgZ3BoaSAqbGNzc2FfcGhpID0gY3JlYXRlX3BoaV9ub2RlIChuZXdfcmVzLA0KPiBiZXR3 ZWVuX2JiKTsNCj4gPiA+ID4gPiA+IC0JICBhZGRfcGhpX2FyZyAobGNzc2FfcGhpLCBhcmcsIHNp bmdsZV9leGl0IChmaXJzdCksDQo+ID4gPiA+ID4gVU5LTk9XTl9MT0NBVElPTik7DQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArCSAgLyogVGhlIGZpcnN0IGV4aXQgaXMgYWx3YXlzIHRoZSBs b29wIGxhdGNoLCBzbyBoYW5kbGUgdGhhdA0KPiA+ID4gPiA+ID4gKwkgICAgIHNlcGVyYXRlbHku ICAqLw0KPiA+ID4gPiA+ID4gKwkgIGdjY19hc3NlcnQgKGFyZyk7DQo+ID4gPiA+ID4gPiArCSAg YWRkX3BoaV9hcmcgKGxjc3NhX3BoaSwgYXJnLCBleGl0c1swXSwNCj4gVU5LTk9XTl9MT0NBVElP Tik7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCSAgLyogVGhlIGVhcmx5IGV4aXRzIGFy ZSBwcm9jZXNzZWQgaW4gb3JkZXIgc3RhcnRpbmcgZnJvbSBleGl0IDEuDQo+ICovDQo+ID4gPiA+ ID4gPiArCSAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGV4aXRzLmxlbmd0aCAoKTsgaSsrKQ0K PiA+ID4gPiA+ID4gKwkgICAgew0KPiA+ID4gPiA+ID4gKwkgICAgICB0cmVlIHBoaV9hcmc7DQo+ ID4gPiA+ID4gPiArCSAgICAgIGlmIChpdl9waGlfcCAodmVjdF9waGlfaW5mbykpDQo+ID4gPiA+ ID4gPiArCQkvKiBGb3IgaW5kdWN0aW9uIHZhbHVlcyBqdXN0IGNvcHkgdGhlIHByZXZpb3VzIG9u ZSBhcw0KPiB0aGUNCj4gPiA+ID4gPiA+ICsJCSAgIGN1cnJlbnQgaXRlcmF0aW9uIGRpZCBub3Qg ZmluaXNoLiAgV2UnbGwgdXBkYXRlIGFzDQo+IG5lZWRlZA0KPiA+ID4gPiA+ID4gKwkJICAgbGF0 ZXIgb24uICAqLw0KPiA+ID4gPiA+ID4gKwkJcGhpX2FyZyA9IGdpbXBsZV9waGlfcmVzdWx0IChv cmlnX3BoaSk7DQo+ID4gPiA+ID4gPiArCSAgICAgIGVsc2UNCj4gPiA+ID4gPiA+ICsJCXBoaV9h cmcgPSBnaW1wbGVfZmluZF9sYXN0X21lbV91c2UgKGV4aXRzW2ldKTsNCj4gPiA+ID4gPiA+ICsJ ICAgICAgLyogSWYgd2UgZGlkbid0IGZpbmQgYW55IGp1c3QgY29weSB0aGUgZXhpc3Rpbmcgb25l IGFuZA0KPiBsZWF2ZQ0KPiA+ID4gPiA+ID4gKwkJIGl0IHRvIHRoZSBvdGhlcnMgdG8gZml4IGl0 IHVwLiAgKi8NCj4gPiA+ID4gPiA+ICsJICAgICAgaWYgKCFwaGlfYXJnKQ0KPiA+ID4gPiA+ID4g KwkJcGhpX2FyZyA9IGdpbXBsZV9waGlfcmVzdWx0IChvcmlnX3BoaSk7DQo+ID4gPiA+ID4gPiAr CSAgICAgIGFkZF9waGlfYXJnIChsY3NzYV9waGksIHBoaV9hcmcsIGV4aXRzW2ldLA0KPiBVTktO T1dOX0xPQ0FUSU9OKTsNCj4gPiA+ID4gPiA+ICsJICAgIH0NCj4gPiA+ID4gPiA+ICAJICBhcmcg PSBuZXdfcmVzOw0KPiA+ID4gPiA+ID4gIAl9DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gKyAg ICAgIC8qIE5vcm1hbGx5IGFibGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgaXRlcmF0b3Ig Y291bnRlcg0KPiBhbmQNCj4gPiA+IHRoZQ0KPiA+ID4gPiA+ID4gKwkgaXZ0ZW1wcyBidSBsb29r aW5nIGF0IHRoZSBTVE1UX1ZJTkZPX1RZUEUgb2YgdGhlIHBoaQ0KPiBub2RlLg0KPiA+ID4gPiA+ ID4gKwkgaG93ZXZlciBmb3Igc29tZSByZWFzb24gdGhpcyBpc24ndCBjb25zaXN0ZW50bHkgc2V0 LiAgSXMgdGhlcmUNCj4gYQ0KPiA+ID4gPiA+ID4gKwkgYmV0dGVyIHdheT8/LiAgKi8NCj4gPiA+ ID4gPiA+ICsgICAgICBpZiAobGNzc2FfaXZ0bXANCj4gPiA+ID4gPiA+ICsJICAmJiBpdl9waGlf cCAodmVjdF9waGlfaW5mbykpDQo+ID4gPiA+ID4gPiArCSpsY3NzYV9pdnRtcCA9IGFyZzsNCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICAgICAgICAvKiBVcGRhdGUgUEhJIG5vZGUgaW4gdGhl IHNlY29uZCBsb29wIGJ5IHJlcGxhY2luZyBhcmcgb24gdGhlDQo+ID4gPiBsb29wJ3MNCj4gPiA+ ID4gPiA+ICAJIGluY29taW5nIGVkZ2UuICAqLw0KPiA+ID4gPiA+ID4gICAgICAgIGFkanVzdF9w aGlfYW5kX2RlYnVnX3N0bXRzICh1cGRhdGVfcGhpLA0KPiBzZWNvbmRfcHJlaGVhZGVyX2UsDQo+ ID4gPiA+ID4gYXJnKTsNCj4gPiA+ID4gPiA+IEBAIC0yMjI4LDcgKzI1NzQsOCBAQCBzbHBlZWxf dXBkYXRlX3BoaV9ub2Rlc19mb3JfbG9vcHMNCj4gPiA+ID4gPiAobG9vcF92ZWNfaW5mbyBsb29w X3ZpbmZvLA0KPiA+ID4gPiA+ID4gICAgICAgZm9yIGNvcnJlY3QgdmVjdG9yaXphdGlvbiBvZiBs aXZlIHN0bXRzLiAgKi8NCj4gPiA+ID4gPiA+ICAgIGlmIChsb29wID09IGZpcnN0KQ0KPiA+ID4g PiA+ID4gICAgICB7DQo+ID4gPiA+ID4gPiAtICAgICAgYmFzaWNfYmxvY2sgb3JpZ19leGl0ID0g c2luZ2xlX2V4aXQgKHNlY29uZCktPmRlc3Q7DQo+ID4gPiA+ID4gPiArICAgICAgYXV0b192ZWM8 ZWRnZT4gbmV3X2V4aXRzID0gZ2V0X2xvb3BfZXhpdF9lZGdlcyAoc2Vjb25kKTsNCj4gPiA+ID4g PiA+ICsgICAgICBiYXNpY19ibG9jayBvcmlnX2V4aXQgPSBuZXdfZXhpdHNbMF0tPmRlc3Q7DQo+ ID4gPiA+ID4gPiAgICAgICAgZm9yIChnc2lfb3JpZyA9IGdzaV9zdGFydF9waGlzIChvcmlnX2V4 aXQpOw0KPiA+ID4gPiA+ID4gIAkgICAhZ3NpX2VuZF9wIChnc2lfb3JpZyk7IGdzaV9uZXh0ICgm Z3NpX29yaWcpKQ0KPiA+ID4gPiA+ID4gIAl7DQo+ID4gPiA+ID4gPiBAQCAtMjI0Myw3ICsyNTkw LDE1IEBAIHNscGVlbF91cGRhdGVfcGhpX25vZGVzX2Zvcl9sb29wcw0KPiA+ID4gPiA+IChsb29w X3ZlY19pbmZvIGxvb3BfdmluZm8sDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gIAkgIHRyZWUg bmV3X3JlcyA9IGNvcHlfc3NhX25hbWUgKG9yaWdfYXJnKTsNCj4gPiA+ID4gPiA+ICAJICBncGhp ICpsY3BoaSA9IGNyZWF0ZV9waGlfbm9kZSAobmV3X3JlcywgYmV0d2Vlbl9iYik7DQo+ID4gPiA+ ID4gPiAtCSAgYWRkX3BoaV9hcmcgKGxjcGhpLCBvcmlnX2FyZywgc2luZ2xlX2V4aXQgKGZpcnN0 KSwNCj4gPiA+ID4gPiBVTktOT1dOX0xPQ0FUSU9OKTsNCj4gPiA+ID4gPiA+ICsJICAvKiBUaGUg Zmlyc3QgZXhpdCBpcyBhbHdheXMgdGhlIGxvb3AgbGF0Y2gsIHNvIGhhbmRsZSB0aGF0DQo+ID4g PiA+ID4gPiArCSAgICAgc2VwZXJhdGVseS4gICovDQo+ID4gPiA+ID4gPiArCSAgYWRkX3BoaV9h cmcgKGxjcGhpLCBvcmlnX2FyZywgbmV3X2V4aXRzWzBdLA0KPiA+ID4gPiA+IFVOS05PV05fTE9D QVRJT04pOw0KPiA+ID4gPiA+ID4gKwkgIC8qIFRoZSBlYXJseSBleGl0cyBhcmUgcHJvY2Vzc2Vk IGluIG9yZGVyIHN0YXJ0aW5nIGZyb20gZXhpdCAxLg0KPiAqLw0KPiA+ID4gPiA+ID4gKwkgIGZv ciAodW5zaWduZWQgaSA9IDE7IGkgPCBuZXdfZXhpdHMubGVuZ3RoICgpOyBpKyspDQo+ID4gPiA+ ID4gPiArCSAgICB7DQo+ID4gPiA+ID4gPiArCSAgICAgIHRyZWUgcGhpX2FyZyA9IGdpbXBsZV9w aGlfcmVzdWx0IChvcmlnX3BoaSk7DQo+ID4gPiA+ID4gPiArCSAgICAgIGFkZF9waGlfYXJnIChs Y3BoaSwgcGhpX2FyZywgZXhpdHNbaV0sDQo+IFVOS05PV05fTE9DQVRJT04pOw0KPiA+ID4gPiA+ ID4gKwkgICAgfQ0KPiA+ID4gPiA+ID4gIAl9DQo+ID4gPiA+ID4gPiAgICAgIH0NCj4gPiA+ID4g PiA+ICB9DQo+ID4gPiA+ID4gPiBAQCAtMjM5MywxMyArMjc0OCwxMSBAQCBzbHBlZWxfdXBkYXRl X3BoaV9ub2Rlc19mb3JfZ3VhcmQyDQo+ID4gPiAoY2xhc3MNCj4gPiA+ID4gPiBsb29wICpsb29w LCBjbGFzcyBsb29wICplcGlsb2csDQo+ID4gPiA+ID4gPiAgICBnY2NfYXNzZXJ0IChzaW5nbGVf c3VjY19wIChtZXJnZV9iYikpOw0KPiA+ID4gPiA+ID4gICAgZWRnZSBlID0gc2luZ2xlX3N1Y2Nf ZWRnZSAobWVyZ2VfYmIpOw0KPiA+ID4gPiA+ID4gICAgYmFzaWNfYmxvY2sgZXhpdF9iYiA9IGUt PmRlc3Q7DQo+ID4gPiA+ID4gPiAtICBnY2NfYXNzZXJ0IChzaW5nbGVfcHJlZF9wIChleGl0X2Ji KSk7DQo+ID4gPiA+ID4gPiAtICBnY2NfYXNzZXJ0IChzaW5nbGVfcHJlZCAoZXhpdF9iYikgPT0g c2luZ2xlX2V4aXQgKGVwaWxvZyktPmRlc3QpOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAg IGZvciAoZ3NpID0gZ3NpX3N0YXJ0X3BoaXMgKGV4aXRfYmIpOyAhZ3NpX2VuZF9wIChnc2kpOyBn c2lfbmV4dA0KPiAoJmdzaSkpDQo+ID4gPiA+ID4gPiAgICAgIHsNCj4gPiA+ID4gPiA+ICAgICAg ICBncGhpICp1cGRhdGVfcGhpID0gZ3NpLnBoaSAoKTsNCj4gPiA+ID4gPiA+IC0gICAgICB0cmVl IG9sZF9hcmcgPSBQSElfQVJHX0RFRiAodXBkYXRlX3BoaSwgMCk7DQo+ID4gPiA+ID4gPiArICAg ICAgdHJlZSBvbGRfYXJnID0gUEhJX0FSR19ERUYgKHVwZGF0ZV9waGksIGUtPmRlc3RfaWR4KTsN Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgICAgICAgdHJlZSBtZXJnZV9hcmcgPSBOVUxMX1RS RUU7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gQEAgLTI0MzgsMTIgKzI3OTEsMTQgQEAgc3Rh dGljIHZvaWQNCj4gPiA+ID4gPiA+ICBzbHBlZWxfdXBkYXRlX3BoaV9ub2Rlc19mb3JfbGNzc2Eg KGNsYXNzIGxvb3AgKmVwaWxvZykNCj4gPiA+ID4gPiA+ICB7DQo+ID4gPiA+ID4gPiAgICBncGhp X2l0ZXJhdG9yIGdzaTsNCj4gPiA+ID4gPiA+IC0gIGJhc2ljX2Jsb2NrIGV4aXRfYmIgPSBzaW5n bGVfZXhpdCAoZXBpbG9nKS0+ZGVzdDsNCj4gPiA+ID4gPiA+ICsgIGF1dG9fdmVjPGVkZ2U+IGV4 aXRzID0gZ2V0X2xvb3BfZXhpdF9lZGdlcyAoZXBpbG9nKTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiAtICBnY2NfYXNzZXJ0IChzaW5nbGVfcHJlZF9wIChleGl0X2JiKSk7DQo+ID4gPiA+ID4g PiAtICBlZGdlIGUgPSBFREdFX1BSRUQgKGV4aXRfYmIsIDApOw0KPiA+ID4gPiA+ID4gLSAgZm9y IChnc2kgPSBnc2lfc3RhcnRfcGhpcyAoZXhpdF9iYik7ICFnc2lfZW5kX3AgKGdzaSk7IGdzaV9u ZXh0DQo+ICgmZ3NpKSkNCj4gPiA+ID4gPiA+IC0gICAgcmVuYW1lX3VzZV9vcCAoUEhJX0FSR19E RUZfUFRSX0ZST01fRURHRSAoZ3NpLnBoaSAoKSwNCj4gZSkpOw0KPiA+ID4gPiA+ID4gKyAgZm9y ICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4aXRzLmxlbmd0aCAoKTsgaSsrKQ0KPiA+ID4gPiA+ID4g KyAgICB7DQo+ID4gPiA+ID4gPiArICAgICAgYmFzaWNfYmxvY2sgZXhpdF9iYiA9IGV4aXRzW2ld LT5kZXN0Ow0KPiA+ID4gPiA+ID4gKyAgICAgIGZvciAoZ3NpID0gZ3NpX3N0YXJ0X3BoaXMgKGV4 aXRfYmIpOyAhZ3NpX2VuZF9wIChnc2kpOyBnc2lfbmV4dA0KPiAoJmdzaSkpDQo+ID4gPiA+ID4g PiArCXJlbmFtZV91c2Vfb3AgKFBISV9BUkdfREVGX1BUUl9GUk9NX0VER0UgKGdzaS5waGkNCj4g KCksDQo+ID4gPiA+ID4gZXhpdHNbaV0pKTsNCj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ ID4gIH0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgLyogRVBJTE9HVUVfVklORk8gaXMgYW4g ZXBpbG9ndWUgbG9vcCB0aGF0IHdlIG5vdyBrbm93IHdvdWxkDQo+ID4gPiBuZWVkIHRvDQo+ID4g PiA+ID4gPiBAQCAtMjYyMSw2ICsyOTc2LDE0IEBAIHZlY3RfZG9fcGVlbGluZyAobG9vcF92ZWNf aW5mbw0KPiBsb29wX3ZpbmZvLA0KPiA+ID4gPiA+IHRyZWUgbml0ZXJzLCB0cmVlIG5pdGVyc20x LA0KPiA+ID4gPiA+ID4gICAgICBib3VuZF9lcGlsb2cgKz0gdmYgLSAxOw0KPiA+ID4gPiA+ID4g ICAgaWYgKExPT1BfVklORk9fUEVFTElOR19GT1JfR0FQUyAobG9vcF92aW5mbykpDQo+ID4gPiA+ ID4gPiAgICAgIGJvdW5kX2VwaWxvZyArPSAxOw0KPiA+ID4gPiA+ID4gKyAgLyogRm9yIGVhcmx5 IGJyZWFrcyB0aGUgc2NhbGFyIGxvb3AgbmVlZHMgdG8gZXhlY3V0ZSBhdCBtb3N0IFZGDQo+IHRp bWVzDQo+ID4gPiA+ID4gPiArICAgICB0byBmaW5kIHRoZSBlbGVtZW50IHRoYXQgY2F1c2VkIHRo ZSBicmVhay4gICovDQo+ID4gPiA+ID4gPiArICBpZiAoTE9PUF9WSU5GT19FQVJMWV9CUkVBS1Mg KGxvb3BfdmluZm8pKQ0KPiA+ID4gPiA+ID4gKyAgICB7DQo+ID4gPiA+ID4gPiArICAgICAgYm91 bmRfZXBpbG9nID0gdmY7DQo+ID4gPiA+ID4gPiArICAgICAgLyogRm9yY2UgYSBzY2FsYXIgZXBp bG9ndWUgYXMgd2UgY2FuJ3QgdmVjdG9yaXplIHRoZSBpbmRleA0KPiBmaW5kaW5nLg0KPiA+ID4g Ki8NCj4gPiA+ID4gPiA+ICsgICAgICB2ZWN0X2VwaWxvZ3VlcyA9IGZhbHNlOw0KPiA+ID4gPiA+ ID4gKyAgICB9DQo+ID4gPiA+ID4gPiAgICBib29sIGVwaWxvZ19wZWVsaW5nID0gbWF5YmVfbmUg KGJvdW5kX2VwaWxvZywgMFUpOw0KPiA+ID4gPiA+ID4gICAgcG9seV91aW50NjQgYm91bmRfc2Nh bGFyID0gYm91bmRfZXBpbG9nOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEBAIC0yNzgwLDE2 ICszMTQzLDI0IEBAIHZlY3RfZG9fcGVlbGluZyAobG9vcF92ZWNfaW5mbw0KPiA+ID4gbG9vcF92 aW5mbywNCj4gPiA+ID4gPiB0cmVlIG5pdGVycywgdHJlZSBuaXRlcnNtMSwNCj4gPiA+ID4gPiA+ ICAJCQkJICBib3VuZF9wcm9sb2cgKyBib3VuZF9lcGlsb2cpDQo+ID4gPiA+ID4gPiAgCQkgICAg ICA6ICghTE9PUF9SRVFVSVJFU19WRVJTSU9OSU5HIChsb29wX3ZpbmZvKQ0KPiA+ID4gPiA+ID4g IAkJCSB8fCB2ZWN0X2VwaWxvZ3VlcykpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAg LyogV2Ugb25seSBzdXBwb3J0IGVhcmx5IGJyZWFrIHZlY3Rvcml6YXRpb24gb24ga25vd24gYm91 bmRzIGF0DQo+ID4gPiB0aGlzDQo+ID4gPiA+ID4gdGltZS4NCj4gPiA+ID4gPiA+ICsgICAgIFRo aXMgbWVhbnMgdGhhdCBpZiB0aGUgdmVjdG9yIGxvb3AgY2FuJ3QgYmUgZW50ZXJlZCB0aGVuIHdl DQo+IHdvbid0DQo+ID4gPiA+ID4gZ2VuZXJhdGUNCj4gPiA+ID4gPiA+ICsgICAgIGl0IGF0IGFs bC4gIFNvIGZvciBub3cgZm9yY2Ugc2tpcF92ZWN0b3Igb2ZmIGJlY2F1c2UgdGhlIGFkZGl0aW9u YWwNCj4gPiA+IGNvbnRyb2wNCj4gPiA+ID4gPiA+ICsgICAgIGZsb3cgbWVzc2VzIHdpdGggdGhl IEJCIGV4aXRzIGFuZCB3ZSd2ZSBhbHJlYWR5IGFuYWx5emVkIHRoZW0uDQo+ICovDQo+ID4gPiA+ ID4gPiArIHNraXBfdmVjdG9yID0gc2tpcF92ZWN0b3IgJiYgIUxPT1BfVklORk9fRUFSTFlfQlJF QUtTDQo+ID4gPiA+ID4gKGxvb3BfdmluZm8pOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g ICAgLyogRXBpbG9nIGxvb3AgbXVzdCBiZSBleGVjdXRlZCBpZiB0aGUgbnVtYmVyIG9mIGl0ZXJh dGlvbnMgZm9yDQo+IGVwaWxvZw0KPiA+ID4gPiA+ID4gICAgICAgbG9vcCBpcyBrbm93biBhdCBj b21waWxlIHRpbWUsIG90aGVyd2lzZSB3ZSBuZWVkIHRvIGFkZCBhIGNoZWNrDQo+IGF0DQo+ID4g PiA+ID4gPiAgICAgICB0aGUgZW5kIG9mIHZlY3RvciBsb29wIGFuZCBza2lwIHRvIHRoZSBlbmQg b2YgZXBpbG9nIGxvb3AuICAqLw0KPiA+ID4gPiA+ID4gICAgYm9vbCBza2lwX2VwaWxvZyA9IChw cm9sb2dfcGVlbGluZyA8IDANCj4gPiA+ID4gPiA+ICAJCSAgICAgIHx8ICFMT09QX1ZJTkZPX05J VEVSU19LTk9XTl9QDQo+IChsb29wX3ZpbmZvKQ0KPiA+ID4gPiA+ID4gIAkJICAgICAgfHwgIXZm LmlzX2NvbnN0YW50ICgpKTsNCj4gPiA+ID4gPiA+IC0gIC8qIFBFRUxJTkdfRk9SX0dBUFMgaXMg c3BlY2lhbCBiZWNhdXNlIGVwaWxvZyBsb29wIG11c3QgYmUNCj4gPiA+IGV4ZWN1dGVkLg0KPiA+ ID4gPiA+ICovDQo+ID4gPiA+ID4gPiAtICBpZiAoTE9PUF9WSU5GT19QRUVMSU5HX0ZPUl9HQVBT IChsb29wX3ZpbmZvKSkNCj4gPiA+ID4gPiA+ICsgIC8qIFBFRUxJTkdfRk9SX0dBUFMgYW5kIHBl ZWxpbmcgZm9yIGVhcmx5IGJyZWFrcyBhcmUgc3BlY2lhbA0KPiA+ID4gYmVjYXVzZQ0KPiA+ID4g PiA+IGVwaWxvZw0KPiA+ID4gPiA+ID4gKyAgICAgbG9vcCBtdXN0IGJlIGV4ZWN1dGVkLiAgKi8N Cj4gPiA+ID4gPiA+ICsgIGlmIChMT09QX1ZJTkZPX1BFRUxJTkdfRk9SX0dBUFMgKGxvb3Bfdmlu Zm8pDQo+ID4gPiA+ID4gPiArICAgICAgfHwgTE9PUF9WSU5GT19FQVJMWV9CUkVBS1MgKGxvb3Bf dmluZm8pKQ0KPiA+ID4gPiA+ID4gICAgICBza2lwX2VwaWxvZyA9IGZhbHNlOw0KPiA+ID4gPiA+ ID4gLQ0KPiA+ID4gPiA+ID4gICAgY2xhc3MgbG9vcCAqc2NhbGFyX2xvb3AgPSBMT09QX1ZJTkZP X1NDQUxBUl9MT09QDQo+IChsb29wX3ZpbmZvKTsNCj4gPiA+ID4gPiA+ICAgIGF1dG9fdmVjPHBy b2ZpbGVfY291bnQ+IG9yaWdpbmFsX2NvdW50czsNCj4gPiA+ID4gPiA+ICAgIGJhc2ljX2Jsb2Nr ICpvcmlnaW5hbF9iYnMgPSBOVUxMOw0KPiA+ID4gPiA+ID4gQEAgLTI4MjgsNyArMzE5OSw3IEBA IHZlY3RfZG9fcGVlbGluZyAobG9vcF92ZWNfaW5mbw0KPiBsb29wX3ZpbmZvLA0KPiA+ID4gdHJl ZQ0KPiA+ID4gPiA+IG5pdGVycywgdHJlZSBuaXRlcnNtMSwNCj4gPiA+ID4gPiA+ICAgIGlmIChw cm9sb2dfcGVlbGluZykNCj4gPiA+ID4gPiA+ICAgICAgew0KPiA+ID4gPiA+ID4gICAgICAgIGUg PSBsb29wX3ByZWhlYWRlcl9lZGdlIChsb29wKTsNCj4gPiA+ID4gPiA+IC0gICAgICBpZiAoIXNs cGVlbF9jYW5fZHVwbGljYXRlX2xvb3BfcCAobG9vcCwgZSkpDQo+ID4gPiA+ID4gPiArICAgICAg aWYgKCFzbHBlZWxfY2FuX2R1cGxpY2F0ZV9sb29wX3AgKGxvb3BfdmluZm8sIGUpKQ0KPiA+ID4g PiA+ID4gIAl7DQo+ID4gPiA+ID4gPiAgCSAgZHVtcF9wcmludGZfbG9jIChNU0dfTUlTU0VEX09Q VElNSVpBVElPTiwgbG9vcF9sb2MsDQo+ID4gPiA+ID4gPiAgCQkJICAgImxvb3AgY2FuJ3QgYmUg ZHVwbGljYXRlZCB0byBwcmVoZWFkZXINCj4gZWRnZS5cbiIpOw0KPiA+ID4gPiA+ID4gQEAgLTI4 NDMsNyArMzIxNCw3IEBAIHZlY3RfZG9fcGVlbGluZyAobG9vcF92ZWNfaW5mbw0KPiBsb29wX3Zp bmZvLA0KPiA+ID4gdHJlZQ0KPiA+ID4gPiA+IG5pdGVycywgdHJlZSBuaXRlcnNtMSwNCj4gPiA+ ID4gPiA+ICAJICBnY2NfdW5yZWFjaGFibGUgKCk7DQo+ID4gPiA+ID4gPiAgCX0NCj4gPiA+ID4g PiA+ICAgICAgICBwcm9sb2ctPmZvcmNlX3ZlY3Rvcml6ZSA9IGZhbHNlOw0KPiA+ID4gPiA+ID4g LSAgICAgIHNscGVlbF91cGRhdGVfcGhpX25vZGVzX2Zvcl9sb29wcyAobG9vcF92aW5mbywgcHJv bG9nLCBsb29wLA0KPiA+ID4gdHJ1ZSk7DQo+ID4gPiA+ID4gPiArICAgICAgc2xwZWVsX3VwZGF0 ZV9waGlfbm9kZXNfZm9yX2xvb3BzIChsb29wX3ZpbmZvLCBwcm9sb2csIGxvb3AsDQo+ID4gPiBO VUxMLA0KPiA+ID4gPiA+IHRydWUpOw0KPiA+ID4gPiA+ID4gICAgICAgIGZpcnN0X2xvb3AgPSBw cm9sb2c7DQo+ID4gPiA+ID4gPiAgICAgICAgcmVzZXRfb3JpZ2luYWxfY29weV90YWJsZXMgKCk7 DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gQEAgLTI5MDIsMTEgKzMyNzMsMTMgQEAgdmVjdF9k b19wZWVsaW5nIChsb29wX3ZlY19pbmZvDQo+ID4gPiBsb29wX3ZpbmZvLA0KPiA+ID4gPiA+IHRy ZWUgbml0ZXJzLCB0cmVlIG5pdGVyc20xLA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAgIGlm IChlcGlsb2dfcGVlbGluZykNCj4gPiA+ID4gPiA+ICAgICAgew0KPiA+ID4gPiA+ID4gLSAgICAg IGUgPSBzaW5nbGVfZXhpdCAobG9vcCk7DQo+ID4gPiA+ID4gPiAtICAgICAgaWYgKCFzbHBlZWxf Y2FuX2R1cGxpY2F0ZV9sb29wX3AgKGxvb3AsIGUpKQ0KPiA+ID4gPiA+ID4gKyAgICAgIGF1dG9f dmVjPGVkZ2U+IGV4aXRzID0gZ2V0X2xvb3BfZXhpdF9lZGdlcyAobG9vcCk7DQo+ID4gPiA+ID4g PiArICAgICAgZSA9IGV4aXRzWzBdOw0KPiA+ID4gPiA+ID4gKyAgICAgIGlmICghc2xwZWVsX2Nh bl9kdXBsaWNhdGVfbG9vcF9wIChsb29wX3ZpbmZvLCBlKSkNCj4gPiA+ID4gPiA+ICAJew0KPiA+ ID4gPiA+ID4gLQkgIGR1bXBfcHJpbnRmX2xvYyAoTVNHX01JU1NFRF9PUFRJTUlaQVRJT04sIGxv b3BfbG9jLA0KPiA+ID4gPiA+ID4gLQkJCSAgICJsb29wIGNhbid0IGJlIGR1cGxpY2F0ZWQgdG8g ZXhpdCBlZGdlLlxuIik7DQo+ID4gPiA+ID4gPiArCSAgaWYgKGR1bXBfZW5hYmxlZF9wICgpKQ0K PiA+ID4gPiA+ID4gKwkgICAgZHVtcF9wcmludGZfbG9jIChNU0dfTUlTU0VEX09QVElNSVpBVElP TiwgbG9vcF9sb2MsDQo+ID4gPiA+ID4gPiArCQkJICAgICAibG9vcCBjYW4ndCBiZSBkdXBsaWNh dGVkIHRvIGV4aXQgZWRnZS5cbiIpOw0KPiA+ID4gPiA+ID4gIAkgIGdjY191bnJlYWNoYWJsZSAo KTsNCj4gPiA+ID4gPiA+ICAJfQ0KPiA+ID4gPiA+ID4gICAgICAgIC8qIFBlZWwgZXBpbG9nIGFu ZCBwdXQgaXQgb24gZXhpdCBlZGdlIG9mIGxvb3AuICBJZiB3ZSBhcmUNCj4gdmVjdG9yaXppbmcN Cj4gPiA+ID4gPiA+IEBAIC0yOTIwLDEyICszMjkzLDE2IEBAIHZlY3RfZG9fcGVlbGluZyAobG9v cF92ZWNfaW5mbw0KPiA+ID4gbG9vcF92aW5mbywNCj4gPiA+ID4gPiB0cmVlIG5pdGVycywgdHJl ZSBuaXRlcnNtMSwNCj4gPiA+ID4gPiA+ICAgICAgICBlcGlsb2cgPSBzbHBlZWxfdHJlZV9kdXBs aWNhdGVfbG9vcF90b19lZGdlX2NmZyAobG9vcCwgZXBpbG9nLA0KPiBlKTsNCj4gPiA+ID4gPiA+ ICAgICAgICBpZiAoIWVwaWxvZykNCj4gPiA+ID4gPiA+ICAJew0KPiA+ID4gPiA+ID4gLQkgIGR1 bXBfcHJpbnRmX2xvYyAoTVNHX01JU1NFRF9PUFRJTUlaQVRJT04sIGxvb3BfbG9jLA0KPiA+ID4g PiA+ID4gLQkJCSAgICJzbHBlZWxfdHJlZV9kdXBsaWNhdGVfbG9vcF90b19lZGdlX2NmZw0KPiA+ ID4gPiA+IGZhaWxlZC5cbiIpOw0KPiA+ID4gPiA+ID4gKwkgIGlmIChkdW1wX2VuYWJsZWRfcCAo KSkNCj4gPiA+ID4gPiA+ICsJICAgIGR1bXBfcHJpbnRmX2xvYyAoTVNHX01JU1NFRF9PUFRJTUla QVRJT04sIGxvb3BfbG9jLA0KPiA+ID4gPiA+ID4gKwkJCSAgICAgInNscGVlbF90cmVlX2R1cGxp Y2F0ZV9sb29wX3RvX2VkZ2VfY2ZnDQo+ID4gPiA+ID4gZmFpbGVkLlxuIik7DQo+ID4gPiA+ID4g PiAgCSAgZ2NjX3VucmVhY2hhYmxlICgpOw0KPiA+ID4gPiA+ID4gIAl9DQo+ID4gPiA+ID4gPiAg ICAgICAgZXBpbG9nLT5mb3JjZV92ZWN0b3JpemUgPSBmYWxzZTsNCj4gPiA+ID4gPiA+IC0gICAg ICBzbHBlZWxfdXBkYXRlX3BoaV9ub2Rlc19mb3JfbG9vcHMgKGxvb3BfdmluZm8sIGxvb3AsIGVw aWxvZywNCj4gPiA+IGZhbHNlKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgICB0 cmVlIGVhcmx5X2JyZWFrX2l2X25hbWU7DQo+ID4gPiA+ID4gPiArICAgICAgc2xwZWVsX3VwZGF0 ZV9waGlfbm9kZXNfZm9yX2xvb3BzIChsb29wX3ZpbmZvLCBsb29wLCBlcGlsb2csDQo+ID4gPiA+ ID4gPiArCQkJCQkgJmVhcmx5X2JyZWFrX2l2X25hbWUsDQo+IGZhbHNlKTsNCj4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiAgICAgICAgLyogU2NhbGFyIHZlcnNpb24gbG9vcCBtYXkgYmUgcHJlZmVy cmVkLiAgSW4gdGhpcyBjYXNlLCBhZGQgZ3VhcmQNCj4gPiA+ID4gPiA+ICAJIGFuZCBza2lwIHRv IGVwaWxvZy4gIE5vdGUgdGhpcyBvbmx5IGhhcHBlbnMgd2hlbiB0aGUgbnVtYmVyDQo+IG9mDQo+ ID4gPiA+ID4gPiBAQCAtMjk3OCw2ICszMzU1LDcgQEAgdmVjdF9kb19wZWVsaW5nIChsb29wX3Zl Y19pbmZvDQo+IGxvb3BfdmluZm8sDQo+ID4gPiB0cmVlDQo+ID4gPiA+ID4gbml0ZXJzLCB0cmVl IG5pdGVyc20xLA0KPiA+ID4gPiA+ID4gICAgICAgIHZlY3RfZ2VuX3ZlY3Rvcl9sb29wX25pdGVy cyAobG9vcF92aW5mbywgbml0ZXJzLA0KPiA+ID4gPiA+ID4gIAkJCQkgICBuaXRlcnNfdmVjdG9y LCBzdGVwX3ZlY3RvciwNCj4gPiA+ID4gPiA+ICAJCQkJICAgbml0ZXJzX25vX292ZXJmbG93KTsN Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICAgICAgICBpZiAoIWludGVnZXJfb25lcCAoKnN0 ZXBfdmVjdG9yKSkNCj4gPiA+ID4gPiA+ICAJew0KPiA+ID4gPiA+ID4gIAkgIC8qIE9uIGV4aXQg ZnJvbSB0aGUgbG9vcCB3ZSB3aWxsIGhhdmUgYW4gZWFzeSB3YXkgb2YNCj4gY2FsY2FsYXRpbmcN Cj4gPiA+ID4gPiA+IEBAIC0yOTg3LDkgKzMzNjUsMTMgQEAgdmVjdF9kb19wZWVsaW5nIChsb29w X3ZlY19pbmZvDQo+IGxvb3BfdmluZm8sDQo+ID4gPiA+ID4gdHJlZSBuaXRlcnMsIHRyZWUgbml0 ZXJzbTEsDQo+ID4gPiA+ID4gPiAgCSAgU1NBX05BTUVfREVGX1NUTVQgKG5pdGVyc192ZWN0b3Jf bXVsdF92ZikgPQ0KPiA+ID4gPiA+IGdpbXBsZV9idWlsZF9ub3AgKCk7DQo+ID4gPiA+ID4gPiAg CSAgKm5pdGVyc192ZWN0b3JfbXVsdF92Zl92YXIgPSBuaXRlcnNfdmVjdG9yX211bHRfdmY7DQo+ ID4gPiA+ID4gPiAgCX0NCj4gPiA+ID4gPiA+ICsgICAgICBlbHNlIGlmIChMT09QX1ZJTkZPX0VB UkxZX0JSRUFLUyAobG9vcF92aW5mbykpDQo+ID4gPiA+ID4gPiArCXZlY3RfZ2VuX3ZlY3Rvcl9s b29wX25pdGVyc19tdWx0X3ZmIChsb29wX3ZpbmZvLA0KPiA+ID4gPiA+IGVhcmx5X2JyZWFrX2l2 X25hbWUsDQo+ID4gPiA+ID4gPiArCQkJCQkgICAgICZuaXRlcnNfdmVjdG9yX211bHRfdmYpOw0K PiA+ID4gPiA+ID4gICAgICAgIGVsc2UNCj4gPiA+ID4gPiA+ICAJdmVjdF9nZW5fdmVjdG9yX2xv b3Bfbml0ZXJzX211bHRfdmYgKGxvb3BfdmluZm8sDQo+ICpuaXRlcnNfdmVjdG9yLA0KPiA+ID4g PiA+ID4gIAkJCQkJICAgICAmbml0ZXJzX3ZlY3Rvcl9tdWx0X3ZmKTsNCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICAgICAgICAvKiBVcGRhdGUgSVZzIG9mIG9yaWdpbmFsIGxvb3AgYXMgaWYg dGhleSB3ZXJlIGFkdmFuY2VkIGJ5DQo+ID4gPiA+ID4gPiAgCSBuaXRlcnNfdmVjdG9yX211bHRf dmYgc3RlcHMuICAqLw0KPiA+ID4gPiA+ID4gICAgICAgIGdjY19jaGVja2luZ19hc3NlcnQgKHZl Y3RfY2FuX2FkdmFuY2VfaXZzX3AgKGxvb3BfdmluZm8pKTsNCj4gPiA+ID4gPiA+IEBAIC0yOTk3 LDEyICszMzc5LDk3IEBAIHZlY3RfZG9fcGVlbGluZyAobG9vcF92ZWNfaW5mbw0KPiA+ID4gbG9v cF92aW5mbywNCj4gPiA+ID4gPiB0cmVlIG5pdGVycywgdHJlZSBuaXRlcnNtMSwNCj4gPiA+ID4g PiA+ICAgICAgICB2ZWN0X3VwZGF0ZV9pdnNfYWZ0ZXJfdmVjdG9yaXplciAobG9vcF92aW5mbywN Cj4gPiA+IG5pdGVyc192ZWN0b3JfbXVsdF92ZiwNCj4gPiA+ID4gPiA+ICAJCQkJCXVwZGF0ZV9l KTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiArICAgICAgLyogRm9yIGVhcmx5IGJyZWFrcyB3 ZSBtdXN0IGNyZWF0ZSBhIGd1YXJkIHRvIGNoZWNrIGhvdyBtYW55DQo+ID4gPiA+ID4gaXRlcmF0 aW9ucw0KPiA+ID4gPiA+ID4gKwkgb2YgdGhlIHNjYWxhciBsb29wIGFyZSB5ZXQgdG8gYmUgcGVy Zm9ybWVkLiAgKi8NCj4gPiA+ID4gPiA+ICsgICAgICBpZiAoTE9PUF9WSU5GT19FQVJMWV9CUkVB S1MgKGxvb3BfdmluZm8pKQ0KPiA+ID4gPiA+ID4gKwl7DQo+ID4gPiA+ID4gPiArCSAgZ2NjX2Fz c2VydCAoZWFybHlfYnJlYWtfaXZfbmFtZSk7DQo+ID4gPiA+ID4gPiArCSAgdHJlZSBpdnRtcCA9 DQo+ID4gPiA+ID4gPiArCSAgICB2ZWN0X3VwZGF0ZV9pdnNfYWZ0ZXJfZWFybHlfYnJlYWsgKGxv b3BfdmluZm8sIGVwaWxvZywgdmYsDQo+IG5pdGVycywNCj4gPiA+ID4gPiA+ICsJCQkJCSAgICAg ICAqbml0ZXJzX3ZlY3RvciwNCj4gdXBkYXRlX2UpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKwkgIHRyZWUgZ3VhcmRfY29uZCA9IGZvbGRfYnVpbGQyIChFUV9FWFBSLA0KPiBib29sZWFu X3R5cGVfbm9kZSwNCj4gPiA+ID4gPiA+ICsJCQkJCSBmb2xkX2NvbnZlcnQgKFRSRUVfVFlQRQ0K PiAobml0ZXJzKSwNCj4gPiA+ID4gPiA+ICsJCQkJCQkgICAgICAgaXZ0bXApLA0KPiA+ID4gPiA+ ID4gKwkJCQkJIGJ1aWxkX3plcm9fY3N0IChUUkVFX1RZUEUNCj4gKG5pdGVycykpKTsNCj4gPiA+ ID4gPiA+ICsJICBiYXNpY19ibG9jayBndWFyZF9iYiA9IG5vcm1hbF9leGl0IChsb29wKS0+ZGVz dDsNCj4gPiA+ID4gPiA+ICsJICBhdXRvX3ZlYzxlZGdlPiBuZXdfZXhpdHMgPSBnZXRfbG9vcF9l eGl0X2VkZ2VzDQo+IChlcGlsb2cpOw0KPiA+ID4gPiA+ID4gKwkgIC8qIElmIHdlIGhhZCBhIGZh bGx0aHJvdWdoIGVkZ2UsIHRoZSBndWFyZCB3aWxsIHRoZSB0aHJlYWRlZA0KPiB0aHJvdWdoDQo+ ID4gPiA+ID4gPiArCSAgICAgYW5kIHNvIHdlIG1heSBuZWVkIHRvIGZpbmQgdGhlIGFjdHVhbCBm aW5hbCBlZGdlLiAgKi8NCj4gPiA+ID4gPiA+ICsJICBlZGdlIGZpbmFsX2VkZ2UgPSBuZXdfZXhp dHNbMF07DQo+ID4gPiA+ID4gPiArCSAgYmFzaWNfYmxvY2sgZ3VhcmRfdG87DQo+ID4gPiA+ID4g PiArCSAgYm9vbCBmbl9leGl0X3AgPSBmYWxzZTsNCj4gPiA+ID4gPiA+ICsJICBpZiAoZ3NpX2Vu ZF9wIChnc2lfc3RhcnRfbm9uZGVidWdfYmIgKGZpbmFsX2VkZ2UtPmRlc3QpKQ0KPiA+ID4gPiA+ ID4gKwkgICAgICAmJiAhZ3NpX2VuZF9wIChnc2lfc3RhcnRfcGhpcyAoZmluYWxfZWRnZS0+ZGVz dCkpDQo+ID4gPiA+ID4gPiArCSAgICAgICYmIHNpbmdsZV9zdWNjX3AgKGZpbmFsX2VkZ2UtPmRl c3QpKQ0KPiA+ID4gPiA+ID4gKwkgICAgew0KPiA+ID4gPiA+ID4gKwkgICAgICBhdXRvIGdzaSA9 IGdzaV9zdGFydF9waGlzIChmaW5hbF9lZGdlLT5kZXN0KTsNCj4gPiA+ID4gPiA+ICsJICAgICAg d2hpbGUgKCFnc2lfZW5kX3AgKGdzaSkpDQo+ID4gPiA+ID4gPiArCQlnc2lfcmVtb3ZlICgmZ3Np LCB0cnVlKTsNCj4gPiA+ID4gPiA+ICsJICAgICAgZ3VhcmRfdG8gPSBmaW5hbF9lZGdlLT5kZXN0 Ow0KPiA+ID4gPiA+ID4gKwkgICAgICBmbl9leGl0X3AgPSB0cnVlOw0KPiA+ID4gPiA+ID4gKwkg ICAgfQ0KPiA+ID4gPiA+ID4gKwkgIGVsc2UNCj4gPiA+ID4gPiA+ICsJICAgIGd1YXJkX3RvID0g c3BsaXRfZWRnZSAobm9ybWFsX2V4aXQgKGVwaWxvZykpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKwkgIGVkZ2UgZ3VhcmRfZSA9IHNscGVlbF9hZGRfbG9vcF9ndWFyZCAoZ3VhcmRfYmIs DQo+IGd1YXJkX2NvbmQsDQo+ID4gPiA+ID4gZ3VhcmRfdG8sDQo+ID4gPiA+ID4gPiArCQkJCQkg ICBndWFyZF9iYiwNCj4gPiA+ID4gPiA+ICsJCQkJCSAgIHByb2JfZXBpbG9nLmludmVydCAoKSwN Cj4gPiA+ID4gPiA+ICsJCQkJCSAgIGlycmVkX2ZsYWcpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKwkgIGJhc2ljX2Jsb2NrIGRlc3QgPSBzaW5nbGVfc3VjYyAoZ3VhcmRfdG8pOw0KPiA+ ID4gPiA+ID4gKwkgIC8qIElmIHdlIGhhdmUgYSBzaW5nbGUgcHJlZCB0aGVuIHRoZSBwcmV2aW91 cyBibG9jayBpcyB0aGUNCj4gaW1tZWRpYXRlDQo+ID4gPiA+ID4gPiArCSAgICAgZG9taW5hdG9y LiAgIFRoaXMgbWF5IG9yIG1heSBub3QgYmUgdGhlIGd1YXJkIGJiLg0KPiBIb3dldmVyIGlmIHdl DQo+ID4gPiA+ID4gPiArCSAgICAgaGF2ZSBtdWx0aXBsZSBwcmVkIHRoZW4gdGhlIGd1YXJkIEJC IG11c3QgYmUgdGhlDQo+IGRvbWluYXRvciBhcyBhbGwNCj4gPiA+ID4gPiA+ICsJICAgICBwcmV2 aW91cyBleGl0cyBnb3QgcmV3cml0ZWQgdG8gdGhlIGd1YXJkIEJCLiAgKi8NCj4gPiA+ID4gPiA+ ICsJICBpZiAoc2luZ2xlX3ByZWRfcCAoZGVzdCkpDQo+ID4gPiA+ID4gPiArCSAgICBzZXRfaW1t ZWRpYXRlX2RvbWluYXRvciAoQ0RJX0RPTUlOQVRPUlMsIGRlc3QsDQo+IGd1YXJkX3RvKTsNCj4g PiA+ID4gPiA+ICsJICBlbHNlDQo+ID4gPiA+ID4gPiArCSAgICBzZXRfaW1tZWRpYXRlX2RvbWlu YXRvciAoQ0RJX0RPTUlOQVRPUlMsIGRlc3QsDQo+IGd1YXJkX2JiKTsNCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICsJICAvKiBXZSBtdXN0IHVwZGF0ZSBhbGwgdGhlIGVkZ2VzIGZyb20gdGhl IG5ldyBndWFyZF9iYi4NCj4gKi8NCj4gPiA+ID4gPiA+ICsJICBzbHBlZWxfdXBkYXRlX3BoaV9u b2Rlc19mb3JfZ3VhcmQyIChsb29wLCBlcGlsb2csDQo+IGd1YXJkX2UsDQo+ID4gPiA+ID4gPiAr CQkJCQkgICAgICBmaW5hbF9lZGdlKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsJICAv KiBJZiB3ZSBoYXZlIGFuIGFkZGl0aW9uYWwgZnVuY3Rpb25lIGV4aXQgYmxvY2ssIHRoZW4gdGhy ZWFkDQo+IHRoZQ0KPiA+ID4gPiA+IHVwZGF0ZXMNCj4gPiA+ID4gPiA+ICsJICAgICB0aHJvdWdo IHRvIHRoZSBibG9jay4gIExlYXZpbmcgaXQgdXAgdG8gdGhlIExDU1NBIGNsZWFudXANCj4gcGFz cyB3aWxsDQo+ID4gPiA+ID4gPiArCSAgICAgZ2V0IHRoZSB3cm9uZyB2YWx1ZXMgaGVyZSBhcyBp dCBjYW4ndCBoYW5kbGUgdGhlIG1lcmdlDQo+IGJsb2NrIHdlDQo+ID4gPiA+ID4ganVzdA0KPiA+ ID4gPiA+ID4gKwkgICAgIG1hZGUgY29ycmVjdGx5LiAgKi8NCj4gPiA+ID4gPiA+ICsJICBpZiAo Zm5fZXhpdF9wKQ0KPiA+ID4gPiA+ID4gKwkgICAgew0KPiA+ID4gPiA+ID4gKwkJZ3BoaV9pdGVy YXRvciBnc2lfdXBkYXRlLCBnc2lfb3JpZywgZ3NpX3ZlY3Q7DQo+ID4gPiA+ID4gPiArCQlmb3Ig KGdzaV9vcmlnID0gZ3NpX3N0YXJ0X3BoaXMgKGVwaWxvZy0+aGVhZGVyKSwNCj4gPiA+ID4gPiA+ ICsJCSAgICAgZ3NpX3VwZGF0ZSA9IGdzaV9zdGFydF9waGlzIChndWFyZF9lLT5kZXN0KSwNCj4g PiA+ID4gPiA+ICsJCSAgICAgZ3NpX3ZlY3QgPSBnc2lfc3RhcnRfcGhpcyAobG9vcC0+aGVhZGVy KTsNCj4gPiA+ID4gPiA+ICsJCSAgICAgIWdzaV9lbmRfcCAoZ3NpX29yaWcpICYmICFnc2lfZW5k X3AgKGdzaV91cGRhdGUpDQo+ID4gPiA+ID4gPiArCQkgICAgICYmICFnc2lfZW5kX3AgKGdzaV92 ZWN0KTsNCj4gPiA+ID4gPiA+ICsJCSAgICAgZ3NpX25leHQgKCZnc2lfb3JpZyksIGdzaV9uZXh0 ICgmZ3NpX3VwZGF0ZSksDQo+ID4gPiA+ID4gPiArCQkgICAgIGdzaV9uZXh0ICgmZ3NpX3ZlY3Qp KQ0KPiA+ID4gPiA+ID4gKwkJICB7DQo+ID4gPiA+ID4gPiArCQkgICAgZ3BoaSAqb3JpZ19waGkg PSBnc2lfb3JpZy5waGkgKCk7DQo+ID4gPiA+ID4gPiArCQkgICAgZ3BoaSAqdXBkYXRlX3BoaSA9 IGdzaV91cGRhdGUucGhpICgpOw0KPiA+ID4gPiA+ID4gKwkJICAgIGdwaGkgKnZlY3RfcGhpID0g Z3NpX3ZlY3QucGhpICgpOw0KPiA+ID4gPiA+ID4gKwkJICAgIHN0bXRfdmVjX2luZm8gcGhpX2lu Zm8gPSBsb29wX3ZpbmZvLT5sb29rdXBfc3RtdA0KPiA+ID4gPiA+ICh2ZWN0X3BoaSk7DQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCQkgICAgaWYgKGl2X3BoaV9wIChwaGlfaW5mbykpDQo+ ID4gPiA+ID4gPiArCQkgICAgICBjb250aW51ZTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsJCSAgICB0cmVlIHBoaV9hcmcgPSBQSElfQVJHX0RFRl9GUk9NX0VER0UNCj4gKG9yaWdfcGhp LA0KPiA+ID4gPiA+IHVwZGF0ZV9lKTsNCj4gPiA+ID4gPiA+ICsJCSAgICBTRVRfUEhJX0FSR19E RUYgKHVwZGF0ZV9waGksIHVwZGF0ZV9lLQ0KPiA+ZGVzdF9pZHgsDQo+ID4gPiA+ID4gcGhpX2Fy Zyk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCQkgICAgcGhpX2FyZyA9IFBISV9BUkdf REVGX0ZST01fRURHRSAob3JpZ19waGksDQo+IGd1YXJkX2UpOw0KPiA+ID4gPiA+ID4gKwkJICAg IFNFVF9QSElfQVJHX0RFRiAodXBkYXRlX3BoaSwgZ3VhcmRfZS0NCj4gPmRlc3RfaWR4LA0KPiA+ ID4gPiA+IHBoaV9hcmcpOw0KPiA+ID4gPiA+ID4gKwkJICB9DQo+ID4gPiA+ID4gPiArCSAgICB9 DQo+ID4gPiA+ID4gPiArCSAgZmx1c2hfcGVuZGluZ19zdG10cyAoZ3VhcmRfZSk7DQo+ID4gPiA+ ID4gPiArCX0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICAgICAgICBpZiAoc2tpcF9lcGls b2cpDQo+ID4gPiA+ID4gPiAgCXsNCj4gPiA+ID4gPiA+ICAJICBndWFyZF9jb25kID0gZm9sZF9i dWlsZDIgKEVRX0VYUFIsIGJvb2xlYW5fdHlwZV9ub2RlLA0KPiA+ID4gPiA+ID4gIAkJCQkgICAg bml0ZXJzLCBuaXRlcnNfdmVjdG9yX211bHRfdmYpOw0KPiA+ID4gPiA+ID4gLQkgIGd1YXJkX2Ji ID0gc2luZ2xlX2V4aXQgKGxvb3ApLT5kZXN0Ow0KPiA+ID4gPiA+ID4gLQkgIGd1YXJkX3RvID0g c3BsaXRfZWRnZSAoc2luZ2xlX2V4aXQgKGVwaWxvZykpOw0KPiA+ID4gPiA+ID4gKwkgIGd1YXJk X2JiID0gbm9ybWFsX2V4aXQgKGxvb3ApLT5kZXN0Ow0KPiA+ID4gPiA+ID4gKwkgIGd1YXJkX3Rv ID0gc3BsaXRfZWRnZSAobm9ybWFsX2V4aXQgKGVwaWxvZykpOw0KPiA+ID4gPiA+ID4gIAkgIGd1 YXJkX2UgPSBzbHBlZWxfYWRkX2xvb3BfZ3VhcmQgKGd1YXJkX2JiLCBndWFyZF9jb25kLA0KPiA+ ID4gPiA+IGd1YXJkX3RvLA0KPiA+ID4gPiA+ID4gIAkJCQkJICAgc2tpcF92ZWN0b3IgPyBhbmNo b3IgOg0KPiBndWFyZF9iYiwNCj4gPiA+ID4gPiA+ICAJCQkJCSAgIHByb2JfZXBpbG9nLmludmVy dCAoKSwNCj4gPiA+ID4gPiA+IEBAIC0zMDEwLDcgKzM0NzcsNyBAQCB2ZWN0X2RvX3BlZWxpbmcg KGxvb3BfdmVjX2luZm8NCj4gbG9vcF92aW5mbywNCj4gPiA+IHRyZWUNCj4gPiA+ID4gPiBuaXRl cnMsIHRyZWUgbml0ZXJzbTEsDQo+ID4gPiA+ID4gPiAgCSAgaWYgKHZlY3RfZXBpbG9ndWVzKQ0K PiA+ID4gPiA+ID4gIAkgICAgZXBpbG9ndWVfdmluZm8tPnNraXBfdGhpc19sb29wX2VkZ2UgPSBn dWFyZF9lOw0KPiA+ID4gPiA+ID4gIAkgIHNscGVlbF91cGRhdGVfcGhpX25vZGVzX2Zvcl9ndWFy ZDIgKGxvb3AsIGVwaWxvZywNCj4gZ3VhcmRfZSwNCj4gPiA+ID4gPiA+IC0JCQkJCSAgICAgIHNp bmdsZV9leGl0IChlcGlsb2cpKTsNCj4gPiA+ID4gPiA+ICsJCQkJCSAgICAgIG5vcm1hbF9leGl0 IChlcGlsb2cpKTsNCj4gPiA+ID4gPiA+ICAJICAvKiBPbmx5IG5lZWQgdG8gaGFuZGxlIGJhc2lj IGJsb2NrIGJlZm9yZSBlcGlsb2cgbG9vcCBpZiBpdCdzDQo+IG5vdA0KPiA+ID4gPiA+ID4gIAkg ICAgIHRoZSBndWFyZF9iYiwgd2hpY2ggaXMgdGhlIGNhc2Ugd2hlbiBza2lwX3ZlY3RvciBpcyB0 cnVlLg0KPiAqLw0KPiA+ID4gPiA+ID4gIAkgIGlmIChndWFyZF9iYiAhPSBiYl9iZWZvcmVfZXBp bG9nKQ0KPiA+ID4gPiA+ID4gQEAgLTMwMjMsNyArMzQ5MCw2IEBAIHZlY3RfZG9fcGVlbGluZyAo bG9vcF92ZWNfaW5mbw0KPiBsb29wX3ZpbmZvLA0KPiA+ID4gdHJlZQ0KPiA+ID4gPiA+IG5pdGVy cywgdHJlZSBuaXRlcnNtMSwNCj4gPiA+ID4gPiA+ICAJfQ0KPiA+ID4gPiA+ID4gICAgICAgIGVs c2UNCj4gPiA+ID4gPiA+ICAJc2xwZWVsX3VwZGF0ZV9waGlfbm9kZXNfZm9yX2xjc3NhIChlcGls b2cpOw0KPiA+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+ID4gICAgICAgIHVuc2lnbmVkIEhPU1RfV0lE RV9JTlQgYm91bmQ7DQo+ID4gPiA+ID4gPiAgICAgICAgaWYgKGJvdW5kX3NjYWxhci5pc19jb25z dGFudCAoJmJvdW5kKSkNCj4gPiA+ID4gPiA+ICAJew0KPiA+ID4gPiA+ID4gQEAgLTMxMTQsNyAr MzU4MCw2IEBAIHZlY3RfZG9fcGVlbGluZyAobG9vcF92ZWNfaW5mbw0KPiBsb29wX3ZpbmZvLA0K PiA+ID4gdHJlZQ0KPiA+ID4gPiA+IG5pdGVycywgdHJlZSBuaXRlcnNtMSwNCj4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiAgICBhZGp1c3RfdmVjLnJlbGVhc2UgKCk7DQo+ID4gPiA+ID4gPiAgICBm cmVlX29yaWdpbmFsX2NvcHlfdGFibGVzICgpOw0KPiA+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+ID4g ICAgcmV0dXJuIHZlY3RfZXBpbG9ndWVzID8gZXBpbG9nIDogTlVMTDsNCj4gPiA+ID4gPiA+ICB9 DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtbG9v cC5jYyBiL2djYy90cmVlLXZlY3QtbG9vcC5jYw0KPiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4g Pg0KPiA+ID4NCj4gZDVjMmJmZjgwYmU5YmUxNTI3MDdlYjlkMzkzMmM4NjM5NDhkYWE3My4uNTQ4 OTQ2YTZiYmY4ODkyMDg2YTE3ZmUzMA0KPiA+ID4gPiA+IDAzZGEyYzNkY2VhZGY1YiAxMDA2NDQN Cj4gPiA+ID4gPiA+IC0tLSBhL2djYy90cmVlLXZlY3QtbG9vcC5jYw0KPiA+ID4gPiA+ID4gKysr IGIvZ2NjL3RyZWUtdmVjdC1sb29wLmNjDQo+ID4gPiA+ID4gPiBAQCAtODQ0LDgwICs4NDQsMTA2 IEBAIHZlY3RfZml4dXBfc2NhbGFyX2N5Y2xlc193aXRoX3BhdHRlcm5zDQo+ID4gPiA+ID4gKGxv b3BfdmVjX2luZm8gbG9vcF92aW5mbykNCj4gPiA+ID4gPiA+ICAgICBpbiBOVU1CRVJfT0ZfSVRF UkFUSU9OU00xLiAgUGxhY2UgdGhlIGNvbmRpdGlvbiB1bmRlciB3aGljaA0KPiB0aGUNCj4gPiA+ ID4gPiA+ICAgICBuaXRlciBpbmZvcm1hdGlvbiBob2xkcyBpbiBBU1NVTVBUSU9OUy4NCj4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiAtICAgUmV0dXJuIHRoZSBsb29wIGV4aXQgY29uZGl0aW9uLiAg Ki8NCj4gPiA+ID4gPiA+ICsgICBSZXR1cm4gdGhlIGxvb3AgZXhpdCBjb25kaXRpb25zLiAgKi8N Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLXN0YXRpYyBnY29uZCAqDQo+ ID4gPiA+ID4gPiArc3RhdGljIHZlYzxnY29uZCAqPg0KPiA+ID4gPiA+ID4gIHZlY3RfZ2V0X2xv b3Bfbml0ZXJzIChjbGFzcyBsb29wICpsb29wLCB0cmVlICphc3N1bXB0aW9ucywNCj4gPiA+ID4g PiA+ICAJCSAgICAgIHRyZWUgKm51bWJlcl9vZl9pdGVyYXRpb25zLCB0cmVlDQo+ID4gPiA+ID4g Km51bWJlcl9vZl9pdGVyYXRpb25zbTEpDQo+ID4gPiA+ID4gPiAgew0KPiA+ID4gPiA+ID4gLSAg ZWRnZSBleGl0ID0gc2luZ2xlX2V4aXQgKGxvb3ApOw0KPiA+ID4gPiA+ID4gKyAgYXV0b192ZWM8 ZWRnZT4gZXhpdHMgPSBnZXRfbG9vcF9leGl0X2VkZ2VzIChsb29wKTsNCj4gPiA+ID4gPiA+ICsg IHZlYzxnY29uZCAqPiBjb25kczsNCj4gPiA+ID4gPiA+ICsgIGNvbmRzLmNyZWF0ZSAoZXhpdHMu bGVuZ3RoICgpKTsNCj4gPiA+ID4gPiA+ICAgIGNsYXNzIHRyZWVfbml0ZXJfZGVzYyBuaXRlcl9k ZXNjOw0KPiA+ID4gPiA+ID4gICAgdHJlZSBuaXRlcl9hc3N1bXB0aW9ucywgbml0ZXIsIG1heV9i ZV96ZXJvOw0KPiA+ID4gPiA+ID4gLSAgZ2NvbmQgKmNvbmQgPSBnZXRfbG9vcF9leGl0X2NvbmRp dGlvbiAobG9vcCk7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICAgKmFzc3VtcHRpb25zID0g Ym9vbGVhbl90cnVlX25vZGU7DQo+ID4gPiA+ID4gPiAgICAqbnVtYmVyX29mX2l0ZXJhdGlvbnNt MSA9IGNocmVjX2RvbnRfa25vdzsNCj4gPiA+ID4gPiA+ICAgICpudW1iZXJfb2ZfaXRlcmF0aW9u cyA9IGNocmVjX2RvbnRfa25vdzsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICAgIERVTVBf VkVDVF9TQ09QRSAoImdldF9sb29wX25pdGVycyIpOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ IC0gIGlmICghZXhpdCkNCj4gPiA+ID4gPiA+IC0gICAgcmV0dXJuIGNvbmQ7DQo+ID4gPiA+ID4g PiArICBpZiAoZXhpdHMuaXNfZW1wdHkgKCkpDQo+ID4gPiA+ID4gPiArICAgIHJldHVybiBjb25k czsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAtICBtYXlfYmVfemVybyA9IE5VTExfVFJFRTsN Cj4gPiA+ID4gPiA+IC0gIGlmICghbnVtYmVyX29mX2l0ZXJhdGlvbnNfZXhpdF9hc3N1bXB0aW9u cyAobG9vcCwgZXhpdCwNCj4gJm5pdGVyX2Rlc2MsDQo+ID4gPiA+ID4gTlVMTCkNCj4gPiA+ID4g PiA+IC0gICAgICB8fCBjaHJlY19jb250YWluc191bmRldGVybWluZWQgKG5pdGVyX2Rlc2Mubml0 ZXIpKQ0KPiA+ID4gPiA+ID4gLSAgICByZXR1cm4gY29uZDsNCj4gPiA+ID4gPiA+ICsgIGlmIChk dW1wX2VuYWJsZWRfcCAoKSkNCj4gPiA+ID4gPiA+ICsgICAgZHVtcF9wcmludGZfbG9jIChNU0df Tk9URSwgdmVjdF9sb2NhdGlvbiwgIkxvb3AgaGFzICVkDQo+ID4gPiBleGl0cy5cbiIsDQo+ID4g PiA+ID4gPiArCQkgICAgIGV4aXRzLmxlbmd0aCAoKSk7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gLSAgbml0ZXJfYXNzdW1wdGlvbnMgPSBuaXRlcl9kZXNjLmFzc3VtcHRpb25zOw0KPiA+ID4g PiA+ID4gLSAgbWF5X2JlX3plcm8gPSBuaXRlcl9kZXNjLm1heV9iZV96ZXJvOw0KPiA+ID4gPiA+ ID4gLSAgbml0ZXIgPSBuaXRlcl9kZXNjLm5pdGVyOw0KPiA+ID4gPiA+ID4gKyAgZWRnZSBleGl0 Ow0KPiA+ID4gPiA+ID4gKyAgdW5zaWduZWQgaW50IGk7DQo+ID4gPiA+ID4gPiArICBGT1JfRUFD SF9WRUNfRUxUIChleGl0cywgaSwgZXhpdCkNCj4gPiA+ID4gPiA+ICsgICAgew0KPiA+ID4gPiA+ ID4gKyAgICAgIGdjb25kICpjb25kID0gZ2V0X2VkZ2VfY29uZGl0aW9uIChleGl0KTsNCj4gPiA+ ID4gPiA+ICsgICAgICBpZiAoY29uZCkNCj4gPiA+ID4gPiA+ICsJY29uZHMuc2FmZV9wdXNoIChj b25kKTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAtICBpZiAobWF5X2JlX3plcm8gJiYgaW50 ZWdlcl96ZXJvcCAobWF5X2JlX3plcm8pKQ0KPiA+ID4gPiA+ID4gLSAgICBtYXlfYmVfemVybyA9 IE5VTExfVFJFRTsNCj4gPiA+ID4gPiA+ICsgICAgICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpDQo+ ID4gPiA+ID4gPiArCWR1bXBfcHJpbnRmX2xvYyAoTVNHX05PVEUsIHZlY3RfbG9jYXRpb24sICJB bmFseXppbmcgZXhpdA0KPiA+ID4gPiA+ICVkLi4uXG4iLCBpKTsNCj4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPiAtICBpZiAobWF5X2JlX3plcm8pDQo+ID4gPiA+ID4gPiAtICAgIHsNCj4gPiA+ID4g PiA+IC0gICAgICBpZiAoQ09NUEFSSVNPTl9DTEFTU19QIChtYXlfYmVfemVybykpDQo+ID4gPiA+ ID4gPiArICAgICAgbWF5X2JlX3plcm8gPSBOVUxMX1RSRUU7DQo+ID4gPiA+ID4gPiArICAgICAg aWYgKCFudW1iZXJfb2ZfaXRlcmF0aW9uc19leGl0X2Fzc3VtcHRpb25zIChsb29wLCBleGl0LA0K PiA+ID4gJm5pdGVyX2Rlc2MsDQo+ID4gPiA+ID4gTlVMTCkNCj4gPiA+ID4gPiA+ICsgICAgICAg ICAgfHwgY2hyZWNfY29udGFpbnNfdW5kZXRlcm1pbmVkIChuaXRlcl9kZXNjLm5pdGVyKSkNCj4g PiA+ID4gPiA+ICsJY29udGludWU7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgICAg bml0ZXJfYXNzdW1wdGlvbnMgPSBuaXRlcl9kZXNjLmFzc3VtcHRpb25zOw0KPiA+ID4gPiA+ID4g KyAgICAgIG1heV9iZV96ZXJvID0gbml0ZXJfZGVzYy5tYXlfYmVfemVybzsNCj4gPiA+ID4gPiA+ ICsgICAgICBuaXRlciA9IG5pdGVyX2Rlc2Mubml0ZXI7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArICAgICAgaWYgKG1heV9iZV96ZXJvICYmIGludGVnZXJfemVyb3AgKG1heV9iZV96ZXJv KSkNCj4gPiA+ID4gPiA+ICsJbWF5X2JlX3plcm8gPSBOVUxMX1RSRUU7DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArICAgICAgaWYgKG1heV9iZV96ZXJvKQ0KPiA+ID4gPiA+ID4gIAl7DQo+ ID4gPiA+ID4gPiAtCSAgLyogVHJ5IHRvIGNvbWJpbmUgbWF5X2JlX3plcm8gd2l0aCBhc3N1bXB0 aW9ucywgdGhpcyBjYW4NCj4gc2ltcGxpZnkNCj4gPiA+ID4gPiA+IC0JICAgICBjb21wdXRhdGlv biBvZiBuaXRlciBleHByZXNzaW9uLiAgKi8NCj4gPiA+ID4gPiA+IC0JICBpZiAobml0ZXJfYXNz dW1wdGlvbnMgJiYgIWludGVnZXJfbm9uemVyb3ANCj4gKG5pdGVyX2Fzc3VtcHRpb25zKSkNCj4g PiA+ID4gPiA+IC0JICAgIG5pdGVyX2Fzc3VtcHRpb25zID0gZm9sZF9idWlsZDIgKFRSVVRIX0FO RF9FWFBSLA0KPiA+ID4gPiA+IGJvb2xlYW5fdHlwZV9ub2RlLA0KPiA+ID4gPiA+ID4gLQkJCQkJ ICAgICBuaXRlcl9hc3N1bXB0aW9ucywNCj4gPiA+ID4gPiA+IC0JCQkJCSAgICAgZm9sZF9idWls ZDENCj4gKFRSVVRIX05PVF9FWFBSLA0KPiA+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IGJvb2xlYW5f dHlwZV9ub2RlLA0KPiA+ID4gPiA+ID4gLQ0KPiBtYXlfYmVfemVybykpOw0KPiA+ID4gPiA+ID4g KwkgIGlmIChDT01QQVJJU09OX0NMQVNTX1AgKG1heV9iZV96ZXJvKSkNCj4gPiA+ID4gPiA+ICsJ ICAgIHsNCj4gPiA+ID4gPiA+ICsJICAgICAgLyogVHJ5IHRvIGNvbWJpbmUgbWF5X2JlX3plcm8g d2l0aCBhc3N1bXB0aW9ucywgdGhpcw0KPiBjYW4NCj4gPiA+ID4gPiBzaW1wbGlmeQ0KPiA+ID4g PiA+ID4gKwkJIGNvbXB1dGF0aW9uIG9mIG5pdGVyIGV4cHJlc3Npb24uICAqLw0KPiA+ID4gPiA+ ID4gKwkgICAgICBpZiAobml0ZXJfYXNzdW1wdGlvbnMgJiYgIWludGVnZXJfbm9uemVyb3ANCj4g KG5pdGVyX2Fzc3VtcHRpb25zKSkNCj4gPiA+ID4gPiA+ICsJCW5pdGVyX2Fzc3VtcHRpb25zID0g Zm9sZF9idWlsZDIgKFRSVVRIX0FORF9FWFBSLA0KPiA+ID4gPiA+IGJvb2xlYW5fdHlwZV9ub2Rl LA0KPiA+ID4gPiA+ID4gKwkJCQkJCSBuaXRlcl9hc3N1bXB0aW9ucywNCj4gPiA+ID4gPiA+ICsJ CQkJCQkgZm9sZF9idWlsZDENCj4gPiA+ID4gPiAoVFJVVEhfTk9UX0VYUFIsDQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gYm9vbGVhbl90eXBlX25vZGUsDQo+ID4gPiA+ID4gPiArDQo+IG1heV9i ZV96ZXJvKSk7DQo+ID4gPiA+ID4gPiArCSAgICAgIGVsc2UNCj4gPiA+ID4gPiA+ICsJCW5pdGVy ID0gZm9sZF9idWlsZDMgKENPTkRfRVhQUiwgVFJFRV9UWVBFIChuaXRlciksDQo+ID4gPiA+ID4g bWF5X2JlX3plcm8sDQo+ID4gPiA+ID4gPiArCQkJCSAgICAgYnVpbGRfaW50X2NzdCAoVFJFRV9U WVBFIChuaXRlciksDQo+IDApLA0KPiA+ID4gPiA+ID4gKw0KPiByZXdyaXRlX3RvX25vbl90cmFw cGluZ19vdmVyZmxvdw0KPiA+ID4gPiA+IChuaXRlcikpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKwkgICAgICBtYXlfYmVfemVybyA9IE5VTExfVFJFRTsNCj4gPiA+ID4gPiA+ICsJICAg IH0NCj4gPiA+ID4gPiA+ICsJICBlbHNlIGlmIChpbnRlZ2VyX25vbnplcm9wIChtYXlfYmVfemVy bykgJiYgaSA9PSAwKQ0KPiA+ID4gPiA+ID4gKwkgICAgew0KPiA+ID4gPiA+ID4gKwkgICAgICAq bnVtYmVyX29mX2l0ZXJhdGlvbnNtMSA9IGJ1aWxkX2ludF9jc3QgKFRSRUVfVFlQRQ0KPiAobml0 ZXIpLCAwKTsNCj4gPiA+ID4gPiA+ICsJICAgICAgKm51bWJlcl9vZl9pdGVyYXRpb25zID0gYnVp bGRfaW50X2NzdCAoVFJFRV9UWVBFDQo+IChuaXRlciksIDEpOw0KPiA+ID4gPiA+ID4gKwkgICAg ICBjb250aW51ZTsNCj4gPiA+ID4gPiA+ICsJICAgIH0NCj4gPiA+ID4gPiA+ICAJICBlbHNlDQo+ ID4gPiA+ID4gPiAtCSAgICBuaXRlciA9IGZvbGRfYnVpbGQzIChDT05EX0VYUFIsIFRSRUVfVFlQ RSAobml0ZXIpLA0KPiBtYXlfYmVfemVybywNCj4gPiA+ID4gPiA+IC0JCQkJIGJ1aWxkX2ludF9j c3QgKFRSRUVfVFlQRSAobml0ZXIpLCAwKSwNCj4gPiA+ID4gPiA+IC0JCQkJIHJld3JpdGVfdG9f bm9uX3RyYXBwaW5nX292ZXJmbG93DQo+IChuaXRlcikpOw0KPiA+ID4gPiA+ID4gKwkgICAgY29u dGludWU7DQo+ID4gPiA+ID4gPiArICAgICAgIH0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAt CSAgbWF5X2JlX3plcm8gPSBOVUxMX1RSRUU7DQo+ID4gPiA+ID4gPiAtCX0NCj4gPiA+ID4gPiA+ IC0gICAgICBlbHNlIGlmIChpbnRlZ2VyX25vbnplcm9wIChtYXlfYmVfemVybykpDQo+ID4gPiA+ ID4gPiArICAgICAgLyogTG9vcCBhc3N1bXB0aW9ucyBhcmUgYmFzZWQgb2ZmIHRoZSBub3JtYWwg ZXhpdC4gICovDQo+ID4gPiA+ID4gPiArICAgICAgaWYgKGkgPT0gMCkNCj4gPiA+ID4gPiA+ICAJ ew0KPiA+ID4gPiA+ID4gLQkgICpudW1iZXJfb2ZfaXRlcmF0aW9uc20xID0gYnVpbGRfaW50X2Nz dCAoVFJFRV9UWVBFDQo+IChuaXRlciksIDApOw0KPiA+ID4gPiA+ID4gLQkgICpudW1iZXJfb2Zf aXRlcmF0aW9ucyA9IGJ1aWxkX2ludF9jc3QgKFRSRUVfVFlQRSAobml0ZXIpLA0KPiAxKTsNCj4g PiA+ID4gPiA+IC0JICByZXR1cm4gY29uZDsNCj4gPiA+ID4gPiA+ICsJICAqYXNzdW1wdGlvbnMg PSBuaXRlcl9hc3N1bXB0aW9uczsNCj4gPiA+ID4gPiA+ICsJICAqbnVtYmVyX29mX2l0ZXJhdGlv bnNtMSA9IG5pdGVyOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKwkgIC8qIFdlIHdhbnQg dGhlIG51bWJlciBvZiBsb29wIGhlYWRlciBleGVjdXRpb25zIHdoaWNoIGlzDQo+IHRoZQ0KPiA+ ID4gPiA+IG51bWJlcg0KPiA+ID4gPiA+ID4gKwkgICAgIG9mIGxhdGNoIGV4ZWN1dGlvbnMgcGx1 cyBvbmUuDQo+ID4gPiA+ID4gPiArCSAgICAgPz8/ICBGb3IgVUlOVF9NQVggbGF0Y2ggZXhlY3V0 aW9ucyB0aGlzIG51bWJlcg0KPiBvdmVyZmxvd3MgdG8NCj4gPiA+ID4gPiB6ZXJvDQo+ID4gPiA+ ID4gPiArCSAgICAgZm9yIGxvb3BzIGxpa2UgZG8geyBuKys7IH0gd2hpbGUgKG4gIT0gMCk7ICAq Lw0KPiA+ID4gPiA+ID4gKwkgIGlmIChuaXRlciAmJiAhY2hyZWNfY29udGFpbnNfdW5kZXRlcm1p bmVkIChuaXRlcikpDQo+ID4gPiA+ID4gPiArCSAgICBuaXRlciA9IGZvbGRfYnVpbGQyIChQTFVT X0VYUFIsIFRSRUVfVFlQRSAobml0ZXIpLA0KPiA+ID4gPiA+ID4gKwkJCQkgdW5zaGFyZV9leHBy IChuaXRlciksDQo+ID4gPiA+ID4gPiArCQkJCSBidWlsZF9pbnRfY3N0IChUUkVFX1RZUEUgKG5p dGVyKSwgMSkpOw0KPiA+ID4gPiA+ID4gKwkgICpudW1iZXJfb2ZfaXRlcmF0aW9ucyA9IG5pdGVy Ow0KPiA+ID4gPiA+ID4gIAl9DQo+ID4gPiA+ID4gPiAtICAgICAgZWxzZQ0KPiA+ID4gPiA+ID4g LQlyZXR1cm4gY29uZDsNCj4gPiA+ID4gPiA+ICAgICAgfQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+IC0gICphc3N1bXB0aW9ucyA9IG5pdGVyX2Fzc3VtcHRpb25zOw0KPiA+ID4gPiA+ID4gLSAg Km51bWJlcl9vZl9pdGVyYXRpb25zbTEgPSBuaXRlcjsNCj4gPiA+ID4gPiA+IC0NCj4gPiA+ID4g PiA+IC0gIC8qIFdlIHdhbnQgdGhlIG51bWJlciBvZiBsb29wIGhlYWRlciBleGVjdXRpb25zIHdo aWNoIGlzIHRoZQ0KPiA+ID4gbnVtYmVyDQo+ID4gPiA+ID4gPiAtICAgICBvZiBsYXRjaCBleGVj dXRpb25zIHBsdXMgb25lLg0KPiA+ID4gPiA+ID4gLSAgICAgPz8/ICBGb3IgVUlOVF9NQVggbGF0 Y2ggZXhlY3V0aW9ucyB0aGlzIG51bWJlciBvdmVyZmxvd3MgdG8NCj4gemVybw0KPiA+ID4gPiA+ ID4gLSAgICAgZm9yIGxvb3BzIGxpa2UgZG8geyBuKys7IH0gd2hpbGUgKG4gIT0gMCk7ICAqLw0K PiA+ID4gPiA+ID4gLSAgaWYgKG5pdGVyICYmICFjaHJlY19jb250YWluc191bmRldGVybWluZWQg KG5pdGVyKSkNCj4gPiA+ID4gPiA+IC0gICAgbml0ZXIgPSBmb2xkX2J1aWxkMiAoUExVU19FWFBS LCBUUkVFX1RZUEUgKG5pdGVyKSwgdW5zaGFyZV9leHByDQo+ID4gPiA+ID4gKG5pdGVyKSwNCj4g PiA+ID4gPiA+IC0JCQkgIGJ1aWxkX2ludF9jc3QgKFRSRUVfVFlQRSAobml0ZXIpLCAxKSk7DQo+ ID4gPiA+ID4gPiAtICAqbnVtYmVyX29mX2l0ZXJhdGlvbnMgPSBuaXRlcjsNCj4gPiA+ID4gPiA+ ICsgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkNCj4gPiA+ID4gPiA+ICsgICAgZHVtcF9wcmludGZf bG9jIChNU0dfTk9URSwgdmVjdF9sb2NhdGlvbiwgIkFsbCBsb29wIGV4aXRzDQo+ID4gPiBzdWNj ZXNzZnVsbHkNCj4gPiA+ID4gPiBhbmFseXplZC5cbiIpOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+IC0gIHJldHVybiBjb25kOw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIGNvbmRzOw0KPiA+ID4g PiA+ID4gIH0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgLyogRnVuY3Rpb24gYmJfaW5fbG9v cF9wDQo+ID4gPiA+ID4gPiBAQCAtMTQ1NSw3ICsxNDgxLDggQEANCj4gdmVjdF9jb21wdXRlX3Np bmdsZV9zY2FsYXJfaXRlcmF0aW9uX2Nvc3QNCj4gPiA+ID4gPiAobG9vcF92ZWNfaW5mbyBsb29w X3ZpbmZvKQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAgICBWZXJpZnkgdGhhdCBjZXJ0YWlu IENGRyByZXN0cmljdGlvbnMgaG9sZCwgaW5jbHVkaW5nOg0KPiA+ID4gPiA+ID4gICAgIC0gdGhl IGxvb3AgaGFzIGEgcHJlLWhlYWRlcg0KPiA+ID4gPiA+ID4gLSAgIC0gdGhlIGxvb3AgaGFzIGEg c2luZ2xlIGVudHJ5IGFuZCBleGl0DQo+ID4gPiA+ID4gPiArICAgLSB0aGUgbG9vcCBoYXMgYSBz aW5nbGUgZW50cnkNCj4gPiA+ID4gPiA+ICsgICAtIG5lc3RlZCBsb29wcyBjYW4gaGF2ZSBvbmx5 IGEgc2luZ2xlIGV4aXQuDQo+ID4gPiA+ID4gPiAgICAgLSB0aGUgbG9vcCBleGl0IGNvbmRpdGlv biBpcyBzaW1wbGUgZW5vdWdoDQo+ID4gPiA+ID4gPiAgICAgLSB0aGUgbnVtYmVyIG9mIGl0ZXJh dGlvbnMgY2FuIGJlIGFuYWx5emVkLCBpLmUsIGEgY291bnRhYmxlIGxvb3AuDQo+IFRoZQ0KPiA+ ID4gPiA+ID4gICAgICAgbml0ZXIgY291bGQgYmUgYW5hbHl6ZWQgdW5kZXIgc29tZSBhc3N1bXB0 aW9ucy4gICovDQo+ID4gPiA+ID4gPiBAQCAtMTQ4NCwxMSArMTUxMSw2IEBAIHZlY3RfYW5hbHl6 ZV9sb29wX2Zvcm0gKGNsYXNzIGxvb3ANCj4gKmxvb3AsDQo+ID4gPiA+ID4gdmVjdF9sb29wX2Zv cm1faW5mbyAqaW5mbykNCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 DQo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4aXQtYmIpICAqLw0KPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0gICAgICBpZiAobG9vcC0+bnVtX25vZGVzICE9IDIpDQo+ ID4gPiA+ID4gPiAtCXJldHVybiBvcHRfcmVzdWx0OjpmYWlsdXJlX2F0ICh2ZWN0X2xvY2F0aW9u LA0KPiA+ID4gPiA+ID4gLQkJCQkgICAgICAgIm5vdCB2ZWN0b3JpemVkOiINCj4gPiA+ID4gPiA+ IC0JCQkJICAgICAgICIgY29udHJvbCBmbG93IGluIGxvb3AuXG4iKTsNCj4gPiA+ID4gPiA+IC0N Cj4gPiA+ID4gPiA+ICAgICAgICBpZiAoZW1wdHlfYmxvY2tfcCAobG9vcC0+aGVhZGVyKSkNCj4g PiA+ID4gPiA+ICAJcmV0dXJuIG9wdF9yZXN1bHQ6OmZhaWx1cmVfYXQgKHZlY3RfbG9jYXRpb24s DQo+ID4gPiA+ID4gPiAgCQkJCSAgICAgICAibm90IHZlY3Rvcml6ZWQ6IGVtcHR5IGxvb3AuXG4i KTsNCj4gPiA+ID4gPiA+IEBAIC0xNTU5LDExICsxNTgxLDEzIEBAIHZlY3RfYW5hbHl6ZV9sb29w X2Zvcm0gKGNsYXNzIGxvb3ANCj4gKmxvb3AsDQo+ID4gPiA+ID4gdmVjdF9sb29wX2Zvcm1faW5m byAqaW5mbykNCj4gPiA+ID4gPiA+ICAgICAgICAgIGR1bXBfcHJpbnRmX2xvYyAoTVNHX05PVEUs IHZlY3RfbG9jYXRpb24sDQo+ID4gPiA+ID4gPiAgCQkJICJDb25zaWRlcmluZyBvdXRlci1sb29w IHZlY3Rvcml6YXRpb24uXG4iKTsNCj4gPiA+ID4gPiA+ICAgICAgICBpbmZvLT5pbm5lcl9sb29w X2NvbmQgPSBpbm5lci5sb29wX2NvbmQ7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAg ICAgaWYgKCFzaW5nbGVfZXhpdCAobG9vcCkpDQo+ID4gPiA+ID4gPiArCXJldHVybiBvcHRfcmVz dWx0OjpmYWlsdXJlX2F0ICh2ZWN0X2xvY2F0aW9uLA0KPiA+ID4gPiA+ID4gKwkJCQkgICAgICAg Im5vdCB2ZWN0b3JpemVkOiBtdWx0aXBsZQ0KPiBleGl0cy5cbiIpOw0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gICAgICB9DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLSAgaWYgKCFzaW5n bGVfZXhpdCAobG9vcCkpDQo+ID4gPiA+ID4gPiAtICAgIHJldHVybiBvcHRfcmVzdWx0OjpmYWls dXJlX2F0ICh2ZWN0X2xvY2F0aW9uLA0KPiA+ID4gPiA+ID4gLQkJCQkgICAibm90IHZlY3Rvcml6 ZWQ6IG11bHRpcGxlIGV4aXRzLlxuIik7DQo+ID4gPiA+ID4gPiAgICBpZiAoRURHRV9DT1VOVCAo bG9vcC0+aGVhZGVyLT5wcmVkcykgIT0gMikNCj4gPiA+ID4gPiA+ICAgICAgcmV0dXJuIG9wdF9y ZXN1bHQ6OmZhaWx1cmVfYXQgKHZlY3RfbG9jYXRpb24sDQo+ID4gPiA+ID4gPiAgCQkJCSAgICJu b3QgdmVjdG9yaXplZDoiDQo+ID4gPiA+ID4gPiBAQCAtMTU3OSwyMSArMTYwMyw0NSBAQCB2ZWN0 X2FuYWx5emVfbG9vcF9mb3JtIChjbGFzcyBsb29wDQo+ICpsb29wLA0KPiA+ID4gPiA+IHZlY3Rf bG9vcF9mb3JtX2luZm8gKmluZm8pDQo+ID4gPiA+ID4gPiAgCQkJCSAgICJub3QgdmVjdG9yaXpl ZDogbGF0Y2ggYmxvY2sgbm90DQo+IGVtcHR5LlxuIik7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gICAgLyogTWFrZSBzdXJlIHRoZSBleGl0IGlzIG5vdCBhYm5vcm1hbC4gICovDQo+ID4gPiA+ ID4gPiAtICBlZGdlIGUgPSBzaW5nbGVfZXhpdCAobG9vcCk7DQo+ID4gPiA+ID4gPiAtICBpZiAo ZS0+ZmxhZ3MgJiBFREdFX0FCTk9STUFMKQ0KPiA+ID4gPiA+ID4gKyAgYXV0b192ZWM8ZWRnZT4g ZXhpdHMgPSBnZXRfbG9vcF9leGl0X2VkZ2VzIChsb29wKTsNCj4gPiA+ID4gPiA+ICsgIGVkZ2Ug bmV4aXQgPSBub3JtYWxfZXhpdCAobG9vcCk7DQo+ID4gPiA+ID4gPiArICBmb3IgKGVkZ2UgZSA6 IGV4aXRzKQ0KPiA+ID4gPiA+ID4gKyAgICB7DQo+ID4gPiA+ID4gPiArICAgICAgaWYgKGUtPmZs YWdzICYgRURHRV9BQk5PUk1BTCkNCj4gPiA+ID4gPiA+ICsJcmV0dXJuIG9wdF9yZXN1bHQ6OmZh aWx1cmVfYXQgKHZlY3RfbG9jYXRpb24sDQo+ID4gPiA+ID4gPiArCQkJCSAgICAgICAibm90IHZl Y3Rvcml6ZWQ6Ig0KPiA+ID4gPiA+ID4gKwkJCQkgICAgICAgIiBhYm5vcm1hbCBsb29wIGV4aXQg ZWRnZS5cbiIpOw0KPiA+ID4gPiA+ID4gKyAgICAgIC8qIEVhcmx5IGJyZWFrIEJCIG11c3QgYmUg YWZ0ZXIgdGhlIG1haW4gZXhpdCBCQi4gIEluIHRoZW9yeSB3ZQ0KPiA+ID4gc2hvdWxkDQo+ID4g PiA+ID4gPiArCSBiZSBhYmxlIHRvIHZlY3Rvcml6ZSB0aGUgaW52ZXJzZSBvcmRlciwgYnV0IHRo ZSBjdXJyZW50IGZsb3cNCj4gaW4gdGhlDQo+ID4gPiA+ID4gPiArCSB0aGUgdmVjdG9yaXplciBh bHdheXMgYXNzdW1lcyB5b3UgdXBkYXRlIHN1Y2Nlc3MgUEhJDQo+IG5vZGVzLCBub3QNCj4gPiA+ ID4gPiA+ICsJIHByZWRzLiAgKi8NCj4gPiA+ID4gPiA+ICsgICAgICBpZiAoZSAhPSBuZXhpdCAm JiAhZG9taW5hdGVkX2J5X3AgKENESV9ET01JTkFUT1JTLCBuZXhpdC0NCj4gPnNyYywNCj4gPiA+ IGUtDQo+ID4gPiA+ID4gPnNyYykpDQo+ID4gPiA+ID4gPiArCXJldHVybiBvcHRfcmVzdWx0Ojpm YWlsdXJlX2F0ICh2ZWN0X2xvY2F0aW9uLA0KPiA+ID4gPiA+ID4gKwkJCQkgICAgICAgIm5vdCB2 ZWN0b3JpemVkOiINCj4gPiA+ID4gPiA+ICsJCQkJICAgICAgICIgYWJub3JtYWwgbG9vcCBleGl0 IGVkZ2UNCj4gb3JkZXIuXG4iKTsNCj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gKyAgaWYgKGV4aXRzLmxlbmd0aCAoKSA+IDIpDQo+ID4gPiA+ID4gPiAgICAg IHJldHVybiBvcHRfcmVzdWx0OjpmYWlsdXJlX2F0ICh2ZWN0X2xvY2F0aW9uLA0KPiA+ID4gPiA+ ID4gIAkJCQkgICAibm90IHZlY3Rvcml6ZWQ6Ig0KPiA+ID4gPiA+ID4gLQkJCQkgICAiIGFibm9y bWFsIGxvb3AgZXhpdCBlZGdlLlxuIik7DQo+ID4gPiA+ID4gPiAtDQo+ID4gPiA+ID4gPiAtICBp bmZvLT5sb29wX2NvbmQNCj4gPiA+ID4gPiA+ICsJCQkJICAgIiB0b28gbWFueSBleGl0cy4gT25s eSAxIGFkZGl0aW9uYWwNCj4gZXhpdCINCj4gPiA+ID4gPiA+ICsJCQkJICAgIiBzdXBwb3J0ZWQu XG4iKTsNCj4gPiA+ID4gPiA+ICsgIGlmIChsb29wLT5udW1fbm9kZXMgIT0gMiArIGV4aXRzLmxl bmd0aCAoKSAtIDEpDQo+ID4gPiA+ID4gPiArICAgIHJldHVybiBvcHRfcmVzdWx0OjpmYWlsdXJl X2F0ICh2ZWN0X2xvY2F0aW9uLA0KPiA+ID4gPiA+ID4gKwkJCQkgICAibm90IHZlY3Rvcml6ZWQ6 Ig0KPiA+ID4gPiA+ID4gKwkJCQkgICAiIHVuc3VwcG9ydGVkIGNvbnRyb2wgZmxvdyBpbg0KPiBs b29wLlxuIik7DQo+ID4gPiA+ID4gPiArICBpbmZvLT5jb25kcw0KPiA+ID4gPiA+ID4gICAgICA9 IHZlY3RfZ2V0X2xvb3Bfbml0ZXJzIChsb29wLCAmaW5mby0+YXNzdW1wdGlvbnMsDQo+ID4gPiA+ ID4gPiAgCQkJICAgICZpbmZvLT5udW1iZXJfb2ZfaXRlcmF0aW9ucywNCj4gPiA+ID4gPiA+ICAJ CQkgICAgJmluZm8tPm51bWJlcl9vZl9pdGVyYXRpb25zbTEpOw0KPiA+ID4gPiA+ID4gLSAgaWYg KCFpbmZvLT5sb29wX2NvbmQpDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBpZiAoaW5m by0+Y29uZHMubGVuZ3RoICgpID09IDApDQo+ID4gPiA+ID4gPiAgICAgIHJldHVybiBvcHRfcmVz dWx0OjpmYWlsdXJlX2F0DQo+ID4gPiA+ID4gPiAgICAgICAgKHZlY3RfbG9jYXRpb24sDQo+ID4g PiA+ID4gPiAgICAgICAgICJub3QgdmVjdG9yaXplZDogY29tcGxpY2F0ZWQgZXhpdCBjb25kaXRp b24uXG4iKTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiArICBpbmZvLT5sb29wX2NvbmQgPSBp bmZvLT5jb25kc1swXTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICAgIGlmIChpbnRlZ2Vy X3plcm9wIChpbmZvLT5hc3N1bXB0aW9ucykNCj4gPiA+ID4gPiA+ICAgICAgICB8fCAhaW5mby0+ bnVtYmVyX29mX2l0ZXJhdGlvbnMNCj4gPiA+ID4gPiA+ICAgICAgICB8fCBjaHJlY19jb250YWlu c191bmRldGVybWluZWQgKGluZm8tDQo+ID5udW1iZXJfb2ZfaXRlcmF0aW9ucykpDQo+ID4gPiA+ ID4gPiBAQCAtMTYzOCw4ICsxNjg2LDE3IEBAIHZlY3RfY3JlYXRlX2xvb3BfdmluZm8gKGNsYXNz IGxvb3ANCj4gKmxvb3AsDQo+ID4gPiA+ID4gdmVjX2luZm9fc2hhcmVkICpzaGFyZWQsDQo+ID4g PiA+ID4gPiAgICBpZiAoIWludGVnZXJfb25lcCAoaW5mby0+YXNzdW1wdGlvbnMpICYmICFtYWlu X2xvb3BfaW5mbykNCj4gPiA+ID4gPiA+ICAgICAgTE9PUF9WSU5GT19OSVRFUlNfQVNTVU1QVElP TlMgKGxvb3BfdmluZm8pID0gaW5mby0NCj4gPiA+ID5hc3N1bXB0aW9uczsNCj4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiAtICBzdG10X3ZlY19pbmZvIGxvb3BfY29uZF9pbmZvID0gbG9vcF92aW5m by0+bG9va3VwX3N0bXQgKGluZm8tDQo+ID4gPiA+ID4gPmxvb3BfY29uZCk7DQo+ID4gPiA+ID4g PiAtICBTVE1UX1ZJTkZPX1RZUEUgKGxvb3BfY29uZF9pbmZvKSA9DQo+ID4gPiBsb29wX2V4aXRf Y3RybF92ZWNfaW5mb190eXBlOw0KPiA+ID4gPiA+ID4gKyAgdW5zaWduZWQgaW50IGk7DQo+ID4g PiA+ID4gPiArICBnY29uZCAqY29uZDsNCj4gPiA+ID4gPiA+ICsgIEZPUl9FQUNIX1ZFQ19FTFQg KGluZm8tPmNvbmRzLCBpLCBjb25kKQ0KPiA+ID4gPiA+ID4gKyAgICB7DQo+ID4gPiA+ID4gPiAr ICAgICAgc3RtdF92ZWNfaW5mbyBsb29wX2NvbmRfaW5mbyA9IGxvb3BfdmluZm8tPmxvb2t1cF9z dG10DQo+IChjb25kKTsNCj4gPiA+ID4gPiA+ICsgICAgICBTVE1UX1ZJTkZPX1RZUEUgKGxvb3Bf Y29uZF9pbmZvKSA9DQo+ID4gPiBsb29wX2V4aXRfY3RybF92ZWNfaW5mb190eXBlOw0KPiA+ID4g PiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAvKiBDaGVjayB0byBz ZWUgaWYgd2UncmUgdmVjdG9yaXppbmcgbXVsdGlwbGUgZXhpdHMuICAqLw0KPiA+ID4gPiA+ID4g KyAgTE9PUF9WSU5GT19FQVJMWV9CUkVBS1MgKGxvb3BfdmluZm8pID0gaW5mby0+Y29uZHMubGVu Z3RoDQo+ICgpID4NCj4gPiA+IDE7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAgICBpZiAo aW5mby0+aW5uZXJfbG9vcF9jb25kKQ0KPiA+ID4gPiA+ID4gICAgICB7DQo+ID4gPiA+ID4gPiAg ICAgICAgc3RtdF92ZWNfaW5mbyBpbm5lcl9sb29wX2NvbmRfaW5mbw0KPiA+ID4gPiA+ID4gQEAg LTIyNzAsMTAgKzIzMjcsMTMgQEANCj4gPiA+IHZlY3RfZGV0ZXJtaW5lX3BhcnRpYWxfdmVjdG9y c19hbmRfcGVlbGluZw0KPiA+ID4gPiA+IChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sDQo+ID4g PiA+ID4gPiAgICBib29sIG5lZWRfcGVlbGluZ19vcl9wYXJ0aWFsX3ZlY3RvcnNfcA0KPiA+ID4g PiA+ID4gICAgICA9IHZlY3RfbmVlZF9wZWVsaW5nX29yX3BhcnRpYWxfdmVjdG9yc19wIChsb29w X3ZpbmZvKTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAtICAvKiBEZWNpZGUgd2hldGhlciB0 byB2ZWN0b3JpemUgdGhlIGxvb3Agd2l0aCBwYXJ0aWFsIHZlY3RvcnMuICAqLw0KPiA+ID4gPiA+ ID4gKyAgLyogRGVjaWRlIHdoZXRoZXIgdG8gdmVjdG9yaXplIHRoZSBsb29wIHdpdGggcGFydGlh bCB2ZWN0b3JzLg0KPiA+ID4gQ3VycmVudGx5DQo+ID4gPiA+ID4gPiArICAgICBlYXJseSBicmVh ayB2ZWN0b3JpemF0aW9uIGRvZXMgbm90IHN1cHBvcnQgcGFydGlhbCB2ZWN0b3JzIGFzIHdlDQo+ ID4gPiBoYXZlDQo+ID4gPiA+ID4gPiArICAgICB0byBwZWVsIGEgc2NhbGFyIGxvb3AgdGhhdCB3 ZSBjYW4ndCB2ZWN0b3JpemUuICAqLw0KPiA+ID4gPiA+ID4gICAgTE9PUF9WSU5GT19VU0lOR19Q QVJUSUFMX1ZFQ1RPUlNfUCAobG9vcF92aW5mbykgPSBmYWxzZTsNCj4gPiA+ID4gPiA+ICAgIExP T1BfVklORk9fRVBJTF9VU0lOR19QQVJUSUFMX1ZFQ1RPUlNfUCAobG9vcF92aW5mbykgPQ0KPiA+ ID4gZmFsc2U7DQo+ID4gPiA+ID4gPiAgICBpZiAoTE9PUF9WSU5GT19DQU5fVVNFX1BBUlRJQUxf VkVDVE9SU19QIChsb29wX3ZpbmZvKQ0KPiA+ID4gPiA+ID4gKyAgICAgICYmICFMT09QX1ZJTkZP X0VBUkxZX0JSRUFLUyAobG9vcF92aW5mbykNCj4gPiA+ID4gPiA+ICAgICAgICAmJiBuZWVkX3Bl ZWxpbmdfb3JfcGFydGlhbF92ZWN0b3JzX3ApDQo+ID4gPiA+ID4gPiAgICAgIHsNCj4gPiA+ID4g PiA+ICAgICAgICAvKiBGb3IgcGFydGlhbC12ZWN0b3ItdXNhZ2U9MSwgdHJ5IHRvIHB1c2ggdGhl IGhhbmRsaW5nIG9mIHBhcnRpYWwNCj4gPiA+ID4gPiA+IEBAIC0yNzQ2LDEzICsyODA2LDE0IEBA IHN0YXJ0X292ZXI6DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICAgLyogSWYgYW4gZXBpbG9n dWUgbG9vcCBpcyByZXF1aXJlZCBtYWtlIHN1cmUgd2UgY2FuIGNyZWF0ZSBvbmUuICAqLw0KPiA+ ID4gPiA+ID4gICAgaWYgKExPT1BfVklORk9fUEVFTElOR19GT1JfR0FQUyAobG9vcF92aW5mbykN Cj4gPiA+ID4gPiA+IC0gICAgICB8fCBMT09QX1ZJTkZPX1BFRUxJTkdfRk9SX05JVEVSIChsb29w X3ZpbmZvKSkNCj4gPiA+ID4gPiA+ICsgICAgICB8fCBMT09QX1ZJTkZPX1BFRUxJTkdfRk9SX05J VEVSIChsb29wX3ZpbmZvKQ0KPiA+ID4gPiA+ID4gKyAgICAgIHx8IExPT1BfVklORk9fRUFSTFlf QlJFQUtTIChsb29wX3ZpbmZvKSkNCj4gPiA+ID4gPiA+ICAgICAgew0KPiA+ID4gPiA+ID4gICAg ICAgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkNCj4gPiA+ID4gPiA+ICAgICAgICAgIGR1bXBfcHJp bnRmX2xvYyAoTVNHX05PVEUsIHZlY3RfbG9jYXRpb24sICJlcGlsb2cgbG9vcA0KPiA+ID4gPiA+ IHJlcXVpcmVkXG4iKTsNCj4gPiA+ID4gPiA+ICAgICAgICBpZiAoIXZlY3RfY2FuX2FkdmFuY2Vf aXZzX3AgKGxvb3BfdmluZm8pDQo+ID4gPiA+ID4gPiAtCSAgfHwgIXNscGVlbF9jYW5fZHVwbGlj YXRlX2xvb3BfcCAoTE9PUF9WSU5GT19MT09QDQo+ID4gPiA+ID4gKGxvb3BfdmluZm8pLA0KPiA+ ID4gPiA+ID4gLQkJCQkJICAgc2luZ2xlX2V4aXQNCj4gKExPT1BfVklORk9fTE9PUA0KPiA+ID4g PiA+ID4gKwkgIHx8ICFzbHBlZWxfY2FuX2R1cGxpY2F0ZV9sb29wX3AgKGxvb3BfdmluZm8sDQo+ ID4gPiA+ID4gPiArCQkJCQkgICBub3JtYWxfZXhpdA0KPiAoTE9PUF9WSU5GT19MT09QDQo+ID4g PiA+ID4gPg0KPiAobG9vcF92aW5mbykpKSkNCj4gPiA+ID4gPiA+ICAgICAgICAgIHsNCj4gPiA+ ID4gPiA+ICAJICBvayA9IG9wdF9yZXN1bHQ6OmZhaWx1cmVfYXQgKHZlY3RfbG9jYXRpb24sDQo+ ID4gPiA+ID4gPiBAQCAtMzIzOSw2ICszMzAwLDggQEAgdmVjdF9hbmFseXplX2xvb3AgKGNsYXNz IGxvb3AgKmxvb3AsDQo+ID4gPiA+ID4gdmVjX2luZm9fc2hhcmVkICpzaGFyZWQpDQo+ID4gPiA+ ID4gPiAgCQkgICAgICIqKioqKiBDaG9vc2luZyB2ZWN0b3IgbW9kZSAlc1xuIiwNCj4gPiA+ID4g PiA+ICAJCSAgICAgR0VUX01PREVfTkFNRSAoZmlyc3RfbG9vcF92aW5mby0NCj4gPnZlY3Rvcl9t b2RlKSk7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gKyAgbG9vcF9mb3JtX2luZm8uY29uZHMu cmVsZWFzZSAoKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICAgIC8qIE9ubHkgdmVjdG9y aXplIGVwaWxvZ3VlcyBpZg0KPiBQQVJBTV9WRUNUX0VQSUxPR1VFU19OT01BU0sgaXMNCj4gPiA+ ID4gPiA+ICAgICAgIGVuYWJsZWQsIFNJTURVSUQgaXMgbm90IHNldCwgaXQgaXMgdGhlIGlubmVy bW9zdCBsb29wIGFuZCB3ZQ0KPiBoYXZlDQo+ID4gPiA+ID4gPiAgICAgICBlaXRoZXIgYWxyZWFk eSBmb3VuZCB0aGUgbG9vcCdzIFNJTURMRU4gb3IgdGhlcmUgd2FzIG5vDQo+IFNJTURMRU4NCj4g PiA+IHRvDQo+ID4gPiA+ID4gPiBAQCAtMzM1MCw2ICszNDEzLDggQEAgdmVjdF9hbmFseXplX2xv b3AgKGNsYXNzIGxvb3AgKmxvb3AsDQo+ID4gPiA+ID4gdmVjX2luZm9fc2hhcmVkICpzaGFyZWQp DQo+ID4gPiA+ID4gPiAgCQkJICAgKGZpcnN0X2xvb3BfdmluZm8tPmVwaWxvZ3VlX3ZpbmZvc1sw XS0NCj4gPiA+ID4gPiA+dmVjdG9yX21vZGUpKTsNCj4gPiA+ID4gPiA+ICAgICAgfQ0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+ICsgIGxvb3BfZm9ybV9pbmZvLmNvbmRzLnJlbGVhc2UgKCk7DQo+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAgICByZXR1cm4gZmlyc3RfbG9vcF92aW5mbzsNCj4g PiA+ID4gPiA+ICB9DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gQEAgLTc5MDcsNiArNzk3Miwy MzcgQEAgdmVjdF90cmFuc2Zvcm1fcmVkdWN0aW9uDQo+IChsb29wX3ZlY19pbmZvDQo+ID4gPiA+ ID4gbG9vcF92aW5mbywNCj4gPiA+ID4gPiA+ICAgIHJldHVybiB0cnVlOw0KPiA+ID4gPiA+ID4g IH0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiArLyogIFdoZW4gdmVjdG9yaXppbmcgZWFybHkg YnJlYWsgc3RhdGVtZW50cyBpbnN0cnVjdGlvbnMgdGhhdA0KPiBoYXBwZW4NCj4gPiA+ID4gPiBi ZWZvcmUNCj4gPiA+ID4gPiA+ICsgICAgdGhlIGVhcmx5IGJyZWFrIGluIHRoZSBjdXJyZW50IEJC IG5lZWQgdG8gYmUgbW92ZWQgdG8gYWZ0ZXIgdGhlDQo+ID4gPiBlYXJseQ0KPiA+ID4gPiA+ID4g KyAgICBicmVhay4gIFRoaXMgZnVuY3Rpb24gZGVhbHMgd2l0aCB0aGF0IGFuZCBhc3N1bWVzIHRo YXQgYW55DQo+IHZhbGlkYXR5DQo+ID4gPiA+ID4gPiArICAgIGNoZWNrcyBoYXMgYWxyZWFkeSBi ZWVuIHBlcmZvcm1lZC4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgV2hpbGUgbW92 aW5nIHRoZSBpbnN0cnVjdGlvbnMgaWYgaXQgZW5jb3VudGVycyBhIFZVU0Ugb3IgVkRFRiBpdA0K PiB0aGVuDQo+ID4gPiA+ID4gPiArICAgIGNvcnJlY3RzIHRoZSBWVVNFUyBhcyBpdCBtb3ZlcyB0 aGUgc3RhdGVtZW50cyBhbG9uZy4gIENIQUlORUQNCj4gPiA+ID4gPiBjb250YWlucw0KPiA+ID4g PiA+ID4gKyAgICB0aGUgbGlzdCBvZiBTU0FfTkFNRVMgdGhhdCBiZWxvbmcgdG8gdGhlIGRlcGVu ZGVuY3kgY2hhaW4gb2YNCj4gdGhlDQo+ID4gPiBlYXJseQ0KPiA+ID4gPiA+ID4gKyAgICBicmVh ayBjb25kaXRpb25hbC4gIEdERVNUIGlzIHRoZSBsb2NhdGlvbiBpbiB3aGljaCB0byBpbnNlcnQg dGhlDQo+IG5ldw0KPiA+ID4gPiA+ID4gKyAgICBzdGF0ZW1lbnRzLiAgR1NUTVQgaXMgdGhlIGl0 ZXJhdG9yIHRvIHdhbGsgdXAgdG8gZmluZCBzdGF0ZW1lbnRzDQo+IHRvDQo+ID4gPiA+ID4gPiAr ICAgIGNvbnNpZGVyIG1vdmluZy4gIFJFQUNISU5HX1ZVU0UgY29udGFpbnMgdGhlIGRvbWluYXRp bmcNCj4gVlVTRQ0KPiA+ID4gPiA+IGZvdW5kIHNvIGZhcg0KPiA+ID4gPiA+ID4gKyAgICBhbmQg Q1VSUkVOVF9WREVGIGNvbnRhaW5zIHRoZSBsYXN0IFZERUYgd2UndmUgc2Vlbi4gIFRoZXNlDQo+ IGFyZQ0KPiA+ID4gPiA+IHVwZGF0ZWQgaW4NCj4gPiA+ID4gPiA+ICsgICAgcHJlLW9yZGVyIGFu ZCB1cGRhdGVkIGluIHBvc3Qtb3JkZXIgYWZ0ZXIgbW92aW5nIHRoZQ0KPiBpbnN0cnVjdGlvbi4N Cj4gPiA+ICovDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArc3RhdGljIHZvaWQNCj4gPiA+ ID4gPiA+ICttb3ZlX2Vhcmx5X2V4aXRfc3RtdHMgKGhhc2hfc2V0PHRyZWU+ICpjaGFpbmVkLA0K PiA+ID4gZ2ltcGxlX3N0bXRfaXRlcmF0b3INCj4gPiA+ID4gPiAqZ2Rlc3QsDQo+ID4gPiA+ID4g PiArCQkgICAgICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKmdzdG10LCB0cmVlDQo+ICpyZWFjaGlu Z192dXNlLA0KPiA+ID4gPiA+ID4gKwkJICAgICAgIHRyZWUgKmN1cnJlbnRfdmRlZikNCj4gPiA+ ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBpZiAoZ3NpX2VuZF9wICgqZ3N0bXQpKQ0KPiA+ID4g PiA+ID4gKyAgICByZXR1cm47DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBnaW1wbGUg KnN0bXQgPSBnc2lfc3RtdCAoKmdzdG10KTsNCj4gPiA+ID4gPiA+ICsgIGlmIChnaW1wbGVfaGFz X29wcyAoc3RtdCkpDQo+ID4gPiA+ID4gPiArICAgIHsNCj4gPiA+ID4gPiA+ICsgICAgICB0cmVl IGRlc3QgPSBOVUxMX1RSRUU7DQo+ID4gPiA+ID4gPiArICAgICAgLyogVHJ5IHRvIGZpbmQgdGhl IFNTQV9OQU1FIGJlaW5nIGRlZmluZWQuICBGb3IgU3RhdGVtZW50cw0KPiB3aXRoDQo+ID4gPiBh bg0KPiA+ID4gPiA+IExIUw0KPiA+ID4gPiA+ID4gKwkgdXNlIHRoZSBMSFMsIGlmIG5vdCwgYXNz dW1lIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIGEgY2FsbCBpcw0KPiB0aGUNCj4gPiA+ID4g PiA+ICsJIHZhbHVlIGJlaW5nIGRlZmluZWQuICBlLmcuIE1BU0tFRF9MT0FEIGV0Yy4gICovDQo+ ID4gPiA+ID4gPiArICAgICAgaWYgKGdpbXBsZV9oYXNfbGhzIChzdG10KSkNCj4gPiA+ID4gPiA+ ICsJew0KPiA+ID4gPiA+ID4gKwkgIGlmIChpc19naW1wbGVfYXNzaWduIChzdG10KSkNCj4gPiA+ ID4gPiA+ICsJICAgIGRlc3QgPSBnaW1wbGVfYXNzaWduX2xocyAoc3RtdCk7DQo+ID4gPiA+ID4g PiArCSAgZWxzZSBpZiAoY29uc3QgZ2NhbGwgKmNhbGwgPSBkeW5fY2FzdCA8Y29uc3QgZ2NhbGwg Kj4gKHN0bXQpKQ0KPiA+ID4gPiA+ID4gKwkgICAgZGVzdCA9IGdpbXBsZV9jYWxsX2xocyAoY2Fs bCk7DQo+ID4gPiA+ID4gPiArCX0NCj4gPiA+ID4gPiA+ICsgICAgICBlbHNlIGlmIChjb25zdCBn Y2FsbCAqY2FsbCA9IGR5bl9jYXN0IDxjb25zdCBnY2FsbCAqPiAoc3RtdCkpDQo+ID4gPiA+ID4g PiArCWRlc3QgPSBnaW1wbGVfYXJnIChjYWxsLCAwKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsgICAgICAvKiBEb24ndCBtb3ZlIHRoZSBzY2FsYXIgaW5zdHJ1Y3Rpb25zLiAgKi8NCj4g PiA+ID4gPiA+ICsgICAgICBib29sIG1vdmUNCj4gPiA+ID4gPiA+ICsJPSBkZXN0ICYmIChWRUNU T1JfVFlQRV9QIChUUkVFX1RZUEUgKGRlc3QpKQ0KPiA+ID4gPiA+ID4gKwkJICAgfHwgUE9JTlRF Ul9UWVBFX1AgKFRSRUVfVFlQRSAoZGVzdCkpKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsgICAgICAvKiBJZiB3ZSBmb3VuZCB0aGUgZGVmaW5pbmcgc3RhdGVtZW50IG9mIGEgc29tZXRo aW5nIHRoYXQncw0KPiBwYXJ0IG9mDQo+ID4gPiB0aGUNCj4gPiA+ID4gPiA+ICsJIGNoYWluIHRo ZW4gZXhwYW5kIHRoZSBjaGFpbiB3aXRoIHRoZSBuZXcgU1NBX1ZBUnMgYmVpbmcNCj4gdXNlZC4g ICovDQo+ID4gPiA+ID4gPiArICAgICAgaWYgKGNoYWluZWQtPmNvbnRhaW5zIChkZXN0KSkNCj4g PiA+ID4gPiA+ICsJew0KPiA+ID4gPiA+ID4gKwkgIGZvciAodW5zaWduZWQgeCA9IDA7IHggPCBn aW1wbGVfbnVtX2FyZ3MgKHN0bXQpOyB4KyspDQo+ID4gPiA+ID4gPiArCSAgICBpZiAoVFJFRV9D T0RFIChnaW1wbGVfYXJnIChzdG10LCB4KSkgPT0gU1NBX05BTUUpDQo+ID4gPiA+ID4gPiArCSAg ICAgIGNoYWluZWQtPmFkZCAoZ2ltcGxlX2FyZyAoc3RtdCwgeCkpOw0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gKwkgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkNCj4gPiA+ID4gPiA+ICsJICAg IGR1bXBfcHJpbnRmX2xvYyAoTVNHX05PVEUsIHZlY3RfbG9jYXRpb24sDQo+ID4gPiA+ID4gPiAr CQkJICAgICAiZm91bmQgY2hhaW4gJUciLCBzdG10KTsNCj4gPiA+ID4gPiA+ICsJICB1cGRhdGVf c3RtdCAoc3RtdCk7DQo+ID4gPiA+ID4gPiArCSAgbW92ZSA9IGZhbHNlOw0KPiA+ID4gPiA+ID4g Kwl9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgICAgaWYgKG1vdmUpDQo+ID4gPiA+ ID4gPiArCXsNCj4gPiA+ID4gPiA+ICsJICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpDQo+ID4gPiA+ ID4gPiArCSAgICBkdW1wX3ByaW50Zl9sb2MgKE1TR19OT1RFLCB2ZWN0X2xvY2F0aW9uLA0KPiA+ ID4gPiA+ID4gKwkJICAgICAgICAgICAgICJtb3Zpbmcgc3RtdCAlRyIsIHN0bXQpOw0KPiA+ID4g PiA+ID4gKwkgIGdzaV9tb3ZlX2JlZm9yZSAoZ3N0bXQsIGdkZXN0KTsNCj4gPiA+ID4gPiA+ICsJ ICBnc2lfcHJldiAoZ2Rlc3QpOw0KPiA+ID4gPiA+ID4gKwkgIHRyZWUgdmRlZiA9IGdpbXBsZV92 ZGVmIChzdG10KTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsJICAvKiBJZiB3ZSd2ZSBt b3ZlZCBhIFZERUYsIGV4dHJhY3QgdGhlIGRlZmluaW5nIE1FTSBhbmQNCj4gdXBkYXRlDQo+ID4g PiA+ID4gPiArCSAgICAgdXNhZ2VzIG9mIGl0LiAgVE9ETzogSSB0aGluayB0aGlzIG1heSBuZWVk IHNvbWUNCj4gY29uc3RyYWludHM/ICovDQo+ID4gPiA+ID4gPiArCSAgaWYgKHZkZWYpDQo+ID4g PiA+ID4gPiArCSAgICB7DQo+ID4gPiA+ID4gPiArCSAgICAgICpjdXJyZW50X3ZkZWYgPSB2ZGVm Ow0KPiA+ID4gPiA+ID4gKwkgICAgICAqcmVhY2hpbmdfdnVzZSA9IGdpbXBsZV92dXNlIChzdG10 KTsNCj4gPiA+ID4gPiA+ICsJICAgICAgaW1tX3VzZV9pdGVyYXRvciBpbW1faXRlcjsNCj4gPiA+ ID4gPiA+ICsJICAgICAgZ2ltcGxlICp1c2Vfc3RtdDsNCj4gPiA+ID4gPiA+ICsJICAgICAgRk9S X0VBQ0hfSU1NX1VTRV9TVE1UICh1c2Vfc3RtdCwgaW1tX2l0ZXIsIHZkZWYpDQo+ID4gPiA+ID4g PiArCQl7DQo+ID4gPiA+ID4gPiArCQkgICBpZiAoIWlzX2EgPGdwaGkgKj4gKHVzZV9zdG10KSkN Cj4gPiA+ID4gPiA+ICsJCSAgICAgY29udGludWU7DQo+ID4gPiA+ID4gPiArCQkgICBncGhpICpw aGlfc3RtdCA9IGFzX2EgPGdwaGkgKj4gKHVzZV9zdG10KTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ICsJCSAgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkNCj4gPiA+ID4gPiA+ICsJCSAgICAg ZHVtcF9wcmludGZfbG9jIChNU0dfTk9URSwgdmVjdF9sb2NhdGlvbiwNCj4gPiA+ID4gPiA+ICsJ CQkJInVwZGF0aW5nIHZ1c2UgJUciLCB1c2Vfc3RtdCk7DQo+ID4gPiA+ID4gPiArCQkgICBmb3Ig KHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2ltcGxlX3BoaV9udW1fYXJncw0KPiAocGhpX3N0bXQpOw0K PiA+ID4gPiA+IGkrKykNCj4gPiA+ID4gPiA+ICsJCSAgICBpZiAoZ2ltcGxlX3BoaV9hcmdfZGVm IChwaGlfc3RtdCwgaSkgPT0gdmRlZikNCj4gPiA+ID4gPiA+ICsJCSAgICAgIHsNCj4gPiA+ID4g PiA+ICsJCQlTRVRfVVNFIChQSElfQVJHX0RFRl9QVFIgKHBoaV9zdG10LCBpKSwNCj4gPiA+ID4g PiBnaW1wbGVfdnVzZSAoc3RtdCkpOw0KPiA+ID4gPiA+ID4gKwkJCWJyZWFrOw0KPiA+ID4gPiA+ ID4gKwkJICAgICAgfQ0KPiA+ID4gPiA+ID4gKwkJfQ0KPiA+ID4gPiA+ID4gKwkgICAgfQ0KPiA+ ID4gPiA+ID4gKwkgIHVwZGF0ZV9zdG10IChzdG10KTsNCj4gPiA+ID4gPiA+ICsJfQ0KPiA+ID4g PiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBnc2lfcHJldiAoZ3N0 bXQpOw0KPiA+ID4gPiA+ID4gKyAgbW92ZV9lYXJseV9leGl0X3N0bXRzIChjaGFpbmVkLCBnZGVz dCwgZ3N0bXQsIHJlYWNoaW5nX3Z1c2UsDQo+ID4gPiA+ID4gY3VycmVudF92ZGVmKTsNCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIGlmIChnaW1wbGVfdnVzZSAoc3RtdCkNCj4gPiA+ID4g PiA+ICsgICAgICAmJiByZWFjaGluZ192dXNlICYmICpyZWFjaGluZ192dXNlDQo+ID4gPiA+ID4g PiArICAgICAgJiYgZ2ltcGxlX3Z1c2UgKHN0bXQpID09ICpjdXJyZW50X3ZkZWYpDQo+ID4gPiA+ ID4gPiArICAgIHsNCj4gPiA+ID4gPiA+ICsgICAgICB1bmxpbmtfc3RtdF92ZGVmIChzdG10KTsN Cj4gPiA+ID4gPiA+ICsgICAgICBnaW1wbGVfc2V0X3Z1c2UgKHN0bXQsICpyZWFjaGluZ192dXNl KTsNCj4gPiA+ID4gPiA+ICsgICAgICB1cGRhdGVfc3RtdCAoc3RtdCk7DQo+ID4gPiA+ID4gPiAr ICAgIH0NCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyogVHJh bnNmb3JtIHRoZSBkZWZpbml0aW9uIHN0bXQgU1RNVF9JTkZPIG9mIGFuIGVhcmx5IGV4aXQNCj4g PiA+ID4gPiA+ICsgICB2YWx1ZS4gICovDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArYm9v bA0KPiA+ID4gPiA+ID4gK3ZlY3RfdHJhbnNmb3JtX2Vhcmx5X2JyZWFrIChsb29wX3ZlY19pbmZv IGxvb3BfdmluZm8sDQo+ID4gPiA+ID4gPiArCQkJICAgIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZv LA0KPiBnaW1wbGVfc3RtdF9pdGVyYXRvcg0KPiA+ID4gPiA+ICpnc2ksDQo+ID4gPiA+ID4gPiAr CQkJICAgIGdpbXBsZSAqKnZlY19zdG10LCBzbHBfdHJlZSBzbHBfbm9kZSkNCj4gPiA+ID4gPiA+ ICt7DQo+ID4gPiA+ID4gPiArICB0cmVlIHZlY3R5cGVfb3V0ID0gU1RNVF9WSU5GT19WRUNUWVBF IChzdG10X2luZm8pOw0KPiA+ID4gPiA+ID4gKyAgaW50IGk7DQo+ID4gPiA+ID4gPiArICBpbnQg bmNvcGllczsNCj4gPiA+ID4gPiA+ICsgIGludCB2ZWNfbnVtOw0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyAgaWYgKCFTVE1UX1ZJTkZPX1JFTEVWQU5UX1AgKHN0bXRfaW5mbykpDQo+ID4g PiA+ID4gPiArICAgIHJldHVybiBmYWxzZTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsg IGdpbXBsZV9tYXRjaF9vcCBvcDsNCj4gPiA+ID4gPiA+ICsgIGlmICghZ2ltcGxlX2V4dHJhY3Rf b3AgKHN0bXRfaW5mby0+c3RtdCwgJm9wKSkNCj4gPiA+ID4gPiA+ICsgICAgZ2NjX3VucmVhY2hh YmxlICgpOw0KPiA+ID4gPiA+ID4gKyAgZ2NjX2Fzc2VydCAob3AuY29kZS5pc190cmVlX2NvZGUg KCkpOw0KPiA+ID4gPiA+ID4gKyAgYXV0byBjb2RlID0gdHJlZV9jb2RlIChvcC5jb2RlKTsNCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIHRyZWUgdmVjdHlwZV9pbiA9IFNUTVRfVklORk9f VkVDVFlQRSAoc3RtdF9pbmZvKTsNCj4gPiA+ID4gPiA+ICsgIGdjY19hc3NlcnQgKHZlY3R5cGVf aW4pOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaWYgKHNs cF9ub2RlKQ0KPiA+ID4gPiA+ID4gKyAgICB7DQo+ID4gPiA+ID4gPiArICAgICAgbmNvcGllcyA9 IDE7DQo+ID4gPiA+ID4gPiArICAgICAgdmVjX251bSA9IFNMUF9UUkVFX05VTUJFUl9PRl9WRUNf U1RNVFMgKHNscF9ub2RlKTsNCj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4gKyAgZWxz ZQ0KPiA+ID4gPiA+ID4gKyAgICB7DQo+ID4gPiA+ID4gPiArICAgICAgbmNvcGllcyA9IHZlY3Rf Z2V0X251bV9jb3BpZXMgKGxvb3BfdmluZm8sIHZlY3R5cGVfaW4pOw0KPiA+ID4gPiA+ID4gKyAg ICAgIHZlY19udW0gPSAxOw0KPiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArICB2ZWNfbG9vcF9tYXNrcyAqbWFza3MgPSAmTE9PUF9WSU5GT19NQVNLUyAobG9v cF92aW5mbyk7DQo+ID4gPiA+ID4gPiArICBib29sIG1hc2tlZF9sb29wX3AgPSBMT09QX1ZJTkZP X0ZVTExZX01BU0tFRF9QDQo+ID4gPiAobG9vcF92aW5mbyk7DQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArICAvKiBUcmFuc2Zvcm0uICAqLw0KPiA+ID4gPiA+ID4gKyAgdHJlZSBuZXdfdGVt cCA9IE5VTExfVFJFRTsNCj4gPiA+ID4gPiA+ICsgIGF1dG9fdmVjPHRyZWU+IHZlY19vcHJuZHMw Ow0KPiA+ID4gPiA+ID4gKyAgYXV0b192ZWM8dHJlZT4gdmVjX29wcm5kczE7DQo+ID4gPiA+ID4g PiArICB0cmVlIGRlZjA7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBpZiAoZHVtcF9l bmFibGVkX3AgKCkpDQo+ID4gPiA+ID4gPiArICAgIGR1bXBfcHJpbnRmX2xvYyAoTVNHX05PVEUs IHZlY3RfbG9jYXRpb24sICJ0cmFuc2Zvcm0gZWFybHktDQo+ID4gPiA+ID4gZXhpdC5cbiIpOw0K PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgLyogRk9STk9XOiBNdWx0aXBsZSB0eXBlcyBh cmUgbm90IHN1cHBvcnRlZCBmb3IgY29uZGl0aW9uLiAgKi8NCj4gPiA+ID4gPiA+ICsgIGlmIChj b2RlID09IENPTkRfRVhQUikNCj4gPiA+ID4gPiA+ICsgICAgZ2NjX2Fzc2VydCAobmNvcGllcyA9 PSAxKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIGdpbXBs ZSAqc3RtdCA9IFNUTVRfVklORk9fU1RNVCAoc3RtdF9pbmZvKTsNCj4gPiA+ID4gPiA+ICsgIGJh c2ljX2Jsb2NrIGNvbmRfYmIgPSBnaW1wbGVfYmIgKHN0bXQpOw0KPiA+ID4gPiA+ID4gKyAgZ2lt cGxlX3N0bXRfaXRlcmF0b3IgIGNvbmRfZ3NpID0gZ3NpX2xhc3RfYmIgKGNvbmRfYmIpOw0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgdmVjdF9nZXRfdmVjX2RlZnMgKGxvb3BfdmluZm8s IHN0bXRfaW5mbywgc2xwX25vZGUsIG5jb3BpZXMsDQo+ID4gPiA+ID4gPiArCQkgICAgIG9wLm9w c1swXSwgJnZlY19vcHJuZHMwLCBvcC5vcHNbMV0sDQo+ICZ2ZWNfb3BybmRzMSwNCj4gPiA+ID4g PiA+ICsJCSAgICAgTlVMTCwgTlVMTCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBn aW1wbGUgKm5ld19zdG10ID0gTlVMTDsNCj4gPiA+ID4gPiA+ICsgIHRyZWUgY3N0XzAgPSBidWls ZF96ZXJvX2NzdCAodHJ1dGhfdHlwZV9mb3IgKHZlY3R5cGVfb3V0KSk7DQo+ID4gPiA+ID4gPiAr ICB0cmVlIGNzdF9tMSA9IGJ1aWxkX21pbnVzX29uZV9jc3QgKHRydXRoX3R5cGVfZm9yDQo+ICh2 ZWN0eXBlX291dCkpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgRk9SX0VBQ0hfVkVD X0VMVCAodmVjX29wcm5kczAsIGksIGRlZjApDQo+ID4gPiA+ID4gPiArICAgIHsNCj4gPiA+ID4g PiA+ICsgICAgICB0cmVlIHZvcFszXSA9IHsgZGVmMCwgdmVjX29wcm5kczFbaV0sIE5VTExfVFJF RSB9Ow0KPiA+ID4gPiA+ID4gKwl7DQo+ID4gPiA+ID4gPiArCSAgdHJlZSBjb25kID0gbWFrZV90 ZW1wX3NzYV9uYW1lICh0cnV0aF90eXBlX2Zvcg0KPiAodmVjdHlwZV9vdXQpLA0KPiA+ID4gPiA+ IE5VTEwsICJtYXNrIik7DQo+ID4gPiA+ID4gPiArCSAgZ2ltcGxlICp2ZWNfY21wID0gZ2ltcGxl X2J1aWxkX2Fzc2lnbiAoY29uZCwgY29kZSwNCj4gdm9wWzBdLA0KPiA+ID4gPiA+IHZvcFsxXSk7 DQo+ID4gPiA+ID4gPiArCSAgdmVjdF9maW5pc2hfc3RtdF9nZW5lcmF0aW9uIChsb29wX3ZpbmZv LCBzdG10X2luZm8sDQo+IHZlY19jbXAsDQo+ID4gPiA+ID4gJmNvbmRfZ3NpKTsNCj4gPiA+ID4g PiA+ICsgICAgICAgICAgaWYgKG1hc2tlZF9sb29wX3ApDQo+ID4gPiA+ID4gPiArCSAgICB7DQo+ ID4gPiA+ID4gPiArCSAgICAgIHRyZWUgbWFzayA9IHZlY3RfZ2V0X2xvb3BfbWFzayAoZ3NpLCBt YXNrcywgdmVjX251bSAqDQo+IG5jb3BpZXMsDQo+ID4gPiA+ID4gPiArCQkJCQkgICAgICB2ZWN0 eXBlX2luLCBpKTsNCj4gPiA+ID4gPiA+ICsJICAgICAgY29uZCA9IHByZXBhcmVfdmVjX21hc2sg KGxvb3BfdmluZm8sIFRSRUVfVFlQRQ0KPiAobWFzayksIG1hc2ssDQo+ID4gPiA+ID4gPiArCQkJ CSAgICAgICBjb25kLCAmY29uZF9nc2kpOw0KPiA+ID4gPiA+ID4gKwkgICAgfQ0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gKwkgIG5ld190ZW1wID0gbWFrZV90ZW1wX3NzYV9uYW1lICh0cnV0 aF90eXBlX2Zvcg0KPiA+ID4gPiA+ICh2ZWN0eXBlX291dCksIE5VTEwsICJ2ZXhpdCIpOw0KPiA+ ID4gPiA+ID4gKyAgICAgICAgICBnaW1wbGUgKnZlY19jb25kID0gZ2ltcGxlX2J1aWxkX2Fzc2ln biAobmV3X3RlbXAsDQo+ID4gPiA+ID4gVkVDX0NPTkRfRVhQUiwNCj4gPiA+ID4gPiA+ICsJCQkJ CQkgIGNvbmQsIGNzdF9tMSwNCj4gY3N0XzApOw0KPiA+ID4gPiA+ID4gKwkgIHZlY3RfZmluaXNo X3N0bXRfZ2VuZXJhdGlvbiAobG9vcF92aW5mbywgc3RtdF9pbmZvLA0KPiB2ZWNfY29uZCwNCj4g PiA+ID4gPiAmY29uZF9nc2kpOw0KPiA+ID4gPiA+ID4gKwkgIG5ld19zdG10ID0gdmVjX2NvbmQ7 DQo+ID4gPiA+ID4gPiArCX0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgICBpZiAo c2xwX25vZGUpDQo+ID4gPiA+ID4gPiArCVNMUF9UUkVFX1ZFQ19TVE1UUyAoc2xwX25vZGUpLnF1 aWNrX3B1c2ggKG5ld19zdG10KTsNCj4gPiA+ID4gPiA+ICsgICAgICBlbHNlDQo+ID4gPiA+ID4g PiArCVNUTVRfVklORk9fVkVDX1NUTVRTIChzdG10X2luZm8pLnNhZmVfcHVzaA0KPiAobmV3X3N0 bXQpOw0KPiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBn Y2NfYXNzZXJ0IChuZXdfc3RtdCk7DQo+ID4gPiA+ID4gPiArICB0cmVlIGxocyA9IGdpbXBsZV9h c3NpZ25fbGhzIChuZXdfc3RtdCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICB0cmVl IHQgPSBmb2xkX2J1aWxkMiAoTkVfRVhQUiwgYm9vbGVhbl90eXBlX25vZGUsIGxocywNCj4gPiA+ ID4gPiA+ICsJCQlidWlsZF96ZXJvX2NzdCAodHJ1dGhfdHlwZV9mb3INCj4gKHZlY3R5cGVfb3V0 KSkpOw0KPiA+ID4gPiA+ID4gKyAgdCA9IGNhbm9uaWNhbGl6ZV9jb25kX2V4cHJfY29uZCAodCk7 DQo+ID4gPiA+ID4gPiArICBnaW1wbGVfY29uZF9zZXRfY29uZGl0aW9uX2Zyb21fdHJlZSAoKGdj b25kKilzdG10LCB0KTsNCj4gPiA+ID4gPiA+ICsgIHVwZGF0ZV9zdG10IChzdG10KTsNCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIGJhc2ljX2Jsb2NrIGRlc3RfYmIgPSBFREdFX1NVQ0Mg KGNvbmRfYmIsIDEpLT5kZXN0Ow0KPiA+ID4gPiA+ID4gKyAgZ2ltcGxlX3N0bXRfaXRlcmF0b3Ig ZGVzdF9nc2kgPSBnc2lfc3RhcnRfYmIgKGRlc3RfYmIpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKyAgaGFzaF9zZXQ8dHJlZT4gY2hhaW5lZDsNCj4gPiA+ID4gPiA+ICsgIGdpbXBsZV9z dG10X2l0ZXJhdG9yIGdzaTIgPSBnc2lfZm9yX3N0bXQgKG5ld19zdG10KTsNCj4gPiA+ID4gPiA+ ICsgIGNoYWluZWQuYWRkIChsaHMpOw0KPiA+ID4gPiA+ID4gKyAgdHJlZSB2ZGVmOw0KPiA+ID4g PiA+ID4gKyAgdHJlZSB2dXNlID0gZ2ltcGxlX3Z1c2UgKG5ld19zdG10KTsNCj4gPiA+ID4gPiA+ ICsgIG1vdmVfZWFybHlfZXhpdF9zdG10cyAoJmNoYWluZWQsICZkZXN0X2dzaSwgJmdzaTIsICZ2 dXNlLA0KPiAmdmRlZik7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBpZiAoIXNscF9u b2RlKQ0KPiA+ID4gPiA+ID4gKyAgICAqdmVjX3N0bXQgPSBTVE1UX1ZJTkZPX1ZFQ19TVE1UUyAo c3RtdF9pbmZvKVswXTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiB0cnVl Ow0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICAvKiBUcmFuc2Zvcm0gcGhhc2Ugb2YgYSBjeWNsZSBQSEkuICAq Lw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICBib29sDQo+ID4gPiA+ID4gPiBAQCAtODE4NSw2 ICs4NDgxLDE4NiBAQCB2ZWN0X3RyYW5zZm9ybV9jeWNsZV9waGkNCj4gKGxvb3BfdmVjX2luZm8N Cj4gPiA+ID4gPiBsb29wX3ZpbmZvLA0KPiA+ID4gPiA+ID4gICAgcmV0dXJuIHRydWU7DQo+ID4g PiA+ID4gPiAgfQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICsvKiBUaGlzIGZ1bmN0aW9uIHRy aWVzIHRvIHZhbGlkYXRlIHdoZXRoZXIgYW4gZWFybHkgYnJlYWsNCj4gdmVjdG9yaXphdGlvbg0K PiA+ID4gPiA+ID4gKyAgIGlzIHBvc3NpYmxlIGZvciB0aGUgY3VycmVudCBpbnN0cnVjdGlvbiBz ZXF1ZW5jZS4gUmV0dXJucyBUcnVlIGkNCj4gPiA+ID4gPiA+ICsgICBwb3NzaWJsZSwgb3RoZXJ3 aXNlIEZhbHNlLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgIFJlcXVpcmVtZW50czoN Cj4gPiA+ID4gPiA+ICsgICAgIC0gQW55IG1lbW9yeSBhY2Nlc3MgbXVzdCBiZSB0byBhIGZpeGVk IHNpemUgYnVmZmVyLg0KPiA+ID4gPiA+ID4gKyAgICAgLSBUaGVyZSBtdXN0IG5vdCBiZSBhbnkg bG9hZHMgYW5kIHN0b3JlcyB0byB0aGUgc2FtZSBvYmplY3QuDQo+ID4gPiA+ID4gPiArICAgICAt IE11bHRpcGxlIGxvYWRzIGFyZSBhbGxvd2VkIGFzIGxvbmcgYXMgdGhleSBkb24ndCBhbGlhcy4N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICBBcmd1bWVudHM6 DQo+ID4gPiA+ID4gPiArICAgICAtIExPT1BfVklORk86IGxvb3AgaW5mb3JtYXRpb24gZm9yIHRo ZSBjdXJyZW50IGxvb3AuDQo+ID4gPiA+ID4gPiArICAgICAtIENIQUlOOiBDdXJyZW50bHkgZGV0 ZWN0ZWQgc2VxdWVuY2Ugb2YgaW5zdHJ1Y3Rpb25zIHRoYXQNCj4gYmVsb25nDQo+ID4gPiA+ID4g PiArCSAgICAgIHRvIHRoZSBjdXJyZW50IGVhcmx5IGJyZWFrLg0KPiA+ID4gPiA+ID4gKyAgICAg LSBMT0FEUzogTGlzdCBvZiBhbGwgbG9hZHMgZm91bmQgZHVyaW5nIHRyYXZlcnNhbC4NCj4gPiA+ ID4gPiA+ICsgICAgIC0gQkFTRVM6IExpc3Qgb2YgYWxsIGxvYWQgZGF0YXJlZmVyZW5jZXMgZm91 bmQgZHVyaW5nIHRyYXZlcnNhbC4NCj4gPiA+ID4gPiA+ICsgICAgIC0gR1NUTVQ6IEN1cnJlbnQg cG9zaXRpb24gdG8gaW5zcGVjdCBmb3IgdmFsaWRpdHkuICBUaGUgc2VxdWVuY2UNCj4gPiA+ID4g PiA+ICsJICAgICAgd2lsbCBiZSBtb3ZlZCB1cHdhcmRzIGZyb20gdGhpcyBwb2ludC4gICovDQo+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArc3RhdGljIGJvb2wNCj4gPiA+ID4gPiA+ICt2YWxp ZGF0ZV9lYXJseV9leGl0X3N0bXRzIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sDQo+IGhhc2hf c2V0PHRyZWU+DQo+ID4gPiA+ID4gKmNoYWluLA0KPiA+ID4gPiA+ID4gKwkJCSAgIHZlYzx0cmVl PiAqbG9hZHMsIHZlYzxkYXRhX3JlZmVyZW5jZSAqPg0KPiAqYmFzZXMsDQo+ID4gPiA+ID4gPiAr CQkJICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKmdzdG10KQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ ID4gPiA+ICsgIGlmIChnc2lfZW5kX3AgKCpnc3RtdCkpDQo+ID4gPiA+ID4gPiArICAgIHJldHVy biB0cnVlOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgZ2ltcGxlICpzdG10ID0gZ3Np X3N0bXQgKCpnc3RtdCk7DQo+ID4gPiA+ID4gPiArICBpZiAoZ2ltcGxlX2hhc19vcHMgKHN0bXQp KQ0KPiA+ID4gPiA+ID4gKyAgICB7DQo+ID4gPiA+ID4gPiArICAgICAgdHJlZSBkZXN0ID0gTlVM TF9UUkVFOw0KPiA+ID4gPiA+ID4gKyAgICAgIC8qIFRyeSB0byBmaW5kIHRoZSBTU0FfTkFNRSBi ZWluZyBkZWZpbmVkLiAgRm9yIFN0YXRlbWVudHMNCj4gd2l0aA0KPiA+ID4gYW4NCj4gPiA+ID4g PiBMSFMNCj4gPiA+ID4gPiA+ICsJIHVzZSB0aGUgTEhTLCBpZiBub3QsIGFzc3VtZSB0aGF0IHRo ZSBmaXJzdCBhcmd1bWVudCBvZiBhIGNhbGwgaXMNCj4gdGhlDQo+ID4gPiA+ID4gPiArCSB2YWx1 ZSBiZWluZyBkZWZpbmVkLiAgZS5nLiBNQVNLRURfTE9BRCBldGMuICAqLw0KPiA+ID4gPiA+ID4g KyAgICAgIGlmIChnaW1wbGVfaGFzX2xocyAoc3RtdCkpDQo+ID4gPiA+ID4gPiArCXsNCj4gPiA+ ID4gPiA+ICsJICBpZiAoaXNfZ2ltcGxlX2Fzc2lnbiAoc3RtdCkpDQo+ID4gPiA+ID4gPiArCSAg ICBkZXN0ID0gZ2ltcGxlX2Fzc2lnbl9saHMgKHN0bXQpOw0KPiA+ID4gPiA+ID4gKwkgIGVsc2Ug aWYgKGNvbnN0IGdjYWxsICpjYWxsID0gZHluX2Nhc3QgPGNvbnN0IGdjYWxsICo+IChzdG10KSkN Cj4gPiA+ID4gPiA+ICsJICAgIGRlc3QgPSBnaW1wbGVfY2FsbF9saHMgKGNhbGwpOw0KPiA+ID4g PiA+ID4gKwl9DQo+ID4gPiA+ID4gPiArICAgICAgZWxzZSBpZiAoY29uc3QgZ2NhbGwgKmNhbGwg PSBkeW5fY2FzdCA8Y29uc3QgZ2NhbGwgKj4gKHN0bXQpKQ0KPiA+ID4gPiA+ID4gKwlkZXN0ID0g Z2ltcGxlX2FyZyAoY2FsbCwgMCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgICAg LyogRG9uJ3QgbW92ZSB0aGUgc2NhbGFyIGluc3RydWN0aW9ucy4gICovDQo+ID4gPiA+ID4gPiAr ICAgICAgYm9vbCBtb3ZlDQo+ID4gPiA+ID4gPiArCT0gZGVzdCAmJiAoVkVDVE9SX1RZUEVfUCAo VFJFRV9UWVBFIChkZXN0KSkNCj4gPiA+ID4gPiA+ICsJCSAgIHx8IFBPSU5URVJfVFlQRV9QIChU UkVFX1RZUEUgKGRlc3QpKSk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgICAgLyog SWYgd2UgZm91bmQgdGhlIGRlZmluaW5nIHN0YXRlbWVudCBvZiBhIHNvbWV0aGluZyB0aGF0J3MN Cj4gcGFydCBvZg0KPiA+ID4gdGhlDQo+ID4gPiA+ID4gPiArCSBjaGFpbiB0aGVuIGV4cGFuZCB0 aGUgY2hhaW4gd2l0aCB0aGUgbmV3IFNTQV9WQVJzIGJlaW5nDQo+IHVzZWQuICAqLw0KPiA+ID4g PiA+ID4gKyAgICAgIGlmIChjaGFpbi0+Y29udGFpbnMgKGRlc3QpKQ0KPiA+ID4gPiA+ID4gKwl7 DQo+ID4gPiA+ID4gPiArCSAgZm9yICh1bnNpZ25lZCB4ID0gMDsgeCA8IGdpbXBsZV9udW1fYXJn cyAoc3RtdCk7IHgrKykNCj4gPiA+ID4gPiA+ICsJICAgIGlmIChUUkVFX0NPREUgKGdpbXBsZV9h cmcgKHN0bXQsIHgpKSA9PSBTU0FfTkFNRSkNCj4gPiA+ID4gPiA+ICsJICAgICAgY2hhaW4tPmFk ZCAoZ2ltcGxlX2FyZyAoc3RtdCwgeCkpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKwkg IGlmIChkdW1wX2VuYWJsZWRfcCAoKSkNCj4gPiA+ID4gPiA+ICsJICAgICAgZHVtcF9wcmludGZf bG9jIChNU0dfTk9URSwgdmVjdF9sb2NhdGlvbiwNCj4gPiA+ID4gPiA+ICsJCQkJImZvdW5kIGNo YWluICVHIiwgc3RtdCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCSAgbW92ZSA9IGZh bHNlOw0KPiA+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgICAg c3RtdF92ZWNfaW5mbyBzdG10X3ZpbmZvID0gbG9vcF92aW5mby0+bG9va3VwX3N0bXQgKHN0bXQp Ow0KPiA+ID4gPiA+ID4gKyAgICAgIGlmICghc3RtdF92aW5mbykNCj4gPiA+ID4gPiA+ICsJew0K PiA+ID4gPiA+ID4gKwkgICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpDQo+ID4gPiA+ID4gPiArCSAg ICAgZHVtcF9wcmludGZfbG9jIChNU0dfTUlTU0VEX09QVElNSVpBVElPTiwNCj4gdmVjdF9sb2Nh dGlvbiwNCj4gPiA+ID4gPiA+ICsJCQkgICAgICAiZWFybHkgYnJlYWtzIG9ubHkgc3VwcG9ydGVk LiBVbmtub3duIg0KPiA+ID4gPiA+ID4gKwkJCSAgICAgICIgc3RhdGVtZW50OiAlRyIsIHN0bXQp Ow0KPiA+ID4gPiA+ID4gKwkgICByZXR1cm4gZmFsc2U7DQo+ID4gPiA+ID4gPiArCX0NCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgICBhdXRvIGRyX3JlZiA9IFNUTVRfVklORk9fREFU QV9SRUYgKHN0bXRfdmluZm8pOw0KPiA+ID4gPiA+ID4gKyAgICAgIGlmIChkcl9yZWYpDQo+ID4g PiA+ID4gPiArCXsNCj4gPiA+ID4gPiA+ICsJICAgLyogV2UgY3VycmVubHkgb25seSBzdXBwb3J0 IHN0YXRpY2FsbHkgYWxsb2NhdGVkIG9iamVjdHMgZHVlDQo+IHRvDQo+ID4gPiA+ID4gPiArCSAg ICAgIG5vdCBoYXZpbmcgZmlyc3QtZmF1bHRpbmcgbG9hZHMgc3VwcG9ydCBvciBwZWVsaW5nIGZv cg0KPiBhbGlnbm1lbnQNCj4gPiA+ID4gPiA+ICsJICAgICAgc3VwcG9ydC4gIENvbXB1dGUgdGhl IGlzaXplIG9mIHRoZSByZWZlcmVuY2VkIG9iamVjdCAoaXQNCj4gY291bGQgYmUNCj4gPiA+ID4g PiA+ICsJICAgICAgZHluYW1pY2FsbHkgYWxsb2NhdGVkKS4gICovDQo+ID4gPiA+ID4gPiArCSAg IHRyZWUgb2JqID0gRFJfQkFTRV9BRERSRVNTIChkcl9yZWYpOw0KPiA+ID4gPiA+ID4gKwkgICBp ZiAoIW9iaiB8fCBUUkVFX0NPREUgKG9iaikgIT0gQUREUl9FWFBSKQ0KPiA+ID4gPiA+ID4gKwkg ICAgIHsNCj4gPiA+ID4gPiA+ICsJICAgICAgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkNCj4gPiA+ ID4gPiA+ICsJCSBkdW1wX3ByaW50Zl9sb2MgKE1TR19NSVNTRURfT1BUSU1JWkFUSU9OLA0KPiA+ ID4gPiA+IHZlY3RfbG9jYXRpb24sDQo+ID4gPiA+ID4gPiArCQkJCSAgImVhcmx5IGJyZWFrcyBv bmx5IHN1cHBvcnRlZCBvbg0KPiBzdGF0aWNhbGx5Ig0KPiA+ID4gPiA+ID4gKwkJCQkgICIgYWxs b2NhdGVkIG9iamVjdHMuXG4iKTsNCj4gPiA+ID4gPiA+ICsJICAgICAgIHJldHVybiBmYWxzZTsN Cj4gPiA+ID4gPiA+ICsJICAgICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCSAgIHRy ZWUgcmVmb3AgPSBUUkVFX09QRVJBTkQgKG9iaiwgMCk7DQo+ID4gPiA+ID4gPiArCSAgIHRyZWUg cmVmYmFzZSA9IGdldF9iYXNlX2FkZHJlc3MgKHJlZm9wKTsNCj4gPiA+ID4gPiA+ICsJICAgaWYg KCFyZWZiYXNlIHx8ICFERUNMX1AgKHJlZmJhc2UpDQo+ID4gPiA+ID4gPiArCSAgICAgICB8fCBU UkVFX0NPREUgKERFQ0xfU0laRSAocmVmYmFzZSkpICE9IElOVEVHRVJfQ1NUKQ0KPiA+ID4gPiA+ ID4gKwkgICAgIHsNCj4gPiA+ID4gPiA+ICsJICAgICAgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkN Cj4gPiA+ID4gPiA+ICsJCSBkdW1wX3ByaW50Zl9sb2MgKE1TR19NSVNTRURfT1BUSU1JWkFUSU9O LA0KPiA+ID4gPiA+IHZlY3RfbG9jYXRpb24sDQo+ID4gPiA+ID4gPiArCQkJCSAgImVhcmx5IGJy ZWFrcyBvbmx5IHN1cHBvcnRlZCBvbg0KPiBzdGF0aWNhbGx5Ig0KPiA+ID4gPiA+ID4gKwkJCQkg ICIgYWxsb2NhdGVkIG9iamVjdHMuXG4iKTsNCj4gPiA+ID4gPiA+ICsJICAgICAgIHJldHVybiBm YWxzZTsNCj4gPiA+ID4gPiA+ICsJICAgICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr CSAgIGlmICghbW92ZSAmJiBEUl9JU19SRUFEIChkcl9yZWYpKQ0KPiA+ID4gPiA+ID4gKwkgICAg IHsNCj4gPiA+ID4gPiA+ICsJCWxvYWRzLT5zYWZlX3B1c2ggKGRlc3QpOw0KPiA+ID4gPiA+ID4g KwkJYmFzZXMtPnNhZmVfcHVzaCAoZHJfcmVmKTsNCj4gPiA+ID4gPiA+ICsJICAgICB9DQo+ID4g PiA+ID4gPiArCSAgIGVsc2UgaWYgKERSX0lTX1dSSVRFIChkcl9yZWYpKQ0KPiA+ID4gPiA+ID4g KwkgICAgIHsNCj4gPiA+ID4gPiA+ICsJCWZvciAoYXV0byBkciA6IGJhc2VzKQ0KPiA+ID4gPiA+ ID4gKwkJICBpZiAoc2FtZV9kYXRhX3JlZnNfYmFzZV9vYmplY3RzIChkciwgZHJfcmVmKSkNCj4g PiA+ID4gPiA+ICsJCSAgICByZXR1cm4gZmFsc2U7DQo+ID4gPiA+ID4gPiArCSAgICAgfQ0KPiA+ ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgICAgaWYgKG1vdmUp DQo+ID4gPiA+ID4gPiArCXsNCj4gPiA+ID4gPiA+ICsJICBpZiAoZHVtcF9lbmFibGVkX3AgKCkp DQo+ID4gPiA+ID4gPiArCSAgICBkdW1wX3ByaW50Zl9sb2MgKE1TR19OT1RFLCB2ZWN0X2xvY2F0 aW9uLA0KPiA+ID4gPiA+ID4gKwkJICAgICAgICAgICAgICJhbmFseXppbmcgc3RtdCAlRyIsIHN0 bXQpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKwkgIGZvciAodHJlZSByZWYgOiBsb2Fk cykNCj4gPiA+ID4gPiA+ICsJICAgIGlmIChzdG10X21heV9jbG9iYmVyX3JlZl9wIChzdG10LCBy ZWYsIHRydWUpKQ0KPiA+ID4gPiA+ID4gKwkgICAgICB7DQo+ID4gPiA+ID4gPiArCSAgICAgICAg aWYgKGR1bXBfZW5hYmxlZF9wICgpKQ0KPiA+ID4gPiA+ID4gKwkJICBkdW1wX3ByaW50Zl9sb2Mg KE1TR19NSVNTRURfT1BUSU1JWkFUSU9OLA0KPiA+ID4gPiA+IHZlY3RfbG9jYXRpb24sDQo+ID4g PiA+ID4gPiArCQkJCSAgICJlYXJseSBicmVha3Mgbm90IHN1cHBvcnRlZCBhcw0KPiBtZW1vcnkN Cj4gPiA+ID4gPiB1c2VkIg0KPiA+ID4gPiA+ID4gKwkJCQkgICAiIG1heSBhbGlhcy5cbiIpOw0K PiA+ID4gPiA+ID4gKwkgICAgICAgIHJldHVybiBmYWxzZTsNCj4gPiA+ID4gPiA+ICsJICAgICAg fQ0KPiA+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsgIGdzaV9wcmV2IChnc3RtdCk7DQo+ID4gPiA+ID4gPiArICByZXR1cm4gdmFs aWRhdGVfZWFybHlfZXhpdF9zdG10cyAobG9vcF92aW5mbywgY2hhaW4sIGxvYWRzLCBiYXNlcywN Cj4gPiA+ID4gPiBnc3RtdCk7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKy8qIENoZWNrIHRvIHNlZSBpZiB0aGUgY3VycmVudCBlYXJseSBicmVhayBnaXZlbiBp biBTVE1UX0lORk8gaXMNCj4gdmFsaWQNCj4gPiA+IGZvcg0KPiA+ID4gPiA+ID4gKyAgIHZlY3Rv cml6YXRpb24uICAqLw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK2Jvb2wNCj4gPiA+ID4g PiA+ICt2ZWN0b3JpemFibGVfZWFybHlfZXhpdCAodmVjX2luZm8gKnZpbmZvLA0KPiA+ID4gPiA+ ID4gKwkJCXN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLCBzbHBfdHJlZSAvKg0KPiBzbHBfbm9kZSAq LywNCj4gPiA+ID4gPiA+ICsJCQlzbHBfaW5zdGFuY2UgLyogc2xwX25vZGVfaW5zdGFuY2UgKi8s DQo+ID4gPiA+ID4gPiArCQkJc3RtdF92ZWN0b3JfZm9yX2Nvc3QgKiAvKiBjb3N0X3ZlYyAqLykN Cj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8g PSBkeW5fY2FzdCA8bG9vcF92ZWNfaW5mbz4gKHZpbmZvKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ICsgIGlmICghbG9vcF92aW5mbw0KPiA+ID4gPiA+ID4gKyAgICAgIHx8ICFpc19hIDxn Y29uZCAqPiAoU1RNVF9WSU5GT19TVE1UIChzdG10X2luZm8pKSkNCj4gPiA+ID4gPiA+ICsgICAg cmV0dXJuIGZhbHNlOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaWYgKFNUTVRfVklO Rk9fREVGX1RZUEUgKHN0bXRfaW5mbykgIT0gdmVjdF9lYXJseV9leGl0X2RlZikNCj4gPiA+ID4g PiA+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgdHJl ZSB2ZWN0eXBlID0gU1RNVF9WSU5GT19WRUNUWVBFIChzdG10X2luZm8pOw0KPiA+ID4gPiA+ID4g KyAgdHJlZSB0cnV0aF90eXBlID0gdHJ1dGhfdHlwZV9mb3IgKHZlY3R5cGUpOw0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gKyAgYXV0byBvcHRhYiA9IGRpcmVjdF9vcHRhYl9oYW5kbGVyIChj YnJhbmNoX29wdGFiLCBUWVBFX01PREUNCj4gPiA+ID4gPiAodHJ1dGhfdHlwZSkpOw0KPiA+ID4g PiA+ID4gKyAgaWYgKG9wdGFiID09IENPREVfRk9SX25vdGhpbmcpDQo+ID4gPiA+ID4gPiArICAg IHsNCj4gPiA+ID4gPiA+ICsgICAgICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpDQo+ID4gPiA+ID4g PiArCSAgZHVtcF9wcmludGZfbG9jIChNU0dfTUlTU0VEX09QVElNSVpBVElPTiwNCj4gdmVjdF9s b2NhdGlvbiwNCj4gPiA+ID4gPiA+ICsJCQkJICJjYW4ndCB2ZWN0b3JpemUgZWFybHkgZXhpdCBi ZWNhdXNlDQo+IHRoZSAiDQo+ID4gPiA+ID4gPiArCQkJCSAidGFyZ2V0IGRvZXNuJ3Qgc3VwcG9y dCBmbGFnIHNldHRpbmcNCj4gdmVjdG9yICINCj4gPiA+ID4gPiA+ICsJCQkJICJjb21wYXJpc29u cy5cbiIpOw0KPiA+ID4gPiA+ID4gKyAgICAgIHJldHVybiBmYWxzZTsNCj4gPiA+ID4gPiA+ICsg ICAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaGFzaF9zZXQ8dHJlZT4gY2hhaW47 DQo+ID4gPiA+ID4gPiArICBhdXRvX3ZlYzx0cmVlPiBsb2FkczsNCj4gPiA+ID4gPiA+ICsgIGF1 dG9fdmVjPGRhdGFfcmVmZXJlbmNlICo+IGJhc2VzOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKyAgZ2ltcGxlICpzdG10ID0gU1RNVF9WSU5GT19TVE1UIChzdG10X2luZm8pOw0KPiA+ID4g PiA+ID4gKyAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgZ3NpID0gZ3NpX2Zvcl9zdG10IChzdG10KTsN Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiB2YWxpZGF0ZV9lYXJseV9leGl0 X3N0bXRzIChsb29wX3ZpbmZvLCAmY2hhaW4sICZsb2FkcywNCj4gPiA+ICZiYXNlcywNCj4gPiA+ ID4gPiAmZ3NpKTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAg LyogVmVjdG9yaXplcyBMQyBQSElzLiAgKi8NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgYm9v bA0KPiA+ID4gPiA+ID4gQEAgLTk5OTMsMTMgKzEwNDY5LDI0IEBAIHZlY3Rvcml6YWJsZV9saXZl X29wZXJhdGlvbiAodmVjX2luZm8NCj4gPiA+ICp2aW5mbywNCj4gPiA+ID4gPiA+ICAJICAgbmV3 X3RyZWUgPSBsYW5lX2V4dHJhY3QgPHZlY19saHMnLCAuLi4+Ow0KPiA+ID4gPiA+ID4gIAkgICBs aHMnID0gbmV3X3RyZWU7ICAqLw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICsgICAgICAvKiBX aGVuIHZlY3Rvcml6aW5nIGFuIGVhcmx5IGJyZWFrLCBhbnkgbGl2ZSBzdGF0ZW1lbnQgdGhhdCBp cw0KPiB1c2VkDQo+ID4gPiA+ID4gPiArCSBvdXRzaWRlIG9mIHRoZSBsb29wIGFyZSBkZWFkLiAg VGhlIGxvb3Agd2lsbCBuZXZlciBnZXQgdG8NCj4gdGhlbS4NCj4gPiA+ID4gPiA+ICsJIFdlIGNv dWxkIGNoYW5nZSB0aGUgbGl2ZW5lc3MgdmFsdWUgZHVyaW5nIGFuYWx5c2lzIGluc3RlYWQNCj4g YnV0IHNpbmNlDQo+ID4gPiA+ID4gPiArCSB0aGUgYmVsb3cgY29kZSBpcyBpbnZhbGlkIGFueXdh eSBqdXN0IGlnbm9yZSBpdCBkdXJpbmcNCj4gY29kZWdlbi4gICovDQo+ID4gPiA+ID4gPiArICAg ICAgaWYgKExPT1BfVklORk9fRUFSTFlfQlJFQUtTIChsb29wX3ZpbmZvKSkNCj4gPiA+ID4gPiA+ ICsJcmV0dXJuIHRydWU7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAgICAgICAgY2xhc3Mg bG9vcCAqbG9vcCA9IExPT1BfVklORk9fTE9PUCAobG9vcF92aW5mbyk7DQo+ID4gPiA+ID4gPiAt ICAgICAgYmFzaWNfYmxvY2sgZXhpdF9iYiA9IHNpbmdsZV9leGl0IChsb29wKS0+ZGVzdDsNCj4g PiA+ID4gPiA+ICsgICAgICBiYXNpY19ibG9jayBleGl0X2JiID0gbm9ybWFsX2V4aXQgKGxvb3Ap LT5kZXN0Ow0KPiA+ID4gPiA+ID4gICAgICAgIGdjY19hc3NlcnQgKHNpbmdsZV9wcmVkX3AgKGV4 aXRfYmIpKTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgICAgICAgdHJlZSB2ZWNfbGhzX3Bo aSA9IGNvcHlfc3NhX25hbWUgKHZlY19saHMpOw0KPiA+ID4gPiA+ID4gICAgICAgIGdpbXBsZSAq cGhpID0gY3JlYXRlX3BoaV9ub2RlICh2ZWNfbGhzX3BoaSwgZXhpdF9iYik7DQo+ID4gPiA+ID4g PiAtICAgICAgU0VUX1BISV9BUkdfREVGIChwaGksIHNpbmdsZV9leGl0IChsb29wKS0+ZGVzdF9p ZHgsIHZlY19saHMpOw0KPiA+ID4gPiA+ID4gKyAgICAgIC8qIEZvciBlYXJseSBleGl0cyB3ZSBu ZWVkIHRvIGNvbXB1dGUgdGhlIHJpZ2h0IGV4aXQuICBUaGUNCj4gY3VycmVudA0KPiA+ID4gPiA+ ID4gKwkgYXBwcm9hY2ggcHVudHMgdG8gYSBzY2FsYXIgbG9vcCBpbnN0ZWFkLiAgSWYgd2Ugd2Vy ZSB0bw0KPiB2ZWN0b3JpemUNCj4gPiA+ID4gPiA+ICsJIHRoZSBleGl0IGNvbmRpdGlvbiBiZWxv dyBuZWVkcyB0byB0YWtlIGludG8gYWNjb3VudCB0aGUNCj4gZGlmZmVyZW5jZQ0KPiA+ID4gPiA+ ID4gKwkgYmV0d2VlbiBhIGBicmVha2AgZWRnZSBhbmQgYSBgcmV0dXJuYCBlZGdlLiAgKi8NCj4g PiA+ID4gPiA+ICsgICAgICBTRVRfUEhJX0FSR19ERUYgKHBoaSwgbm9ybWFsX2V4aXQgKGxvb3Ap LT5kZXN0X2lkeCwNCj4gdmVjX2xocyk7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICAgICAg IGdpbXBsZV9zZXEgc3RtdHMgPSBOVUxMOw0KPiA+ID4gPiA+ID4gICAgICAgIHRyZWUgbmV3X3Ry ZWU7DQo+ID4gPiA+ID4gPiBAQCAtMTA0MzgsNyArMTA5MjUsOCBAQCBzY2FsZV9wcm9maWxlX2Zv cl92ZWN0X2xvb3AgKGNsYXNzIGxvb3ANCj4gPiA+ICpsb29wLA0KPiA+ID4gPiA+IHVuc2lnbmVk IHZmKQ0KPiA+ID4gPiA+ID4gICAgICAgIHNjYWxlX2xvb3BfZnJlcXVlbmNpZXMgKGxvb3AsIHAp Ow0KPiA+ID4gPiA+ID4gICAgICB9DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLSAgZWRnZSBl eGl0X2UgPSBzaW5nbGVfZXhpdCAobG9vcCk7DQo+ID4gPiA+ID4gPiArICBlZGdlIGV4aXRfZSA9 IG5vcm1hbF9leGl0IChsb29wKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICAgIGV4aXRf ZS0+cHJvYmFiaWxpdHkgPSBwcm9maWxlX3Byb2JhYmlsaXR5OjphbHdheXMgKCkgLw0KPiAobmV3 X2VzdF9uaXRlciArDQo+ID4gPiAxKTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgICBlZGdl IGV4aXRfbCA9IHNpbmdsZV9wcmVkX2VkZ2UgKGxvb3AtPmxhdGNoKTsNCj4gPiA+ID4gPiA+IEBA IC0xMDc4Nyw3ICsxMTI3NSw3IEBAIHZlY3RfdHJhbnNmb3JtX2xvb3AgKGxvb3BfdmVjX2luZm8N Cj4gPiA+ID4gPiBsb29wX3ZpbmZvLCBnaW1wbGUgKmxvb3BfdmVjdG9yaXplZF9jYWxsKQ0KPiA+ ID4gPiA+ID4gICAgLyogTWFrZSBzdXJlIHRoZXJlIGV4aXN0cyBhIHNpbmdsZS1wcmVkZWNlc3Nv ciBleGl0IGJiLiAgRG8gdGhpcw0KPiBiZWZvcmUNCj4gPiA+ID4gPiA+ICAgICAgIHZlcnNpb25p bmcuICAgKi8NCj4gPiA+ID4gPiA+ICAgIGVkZ2UgZSA9IHNpbmdsZV9leGl0IChsb29wKTsNCj4g PiA+ID4gPiA+IC0gIGlmICghIHNpbmdsZV9wcmVkX3AgKGUtPmRlc3QpKQ0KPiA+ID4gPiA+ID4g KyAgaWYgKGUgJiYgISBzaW5nbGVfcHJlZF9wIChlLT5kZXN0KSkNCj4gPiA+ID4gPiA+ICAgICAg ew0KPiA+ID4gPiA+ID4gICAgICAgIHNwbGl0X2xvb3BfZXhpdF9lZGdlIChlLCB0cnVlKTsNCj4g PiA+ID4gPiA+ICAgICAgICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpDQo+ID4gPiA+ID4gPiBAQCAt MTA4MTMsNyArMTEzMDEsNyBAQCB2ZWN0X3RyYW5zZm9ybV9sb29wIChsb29wX3ZlY19pbmZvDQo+ ID4gPiA+ID4gbG9vcF92aW5mbywgZ2ltcGxlICpsb29wX3ZlY3Rvcml6ZWRfY2FsbCkNCj4gPiA+ ID4gPiA+ICAgIGlmIChMT09QX1ZJTkZPX1NDQUxBUl9MT09QIChsb29wX3ZpbmZvKSkNCj4gPiA+ ID4gPiA+ICAgICAgew0KPiA+ID4gPiA+ID4gICAgICAgIGUgPSBzaW5nbGVfZXhpdCAoTE9PUF9W SU5GT19TQ0FMQVJfTE9PUCAobG9vcF92aW5mbykpOw0KPiA+ID4gPiA+ID4gLSAgICAgIGlmICgh IHNpbmdsZV9wcmVkX3AgKGUtPmRlc3QpKQ0KPiA+ID4gPiA+ID4gKyAgICAgIGlmIChlICYmICEg c2luZ2xlX3ByZWRfcCAoZS0+ZGVzdCkpDQo+ID4gPiA+ID4gPiAgCXsNCj4gPiA+ID4gPiA+ICAJ ICBzcGxpdF9sb29wX2V4aXRfZWRnZSAoZSwgdHJ1ZSk7DQo+ID4gPiA+ID4gPiAgCSAgaWYgKGR1 bXBfZW5hYmxlZF9wICgpKQ0KPiA+ID4gPiA+ID4gQEAgLTExMTQ2LDcgKzExNjM0LDggQEAgdmVj dF90cmFuc2Zvcm1fbG9vcCAobG9vcF92ZWNfaW5mbw0KPiA+ID4gPiA+IGxvb3BfdmluZm8sIGdp bXBsZSAqbG9vcF92ZWN0b3JpemVkX2NhbGwpDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICAg LyogTG9vcHMgdmVjdG9yaXplZCB3aXRoIGEgdmFyaWFibGUgZmFjdG9yIHdvbid0IGJlbmVmaXQg ZnJvbQ0KPiA+ID4gPiA+ID4gICAgICAgdW5yb2xsaW5nL3BlZWxpbmcuICAqLw0KPiA+ID4gPiA+ ID4gLSAgaWYgKCF2Zi5pc19jb25zdGFudCAoKSkNCj4gPiA+ID4gPiA+ICsgIGlmICghdmYuaXNf Y29uc3RhbnQgKCkNCj4gPiA+ID4gPiA+ICsgICAgICAmJiAhTE9PUF9WSU5GT19FQVJMWV9CUkVB S1MgKGxvb3BfdmluZm8pKQ0KPiA+ID4gPiA+ID4gICAgICB7DQo+ID4gPiA+ID4gPiAgICAgICAg bG9vcC0+dW5yb2xsID0gMTsNCj4gPiA+ID4gPiA+ICAgICAgICBpZiAoZHVtcF9lbmFibGVkX3Ag KCkpDQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYyBiL2dj Yy90cmVlLXZlY3Qtc3RtdHMuY2MNCj4gPiA+ID4gPiA+IGluZGV4DQo+ID4gPiA+ID4NCj4gPiA+ DQo+IDRlMGQ3NWUwZDc1ODZhZDU3YTM3ODUwZDhhNzBmNjE4MmVjYjEzZDAuLjRmOTQ0NmE1YzY5 OTI4OGJlMDkzYzU1NmUNCj4gPiA+ID4gPiBjNTI3ZTg3Y2Y3ODgzMTcgMTAwNjQ0DQo+ID4gPiA+ ID4gPiAtLS0gYS9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjDQo+ID4gPiA+ID4gPiArKysgYi9nY2Mv dHJlZS12ZWN0LXN0bXRzLmNjDQo+ID4gPiA+ID4gPiBAQCAtMzQyLDkgKzM0MiwyOCBAQCB2ZWN0 X3N0bXRfcmVsZXZhbnRfcCAoc3RtdF92ZWNfaW5mbw0KPiA+ID4gc3RtdF9pbmZvLA0KPiA+ID4g PiA+IGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywNCj4gPiA+ID4gPiA+ICAgICpsaXZlX3AgPSBm YWxzZTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgICAvKiBjb25kIHN0bXQgb3RoZXIgdGhh biBsb29wIGV4aXQgY29uZC4gICovDQo+ID4gPiA+ID4gPiAtICBpZiAoaXNfY3RybF9zdG10IChz dG10X2luZm8tPnN0bXQpDQo+ID4gPiA+ID4gPiAtICAgICAgJiYgU1RNVF9WSU5GT19UWVBFIChz dG10X2luZm8pICE9DQo+ID4gPiBsb29wX2V4aXRfY3RybF92ZWNfaW5mb190eXBlKQ0KPiA+ID4g PiA+ID4gLSAgICAqcmVsZXZhbnQgPSB2ZWN0X3VzZWRfaW5fc2NvcGU7DQo+ID4gPiA+ID4gPiAr ICBpZiAoaXNfY3RybF9zdG10IChzdG10X2luZm8tPnN0bXQpKQ0KPiA+ID4gPiA+ID4gKyAgICB7 DQo+ID4gPiA+ID4gPiArICAgICAgLyogSWRlYWxseSBFREdFX0xPT1BfRVhJVCB3b3VsZCBoYXZl IGJlZW4gc2V0IG9uIHRoZSBleGl0DQo+IGVkZ2UsDQo+ID4gPiBidXQNCj4gPiA+ID4gPiA+ICsJ IGl0IGxvb2tzIGxpa2UgbG9vcF9tYW5pcCBkb2Vzbid0IGRvIHRoYXQuLiAgU28gd2UgaGF2ZSB0 byBkbyBpdA0KPiA+ID4gPiA+ID4gKwkgdGhlIGhhcmQgd2F5LiAgKi8NCj4gPiA+ID4gPiA+ICsg ICAgICBiYXNpY19ibG9jayBiYiA9IGdpbXBsZV9iYiAoc3RtdF9pbmZvLT5zdG10KTsNCj4gPiA+ ID4gPiA+ICsgICAgICBiYXNpY19ibG9jayAqYmJzID0gTE9PUF9WSU5GT19CQlMgKGxvb3Bfdmlu Zm8pOw0KPiA+ID4gPiA+ID4gKyAgICAgIGVkZ2UgZXhpdCA9IEJSQU5DSF9FREdFIChiYik7DQo+ ID4gPiA+ID4gPiArICAgICAgdW5zaWduZWQgbmJicyA9IGxvb3AtPm51bV9ub2RlczsNCj4gPiA+ ID4gPiA+ICsgICAgICBib29sIGV4aXRfYmIgPSB0cnVlOw0KPiA+ID4gPiA+ID4gKyAgICAgIGZv ciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYmJzOyBpKyspDQo+ID4gPiA+ID4gPiArCXsNCj4gPiA+ ID4gPiA+ICsJICBpZiAoZXhpdC0+ZGVzdCA9PSBiYnNbaV0pDQo+ID4gPiA+ID4gPiArCSAgICB7 DQo+ID4gPiA+ID4gPiArCSAgICAgIGV4aXRfYmIgPSBmYWxzZTsNCj4gPiA+ID4gPiA+ICsJICAg ICAgYnJlYWs7DQo+ID4gPiA+ID4gPiArCSAgICB9DQo+ID4gPiA+ID4gPiArCX0NCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgICBpZiAoZXhpdF9iYikNCj4gPiA+ID4gPiA+ICsJKnJl bGV2YW50ID0gdmVjdF91c2VkX2luX3Njb3BlOw0KPiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gICAgLyogY2hhbmdpbmcgbWVtb3J5LiAgKi8NCj4gPiA+ID4gPiA+ ICAgIGlmIChnaW1wbGVfY29kZSAoc3RtdF9pbmZvLT5zdG10KSAhPSBHSU1QTEVfUEhJKQ0KPiA+ ID4gPiA+ID4gQEAgLTM1Nyw2ICszNzYsMTEgQEAgdmVjdF9zdG10X3JlbGV2YW50X3AgKHN0bXRf dmVjX2luZm8NCj4gPiA+IHN0bXRfaW5mbywNCj4gPiA+ID4gPiBsb29wX3ZlY19pbmZvIGxvb3Bf dmluZm8sDQo+ID4gPiA+ID4gPiAgCSpyZWxldmFudCA9IHZlY3RfdXNlZF9pbl9zY29wZTsNCj4g PiA+ID4gPiA+ICAgICAgICB9DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gKyAgYXV0b192ZWM8 ZWRnZT4gZXhpdHMgPSBnZXRfbG9vcF9leGl0X2VkZ2VzIChsb29wKTsNCj4gPiA+ID4gPiA+ICsg IGF1dG9fYml0bWFwIGV4aXRfYmJzOw0KPiA+ID4gPiA+ID4gKyAgZm9yIChlZGdlIGV4aXQgOiBl eGl0cykNCj4gPiA+ID4gPiA+ICsgICAgYml0bWFwX3NldF9iaXQgKGV4aXRfYmJzLCBleGl0LT5k ZXN0LT5pbmRleCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAgICAvKiB1c2VzIG91dHNp ZGUgdGhlIGxvb3AuICAqLw0KPiA+ID4gPiA+ID4gICAgRk9SX0VBQ0hfUEhJX09SX1NUTVRfREVG IChkZWZfcCwgc3RtdF9pbmZvLT5zdG10LCBvcF9pdGVyLA0KPiA+ID4gPiA+IFNTQV9PUF9ERUYp DQo+ID4gPiA+ID4gPiAgICAgIHsNCj4gPiA+ID4gPiA+IEBAIC0zNzUsNyArMzk5LDcgQEAgdmVj dF9zdG10X3JlbGV2YW50X3AgKHN0bXRfdmVjX2luZm8NCj4gPiA+IHN0bXRfaW5mbywNCj4gPiA+ ID4gPiBsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sDQo+ID4gPiA+ID4gPiAgCSAgICAgIC8qIFdl IGV4cGVjdCBhbGwgc3VjaCB1c2VzIHRvIGJlIGluIHRoZSBsb29wIGV4aXQgcGhpcw0KPiA+ID4g PiA+ID4gIAkJIChiZWNhdXNlIG9mIGxvb3AgY2xvc2VkIGZvcm0pICAgKi8NCj4gPiA+ID4gPiA+ ICAJICAgICAgZ2NjX2Fzc2VydCAoZ2ltcGxlX2NvZGUgKFVTRV9TVE1UICh1c2VfcCkpID09DQo+ IEdJTVBMRV9QSEkpOw0KPiA+ID4gPiA+ID4gLQkgICAgICBnY2NfYXNzZXJ0IChiYiA9PSBzaW5n bGVfZXhpdCAobG9vcCktPmRlc3QpOw0KPiA+ID4gPiA+ID4gKwkgICAgICBnY2NfYXNzZXJ0IChi aXRtYXBfYml0X3AgKGV4aXRfYmJzLCBiYi0+aW5kZXgpKTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiAgICAgICAgICAgICAgICAqbGl2ZV9wID0gdHJ1ZTsNCj4gPiA+ID4gPiA+ICAJICAgIH0N Cj4gPiA+ID4gPiA+IEBAIC0xODQ1LDcgKzE4NjksNyBAQCBjaGVja19sb2FkX3N0b3JlX2Zvcl9w YXJ0aWFsX3ZlY3RvcnMNCj4gPiA+ID4gPiAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLCB0cmVl IHZlY3R5cGUsDQo+ID4gPiA+ID4gPiAgICAgTUFTS19UWVBFIGlzIHRoZSB0eXBlIG9mIGJvdGgg bWFza3MuICBJZiBuZXcgc3RhdGVtZW50cyBhcmUNCj4gPiA+IG5lZWRlZCwNCj4gPiA+ID4gPiA+ ICAgICBpbnNlcnQgdGhlbSBiZWZvcmUgR1NJLiAgKi8NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiAtc3RhdGljIHRyZWUNCj4gPiA+ID4gPiA+ICt0cmVlDQo+ID4gPiA+ID4gPiAgcHJlcGFyZV92 ZWNfbWFzayAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLCB0cmVlIG1hc2tfdHlwZSwNCj4gdHJl ZQ0KPiA+ID4gPiA+IGxvb3BfbWFzaywNCj4gPiA+ID4gPiA+ICAJCSAgdHJlZSB2ZWNfbWFzaywg Z2ltcGxlX3N0bXRfaXRlcmF0b3IgKmdzaSkNCj4gPiA+ID4gPiA+ICB7DQo+ID4gPiA+ID4gPiBA QCAtMTExNTgsMTEgKzExMTgyLDE0IEBAIHZlY3RfYW5hbHl6ZV9zdG10ICh2ZWNfaW5mbyAqdmlu Zm8sDQo+ID4gPiA+ID4gPiAgCQkJICAgICBub2RlX2luc3RhbmNlLCBjb3N0X3ZlYyk7DQo+ID4g PiA+ID4gPiAgICAgICAgaWYgKCFyZXMpDQo+ID4gPiA+ID4gPiAgCXJldHVybiByZXM7DQo+ID4g PiA+ID4gPiAtICAgfQ0KPiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiArICBlbHNlIGlm IChpc19jdHJsX3N0bXQgKHN0bXRfaW5mby0+c3RtdCkpDQo+ID4gPiA+ID4gPiArICAgIFNUTVRf VklORk9fREVGX1RZUEUgKHN0bXRfaW5mbykgPSB2ZWN0X2Vhcmx5X2V4aXRfZGVmOw0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+ICAgIHN3aXRjaCAoU1RNVF9WSU5GT19ERUZfVFlQRSAoc3RtdF9p bmZvKSkNCj4gPiA+ID4gPiA+ICAgICAgew0KPiA+ID4gPiA+ID4gICAgICAgIGNhc2UgdmVjdF9p bnRlcm5hbF9kZWY6DQo+ID4gPiA+ID4gPiArICAgICAgY2FzZSB2ZWN0X2Vhcmx5X2V4aXRfZGVm Og0KPiA+ID4gPiA+ID4gICAgICAgICAgYnJlYWs7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g ICAgICAgIGNhc2UgdmVjdF9yZWR1Y3Rpb25fZGVmOg0KPiA+ID4gPiA+ID4gQEAgLTExMTk1LDYg KzExMjIyLDcgQEAgdmVjdF9hbmFseXplX3N0bXQgKHZlY19pbmZvICp2aW5mbywNCj4gPiA+ID4g PiA+ICAgICAgew0KPiA+ID4gPiA+ID4gICAgICAgIGdjYWxsICpjYWxsID0gZHluX2Nhc3QgPGdj YWxsICo+IChzdG10X2luZm8tPnN0bXQpOw0KPiA+ID4gPiA+ID4gICAgICAgIGdjY19hc3NlcnQg KFNUTVRfVklORk9fVkVDVFlQRSAoc3RtdF9pbmZvKQ0KPiA+ID4gPiA+ID4gKwkJICB8fCBnaW1w bGVfY29kZSAoc3RtdF9pbmZvLT5zdG10KSA9PQ0KPiBHSU1QTEVfQ09ORA0KPiA+ID4gPiA+ID4g IAkJICB8fCAoY2FsbCAmJiBnaW1wbGVfY2FsbF9saHMgKGNhbGwpID09IE5VTExfVFJFRSkpOw0K PiA+ID4gPiA+ID4gICAgICAgICpuZWVkX3RvX3ZlY3Rvcml6ZSA9IHRydWU7DQo+ID4gPiA+ID4g PiAgICAgIH0NCj4gPiA+ID4gPiA+IEBAIC0xMTIzNyw3ICsxMTI2NSw5IEBAIHZlY3RfYW5hbHl6 ZV9zdG10ICh2ZWNfaW5mbyAqdmluZm8sDQo+ID4gPiA+ID4gPiAgCSAgfHwgdmVjdG9yaXphYmxl X2xjX3BoaSAoYXNfYSA8bG9vcF92ZWNfaW5mbz4gKHZpbmZvKSwNCj4gPiA+ID4gPiA+ICAJCQkJ ICBzdG10X2luZm8sIE5VTEwsIG5vZGUpDQo+ID4gPiA+ID4gPiAgCSAgfHwgdmVjdG9yaXphYmxl X3JlY3VyciAoYXNfYSA8bG9vcF92ZWNfaW5mbz4gKHZpbmZvKSwNCj4gPiA+ID4gPiA+IC0JCQkJ ICAgc3RtdF9pbmZvLCBOVUxMLCBub2RlLCBjb3N0X3ZlYykpOw0KPiA+ID4gPiA+ID4gKwkJCQkg ICBzdG10X2luZm8sIE5VTEwsIG5vZGUsIGNvc3RfdmVjKQ0KPiA+ID4gPiA+ID4gKwkgIHx8IHZl Y3Rvcml6YWJsZV9lYXJseV9leGl0ICh2aW5mbywgc3RtdF9pbmZvLA0KPiA+ID4gPiA+ID4gKwkJ CQkgICAgICBub2RlLCBub2RlX2luc3RhbmNlLCBjb3N0X3ZlYykpOw0KPiA+ID4gPiA+ID4gICAg ZWxzZQ0KPiA+ID4gPiA+ID4gICAgICB7DQo+ID4gPiA+ID4gPiAgICAgICAgaWYgKGJiX3ZpbmZv KQ0KPiA+ID4gPiA+ID4gQEAgLTExMjYwLDcgKzExMjkwLDEwIEBAIHZlY3RfYW5hbHl6ZV9zdG10 ICh2ZWNfaW5mbyAqdmluZm8sDQo+ID4gPiA+ID4gPiAgCQkJCQkgTlVMTCwgTlVMTCwgbm9kZSwg Y29zdF92ZWMpDQo+ID4gPiA+ID4gPiAgCSAgICAgIHx8IHZlY3Rvcml6YWJsZV9jb21wYXJpc29u ICh2aW5mbywgc3RtdF9pbmZvLCBOVUxMLA0KPiBOVUxMLCBub2RlLA0KPiA+ID4gPiA+ID4gIAkJ CQkJICBjb3N0X3ZlYykNCj4gPiA+ID4gPiA+IC0JICAgICAgfHwgdmVjdG9yaXphYmxlX3BoaSAo dmluZm8sIHN0bXRfaW5mbywgTlVMTCwgbm9kZSwNCj4gY29zdF92ZWMpKTsNCj4gPiA+ID4gPiA+ ICsJICAgICAgfHwgdmVjdG9yaXphYmxlX3BoaSAodmluZm8sIHN0bXRfaW5mbywgTlVMTCwgbm9k ZSwNCj4gY29zdF92ZWMpDQo+ID4gPiA+ID4gPiArCSAgICAgIHx8IHZlY3Rvcml6YWJsZV9lYXJs eV9leGl0ICh2aW5mbywgc3RtdF9pbmZvLCBub2RlLA0KPiA+ID4gPiA+ID4gKwkJCQkJICBub2Rl X2luc3RhbmNlLCBjb3N0X3ZlYykpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gICAgICB9 DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICAgaWYgKG5vZGUpDQo+ID4gPiA+ID4gPiBAQCAt MTE0MTgsNiArMTE0NTEsMTIgQEAgdmVjdF90cmFuc2Zvcm1fc3RtdCAodmVjX2luZm8gKnZpbmZv LA0KPiA+ID4gPiA+ID4gICAgICAgIGdjY19hc3NlcnQgKGRvbmUpOw0KPiA+ID4gPiA+ID4gICAg ICAgIGJyZWFrOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICsgICAgY2FzZSBsb29wX2V4aXRf Y3RybF92ZWNfaW5mb190eXBlOg0KPiA+ID4gPiA+ID4gKyAgICAgIGRvbmUgPSB2ZWN0X3RyYW5z Zm9ybV9lYXJseV9icmVhayAoYXNfYSA8bG9vcF92ZWNfaW5mbz4NCj4gPiA+ICh2aW5mbyksDQo+ ID4gPiA+ID4gc3RtdF9pbmZvLA0KPiA+ID4gPiA+ID4gKwkJCQkgICAgICAgICBnc2ksICZ2ZWNf c3RtdCwgc2xwX25vZGUpOw0KPiA+ID4gPiA+ID4gKyAgICAgIGdjY19hc3NlcnQgKGRvbmUpOw0K PiA+ID4gPiA+ID4gKyAgICAgIGJyZWFrOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gICAg ICBkZWZhdWx0Og0KPiA+ID4gPiA+ID4gICAgICAgIGlmICghU1RNVF9WSU5GT19MSVZFX1AgKHN0 bXRfaW5mbykpDQo+ID4gPiA+ID4gPiAgCXsNCj4gPiA+ID4gPiA+IEBAIC0xMTgxNiw2ICsxMTg1 NSw5IEBAIHZlY3RfaXNfc2ltcGxlX3VzZSAodHJlZSBvcGVyYW5kLA0KPiA+ID4gdmVjX2luZm8N Cj4gPiA+ID4gPiAqdmluZm8sIGVudW0gdmVjdF9kZWZfdHlwZSAqZHQsDQo+ID4gPiA+ID4gPiAg CWNhc2UgdmVjdF9maXJzdF9vcmRlcl9yZWN1cnJlbmNlOg0KPiA+ID4gPiA+ID4gIAkgIGR1bXBf cHJpbnRmIChNU0dfTk9URSwgImZpcnN0IG9yZGVyIHJlY3VycmVuY2VcbiIpOw0KPiA+ID4gPiA+ ID4gIAkgIGJyZWFrOw0KPiA+ID4gPiA+ID4gKwljYXNlIHZlY3RfZWFybHlfZXhpdF9kZWY6DQo+ ID4gPiA+ID4gPiArCSAgZHVtcF9wcmludGYgKE1TR19OT1RFLCAiZWFybHkgZXhpdFxuIik7DQo+ ID4gPiA+ID4gPiArCSAgYnJlYWs7DQo+ID4gPiA+ID4gPiAgCWNhc2UgdmVjdF91bmtub3duX2Rl Zl90eXBlOg0KPiA+ID4gPiA+ID4gIAkgIGR1bXBfcHJpbnRmIChNU0dfTk9URSwgInVua25vd25c biIpOw0KPiA+ID4gPiA+ID4gIAkgIGJyZWFrOw0KPiA+ID4gPiA+ID4gQEAgLTEyNDg2LDYgKzEy NTI4LDggQEAgdmVjdF9nZXRfdmVjdG9yX3R5cGVzX2Zvcl9zdG10DQo+ICh2ZWNfaW5mbw0KPiA+ ID4gPiA+ICp2aW5mbywgc3RtdF92ZWNfaW5mbyBzdG10X2luZm8sDQo+ID4gPiA+ID4gPiAgICAq bnVuaXRzX3ZlY3R5cGVfb3V0ID0gTlVMTF9UUkVFOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ICAgIGlmIChnaW1wbGVfZ2V0X2xocyAoc3RtdCkgPT0gTlVMTF9UUkVFDQo+ID4gPiA+ID4gPiAr ICAgICAgLyogQWxsb3cgdmVjdG9yIGNvbmRpdGlvbmFscyB0aHJvdWdoIGhlcmUuICAqLw0KPiA+ ID4gPiA+ID4gKyAgICAgICYmICFpc19jdHJsX3N0bXQgKHN0bXQpDQo+ID4gPiA+ID4gPiAgICAg ICAgLyogTUFTS19TVE9SRSBoYXMgbm8gbGhzLCBidXQgaXMgb2suICAqLw0KPiA+ID4gPiA+ID4g ICAgICAgICYmICFnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChzdG10LCBJRk5fTUFTS19TVE9SRSkp DQo+ID4gPiA+ID4gPiAgICAgIHsNCj4gPiA+ID4gPiA+IEBAIC0xMjUwMiw3ICsxMjU0Niw3IEBA IHZlY3RfZ2V0X3ZlY3Rvcl90eXBlc19mb3Jfc3RtdA0KPiAodmVjX2luZm8NCj4gPiA+ID4gPiAq dmluZm8sIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLA0KPiA+ID4gPiA+ID4gIAl9DQo+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gICAgICAgIHJldHVybiBvcHRfcmVzdWx0OjpmYWlsdXJlX2F0IChz dG10LA0KPiA+ID4gPiA+ID4gLQkJCQkgICAgICJub3QgdmVjdG9yaXplZDogaXJyZWd1bGFyDQo+ IHN0bXQuJUciLCBzdG10KTsNCj4gPiA+ID4gPiA+ICsJCQkJICAgICAibm90IHZlY3Rvcml6ZWQ6 IGlycmVndWxhciBzdG10Og0KPiAlRyIsIHN0bXQpOw0KPiA+ID4gPiA+ID4gICAgICB9DQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gICAgdHJlZSB2ZWN0eXBlOw0KPiA+ID4gPiA+ID4gQEAgLTEy NTMxLDYgKzEyNTc1LDggQEAgdmVjdF9nZXRfdmVjdG9yX3R5cGVzX2Zvcl9zdG10DQo+ICh2ZWNf aW5mbw0KPiA+ID4gPiA+ICp2aW5mbywgc3RtdF92ZWNfaW5mbyBzdG10X2luZm8sDQo+ID4gPiA+ ID4gPiAgCXNjYWxhcl90eXBlID0gVFJFRV9UWVBFIChEUl9SRUYgKGRyKSk7DQo+ID4gPiA+ID4g PiAgICAgICAgZWxzZSBpZiAoZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAoc3RtdCwgSUZOX01BU0tf U1RPUkUpKQ0KPiA+ID4gPiA+ID4gIAlzY2FsYXJfdHlwZSA9IFRSRUVfVFlQRSAoZ2ltcGxlX2Nh bGxfYXJnIChzdG10LCAzKSk7DQo+ID4gPiA+ID4gPiArICAgICAgZWxzZSBpZiAoaXNfY3RybF9z dG10IChzdG10KSkNCj4gPiA+ID4gPiA+ICsJc2NhbGFyX3R5cGUgPSBUUkVFX1RZUEUgKGdpbXBs ZV9jb25kX3JocyAoc3RtdCkpOw0KPiA+ID4gPiA+ID4gICAgICAgIGVsc2UNCj4gPiA+ID4gPiA+ ICAJc2NhbGFyX3R5cGUgPSBUUkVFX1RZUEUgKGdpbXBsZV9nZXRfbGhzIChzdG10KSk7DQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Rvcml6ZXIuaCBi L2djYy90cmVlLXZlY3Rvcml6ZXIuaA0KPiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4gPg0KPiA+ ID4NCj4gMDE2OTYxZGE4NTEwY2E3ZGQyZDA3ZTcxNmNiZTM1NjIzZWQyZDlhNS4uZWRiYjcyMjhk M2FhZTI5YjZmNTFmZGFiDQo+ID4gPiA+ID4gMjg0ZjQ5YWM1N2M2NjEyZCAxMDA2NDQNCj4gPiA+ ID4gPiA+IC0tLSBhL2djYy90cmVlLXZlY3Rvcml6ZXIuaA0KPiA+ID4gPiA+ID4gKysrIGIvZ2Nj L3RyZWUtdmVjdG9yaXplci5oDQo+ID4gPiA+ID4gPiBAQCAtNjMsNiArNjMsNyBAQCBlbnVtIHZl Y3RfZGVmX3R5cGUgew0KPiA+ID4gPiA+ID4gICAgdmVjdF9pbnRlcm5hbF9kZWYsDQo+ID4gPiA+ ID4gPiAgICB2ZWN0X2luZHVjdGlvbl9kZWYsDQo+ID4gPiA+ID4gPiAgICB2ZWN0X3JlZHVjdGlv bl9kZWYsDQo+ID4gPiA+ID4gPiArICB2ZWN0X2Vhcmx5X2V4aXRfZGVmLA0KPiA+ID4gPiA+ID4g ICAgdmVjdF9kb3VibGVfcmVkdWN0aW9uX2RlZiwNCj4gPiA+ID4gPiA+ICAgIHZlY3RfbmVzdGVk X2N5Y2xlLA0KPiA+ID4gPiA+ID4gICAgdmVjdF9maXJzdF9vcmRlcl9yZWN1cnJlbmNlLA0KPiA+ ID4gPiA+ID4gQEAgLTgzNiw2ICs4MzcsMTAgQEAgcHVibGljOg0KPiA+ID4gPiA+ID4gICAgICAg d2UgbmVlZCB0byBwZWVsIG9mZiBpdGVyYXRpb25zIGF0IHRoZSBlbmQgdG8gZm9ybSBhbiBlcGls b2d1ZQ0KPiBsb29wLg0KPiA+ID4gKi8NCj4gPiA+ID4gPiA+ICAgIGJvb2wgcGVlbGluZ19mb3Jf bml0ZXI7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gKyAgLyogV2hlbiB0aGUgbG9vcCBoYXMg ZWFybHkgYnJlYWtzIHRoYXQgd2UgY2FuIHZlY3Rvcml6ZSB3ZSBuZWVkDQo+IHRvDQo+ID4gPiBw ZWVsDQo+ID4gPiA+ID4gPiArICAgICB0aGUgbG9vcCBmb3IgdGhlIGJyZWFrIGZpbmRpbmcgbG9v cC4gICovDQo+ID4gPiA+ID4gPiArICBib29sIGVhcmx5X2JyZWFrczsNCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICAgIC8qIFRydWUgaWYgdGhlcmUgYXJlIG5vIGxvb3AgY2FycmllZCBkYXRh IGRlcGVuZGVuY2llcyBpbiB0aGUgbG9vcC4NCj4gPiA+ID4gPiA+ICAgICAgIElmIGxvb3AtPnNh ZmVsZW4gPD0gMSwgdGhlbiB0aGlzIGlzIGFsd2F5cyB0cnVlLCBlaXRoZXIgdGhlIGxvb3ANCj4g PiA+ID4gPiA+ICAgICAgIGRpZG4ndCBoYXZlIGFueSBsb29wIGNhcnJpZWQgZGF0YSBkZXBlbmRl bmNpZXMsIG9yIHRoZSBsb29wIGlzDQo+IGJlaW5nDQo+ID4gPiA+ID4gPiBAQCAtOTIxLDYgKzky Niw3IEBAIHB1YmxpYzoNCj4gPiA+ID4gPiA+ICAjZGVmaW5lIExPT1BfVklORk9fUkVEVUNUSU9O X0NIQUlOUyhMKSAgICAgKEwpLQ0KPiA+cmVkdWN0aW9uX2NoYWlucw0KPiA+ID4gPiA+ID4gICNk ZWZpbmUgTE9PUF9WSU5GT19QRUVMSU5HX0ZPUl9HQVBTKEwpICAgICAoTCktDQo+ID4gPiA+cGVl bGluZ19mb3JfZ2Fwcw0KPiA+ID4gPiA+ID4gICNkZWZpbmUgTE9PUF9WSU5GT19QRUVMSU5HX0ZP Ul9OSVRFUihMKSAgICAoTCktDQo+ID4gPiA+cGVlbGluZ19mb3Jfbml0ZXINCj4gPiA+ID4gPiA+ ICsjZGVmaW5lIExPT1BfVklORk9fRUFSTFlfQlJFQUtTKEwpICAgICAgICAgKEwpLT5lYXJseV9i cmVha3MNCj4gPiA+ID4gPiA+ICAjZGVmaW5lIExPT1BfVklORk9fTk9fREFUQV9ERVBFTkRFTkNJ RVMoTCkgKEwpLQ0KPiA+ID4gPiA+ID5ub19kYXRhX2RlcGVuZGVuY2llcw0KPiA+ID4gPiA+ID4g ICNkZWZpbmUgTE9PUF9WSU5GT19TQ0FMQVJfTE9PUChMKQkgICAoTCktPnNjYWxhcl9sb29wDQo+ ID4gPiA+ID4gPiAgI2RlZmluZSBMT09QX1ZJTkZPX1NDQUxBUl9MT09QX1NDQUxJTkcoTCkgIChM KS0NCj4gPiA+ID4gPiA+c2NhbGFyX2xvb3Bfc2NhbGluZw0KPiA+ID4gPiA+ID4gQEAgLTk3MCw3 ICs5NzYsNyBAQCBwdWJsaWM6DQo+ID4gPiA+ID4gPiAgdHlwZWRlZiBvcHRfcG9pbnRlcl93cmFw cGVyIDxsb29wX3ZlY19pbmZvPg0KPiBvcHRfbG9vcF92ZWNfaW5mbzsNCj4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiAgc3RhdGljIGlubGluZSBsb29wX3ZlY19pbmZvDQo+ID4gPiA+ID4gPiAtbG9v cF92ZWNfaW5mb19mb3JfbG9vcCAoY2xhc3MgbG9vcCAqbG9vcCkNCj4gPiA+ID4gPiA+ICtsb29w X3ZlY19pbmZvX2Zvcl9sb29wIChjb25zdCBjbGFzcyBsb29wICpsb29wKQ0KPiA+ID4gPiA+ID4g IHsNCj4gPiA+ID4gPiA+ICAgIHJldHVybiAobG9vcF92ZWNfaW5mbykgbG9vcC0+YXV4Ow0KPiA+ ID4gPiA+ID4gIH0NCj4gPiA+ID4gPiA+IEBAIC0yMTA3LDcgKzIxMTMsNyBAQCBjbGFzcyBhdXRv X3B1cmdlX3ZlY3RfbG9jYXRpb24NCj4gPiA+ID4gPiA+ICAgICBpbiB0cmVlLXZlY3QtbG9vcC1t YW5pcC5jYy4gICovDQo+ID4gPiA+ID4gPiAgZXh0ZXJuIHZvaWQgdmVjdF9zZXRfbG9vcF9jb25k aXRpb24gKGNsYXNzIGxvb3AgKiwgbG9vcF92ZWNfaW5mbywNCj4gPiA+ID4gPiA+ICAJCQkJICAg ICB0cmVlLCB0cmVlLCB0cmVlLCBib29sKTsNCj4gPiA+ID4gPiA+IC1leHRlcm4gYm9vbCBzbHBl ZWxfY2FuX2R1cGxpY2F0ZV9sb29wX3AgKGNvbnN0IGNsYXNzIGxvb3AgKiwNCj4gPiA+ID4gPiBj b25zdF9lZGdlKTsNCj4gPiA+ID4gPiA+ICtleHRlcm4gYm9vbCBzbHBlZWxfY2FuX2R1cGxpY2F0 ZV9sb29wX3AgKGNvbnN0IGxvb3BfdmVjX2luZm8sDQo+ID4gPiA+ID4gY29uc3RfZWRnZSk7DQo+ ID4gPiA+ID4gPiAgY2xhc3MgbG9vcCAqc2xwZWVsX3RyZWVfZHVwbGljYXRlX2xvb3BfdG9fZWRn ZV9jZmcgKGNsYXNzIGxvb3AgKiwNCj4gPiA+ID4gPiA+ICAJCQkJCQkgICAgIGNsYXNzIGxvb3Ag KiwgZWRnZSk7DQo+ID4gPiA+ID4gPiAgY2xhc3MgbG9vcCAqdmVjdF9sb29wX3ZlcnNpb25pbmcg KGxvb3BfdmVjX2luZm8sIGdpbXBsZSAqKTsNCj4gPiA+ID4gPiA+IEBAIC0yMzA2LDYgKzIzMTIs NyBAQCBzdHJ1Y3QgdmVjdF9sb29wX2Zvcm1faW5mbw0KPiA+ID4gPiA+ID4gICAgdHJlZSBudW1i ZXJfb2ZfaXRlcmF0aW9uczsNCj4gPiA+ID4gPiA+ICAgIHRyZWUgbnVtYmVyX29mX2l0ZXJhdGlv bnNtMTsNCj4gPiA+ID4gPiA+ICAgIHRyZWUgYXNzdW1wdGlvbnM7DQo+ID4gPiA+ID4gPiArICB2 ZWM8Z2NvbmQgKj4gY29uZHM7DQo+ID4gPiA+ID4gPiAgICBnY29uZCAqbG9vcF9jb25kOw0KPiA+ ID4gPiA+ID4gICAgZ2NvbmQgKmlubmVyX2xvb3BfY29uZDsNCj4gPiA+ID4gPiA+ICB9Ow0KPiA+ ID4gPiA+ID4gQEAgLTIzMjYsNiArMjMzMyw5IEBAIGV4dGVybiBib29sIHZlY3Rvcml6YWJsZV9p bmR1Y3Rpb24NCj4gPiA+ID4gPiAobG9vcF92ZWNfaW5mbywgc3RtdF92ZWNfaW5mbywNCj4gPiA+ ID4gPiA+ICBleHRlcm4gYm9vbCB2ZWN0X3RyYW5zZm9ybV9yZWR1Y3Rpb24gKGxvb3BfdmVjX2lu Zm8sDQo+IHN0bXRfdmVjX2luZm8sDQo+ID4gPiA+ID4gPiAgCQkJCSAgICAgIGdpbXBsZV9zdG10 X2l0ZXJhdG9yICosDQo+ID4gPiA+ID4gPiAgCQkJCSAgICAgIGdpbXBsZSAqKiwgc2xwX3RyZWUp Ow0KPiA+ID4gPiA+ID4gK2V4dGVybiBib29sIHZlY3RfdHJhbnNmb3JtX2Vhcmx5X2JyZWFrIChs b29wX3ZlY19pbmZvLA0KPiA+ID4gc3RtdF92ZWNfaW5mbywNCj4gPiA+ID4gPiA+ICsJCQkJCWdp bXBsZV9zdG10X2l0ZXJhdG9yICosDQo+ID4gPiA+ID4gPiArCQkJCQlnaW1wbGUgKiosIHNscF90 cmVlKTsNCj4gPiA+ID4gPiA+ICBleHRlcm4gYm9vbCB2ZWN0X3RyYW5zZm9ybV9jeWNsZV9waGkg KGxvb3BfdmVjX2luZm8sDQo+IHN0bXRfdmVjX2luZm8sDQo+ID4gPiA+ID4gPiAgCQkJCSAgICAg IGdpbXBsZSAqKiwNCj4gPiA+ID4gPiA+ICAJCQkJICAgICAgc2xwX3RyZWUsIHNscF9pbnN0YW5j ZSk7DQo+ID4gPiA+ID4gPiBAQCAtMjMzNSw2ICsyMzQ1LDExIEBAIGV4dGVybiBib29sIHZlY3Rv cml6YWJsZV9waGkgKHZlY19pbmZvICosDQo+ID4gPiA+ID4gc3RtdF92ZWNfaW5mbywgZ2ltcGxl ICoqLCBzbHBfdHJlZSwNCj4gPiA+ID4gPiA+ICAJCQkgICAgICBzdG10X3ZlY3Rvcl9mb3JfY29z dCAqKTsNCj4gPiA+ID4gPiA+ICBleHRlcm4gYm9vbCB2ZWN0b3JpemFibGVfcmVjdXJyIChsb29w X3ZlY19pbmZvLCBzdG10X3ZlY19pbmZvLA0KPiA+ID4gPiA+ID4gIAkJCQkgIGdpbXBsZSAqKiwg c2xwX3RyZWUsDQo+IHN0bXRfdmVjdG9yX2Zvcl9jb3N0DQo+ID4gPiA+ID4gKik7DQo+ID4gPiA+ ID4gPiArZXh0ZXJuIGJvb2wgdmVjdG9yaXphYmxlX2Vhcmx5X2V4aXQgKHZlY19pbmZvICosIHN0 bXRfdmVjX2luZm8sDQo+ID4gPiA+ID4gPiArCQkJCSAgICAgc2xwX3RyZWUsIHNscF9pbnN0YW5j ZSwNCj4gPiA+ID4gPiA+ICsJCQkJICAgICBzdG10X3ZlY3Rvcl9mb3JfY29zdCAqKTsNCj4gPiA+ ID4gPiA+ICtleHRlcm4gdHJlZSBwcmVwYXJlX3ZlY19tYXNrIChsb29wX3ZlY19pbmZvLCB0cmVl LCB0cmVlLA0KPiA+ID4gPiA+ID4gKwkJCSAgICAgIHRyZWUsIGdpbXBsZV9zdG10X2l0ZXJhdG9y ICopOw0KPiA+ID4gPiA+ID4gIGV4dGVybiBib29sIHZlY3RfZW11bGF0ZWRfdmVjdG9yX3AgKHRy ZWUpOw0KPiA+ID4gPiA+ID4gIGV4dGVybiBib29sIHZlY3RfY2FuX3ZlY3Rvcml6ZV93aXRob3V0 X3NpbWRfcCAodHJlZV9jb2RlKTsNCj4gPiA+ID4gPiA+ICBleHRlcm4gYm9vbCB2ZWN0X2Nhbl92 ZWN0b3JpemVfd2l0aG91dF9zaW1kX3AgKGNvZGVfaGVscGVyKTsNCj4gPiA+ID4gPiA+IGRpZmYg LS1naXQgYS9nY2MvdHJlZS12ZWN0b3JpemVyLmNjIGIvZ2NjL3RyZWUtdmVjdG9yaXplci5jYw0K PiA+ID4gPiA+ID4gaW5kZXgNCj4gPiA+ID4gPg0KPiA+ID4NCj4gNmVjNDk1MTFkNzRiZDJlMGU1 ZGQ1MTgyM2E2YzQxMTgwZjA4NzE2Yy4uNGFhNDZjN2MwZDgyMzVkM2I3ODNjZTkzMA0KPiA+ID4g PiA+IGU1ZGYzNDgwZTFiM2VmOSAxMDA2NDQNCj4gPiA+ID4gPiA+IC0tLSBhL2djYy90cmVlLXZl Y3Rvcml6ZXIuY2MNCj4gPiA+ID4gPiA+ICsrKyBiL2djYy90cmVlLXZlY3Rvcml6ZXIuY2MNCj4g PiA+ID4gPiA+IEBAIC0xMzgyLDcgKzEzODIsOSBAQCBwYXNzX3ZlY3Rvcml6ZTo6ZXhlY3V0ZSAo ZnVuY3Rpb24gKmZ1bikNCj4gPiA+ID4gPiA+ICAJIHByZWRpY2F0ZXMgdGhhdCBuZWVkIHRvIGJl IHNoYXJlZCBmb3Igb3B0aW1hbCBwcmVkaWNhdGUNCj4gdXNhZ2UuDQo+ID4gPiA+ID4gPiAgCSBI b3dldmVyIHJlYXNzb2Mgd2lsbCByZS1vcmRlciB0aGVtIGFuZCBwcmV2ZW50IENTRSBmcm9tDQo+ IHdvcmtpbmcNCj4gPiA+ID4gPiA+ICAJIGFzIGl0IHNob3VsZC4gIENTRSBvbmx5IHRoZSBsb29w IGJvZHksIG5vdCB0aGUgZW50cnkuICAqLw0KPiA+ID4gPiA+ID4gLSAgICAgIGJpdG1hcF9zZXRf Yml0IChleGl0X2Jicywgc2luZ2xlX2V4aXQgKGxvb3ApLT5kZXN0LT5pbmRleCk7DQo+ID4gPiA+ ID4gPiArICAgICAgYXV0b192ZWM8ZWRnZT4gZXhpdHMgPSBnZXRfbG9vcF9leGl0X2VkZ2VzIChs b29wKTsNCj4gPiA+ID4gPiA+ICsgICAgICBmb3IgKGVkZ2UgZXhpdCA6IGV4aXRzKQ0KPiA+ID4g PiA+ID4gKwliaXRtYXBfc2V0X2JpdCAoZXhpdF9iYnMsIGV4aXQtPmRlc3QtPmluZGV4KTsNCj4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgICAgICAgZWRnZSBlbnRyeSA9IEVER0VfUFJFRCAobG9v cF9wcmVoZWFkZXJfZWRnZSAobG9vcCktPnNyYywgMCk7DQo+ID4gPiA+ID4gPiAgICAgICAgZG9f cnBvX3ZuIChmdW4sIGVudHJ5LCBleGl0X2Jicyk7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4g PiA+IC0tDQo+ID4gPiA+ID4gUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPiA+ ID4gPiA+IFNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSCwgRnJhbmtlbnN0cmFz c2UgMTQ2LCA5MDQ2MQ0KPiA+ID4gPiA+IE51ZXJuYmVyZywNCj4gPiA+ID4gPiBHZXJtYW55OyBH RjogSXZvIFRvdGV2LCBBbmRyZXcgTXllcnMsIEFuZHJldyBNY0RvbmFsZCwgQm91ZGllbg0KPiA+ ID4gPiA+IE1vZXJtYW47DQo+ID4gPiA+ID4gSFJCIDM2ODA5IChBRyBOdWVybmJlcmcpDQo+ID4g PiA+DQo+ID4gPg0KPiA+ID4gLS0NCj4gPiA+IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3Vz ZS5kZT4NCj4gPiA+IFNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSCwgRnJhbmtl bnN0cmFzc2UgMTQ2LCA5MDQ2MQ0KPiA+ID4gTnVlcm5iZXJnLA0KPiA+ID4gR2VybWFueTsgR0Y6 IEl2byBUb3RldiwgQW5kcmV3IE15ZXJzLCBBbmRyZXcgTWNEb25hbGQsIEJvdWRpZW4NCj4gPiA+ IE1vZXJtYW47DQo+ID4gPiBIUkIgMzY4MDkgKEFHIE51ZXJuYmVyZykNCj4gPg0KPiANCj4gLS0N Cj4gUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPiBTVVNFIFNvZnR3YXJlIFNv bHV0aW9ucyBHZXJtYW55IEdtYkgsIEZyYW5rZW5zdHJhc3NlIDE0NiwgOTA0NjENCj4gTnVlcm5i ZXJnLA0KPiBHZXJtYW55OyBHRjogSXZvIFRvdGV2LCBBbmRyZXcgTXllcnMsIEFuZHJldyBNY0Rv bmFsZCwgQm91ZGllbg0KPiBNb2VybWFuOw0KPiBIUkIgMzY4MDkgKEFHIE51ZXJuYmVyZykNCg==