From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80082.outbound.protection.outlook.com [40.107.8.82]) by sourceware.org (Postfix) with ESMTPS id E40B038582B6 for ; Tue, 21 Jun 2022 07:12:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E40B038582B6 ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=EBzNmvFzHBfIdd6R+MFw5PfQTXcCt9j3Kg7Vo3/c+MIXQ5zVA6qIev4buQTzfJCsALnLzc2vRvgLb2a4sTFuiQzipBpQ/CdkXIgEO5vloIj0NAD1NhbQAzBJKogossxtOXCi2pOwY1+A9qxNYNyn8YlgCZNOtJ/yfN7J2UNsUr+f8AfEasg7y17REGI+9vswwlu98Kej8o1upLE9eV6KepqJnes12RzQckM+eYzWZul6OduwZRmIpSjN5oSpzEFcuZuvHmNL8e7MQbbNO7ZUYRXoRlKW9SgvuaD2HK2Yrb7SgNliE0co9L3qZiz1FkH1D3+7U2fa/jwNv0gQSEjnIw== ARC-Message-Signature: i=2; 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=dpUUKawdLGPlrKaR2TVTU21RnA21jJ0VHsF26/XlO0M=; b=BU9J3qj0J0GqctekkE6y4ruB+5YMPRtEdcKEOLfnWiMi/M/LYzbjD6sfYs9g8xjSMKA2ElyYspLatqNpAoEYqv3JvhuBDdOFWGUNeDfPisKtxuwVW/gOxgp3vP0sFTWOPM1oW0M6adD+wceMVelLbPtVajjaOjwOIvWg6ATOk9GOaMwtlQbbxwdwLU4ihqu3Rm2Iu+HOYZPwhyDt7TBoYsl5V5KcjZy9zmG7OOilgJZLhX3js18wTEPEZHJiZrgnTpKWHw2StIGj4ClmPDbfc3IU8fEEtb+0F1hCHyrRisfn8lDSKW5tMCrjl1eItY+cUlpIwB0+nQUeep5J0pw+JA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) Received: from CWLP265CA0403.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:1b6::15) by VI1PR08MB2944.eurprd08.prod.outlook.com (2603:10a6:802:22::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.14; Tue, 21 Jun 2022 07:12:51 +0000 Received: from VE1EUR03FT023.eop-EUR03.prod.protection.outlook.com (2603:10a6:400:1b6:cafe::a5) by CWLP265CA0403.outlook.office365.com (2603:10a6:400:1b6::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.16 via Frontend Transport; Tue, 21 Jun 2022 07:12:51 +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 VE1EUR03FT023.mail.protection.outlook.com (10.152.18.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.14 via Frontend Transport; Tue, 21 Jun 2022 07:12:50 +0000 Received: ("Tessian outbound 6f53897bcd4e:v120"); Tue, 21 Jun 2022 07:12:50 +0000 X-CR-MTA-TID: 64aa7808 Received: from bda5c4eceefd.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 9008D4BE-7FE4-4C89-B166-807B150F36BF.1; Tue, 21 Jun 2022 07:12:44 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id bda5c4eceefd.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 21 Jun 2022 07:12:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N/Vv5Bx6c0BJkVtyTjXcXYZeHPq/EKo3g5ruJKa0lNYrryCUvECycHx/p60OVqlHf9PXgVjC6mY0s1LgOhVP/M/Q/HHclZ5wmQWUFjjIadfpc3wg8yQTIO9lnhAMn3/u50AEoHze/o3Onyr6MUmxA9UZv4qRjoH2jGSwKq5URNYFrEnhuwFlsj1F23f4rRHqvGgI5bUR+uZOg7YDwf+mFYpayTbGiTuZMu5HNEeypdIsXIezaa3rUnpjoyh3C0X8TNSdJexZJZM4mEnCy+n21iQgaDj/ewGaUss52oRcQoMuRmJmCyIsx1meUYNP/Vv0DYOorGB53bK1GF32vV72dQ== 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=dpUUKawdLGPlrKaR2TVTU21RnA21jJ0VHsF26/XlO0M=; b=AZPzC1uSqZfcfiZm1ijfKgLi8Sq/bOzliNamcqGbMU5kVJTlVhGxtnhBtOub7nqvAcE2qA0iLcTgBK2ZsNtIJ1nc3dVfYhZGQRgHdipmQPdQK5fADlU6s5C0wlXR4O6G1pnqQPIVLiE9CY+GilLgic0Vd4OU4mEamLFMzVR4S9epxw3slTvmePl5rOguNFMh8Idc/FpJSWv1LEVmkqKfmNvXculx+MNda+KniUlGcIdnJEgXNemq14c2097qcfySHkS0xXw10sD0Yb8zbU6/j4sPt1gXjLYaAwQF8MI39JqvNlXkyDBoV0wdAmrsmMh69n7vI+ppwdIl5730pcM+QA== 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 DB9PR08MB7038.eurprd08.prod.outlook.com (2603:10a6:10:2ce::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.15; Tue, 21 Jun 2022 07:12:42 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::54e5:594b:e5fd:a9b4]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::54e5:594b:e5fd:a9b4%8]) with mapi id 15.20.5353.022; Tue, 21 Jun 2022 07:12:42 +0000 From: Tamar Christina To: Andrew Pinski CC: GCC Patches , Jakub Jelinek , nd , Richard Guenther Subject: RE: [PATCH 2/2]middle-end: Support recognition of three-way max/min. Thread-Topic: [PATCH 2/2]middle-end: Support recognition of three-way max/min. Thread-Index: AQHYgXGf5qeydB2BT0ON9B9LcfwJDa1Y9IiAgACCllA= Date: Tue, 21 Jun 2022 07:12:42 +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: CDB88AD855962940A90A73BB743222D9.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-MS-Office365-Filtering-Correlation-Id: abf521ec-1742-4043-7028-08da535573e7 x-ms-traffictypediagnostic: DB9PR08MB7038:EE_|VE1EUR03FT023:EE_|VI1PR08MB2944:EE_ X-Microsoft-Antispam-PRVS: 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: UWT716JHKRIa9BelbdoKym/eHUAX2NFDP7L1xmApSHpu251xa+OP0JVU2sXfDHVagYn+V4RhNNyhVjSFaF4fP+m0QIhoCy0P3nEvg+Ts3hspqfmimvKzv8f1dK8IXJcshAepy/2sgatBg0sl6re5uc+JEuBbxKZDf8kjO9YZWeeEOlWzY3SxglPpvtCLpOpXOi/TGJ5Z5/Luan6lBuofUr/E7zLVOEy23OR2J6aw/zt5fSw6QsEL6rZppM5oFJkg3bGFxu88BYIHhKgedYwHe983cqVdwvhAIntV9Wex8EW5tIRQTq5jRZK7E7lBy734ED1LMZKWiexsJjctVoYLLnWdC7A1bkdOvYom7pjDfMEspCEkNIU3kZzeN7+5jy6pSbYrVJYKdJreArALfOtEVWefzNfkZvcGhUohVQBljzoMIgDzHR929MjlVY33TV6+1TP8KhtC7Ldg5j86ebKQiBeg8gFuOYh4DuEj1B/L+8qrO/EICCEGRIyUrcgoz+c/mcKijCkuDH/E9Bnz8kDgWXGBhCEJHcHya6R/L3UqNSEzGf871pzUxs83I+N948DSyGf1dpt7VHrio5x0KlJ4PIgbL9MKlA2a7A0EGsSYoUB5s9OZu4OSNarFIrPynNRT9actznvgdnQVpqNej7dEdHrli9tHFW2QjbHh82yTrMDHckQ5TojmFMghmEid5+UDULto7jZIaXaIFQz8dTjAG4L2AuNgUed0bFN9pXjTxzXaxFpOl+YPwlOJjeyIWhmIgOuIZPumIQ3MeFHboaA+eSMrZ1yNtBC8hVmBEtNHBAU16xf8r2p528hkgtH8KChUevB1MFvYWtN8QxIJJ3QAeA== 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:(13230016)(4636009)(39860400002)(396003)(376002)(366004)(346002)(136003)(9686003)(86362001)(38100700002)(26005)(7696005)(2906002)(41300700001)(30864003)(53546011)(33656002)(6506007)(8936002)(52536014)(5660300002)(83380400001)(4326008)(66556008)(55016003)(84970400001)(122000001)(71200400001)(64756008)(478600001)(8676002)(186003)(66946007)(316002)(66446008)(76116006)(6916009)(38070700005)(54906003)(66476007)(579004); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7038 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: VE1EUR03FT023.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: af6c61f5-cee6-4169-014c-08da53556ef4 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4y+TujgyFEE3PHNRDK542yWq0iyflAfq9llM40jalqfMYxmf6VW4siqReLzn7Ntu8b3377yWO6kdHtMdHPT9BaA7T0Gl6ACNIYixDxz/6RFnXcAY2WUCcF9WXZt0xtx5cBut8+/+/AX3OrpIkI03qKFCnrZVForPwHCSRgkXNMdE4pFFQ1RucU1Er8f541DU+2Tt0rBPWnkSeTI3x5vr3UHrVaEloDXX0MkYQmSSkSqnvbPwrE4NhnZWG9/aEwIViFPdFtlNzS4OAoQxQOkqMbIhVpNMCKnvVs5UBIwcyqMHDgg/pDCphIxTugZFklrDDtgRob5k1GGDwYqy0kfZPLtwlOxQp0qy7EObXSPUE20fn+8YyWhWt8S6wsjj87OL4aycGnGPBudUKJONhlUaAa93syQKFhg9g6Km0i7vXFGpXiECaAm4m6MCQk4BXu0wq5PhCb77xTlvtZ1QCfxRxZpc7Nw5JV9GAOA5FAfHEH6SIy8zO6H5M4EWfXWMJwupF1UZKQ2jMdLEiNOaD2dIJvQtRBbJvAHkfKl+g9e6ebw8s4sEuY6O/oPC+NFIKtlottteFFX7pTXayvvomC1v+xoKCrNvtSU5YJbizxDZZhyzhU7gkaRXbC8A8MsPZAlFVLlUyrl77nJK/Coz7HzETNzTOOfXnvVqe7uJxoNKJvqSj/ocvdlEpqz16dGj/ceXWWCObveZ553VSbnV/JMXHNLpHOeDMNYj6f8DIfxF4THra3hUG5jhHe8Pr/4XPeyECNmmInrkI54ZY9u1ANwSQvDVpviVCMnDquFDQZVG/N2RI7Crr/+z1+mXphfCRPSpc1sY/+Skprmx9nsUkxF4RA== 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:(13230016)(4636009)(396003)(136003)(39860400002)(346002)(376002)(40470700004)(36840700001)(46966006)(84970400001)(186003)(356005)(6506007)(82740400003)(7696005)(86362001)(26005)(2906002)(40460700003)(47076005)(9686003)(107886003)(41300700001)(336012)(81166007)(83380400001)(53546011)(33656002)(8676002)(5660300002)(478600001)(8936002)(70586007)(6862004)(40480700001)(55016003)(82310400005)(30864003)(4326008)(36860700001)(316002)(54906003)(70206006)(52536014); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2022 07:12:50.6786 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: abf521ec-1742-4043-7028-08da535573e7 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: VE1EUR03FT023.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB2944 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, 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 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: Tue, 21 Jun 2022 07:13:03 -0000 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBBbmRyZXcgUGluc2tpIDxwaW5z a2lhQGdtYWlsLmNvbT4NCj4gU2VudDogVHVlc2RheSwgSnVuZSAyMSwgMjAyMiAxMjoxNiBBTQ0K PiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4NCj4gQ2M6IEdD QyBQYXRjaGVzIDxnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZz47IEpha3ViIEplbGluZWsNCj4gPGph a3ViQHJlZGhhdC5jb20+OyBuZCA8bmRAYXJtLmNvbT47IFJpY2hhcmQgR3VlbnRoZXINCj4gPHJn dWVudGhlckBzdXNlLmRlPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDIvMl1taWRkbGUtZW5kOiBT dXBwb3J0IHJlY29nbml0aW9uIG9mIHRocmVlLXdheQ0KPiBtYXgvbWluLg0KPiANCj4gT24gVGh1 LCBKdW4gMTYsIDIwMjIgYXQgNDoxMSBBTSBUYW1hciBDaHJpc3RpbmEgdmlhIEdjYy1wYXRjaGVz IDxnY2MtDQo+IHBhdGNoZXNAZ2NjLmdudS5vcmc+IHdyb3RlOg0KPiA+DQo+ID4gSGkgQWxsLA0K PiA+DQo+ID4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRocmVlLXdheSBtaW4vbWF4IHJl Y29nbml0aW9uIGluIHBoaS1vcHRzLg0KPiA+DQo+ID4gQ29uY3JldGVseSBmb3IgZS5nLg0KPiA+ DQo+ID4gI2luY2x1ZGUgPHN0ZGludC5oPg0KPiA+DQo+ID4gdWludDhfdCB0aHJlZV9taW4gKHVp bnQ4X3QgeGMsIHVpbnQ4X3QgeG0sIHVpbnQ4X3QgeHkpIHsNCj4gPiAgICAgICAgIHVpbnQ4X3Qg IHhrOw0KPiA+ICAgICBpZiAoeGMgPCB4bSkgew0KPiA+ICAgICAgICAgeGsgPSAodWludDhfdCkg KHhjIDwgeHkgPyB4YyA6IHh5KTsNCj4gPiAgICAgfSBlbHNlIHsNCj4gPiAgICAgICAgIHhrID0g KHVpbnQ4X3QpICh4bSA8IHh5ID8geG0gOiB4eSk7DQo+ID4gICAgIH0NCj4gPiAgICAgcmV0dXJu IHhrOw0KPiA+IH0NCj4gPg0KPiA+IHdlIGdlbmVyYXRlOg0KPiA+DQo+ID4gICA8YmIgMj4gW2xv Y2FsIGNvdW50OiAxMDczNzQxODI0XToNCj4gPiAgIF81ID0gTUlOX0VYUFIgPHhjXzEoRCksIHh5 XzMoRCk+Ow0KPiA+ICAgXzcgPSBNSU5fRVhQUiA8eG1fMihEKSwgXzU+Ow0KPiA+ICAgcmV0dXJu IF83Ow0KPiA+DQo+ID4gaW5zdGVhZCBvZg0KPiA+DQo+ID4gICA8YmIgMj46DQo+ID4gICBpZiAo eGNfMihEKSA8IHhtXzMoRCkpDQo+ID4gICAgIGdvdG8gPGJiIDM+Ow0KPiA+ICAgZWxzZQ0KPiA+ ICAgICBnb3RvIDxiYiA0PjsNCj4gPg0KPiA+ICAgPGJiIDM+Og0KPiA+ICAgeGtfNSA9IE1JTl9F WFBSIDx4Y18yKEQpLCB4eV80KEQpPjsNCj4gPiAgIGdvdG8gPGJiIDU+Ow0KPiA+DQo+ID4gICA8 YmIgND46DQo+ID4gICB4a182ID0gTUlOX0VYUFIgPHhtXzMoRCksIHh5XzQoRCk+Ow0KPiA+DQo+ ID4gICA8YmIgNT46DQo+ID4gICAjIHhrXzEgPSBQSEkgPHhrXzUoMyksIHhrXzYoNCk+DQo+ID4g ICByZXR1cm4geGtfMTsNCj4gPg0KPiA+IFRoZSBzYW1lIGZ1bmN0aW9uIGFsc28gaW1tZWRpYXRl bHkgZGVhbHMgd2l0aCB0dXJuaW5nIGEgbWluaW1pemF0aW9uDQo+ID4gcHJvYmxlbSBpbnRvIGEg bWF4aW1pemF0aW9uIG9uZSBpZiB0aGUgcmVzdWx0cyBhcmUgaW52ZXJ0ZWQuICBXZSBkbw0KPiA+ IHRoaXMgaGVyZSBzaW5jZSBkb2luZyBpdCBpbiBtYXRjaC5wZCB3b3VsZCBlbmQgdXAgY2hhbmdp bmcgdGhlIHNoYXBlDQo+ID4gb2YgdGhlIEJCcyBhbmQgYWRkaW5nIGFkZGl0aW9uYWwgaW5zdHJ1 Y3Rpb25zIHdoaWNoIHdvdWxkIHByZXZlbnQgdmFyaW91cw0KPiBvcHRpbWl6YXRpb25zIGZyb20g d29ya2luZy4NCj4gPg0KPiA+IEJvb3RzdHJhcHBlZCBSZWd0ZXN0ZWQgb24gYWFyY2g2NC1ub25l LWxpbnV4LWdudSBhbmQgbm8gaXNzdWVzLg0KPiA+DQo+ID4gT2sgZm9yIG1hc3Rlcj8NCj4gPg0K PiA+IFRoYW5rcywNCj4gPiBUYW1hcg0KPiA+DQo+ID4gZ2NjL0NoYW5nZUxvZzoNCj4gPg0KPiA+ ICAgICAgICAgKiB0cmVlLXNzYS1waGlvcHQuY2MgKG1pbm1heF9yZXBsYWNlbWVudCk6IE9wdGlv bmFsbHkgc2VhcmNoIGZvciB0aGUNCj4gcGhpDQo+ID4gICAgICAgICBzZXF1ZW5jZSBvZiBhIHRo cmVlLXdheSBjb25kaXRpb25hbC4NCj4gPiAgICAgICAgIChyZXBsYWNlX3BoaV9lZGdlX3dpdGhf dmFyaWFibGUpOiBTdXBwb3J0IGRlZmVycmluZyBvZiBCQiByZW1vdmFsLg0KPiA+ICAgICAgICAg KHRyZWVfc3NhX3BoaW9wdF93b3JrZXIpOiBEZXRlY3QgZGlhbW9uZCBwaGkgc3RydWN0dXJlIGZv ciB0aHJlZS0NCj4gd2F5DQo+ID4gICAgICAgICBtaW4vbWF4Lg0KPiA+ICAgICAgICAgKHN0cmlw X2JpdF9ub3QsIGludmVydF9taW5tYXhfY29kZSk6IE5ldy4NCj4gDQo+IEkgaGF2ZSBiZWVuIHdv cmtpbmcgb24gZ2V0dGluZyByaWQgb2YgbWlubWF4X3JlcGxhY2VtZW50IGFuZCBhIGZldyBvdGhl cnMNCj4gYW5kIG9ubHkgaGF2aW5nIG1hdGNoX3NpbXBsaWZ5X3JlcGxhY2VtZW50IGFuZCBoYXZp bmcgdGhlIHNpbXBsaWZpY2F0aW9uDQo+IGxvZ2ljIGFsbCBpbiBtYXRjaC5wZCBpbnN0ZWFkLg0K PiBJcyB0aGVyZSBhIHJlYXNvbiB3aHkgeW91IGNhbid0IGV4cGFuZCBtYXRjaF9zaW1wbGlmeV9y ZXBsYWNlbWVudCBhbmQNCj4gbWF0Y2gucGQ/DQoNCkJlY2F1c2UgdGhpcyBpcyBqdXN0IGEgc2lt cGxlIGV4dGVuc2lvbiBvZiBtaW5tYXhfcmVwbGFjZW1lbnQgd2hpY2gganVzdCBhZGRzDQphIHRo aXJkIGNhc2UgYnV0IHJlLXVzZXMgYWxsIHRoZSB2YWxpZGF0aW9uIGFuZCBub3JtYWxpemF0aW9u IGNvZGUgYWxyZWFkeSBwcmVzZW50DQppbiB0aGUgcGFzcy4NCg0KPiANCj4gPlRoZSByZWFzb24g d2FzIHRoYXQgYSBsb3Qgb2YgdGhlIGZvbGRpbmdzIGNoZWNrZWQgdGhhdCB0aGUgQkIgY29udGFp bnMNCj4gPm9ubHkgIGEgc2luZ2xlIFNTQSBhbmQgdGhhdCB0aGF0IFNTQSBpcyBhIHBoaSBub2Rl Lg0KPiANCj4gQ291bGQgeW91IGV4cGFuZCBvbiB0aGF0Pw0KDQpQYXNzZXMgdGhhdCBjYWxsIGxh c3RfYW5kX29ubHlfc3RtdCBicmVhayBiZWNhdXNlIHlvdSBwdXNoIGFuIGV4dHJhIHN0YXRlbWVu dCBpbnRvIHRoZSBCQi4gVGhlIHBoaSBub2RlIGlzIHRoZW4gbm8gbG9uZ2VyIHRoZSBsYXN0IGFu ZCBvbmx5IHN0YXRlbWVudC4NCg0KRnJvbSB0aGUgdG9wIG9mIG15IGhlYWQsIHNzYS1zcGl0LXBh dGggaXMgb25lIHRoYXQgc3RhcnRlZCBnaXZpbmcgc29tZSBmYWlsdXJlcyBpbiB0aGUgdGVzdHN1 aXRlIGJlY2F1c2Ugb2YgdGhpcy4NCg0KVGFtYXINCg0KPiANCj4gVGhhbmtzLA0KPiBBbmRyZXcN Cj4gDQo+ID4NCj4gPiBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoNCj4gPg0KPiA+ICAgICAgICAg KiBnY2MuZGcvdHJlZS1zc2Evc3BsaXQtcGF0aC0xLmM6IERpc2FibGUgcGhpLW9wdHMgc28gd2Ug ZG9uJ3Qgb3B0aW1pemUNCj4gPiAgICAgICAgIGNvZGUgYXdheS4NCj4gPiAgICAgICAgICogZ2Nj LmRnL3RyZWUtc3NhL21pbm1heC0zLmM6IE5ldyB0ZXN0Lg0KPiA+ICAgICAgICAgKiBnY2MuZGcv dHJlZS1zc2EvbWlubWF4LTQuYzogTmV3IHRlc3QuDQo+ID4gICAgICAgICAqIGdjYy5kZy90cmVl LXNzYS9taW5tYXgtNS5jOiBOZXcgdGVzdC4NCj4gPiAgICAgICAgICogZ2NjLmRnL3RyZWUtc3Nh L21pbm1heC02LmM6IE5ldyB0ZXN0Lg0KPiA+ICAgICAgICAgKiBnY2MuZGcvdHJlZS1zc2EvbWlu bWF4LTcuYzogTmV3IHRlc3QuDQo+ID4gICAgICAgICAqIGdjYy5kZy90cmVlLXNzYS9taW5tYXgt OC5jOiBOZXcgdGVzdC4NCj4gPg0KPiA+IC0tLSBpbmxpbmUgY29weSBvZiBwYXRjaCAtLQ0KPiA+ IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtMy5jDQo+ ID4gYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtMy5jDQo+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleA0KPiA+DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLmRlM2IyZTk0NmU4MTcwMWUzYjc1ZjU4MGUNCj4gNmE4DQo+ID4g NDM2OTVhMDU3ODZlDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3RyZWUtc3NhL21pbm1heC0zLmMNCj4gPiBAQCAtMCwwICsxLDE3IEBADQo+ID4gKy8q IHsgZGctZG8gY29tcGlsZSB9ICovDQo+ID4gKy8qIHsgZGctb3B0aW9ucyAiLU8gLWZkdW1wLXRy ZWUtcGhpb3B0IiB9ICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4gKw0K PiA+ICt1aW50OF90IHRocmVlX21pbiAodWludDhfdCB4YywgdWludDhfdCB4bSwgdWludDhfdCB4 eSkgew0KPiA+ICsgICAgICAgdWludDhfdCAgeGs7DQo+ID4gKyAgICBpZiAoeGMgPCB4bSkgew0K PiA+ICsgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4YyA8IHh5ID8geGMgOiB4eSk7DQo+ID4gKyAg ICB9IGVsc2Ugew0KPiA+ICsgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4bSA8IHh5ID8geG0gOiB4 eSk7DQo+ID4gKyAgICB9DQo+ID4gKyAgICByZXR1cm4geGs7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiTUlOX0VYUFIiIDMgInBoaW9w dDEiIH0gfSAqLw0KPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIk1B WF9FWFBSIiAwICJwaGlvcHQxIiB9IH0gKi8NCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTQuYw0KPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dHJlZS1zc2EvbWlubWF4LTQuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgN Cj4gPg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjZkNjY3 YmU4NjhjMjQwNWVhZWZkMTdjDQo+IGI1Mg0KPiA+IDJkYTQ0YmFmYTBlMg0KPiA+IC0tLSAvZGV2 L251bGwNCj4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtNC5j DQo+ID4gQEAgLTAsMCArMSwxNyBAQA0KPiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiA+ ICsvKiB7IGRnLW9wdGlvbnMgIi1PIC1mZHVtcC10cmVlLXBoaW9wdCIgfSAqLw0KPiA+ICsNCj4g PiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiA+ICsNCj4gPiArdWludDhfdCB0aHJlZV9tYXggKHVp bnQ4X3QgeGMsIHVpbnQ4X3QgeG0sIHVpbnQ4X3QgeHkpIHsNCj4gPiArICAgIHVpbnQ4X3QgICAg IHhrOw0KPiA+ICsgICAgaWYgKHhjID4geG0pIHsNCj4gPiArICAgICAgICB4ayA9ICh1aW50OF90 KSAoeGMgPiB4eSA/IHhjIDogeHkpOw0KPiA+ICsgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICB4 ayA9ICh1aW50OF90KSAoeG0gPiB4eSA/IHhtIDogeHkpOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAg cmV0dXJuIHhrOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgIk1JTl9FWFBSIiAwICJwaGlvcHQxIiB9IH0gKi8NCj4gPiArLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNQVhfRVhQUiIgMyAicGhpb3B0MSIgfSB9ICov DQo+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC01 LmMNCj4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC01LmMNCj4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4DQo+ID4NCj4gMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUwNjAxYTNjYzc1ZDA5YTllNmU1NGEzNWYNCj4gNWIN Cj4gPiA5OTkzMDc0Zjg1MTANCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTUuYw0KPiA+IEBAIC0wLDAgKzEsMTcgQEANCj4g PiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4gPiArLyogeyBkZy1vcHRpb25zICItTyAtZmR1 bXAtdHJlZS1waGlvcHQiIH0gKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4g PiArDQo+ID4gK3VpbnQ4X3QgdGhyZWVfbWlubWF4MSAodWludDhfdCB4YywgdWludDhfdCB4bSwg dWludDhfdCB4eSkgew0KPiA+ICsgICAgICAgdWludDhfdCAgeGs7DQo+ID4gKyAgICBpZiAoeGMg PiB4bSkgew0KPiA+ICsgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4YyA8IHh5ID8geGMgOiB4eSk7 DQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4bSA8IHh5 ID8geG0gOiB4eSk7DQo+ID4gKyAgICB9DQo+ID4gKyAgICByZXR1cm4geGs7DQo+ID4gK30NCj4g PiArDQo+ID4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiTUlOX0VYUFIi IDIgInBoaW9wdDEiIH0gfSAqLw0KPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMgIk1BWF9FWFBSIiAxICJwaGlvcHQxIiB9IH0gKi8NCj4gPiBkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTYuYw0KPiA+IGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTYuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ ID4gaW5kZXgNCj4gPg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li5hNjI4ZjZkOTkyMjI5NThjZmQ4YzQxMGYwZQ0KPiA4NQ0KPiA+IDYzOWUzYTQ5ZGQ0Yg0KPiA+ IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9t aW5tYXgtNi5jDQo+ID4gQEAgLTAsMCArMSwxNyBAQA0KPiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLw0KPiA+ICsvKiB7IGRnLW9wdGlvbnMgIi1PIC1mZHVtcC10cmVlLXBoaW9wdCIgfSAqLw0K PiA+ICsNCj4gPiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiA+ICsNCj4gPiArdWludDhfdCB0aHJl ZV9taW5tYXgzICh1aW50OF90IHhjLCB1aW50OF90IHhtLCB1aW50OF90IHh5KSB7DQo+ID4gKyAg ICAgICAgdWludDhfdCAgeGs7DQo+ID4gKyAgICBpZiAoeGMgPiB4bSkgew0KPiA+ICsgICAgICAg IHhrID0gKHVpbnQ4X3QpICh4eSA8IHhjID8geGMgOiB4eSk7DQo+ID4gKyAgICB9IGVsc2Ugew0K PiA+ICsgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4bSA8IHh5ID8geG0gOiB4eSk7DQo+ID4gKyAg ICB9DQo+ID4gKyAgICByZXR1cm4geGs7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiTUlOX0VYUFIiIDEgInBoaW9wdDEiIH0gfSAqLw0K PiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIk1BWF9FWFBSIiAxICJw aGlvcHQxIiB9IH0gKi8NCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJl ZS1zc2EvbWlubWF4LTcuYw0KPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlu bWF4LTcuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgNCj4gPg0KPiAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjQyNDEyYzRhZGE0MzNiMmY1 OWRmMGE4Yg0KPiBlZg0KPiA+IDlmYTdiMWM1ZTEwNA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiAr KysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtNy5jDQo+ID4gQEAgLTAs MCArMSwxNiBAQA0KPiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiA+ICsvKiB7IGRnLW9w dGlvbnMgIi1PIC1mZHVtcC10cmVlLXBoaW9wdCIgfSAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUg PHN0ZGludC5oPg0KPiA+ICsNCj4gPiArdWludDhfdCB0aHJlZV9taW5tYXgyICh1aW50OF90IHhj LCB1aW50OF90IHhtLCB1aW50OF90IHh5KSB7DQo+ID4gKyAgICAgICB1aW50OF90ICB4azsNCj4g PiArICAgIGlmICh4YyA+IHhtKSB7DQo+ID4gKyAgICAgICAgeGsgPSAodWludDhfdCkgKHhjID4g eHkgPyB4YyA6IHh5KTsNCj4gPiArICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgeGsgPSAodWlu dDhfdCkgKHhtIDwgeHkgPyB4bSA6IHh5KTsNCj4gPiArICAgIH0NCj4gPiArICAgIHJldHVybiB4 azsNCj4gPiArfQ0KPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIk1J Tl9FWFBSIiAxICJwaGlvcHQxIiB9IH0gKi8NCj4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJNQVhfRVhQUiIgMSAicGhpb3B0MSIgfSB9ICovDQo+ID4gZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC04LmMNCj4gPiBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC04LmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiA+IGluZGV4DQo+ID4NCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMC4uOWNkMDUwZTkzMjM3NmJjNTBiZDZhZTYwYw0KPiBiNjUNCj4gPiA0ZmNhYjBiZmRk MWMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJl ZS1zc2EvbWlubWF4LTguYw0KPiA+IEBAIC0wLDAgKzEsMTcgQEANCj4gPiArLyogeyBkZy1kbyBj b21waWxlIH0gKi8NCj4gPiArLyogeyBkZy1vcHRpb25zICItTyAtZmR1bXAtdHJlZS1waGlvcHQi IH0gKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gPiArDQo+ID4gK3VpbnQ4 X3QgdGhyZWVfbWlubWF4MTEgKHVpbnQ4X3QgeGMsIHVpbnQ4X3QgeG0sIHVpbnQ4X3QgeHkpIHsN Cj4gPiArICAgICAgICB1aW50OF90ICB4azsNCj4gPiArICAgIGlmICh4YyA8IHhtKSB7DQo+ID4g KyAgICAgICAgeGsgPSAodWludDhfdCkgKHhjID4geHkgPyB4YyA6IHh5KTsNCj4gPiArICAgIH0g ZWxzZSB7DQo+ID4gKyAgICAgICAgeGsgPSAodWludDhfdCkgKHhtID4geHkgPyB4bSA6IHh5KTsN Cj4gPiArICAgIH0NCj4gPiArICAgIHJldHVybiB4azsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNSU5fRVhQUiIgMSAicGhpb3B0MSIg fSB9ICovDQo+ID4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiTUFYX0VY UFIiIDIgInBoaW9wdDEiIH0gfSAqLw0KPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy5kZy90cmVlLXNzYS9zcGxpdC1wYXRoLTEuYw0KPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dHJlZS1zc2Evc3BsaXQtcGF0aC0xLmMNCj4gPiBpbmRleA0KPiA+DQo+IDhiMjNlZjRjN2EzNDg0 Y2RjMTY0N2VlNmQxYjE1MGYxNTY4NWJlZmYuLjkwMmRkZTQ0YTUwZTE3MWI0ZjM0YmE3MjQNCj4g N2Q3DQo+ID4gNWEzMmQyYzg2MGVkIDEwMDY0NA0KPiA+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3RyZWUtc3NhL3NwbGl0LXBhdGgtMS5jDQo+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdHJlZS1zc2Evc3BsaXQtcGF0aC0xLmMNCj4gPiBAQCAtMSw1ICsxLDUgQEANCj4gPiAgLyog eyBkZy1kbyBydW4gfSAqLw0KPiA+IC0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnNwbGl0LXBhdGhz IC1mZHVtcC10cmVlLXNwbGl0LXBhdGhzLWRldGFpbHMNCj4gPiAtLXBhcmFtIG1heC1qdW1wLXRo cmVhZC1kdXBsaWNhdGlvbi1zdG10cz0yMCIgfSAqLw0KPiA+ICsvKiB7IGRnLW9wdGlvbnMgIi1P MiAtZnNwbGl0LXBhdGhzIC1mZHVtcC10cmVlLXNwbGl0LXBhdGhzLWRldGFpbHMNCj4gPiArLS1w YXJhbSBtYXgtanVtcC10aHJlYWQtZHVwbGljYXRpb24tc3RtdHM9MjAgLWZuby1zc2EtcGhpb3B0 IiB9ICovDQo+ID4NCj4gPiAgI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ID4gICNpbmNsdWRlIDxzdGRs aWIuaD4NCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLXBoaW9wdC5jYyBiL2djYy90cmVl LXNzYS1waGlvcHQuY2MgaW5kZXgNCj4gPg0KPiA1NjI0NjhiN2YwMmE5ZmZlMjcxMzMxOGFkZDU1 MTkwMmMxNGY4OWMzLi42MjQ2ZjA1NDAwNmZmMTZlNzM2MDJlN2NlMmUNCj4gMw0KPiA+IDY3ZDJk MjE0MjFiMSAxMDA2NDQNCj4gPiAtLS0gYS9nY2MvdHJlZS1zc2EtcGhpb3B0LmNjDQo+ID4gKysr IGIvZ2NjL3RyZWUtc3NhLXBoaW9wdC5jYw0KPiA+IEBAIC02Miw4ICs2Miw4IEBAIHN0YXRpYyBn cGhpICpmYWN0b3Jfb3V0X2NvbmRpdGlvbmFsX2NvbnZlcnNpb24gKGVkZ2UsDQo+IGVkZ2UsIGdw aGkgKiwgdHJlZSwgdHJlZSwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnaW1wbGUgKik7ICBzdGF0aWMgaW50DQo+ID4gdmFsdWVfcmVwbGFjZW1l bnQgKGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywNCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlZGdlLCBlZGdlLCBncGhpICosIHRyZWUsIHRyZWUpOyAtc3RhdGljDQo+ID4gYm9v bCBtaW5tYXhfcmVwbGFjZW1lbnQgKGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywNCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2UsIGVkZ2UsIGdwaGkgKiwgdHJlZSwgdHJl ZSk7DQo+ID4gK3N0YXRpYyBib29sIG1pbm1heF9yZXBsYWNlbWVudCAoYmFzaWNfYmxvY2ssIGJh c2ljX2Jsb2NrLCBiYXNpY19ibG9jaywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVkZ2UsIGVkZ2UsIGdwaGkgKiwgdHJlZSwgdHJlZSwgYm9vbCk7DQo+ID4gIHN0YXRpYyBi b29sIHNwYWNlc2hpcF9yZXBsYWNlbWVudCAoYmFzaWNfYmxvY2ssIGJhc2ljX2Jsb2NrLA0KPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRnZSwgZWRnZSwgZ3BoaSAqLCB0 cmVlLCB0cmVlKTsNCj4gPiBzdGF0aWMgYm9vbCBjb25kX3JlbW92YWxfaW5fYnVpbHRpbl96ZXJv X3BhdHRlcm4gKGJhc2ljX2Jsb2NrLA0KPiA+IGJhc2ljX2Jsb2NrLCBAQCAtNzMsNyArNzMsNyBA QCBzdGF0aWMgYm9vbCBjb25kX3N0b3JlX3JlcGxhY2VtZW50DQo+IChiYXNpY19ibG9jaywgYmFz aWNfYmxvY2ssIGVkZ2UsIGVkZ2UsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaGFzaF9zZXQ8dHJlZT4gKik7ICBzdGF0aWMgYm9vbA0KPiA+IGNvbmRfaWZfZWxzZV9z dG9yZV9yZXBsYWNlbWVudCAoYmFzaWNfYmxvY2ssIGJhc2ljX2Jsb2NrLA0KPiA+IGJhc2ljX2Js b2NrKTsgIHN0YXRpYyBoYXNoX3NldDx0cmVlPiAqIGdldF9ub25fdHJhcHBpbmcgKCk7IC1zdGF0 aWMNCj4gPiB2b2lkIHJlcGxhY2VfcGhpX2VkZ2Vfd2l0aF92YXJpYWJsZSAoYmFzaWNfYmxvY2ss IGVkZ2UsIGdwaGkgKiwgdHJlZSk7DQo+ID4gK3N0YXRpYyB2b2lkIHJlcGxhY2VfcGhpX2VkZ2Vf d2l0aF92YXJpYWJsZSAoYmFzaWNfYmxvY2ssIGVkZ2UsIGdwaGkNCj4gPiArKiwgdHJlZSwgYm9v bCk7DQo+ID4gIHN0YXRpYyB2b2lkIGhvaXN0X2FkamFjZW50X2xvYWRzIChiYXNpY19ibG9jaywg YmFzaWNfYmxvY2ssDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2lj X2Jsb2NrLCBiYXNpY19ibG9jayk7ICBzdGF0aWMNCj4gPiBib29sIGdhdGVfaG9pc3RfbG9hZHMg KHZvaWQpOyBAQCAtMTk5LDYgKzE5OSw3IEBADQo+ID4gdHJlZV9zc2FfcGhpb3B0X3dvcmtlciAo Ym9vbCBkb19zdG9yZV9lbGltLCBib29sIGRvX2hvaXN0X2xvYWRzLCBib29sDQo+IGVhcmx5X3Ap DQo+ID4gICAgICAgIGJhc2ljX2Jsb2NrIGJiMSwgYmIyOw0KPiA+ICAgICAgICBlZGdlIGUxLCBl MjsNCj4gPiAgICAgICAgdHJlZSBhcmcwLCBhcmcxOw0KPiA+ICsgICAgICBib29sIGRpYW1vbmRf bWlubWF4X3AgPSBmYWxzZTsNCj4gPg0KPiA+ICAgICAgICBiYiA9IGJiX29yZGVyW2ldOw0KPiA+ DQo+ID4gQEAgLTI2NSw2ICsyNjYsMjkgQEAgdHJlZV9zc2FfcGhpb3B0X3dvcmtlciAoYm9vbCBk b19zdG9yZV9lbGltLA0KPiBib29sIGRvX2hvaXN0X2xvYWRzLCBib29sIGVhcmx5X3ApDQo+ID4g ICAgICAgICAgICAgaG9pc3RfYWRqYWNlbnRfbG9hZHMgKGJiLCBiYjEsIGJiMiwgYmIzKTsNCj4g PiAgICAgICAgICAgY29udGludWU7DQo+ID4gICAgICAgICB9DQo+ID4gKyAgICAgIGVsc2UgaWYg KEVER0VfU1VDQyAoYmIxLCAwKS0+ZGVzdCA9PSBFREdFX1NVQ0MgKGJiMiwgMCktPmRlc3QNCj4g PiArICAgICAgICAgICAgICAmJiBzaW5nbGVfc3VjY19wIChiYjEpDQo+ID4gKyAgICAgICAgICAg ICAgJiYgc2luZ2xlX3N1Y2NfcCAoYmIyKQ0KPiA+ICsgICAgICAgICAgICAgICYmIHNpbmdsZV9w cmVkX3AgKGJiMSkNCj4gPiArICAgICAgICAgICAgICAmJiBzaW5nbGVfcHJlZF9wIChiYjIpDQo+ ID4gKyAgICAgICAgICAgICAgJiYgc2luZ2xlX3N1Y2NfcCAoRURHRV9TVUNDIChiYjEsIDApLT5k ZXN0KSkNCj4gPiArICAgICAgIHsNCj4gPiArICAgICAgICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3Ig aXQxID0gZ3NpX3N0YXJ0X25vbmRlYnVnX2FmdGVyX2xhYmVsc19iYg0KPiAoYmIxKTsNCj4gPiAr ICAgICAgICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgaXQyID0gZ3NpX3N0YXJ0X25vbmRlYnVnX2Fm dGVyX2xhYmVsc19iYg0KPiAoYmIyKTsNCj4gPiArICAgICAgICAgaWYgKGdzaV9vbmVfYmVmb3Jl X2VuZF9wIChpdDEpICYmIGdzaV9vbmVfYmVmb3JlX2VuZF9wIChpdDIpKQ0KPiA+ICsgICAgICAg ICAgIHsNCj4gPiArICAgICAgICAgICAgIGdpbXBsZSAqc3RtdDEgPSBnc2lfc3RtdCAoaXQxKTsN Cj4gPiArICAgICAgICAgICAgIGdpbXBsZSAqc3RtdDIgPSBnc2lfc3RtdCAoaXQyKTsNCj4gPiAr ICAgICAgICAgICAgIGlmIChpc19naW1wbGVfYXNzaWduIChzdG10MSkgJiYgaXNfZ2ltcGxlX2Fz c2lnbiAoc3RtdDIpKQ0KPiA+ICsgICAgICAgICAgICAgICB7DQo+ID4gKyAgICAgICAgICAgICAg ICAgZW51bSB0cmVlX2NvZGUgY29kZTEgPSBnaW1wbGVfYXNzaWduX3Joc19jb2RlIChzdG10MSk7 DQo+ID4gKyAgICAgICAgICAgICAgICAgZW51bSB0cmVlX2NvZGUgY29kZTIgPSBnaW1wbGVfYXNz aWduX3Joc19jb2RlIChzdG10Mik7DQo+ID4gKyAgICAgICAgICAgICAgICAgZGlhbW9uZF9taW5t YXhfcA0KPiA+ICsgICAgICAgICAgICAgICAgICAgPSAoY29kZTEgPT0gTUlOX0VYUFIgfHwgY29k ZTEgPT0gTUFYX0VYUFIpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICYmIChjb2RlMiA9PSBN SU5fRVhQUiB8fCBjb2RlMiA9PSBNQVhfRVhQUik7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4g PiArICAgICAgICAgICB9DQo+ID4gKyAgICAgICB9DQo+ID4gICAgICAgIGVsc2UNCj4gPiAgICAg ICAgIGNvbnRpbnVlOw0KPiA+DQo+ID4gQEAgLTMxNiw2ICszNDAsMTMgQEAgdHJlZV9zc2FfcGhp b3B0X3dvcmtlciAoYm9vbCBkb19zdG9yZV9lbGltLA0KPiBib29sIGRvX2hvaXN0X2xvYWRzLCBi b29sIGVhcmx5X3ApDQo+ID4gICAgICAgICAgIGlmICghY2FuZG9yZXN0KQ0KPiA+ICAgICAgICAg ICAgIGNvbnRpbnVlOw0KPiA+DQo+ID4gKyAgICAgICAgIC8qIENoZWNrIHRoYXQgd2UncmUgbG9v a2luZyBmb3IgbmVzdGVkIHBoaXMuICAqLw0KPiA+ICsgICAgICAgICBpZiAocGhpcyA9PSBOVUxM ICYmIGRpYW1vbmRfbWlubWF4X3ApDQo+ID4gKyAgICAgICAgICAgew0KPiA+ICsgICAgICAgICAg ICAgcGhpcyA9IHBoaV9ub2RlcyAoRURHRV9TVUNDIChiYjIsIDApLT5kZXN0KTsNCj4gPiArICAg ICAgICAgICAgIGUyID0gRURHRV9TVUNDIChiYjIsIDApOw0KPiA+ICsgICAgICAgICAgIH0NCj4g PiArDQo+ID4gICAgICAgICAgIHBoaSA9IHNpbmdsZV9ub25fc2luZ2xldG9uX3BoaV9mb3JfZWRn ZXMgKHBoaXMsIGUxLCBlMik7DQo+ID4gICAgICAgICAgIGlmICghcGhpKQ0KPiA+ICAgICAgICAg ICAgIGNvbnRpbnVlOw0KPiA+IEBAIC0zMjksNiArMzYwLDcgQEAgdHJlZV9zc2FfcGhpb3B0X3dv cmtlciAoYm9vbCBkb19zdG9yZV9lbGltLCBib29sDQo+ID4gZG9faG9pc3RfbG9hZHMsIGJvb2wg ZWFybHlfcCkNCj4gPg0KPiA+ICAgICAgICAgICBncGhpICpuZXdwaGk7DQo+ID4gICAgICAgICAg IGlmIChzaW5nbGVfcHJlZF9wIChiYjEpDQo+ID4gKyAgICAgICAgICAgICAmJiAhZGlhbW9uZF9t aW5tYXhfcA0KPiA+ICAgICAgICAgICAgICAgJiYgKG5ld3BoaSA9IGZhY3Rvcl9vdXRfY29uZGl0 aW9uYWxfY29udmVyc2lvbiAoZTEsIGUyLCBwaGksDQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcwLCBhcmcxLA0KPiA+ DQo+ID4gY29uZF9zdG10KSkpIEBAIC0zNDMsMjAgKzM3NSwyNSBAQCB0cmVlX3NzYV9waGlvcHRf d29ya2VyIChib29sDQo+IGRvX3N0b3JlX2VsaW0sIGJvb2wgZG9faG9pc3RfbG9hZHMsIGJvb2wg ZWFybHlfcCkNCj4gPiAgICAgICAgICAgICB9DQo+ID4NCj4gPiAgICAgICAgICAgLyogRG8gdGhl IHJlcGxhY2VtZW50IG9mIGNvbmRpdGlvbmFsIGlmIGl0IGNhbiBiZSBkb25lLiAgKi8NCj4gPiAt ICAgICAgICAgaWYgKCFlYXJseV9wICYmIHR3b192YWx1ZV9yZXBsYWNlbWVudCAoYmIsIGJiMSwg ZTIsIHBoaSwgYXJnMCwgYXJnMSkpDQo+ID4gKyAgICAgICAgIGlmICghZWFybHlfcA0KPiA+ICsg ICAgICAgICAgICAgJiYgIWRpYW1vbmRfbWlubWF4X3ANCj4gPiArICAgICAgICAgICAgICYmIHR3 b192YWx1ZV9yZXBsYWNlbWVudCAoYmIsIGJiMSwgZTIsIHBoaSwgYXJnMCwgYXJnMSkpDQo+ID4g ICAgICAgICAgICAgY2ZnY2hhbmdlZCA9IHRydWU7DQo+ID4gLSAgICAgICAgIGVsc2UgaWYgKG1h dGNoX3NpbXBsaWZ5X3JlcGxhY2VtZW50IChiYiwgYmIxLCBlMSwgZTIsIHBoaSwNCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzAsIGFyZzEsDQo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXJseV9w KSkNCj4gPiArICAgICAgICAgZWxzZSBpZiAoIWRpYW1vbmRfbWlubWF4X3ANCj4gPiArICAgICAg ICAgICAgICAgICAgJiYgbWF0Y2hfc2ltcGxpZnlfcmVwbGFjZW1lbnQgKGJiLCBiYjEsIGUxLCBl MiwgcGhpLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXJnMCwgYXJnMSwNCj4gPiArIGVhcmx5X3ApKQ0KPiA+ICAgICAgICAgICAgIGNmZ2No YW5nZWQgPSB0cnVlOw0KPiA+ICAgICAgICAgICBlbHNlIGlmICghZWFybHlfcA0KPiA+ICsgICAg ICAgICAgICAgICAgICAmJiAhZGlhbW9uZF9taW5tYXhfcA0KPiA+ICAgICAgICAgICAgICAgICAg ICAmJiBzaW5nbGVfcHJlZF9wIChiYjEpDQo+ID4gICAgICAgICAgICAgICAgICAgICYmIGNvbmRf cmVtb3ZhbF9pbl9idWlsdGluX3plcm9fcGF0dGVybiAoYmIsIGJiMSwgZTEsIGUyLA0KPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBoaSwgYXJnMCwgYXJnMSkpDQo+ID4gICAgICAgICAgICAgY2ZnY2hhbmdlZCA9IHRydWU7DQo+ ID4gLSAgICAgICAgIGVsc2UgaWYgKG1pbm1heF9yZXBsYWNlbWVudCAoYmIsIGJiMSwgZTEsIGUy LCBwaGksIGFyZzAsIGFyZzEpKQ0KPiA+ICsgICAgICAgICBlbHNlIGlmIChtaW5tYXhfcmVwbGFj ZW1lbnQgKGJiLCBiYjEsIGJiMiwgZTEsIGUyLCBwaGksIGFyZzAsIGFyZzEsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbW9uZF9taW5tYXhfcCkpDQo+ID4g ICAgICAgICAgICAgY2ZnY2hhbmdlZCA9IHRydWU7DQo+ID4gICAgICAgICAgIGVsc2UgaWYgKHNp bmdsZV9wcmVkX3AgKGJiMSkNCj4gPiArICAgICAgICAgICAgICAgICAgJiYgIWRpYW1vbmRfbWlu bWF4X3ANCj4gPiAgICAgICAgICAgICAgICAgICAgJiYgc3BhY2VzaGlwX3JlcGxhY2VtZW50IChi YiwgYmIxLCBlMSwgZTIsIHBoaSwgYXJnMCwgYXJnMSkpDQo+ID4gICAgICAgICAgICAgY2ZnY2hh bmdlZCA9IHRydWU7DQo+ID4gICAgICAgICB9DQo+ID4gQEAgLTM4NSw3ICs0MjIsNyBAQCB0cmVl X3NzYV9waGlvcHRfd29ya2VyIChib29sIGRvX3N0b3JlX2VsaW0sIGJvb2wNCj4gPiBkb19ob2lz dF9sb2FkcywgYm9vbCBlYXJseV9wKQ0KPiA+DQo+ID4gIHN0YXRpYyB2b2lkDQo+ID4gIHJlcGxh Y2VfcGhpX2VkZ2Vfd2l0aF92YXJpYWJsZSAoYmFzaWNfYmxvY2sgY29uZF9ibG9jaywNCj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2UgZSwgZ3BoaSAqcGhpLCB0cmVlIG5l d190cmVlKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRnZSBlLCBncGhp ICpwaGksIHRyZWUgbmV3X3RyZWUsIGJvb2wNCj4gPiArIGRlbGV0ZV9iYiA9IHRydWUpDQo+ID4g IHsNCj4gPiAgICBiYXNpY19ibG9jayBiYiA9IGdpbXBsZV9iYiAocGhpKTsNCj4gPiAgICBnaW1w bGVfc3RtdF9pdGVyYXRvciBnc2k7DQo+ID4gQEAgLTQyOCw3ICs0NjUsNyBAQCByZXBsYWNlX3Bo aV9lZGdlX3dpdGhfdmFyaWFibGUgKGJhc2ljX2Jsb2NrDQo+IGNvbmRfYmxvY2ssDQo+ID4gICAg ICBlZGdlX3RvX3JlbW92ZSA9IEVER0VfU1VDQyAoY29uZF9ibG9jaywgMSk7DQo+ID4gICAgZWxz ZQ0KPiA+ICAgICAgZWRnZV90b19yZW1vdmUgPSBFREdFX1NVQ0MgKGNvbmRfYmxvY2ssIDApOw0K PiA+IC0gIGlmIChFREdFX0NPVU5UIChlZGdlX3RvX3JlbW92ZS0+ZGVzdC0+cHJlZHMpID09IDEp DQo+ID4gKyAgaWYgKEVER0VfQ09VTlQgKGVkZ2VfdG9fcmVtb3ZlLT5kZXN0LT5wcmVkcykgPT0g MSAmJiBkZWxldGVfYmIpDQo+ID4gICAgICB7DQo+ID4gICAgICAgIGUtPmZsYWdzIHw9IEVER0Vf RkFMTFRIUlU7DQo+ID4gICAgICAgIGUtPmZsYWdzICY9IH4oRURHRV9UUlVFX1ZBTFVFIHwgRURH RV9GQUxTRV9WQUxVRSk7IEBAIC0NCj4gMTU2NCwxNQ0KPiA+ICsxNjAxLDUyIEBAIHZhbHVlX3Jl cGxhY2VtZW50IChiYXNpY19ibG9jayBjb25kX2JiLCBiYXNpY19ibG9jaw0KPiBtaWRkbGVfYmIs DQo+ID4gICAgcmV0dXJuIDA7DQo+ID4gIH0NCj4gPg0KPiA+ICsvKiBJZiBWQVIgaXMgYW4gU1NB X05BTUUgdGhhdCBwb2ludHMgdG8gYSBCSVRfTk9UX0VYUFIgdGhlbiByZXR1cm4gdGhlDQo+IFRS RUUgZm9yDQo+ID4gKyAgIHRoZSB2YWx1ZSBiZWluZyBpbnZlcnRlZC4gICovDQo+ID4gKw0KPiA+ ICtzdGF0aWMgdHJlZQ0KPiA+ICtzdHJpcF9iaXRfbm90ICh0cmVlIHZhcikNCj4gPiArew0KPiA+ ICsgIGlmIChUUkVFX0NPREUgKHZhcikgIT0gU1NBX05BTUUpDQo+ID4gKyAgICByZXR1cm4gTlVM TF9UUkVFOw0KPiA+ICsNCj4gPiArICBnaW1wbGUgKmFzc2lnbiA9IFNTQV9OQU1FX0RFRl9TVE1U ICh2YXIpOyAgaWYgKGdpbXBsZV9jb2RlIChhc3NpZ24pDQo+ID4gKyAhPSBHSU1QTEVfQVNTSUdO KQ0KPiA+ICsgICAgcmV0dXJuIE5VTExfVFJFRTsNCj4gPiArDQo+ID4gKyAgaWYgKGdpbXBsZV9h c3NpZ25fcmhzX2NvZGUgKGFzc2lnbikgIT0gQklUX05PVF9FWFBSKQ0KPiA+ICsgICAgcmV0dXJu IE5VTExfVFJFRTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIGdpbXBsZV9hc3NpZ25fcmhzMSAoYXNz aWduKTsgfQ0KPiA+ICsNCj4gPiArLyogSW52ZXJ0IGEgTUlOIHRvIGEgTUFYIG9yIGEgTUFYIHRv IGEgTUlOIGV4cHJlc3Npb24gQ09ERS4gICovDQo+ID4gKw0KPiA+ICtlbnVtIHRyZWVfY29kZQ0K PiA+ICtpbnZlcnRfbWlubWF4X2NvZGUgKGVudW0gdHJlZV9jb2RlIGNvZGUpIHsNCj4gPiArICBz d2l0Y2ggKGNvZGUpIHsNCj4gPiArICBjYXNlIE1JTl9FWFBSOg0KPiA+ICsgICAgcmV0dXJuIE1B WF9FWFBSOw0KPiA+ICsgIGNhc2UgTUFYX0VYUFI6DQo+ID4gKyAgICByZXR1cm4gTUlOX0VYUFI7 DQo+ID4gKyAgZGVmYXVsdDoNCj4gPiArICAgIGdjY191bnJlYWNoYWJsZSAoKTsNCj4gPiArICB9 DQo+ID4gK30NCj4gPiArDQo+ID4gIC8qICBUaGUgZnVuY3Rpb24gbWlubWF4X3JlcGxhY2VtZW50 IGRvZXMgdGhlIG1haW4gd29yayBvZiBkb2luZyB0aGUNCj4gbWlubWF4DQo+ID4gICAgICByZXBs YWNlbWVudC4gIFJldHVybiB0cnVlIGlmIHRoZSByZXBsYWNlbWVudCBpcyBkb25lLiAgT3RoZXJ3 aXNlIHJldHVybg0KPiA+ICAgICAgZmFsc2UuDQo+ID4gICAgICBCQiBpcyB0aGUgYmFzaWMgYmxv Y2sgd2hlcmUgdGhlIHJlcGxhY2VtZW50IGlzIGdvaW5nIHRvIGJlIGRvbmUgb24uDQo+IEFSRzAN Cj4gPiAtICAgIGlzIGFyZ3VtZW50IDAgZnJvbSB0aGUgUEhJLiAgTGlrZXdpc2UgZm9yIEFSRzEu ICAqLw0KPiA+ICsgICAgaXMgYXJndW1lbnQgMCBmcm9tIHRoZSBQSEkuICBMaWtld2lzZSBmb3Ig QVJHMS4NCj4gPiArDQo+ID4gKyAgICBJZiBUSFJFRVdBWV9QIHRoZW4gZXhwZWN0IHRoZSBCQiB0 byBiZSBsYWlkIG91dCBpbiBkaWFtb25kIHNoYXBlIHdpdGgNCj4gZWFjaA0KPiA+ICsgICAgQkIg Y29udGFpbmluZyBvbmx5IGEgTUlOIG9yIE1BWCBleHByZXNzaW9uLiAgKi8NCj4gPg0KPiA+ICBz dGF0aWMgYm9vbA0KPiA+IC1taW5tYXhfcmVwbGFjZW1lbnQgKGJhc2ljX2Jsb2NrIGNvbmRfYmIs IGJhc2ljX2Jsb2NrIG1pZGRsZV9iYiwNCj4gPiAtICAgICAgICAgICAgICAgICAgIGVkZ2UgZTAs IGVkZ2UgZTEsIGdwaGkgKnBoaSwgdHJlZSBhcmcwLCB0cmVlIGFyZzEpDQo+ID4gK21pbm1heF9y ZXBsYWNlbWVudCAoYmFzaWNfYmxvY2sgY29uZF9iYiwgYmFzaWNfYmxvY2sgbWlkZGxlX2JiLA0K PiBiYXNpY19ibG9jayBhbHRfbWlkZGxlX2JiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgZWRn ZSBlMCwgZWRnZSBlMSwgZ3BoaSAqcGhpLCB0cmVlIGFyZzAsIHRyZWUgYXJnMSwNCj4gPiArYm9v bCB0aHJlZXdheV9wKQ0KPiA+ICB7DQo+ID4gICAgdHJlZSByZXN1bHQ7DQo+ID4gICAgZWRnZSB0 cnVlX2VkZ2UsIGZhbHNlX2VkZ2U7DQo+ID4gQEAgLTE3MjcsOSArMTgwMSwxNCBAQCBtaW5tYXhf cmVwbGFjZW1lbnQgKGJhc2ljX2Jsb2NrIGNvbmRfYmIsDQo+IGJhc2ljX2Jsb2NrIG1pZGRsZV9i YiwNCj4gPiAgICBpZiAoZmFsc2VfZWRnZS0+ZGVzdCA9PSBtaWRkbGVfYmIpDQo+ID4gICAgICBm YWxzZV9lZGdlID0gRURHRV9TVUNDIChmYWxzZV9lZGdlLT5kZXN0LCAwKTsNCj4gPg0KPiA+ICsg IC8qIFdoZW4gVEhSRUVXQVlfUCB0aGVuIGUxIHdpbGwgcG9pbnQgdG8gdGhlIGVkZ2Ugb2YgdGhl IGZpbmFsDQo+IHRyYW5zaXRpb24NCj4gPiArICAgICBmcm9tIG1pZGRsZS1iYiB0byBlbmQuICAq Lw0KPiA+ICAgIGlmICh0cnVlX2VkZ2UgPT0gZTApDQo+ID4gICAgICB7DQo+ID4gLSAgICAgIGdj Y19hc3NlcnQgKGZhbHNlX2VkZ2UgPT0gZTEpOw0KPiA+ICsgICAgICBpZiAodGhyZWV3YXlfcCkN Cj4gPiArICAgICAgIGdjY19hc3NlcnQgKGZhbHNlX2VkZ2UgPT0gRURHRV9QUkVEIChlMS0+c3Jj LCAwKSk7DQo+ID4gKyAgICAgIGVsc2UNCj4gPiArICAgICAgIGdjY19hc3NlcnQgKGZhbHNlX2Vk Z2UgPT0gZTEpOw0KPiA+ICAgICAgICBhcmdfdHJ1ZSA9IGFyZzA7DQo+ID4gICAgICAgIGFyZ19m YWxzZSA9IGFyZzE7DQo+ID4gICAgICB9DQo+ID4gQEAgLTE3NjgsNiArMTg0NywxMzMgQEAgbWlu bWF4X3JlcGxhY2VtZW50IChiYXNpY19ibG9jayBjb25kX2JiLA0KPiBiYXNpY19ibG9jayBtaWRk bGVfYmIsDQo+ID4gICAgICAgIGVsc2UNCj4gPiAgICAgICAgIHJldHVybiBmYWxzZTsNCj4gPiAg ICAgIH0NCj4gPiArICBlbHNlIGlmIChtaWRkbGVfYmIgIT0gYWx0X21pZGRsZV9iYiAmJiB0aHJl ZXdheV9wKQ0KPiA+ICsgICAgew0KPiA+ICsgICAgICAvKiBSZWNvZ25pemUgdGhlIGZvbGxvd2lu ZyBjYXNlOg0KPiA+ICsNCj4gPiArICAgICAgICBpZiAoc21hbGxlciA8IGxhcmdlcikNCj4gPiAr ICAgICAgICAgIGEgPSBNSU4gKHNtYWxsZXIsIGMpOw0KPiA+ICsgICAgICAgIGVsc2UNCj4gPiAr ICAgICAgICAgIGIgPSBNSU4gKGxhcmdlciwgYyk7DQo+ID4gKyAgICAgICAgeCA9IFBISSA8YSwg Yj4NCj4gPiArDQo+ID4gKyAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvDQo+ID4gKw0KPiA+ ICsgICAgICAgIGEgPSBNSU4gKHNtYWxsZXIsIGMpOw0KPiA+ICsgICAgICAgIHggPSBNSU4gKGxh cmdlciwgYSk7ICAqLw0KPiA+ICsNCj4gPiArICAgICAgZ2ltcGxlICphc3NpZ24gPSBsYXN0X2Fu ZF9vbmx5X3N0bXQgKG1pZGRsZV9iYik7DQo+ID4gKyAgICAgIHRyZWUgbGhzLCBvcDAsIG9wMSwg Ym91bmQ7DQo+ID4gKyAgICAgIHRyZWUgYWx0X2xocywgYWx0X29wMCwgYWx0X29wMTsNCj4gPiAr ICAgICAgYm9vbCBpbnZlcnQgPSBmYWxzZTsNCj4gPiArDQo+ID4gKyAgICAgIGlmICghc2luZ2xl X3ByZWRfcCAobWlkZGxlX2JiKQ0KPiA+ICsgICAgICAgICB8fCAhc2luZ2xlX3ByZWRfcCAoYWx0 X21pZGRsZV9iYikpDQo+ID4gKyAgICAgICByZXR1cm4gZmFsc2U7DQo+ID4gKw0KPiA+ICsgICAg ICBpZiAoIWFzc2lnbg0KPiA+ICsgICAgICAgICB8fCBnaW1wbGVfY29kZSAoYXNzaWduKSAhPSBH SU1QTEVfQVNTSUdOKQ0KPiA+ICsgICAgICAgcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArICAg ICAgbGhzID0gZ2ltcGxlX2Fzc2lnbl9saHMgKGFzc2lnbik7DQo+ID4gKyAgICAgIGFzc19jb2Rl ID0gZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAoYXNzaWduKTsNCj4gPiArICAgICAgaWYgKGFzc19j b2RlICE9IE1BWF9FWFBSICYmIGFzc19jb2RlICE9IE1JTl9FWFBSKQ0KPiA+ICsgICAgICAgcmV0 dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArICAgICAgb3AwID0gZ2ltcGxlX2Fzc2lnbl9yaHMxIChh c3NpZ24pOw0KPiA+ICsgICAgICBvcDEgPSBnaW1wbGVfYXNzaWduX3JoczIgKGFzc2lnbik7DQo+ ID4gKw0KPiA+ICsgICAgICBhc3NpZ24gPSBsYXN0X2FuZF9vbmx5X3N0bXQgKGFsdF9taWRkbGVf YmIpOw0KPiA+ICsgICAgICBpZiAoIWFzc2lnbg0KPiA+ICsgICAgICAgICB8fCBnaW1wbGVfY29k ZSAoYXNzaWduKSAhPSBHSU1QTEVfQVNTSUdOKQ0KPiA+ICsgICAgICAgcmV0dXJuIGZhbHNlOw0K PiA+ICsNCj4gPiArICAgICAgYWx0X2xocyA9IGdpbXBsZV9hc3NpZ25fbGhzIChhc3NpZ24pOw0K PiA+ICsgICAgICBpZiAoYXNzX2NvZGUgIT0gZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAoYXNzaWdu KSkNCj4gPiArICAgICAgIHJldHVybiBmYWxzZTsNCj4gPiArDQo+ID4gKyAgICAgIGFsdF9vcDAg PSBnaW1wbGVfYXNzaWduX3JoczEgKGFzc2lnbik7DQo+ID4gKyAgICAgIGFsdF9vcDEgPSBnaW1w bGVfYXNzaWduX3JoczIgKGFzc2lnbik7DQo+ID4gKw0KPiA+ICsgICAgICBpZiAoIW9wZXJhbmRf ZXF1YWxfZm9yX3BoaV9hcmdfcCAobGhzLCBhcmdfdHJ1ZSkNCj4gPiArICAgICAgICB8fCAhb3Bl cmFuZF9lcXVhbF9mb3JfcGhpX2FyZ19wIChhbHRfbGhzLCBhcmdfZmFsc2UpKQ0KPiA+ICsgICAg ICAgcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArICAgICAgaWYgKChvcGVyYW5kX2VxdWFsX2Zv cl9waGlfYXJnX3AgKG9wMCwgc21hbGxlcikNCj4gPiArICAgICAgICAgICAgICAgfHwgKGFsdF9z bWFsbGVyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAmJiBvcGVyYW5kX2VxdWFsX2Zvcl9waGlf YXJnX3AgKG9wMCwgYWx0X3NtYWxsZXIpKSkNCj4gPiArICAgICAgICAgICAgICAmJiAob3BlcmFu ZF9lcXVhbF9mb3JfcGhpX2FyZ19wIChhbHRfb3AwLCBsYXJnZXIpDQo+ID4gKyAgICAgICAgICAg ICAgICAgIHx8IChhbHRfbGFyZ2VyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAmJiBvcGVy YW5kX2VxdWFsX2Zvcl9waGlfYXJnX3AgKGFsdF9vcDAsIGFsdF9sYXJnZXIpKSkpDQo+ID4gKyAg ICAgICB7DQo+ID4gKyAgICAgICAgIC8qIFdlIGdvdCBoZXJlIGlmIHRoZSBjb25kaXRpb24gaXMg dHJ1ZSwgaS5lLiwgU01BTExFUiA8IExBUkdFUi4gICovDQo+ID4gKyAgICAgICAgIGlmICghb3Bl cmFuZF9lcXVhbF9mb3JfcGhpX2FyZ19wIChvcDEsIGFsdF9vcDEpKQ0KPiA+ICsgICAgICAgICAg IHJldHVybiBmYWxzZTsNCj4gPiArDQo+ID4gKyAgICAgICAgIGlmICgoYXJnMCA9IHN0cmlwX2Jp dF9ub3QgKG9wMCkpICE9IE5VTEwNCj4gPiArICAgICAgICAgICAgICYmIChhcmcxID0gc3RyaXBf Yml0X25vdCAoYWx0X29wMCkpICE9IE5VTEwNCj4gPiArICAgICAgICAgICAgICYmIChib3VuZCA9 IHN0cmlwX2JpdF9ub3QgKG9wMSkpICE9IE5VTEwpDQo+ID4gKyAgICAgICAgICAgew0KPiA+ICsg ICAgICAgICAgICAgbWlubWF4ID0gTUFYX0VYUFI7DQo+ID4gKyAgICAgICAgICAgICBhc3NfY29k ZSA9IGludmVydF9taW5tYXhfY29kZSAoYXNzX2NvZGUpOw0KPiA+ICsgICAgICAgICAgICAgaW52 ZXJ0ID0gdHJ1ZTsNCj4gPiArICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgIGVsc2UNCj4gPiAr ICAgICAgICAgICB7DQo+ID4gKyAgICAgICAgICAgICBib3VuZCA9IG9wMTsNCj4gPiArICAgICAg ICAgICAgIG1pbm1heCA9IE1JTl9FWFBSOw0KPiA+ICsgICAgICAgICAgICAgYXJnMCA9IG9wMDsN Cj4gPiArICAgICAgICAgICAgIGFyZzEgPSBhbHRfb3AwOw0KPiA+ICsgICAgICAgICAgICB9DQo+ ID4gKyAgICAgICB9DQo+ID4gKyAgICAgIGVsc2UgaWYgKChvcGVyYW5kX2VxdWFsX2Zvcl9waGlf YXJnX3AgKG9wMCwgbGFyZ2VyKQ0KPiA+ICsgICAgICAgICAgICAgICB8fCAoYWx0X2xhcmdlcg0K PiA+ICsgICAgICAgICAgICAgICAgICAgJiYgb3BlcmFuZF9lcXVhbF9mb3JfcGhpX2FyZ19wIChv cDAsIGFsdF9sYXJnZXIpKSkNCj4gPiArICAgICAgICAgICAgICAmJiAob3BlcmFuZF9lcXVhbF9m b3JfcGhpX2FyZ19wIChhbHRfb3AwLCBzbWFsbGVyKQ0KPiA+ICsgICAgICAgICAgICAgICAgICB8 fCAoYWx0X3NtYWxsZXINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICYmIG9wZXJhbmRfZXF1 YWxfZm9yX3BoaV9hcmdfcCAoYWx0X29wMCwgYWx0X3NtYWxsZXIpKSkpDQo+ID4gKyAgICAgICB7 DQo+ID4gKyAgICAgICAgIC8qIFdlIGdvdCBoZXJlIGlmIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSwg aS5lLiwgU01BTExFUiA+IExBUkdFUi4gICovDQo+ID4gKyAgICAgICAgIGlmICghb3BlcmFuZF9l cXVhbF9mb3JfcGhpX2FyZ19wIChvcDEsIGFsdF9vcDEpKQ0KPiA+ICsgICAgICAgICAgIHJldHVy biBmYWxzZTsNCj4gPiArDQo+ID4gKyAgICAgICAgIGlmICgoYXJnMCA9IHN0cmlwX2JpdF9ub3Qg KG9wMCkpICE9IE5VTEwNCj4gPiArICAgICAgICAgICAgICYmIChhcmcxID0gc3RyaXBfYml0X25v dCAoYWx0X29wMCkpICE9IE5VTEwNCj4gPiArICAgICAgICAgICAgICYmIChib3VuZCA9IHN0cmlw X2JpdF9ub3QgKG9wMSkpICE9IE5VTEwpDQo+ID4gKyAgICAgICAgICAgew0KPiA+ICsgICAgICAg ICAgICAgbWlubWF4ID0gTUlOX0VYUFI7DQo+ID4gKyAgICAgICAgICAgICBhc3NfY29kZSA9IGlu dmVydF9taW5tYXhfY29kZSAoYXNzX2NvZGUpOw0KPiA+ICsgICAgICAgICAgICAgaW52ZXJ0ID0g dHJ1ZTsNCj4gPiArICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgIGVsc2UNCj4gPiArICAgICAg ICAgICB7DQo+ID4gKyAgICAgICAgICAgICBib3VuZCA9IG9wMTsNCj4gPiArICAgICAgICAgICAg IG1pbm1heCA9IE1BWF9FWFBSOw0KPiA+ICsgICAgICAgICAgICAgYXJnMCA9IG9wMDsNCj4gPiAr ICAgICAgICAgICAgIGFyZzEgPSBhbHRfb3AwOw0KPiA+ICsgICAgICAgICAgICB9DQo+ID4gKyAg ICAgICB9DQo+ID4gKyAgICAgIGVsc2UNCj4gPiArICAgICAgIHJldHVybiBmYWxzZTsNCj4gPiAr DQo+ID4gKyAgICAgIC8qIFJlc2V0IGFueSByYW5nZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBiYXNp YyBibG9jay4gICovDQo+ID4gKyAgICAgIHJlc2V0X2Zsb3dfc2Vuc2l0aXZlX2luZm9faW5fYmIg KGNvbmRfYmIpOw0KPiA+ICsNCj4gPiArICAgICAgLyogRW1pdCB0aGUgc3RhdGVtZW50IHRvIGNv bXB1dGUgbWluL21heC4gICovDQo+ID4gKyAgICAgIGdpbXBsZV9zZXEgc3RtdHMgPSBOVUxMOw0K PiA+ICsgICAgICB0cmVlIHBoaV9yZXN1bHQgPSBQSElfUkVTVUxUIChwaGkpOw0KPiA+ICsgICAg ICByZXN1bHQgPSBnaW1wbGVfYnVpbGQgKCZzdG10cywgbWlubWF4LCBUUkVFX1RZUEUgKHBoaV9y ZXN1bHQpLCBhcmcwLA0KPiBib3VuZCk7DQo+ID4gKyAgICAgIHJlc3VsdCA9IGdpbXBsZV9idWls ZCAoJnN0bXRzLCBhc3NfY29kZSwgVFJFRV9UWVBFIChwaGlfcmVzdWx0KSwNCj4gcmVzdWx0LCBh cmcxKTsNCj4gPiArICAgICAgaWYgKGludmVydCkNCj4gPiArICAgICAgIHJlc3VsdCA9IGdpbXBs ZV9idWlsZCAoJnN0bXRzLCBCSVRfTk9UX0VYUFIsIFRSRUVfVFlQRQ0KPiA+ICsgKHBoaV9yZXN1 bHQpLCByZXN1bHQpOw0KPiA+ICsNCj4gPiArICAgICAgZ3NpID0gZ3NpX2xhc3RfYmIgKGNvbmRf YmIpOw0KPiA+ICsgICAgICBnc2lfaW5zZXJ0X3NlcV9iZWZvcmUgKCZnc2ksIHN0bXRzLCBHU0lf TkVXX1NUTVQpOw0KPiA+ICsNCj4gPiArICAgICAgcmVwbGFjZV9waGlfZWRnZV93aXRoX3Zhcmlh YmxlIChjb25kX2JiLCBlMSwgcGhpLCByZXN1bHQsDQo+ID4gKyBmYWxzZSk7DQo+ID4gKw0KPiA+ ICsgICAgICByZXR1cm4gdHJ1ZTsNCj4gPiArICAgIH0NCj4gPiAgICBlbHNlDQo+ID4gICAgICB7 DQo+ID4gICAgICAgIC8qIFJlY29nbml6ZSB0aGUgZm9sbG93aW5nIGNhc2UsIGFzc3VtaW5nIGQg PD0gdToNCj4gPg0KPiA+DQo+ID4NCj4gPg0KPiA+IC0tDQo=