From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80080.outbound.protection.outlook.com [40.107.8.80]) by sourceware.org (Postfix) with ESMTPS id B2C3038515F6 for ; Mon, 10 May 2021 12:58:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org B2C3038515F6 Received: from AM6PR0502CA0064.eurprd05.prod.outlook.com (2603:10a6:20b:56::41) by AM0PR08MB4484.eurprd08.prod.outlook.com (2603:10a6:208:139::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25; Mon, 10 May 2021 12:58:36 +0000 Received: from AM5EUR03FT058.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:56:cafe::37) by AM6PR0502CA0064.outlook.office365.com (2603:10a6:20b:56::41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25 via Frontend Transport; Mon, 10 May 2021 12:58:36 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; 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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT058.mail.protection.outlook.com (10.152.17.48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25 via Frontend Transport; Mon, 10 May 2021 12:58:36 +0000 Received: ("Tessian outbound 1e34f83e4964:v91"); Mon, 10 May 2021 12:58:36 +0000 X-CR-MTA-TID: 64aa7808 Received: from e9d3b8108ba9.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id C90901F6-5233-4884-BC87-448E999A1F7B.1; Mon, 10 May 2021 12:58:29 +0000 Received: from EUR03-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e9d3b8108ba9.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 10 May 2021 12:58:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=diyl2JznTGmfSaKF2Ncvv02ZlzwoDcNd4xnxJ5aETrMXXcX8sTYSZuEkBLgEiZSnSH0/L6FGBnHH9t0JCiGkwFG+rb/RhK/JLj/gWjT+kuYbEqyqe+lLd0RHwlQnIcvq7ZMsngZPYtkGnYz9LTapLJ1sU+qTmlNb0froMgbym1PqLqKxGj7KpMWTOUN4hHELEzkNt+xz6qXKwSlm7+TiZFIDgOuDg1p8fUQLauyrsFLq7S+6Bw/Dvg59l91gPXykZHmZX8b0WNnUcduBhhrqVikrVP215+a4edduLYMgLsJPQY3OH+gHd/4fTEOfORygKChR9RCmYAxGOP+qlkQ2vQ== 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-SenderADCheck; bh=Ah2vGE4nxUPl+Ezto440V3NhW7GaxZRr+Url1njacvg=; b=E8p+FZ51MM46UMHF47rLaqvlYaXSHVB0iXfCqOB5xigVT+r28Hm3t5wn601ieUkhVuD44CX1eWmpSODQVEyYf3uWX1nGZxxOXM9jlkXVLMB4sZDO48Z1UtHyCN9RavwHhx0+BBJCkvjGOQnYWdU0v+bWfk2/FTZR5yDwBsxsXMxN5gtPvrRg24m+olhmt/AuSlgCsmV4LWn7rOtFHZZDxYb3p3TLsm+1I9kV/u9f1/9ff3049EEqbvzDn3q3gLioXiaMy/X9cwei90jAdTEBYqmjxEVP/SwB4RaUHMMjYz+p5Cq8xmpjd/FLHtMeg5ul/YluoFS37a5F03HjruCRMQ== 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 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by VI1PR0801MB1680.eurprd08.prod.outlook.com (2603:10a6:800:5a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25; Mon, 10 May 2021 12:58:27 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::f557:1fb2:62cc:5243]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::f557:1fb2:62cc:5243%9]) with mapi id 15.20.4108.031; Mon, 10 May 2021 12:58:27 +0000 From: Tamar Christina To: Richard Biener CC: "gcc-patches@gcc.gnu.org" , nd Subject: RE: [PATCH 1/4]middle-end Vect: Add support for dot-product where the sign for the multiplicant changes. Thread-Topic: [PATCH 1/4]middle-end Vect: Add support for dot-product where the sign for the multiplicant changes. Thread-Index: AQHXQdV4g2WFnSd+rEyE6iZSy1EmNqrX6WiAgAABSHCABLQJgIAAAwwA Date: Mon, 10 May 2021 12:58:26 +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: 678EC6142C1A3B45B76A67B015B3D3E9.0 x-checkrecipientchecked: true Authentication-Results-Original: suse.de; dkim=none (message not signed) header.d=none;suse.de; dmarc=none action=none header.from=arm.com; x-originating-ip: [82.11.185.166] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 60b8e9e7-6b59-4758-7eb4-08d913b35337 x-ms-traffictypediagnostic: VI1PR0801MB1680:|AM0PR08MB4484: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:8273;OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 6QrOdagyDIzw74q62BJL5sjPLKD0G2q4/HaGEFNpA4oAWper9XDlPE40D5tSaa/5xut+nlzkhyusFMpniueVWIDm0ThrnFLFslcNFuzS5nZRW3mBvjBSSgAMgM1O3p8W6A6ILLwQbLgan0det4DYBq/HgiRYj/brWJTnMf3t8RjmM3G/4g+v/KU2HWsz6JADokWESMWK0pAqyyuTvbavHqzVjnjNiQm/G9ODHssE5COoncXWL/1o3e+hkvlDXtrdoVly535LHaKwvfAlMjPnJwF15nE5zi9AlbSqF77CnESluTP1tPOdAYY8dUcdWhFBGt5gfJGnA2HR9rD2Vz5GNyltPdcE5Wuh7DIxq39eMUXzbycKjlyGiPlufW0SSeUs4RX6lhCNMRWQIkHpM91J3DXR07s4/tscPEjFMM5dIEZlyFXsBiGcbD+/1s09n7Yqr5WYJbu2KQsqjscVyL/4H05PmCgFvdZotbKnYwkjw7BzBTqcNOpe9NcyI/Oo3TsjvrDlsLXlfPso3l7+ZnS6hpCdfhS0DRlxtXntyMNUDWtqC2JXbLkjpHOMW8ndQiUOUEIgGFd1ZMuPiflTFbFMSLpuQyHxndpLxgsCfafaZ123GXL6PdT2DwlEOOG48GxlVVlbbKTKCYQwJ/c6rshBp9AXPpYRIshMqT1u6uOgKsE= 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:(4636009)(396003)(136003)(376002)(366004)(39860400002)(346002)(66946007)(30864003)(9686003)(76116006)(64756008)(26005)(55016002)(4326008)(316002)(8676002)(478600001)(54906003)(52536014)(33656002)(71200400001)(66556008)(66446008)(6916009)(83380400001)(8936002)(6506007)(53546011)(2906002)(66476007)(86362001)(122000001)(5660300002)(38100700002)(7696005)(66574015)(186003)(559001)(579004)(357404004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?RjNyS3lEZFN6M0JYNEFOTUFHWVZYVmxjL2ZrM0svWitFNmNIMkp4RUZjWGV5?= =?utf-8?B?c3VVS0RYd3AvZkRwalYwQmdRL3l2cnZiU3NPZEhiaEZIV2F6UWFSNWZjZzQw?= =?utf-8?B?SXRFZWxIZ1VIcTU5UVRGZmw0SHdBK0xiTldXcTBkaGFiN1QwUHI4Vk9vYVhr?= =?utf-8?B?cnpIQ1NraHk1enppdDBuNTNFWGQ3dEdUcUh0TVNrb0Z2eTZBUEFjR0dkU3BZ?= =?utf-8?B?b1hleEFsY0c4L0NhdmhpNm1seVFzSEgyT1liWkt1d0tIMjhjLzRjOWZaZ1c0?= =?utf-8?B?TnBrRzBHUEowbElUUlIvV1NIQkd5bGtySWh3cDZGRWEzeGtkL1F6RkRGZnVu?= =?utf-8?B?Kzd2cjBnSnBabjB5UHJxdkszMTNGdjk2QTFocG1iaXZQTmUxeERaWUc4RmVF?= =?utf-8?B?MnBZSmlJTjdXUUpmZnFVT0N3VEdUeXk5YzM3Qkc2QkQyazJDek1nNEZaUEVI?= =?utf-8?B?NmdKaFIxRldINCtCT0VoczQ2emRvQnpCbTI3THU0L1VINmduTDJ6SEFXSHln?= =?utf-8?B?cm9BeFlLQ0o4WnBFODZBdXlLazQxaHRjU0hGNlpwRkNRd2RReEJLbjNlNWc3?= =?utf-8?B?L1FmRzFNaDUweUZWZForRkJjNHlyL01COUhJSVNyZ0R4dnV3NTdYRmxnelE2?= =?utf-8?B?djJQWjJ1U3FIYU1BZnprc1dBVmY3Q0ErM1lWd2Y0Rk5ZWUVEbVFDT1ZlTm0r?= =?utf-8?B?Y0lVdWJGa0RPV1lubG5GSXEvQjZrQXlMeDlTQTdBVUROV25Lbmp3M1dtcVND?= =?utf-8?B?Mi9xWGZFMjRQc01ZbjUwaCtlK0RhVCtodFRUWGIrZUVvNmJTa3FpdFVMVFVw?= =?utf-8?B?bVVYQjdGeTZ6UDgwWG5TeWQxSlltb1V3aS9kdkJQM1YweHJNQUNMZWorWHlw?= =?utf-8?B?UmFFbkEyOHZ1c2hCcXZsUjBadjYxRHVJSGN0clRpWnRYcldwK1BhWmJhUXRZ?= =?utf-8?B?ZERuVS9EMnN6dHQ0aUt6RTRIa3ZidTBVcHdtNTZpM2VDUjdqWVMzK2xVcVdu?= =?utf-8?B?a1FkYUJSdXBnenNPSHlmdUpta2h0VGpiVE0xSFZRdHRnbTk1UVJjZUVMRkR2?= =?utf-8?B?Z1liZmJuQ3M3Z05iSklMNmtqR1VvSnhzTG90ZVh0QXJ2akkvcTFkY25DVkhj?= =?utf-8?B?WWxFYkM4MERjNnJnRzFZcS8zZmQ3dFlqdSsxV3BDNy9OLzlUbDM1WGRWVWFx?= =?utf-8?B?TloxeklMb0QrZHg2cmd2aUVaaFNCS1Z6d2xMendzK0xveTBVREFXd1FMSXpl?= =?utf-8?B?U0NsdENtUkJ1VXZRckZrYjNXSDZaNVpCS09jUDN5NThFdnJPejFIRTNMWVVC?= =?utf-8?B?djNsb0M1cm9oK09mN3lCY3FNS2pEKzJlL1VIVmlLSTE5YjVlN2FZTG0veXl5?= =?utf-8?B?QUlHd3plUDhnajdlVVhlMFVuUkRuQ1VKeHE4ZkhwdFdFQnNaRU5VVHFzQWgw?= =?utf-8?B?SlhWR1BJY2JGQXdnNngxdDBnS01wd1IyYm9jQ1hhZWJUOU55cDBpVHZhazVo?= =?utf-8?B?TFhKUVRxQUY0YkNEWFdHckIvTCtXUGZ3dEVQVUVJWEtjT2dUK0J6VVJxeEZl?= =?utf-8?B?QmV1NzVWZ0IwbkpvTlEvK0xqT2E0dm8rb1RxMnF3K1NyOGhnTEJLazVkRUhE?= =?utf-8?B?RTd5MnBxMEhFOHZyUFFJMDVuOUtsVTdzWkx0bjBCbThoL0pJVkxpTDlpS0ZO?= =?utf-8?B?MlhnWW5zSGxWaWU2WlZScTlERllLYXo4RHFXT0JKM1YvTXVySEtOdWJvL3h2?= =?utf-8?Q?mQH0aJs9pw3fO2RsxcpMEM+SsYIjCnZgLg4mrv/?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1680 Original-Authentication-Results: suse.de; dkim=none (message not signed) header.d=none;suse.de; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT058.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 2d975a1b-caa1-4961-0e72-08d913b34d99 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wIOm5NrfHap5+VfMubFqECmdnLBGvQz+VwNhwHiOj67JmtphfhsXRgS/qnejA5y/9DSV9lYc0HewKxU4CEvMzw7H+M8buRA+REz2islau2t436zLaWBM3Z18tSyl+zB2nCEgKWNaVT6biPHCvcf2rH3KUKvZtnzVmcv6RHL62IbRR/q641BpPUgLdq4+uFSo3iwG4XbVpoHyTf6e3q0O9YN+KohjxFNfIcQKI8eJdgcCqwGk7+L6f8/aCguNppFSqXTAhR9scMRc3guoOVNN02r+iTTthBfb1CrDI+YGQ7ubHb0XU4V+6HrCPySDJHiNkSJ8Z7+9ZE7BjJLDLgwFsypcDrMtf/5vDHTDJniq97nAG0J/LTmnsg+WE9p5GxFjGEb8ggr+ErG1OKxLhlNNrBwq0dd8xVDqh98GTlPjqQxwIt7kvSM1nQIPzEKgH4Zs35JVFCo7WvaZVeL9vKlGU9g4Wc2DIpKPaM2f0vdaMJg5LzVo3jJMxWoMaaaNY0SYaBqfuNSi8GgFmQbO5rwsZOmiNi5Mtz4MWm+lVwkiUOYXIthbz+gKDCYeCNKRqH+jchtf6cI6P7EGoVE2iAVBOGAtQzKInzjGWqkPVSE4WhOI1CABsQZWqQpZB8gGBnJWhxqfEDD6W5mydQHJDJhaV7dq2q1O83gvq8jfwfadotbam4kkdByPu/eEtWdzCv8p 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:(4636009)(376002)(39860400002)(136003)(346002)(396003)(46966006)(36840700001)(36860700001)(81166007)(7696005)(47076005)(83380400001)(55016002)(8936002)(86362001)(4326008)(82740400003)(336012)(30864003)(478600001)(26005)(5660300002)(70206006)(356005)(82310400003)(70586007)(186003)(66574015)(52536014)(6862004)(8676002)(33656002)(9686003)(2906002)(53546011)(316002)(6506007)(54906003)(357404004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2021 12:58:36.5155 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 60b8e9e7-6b59-4758-7eb4-08d913b35337 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: AM5EUR03FT058.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4484 X-Spam-Status: No, score=-14.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 May 2021 12:58:45 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUmljaGFyZCBCaWVuZXIg PHJndWVudGhlckBzdXNlLmRlPg0KPiBTZW50OiBNb25kYXksIE1heSAxMCwgMjAyMSAxMjo0MCBQ TQ0KPiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4NCj4gQ2M6 IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnOyBuZCA8bmRAYXJtLmNvbT4NCj4gU3ViamVjdDogUkU6 IFtQQVRDSCAxLzRdbWlkZGxlLWVuZCBWZWN0OiBBZGQgc3VwcG9ydCBmb3IgZG90LXByb2R1Y3QN Cj4gd2hlcmUgdGhlIHNpZ24gZm9yIHRoZSBtdWx0aXBsaWNhbnQgY2hhbmdlcy4NCj4gDQo+IE9u IEZyaSwgNyBNYXkgMjAyMSwgVGFtYXIgQ2hyaXN0aW5hIHdyb3RlOg0KPiANCj4gPiBIaSBSaWNo aSwNCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IFJp Y2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4NCj4gPiA+IFNlbnQ6IEZyaWRheSwgTWF5 IDcsIDIwMjEgMTI6NDYgUE0NCj4gPiA+IFRvOiBUYW1hciBDaHJpc3RpbmEgPFRhbWFyLkNocmlz dGluYUBhcm0uY29tPg0KPiA+ID4gQ2M6IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnOyBuZCA8bmRA YXJtLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS80XW1pZGRsZS1lbmQgVmVjdDog QWRkIHN1cHBvcnQgZm9yIGRvdC1wcm9kdWN0DQo+ID4gPiB3aGVyZSB0aGUgc2lnbiBmb3IgdGhl IG11bHRpcGxpY2FudCBjaGFuZ2VzLg0KPiA+ID4NCj4gPiA+IE9uIFdlZCwgNSBNYXkgMjAyMSwg VGFtYXIgQ2hyaXN0aW5hIHdyb3RlOg0KPiA+ID4NCj4gPiA+ID4gSGkgQWxsLA0KPiA+ID4gPg0K PiA+ID4gPiBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYSBkb3QgcHJvZHVjdCB3aGVyZSB0 aGUgc2lnbiBvZiB0aGUNCj4gPiA+ID4gbXVsdGlwbGljYXRpb24gYXJndW1lbnRzIGRpZmZlci4g aS5lLiBvbmUgaXMgc2lnbmVkIGFuZCBvbmUgaXMNCj4gPiA+ID4gdW5zaWduZWQgYnV0IHRoZSBw cmVjaXNpb25zIGFyZSB0aGUgc2FtZS4NCj4gPiA+ID4NCj4gPiA+ID4gI2RlZmluZSBOIDQ4MA0K PiA+ID4gPiAjZGVmaW5lIFNJR05FRE5FU1NfMSB1bnNpZ25lZA0KPiA+ID4gPiAjZGVmaW5lIFNJ R05FRE5FU1NfMiBzaWduZWQNCj4gPiA+ID4gI2RlZmluZSBTSUdORURORVNTXzMgc2lnbmVkDQo+ ID4gPiA+ICNkZWZpbmUgU0lHTkVETkVTU180IHVuc2lnbmVkDQo+ID4gPiA+DQo+ID4gPiA+IFNJ R05FRE5FU1NfMSBpbnQgX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkgZiAoU0lHTkVETkVTU18xIGlu dCByZXMsDQo+ID4gPiA+IFNJR05FRE5FU1NfMyBjaGFyICpyZXN0cmljdCBhLA0KPiA+ID4gPiAg ICBTSUdORURORVNTXzQgY2hhciAqcmVzdHJpY3QgYikNCj4gPiA+ID4gew0KPiA+ID4gPiAgIGZv ciAoX19JTlRQVFJfVFlQRV9fIGkgPSAwOyBpIDwgTjsgKytpKQ0KPiA+ID4gPiAgICAgew0KPiA+ ID4gPiAgICAgICBpbnQgYXYgPSBhW2ldOw0KPiA+ID4gPiAgICAgICBpbnQgYnYgPSBiW2ldOw0K PiA+ID4gPiAgICAgICBTSUdORURORVNTXzIgc2hvcnQgbXVsdCA9IGF2ICogYnY7DQo+ID4gPiA+ ICAgICAgIHJlcyArPSBtdWx0Ow0KPiA+ID4gPiAgICAgfQ0KPiA+ID4gPiAgIHJldHVybiByZXM7 DQo+ID4gPiA+IH0NCj4gPiA+ID4NCj4gPiA+ID4gVGhlIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1l ZCBhcyBpZiB0aGUgb3BlcmFuZHMgd2VyZSBleHRlbmRlZCB0byBhDQo+ID4gPiA+IDMyLWJpdA0K PiA+ID4gdmFsdWUuDQo+ID4gPiA+IEFzIHN1Y2ggdGhpcyBvcGVyYXRpb24gaXNuJ3QgdmFsaWQg aWYgdGhlcmUgaXMgYW4gaW50ZXJtZWRpYXRlDQo+ID4gPiA+IGNvbnZlcnNpb24gdG8gYW4gdW5z aWduZWQgdmFsdWUuIGkuZS4gIGlmIFNJR05FRE5FU1NfMiBpcyB1bnNpZ25lZC4NCj4gPiA+ID4N Cj4gPiA+ID4gbW9yZSBvdmVyIGlmIHRoZSBzaWducyBvZiBTSUdORURORVNTXzMgYW5kIFNJR05F RE5FU1NfNCBhcmUNCj4gPiA+ID4gZmxpcHBlZCB0aGUgc2FtZSBvcHRhYiBpcyB1c2VkIGJ1dCB0 aGUgb3BlcmFuZHMgYXJlIGZsaXBwZWQgaW4gdGhlDQo+ID4gPiA+IG9wdGFiDQo+ID4gPiBleHBh bnNpb24uDQo+ID4gPiA+DQo+ID4gPiA+IFRvIHN1cHBvcnQgdGhpcyB0aGUgcGF0Y2ggZXh0ZW5k cyB0aGUgZG90LXByb2R1Y3QgZGV0ZWN0aW9uIHRvDQo+ID4gPiA+IG9wdGlvbmFsbHkgaWdub3Jl IG9wZXJhbmRzIHdpdGggZGlmZmVyZW50IHNpZ25zIGFuZCBzdG9yZXMgdGhpcw0KPiA+ID4gPiBp bmZvcm1hdGlvbiBpbiB0aGUgb3B0YWIgc3VidHlwZSB3aGljaCBpcyBub3cgbWFkZSBhIGJpdGZp ZWxkLg0KPiA+ID4gPg0KPiA+ID4gPiBUaGUgc3VidHlwZSBjYW4gbm93IGFkZGl0aW9uYWxseSBj b250cm9scyB3aGljaCBvcHRhYiBhbiBFWFBSIGNhbg0KPiA+ID4gPiBleHBhbmQNCj4gPiA+IHRv Lg0KPiA+ID4gPg0KPiA+ID4gPiBCb290c3RyYXBwZWQgUmVndGVzdGVkIG9uIGFhcmNoNjQtbm9u ZS1saW51eC1nbnUgYW5kIG5vIGlzc3Vlcy4NCj4gPiA+ID4NCj4gPiA+ID4gT2sgZm9yIG1hc3Rl cj8NCj4gPiA+ID4NCj4gPiA+ID4gVGhhbmtzLA0KPiA+ID4gPiBUYW1hcg0KPiA+ID4gPg0KPiA+ ID4gPiBnY2MvQ2hhbmdlTG9nOg0KPiA+ID4gPg0KPiA+ID4gPiAJKiBvcHRhYnMuZGVmICh1c2Rv dF9wcm9kX29wdGFiKTogTmV3Lg0KPiA+ID4gPiAJKiBkb2MvbWQudGV4aTogRG9jdW1lbnQgaXQu DQo+ID4gPiA+IAkqIG9wdGFicy10cmVlLmMgKG9wdGFiX2Zvcl90cmVlX2NvZGUpOiBTdXBwb3J0 IHVzZG90X3Byb2Rfb3B0YWIuDQo+ID4gPiA+IAkqIG9wdGFicy10cmVlLmggKGVudW0gb3B0YWJf c3VidHlwZSk6IExpa2V3aXNlLg0KPiA+ID4gPiAJKiBvcHRhYnMuYyAoZXhwYW5kX3dpZGVuX3Bh dHRlcm5fZXhwcik6IExpa2V3aXNlLg0KPiA+ID4gPiAJKiB0cmVlLWNmZy5jICh2ZXJpZnlfZ2lt cGxlX2Fzc2lnbl90ZXJuYXJ5KTogTGlrZXdpc2UuDQo+ID4gPiA+IAkqIHRyZWUtdmVjdC1sb29w LmMgKHZlY3RfZGV0ZXJtaW5lX2RvdF9raW5kKTogTmV3Lg0KPiA+ID4gPiAJKHZlY3Rvcml6YWJs ZV9yZWR1Y3Rpb24pOiBRdWVyeSBkb3QtcHJvZHVjdCBraW5kLg0KPiA+ID4gPiAJKiB0cmVlLXZl Y3QtcGF0dGVybnMuYyAodmVjdF9zdXBwb3J0YWJsZV9kaXJlY3Rfb3B0YWJfcCk6IFRha2UNCj4g PiA+IG9wdGlvbmFsDQo+ID4gPiA+IAlvcHRhYiBzdWJ0eXBlLg0KPiA+ID4gPiAJKHZlY3Rfam91 c3Rfd2lkZW5lZF90eXBlLCB2ZWN0X3dpZGVuZWRfb3BfdHJlZSk6IE9wdGlvbmFsbHkNCj4gPiA+ IGlnbm9yZQ0KPiA+ID4gPiAJbWlzbWF0Y2ggdHlwZXMuDQo+ID4gPiA+IAkodmVjdF9yZWNvZ19k b3RfcHJvZF9wYXR0ZXJuKTogU3VwcG9ydCB1c2RvdF9wcm9kX29wdGFiLg0KPiA+ID4gPg0KPiA+ ID4gPiAtLS0gaW5saW5lIGNvcHkgb2YgcGF0Y2ggLS0NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2dj Yy9kb2MvbWQudGV4aSBiL2djYy9kb2MvbWQudGV4aSBpbmRleA0KPiA+ID4gPg0KPiA+ID4NCj4g ZDE2NmEwZGViZWRmNGQ4ZWRmNTVjODQyYmNmNGZmNDY5MGIzZTljZS4uYmFmMjA0MTZlNjM3NDUw OTc4MjVmYzMwZmQNCj4gPiA+IGYyDQo+ID4gPiA+IGU2NmJjODBkN2QyMyAxMDA2NDQNCj4gPiA+ ID4gLS0tIGEvZ2NjL2RvYy9tZC50ZXhpDQo+ID4gPiA+ICsrKyBiL2djYy9kb2MvbWQudGV4aQ0K PiA+ID4gPiBAQCAtNTQ0MCwxMSArNTQ0MCwxMyBAQCBMaWtlIEBzYW1we2ZvbGRfbGVmdF9wbHVz X0B2YXJ7bX19LCBidXQNCj4gPiA+IHRha2VzDQo+ID4gPiA+IGFuIGFkZGl0aW9uYWwgbWFzayBv cGVyYW5kICBAaXRlbSBAc2FtcHtzZG90X3Byb2RAdmFye219fQ0KPiBAY2luZGV4DQo+ID4gPiA+ IEBjb2Rle3Vkb3RfcHJvZEB2YXJ7bX19IGluc3RydWN0aW9uIHBhdHRlcm4gIEBpdGVteA0KPiA+ ID4gPiBAc2FtcHt1ZG90X3Byb2RAdmFye219fQ0KPiA+ID4gPiArQGNpbmRleCBAY29kZXt1c2Rv dF9wcm9kQHZhcnttfX0gaW5zdHJ1Y3Rpb24gcGF0dGVybiBAaXRlbXgNCj4gPiA+ID4gK0BzYW1w e3VzZG90X3Byb2RAdmFye219fQ0KPiA+ID4gPiAgQ29tcHV0ZSB0aGUgc3VtIG9mIHRoZSBwcm9k dWN0cyBvZiB0d28gc2lnbmVkL3Vuc2lnbmVkIGVsZW1lbnRzLg0KPiA+ID4gPiAtT3BlcmFuZCAx IGFuZCBvcGVyYW5kIDIgYXJlIG9mIHRoZSBzYW1lIG1vZGUuIFRoZWlyIHByb2R1Y3QsDQo+ID4g PiA+IHdoaWNoIGlzIG9mIGEgLXdpZGVyIG1vZGUsIGlzIGNvbXB1dGVkIGFuZCBhZGRlZCB0byBv cGVyYW5kIDMuDQo+ID4gPiA+IE9wZXJhbmQgMyBpcyBvZiBhIG1vZGUgZXF1YWwgb3IgLXdpZGVy IHRoYW4gdGhlIG1vZGUgb2YgdGhlDQo+ID4gPiA+IHByb2R1Y3QuIFRoZSByZXN1bHQgaXMgcGxh Y2VkIGluIG9wZXJhbmQgMCwgd2hpY2ggLWlzIG9mIHRoZSBzYW1lIG1vZGUNCj4gYXMgb3BlcmFu ZCAzLg0KPiA+ID4gPiArT3BlcmFuZCAxIGFuZCBvcGVyYW5kIDIgYXJlIG9mIHRoZSBzYW1lIG1v ZGUgYnV0IG1heSBkaWZmZXIgaW4NCj4gc2lnbnMuDQo+ID4gPiA+ICtUaGVpciBwcm9kdWN0LCB3 aGljaCBpcyBvZiBhIHdpZGVyIG1vZGUsIGlzIGNvbXB1dGVkIGFuZCBhZGRlZCB0bw0KPiA+ID4g b3BlcmFuZCAzLg0KPiA+ID4gPiArT3BlcmFuZCAzIGlzIG9mIGEgbW9kZSBlcXVhbCBvciB3aWRl ciB0aGFuIHRoZSBtb2RlIG9mIHRoZSBwcm9kdWN0Lg0KPiA+ID4gPiArVGhlIHJlc3VsdCBpcyBw bGFjZWQgaW4gb3BlcmFuZCAwLCB3aGljaCBpcyBvZiB0aGUgc2FtZSBtb2RlIGFzDQo+IG9wZXJh bmQgMy4NCj4gPiA+DQo+ID4gPiBUaGlzIGRvZXNuJ3QgcmVhbGx5IHNheSB3aGF0IHRoZSAncycs ICd1JyBhbmQgJ3VzJyBzcGVjaWZ5LiAgU2luY2UNCj4gPiA+IHdlJ3JlIGRvaW5nIGEgd2lkZW4g bXVsdGlwbGljYXRpb24gYW5kIHRoZW4gYSBub24td2lkZW5pbmcgYWRkaXRpb24NCj4gPiA+IHdl IG9ubHkgbmVlZCB0byBrbm93IHRoZSBlZmZlY3RpdmUgc2lnbiBvZiB0aGUgbXVsdGlwbGljYXRp b24gc28gSSB0aGluaw0KPiB0aGUgZXhpc3RpbmcgJ3MnIGFuZCAndScNCj4gPiA+IGFyZSBlbm91 Z2ggdG8gY292ZXIgYWxsIGNhc2VzPw0KPiA+DQo+ID4gVGhlIGV4aXN0aW5nICdzJyBhbmQgJ3Un IGVuZm9yY2UgdGhhdCBib3RoIG9wZXJhbmRzIG9mIHRoZQ0KPiA+IG11bHRpcGxpY2F0aW9uIGFy ZSBvZiB0aGUgc2FtZSBzaWduLiAgU28gZm9yIGUuZy4gJ3UnIGJvdGggb3BlcmFuZCBtdXN0IGJl DQo+IHVuc2lnbmVkLg0KPiA+DQo+ID4gSW4gdGhlIGB1c2AgY2FzZSBvbmUgY2FuIGJlIHNpZ25l ZCBhbmQgb25lIHVuc2lnbmVkLiBPcGVyYXRpb25hbGx5DQo+ID4gdGhpcyBkb2VzIGEgc2lnbiBl eHRlbnNpb24gdG8gdGhlIHdpZGVyIHR5cGUgZm9yIHRoZSBzaWduZWQgdmFsdWUsIGFuZA0KPiA+ IHRoZSB1bnNpZ25lZCB2YWx1ZSBnZXRzIHplcm8gZXh0ZW5kZWQgZmlyc3QsIGFuZCB0aGVuIGNv bnZlcnRzIGl0IHRvDQo+ID4gdW5zaWduZWQgdG8gcGVyZm9ybSB0aGUgdW5zaWduZWQgbXVsdGlw bGljYXRpb24sIGNvbmZvcm1pbmcgdG8gdGhlIEMNCj4gcHJvbW90aW9uIHJ1bGVzLg0KPiA+DQo+ ID4gVEw7RFI7IFdpdGhvdXQgYSBuZXcgb3B0YWIgSSBjYW4ndCB0ZWxsIGR1cmluZyBleHBhbnNp b24gd2hpY2gNCj4gPiBzZW1hbnRpYyB0aGUgb3BlcmF0aW9uIGhhZCBhdCB0aGUgZ2ltcGxlL0Mg bGV2ZWwgYXMgbW9kZXMgZG9uJ3QgY2Fycnkgc2lnbnMuDQo+ID4NCj4gPiBMb25nIHZlcnNpb246 DQo+ID4NCj4gPiBUaGUgcHJvYmxlbSB3aXRoIHVzaW5nIHRoZSBleGlzdGluZyBwYXR0ZXJucywg YmVjYXVzZSBvZiB0aGVpcg0KPiA+IGVuZm9yY2VtZW50IG9mIGBhdmAgYW5kIGBidmAgYmVpbmcg dGhlIHNhbWUgc2lnbiBpcyB0aGF0IHdlIGNhbid0DQo+ID4gcmVtb3ZlIHRoZSBleHBsaWNpdCBz aWduIGV4dGVuc2lvbnMsIGJ1dCB0aGUgbXVsdGlwbGljYXRpb24gbXVzdCBiZSBkb25lIG9uDQo+ IHRoZSBzaWduL3plcm8gZXh0ZW5kZWQgY2hhciBpbnB1dCBpbiB0aGUgc2FtZSBzaWduLg0KPiA+ DQo+ID4gV2hpY2ggbWVhbnMgKHVubGVzcyBJIGFtIG1pc3Rha2VuKSB0byBnZXQgdGhlIGNvcnJl Y3QgcmVzdWx0LCB5b3UNCj4gPiBjYW4ndCB1c2UgbmVpdGhlciBgdWRvdGAgbm9yIGBzZG90YCBh cyBzZW1hbnRpY2FsbHkgdGhlc2Ugd291bGQgemVybw0KPiA+IG9yIHNpZ24gZXh0ZW5kIGJvdGgg b3BlcmFuZHMgZnJvbSBjaGFyIHRvIGludCB0byBwZXJmb3JtIHRoZQ0KPiA+IG11bHRpcGxpY2F0 aW9uIGluIHRoZSBzYW1lIHNpZ2guICBXaGVyZWFzIGluIHRoaXMgY2FzZSwgb25lIHBhcmFtZXRl ciBpcyB6ZXJvDQo+IGFuZCBvbmUgcGFyYW1ldGVyIGlzIHNpZ24gZXh0ZW5kZWQgYW5kIHRoZSBy ZXN1bHQgaXMgYWx3YXlzIGFuIHVuc2lnbmVkDQo+IG51bWJlci4NCj4gPg0KPiA+IFNvIGJhc2lj YWxseQ0KPiA+DQo+ID4gdWRvdDx1bnNpZ25lZCBjLCB1bnNpZ25lZCBhLCB1bnNpZ25lZCBiPiA9 PQ0KPiA+ICAgIGMgPSB6ZXJvLWV4dCAoYSkgKiB6ZXJvLWV4dCAoYikNCj4gPiBzZG90PHNpZ25l ZCBjLCBzaWduZWQgYSwgc2lnbmVkIGI+ID09DQo+ID4gICAgYyA9IHNpZ24tZXh0IChhKSAqIHNp Z24tZXh0IChiKQ0KPiA+IHVzZG90PHVuc2lnbmVkIGMsIHVuc2lnbmVkIGEsIHNpZ25lZCBiPiA9 PQ0KPiA+ICAgIGMgPSAoKHVuc2lnbmVkLWNvbnYpIHNpZ24tZXh0IChhKSkgKiB6ZXJvLWV4dCAo YikNCj4gPg0KPiA+IFNvIHNlbWFudGljYWxseSB0aGUgZXhpc3Rpbmcgb3B0YWJzIHdvbid0IGZp dCBoZXJlLiB1ZG90IHdvdWxkDQo+ID4gaW50ZXJuYWxseSBwcm9tb3RlIHRvIHVuc2lnbmVkIHR5 cGVzIGJlZm9yZSB0aGUgbXVsdGlwbGljYXRpb24gc28gdGhlDQo+ID4gcmVzdWx0IG9mIHRoZSBt dWx0aXBsaWNhdGlvbiB3b3VsZCBiZSB3cm9uZy4gIHNkb3Qgd291bGQgcHJvbW90ZSBib3RoIHRv DQo+IHNpZ25lZCBhbmQgZG8gc2lnbmVkIG11bHRpcGxpY2F0aW9uLCBzbyB0aGUgcmVzdWx0IGlz IGFsc28gd3JvbmcuDQo+ID4NCj4gPiBOb3cgaWYgSSByZWxheCB0aGUgY29uc3RyYWludCBvbiB0 aGUgc2lnbnMgb2YgdWRvdCBhbmQgc2RvdCB0aGVyZSBhcmUgdHdvDQo+IHByb2JsZW1zOg0KPiA+ IFJUTCBNb2RlcyBkb24ndCBjb250YWluIHNpZ25zLiAgU28gYSB0YXJnZXQgY2FuJ3QgdGVsbCBt ZSBob3cgdGhlIG9wZXJhbmRzDQo+IHdpbGwgYmUgcHJvbW90ZWQuDQo+ID4gU286DQo+ID4NCj4g PiAxKSBJIGNhbid0IHJlYWxseSBjaGVjayB3aGljaCBzZW1hbnRpY3MgdGhlIHRhcmdldCB3aWxs IGFkaGVyZSB0byBvbg0KPiBleHBhbnNpb24uDQo+ID4gMikgYXQgZXhwYW5kIHRpbWUgSSBoYXZl IG5vIHdheSB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlIHR3bw0KPiBpbnN0cnVjdGlvbnMg dmFyaWFudHMsIGdpdmVuIGp1c3QgbW9kZXMNCj4gPiAgICAgIEkgY2FuJ3QgdGVsbCB3aGV0aGVy IEkgZXhwYW5kIHRvIHRoZSBub3JtYWwgZG90LXByb2R1Y3Qgb3IgdGhlIG5ldw0KPiBpbnN0cnVj dGlvbi4NCj4gDQo+IEFoLCBPSy4gIEluZGVlZCB3aXRoIHN1Y2ggYSB3ZWlyZCBpbnN0cnVjdGlv biB0aGUgbmV3IHZhcmlhbnQgbWFrZXMgc2Vuc2UuDQo+IFN0aWxsIGNhbiB5b3UgcGxlYXNlIGFt ZW5kIHRoZSBvcHRhYiBkb2N1bWVudGF0aW9uIHRvIHNheSB3aGljaCBvcGVyYW5kIGlzDQo+IHVu c2lnbmVkIGFuZCB3aGljaCBpcyBzaWduZWQ/ICBKdXN0ICdtYXkgZGlmZmVyIGluIHNpZ25zJw0K PiBpcyBiYWQuDQoNClN1cmUsIHdpbGwgZXhwYW5kIG9uIGl0Lg0KDQo+IA0KPiBTaW5jZSB0aGUg bXVsdGlwbGljYXRpb24gaXMgY29tbXV0YXRpdmUgSSB3b25kZXIgd2h5IHlvdSBuZWVkIHRvIGhh bmRsZQ0KPiBib3RoIHNpZ25lZF90b191bnNpZ25lZCBhbmQgdW5zaWduZWRfdG9fc2lnbmVkIC0g d2Ugc2hvdWxkIGp1c3QgZW5mb3JjZQ0KPiBhIGNhbm9uaWNhbCBvcmRlciAobGlrZSB0aGUgb3B0 YWIgZG9lcykuIA0KDQpTdXJlLCBJIHRob3VnaHQgaXQgd291bGQgaGF2ZSBiZWVuIGJldHRlciB0 byBjaGFuZ2UgdGhlIG9yZGVyIGF0IGV4cGFuZCB0aW1lLA0KYnV0IGNhbiBkbyBzbyBhdCBkZXRl Y3Rpb24gdGltZS4NCg0KPiBJIGFsc28gdGhpbmsgaXQncyBhIHBhcnRpY3VsYXIgYmFkIGZpdCBm b3INCj4gdGhlIGJhZCBvcHRhYl9mb3JfdHJlZV9jb2RlIEFQSSAtIHdvdWxkIGFueSBvZiB0aGF0 IGltcHJvdmUgd2hlbiB1c2luZyBhDQo+IGRpcmVjdCBpbnRlcm5hbCBmdW5jdGlvbiBoZXJlPyAN Cg0KU29tZXdoYXQsIGJ1dCB0aGlzIGhhcyBjb25zaWRlcmFibGUga25vY2sgb24gZWZmZWN0cywg ZS5nLiBjdXJyZW50bHkgRE9UX1BST0QgaXMNCnRyZWF0ZWQgYXMgYSB3aWRlbmluZyBvcGVyYXRp b24gYW5kIHNvIGlzIGhhbmRsZWQgYnkgc3VwcG9ydGFibGVfd2lkZW5pbmdfb3BlcmF0aW9uDQp3 aGljaCBkb2VzIG5vdCBzdXBwb3J0IGNhbGxzLiBUaGVyZSdzIGEgc2lnbmlmaWNhbnQgbnVtYmVy IG9mIHBsYWNlcyB3aGljaCB3b3JrIG9uIHRoZQ0KdHJlZSBFWFBSIChpbmNsdWRpbmcgY29uc3Rh bnQgZm9sZGluZykgd2hpY2ggYWxsIG5lZWQgdG8gYmUgY2hhbmdlZC4NCg0KPiBJbiBwYXJ0aWN1 bGFyIGFsbCB0aGUgY2hhbmdlcyBhcm91bmQNCj4gb3B0YWJfc3VidHlwZSBsb29rIGxpa2UgdGhl eSBtYWtlIGEgYmFkIEFQSSB3b3JzZSAuLi4gYXQgbGVhc3QgYSBzaW5nbGUNCj4gb3B0YWJfdmVj dG9yX21peGVkX3NpZ24gc2hvdWxkIHN1ZmZpY2UgaGVyZSwgbm8gbmVlZCB0byBtYWtlIGl0IGEg ZmxhZ3MNCj4ga2luZC4NCg0KVGhlIHJlYXNvbiBJIGRpZCBzbyBpcyBiZWNhdXNlIGRlcGVuZGlu ZyBvbiB3aGVyZSB0aGUgcXVlcnkgaXMgZG9uZSBpdCBkb2VzIHVzZQ0KZGlmZmVyZW50IHN1YnR5 cGVzIGN1cnJlbnRseS4gIER1cmluZyBkZXRlY3Rpb24gaXQgdXNlcyBvcHRhYl9kZWZhdWx0LCBh bmQgZHVyaW5nDQp2ZWN0b3JpemF0aW9uIG9wdGFiX3ZlY3Rvci4gIEZvciB0aGlzIGluc3RydWN0 aW9uIHRoaXMgZGlmZmVyZW5jZSBkb2Vzbid0IHNlZW0gdG8gYmUNCnVzZWQsIGJ1dCBkaWQgbm90 IHdhbnQgdG8gbG9zZSB0aGlzIGluZm9ybWF0aW9uIGluIGNhc2Ugc29tZXRoaW5nIGRlcGVuZGVk IG9uIGl0Lg0KDQpCdXQgY2FuIG1ha2UgaXQganVzdCBvbmUuDQoNCj4gDQo+ICsgIC8qIElmIHdl IGhhdmUgYSBzaWduIGNoYW5naW5nIGRvdCBwcm9kdWN0IHdlIG5lZWQgdG8gY2hlY2sgdGhhdCB0 aGUNCj4gKyAgICAgcHJvbW90ZWQgdHlwZSBpZiB1bnNpZ25lZCBoYXMgYXQgbGVhc3QgdGhlIHNh bWUgcHJlY2lzaW9uIGFzIHRoZQ0KPiBmaW5hbA0KPiArICAgICB0eXBlIG9mIHRoZSBkb3QtcHJv ZHVjdC4gICovDQo+ICsgIGlmIChzdWJ0eXBlICE9IG9wdGFiX2RlZmF1bHQpDQo+ICsgICAgew0K PiArICAgICAgdHJlZSBtdWx0X3R5cGUgPSBUUkVFX1RZUEUgKHVucHJvbV9tdWx0Lm9wKTsNCj4g KyAgICAgIGlmIChUWVBFX1NJR04gKG11bHRfdHlwZSkgPT0gVU5TSUdORUQNCj4gKyAgICAgICAg ICYmIFRZUEVfUFJFQ0lTSU9OIChtdWx0X3R5cGUpIDwgVFlQRV9QUkVDSVNJT04gKHR5cGUpKQ0K PiArICAgICAgIHJldHVybiBOVUxMOw0KPiArICAgIH0NCj4gDQo+IEkgZG9uJ3QgdW5kZXJzdGFu ZCB0aGlzIC0gaG93IGRvIHdlIGV2ZXIgYXJyaXZlIGF0IGEgcmVzdWx0IHdpdGggbGVzcyBwcmVj aXNpb24/DQoNClRoZSB1c2VyIGNvdWxkIGhhdmUgbWFudWFsbHkgdHJ1bmNhdGVkIHRoZSByZXN1 bHRzLCBpLmUuIGluIHRoZSBkZXRlY3Rpb24gY29kZSBub3RpY2UgYG11bHRgDQoNCiAgICAgIGlu dCBhdiA9IGFbaV07DQogICAgICBpbnQgYnYgPSBiW2ldOw0KICAgICAgU0lHTkVETkVTU18yIHNo b3J0IG11bHQgPSBhdiAqIGJ2Ow0KICAgICAgcmVzICs9IG11bHQ7DQoNCndoaWNoIGlzIGEgc2hv cnQsIHNvIGl0J3MgbWFudWFsbHkgdHJ1bmNhdGluZyB0aGUgbXVsdGlwbGljYXRpb24gd2hpY2gg aXMgZG9uZSBhcyBpbnQgYnkgdGhlIGluc3RydWN0aW9uLg0KSWYgYG11bHRgIGlzIHVuc2lnbmVk IHRoZW4gaXQgd2lsbCB0cnVuY2F0ZSB0aGUgcmVzdWx0IGlmIHRoZSBzaWduZWQgaW5wdXQgdG8g dXNkb3Qgd2FzIG5lZ2F0aXZlLCB1bmxlc3MgdGhlDQpJbnRlcm1lZGlhdGUgY2FsY3VsYXRpb24g aXMgb2YgdGhlIHNhbWUgcHJlY2lzaW9uIGFzIHRoZSBpbnN0cnVjdGlvbi4gaS5lLiBpZiBtdWx0 IGlzIHVuc2lnbmVkIGludCB0aGVuIHRoZXJlJ3MNCm5vIHRydW5jYXRpb24gZ29pbmcgb24sIGl0 J3MgY2FzdGluZyBmcm9tIGludCB0byB1bnNpZ25lZCBpbnQgc28gaXQncyBzYWZlIHRvIHVzZSB0 aGVuIGFzIHRoZSBpbnN0cnVjdGlvbiBkb2VzIHRoZQ0Kc2FtZSB0aGluZyBpbnRlcm5hbGx5Lg0K DQo+IEFuZCB3aHkncyB0aGlzIG5vdCBhbiBpc3N1ZSBmb3Igc2lnbmVkIG11bHRpcGxpY2F0aW9u Pw0KDQpJdCBpcywgYnV0IGluIHRoYXQgY2FzZSBpdCdzIGhhbmRsZWQgYnkgdGhlIHR5cGUgam91 c3RpbmcsIHdoaWNoIGRvZXNuJ3QgYWxsb3cgdGhlIHR5cGUgbWlzbWF0Y2guIGkuZS4NCg0KI2Rl ZmluZSBTSUdORURORVNTXzEgdW5zaWduZWQNCiNkZWZpbmUgU0lHTkVETkVTU18yIHVuc2lnbmVk DQojZGVmaW5lIFNJR05FRE5FU1NfMyBzaWduZWQNCiNkZWZpbmUgU0lHTkVETkVTU180IHNpZ25l ZA0KDQpTSUdORURORVNTXzEgaW50IF9fYXR0cmlidXRlX18gKChub2lwYSkpDQpmIChTSUdORURO RVNTXzEgaW50IHJlcywgU0lHTkVETkVTU18zIGNoYXIgKnJlc3RyaWN0IGEsDQogICBTSUdORURO RVNTXzQgY2hhciAqcmVzdHJpY3QgYikNCnsNCiAgZm9yIChfX0lOVFBUUl9UWVBFX18gaSA9IDA7 IGkgPCBOOyArK2kpDQogICAgew0KICAgICAgaW50IGF2ID0gYVtpXTsNCiAgICAgIGludCBidiA9 IGJbaV07DQogICAgICBTSUdORURORVNTXzIgc2hvcnQgbXVsdCA9IGF2ICogYnY7DQogICAgICBy ZXMgKz0gbXVsdDsNCiAgICB9DQogIHJldHVybiByZXM7DQp9DQoNCklzIGFsc28gbm90IGRldGVj dGVkIGFzIGEgZG90IHByb2R1Y3QuICBCeSBhZGRpbmcgdGhlIGNhcnZlIG91dCB0byB0aGUgd2lk ZW4gbXVsdGlwbGljYXRpb24gZGV0ZWN0aW9uIGl0IG5vdw0KYWxsb3dzIHRoaXMgY2FzZSB0aHJv dWdoIHNvIEkgaGFuZGxlIGl0IGluIHRoZSBkZXRlY3Rpb24gY29kZS4gIFRoaW5raW5nIGFib3V0 IGl0IG5vdywgaXQgc2VlbXMgbW9yZSBsb2dpY2FsDQp0byBhZGQgdGhpcyBjYXNlIGhhbmRsaW5n IGluc2lkZSB0aGUgdHlwZSBqb3VzdGluZyBjb2RlIGFzIEkgZG9uJ3QgdGhpbmsgaXQncyBldmVy IHNvbWV0aGluZyB5b3UnZCB3YW50Lg0KDQo+IEFsc28uLi4NCj4gDQo+ICsgIC8qIElmIHdlIGhh dmUgYSBzaWduIGNoYW5naW5nIGRvdC1wcm9kdWN0IHRoZSBkb3QtcHJvZHVjdCBpdHNlbGYgZG9l cw0KPiBhbnkNCj4gKyAgICAgc2lnbiBjb252ZXJzaW9ucywgc28gY29uc3VtZSB0aGUgdHlwZSBh bmQgdXNlIHRoZSB1bnByb21vdGVkIHR5cGVzLg0KPiAqLw0KPiArICB0cmVlIG11bHRfYXJnMSwg bXVsdF9hcmcyOw0KPiArICBpZiAoc3VidHlwZSA9PSBvcHRhYl9kZWZhdWx0KQ0KPiArICAgIHsN Cj4gKyAgICAgIG11bHRfYXJnMSA9IG11bHRfb3BybmRbMF07DQo+ICsgICAgICBtdWx0X2FyZzIg PSBtdWx0X29wcm5kWzFdOw0KPiArICAgIH0NCj4gKyAgZWxzZQ0KPiArICAgIHsNCj4gKyAgICAg IG11bHRfYXJnMSA9IHVucHJvbTBbMF0ub3A7DQo+ICsgICAgICBtdWx0X2FyZzIgPSB1bnByb20w WzFdLm9wOw0KPiArICAgIH0NCj4gICAgcGF0dGVybl9zdG10ID0gZ2ltcGxlX2J1aWxkX2Fzc2ln biAodmFyLCBET1RfUFJPRF9FWFBSLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG11bHRfb3BybmRbMF0sIG11bHRfb3BybmRbMV0sDQo+IG9wcm5kMSk7DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdF9hcmcxLCBtdWx0X2FyZzIsIG9w cm5kMSk7DQo+IA0KPiBJIHRob3VnaHQgRE9UX1BST0QgYWx3YXlzIHBlcmZvcm1zIHRoZSBwcm9t b3Rpb24uICBNYXliZSBtdWx0X29wcm5kDQo+IGFuZCB1bnByb20wIGFyZSBqdXN0IG1pc25hbWVk IGhlcmU/DQoNClNvbWV3aGF0LCBpbiBhIG5vcm1hbCBkb3QtcHJvZHVjdCB0aGUgc2lnbiBvZiB0 aGUgbXVsdGlwbGljYXRpb24gYXJlIHRoZSBzYW1lIGhlcmUNCmFzIHRoZSAidW5wcm9tb3RlZCIg dHlwZXMuIFNvIGFmdGVyIHZlY3RfY29udmVydF9pbnB1dCB0aGVzZSB0d28gdHlwZXMgYXJlIHRo ZSBzYW1lLg0KDQpIb3dldmVyIGJlY2F1c2UgaGVyZSB0aGUgc2lnbiBjaGFuZ2VzIGFuZCB0byBt YWludGFpbiB0aGUgc2VtYW50aWNzIG9mIHRoZSBDIGNvZGUNCnRoZXJlJ3MgYW4gZXh0cmEgY29u dmVyc2lvbiBoZXJlIHRvIGdldCB0aGUgYXJndW1lbnRzIGluIHRoZSBzYW1lIHNpZ24uICBUaGF0 IG5lZWRzIHRvIGJlDQpzdHJpcHBlZCBiZWZvcmUgZ2l2ZW4gdG8gdGhlIGluc3RydWN0aW9uIHdo aWNoIGRvZXMgdGhlIGNvbnZlcnNpb24gaW50ZXJuYWxseS4NCg0KUmVnYXJkcywNClRhbWFyDQoN Cj4gDQo+IFJpY2hhcmQuDQo+IA0KPiA+IFJlZ2FyZHMsDQo+ID4gVGFtYXINCj4gPg0KPiA+ID4N Cj4gPiA+IFRoZSB0cmVlLmRlZiBkb2NzIHNheSB0aGUgc3VtIGlzIGFsc28gcG9zc2libHkgd2lk ZW5pbmcgYnV0IEkgZG9uJ3QNCj4gPiA+IHNlZSB0aGlzIGNvdmVyZWQgYnkgdGhlIG9wdGFiIHNv IHdlIHNob3VsZCBldmVudHVhbGx5IHJlbW92ZSB0aGlzDQo+ID4gPiBmZWF0dXJlIGZyb20gdGhl IHRyZWUgc2lkZS4gIEluIGZhY3QgdGhlIHRyZWUtY2ZnLmMgdmVyaWZpZXINCj4gPiA+IHJlcXVp cmVzIHRoZSBhZGRpdGlvbiB0byBiZSBub3Qgd2lkZW5pbmcgLSB0aHVzIG9ubHkgdHJlZS5kZWYg bmVlZHMNCj4gYWRqdXN0bWVudC4NCj4gPiA+DQo+ID4gPiA+ICBAY2luZGV4IEBjb2Rle3NzYWRA dmFye219fSBpbnN0cnVjdGlvbiBwYXR0ZXJuICBAaXRlbQ0KPiA+ID4gPiBAc2FtcHtzc2FkQHZh cnttfX0gZGlmZiAtLWdpdCBhL2djYy9vcHRhYnMtdHJlZS5oDQo+ID4gPiA+IGIvZ2NjL29wdGFi cy10cmVlLmggaW5kZXgNCj4gPiA+ID4NCj4gPiA+DQo+IGMzYWFhMWE0MTY5OTFlODU2ZDNlMjRk YTQ1OTY4YTkyZWJhZGE4MmMuLmViYzIzYWM4NmZlOTkwNTdmMzc1NzgxYzJmDQo+ID4gPiAxOQ0K PiA+ID4gPiA5MGUwNTQ4YmEwOGQgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2djYy9vcHRhYnMtdHJl ZS5oDQo+ID4gPiA+ICsrKyBiL2djYy9vcHRhYnMtdHJlZS5oDQo+ID4gPiA+IEBAIC0yNywxMSAr MjcsMjkgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdA0K PiBzZWUNCj4gPiA+ID4gICAgIHNoaWZ0IGFtb3VudCB2cy4gbWFjaGluZXMgdGhhdCB0YWtlIGEg dmVjdG9yIGZvciB0aGUgc2hpZnQgYW1vdW50Lg0KPiA+ID4gPiAqLyAgZW51bSBvcHRhYl9zdWJ0 eXBlICB7DQo+ID4gPiA+IC0gIG9wdGFiX2RlZmF1bHQsDQo+ID4gPiA+IC0gIG9wdGFiX3NjYWxh ciwNCj4gPiA+ID4gLSAgb3B0YWJfdmVjdG9yDQo+ID4gPiA+ICsgIG9wdGFiX2RlZmF1bHQgPSAx IDw8IDAsDQo+ID4gPiA+ICsgIG9wdGFiX3NjYWxhciA9IDEgPDwgMSwNCj4gPiA+ID4gKyAgb3B0 YWJfdmVjdG9yID0gMSA8PCAyLA0KPiA+ID4gPiArICBvcHRhYl9zaWduZWRfdG9fdW5zaWduZWQg PSAxIDw8IDMsICBvcHRhYl91bnNpZ25lZF90b19zaWduZWQgPQ0KPiA+ID4gPiArIDEgPDwgNA0K PiA+ID4gPiAgfTsNCj4gPiA+ID4NCj4gPiA+ID4gKy8qIE92ZXJyaWRlIHRoZSBPckVxdWFsLW9w ZXJhdG9yIHNvIHdlIGNhbiB1c2Ugb3B0YWJfc3VidHlwZSBhcyBhDQo+ID4gPiA+ICtiaXQgZmxh Zy4gICovIGlubGluZSBlbnVtIG9wdGFiX3N1YnR5cGUmIG9wZXJhdG9yIHw9IChlbnVtDQo+ID4g PiBvcHRhYl9zdWJ0eXBlJg0KPiA+ID4gPiArYSwgZW51bSBvcHRhYl9zdWJ0eXBlIGIpIHsNCj4g PiA+ID4gKyAgICByZXR1cm4gYSA9IHN0YXRpY19jYXN0PG9wdGFiX3N1YnR5cGU+KHN0YXRpY19j YXN0PGludD4oYSkNCj4gPiA+ID4gKwkJCQkJICB8IHN0YXRpY19jYXN0PGludD4oYikpOw0KPiA+ ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKiBPdmVycmlkZSB0aGUgT3Itb3BlcmF0b3Ig c28gd2UgY2FuIHVzZSBvcHRhYl9zdWJ0eXBlIGFzIGEgYml0DQo+ID4gPiA+ICtmbGFnLiAgKi8g aW5saW5lIGVudW0gb3B0YWJfc3VidHlwZSBvcGVyYXRvciB8IChlbnVtDQo+ID4gPiA+ICtvcHRh Yl9zdWJ0eXBlIGEsIGVudW0gb3B0YWJfc3VidHlwZSBiKSB7DQo+ID4gPiA+ICsgICAgcmV0dXJu IHN0YXRpY19jYXN0PG9wdGFiX3N1YnR5cGU+KHN0YXRpY19jYXN0PGludD4oYSkNCj4gPiA+ID4g KwkJCQkgICAgICB8IHN0YXRpY19jYXN0PGludD4oYikpOyB9DQo+ID4gPiA+ICsNCj4gPiA+ID4g IC8qIFJldHVybiB0aGUgb3B0YWIgdXNlZCBmb3IgY29tcHV0aW5nIHRoZSBnaXZlbiBvcGVyYXRp b24gb24gdGhlDQo+ID4gPiA+IHR5cGUNCj4gPiA+IGdpdmVuIGJ5DQo+ID4gPiA+ICAgICB0aGUg c2Vjb25kIGFyZ3VtZW50LiAgVGhlIHRoaXJkIGFyZ3VtZW50IGRpc3Rpbmd1aXNoZXMgYmV0d2Vl bg0KPiA+ID4gPiB0aGUNCj4gPiA+IHR5cGVzIG9mDQo+ID4gPiA+ICAgICB2ZWN0b3Igc2hpZnRz IGFuZCByb3RhdGVzLiAgKi8gZGlmZiAtLWdpdCBhL2djYy9vcHRhYnMtdHJlZS5jDQo+ID4gPiA+ IGIvZ2NjL29wdGFicy10cmVlLmMgaW5kZXgNCj4gPiA+ID4NCj4gPiA+DQo+IDk1ZmZlMzk3YzIz ZTgwYzEwNWFmZWE1MmU5ZDQ3MjE2YmY1MmY1NWEuLjJmNjAwMDQ1NDVkZWZjNTMxODJlMDA0ZWVh DQo+ID4gPiAxZQ0KPiA+ID4gPiA1YzIyYjc0NTMwNzIgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2dj Yy9vcHRhYnMtdHJlZS5jDQo+ID4gPiA+ICsrKyBiL2djYy9vcHRhYnMtdHJlZS5jDQo+ID4gPiA+ IEBAIC0xMjcsNyArMTI3LDE3IEBAIG9wdGFiX2Zvcl90cmVlX2NvZGUgKGVudW0gdHJlZV9jb2Rl IGNvZGUsDQo+ID4gPiBjb25zdF90cmVlIHR5cGUsDQo+ID4gPiA+ICAgICAgICByZXR1cm4gVFlQ RV9VTlNJR05FRCAodHlwZSkgPyB1c3VtX3dpZGVuX29wdGFiIDoNCj4gPiA+ID4gc3N1bV93aWRl bl9vcHRhYjsNCj4gPiA+ID4NCj4gPiA+ID4gICAgICBjYXNlIERPVF9QUk9EX0VYUFI6DQo+ID4g PiA+IC0gICAgICByZXR1cm4gVFlQRV9VTlNJR05FRCAodHlwZSkgPyB1ZG90X3Byb2Rfb3B0YWIg Og0KPiBzZG90X3Byb2Rfb3B0YWI7DQo+ID4gPiA+ICsgICAgICB7DQo+ID4gPiA+ICsJZ2NjX2Fz c2VydCAoc3VidHlwZSAmIG9wdGFiX2RlZmF1bHQNCj4gPiA+ID4gKwkJICAgIHx8IHN1YnR5cGUg JiBvcHRhYl92ZWN0b3INCj4gPiA+ID4gKwkJICAgIHx8IHN1YnR5cGUgJiBvcHRhYl9zaWduZWRf dG9fdW5zaWduZWQNCj4gPiA+ID4gKwkJICAgIHx8IHN1YnR5cGUgJiBvcHRhYl91bnNpZ25lZF90 b19zaWduZWQpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJaWYgKHN1YnR5cGUgJiAob3B0YWJfdW5z aWduZWRfdG9fc2lnbmVkIHwNCj4gPiA+IG9wdGFiX3NpZ25lZF90b191bnNpZ25lZCkpDQo+ID4g PiA+ICsJICByZXR1cm4gdXNkb3RfcHJvZF9vcHRhYjsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJl dHVybiAoVFlQRV9VTlNJR05FRCAodHlwZSkgPyB1ZG90X3Byb2Rfb3B0YWIgOg0KPiA+ID4gc2Rv dF9wcm9kX29wdGFiKTsNCj4gPiA+ID4gKyAgICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gICAgICBj YXNlIFNBRF9FWFBSOg0KPiA+ID4gPiAgICAgICAgcmV0dXJuIFRZUEVfVU5TSUdORUQgKHR5cGUp ID8gdXNhZF9vcHRhYiA6IHNzYWRfb3B0YWI7IGRpZmYNCj4gPiA+ID4gLS1naXQgYS9nY2Mvb3B0 YWJzLmMgYi9nY2Mvb3B0YWJzLmMgaW5kZXgNCj4gPiA+ID4NCj4gPiA+DQo+IGY0NjE0YTM5NDU4 Nzc4NzI5M2RjOGI2ODBhMzg5MDFmNzkwNmY2MWMuLjJlMThiNzZkZTE0MTJlYWI3MTk3MTc1M2Fj DQo+ID4gPiA2Nw0KPiA+ID4gPiA4NTk3YzBkMDAwOTggMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2dj Yy9vcHRhYnMuYw0KPiA+ID4gPiArKysgYi9nY2Mvb3B0YWJzLmMNCj4gPiA+ID4gQEAgLTI2Miw2 ICsyNjIsMTEgQEAgZXhwYW5kX3dpZGVuX3BhdHRlcm5fZXhwciAoc2Vwb3BzIG9wcywgcnR4DQo+ ID4gPiA+IG9wMCwNCj4gPiA+IHJ0eCBvcDEsIHJ0eCB3aWRlX29wLA0KPiA+ID4gPiAgICBib29s IHNib29sID0gZmFsc2U7DQo+ID4gPiA+DQo+ID4gPiA+ICAgIG9wcm5kMCA9IG9wcy0+b3AwOw0K PiA+ID4gPiArICBpZiAobm9wcyA+PSAyKQ0KPiA+ID4gPiArICAgIG9wcm5kMSA9IG9wcy0+b3Ax Ow0KPiA+ID4gPiArICBpZiAobm9wcyA+PSAzKQ0KPiA+ID4gPiArICAgIG9wcm5kMiA9IG9wcy0+ b3AyOw0KPiA+ID4gPiArDQo+ID4gPiA+ICAgIHRtb2RlMCA9IFRZUEVfTU9ERSAoVFJFRV9UWVBF IChvcHJuZDApKTsNCj4gPiA+ID4gICAgaWYgKG9wcy0+Y29kZSA9PSBWRUNfVU5QQUNLX0ZJWF9U UlVOQ19ISV9FWFBSDQo+ID4gPiA+ICAgICAgICB8fCBvcHMtPmNvZGUgPT0gVkVDX1VOUEFDS19G SVhfVFJVTkNfTE9fRVhQUikgQEAgLTI4NSw2DQo+ID4gPiArMjkwLDI3DQo+ID4gPiA+IEBAIGV4 cGFuZF93aWRlbl9wYXR0ZXJuX2V4cHIgKHNlcG9wcyBvcHMsIHJ0eCBvcDAsIHJ0eCBvcDEsIHJ0 eA0KPiA+ID4gd2lkZV9vcCwNCj4gPiA+ID4gIAkgICA/IHZlY191bnBhY2tzX3Nib29sX2hpX29w dGFiIDogdmVjX3VucGFja3Nfc2Jvb2xfbG9fb3B0YWIpOw0KPiA+ID4gPiAgICAgICAgc2Jvb2wg PSB0cnVlOw0KPiA+ID4gPiAgICAgIH0NCj4gPiA+ID4gKyAgZWxzZSBpZiAob3BzLT5jb2RlID09 IERPVF9QUk9EX0VYUFIpDQo+ID4gPiA+ICsgICAgew0KPiA+ID4gPiArICAgICAgZW51bSBvcHRh Yl9zdWJ0eXBlIHN1YnR5cGUgPSBvcHRhYl9kZWZhdWx0Ow0KPiA+ID4gPiArICAgICAgc2lnbm9w IHNpZ24xID0gVFlQRV9TSUdOIChUUkVFX1RZUEUgKG9wcm5kMCkpOw0KPiA+ID4gPiArICAgICAg c2lnbm9wIHNpZ24yID0gVFlQRV9TSUdOIChUUkVFX1RZUEUgKG9wcm5kMSkpOw0KPiA+ID4gPiAr ICAgICAgaWYgKHNpZ24xID09IHNpZ24yKQ0KPiA+ID4gPiArCTsNCj4gPiA+ID4gKyAgICAgIGVs c2UgaWYgKHNpZ24xID09IFNJR05FRCAmJiBzaWduMiA9PSBVTlNJR05FRCkNCj4gPiA+ID4gKwl7 DQo+ID4gPiA+ICsJICBzdWJ0eXBlIHw9IG9wdGFiX3NpZ25lZF90b191bnNpZ25lZDsNCj4gPiA+ ID4gKwkgIC8qIFNhbWUgYXMgb3B0YWJfdW5zaWduZWRfdG9fc2lnbmVkIGJ1dCBmbGlwIHRoZSBv cGVyYW5kcy4gICovDQo+ID4gPiA+ICsJICBzdGQ6OnN3YXAgKG9wMCwgb3AxKTsNCj4gPiA+ID4g Kwl9DQo+ID4gPiA+ICsgICAgICBlbHNlIGlmIChzaWduMSA9PSBVTlNJR05FRCAmJiBzaWduMiA9 PSBTSUdORUQpDQo+ID4gPiA+ICsJc3VidHlwZSB8PSBvcHRhYl91bnNpZ25lZF90b19zaWduZWQ7 DQo+ID4gPiA+ICsgICAgICBlbHNlDQo+ID4gPiA+ICsJZ2NjX3VucmVhY2hhYmxlICgpOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgICAgICB3aWRlbl9wYXR0ZXJuX29wdGFiDQo+ID4gPiA+ICsJPSBv cHRhYl9mb3JfdHJlZV9jb2RlIChvcHMtPmNvZGUsIFRSRUVfVFlQRSAob3BybmQwKSwgc3VidHlw ZSk7DQo+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiAgICBlbHNlDQo+ID4gPiA+ICAgICAgd2lkZW5f cGF0dGVybl9vcHRhYg0KPiA+ID4gPiAgICAgICAgPSBvcHRhYl9mb3JfdHJlZV9jb2RlIChvcHMt PmNvZGUsIFRSRUVfVFlQRSAob3BybmQwKSwNCj4gPiA+ID4gb3B0YWJfZGVmYXVsdCk7IEBAIC0y OTgsMTAgKzMyNCw3IEBAIGV4cGFuZF93aWRlbl9wYXR0ZXJuX2V4cHINCj4gPiA+IChzZXBvcHMg b3BzLCBydHggb3AwLCBydHggb3AxLCBydHggd2lkZV9vcCwNCj4gPiA+ID4gICAgZ2NjX2Fzc2Vy dCAoaWNvZGUgIT0gQ09ERV9GT1Jfbm90aGluZyk7DQo+ID4gPiA+DQo+ID4gPiA+ICAgIGlmIChu b3BzID49IDIpDQo+ID4gPiA+IC0gICAgew0KPiA+ID4gPiAtICAgICAgb3BybmQxID0gb3BzLT5v cDE7DQo+ID4gPiA+IC0gICAgICB0bW9kZTEgPSBUWVBFX01PREUgKFRSRUVfVFlQRSAob3BybmQx KSk7DQo+ID4gPiA+IC0gICAgfQ0KPiA+ID4gPiArICAgIHRtb2RlMSA9IFRZUEVfTU9ERSAoVFJF RV9UWVBFIChvcHJuZDEpKTsNCj4gPiA+ID4gICAgZWxzZSBpZiAoc2Jvb2wpDQo+ID4gPiA+ICAg ICAgew0KPiA+ID4gPiAgICAgICAgbm9wcyA9IDI7DQo+ID4gPiA+IEBAIC0zMTYsNyArMzM5LDYg QEAgZXhwYW5kX3dpZGVuX3BhdHRlcm5fZXhwciAoc2Vwb3BzIG9wcywgcnR4DQo+ID4gPiA+IG9w MCwNCj4gPiA+IHJ0eCBvcDEsIHJ0eCB3aWRlX29wLA0KPiA+ID4gPiAgICAgIHsNCj4gPiA+ID4g ICAgICAgIGdjY19hc3NlcnQgKHRtb2RlMSA9PSB0bW9kZTApOw0KPiA+ID4gPiAgICAgICAgZ2Nj X2Fzc2VydCAob3AxKTsNCj4gPiA+ID4gLSAgICAgIG9wcm5kMiA9IG9wcy0+b3AyOw0KPiA+ID4g PiAgICAgICAgd21vZGUgPSBUWVBFX01PREUgKFRSRUVfVFlQRSAob3BybmQyKSk7DQo+ID4gPiA+ ICAgICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZ2NjL29wdGFicy5kZWYgYi9n Y2Mvb3B0YWJzLmRlZiBpbmRleA0KPiA+ID4gPg0KPiA+ID4NCj4gYjE5MmE5ZDA3MGI4YWE3MmU1 Njc2YjJlYWEwMjBiNWJkZDdmZmNjOC4uZjQ3MGMyMTY4Mzc4Y2VjODQwZWRmN2ZiZA0KPiA+ID4g YjdjDQo+ID4gPiA+IDE4NjE1YmFhZTkyOCAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZ2NjL29wdGFi cy5kZWYNCj4gPiA+ID4gKysrIGIvZ2NjL29wdGFicy5kZWYNCj4gPiA+ID4gQEAgLTM1Miw2ICsz NTIsNyBAQCBPUFRBQl9EICh1YXZnX2NlaWxfb3B0YWIsICJ1YXZnJGEzX2NlaWwiKQ0KPiA+ID4g T1BUQUJfRA0KPiA+ID4gPiAoc2RvdF9wcm9kX29wdGFiLCAic2RvdF9wcm9kJEkkYSIpICBPUFRB Ql9EIChzc3VtX3dpZGVuX29wdGFiLA0KPiA+ID4gPiAid2lkZW5fc3N1bSRJJGEzIikgIE9QVEFC X0QgKHVkb3RfcHJvZF9vcHRhYiwgInVkb3RfcHJvZCRJJGEiKQ0KPiA+ID4gPiArT1BUQUJfRCAo dXNkb3RfcHJvZF9vcHRhYiwgInVzZG90X3Byb2QkSSRhIikNCj4gPiA+ID4gIE9QVEFCX0QgKHVz dW1fd2lkZW5fb3B0YWIsICJ3aWRlbl91c3VtJEkkYTMiKSAgT1BUQUJfRA0KPiA+ID4gKHVzYWRf b3B0YWIsDQo+ID4gPiA+ICJ1c2FkJEkkYSIpICBPUFRBQl9EIChzc2FkX29wdGFiLCAic3NhZCRJ JGEiKSBkaWZmIC0tZ2l0DQo+ID4gPiA+IGEvZ2NjL3RyZWUtY2ZnLmMgYi9nY2MvdHJlZS1jZmcu YyBpbmRleA0KPiA+ID4gPg0KPiA+ID4NCj4gN2UzYWFlNWY5YzI4YTQ5ZmVlZGM3Y2M2NmU4YWMw ZDQ3NmI5ZjI4YS4uNThiNTViYjY0OGFkOTdkNTE0ZjFmYTE4YmINCj4gPiA+IDAwDQo+ID4gPiA+ IDgwOGZkMjY3OGI0MiAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZ2NjL3RyZWUtY2ZnLmMNCj4gPiA+ ID4gKysrIGIvZ2NjL3RyZWUtY2ZnLmMNCj4gPiA+ID4gQEAgLTQ0MjEsNyArNDQyMSw4IEBAIHZl cmlmeV9naW1wbGVfYXNzaWduX3Rlcm5hcnkgKGdhc3NpZ24gKnN0bXQpDQo+ID4gPiA+ICAJCSAg JiYgIVNDQUxBUl9GTE9BVF9UWVBFX1AgKHJoczFfdHlwZSkpDQo+ID4gPiA+ICAJCSB8fCAoIUlO VEVHUkFMX1RZUEVfUCAobGhzX3R5cGUpDQo+ID4gPiA+ICAJCSAgICAgJiYgIVNDQUxBUl9GTE9B VF9UWVBFX1AgKGxoc190eXBlKSkpKQ0KPiA+ID4gPiAtCSAgICB8fCAhdHlwZXNfY29tcGF0aWJs ZV9wIChyaHMxX3R5cGUsIHJoczJfdHlwZSkNCj4gPiA+ID4gKwkgICAgfHwgKCF0eXBlc19jb21w YXRpYmxlX3AgKHJoczFfdHlwZSwgcmhzMl90eXBlKQ0KPiA+ID4gPiArCQkmJiBUWVBFX1NJR04g KHJoczFfdHlwZSkgPT0gVFlQRV9TSUdOIChyaHMyX3R5cGUpKQ0KPiA+ID4NCj4gPiA+IFRoYXQn cyBub3QgcmVzdHJpY3RpdmUgZW5vdWdoLiAgSSBzdWdnZXN0IHlvdSB1c2UNCj4gPiA+DQo+ID4g PiAgICAgICAgICAgICAmJiBlbGVtZW50X3ByZWNpc2lvbiAocmhzMV90eXBlKSAhPSBlbGVtZW50 X3ByZWNpc2lvbg0KPiA+ID4gKHJoczJfdHlwZSkNCj4gPiA+DQo+ID4gPiBpbnN0ZWFkLg0KPiA+ ID4NCj4gPiA+IEFzIHNhaWQsIEknbSBub3Qgc3VyZSBhbGwgdGhlIGNoYW5nZXMgaW4gdGhpcyBw YXRjaCBhcmUgcmVxdWlyZWQuDQo+ID4gPg0KPiA+ID4gUGxlYXNlIGVsYWJvcmF0ZS4NCj4gPiA+ DQo+ID4gPiBUaGFua3MsDQo+ID4gPiBSaWNoYXJkLg0KPiA+ID4NCj4gPiA+ID4gIAkgICAgfHwg IXVzZWxlc3NfdHlwZV9jb252ZXJzaW9uX3AgKGxoc190eXBlLCByaHMzX3R5cGUpDQo+ID4gPiA+ ICAJICAgIHx8IG1heWJlX2x0IChHRVRfTU9ERV9TSVpFIChlbGVtZW50X21vZGUgKHJoczNfdHlw ZSkpLA0KPiA+ID4gPiAgCQkJIDIgKiBHRVRfTU9ERV9TSVpFIChlbGVtZW50X21vZGUgKHJoczFf dHlwZSkpKSkNCj4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4gYS9nY2MvdHJlZS12ZWN0LWxvb3Au YyBiL2djYy90cmVlLXZlY3QtbG9vcC5jIGluZGV4DQo+ID4gPiA+DQo+ID4gPg0KPiA5M2ZhMjky OGUwMDFjMTU0YmQ0YTlhNzNhYzFkYmJiZjczYzQ1NmRmLi5jYjhmNWZiYjZhYmNhMTgxYzQxNzEx OTRkMQ0KPiA+ID4gOWYNCj4gPiA+ID4gZWMyOWVjNmU0MTc2IDEwMDY0NA0KPiA+ID4gPiAtLS0g YS9nY2MvdHJlZS12ZWN0LWxvb3AuYw0KPiA+ID4gPiArKysgYi9nY2MvdHJlZS12ZWN0LWxvb3Au Yw0KPiA+ID4gPiBAQCAtNjQwMSw2ICs2NDAxLDMzIEBAIGJ1aWxkX3ZlY3RfY29uZF9leHByIChl bnVtIHRyZWVfY29kZQ0KPiBjb2RlLA0KPiA+ID4gdHJlZSB2b3BbM10sIHRyZWUgbWFzaywNCj4g PiA+ID4gICAgICB9DQo+ID4gPiA+ICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsvKiBEZXRlcm1pbmUg dGhlIG9wdGFiX3N1YnR5cGUgdG8gdXNlIGZvciB0aGUgZ2l2ZW4gQ09ERSBhbmQgU1RNVC4NCj4g PiA+IEZvcg0KPiA+ID4gPiArICAgbW9zdCBDT0RFIHRoaXMgd2lsbCBiZSBvcHRhYl92ZWN0b3Is IGhvd2V2ZXIgZm9yIGNlcnRhaW4NCj4gPiA+ID4gKyBvcGVyYXRpb25zDQo+ID4gPiBzdWNoIGFz DQo+ID4gPiA+ICsgICBET1RfUFJPRF9FWFBSIHdoZXJlIHRoZSBvcGVyYXRpb24gY2FuIGRpZmZl cmVudCBzaWducyBmb3IgdGhlDQo+ID4gPiBvcGVyYW5kcyB3ZQ0KPiA+ID4gPiArICAgbmVlZCB0 byBiZSBhYmxlIHRvIHBpY2sgdGhlIHJpZ2h0IG9wdGFicy4gICovDQo+ID4gPiA+ICsNCj4gPiA+ ID4gK3N0YXRpYyBlbnVtIG9wdGFiX3N1YnR5cGUNCj4gPiA+ID4gK3ZlY3RfZGV0ZXJtaW5lX2Rv dF9raW5kICh0cmVlX2NvZGUgY29kZSwgc3RtdF92ZWNfaW5mbw0KPiA+ID4gPiArc3RtdF92aW5m bykgew0KPiA+ID4gPiArICBlbnVtIG9wdGFiX3N1YnR5cGUgc3VidHlwZSA9IG9wdGFiX3ZlY3Rv cjsNCj4gPiA+ID4gKyAgc3dpdGNoIChjb2RlKQ0KPiA+ID4gPiArICAgIHsNCj4gPiA+ID4gKyAg ICAgIGNhc2UgRE9UX1BST0RfRVhQUjoNCj4gPiA+ID4gKwl7DQo+ID4gPiA+ICsJICBnYXNzaWdu ICpzdG10ID0gYXNfYSA8Z2Fzc2lnbiAqPiAoU1RNVF9WSU5GT19TVE1UIChzdG10X3ZpbmZvKSk7 DQo+ID4gPiA+ICsJICBzaWdub3AgcmhzMV9zaWduID0gVFlQRV9TSUdOIChUUkVFX1RZUEUgKGdp bXBsZV9hc3NpZ25fcmhzMQ0KPiA+ID4gKHN0bXQpKSk7DQo+ID4gPiA+ICsJICBzaWdub3Agcmhz Ml9zaWduID0gVFlQRV9TSUdOIChUUkVFX1RZUEUgKGdpbXBsZV9hc3NpZ25fcmhzMg0KPiA+ID4g KHN0bXQpKSk7DQo+ID4gPiA+ICsJICBpZiAocmhzMV9zaWduICE9IHJoczJfc2lnbikNCj4gPiA+ ID4gKwkgICAgc3VidHlwZSB8PSBvcHRhYl91bnNpZ25lZF90b19zaWduZWQ7DQo+ID4gPiA+ICsJ ICBicmVhazsNCj4gPiA+ID4gKwl9DQo+ID4gPiA+ICsgICAgICBkZWZhdWx0Og0KPiA+ID4gPiAr CWJyZWFrOw0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICByZXR1cm4gc3Vi dHlwZTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiAgLyogRnVuY3Rpb24gdmVjdG9y aXphYmxlX3JlZHVjdGlvbi4NCj4gPiA+ID4NCj4gPiA+ID4gICAgIENoZWNrIGlmIFNUTVRfSU5G TyBwZXJmb3JtcyBhIHJlZHVjdGlvbiBvcGVyYXRpb24gdGhhdCBjYW4gYmUNCj4gPiA+IHZlY3Rv cml6ZWQuDQo+ID4gPiA+IEBAIC03MTg5LDcgKzcyMTYsOCBAQCB2ZWN0b3JpemFibGVfcmVkdWN0 aW9uIChsb29wX3ZlY19pbmZvDQo+ID4gPiBsb29wX3ZpbmZvLA0KPiA+ID4gPiAgICAgICAgYm9v bCBvayA9IHRydWU7DQo+ID4gPiA+DQo+ID4gPiA+ICAgICAgICAvKiA0LjEuIGNoZWNrIHN1cHBv cnQgZm9yIHRoZSBvcGVyYXRpb24gaW4gdGhlIGxvb3AgICovDQo+ID4gPiA+IC0gICAgICBvcHRh YiBvcHRhYiA9IG9wdGFiX2Zvcl90cmVlX2NvZGUgKGNvZGUsIHZlY3R5cGVfaW4sDQo+IG9wdGFi X3ZlY3Rvcik7DQo+ID4gPiA+ICsgICAgICBlbnVtIG9wdGFiX3N1YnR5cGUgc3VidHlwZSA9IHZl Y3RfZGV0ZXJtaW5lX2RvdF9raW5kIChjb2RlLA0KPiA+ID4gc3RtdF9pbmZvKTsNCj4gPiA+ID4g KyAgICAgIG9wdGFiIG9wdGFiID0gb3B0YWJfZm9yX3RyZWVfY29kZSAoY29kZSwgdmVjdHlwZV9p biwNCj4gPiA+ID4gKyBzdWJ0eXBlKTsNCj4gPiA+ID4gICAgICAgIGlmICghb3B0YWIpDQo+ID4g PiA+ICAJew0KPiA+ID4gPiAgCSAgaWYgKGR1bXBfZW5hYmxlZF9wICgpKQ0KPiA+ID4gPiBkaWZm IC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1wYXR0ZXJucy5jIGIvZ2NjL3RyZWUtdmVjdC1wYXR0ZXJu cy5jDQo+ID4gPiA+IGluZGV4DQo+ID4gPiA+DQo+ID4gPg0KPiA0NDFkNmNkMjhjNGVhZGVkN2Fi ZDc1NjE2NDg5MGRiY2ZmZDJmM2I4Li45NDNjMDAxZmIxMzc3N2I0ZDE1MTM4NDFmDQo+ID4gPiBh ODQNCj4gPiA+ID4gOTQyMzE2ODQ2ZDVlIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9nY2MvdHJlZS12 ZWN0LXBhdHRlcm5zLmMNCj4gPiA+ID4gKysrIGIvZ2NjL3RyZWUtdmVjdC1wYXR0ZXJucy5jDQo+ ID4gPiA+IEBAIC0yMDEsNyArMjAxLDggQEAgdmVjdF9nZXRfZXh0ZXJuYWxfZGVmX2VkZ2UgKHZl Y19pbmZvICp2aW5mbywNCj4gPiA+ID4gdHJlZQ0KPiA+ID4gPiB2YXIpICBzdGF0aWMgYm9vbCAg dmVjdF9zdXBwb3J0YWJsZV9kaXJlY3Rfb3B0YWJfcCAodmVjX2luZm8NCj4gPiA+ID4gKnZpbmZv LCB0cmVlIG90eXBlLCB0cmVlX2NvZGUgY29kZSwNCj4gPiA+ID4gIAkJCQkgdHJlZSBpdHlwZSwg dHJlZSAqdmVjb3R5cGVfb3V0LA0KPiA+ID4gPiAtCQkJCSB0cmVlICp2ZWNpdHlwZV9vdXQgPSBO VUxMKQ0KPiA+ID4gPiArCQkJCSB0cmVlICp2ZWNpdHlwZV9vdXQgPSBOVUxMLA0KPiA+ID4gPiAr CQkJCSBlbnVtIG9wdGFiX3N1YnR5cGUgc3VidHlwZSA9DQo+ID4gPiBvcHRhYl9kZWZhdWx0KQ0K PiA+ID4gPiAgew0KPiA+ID4gPiAgICB0cmVlIHZlY2l0eXBlID0gZ2V0X3ZlY3R5cGVfZm9yX3Nj YWxhcl90eXBlICh2aW5mbywgaXR5cGUpOw0KPiA+ID4gPiAgICBpZiAoIXZlY2l0eXBlKQ0KPiA+ ID4gPiBAQCAtMjExLDcgKzIxMiw3IEBAIHZlY3Rfc3VwcG9ydGFibGVfZGlyZWN0X29wdGFiX3Ag KHZlY19pbmZvDQo+ID4gPiA+ICp2aW5mbywNCj4gPiA+IHRyZWUgb3R5cGUsIHRyZWVfY29kZSBj b2RlLA0KPiA+ID4gPiAgICBpZiAoIXZlY290eXBlKQ0KPiA+ID4gPiAgICAgIHJldHVybiBmYWxz ZTsNCj4gPiA+ID4NCj4gPiA+ID4gLSAgb3B0YWIgb3B0YWIgPSBvcHRhYl9mb3JfdHJlZV9jb2Rl IChjb2RlLCB2ZWNpdHlwZSwNCj4gPiA+ID4gb3B0YWJfZGVmYXVsdCk7DQo+ID4gPiA+ICsgIG9w dGFiIG9wdGFiID0gb3B0YWJfZm9yX3RyZWVfY29kZSAoY29kZSwgdmVjaXR5cGUsIHN1YnR5cGUp Ow0KPiA+ID4gPiAgICBpZiAoIW9wdGFiKQ0KPiA+ID4gPiAgICAgIHJldHVybiBmYWxzZTsNCj4g PiA+ID4NCj4gPiA+ID4gQEAgLTQ4NywxNCArNDg4LDMxIEBAIHZlY3Rfam91c3Rfd2lkZW5lZF9p bnRlZ2VyICh0cmVlIHR5cGUsIGJvb2wNCj4gPiA+ID4gc2hpZnRfcCwgdHJlZSBvcCwgIH0NCj4g PiA+ID4NCj4gPiA+ID4gIC8qIFJldHVybiB0cnVlIGlmIHRoZSBjb21tb24gc3VwZXJ0eXBlIG9m IE5FV19UWVBFIGFuZA0KPiA+ID4gKkNPTU1PTl9UWVBFDQo+ID4gPiA+IC0gICBpcyBuYXJyb3dl ciB0aGFuIHR5cGUsIHN0b3JpbmcgdGhlIHN1cGVydHlwZSBpbiAqQ09NTU9OX1RZUEUgaWYNCj4g c28uDQo+ID4gPiAqLw0KPiA+ID4gPiArICAgaXMgbmFycm93ZXIgdGhhbiB0eXBlLCBzdG9yaW5n IHRoZSBzdXBlcnR5cGUgaW4gKkNPTU1PTl9UWVBFIGlmDQo+IHNvLg0KPiA+ID4gPiArICAgSWYg QUxMT1dfU0hPUlRfU0lHTl9NSVNNQVRDSCB0aGVuIGFjY2VwdCB0aGF0DQo+ICpDT01NT05fVFlQ RQ0KPiA+ID4gYW5kIE5FV19UWVBFDQo+ID4gPiA+ICsgICBtYXkgYmUgb2YgZGlmZmVyZW50IHNp Z25zIGJ1dCBlcXVhbCBwcmVjaXNpb24uICAgKi8NCj4gPiA+ID4NCj4gPiA+ID4gIHN0YXRpYyBi b29sDQo+ID4gPiA+IC12ZWN0X2pvdXN0X3dpZGVuZWRfdHlwZSAodHJlZSB0eXBlLCB0cmVlIG5l d190eXBlLCB0cmVlDQo+ID4gPiAqY29tbW9uX3R5cGUpDQo+ID4gPiA+ICt2ZWN0X2pvdXN0X3dp ZGVuZWRfdHlwZSAodHJlZSB0eXBlLCB0cmVlIG5ld190eXBlLCB0cmVlDQo+ID4gPiAqY29tbW9u X3R5cGUsDQo+ID4gPiA+ICsJCQkgYm9vbCBhbGxvd19zaG9ydF9zaWduX21pc21hdGNoID0gZmFs c2UpDQo+ID4gPiA+ICB7DQo+ID4gPiA+ICAgIGlmICh0eXBlc19jb21wYXRpYmxlX3AgKCpjb21t b25fdHlwZSwgbmV3X3R5cGUpKQ0KPiA+ID4gPiAgICAgIHJldHVybiB0cnVlOw0KPiA+ID4gPg0K PiA+ID4gPiArICAvKiBDaGVjayBpZiB0aGUgbWlzbWF0Y2ggaXMgb25seSBpbiB0aGUgc2lnbiBh bmQgaWYgd2UgaGF2ZQ0KPiA+ID4gPiArICAgICBhbGxvd19zaG9ydF9zaWduX21pc21hdGNoIHRo ZW4gYWxsb3cgaXQuICAqLw0KPiA+ID4gPiArICBpZiAoYWxsb3dfc2hvcnRfc2lnbl9taXNtYXRj aA0KPiA+ID4gPiArICAgICAgJiYgVFlQRV9TSUdOICgqY29tbW9uX3R5cGUpICE9IFRZUEVfU0lH TiAobmV3X3R5cGUpKQ0KPiA+ID4gPiArICAgIHsNCj4gPiA+ID4gKyAgICAgIGJvb2wgc2lnbiA9 IFRZUEVfU0lHTiAoKmNvbW1vbl90eXBlKSA9PSBVTlNJR05FRDsNCj4gPiA+ID4gKyAgICAgIHRy ZWUgZXFfdHlwZQ0KPiA+ID4gPiArCT0gYnVpbGRfbm9uc3RhbmRhcmRfaW50ZWdlcl90eXBlIChU WVBFX1BSRUNJU0lPTiAobmV3X3R5cGUpLA0KPiA+ID4gPiArCQkJCQkgIHNpZ24pOw0KPiA+ID4g PiArDQo+ID4gPiA+ICsgICAgICBpZiAodHlwZXNfY29tcGF0aWJsZV9wICgqY29tbW9uX3R5cGUs IGVxX3R5cGUpKQ0KPiA+ID4gPiArCXJldHVybiB0cnVlOw0KPiA+ID4gPiArICAgIH0NCj4gPiA+ ID4gKw0KPiA+ID4gPiAgICAvKiBTZWUgaWYgKkNPTU1PTl9UWVBFIGNhbiBob2xkIGFsbCB2YWx1 ZXMgb2YgTkVXX1RZUEUuICAqLw0KPiA+ID4gPiAgICBpZiAoKFRZUEVfUFJFQ0lTSU9OIChuZXdf dHlwZSkgPCBUWVBFX1BSRUNJU0lPTiAoKmNvbW1vbl90eXBlKSkNCj4gPiA+ID4gICAgICAgICYm IChUWVBFX1VOU0lHTkVEIChuZXdfdHlwZSkgfHwgIVRZUEVfVU5TSUdORUQNCj4gPiA+ICgqY29t bW9uX3R5cGUpKSkNCj4gPiA+ID4gQEAgLTUzMiw2ICs1NTAsOSBAQCB2ZWN0X2pvdXN0X3dpZGVu ZWRfdHlwZSAodHJlZSB0eXBlLCB0cmVlDQo+ID4gPiBuZXdfdHlwZSwgdHJlZSAqY29tbW9uX3R5 cGUpDQo+ID4gPiA+ICAgICB0byBhIHR5cGUgdGhhdCAoYSkgaXMgbmFycm93ZXIgdGhhbiB0aGUg cmVzdWx0IG9mIFNUTVRfSU5GTyBhbmQNCj4gPiA+ID4gICAgIChiKSBjYW4gaG9sZCBhbGwgbGVh ZiBvcGVyYW5kIHZhbHVlcy4NCj4gPiA+ID4NCj4gPiA+ID4gKyAgIElmIEFMTE9XX1NIT1JUX1NJ R05fTUlTTUFUQ0ggdGhlbiBhbGxvdyB0aGF0IHRoZSBzaWducyBvZiB0aGUNCj4gPiA+IG9wZXJh bmRzDQo+ID4gPiA+ICsgICBtYXkgZGlmZmVyIGluIHNpZ25zIGJ1dCBub3QgaW4gcHJlY2lzaW9u Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICAgICBSZXR1cm4gMCBpZiBTVE1UX0lORk8gaXNuJ3Qgc3Vj aCBhIHRyZWUsIG9yIGlmIG5vIHN1Y2ggQ09NTU9OX1RZUEUNCj4gPiA+ID4gICAgIGV4aXN0cy4g ICovDQo+ID4gPiA+DQo+ID4gPiA+IEBAIC01MzksNyArNTYwLDggQEAgc3RhdGljIHVuc2lnbmVk IGludCAgdmVjdF93aWRlbmVkX29wX3RyZWUNCj4gPiA+ID4gKHZlY19pbmZvICp2aW5mbywgc3Rt dF92ZWNfaW5mbyBzdG10X2luZm8sIHRyZWVfY29kZSBjb2RlLA0KPiA+ID4gPiAgCQkgICAgICB0 cmVlX2NvZGUgd2lkZW5lZF9jb2RlLCBib29sIHNoaWZ0X3AsDQo+ID4gPiA+ICAJCSAgICAgIHVu c2lnbmVkIGludCBtYXhfbm9wcywNCj4gPiA+ID4gLQkJICAgICAgdmVjdF91bnByb21vdGVkX3Zh bHVlICp1bnByb20sIHRyZWUgKmNvbW1vbl90eXBlKQ0KPiA+ID4gPiArCQkgICAgICB2ZWN0X3Vu cHJvbW90ZWRfdmFsdWUgKnVucHJvbSwgdHJlZSAqY29tbW9uX3R5cGUsDQo+ID4gPiA+ICsJCSAg ICAgIGJvb2wgYWxsb3dfc2hvcnRfc2lnbl9taXNtYXRjaCA9IGZhbHNlKQ0KPiA+ID4gPiAgew0K PiA+ID4gPiAgICAvKiBDaGVjayBmb3IgYW4gaW50ZWdlciBvcGVyYXRpb24gd2l0aCB0aGUgcmln aHQgY29kZS4gICovDQo+ID4gPiA+ICAgIGdhc3NpZ24gKmFzc2lnbiA9IGR5bl9jYXN0IDxnYXNz aWduICo+IChzdG10X2luZm8tPnN0bXQpOyBAQA0KPiA+ID4gPiAtNjAwLDcNCj4gPiA+ID4gKzYy Miw4IEBAIHZlY3Rfd2lkZW5lZF9vcF90cmVlICh2ZWNfaW5mbyAqdmluZm8sIHN0bXRfdmVjX2lu Zm8NCj4gPiA+IHN0bXRfaW5mbywgdHJlZV9jb2RlIGNvZGUsDQo+ID4gPiA+ICAJCT0gdmluZm8t Pmxvb2t1cF9kZWYgKHRoaXNfdW5wcm9tLT5vcCk7DQo+ID4gPiA+ICAJICAgICAgbm9wcyA9IHZl Y3Rfd2lkZW5lZF9vcF90cmVlICh2aW5mbywgZGVmX3N0bXRfaW5mbywgY29kZSwNCj4gPiA+ID4g IAkJCQkJICAgd2lkZW5lZF9jb2RlLCBzaGlmdF9wLCBtYXhfbm9wcywNCj4gPiA+ID4gLQkJCQkJ ICAgdGhpc191bnByb20sIGNvbW1vbl90eXBlKTsNCj4gPiA+ID4gKwkJCQkJICAgdGhpc191bnBy b20sIGNvbW1vbl90eXBlLA0KPiA+ID4gPiArCQkJCQkgICBhbGxvd19zaG9ydF9zaWduX21pc21h dGNoKTsNCj4gPiA+ID4gIAkgICAgICBpZiAobm9wcyA9PSAwKQ0KPiA+ID4gPiAgCQlyZXR1cm4g MDsNCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTYxNyw3ICs2NDAsOCBAQCB2ZWN0X3dpZGVuZWRfb3Bf dHJlZSAodmVjX2luZm8gKnZpbmZvLA0KPiA+ID4gc3RtdF92ZWNfaW5mbyBzdG10X2luZm8sIHRy ZWVfY29kZSBjb2RlLA0KPiA+ID4gPiAgCSAgICAgIGlmIChpID09IDApDQo+ID4gPiA+ICAJCSpj b21tb25fdHlwZSA9IHRoaXNfdW5wcm9tLT50eXBlOw0KPiA+ID4gPiAgCSAgICAgIGVsc2UgaWYg KCF2ZWN0X2pvdXN0X3dpZGVuZWRfdHlwZSAodHlwZSwgdGhpc191bnByb20tPnR5cGUsDQo+ID4g PiA+IC0JCQkJCQkgY29tbW9uX3R5cGUpKQ0KPiA+ID4gPiArCQkJCQkJIGNvbW1vbl90eXBlLA0K PiA+ID4gPiArCQkJCQkJIGFsbG93X3Nob3J0X3NpZ25fbWlzbWF0Y2gpKQ0KPiA+ID4gPiAgCQly ZXR1cm4gMDsNCj4gPiA+ID4gIAkgICAgfQ0KPiA+ID4gPiAgCX0NCj4gPiA+ID4gQEAgLTg4OCwy MSArOTEyLDI0IEBAIHZlY3RfcmVhc3NvY2lhdGluZ19yZWR1Y3Rpb25fcCAodmVjX2luZm8NCj4g PiA+ID4gKnZpbmZvLA0KPiA+ID4gPg0KPiA+ID4gPiAgICAgVHJ5IHRvIGZpbmQgdGhlIGZvbGxv d2luZyBwYXR0ZXJuOg0KPiA+ID4gPg0KPiA+ID4gPiAtICAgICB0eXBlIHhfdCwgeV90Ow0KPiA+ ID4gPiArICAgICB0eXBlMWEgeF90DQo+ID4gPiA+ICsgICAgIHR5cGUxYiB5X3Q7DQo+ID4gPiA+ ICAgICAgIFRZUEUxIHByb2Q7DQo+ID4gPiA+ICAgICAgIFRZUEUyIHN1bSA9IGluaXQ7DQo+ID4g PiA+ICAgICBsb29wOg0KPiA+ID4gPiAgICAgICBzdW1fMCA9IHBoaSA8aW5pdCwgc3VtXzE+DQo+ ID4gPiA+ICAgICAgIFMxICB4X3QgPSAuLi4NCj4gPiA+ID4gICAgICAgUzIgIHlfdCA9IC4uLg0K PiA+ID4gPiAtICAgICBTMyAgeF9UID0gKFRZUEUxKSB4X3Q7DQo+ID4gPiA+IC0gICAgIFM0ICB5 X1QgPSAoVFlQRTEpIHlfdDsNCj4gPiA+ID4gKyAgICAgUzMgIHhfVCA9IChUWVBFMykgeF90Ow0K PiA+ID4gPiArICAgICBTNCAgeV9UID0gKFRZUEU0KSB5X3Q7DQo+ID4gPiA+ICAgICAgIFM1ICBw cm9kID0geF9UICogeV9UOw0KPiA+ID4gPiAgICAgICBbUzYgIHByb2QgPSAoVFlQRTIpIHByb2Q7 ICAjb3B0aW9uYWxdDQo+ID4gPiA+ICAgICAgIFM3ICBzdW1fMSA9IHByb2QgKyBzdW1fMDsNCj4g PiA+ID4NCj4gPiA+ID4gLSAgIHdoZXJlICdUWVBFMScgaXMgZXhhY3RseSBkb3VibGUgdGhlIHNp emUgb2YgdHlwZSAndHlwZScsIGFuZCAnVFlQRTInIGlzDQo+IHRoZQ0KPiA+ID4gPiAtICAgc2Ft ZSBzaXplIG9mICdUWVBFMScgb3IgYmlnZ2VyLiBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIG9mIGEg cmVkdWN0aW9uDQo+ID4gPiA+ICsgICB3aGVyZSAnVFlQRTEnIGlzIGV4YWN0bHkgZG91YmxlIHRo ZSBzaXplIG9mIHR5cGUgJ3R5cGUxYScgYW5kICd0eXBlMWInLA0KPiA+ID4gPiArICAgdGhlIHNp Z24gb2YgJ1RZUEUxJyBtdXN0IGJlIG9uZSBvZiAndHlwZTFhJyBvciAndHlwZTFiJyBidXQgdGhl IHNpZ24gb2YNCj4gPiA+ID4gKyAgICd0eXBlMWEnIGFuZCAndHlwZTFiJyBjYW4gZGlmZmVyLiAn VFlQRTInIGlzIHRoZSBzYW1lIHNpemUgb2YgJ1RZUEUxJyBvcg0KPiA+ID4gPiArICAgYmlnZ2Vy IGFuZCBtdXN0IGJlIHRoZSBzYW1lIHNpZ24uIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2Ugb2YgYQ0K PiA+ID4gPiArIHJlZHVjdGlvbg0KPiA+ID4gPiAgICAgY29tcHV0YXRpb24uDQo+ID4gPiA+DQo+ ID4gPiA+ICAgICBJbnB1dDoNCj4gPiA+ID4gQEAgLTkzOSwxNSArOTY2LDE2IEBAIHZlY3RfcmVj b2dfZG90X3Byb2RfcGF0dGVybiAodmVjX2luZm8NCj4gPiA+ID4gKnZpbmZvLA0KPiA+ID4gPg0K PiA+ID4gPiAgICAvKiBMb29rIGZvciB0aGUgZm9sbG93aW5nIHBhdHRlcm4NCj4gPiA+ID4gICAg ICAgICAgICBEWCA9IChUWVBFMSkgWDsNCj4gPiA+ID4gLSAgICAgICAgICBEWSA9IChUWVBFMSkg WTsNCj4gPiA+ID4gKwkgIERZID0gKFRZUEUyKSBZOw0KPiA+ID4gPiAgICAgICAgICAgIERQUk9E ID0gRFggKiBEWTsNCj4gPiA+ID4gLSAgICAgICAgICBERFBST0QgPSAoVFlQRTIpIERQUk9EOw0K PiA+ID4gPiArCSAgRERQUk9EID0gKFRZUEUzKSBEUFJPRDsNCj4gPiA+ID4gICAgICAgICAgICBz dW1fMSA9IEREUFJPRCArIHN1bV8wOw0KPiA+ID4gPiAgICAgICBJbiB3aGljaA0KPiA+ID4gPiAg ICAgICAtIERYIGlzIGRvdWJsZSB0aGUgc2l6ZSBvZiBYDQo+ID4gPiA+ICAgICAgIC0gRFkgaXMg ZG91YmxlIHRoZSBzaXplIG9mIFkNCj4gPiA+ID4gICAgICAgLSBEWCwgRFksIERQUk9EIGFsbCBo YXZlIHRoZSBzYW1lIHR5cGUgYnV0IHRoZSBzaWduDQo+ID4gPiA+IC0gICAgICAgYmV0d2VlbiBE WCwgRFkgYW5kIERQUk9EIGNhbiBkaWZmZXIuDQo+ID4gPiA+ICsgICAgICAgYmV0d2VlbiBEWCwg RFkgYW5kIERQUk9EIGNhbiBkaWZmZXIuIFRoZSBzaWduIG9mIERQUk9EDQo+ID4gPiA+ICsgICAg ICAgaXMgb25lIG9mIHRoZSBzaWducyBvZiBEWCBvciBEWS4NCj4gPiA+ID4gICAgICAgLSBzdW0g aXMgdGhlIHNhbWUgc2l6ZSBvZiBEUFJPRCBvciBiaWdnZXINCj4gPiA+ID4gICAgICAgLSBzdW0g aGFzIGJlZW4gcmVjb2duaXplZCBhcyBhIHJlZHVjdGlvbiB2YXJpYWJsZS4NCj4gPiA+ID4NCj4g PiA+ID4gQEAgLTk4NiwxNCArMTAxNCw0MSBAQCB2ZWN0X3JlY29nX2RvdF9wcm9kX3BhdHRlcm4g KHZlY19pbmZvDQo+ICp2aW5mbywNCj4gPiA+ID4gICAgICAgaW5zaWRlIHRoZSBsb29wIChpbiBj YXNlIHdlIGFyZSBhbmFseXppbmcgYW4gb3V0ZXItbG9vcCkuICAqLw0KPiA+ID4gPiAgICB2ZWN0 X3VucHJvbW90ZWRfdmFsdWUgdW5wcm9tMFsyXTsNCj4gPiA+ID4gICAgaWYgKCF2ZWN0X3dpZGVu ZWRfb3BfdHJlZSAodmluZm8sIG11bHRfdmluZm8sIE1VTFRfRVhQUiwNCj4gPiA+IFdJREVOX01V TFRfRVhQUiwNCj4gPiA+ID4gLQkJCSAgICAgZmFsc2UsIDIsIHVucHJvbTAsICZoYWxmX3R5cGUp KQ0KPiA+ID4gPiArCQkJICAgICBmYWxzZSwgMiwgdW5wcm9tMCwgJmhhbGZfdHlwZSwgdHJ1ZSkp DQo+ID4gPiA+ICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+DQo+ID4gPiA+ICsgIC8qIENoZWNr IHRvIHNlZSBpZiB0aGVyZSBpcyBhIHNpZ24gY2hhbmdlIGhhcHBlbmluZyBpbiB0aGUNCj4gPiA+ ID4gKyBvcGVyYW5kcyBvZg0KPiA+ID4gdGhlDQo+ID4gPiA+ICsgICAgIG11bHRpcGxpY2F0aW9u IGFuZCBwaWNrIHRoZSBhcHByb3ByaWF0ZSBvcHRhYiBzdWJ0eXBlLiAgKi8NCj4gPiA+ID4gKyAg ZW51bSBvcHRhYl9zdWJ0eXBlIHN1YnR5cGU7DQo+ID4gPiA+ICsgIHRyZWUgcmhzX3R5cGUxID0g dW5wcm9tMFswXS50eXBlOw0KPiA+ID4gPiArICB0cmVlIHJoc190eXBlMiA9IHVucHJvbTBbMV0u dHlwZTsNCj4gPiA+ID4gKyAgaWYgKFRZUEVfU0lHTiAocmhzX3R5cGUxKSA9PSBUWVBFX1NJR04g KHJoc190eXBlMikpDQo+ID4gPiA+ICsgICAgIHN1YnR5cGUgPSBvcHRhYl9kZWZhdWx0Ow0KPiA+ ID4gPiArICBlbHNlIGlmIChUWVBFX1NJR04gKHJoc190eXBlMSkgPT0gU0lHTkVEDQo+ID4gPiA+ ICsJICAgJiYgVFlQRV9TSUdOIChyaHNfdHlwZTIpID09IFVOU0lHTkVEKQ0KPiA+ID4gPiArICAg ICBzdWJ0eXBlID0gb3B0YWJfc2lnbmVkX3RvX3Vuc2lnbmVkOw0KPiA+ID4gPiArICBlbHNlIGlm IChUWVBFX1NJR04gKHJoc190eXBlMSkgPT0gVU5TSUdORUQNCj4gPiA+ID4gKwkgICAmJiBUWVBF X1NJR04gKHJoc190eXBlMikgPT0gU0lHTkVEKQ0KPiA+ID4gPiArICAgICBzdWJ0eXBlID0gb3B0 YWJfdW5zaWduZWRfdG9fc2lnbmVkOw0KPiA+ID4gPiArICBlbHNlDQo+ID4gPiA+ICsgICAgZ2Nj X3VucmVhY2hhYmxlICgpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIC8qIElmIHdlIGhhdmUgYSBz aWduIGNoYW5naW5nIGRvdCBwcm9kdWN0IHdlIG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUNCj4gPiA+ ID4gKyAgICAgcHJvbW90ZWQgdHlwZSBpZiB1bnNpZ25lZCBoYXMgYXQgbGVhc3QgdGhlIHNhbWUg cHJlY2lzaW9uIGFzIHRoZQ0KPiBmaW5hbA0KPiA+ID4gPiArICAgICB0eXBlIG9mIHRoZSBkb3Qt cHJvZHVjdC4gICovDQo+ID4gPiA+ICsgIGlmIChzdWJ0eXBlICE9IG9wdGFiX2RlZmF1bHQpDQo+ ID4gPiA+ICsgICAgew0KPiA+ID4gPiArICAgICAgdHJlZSBtdWx0X3R5cGUgPSBUUkVFX1RZUEUg KHVucHJvbV9tdWx0Lm9wKTsNCj4gPiA+ID4gKyAgICAgIGlmIChUWVBFX1NJR04gKG11bHRfdHlw ZSkgPT0gVU5TSUdORUQNCj4gPiA+ID4gKwkgICYmIFRZUEVfUFJFQ0lTSU9OIChtdWx0X3R5cGUp IDwgVFlQRV9QUkVDSVNJT04gKHR5cGUpKQ0KPiA+ID4gPiArCXJldHVybiBOVUxMOw0KPiA+ID4g PiArICAgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiAgICB2ZWN0X3BhdHRlcm5fZGV0ZWN0ZWQgKCJ2 ZWN0X3JlY29nX2RvdF9wcm9kX3BhdHRlcm4iLA0KPiA+ID4gPiBsYXN0X3N0bXQpOw0KPiA+ID4g Pg0KPiA+ID4gPiAgICB0cmVlIGhhbGZfdmVjdHlwZTsNCj4gPiA+ID4gICAgaWYgKCF2ZWN0X3N1 cHBvcnRhYmxlX2RpcmVjdF9vcHRhYl9wICh2aW5mbywgdHlwZSwNCj4gPiA+ID4gRE9UX1BST0Rf RVhQUiwNCj4gPiA+IGhhbGZfdHlwZSwNCj4gPiA+ID4gLQkJCQkJdHlwZV9vdXQsICZoYWxmX3Zl Y3R5cGUpKQ0KPiA+ID4gPiArCQkJCQl0eXBlX291dCwgJmhhbGZfdmVjdHlwZSwgc3VidHlwZSkp DQo+ID4gPiA+ICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+DQo+ID4gPiA+ICAgIC8qIEdldCB0 aGUgaW5wdXRzIGluIHRoZSBhcHByb3ByaWF0ZSB0eXBlcy4gICovIEBAIC0xMDAyLDgNCj4gPiA+ ID4gKzEwNTcsMjIgQEAgdmVjdF9yZWNvZ19kb3RfcHJvZF9wYXR0ZXJuICh2ZWNfaW5mbyAqdmlu Zm8sDQo+ID4gPiA+ICAJCSAgICAgICB1bnByb20wLCBoYWxmX3ZlY3R5cGUpOw0KPiA+ID4gPg0K PiA+ID4gPiAgICB2YXIgPSB2ZWN0X3JlY29nX3RlbXBfc3NhX3ZhciAodHlwZSwgTlVMTCk7DQo+ ID4gPiA+ICsNCj4gPiA+ID4gKyAgLyogSWYgd2UgaGF2ZSBhIHNpZ24gY2hhbmdpbmcgZG90LXBy b2R1Y3QgdGhlIGRvdC1wcm9kdWN0IGl0c2VsZiBkb2VzDQo+IGFueQ0KPiA+ID4gPiArICAgICBz aWduIGNvbnZlcnNpb25zLCBzbyBjb25zdW1lIHRoZSB0eXBlIGFuZCB1c2UgdGhlIHVucHJvbW90 ZWQNCj4gPiA+ID4gKyB0eXBlcy4gICovICB0cmVlIG11bHRfYXJnMSwgbXVsdF9hcmcyOyAgaWYg KHN1YnR5cGUgPT0NCj4gPiA+ID4gKyBvcHRhYl9kZWZhdWx0KQ0KPiA+ID4gPiArICAgIHsNCj4g PiA+ID4gKyAgICAgIG11bHRfYXJnMSA9IG11bHRfb3BybmRbMF07DQo+ID4gPiA+ICsgICAgICBt dWx0X2FyZzIgPSBtdWx0X29wcm5kWzFdOw0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gKyAgZWxz ZQ0KPiA+ID4gPiArICAgIHsNCj4gPiA+ID4gKyAgICAgIG11bHRfYXJnMSA9IHVucHJvbTBbMF0u b3A7DQo+ID4gPiA+ICsgICAgICBtdWx0X2FyZzIgPSB1bnByb20wWzFdLm9wOw0KPiA+ID4gPiAr ICAgIH0NCj4gPiA+ID4gICAgcGF0dGVybl9zdG10ID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAodmFy LCBET1RfUFJPRF9FWFBSLA0KPiA+ID4gPiAtCQkJCSAgICAgIG11bHRfb3BybmRbMF0sIG11bHRf b3BybmRbMV0sIG9wcm5kMSk7DQo+ID4gPiA+ICsJCQkJICAgICAgbXVsdF9hcmcxLCBtdWx0X2Fy ZzIsIG9wcm5kMSk7DQo+ID4gPiA+DQo+ID4gPiA+ICAgIHJldHVybiBwYXR0ZXJuX3N0bXQ7DQo+ ID4gPiA+ICB9DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPg0KPiA+ID4gLS0NCj4g PiA+IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4NCj4gPiA+IFNVU0UgU29mdHdh cmUgU29sdXRpb25zIEdlcm1hbnkgR21iSCwgTWF4ZmVsZHN0cmFzc2UgNSwgOTA0MDkNCj4gPiA+ IE51ZXJuYmVyZywgR2VybWFueTsgR0Y6IEZlbGl4IEltZW5kw7ZyZmZlcjsgSFJCIDM2ODA5IChB RyBOdWVybmJlcmcpDQo+ID4NCj4gDQo+IC0tDQo+IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJA c3VzZS5kZT4NCj4gU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJILCBNYXhmZWxk c3RyYXNzZSA1LCA5MDQwOQ0KPiBOdWVybmJlcmcsIEdlcm1hbnk7IEdGOiBGZWxpeCBJbWVuZMO2 cmZmZXI7IEhSQiAzNjgwOSAoQUcgTnVlcm5iZXJnKQ0K