From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150074.outbound.protection.outlook.com [40.107.15.74]) by sourceware.org (Postfix) with ESMTPS id 75DCF3858C2F for ; Tue, 5 Jul 2022 15:26:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 75DCF3858C2F ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=DrCda7g33QXeVvcRH+8WV+f/Zyxl4dUzMclTK82XTUPGiNxDoLllwLWaLt8Blnmr4ATdMjyDEHiosWfHp7x83YoD3ZIOBzj9iUH202VpbeYPvp35SIVZy3HTxKUf3jb5LpT9wUzkSIf61Vsb9mv7NejNPjhOzWgG7o+/I36h8rBpUgMxbgwjUYpEC6eMSUxjZNpp0lQSboJaCnQqIrwUv+SIyGYurE0r0gEpol8DCjM/Xg4J/DtBn2s/NLoPaPKaDTIg/VvV53s60m3Vp+g4kqZnqwsRRWJkRxrIVj9uN7uFw8b0w30B3DGPMU5JCmil0gSfMZo/w6nBA9sgl5CJ6w== 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=DnBFkhelDqdjleztA1SupfGDNaVJtFpUhHjDkYcPJLw=; b=IDsCGKW+tyG9ZpCo0+ahJ3eZT9bwk5Uf8hEkU1juCC1D9jSL26Qiqp1UJ0R0Ka5bI0Qc2e/NA4HzAsvEHUcUnEXo2xfOwsdGM+zyCo+0GzgoMbm7dZl+Kq3LihwIGtkeIJDI4SkOVn3xZcUO2abGKCEd5MpUFea2hJIltFR+he71begImLbg/3FPpgWUiq1CuI5hMhRSWAXC+Ub2sHjIXkVHd75tk06oUJd/DT7fq6Q64yL2DAO9zuqk16rdSf2IAYlEaD9asEBFxkUVSJifGe90FdnHWeDS6Gxqx5yUuusQ6fG7I8MCg6d4ZyPgLL7CA8ATcMQomfs1fRjJn+WAmQ== 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 AS9PR04CA0109.eurprd04.prod.outlook.com (2603:10a6:20b:531::23) by DBAPR08MB5845.eurprd08.prod.outlook.com (2603:10a6:10:1a5::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.15; Tue, 5 Jul 2022 15:25:52 +0000 Received: from VE1EUR03FT061.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:531:cafe::9d) by AS9PR04CA0109.outlook.office365.com (2603:10a6:20b:531::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.21 via Frontend Transport; Tue, 5 Jul 2022 15:25:52 +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 VE1EUR03FT061.mail.protection.outlook.com (10.152.19.220) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14 via Frontend Transport; Tue, 5 Jul 2022 15:25:51 +0000 Received: ("Tessian outbound d5fa056a5959:v121"); Tue, 05 Jul 2022 15:25:50 +0000 X-CR-MTA-TID: 64aa7808 Received: from 4d6442fb0164.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id F58D70BB-95FB-4BBA-A718-3774CC644280.1; Tue, 05 Jul 2022 15:25:44 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 4d6442fb0164.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 05 Jul 2022 15:25:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iqt4cnCSmNeKf//pA6yA+2IhOXdqek0GFjB3E+stB650GJbD6qRw5NI0T9uo1gwxhiU0qM/+lO7tPVDU+oO1vZ3S9G4zoWIW5tY2OEIaoLR+hPJ72hTByE9GkN66dJNeJW+J4EYjOw91w7X5CQl2R0QXco7nvUnFHbmgvr2RGiTRPtLNSdSK9wobAV2arH8ApZapaWJ+uPmQ3GBegHnjSQ7XA0cvvY4J4RYAeO7RLuDnfQimabe098TgOL+prDD/JeHyICTyQH8ml4DLvW+smM3UjCQalZlJMeuagcXfpDi8iTBCN/E95fyYKWVS/RMIUk2ZGngOHO3V0/iAgqtpqg== 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=DnBFkhelDqdjleztA1SupfGDNaVJtFpUhHjDkYcPJLw=; b=U/ZKRKP5H664tDZmD+VYyHWQ+GBbtkbmjuijKaMMPfhmb7eMJ5rJBE4lbkS6pjW/VxF11bv2MZ1a/TR+09j8wj3aAsNwZ62eIdLa8VjAF8kuRTID9PXogmsL/6fYhyOX5sFbk1/KaH/+/J8f12F6P7g0AseJ1ad700dt+ozMykaUeTDoPK0U3RY4C7rmFaAVezwmbK5prWGJzK34Y8zA209I1IplAxw+bDOej1SRuVDLI2faLSfUa6B27GbuXXYgNQhQqm1cYrM76+ODrEEq0JApxAQmHoz9B1JI3DeyH+eyJfHVpgE0mYIx+MvS7FA4leblI72qN4zfB2949wyxXw== 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 AM9PR08MB6194.eurprd08.prod.outlook.com (2603:10a6:20b:2d5::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.15; Tue, 5 Jul 2022 15:25: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%9]) with mapi id 15.20.5395.021; Tue, 5 Jul 2022 15:25:42 +0000 From: Tamar Christina To: Richard Biener CC: "gcc-patches@gcc.gnu.org" , nd , "jakub@redhat.com" 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: AQHYgXGf5qeydB2BT0ON9B9LcfwJDa1X/qYAgBgCxwA= Date: Tue, 5 Jul 2022 15:25:42 +0000 Message-ID: References: <29n37062-n3s3-71o9-8411-r851o15ss72@fhfr.qr> In-Reply-To: <29n37062-n3s3-71o9-8411-r851o15ss72@fhfr.qr> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: C82AAFDA6BC68E43943EFC6AE402E043.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: 3a06b28b-1050-4de6-32fb-08da5e9aa522 x-ms-traffictypediagnostic: AM9PR08MB6194:EE_|VE1EUR03FT061:EE_|DBAPR08MB5845:EE_ 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: 6oQ+0T5RvaLoJ+bR4WrHF9E3rudL+WBmyW6bjS1oAg0HkdKNSgqeDASvVAKN+1a9KJzCp+QY3OGGrKyalafcQVgJKv2Ukr54zTcb/oEUet7fkCuuOZC9D1jxLZhpNPzBnzs8lxufFu4ppaRiksc94tD6GgUA80aA1F7HhVVg1YnvvSQrno4muMzPkoAV7U0OYKJxcwXbukeAhglwFIwvpdmxzdjSxUJJ3owLmWi17V6PlRbidh2gdpY0nlJ/FU59tYsLInqnhu0yBMfXj1jP/q62EJRbhxymgpl4Jd4T4d2KmSAMm1lWxy0ldCuQ+FXylVONC64iXQ0p9oU5zG/fMkBB26LRXlb8xgjVJOKx3GZYyi+K/sTVEbF0eX/B2O6dJXfWcnonbXMqTo4UhtcB4xwkOnxozLgfHdVGduUOsD8I80JMY09+jVlYtTmR3keunrxfeor79qATBMVg5l6y7JHOZjFqsRyqLw3nkWqFJNkDV1gVjHRAsccqvTBhIGXUL7qPhH2eMN+nGe3m0PInDkray3jSc3oWzvFIsh0psVX12U/zLCwCrJQd4Nrt+9yruIlAWkxYCg78ldU/wiOHjqUtaC1uUDTPntdgh93sqzkYvp4eAIWOafwr3rEI8BFC3hfEAOJizglZlnmsZh8Y+i7+LjjqhZzuXqsxmto6uGiz2Fk3+liCA5YIHyi951QCNhVNrFyRmHZf7KmrubPucJlyuhLqfpXjbQwu5VkeSA5FQFOoyknz5n/OUVh1TAkmMRogbIJV8pJYh2fqsfwYSS3UTzfHx7hm3fnQGuZmKN1kHJc/572u3ppDBctyy+CtgPeJeOGDD/KT3H9A4v5EyQKwTvqedL3t2TUvE6AeK5ii/RIbroNSRjXMIAEoHc8r 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)(376002)(366004)(39860400002)(396003)(136003)(346002)(41300700001)(2906002)(55016003)(38100700002)(84970400001)(6916009)(54906003)(316002)(6506007)(7696005)(76116006)(66946007)(66556008)(66446008)(64756008)(8676002)(4326008)(9686003)(71200400001)(33656002)(52536014)(86362001)(478600001)(186003)(83380400001)(66476007)(99936003)(122000001)(26005)(38070700005)(8936002)(5660300002)(30864003)(559001)(579004); DIR:OUT; SFP:1101; Content-Type: multipart/mixed; boundary="_002_VI1PR08MB532528528B9CAB9C0467423BFF819VI1PR08MB5325eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6194 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: VE1EUR03FT061.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 4cd8aefd-4dd6-4be6-bfb8-08da5e9a9fd5 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VtyCOfVEDY3B2lbus8UvyNJqY/hVTM9AAfkYQ34t6LxQ3ZTIzKmlwYzR/ZC8ClbVdoIPXrDb5ScTAihcN3tzIg/Sznc4CvB4AEsKO12MX327babb17YojJfap1Oqha9sEoriCosb0twpB8OwCV2P+dEpiFjYDUnRcUACxGBSoe9xFyxZTTwkftomdM3QHC+wDHOGPYNLGMN81Auya7V6Z3cYZhBC4X5tc29ZA2uXJVHbh5TiJJfa9vVopTdm1SeLXcIbRwgQMLNBJQnJTejAwoIbfZq/ApZcaUfUQJFwUmy2MVhd0IYlFT610sdfaE00VROeapY7hPJuIBCNvuI66KNwqykgTbgaR/pBR3CoT7iH2mTZYEHiy4Q8CZtP7QesM2k4E3CdxYN6esG3Er7/a5a3kU3lf5dKJQLzHeC85XvKAfD9M8xDHJvB0T+IrRkUgOdiU7nK+cnOEaJ/BN5tMZ29Kf2l4REEF8eQ+DgbBfnEtEHCIdis+Zf/2vUV26hZ70MlTFyHHK/Ceqvsvpqwm1Br0IOnghr5eHEkkFubekLyt1aLZG3W5Hg+7FC0AkgInTWuy4MnO/rr/XAWtUkJSS+e8j+eF9sKnlhr1itvlAGJTaXFsFdYVhW1g2zyJKbVgD9AifCwuRUI/DP511vlnJ4RIB7a5AoyTpy4F5RG8O6GFgkwmKXXMw73K/X63dhzrSYPmS9zWZ8q7b0vjkEb7RZGU1YJhwMMCpqXMnHi3F3KgT21qqlToaxyXOx2Ese6MfwRslHVgU/8+eOOhCKp/8kkWpGmQ3ca5Z7kHBh5dYk1zMya9vPlYNpXfxDPy4SzTNOKz8q5gn/zm5gLwzES7HZ1gcZ1TPv8iBk8050nq1THaFcoLb8tjsp+kbHE7ILC+0h3ec5c1Ln6AQua7arpAg== 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)(346002)(396003)(39860400002)(136003)(376002)(40470700004)(46966006)(36840700001)(316002)(82310400005)(54906003)(36860700001)(40460700003)(336012)(47076005)(83380400001)(26005)(33656002)(186003)(84970400001)(9686003)(30864003)(6506007)(86362001)(55016003)(2906002)(5660300002)(235185007)(81166007)(99936003)(33964004)(70206006)(8676002)(4326008)(70586007)(107886003)(7696005)(478600001)(41300700001)(82740400003)(40480700001)(356005)(52536014)(8936002)(6862004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2022 15:25:51.3396 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3a06b28b-1050-4de6-32fb-08da5e9aa522 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: VE1EUR03FT061.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR08MB5845 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, 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, 05 Jul 2022 15:26:09 -0000 --_002_VI1PR08MB532528528B9CAB9C0467423BFF819VI1PR08MB5325eurp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiA+ICAJfQ0KPiA+ICsgICAgICBlbHNlIGlmIChFREdFX1NVQ0MgKGJiMSwgMCktPmRlc3QgPT0g RURHRV9TVUNDIChiYjIsIDApLT5kZXN0DQo+ID4gKwkgICAgICAgJiYgc2luZ2xlX3N1Y2NfcCAo YmIxKQ0KPiA+ICsJICAgICAgICYmIHNpbmdsZV9zdWNjX3AgKGJiMikNCj4gPiArCSAgICAgICAm JiBzaW5nbGVfcHJlZF9wIChiYjEpDQo+ID4gKwkgICAgICAgJiYgc2luZ2xlX3ByZWRfcCAoYmIy KQ0KPiA+ICsJICAgICAgICYmIHNpbmdsZV9zdWNjX3AgKEVER0VfU1VDQyAoYmIxLCAwKS0+ZGVz dCkpDQo+IA0KPiBwbGVhc2UgZG8gdGhlIHNpbmdsZV9zdWNjL3ByZWQgY2hlY2tzIGJlbG93IHdo ZXJlIGFwcHJvcHJpYXRlLCBhbHNvIHdoYXQncw0KPiB0aGUgbGFzdCBjaGVjayBhYm91dD8gDQoN CkRvbmUuDQoNCj4gd2h5IGRvZXMgdGhlIG1lcmdlIGJsb2NrIG5lZWQgYSBzaW5nbGUgc3VjY2Vz c29yPw0KDQpJIHdhcyB1c2luZyBpdCB0byBmaXggYW4gSUNFLCBidXQgSSByZWFsaXplIHRoYXQn cyBub3QgdGhlIHJpZ2h0IGZpeC4gSSdtIG5vdyBjaGVja2luZw0KSWYgdGhlIEJCIGlzIGVtcHR5 IGluc3RlYWQsIGluIHdoaWNoIGNhc2UgaXQncyBqdXN0IGEgZmFsbCB0aHJvdWdoIGVkZ2Ugc28g ZG9uJ3QNCnRyZWF0IGl0IGFzIGEgZGlhbW9uZC4NCg0KPiANCj4gPiArCXsNCj4gPiArCSAgZ2lt cGxlX3N0bXRfaXRlcmF0b3IgaXQxID0gZ3NpX3N0YXJ0X25vbmRlYnVnX2FmdGVyX2xhYmVsc19i Yg0KPiAoYmIxKTsNCj4gPiArCSAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgaXQyID0gZ3NpX3N0YXJ0 X25vbmRlYnVnX2FmdGVyX2xhYmVsc19iYg0KPiAoYmIyKTsNCj4gPiArCSAgaWYgKGdzaV9vbmVf YmVmb3JlX2VuZF9wIChpdDEpICYmIGdzaV9vbmVfYmVmb3JlX2VuZF9wIChpdDIpKQ0KPiA+ICsJ ICAgIHsNCj4gPiArCSAgICAgIGdpbXBsZSAqc3RtdDEgPSBnc2lfc3RtdCAoaXQxKTsNCj4gPiAr CSAgICAgIGdpbXBsZSAqc3RtdDIgPSBnc2lfc3RtdCAoaXQyKTsNCj4gPiArCSAgICAgIGlmIChp c19naW1wbGVfYXNzaWduIChzdG10MSkgJiYgaXNfZ2ltcGxlX2Fzc2lnbiAoc3RtdDIpKQ0KPiA+ ICsJCXsNCj4gPiArCQkgIGVudW0gdHJlZV9jb2RlIGNvZGUxID0gZ2ltcGxlX2Fzc2lnbl9yaHNf Y29kZSAoc3RtdDEpOw0KPiA+ICsJCSAgZW51bSB0cmVlX2NvZGUgY29kZTIgPSBnaW1wbGVfYXNz aWduX3Joc19jb2RlIChzdG10Mik7DQo+ID4gKwkJICBkaWFtb25kX21pbm1heF9wDQo+ID4gKwkJ ICAgID0gKGNvZGUxID09IE1JTl9FWFBSIHx8IGNvZGUxID09IE1BWF9FWFBSKQ0KPiA+ICsJCSAg ICAgICYmIChjb2RlMiA9PSBNSU5fRVhQUiB8fCBjb2RlMiA9PSBNQVhfRVhQUik7DQo+ID4gKwkJ fQ0KPiA+ICsJICAgIH0NCj4gPiArCX0NCj4gDQo+IEknZCBnZW5lcmFsaXplIHRoaXMgdG8gZ2Vu ZXJhbCBkaWFtb25kIGRldGVjdGlvbiwgc2ltcGx5IGN1dHRpbmcgb2ZmDQo+ICpfcmVwbGFjZW1l bnQgd29ya2VycyB0aGF0IGRvIG5vdCBoYW5kbGUgZGlhbW9uZHMgYW5kIGRvIGFwcHJvcHJpYXRl DQo+IGNoZWNrcyBpbiBtaW5tYXhfcmVwbGFjZW1lbnQgb25seS4NCj4gDQoNCkRvbmUuDQoNCj4g PiAgICAgICAgZWxzZQ0KPiA+ICAJY29udGludWU7DQo+ID4NCj4gPiBAQCAtMzE2LDYgKzM0MCwx MyBAQCB0cmVlX3NzYV9waGlvcHRfd29ya2VyIChib29sIGRvX3N0b3JlX2VsaW0sDQo+IGJvb2wg ZG9faG9pc3RfbG9hZHMsIGJvb2wgZWFybHlfcCkNCj4gPiAgCSAgaWYgKCFjYW5kb3Jlc3QpDQo+ ID4gIAkgICAgY29udGludWU7DQo+ID4NCj4gPiArCSAgLyogQ2hlY2sgdGhhdCB3ZSdyZSBsb29r aW5nIGZvciBuZXN0ZWQgcGhpcy4gICovDQo+ID4gKwkgIGlmIChwaGlzID09IE5VTEwgJiYgZGlh bW9uZF9taW5tYXhfcCkNCj4gPiArCSAgICB7DQo+ID4gKwkgICAgICBwaGlzID0gcGhpX25vZGVz IChFREdFX1NVQ0MgKGJiMiwgMCktPmRlc3QpOw0KPiA+ICsJICAgICAgZTIgPSBFREdFX1NVQ0Mg KGJiMiwgMCk7DQo+ID4gKwkgICAgfQ0KPiA+ICsNCj4gDQo+IGluc3RlYWQNCj4gDQo+ICAgICAg ICAgICBiYXNpY19ibG9jayBtZXJnZSA9IGRpYW1vbmRfcCA/IEVER0VfU1VDQyAoYmIyLCAwKS0+ ZGVzdCA6IGJiMjsNCj4gICAgICAgICAgIGdpbXBsZV9zZXEgcGhpcyA9IHBoaV9ub2RlcyAobWVy Z2UpOw0KPiANCg0KRG9uZS4gDQoNCj4gDQo+ID4gIAkgIHBoaSA9IHNpbmdsZV9ub25fc2luZ2xl dG9uX3BoaV9mb3JfZWRnZXMgKHBoaXMsIGUxLCBlMik7DQo+ID4gIAkgIGlmICghcGhpKQ0KPiA+ ICAJICAgIGNvbnRpbnVlOw0KPiA+IEBAIC0zMjksNiArMzYwLDcgQEAgdHJlZV9zc2FfcGhpb3B0 X3dvcmtlciAoYm9vbCBkb19zdG9yZV9lbGltLCBib29sDQo+ID4gZG9faG9pc3RfbG9hZHMsIGJv b2wgZWFybHlfcCkNCj4gPg0KPiA+ICAJICBncGhpICpuZXdwaGk7DQo+ID4gIAkgIGlmIChzaW5n bGVfcHJlZF9wIChiYjEpDQo+ID4gKwkgICAgICAmJiAhZGlhbW9uZF9taW5tYXhfcA0KPiA+ICAJ ICAgICAgJiYgKG5ld3BoaSA9IGZhY3Rvcl9vdXRfY29uZGl0aW9uYWxfY29udmVyc2lvbiAoZTEs IGUyLCBwaGksDQo+ID4gIAkJCQkJCQkgICAgICBhcmcwLCBhcmcxLA0KPiA+ICAJCQkJCQkJICAg ICAgY29uZF9zdG10KSkpDQo+ID4gQEAgLTM0MywyMCArMzc1LDI1IEBAIHRyZWVfc3NhX3BoaW9w dF93b3JrZXIgKGJvb2wgZG9fc3RvcmVfZWxpbSwNCj4gYm9vbCBkb19ob2lzdF9sb2FkcywgYm9v bCBlYXJseV9wKQ0KPiA+ICAJICAgIH0NCj4gPg0KPiA+ICAJICAvKiBEbyB0aGUgcmVwbGFjZW1l bnQgb2YgY29uZGl0aW9uYWwgaWYgaXQgY2FuIGJlIGRvbmUuICAqLw0KPiA+IC0JICBpZiAoIWVh cmx5X3AgJiYgdHdvX3ZhbHVlX3JlcGxhY2VtZW50IChiYiwgYmIxLCBlMiwgcGhpLCBhcmcwLA0K PiBhcmcxKSkNCj4gPiArCSAgaWYgKCFlYXJseV9wDQo+ID4gKwkgICAgICAmJiAhZGlhbW9uZF9t aW5tYXhfcA0KPiA+ICsJICAgICAgJiYgdHdvX3ZhbHVlX3JlcGxhY2VtZW50IChiYiwgYmIxLCBl MiwgcGhpLCBhcmcwLCBhcmcxKSkNCj4gPiAgCSAgICBjZmdjaGFuZ2VkID0gdHJ1ZTsNCj4gPiAt CSAgZWxzZSBpZiAobWF0Y2hfc2ltcGxpZnlfcmVwbGFjZW1lbnQgKGJiLCBiYjEsIGUxLCBlMiwg cGhpLA0KPiA+IC0JCQkJCSAgICAgICBhcmcwLCBhcmcxLA0KPiA+IC0JCQkJCSAgICAgICBlYXJs eV9wKSkNCj4gPiArCSAgZWxzZSBpZiAoIWRpYW1vbmRfbWlubWF4X3ANCj4gPiArCQkgICAmJiBt YXRjaF9zaW1wbGlmeV9yZXBsYWNlbWVudCAoYmIsIGJiMSwgZTEsIGUyLCBwaGksDQo+ID4gKwkJ CQkJCSAgYXJnMCwgYXJnMSwgZWFybHlfcCkpDQo+ID4gIAkgICAgY2ZnY2hhbmdlZCA9IHRydWU7 DQo+ID4gIAkgIGVsc2UgaWYgKCFlYXJseV9wDQo+ID4gKwkJICAgJiYgIWRpYW1vbmRfbWlubWF4 X3ANCj4gPiAgCQkgICAmJiBzaW5nbGVfcHJlZF9wIChiYjEpDQo+ID4gIAkJICAgJiYgY29uZF9y ZW1vdmFsX2luX2J1aWx0aW5femVyb19wYXR0ZXJuIChiYiwgYmIxLCBlMSwNCj4gZTIsDQo+ID4g IAkJCQkJCQkgICAgcGhpLCBhcmcwLCBhcmcxKSkNCj4gPiAgCSAgICBjZmdjaGFuZ2VkID0gdHJ1 ZTsNCj4gPiAtCSAgZWxzZSBpZiAobWlubWF4X3JlcGxhY2VtZW50IChiYiwgYmIxLCBlMSwgZTIs IHBoaSwgYXJnMCwgYXJnMSkpDQo+ID4gKwkgIGVsc2UgaWYgKG1pbm1heF9yZXBsYWNlbWVudCAo YmIsIGJiMSwgYmIyLCBlMSwgZTIsIHBoaSwgYXJnMCwgYXJnMSwNCj4gPiArCQkJCSAgICAgICBk aWFtb25kX21pbm1heF9wKSkNCj4gPiAgCSAgICBjZmdjaGFuZ2VkID0gdHJ1ZTsNCj4gPiAgCSAg ZWxzZSBpZiAoc2luZ2xlX3ByZWRfcCAoYmIxKQ0KPiA+ICsJCSAgICYmICFkaWFtb25kX21pbm1h eF9wDQo+ID4gIAkJICAgJiYgc3BhY2VzaGlwX3JlcGxhY2VtZW50IChiYiwgYmIxLCBlMSwgZTIs IHBoaSwgYXJnMCwNCj4gYXJnMSkpDQo+ID4gIAkgICAgY2ZnY2hhbmdlZCA9IHRydWU7DQo+ID4g IAl9DQo+ID4gQEAgLTM4NSw3ICs0MjIsNyBAQCB0cmVlX3NzYV9waGlvcHRfd29ya2VyIChib29s IGRvX3N0b3JlX2VsaW0sIGJvb2wNCj4gPiBkb19ob2lzdF9sb2FkcywgYm9vbCBlYXJseV9wKQ0K PiA+DQo+ID4gIHN0YXRpYyB2b2lkDQo+ID4gIHJlcGxhY2VfcGhpX2VkZ2Vfd2l0aF92YXJpYWJs ZSAoYmFzaWNfYmxvY2sgY29uZF9ibG9jaywNCj4gPiAtCQkJCWVkZ2UgZSwgZ3BoaSAqcGhpLCB0 cmVlIG5ld190cmVlKQ0KPiA+ICsJCQkJZWRnZSBlLCBncGhpICpwaGksIHRyZWUgbmV3X3RyZWUs IGJvb2wNCj4gZGVsZXRlX2JiID0gdHJ1ZSkNCj4gPiAgew0KPiA+ICAgIGJhc2ljX2Jsb2NrIGJi ID0gZ2ltcGxlX2JiIChwaGkpOw0KPiA+ICAgIGdpbXBsZV9zdG10X2l0ZXJhdG9yIGdzaTsNCj4g PiBAQCAtNDI4LDcgKzQ2NSw3IEBAIHJlcGxhY2VfcGhpX2VkZ2Vfd2l0aF92YXJpYWJsZSAoYmFz aWNfYmxvY2sNCj4gY29uZF9ibG9jaywNCj4gPiAgICAgIGVkZ2VfdG9fcmVtb3ZlID0gRURHRV9T VUNDIChjb25kX2Jsb2NrLCAxKTsNCj4gPiAgICBlbHNlDQo+ID4gICAgICBlZGdlX3RvX3JlbW92 ZSA9IEVER0VfU1VDQyAoY29uZF9ibG9jaywgMCk7DQo+ID4gLSAgaWYgKEVER0VfQ09VTlQgKGVk Z2VfdG9fcmVtb3ZlLT5kZXN0LT5wcmVkcykgPT0gMSkNCj4gPiArICBpZiAoRURHRV9DT1VOVCAo ZWRnZV90b19yZW1vdmUtPmRlc3QtPnByZWRzKSA9PSAxICYmIGRlbGV0ZV9iYikNCj4gDQo+IHdo eSBkbyB5b3UgbmVlZCB0aGlzIGNoYW5nZT8NCg0KV2hlbiB0aGlzIGZ1bmN0aW9uIHJlcGxhY2Vz IHRoZSBlZGdlIGl0IGRvZXNuJ3Qgc2VlbSB0byB1cGRhdGUgdGhlIGRvbWluYXRvcnMuDQpTaW5j ZSBJdCdzIHJlcGxhY2luZyB0aGUgbWlkZGxlIEJCIHdlIHRoZW4gZW5kIHVwIHdpdGggYW4gZXJy b3INCg0KZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTE0LmM6MTc6MTogZXJy b3I6IGRvbWluYXRvciBvZiA1IHNob3VsZCBiZSA0LCBub3QgMg0KDQpkdXJpbmcgZWFybHkgdmVy aWZ5LiBTbyBpbnN0ZWFkLCBJIHJlcGxhY2UgdGhlIEJCIGJ1dCBkZWZlciBpdHMgZGVsZXRpb24g dW50aWwgY2xlYW51cCB3aGljaA0KcmVtb3ZlcyBpdCBhbmQgdXBkYXRlcyB0aGUgZG9taW5hdG9y cy4gDQoNCj4gDQo+IERpZCB5b3UgY2hlY2sgd2hldGhlciB0aGUgbmV3IGNhc2Ugd29ya3Mgd2hl biB0aGUgbWVyZ2UgYmxvY2sgaGFzIG1vcmUNCj4gdGhhbiB0d28gaW5jb21pbmcgZWRnZXM/DQo+ DQoNClllcywgYWRkZWQgYSBuZXcgdGVzdGNhc2UgZm9yIGl0Lg0KDQo+ID4gKyAgZWxzZSBpZiAo bWlkZGxlX2JiICE9IGFsdF9taWRkbGVfYmIgJiYgdGhyZWV3YXlfcCkNCj4gPiArICAgIHsNCj4g PiArICAgICAgLyogUmVjb2duaXplIHRoZSBmb2xsb3dpbmcgY2FzZToNCj4gPiArDQo+ID4gKwkg aWYgKHNtYWxsZXIgPCBsYXJnZXIpDQo+ID4gKwkgICBhID0gTUlOIChzbWFsbGVyLCBjKTsNCj4g PiArCSBlbHNlDQo+ID4gKwkgICBiID0gTUlOIChsYXJnZXIsIGMpOw0KPiA+ICsJIHggPSBQSEkg PGEsIGI+DQo+ID4gKw0KPiA+ICsJIFRoaXMgaXMgZXF1aXZhbGVudCB0bw0KPiA+ICsNCj4gPiAr CSBhID0gTUlOIChzbWFsbGVyLCBjKTsNCj4gPiArCSB4ID0gTUlOIChsYXJnZXIsIGEpOyAgKi8N Cj4gPiArDQo+ID4gKyAgICAgIGdpbXBsZSAqYXNzaWduID0gbGFzdF9hbmRfb25seV9zdG10ICht aWRkbGVfYmIpOw0KPiA+ICsgICAgICB0cmVlIGxocywgb3AwLCBvcDEsIGJvdW5kOw0KPiA+ICsg ICAgICB0cmVlIGFsdF9saHMsIGFsdF9vcDAsIGFsdF9vcDE7DQo+ID4gKyAgICAgIGJvb2wgaW52 ZXJ0ID0gZmFsc2U7DQo+ID4gKw0KPiA+ICsgICAgICBpZiAoIXNpbmdsZV9wcmVkX3AgKG1pZGRs ZV9iYikNCj4gPiArCSAgfHwgIXNpbmdsZV9wcmVkX3AgKGFsdF9taWRkbGVfYmIpKQ0KPiA+ICsJ cmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArICAgICAgaWYgKCFhc3NpZ24NCj4gPiArCSAgfHwg Z2ltcGxlX2NvZGUgKGFzc2lnbikgIT0gR0lNUExFX0FTU0lHTikNCj4gPiArCXJldHVybiBmYWxz ZTsNCj4gPiArDQo+ID4gKyAgICAgIGxocyA9IGdpbXBsZV9hc3NpZ25fbGhzIChhc3NpZ24pOw0K PiA+ICsgICAgICBhc3NfY29kZSA9IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKGFzc2lnbik7DQo+ ID4gKyAgICAgIGlmIChhc3NfY29kZSAhPSBNQVhfRVhQUiAmJiBhc3NfY29kZSAhPSBNSU5fRVhQ UikNCj4gPiArCXJldHVybiBmYWxzZTsNCj4gPiArDQo+ID4gKyAgICAgIG9wMCA9IGdpbXBsZV9h c3NpZ25fcmhzMSAoYXNzaWduKTsNCj4gPiArICAgICAgb3AxID0gZ2ltcGxlX2Fzc2lnbl9yaHMy IChhc3NpZ24pOw0KPiA+ICsNCj4gPiArICAgICAgYXNzaWduID0gbGFzdF9hbmRfb25seV9zdG10 IChhbHRfbWlkZGxlX2JiKTsNCj4gPiArICAgICAgaWYgKCFhc3NpZ24NCj4gPiArCSAgfHwgZ2lt cGxlX2NvZGUgKGFzc2lnbikgIT0gR0lNUExFX0FTU0lHTikNCj4gPiArCXJldHVybiBmYWxzZTsN Cj4gPiArDQo+ID4gKyAgICAgIGFsdF9saHMgPSBnaW1wbGVfYXNzaWduX2xocyAoYXNzaWduKTsN Cj4gPiArICAgICAgaWYgKGFzc19jb2RlICE9IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKGFzc2ln bikpDQo+ID4gKwlyZXR1cm4gZmFsc2U7DQo+ID4gKw0KPiA+ICsgICAgICBhbHRfb3AwID0gZ2lt cGxlX2Fzc2lnbl9yaHMxIChhc3NpZ24pOw0KPiA+ICsgICAgICBhbHRfb3AxID0gZ2ltcGxlX2Fz c2lnbl9yaHMyIChhc3NpZ24pOw0KPiA+ICsNCj4gPiArICAgICAgaWYgKCFvcGVyYW5kX2VxdWFs X2Zvcl9waGlfYXJnX3AgKGxocywgYXJnX3RydWUpDQo+ID4gKwkgfHwgIW9wZXJhbmRfZXF1YWxf Zm9yX3BoaV9hcmdfcCAoYWx0X2xocywgYXJnX2ZhbHNlKSkNCj4gPiArCXJldHVybiBmYWxzZTsN Cj4gPiArDQo+ID4gKyAgICAgIGlmICgob3BlcmFuZF9lcXVhbF9mb3JfcGhpX2FyZ19wIChvcDAs IHNtYWxsZXIpDQo+ID4gKwkJfHwgKGFsdF9zbWFsbGVyDQo+ID4gKwkJICAgICYmIG9wZXJhbmRf ZXF1YWxfZm9yX3BoaV9hcmdfcCAob3AwLCBhbHRfc21hbGxlcikpKQ0KPiA+ICsJICAgICAgICYm IChvcGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJnX3AgKGFsdF9vcDAsIGxhcmdlcikNCj4gPiArCQkg ICB8fCAoYWx0X2xhcmdlcg0KPiA+ICsJCSAgICAgICAmJiBvcGVyYW5kX2VxdWFsX2Zvcl9waGlf YXJnX3AgKGFsdF9vcDAsIGFsdF9sYXJnZXIpKSkpDQo+ID4gKwl7DQo+ID4gKwkgIC8qIFdlIGdv dCBoZXJlIGlmIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSwgaS5lLiwgU01BTExFUiA8IExBUkdFUi4g ICovDQo+ID4gKwkgIGlmICghb3BlcmFuZF9lcXVhbF9mb3JfcGhpX2FyZ19wIChvcDEsIGFsdF9v cDEpKQ0KPiA+ICsJICAgIHJldHVybiBmYWxzZTsNCj4gPiArDQo+ID4gKwkgIGlmICgoYXJnMCA9 IHN0cmlwX2JpdF9ub3QgKG9wMCkpICE9IE5VTEwNCj4gPiArCSAgICAgICYmIChhcmcxID0gc3Ry aXBfYml0X25vdCAoYWx0X29wMCkpICE9IE5VTEwNCj4gPiArCSAgICAgICYmIChib3VuZCA9IHN0 cmlwX2JpdF9ub3QgKG9wMSkpICE9IE5VTEwpDQo+ID4gKwkgICAgew0KPiA+ICsJICAgICAgbWlu bWF4ID0gTUFYX0VYUFI7DQo+ID4gKwkgICAgICBhc3NfY29kZSA9IGludmVydF9taW5tYXhfY29k ZSAoYXNzX2NvZGUpOw0KPiA+ICsJICAgICAgaW52ZXJ0ID0gdHJ1ZTsNCj4gPiArCSAgICB9DQo+ ID4gKwkgIGVsc2UNCj4gPiArCSAgICB7DQo+ID4gKwkgICAgICBib3VuZCA9IG9wMTsNCj4gPiAr CSAgICAgIG1pbm1heCA9IE1JTl9FWFBSOw0KPiA+ICsJICAgICAgYXJnMCA9IG9wMDsNCj4gPiAr CSAgICAgIGFyZzEgPSBhbHRfb3AwOw0KPiA+ICsJICAgICB9DQo+ID4gKwl9DQo+ID4gKyAgICAg IGVsc2UgaWYgKChvcGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJnX3AgKG9wMCwgbGFyZ2VyKQ0KPiA+ ICsJCXx8IChhbHRfbGFyZ2VyDQo+ID4gKwkJICAgICYmIG9wZXJhbmRfZXF1YWxfZm9yX3BoaV9h cmdfcCAob3AwLCBhbHRfbGFyZ2VyKSkpDQo+ID4gKwkgICAgICAgJiYgKG9wZXJhbmRfZXF1YWxf Zm9yX3BoaV9hcmdfcCAoYWx0X29wMCwgc21hbGxlcikNCj4gPiArCQkgICB8fCAoYWx0X3NtYWxs ZXINCj4gPiArCQkgICAgICAgJiYgb3BlcmFuZF9lcXVhbF9mb3JfcGhpX2FyZ19wIChhbHRfb3Aw LA0KPiBhbHRfc21hbGxlcikpKSkNCj4gPiArCXsNCj4gPiArCSAgLyogV2UgZ290IGhlcmUgaWYg dGhlIGNvbmRpdGlvbiBpcyB0cnVlLCBpLmUuLCBTTUFMTEVSID4gTEFSR0VSLiAgKi8NCj4gPiAr CSAgaWYgKCFvcGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJnX3AgKG9wMSwgYWx0X29wMSkpDQo+ID4g KwkgICAgcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArCSAgaWYgKChhcmcwID0gc3RyaXBfYml0 X25vdCAob3AwKSkgIT0gTlVMTA0KPiA+ICsJICAgICAgJiYgKGFyZzEgPSBzdHJpcF9iaXRfbm90 IChhbHRfb3AwKSkgIT0gTlVMTA0KPiA+ICsJICAgICAgJiYgKGJvdW5kID0gc3RyaXBfYml0X25v dCAob3AxKSkgIT0gTlVMTCkNCj4gPiArCSAgICB7DQo+ID4gKwkgICAgICBtaW5tYXggPSBNSU5f RVhQUjsNCj4gPiArCSAgICAgIGFzc19jb2RlID0gaW52ZXJ0X21pbm1heF9jb2RlIChhc3NfY29k ZSk7DQo+ID4gKwkgICAgICBpbnZlcnQgPSB0cnVlOw0KPiA+ICsJICAgIH0NCj4gPiArCSAgZWxz ZQ0KPiA+ICsJICAgIHsNCj4gPiArCSAgICAgIGJvdW5kID0gb3AxOw0KPiA+ICsJICAgICAgbWlu bWF4ID0gTUFYX0VYUFI7DQo+ID4gKwkgICAgICBhcmcwID0gb3AwOw0KPiA+ICsJICAgICAgYXJn MSA9IGFsdF9vcDA7DQo+ID4gKwkgICAgIH0NCj4gPiArCX0NCj4gPiArICAgICAgZWxzZQ0KPiA+ ICsJcmV0dXJuIGZhbHNlOw0KPiANCj4gRGlkIHlvdSBjaGVjayB5b3UgaGF2ZSBjb3ZlcmFnZSBm b3IgYWxsIGNhc2VzIGFib3ZlIGluIHlvdXIgdGVzdGNhc2VzPw0KDQpJJ3ZlIGFkZGVkIHNvbWUg bW9yZSwgc2hvdWxkIG5vdyBoYXZlIGZ1bGwgY292ZXJhZ2UuDQoNCj4gDQo+ID4gKyAgICAgIC8q IFJlc2V0IGFueSByYW5nZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBiYXNpYyBibG9jay4gICovDQo+ ID4gKyAgICAgIHJlc2V0X2Zsb3dfc2Vuc2l0aXZlX2luZm9faW5fYmIgKGNvbmRfYmIpOw0KPiAN Cj4gSHVoLiAgWW91IG5lZWQgdG8gcmVzZXQgZmxvdy1zZW5zaXRpdmUgaW5mbyBvZiB0aGUgbWlk ZGxlLWJiIHN0bXQgdGhhdA0KPiBwcmV2YWlscyBvbmx5Li4uDQo+IA0KPiA+ICsgICAgICAvKiBF bWl0IHRoZSBzdGF0ZW1lbnQgdG8gY29tcHV0ZSBtaW4vbWF4LiAgKi8NCj4gPiArICAgICAgZ2lt cGxlX3NlcSBzdG10cyA9IE5VTEw7DQo+ID4gKyAgICAgIHRyZWUgcGhpX3Jlc3VsdCA9IFBISV9S RVNVTFQgKHBoaSk7DQo+ID4gKyAgICAgIHJlc3VsdCA9IGdpbXBsZV9idWlsZCAoJnN0bXRzLCBt aW5tYXgsIFRSRUVfVFlQRSAocGhpX3Jlc3VsdCksIGFyZzAsDQo+IGJvdW5kKTsNCj4gPiArICAg ICAgcmVzdWx0ID0gZ2ltcGxlX2J1aWxkICgmc3RtdHMsIGFzc19jb2RlLCBUUkVFX1RZUEUNCj4g PiArIChwaGlfcmVzdWx0KSwgcmVzdWx0LCBhcmcxKTsNCj4gDQo+IC4uLiBidXQgeW91IGFyZSBy ZS1idWlsZGluZyBib3RoIGhlcmUuICBBbmQgYWxzbyB5b3UgZHJvcCBsb2NhdGlvbnMsIHRoZQ0K PiBwcmVzZXJ2ZWQgbWluL21heCBzaG91bGQga2VlcCB0aGUgb2xkLCB0aGUgbmV3IHNob3VsZCBn ZXQgdGhlIGxvY2F0aW9uIG9mDQo+IC4uLiBobW0sIHRoZSBjb25kaXRpb24gcG9zc2libHk/DQoN CkRvbmUsIGFsc28gYWRkZWQgYSB0ZXN0Y2FzZSB3aGljaCBjaGVja3MgdGhhdCBpdCBzdGlsbCB3 b3JrcyB3aGVuIC1nLg0KDQpCb290c3RyYXBwZWQgUmVndGVzdGVkIG9uIGFhcmNoNjQtbm9uZS1s aW51eC1nbnUgYW5kIG5vIGlzc3Vlcy4NCg0KT2sgZm9yIG1hc3Rlcj8NCg0KVGhhbmtzLA0KVGFt YXINCg0KZ2NjL0NoYW5nZUxvZzoNCg0KCSogdHJlZS1zc2EtcGhpb3B0LmNjIChtaW5tYXhfcmVw bGFjZW1lbnQpOiBPcHRpb25hbGx5IHNlYXJjaCBmb3IgdGhlIHBoaQ0KCXNlcXVlbmNlIG9mIGEg dGhyZWUtd2F5IGNvbmRpdGlvbmFsLg0KCShyZXBsYWNlX3BoaV9lZGdlX3dpdGhfdmFyaWFibGUp OiBTdXBwb3J0IGRlZmVycmluZyBvZiBCQiByZW1vdmFsLg0KCSh0cmVlX3NzYV9waGlvcHRfd29y a2VyKTogRGV0ZWN0IGRpYW1vbmQgcGhpIHN0cnVjdHVyZSBmb3IgdGhyZWUtd2F5DQoJbWluL21h eC4NCgkoc3RyaXBfYml0X25vdCwgaW52ZXJ0X21pbm1heF9jb2RlKTogTmV3Lg0KDQpnY2MvdGVz dHN1aXRlL0NoYW5nZUxvZzoNCg0KCSogZ2NjLmRnL3RyZWUtc3NhL3NwbGl0LXBhdGgtMS5jOiBE aXNhYmxlIHBoaS1vcHRzIHNvIHdlIGRvbid0IG9wdGltaXplDQoJY29kZSBhd2F5Lg0KCSogZ2Nj LmRnL3RyZWUtc3NhL21pbm1heC0xMC5jOiBOZXcgdGVzdC4NCgkqIGdjYy5kZy90cmVlLXNzYS9t aW5tYXgtMTEuYzogTmV3IHRlc3QuDQoJKiBnY2MuZGcvdHJlZS1zc2EvbWlubWF4LTEyLmM6IE5l dyB0ZXN0Lg0KCSogZ2NjLmRnL3RyZWUtc3NhL21pbm1heC0xMy5jOiBOZXcgdGVzdC4NCgkqIGdj Yy5kZy90cmVlLXNzYS9taW5tYXgtMTQuYzogTmV3IHRlc3QuDQoJKiBnY2MuZGcvdHJlZS1zc2Ev bWlubWF4LTE1LmM6IE5ldyB0ZXN0Lg0KCSogZ2NjLmRnL3RyZWUtc3NhL21pbm1heC0xNi5jOiBO ZXcgdGVzdC4NCgkqIGdjYy5kZy90cmVlLXNzYS9taW5tYXgtMy5jOiBOZXcgdGVzdC4NCgkqIGdj Yy5kZy90cmVlLXNzYS9taW5tYXgtNC5jOiBOZXcgdGVzdC4NCgkqIGdjYy5kZy90cmVlLXNzYS9t aW5tYXgtNS5jOiBOZXcgdGVzdC4NCgkqIGdjYy5kZy90cmVlLXNzYS9taW5tYXgtNi5jOiBOZXcg dGVzdC4NCgkqIGdjYy5kZy90cmVlLXNzYS9taW5tYXgtNy5jOiBOZXcgdGVzdC4NCgkqIGdjYy5k Zy90cmVlLXNzYS9taW5tYXgtOC5jOiBOZXcgdGVzdC4NCgkqIGdjYy5kZy90cmVlLXNzYS9taW5t YXgtOS5jOiBOZXcgdGVzdC4NCg0KLS0tIGlubGluZSBjb3B5IG9mIHBhdGNoIC0tLQ0KDQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTEwLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtMTAuYw0KbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4OTk1 MzY4NDQxNmE5ZDI2MzA4NGRlYjU4ZjZjZGU3MDk0ZGQ1MTcNCi0tLSAvZGV2L251bGwNCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC0xMC5jDQpAQCAtMCwwICsxLDIw IEBADQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1mZHVt cC10cmVlLW9wdGltaXplZCIgfSAqLw0KKw0KKyNpbmNsdWRlIDxzdGRpbnQuaD4NCisNCit1aW50 OF90IHRocmVlX21heCAodWludDhfdCB4YywgdWludDhfdCB4bSwgdWludDhfdCB4eSkgew0KKyAg ICB1aW50OF90CSB4azsNCisgICAgeGM9fnhjOw0KKyAgICB4bT1+eG07DQorICAgIHh5PX54eTsN CisgICAgaWYgKHhjID4geG0pIHsNCisgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4YyA+IHh5ID8g eGMgOiB4eSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICB4ayA9ICh1aW50OF90KSAoeG0gPiB4 eSA/IHhtIDogeHkpOw0KKyAgICB9DQorICAgIHJldHVybiB4azsNCit9DQorDQorLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNSU5fRVhQUiIgMiAib3B0aW1pemVkIiB9IH0g Ki8NCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIj0gfiIgMSAib3B0aW1p emVkIiB9IH0gKi8NCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9t aW5tYXgtMTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC0xMS5jDQpu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uMWMyZWYwMWI1ZDFlNjM5ZmJmOTViYjVjYTQ3M2I2M2NjOThlOWRmMQ0KLS0t IC9kZXYvbnVsbA0KKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTEx LmMNCkBAIC0wLDAgKzEsMjEgQEANCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KKy8qIHsgZGct b3B0aW9ucyAiLU8gLWZkdW1wLXRyZWUtb3B0aW1pemVkIiB9ICovDQorDQorI2luY2x1ZGUgPHN0 ZGludC5oPg0KKw0KK3VpbnQ4X3QgdGhyZWVfbWlubWF4MSAodWludDhfdCB4YywgdWludDhfdCB4 bSwgdWludDhfdCB4eSkgew0KKwl1aW50OF90CSB4azsNCisgICAgeGM9fnhjOw0KKyAgICB4bT1+ eG07DQorICAgIHh5PX54eTsNCisgICAgaWYgKHhjID4geG0pIHsNCisgICAgICAgIHhrID0gKHVp bnQ4X3QpICh4YyA8IHh5ID8geGMgOiB4eSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICB4ayA9 ICh1aW50OF90KSAoeG0gPCB4eSA/IHhtIDogeHkpOw0KKyAgICB9DQorICAgIHJldHVybiB4azsN Cit9DQorDQorLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNSU5fRVhQUiIg MSAib3B0aW1pemVkIiB9IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGlt ZXMgIk1BWF9FWFBSIiAxICJvcHRpbWl6ZWQiIH0gfSAqLw0KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAiPSB+IiAxICJvcHRpbWl6ZWQiIH0gfSAqLw0KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC0xMi5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTEyLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRl eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDBjMDdkOWI1N2Rk Njg5YmNiODk2NTM5Mzc3MjdhYjQ0MWU3ZjJiDQotLS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtMTIuYw0KQEAgLTAsMCArMSwyMCBAQA0KKy8q IHsgZGctZG8gY29tcGlsZSB9ICovDQorLyogeyBkZy1vcHRpb25zICItTyAtZmR1bXAtdHJlZS1w aGlvcHQiIH0gKi8NCisNCisjaW5jbHVkZSA8c3RkaW50Lmg+DQorDQordWludDhfdCB0aHJlZV9t aW5tYXgzICh1aW50OF90IHhjLCB1aW50OF90IHhtLCB1aW50OF90IHh5KSB7DQorICAgICAgICB1 aW50OF90ICB4azsNCisgICAgeGM9fnhjOw0KKyAgICB4bT1+eG07DQorICAgIHh5PX54eTsNCisg ICAgaWYgKHhjID4geG0pIHsNCisgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4eSA8IHhjID8geGMg OiB4eSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICB4ayA9ICh1aW50OF90KSAoeG0gPCB4eSA/ IHhtIDogeHkpOw0KKyAgICB9DQorICAgIHJldHVybiB4azsNCit9DQorDQorLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNSU5fRVhQUiIgMSAicGhpb3B0MSIgfSB9ICovDQor LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNQVhfRVhQUiIgMSAicGhpb3B0 MSIgfSB9ICovDQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlu bWF4LTEzLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtMTMuYw0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAuLmMwZDBmMjdjODAyN2FlODc2NTQ1MzJkMWI5MTljZmVjY2Y0NDEzZTANCi0tLSAv ZGV2L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC0xMy5j DQpAQCAtMCwwICsxLDE5IEBADQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCisvKiB7IGRnLW9w dGlvbnMgIi1PIC1mZHVtcC10cmVlLXBoaW9wdCIgfSAqLw0KKw0KKyNpbmNsdWRlIDxzdGRpbnQu aD4NCisNCit1aW50OF90IHRocmVlX21pbm1heDIgKHVpbnQ4X3QgeGMsIHVpbnQ4X3QgeG0sIHVp bnQ4X3QgeHkpIHsNCisJdWludDhfdAkgeGs7DQorICAgIHhjPX54YzsNCisgICAgeG09fnhtOw0K KyAgICB4eT1+eHk7DQorICAgIGlmICh4YyA+IHhtKSB7DQorICAgICAgICB4ayA9ICh1aW50OF90 KSAoeGMgPiB4eSA/IHhjIDogeHkpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgeGsgPSAodWlu dDhfdCkgKHhtIDwgeHkgPyB4bSA6IHh5KTsNCisgICAgfQ0KKyAgICByZXR1cm4geGs7DQorfQ0K Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiTUlOX0VYUFIiIDEgInBoaW9w dDEiIH0gfSAqLw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiTUFYX0VY UFIiIDEgInBoaW9wdDEiIH0gfSAqLw0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3RyZWUtc3NhL21pbm1heC0xNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlu bWF4LTE0LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzBjYWRiZjdlMzExOTUyN2NiMjAwN2QwMWZlNGM3ZGQ3 NzJjMDY5DQotLS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNz YS9taW5tYXgtMTQuYw0KQEAgLTAsMCArMSwyMSBAQA0KKy8qIHsgZGctZG8gY29tcGlsZSB9ICov DQorLyogeyBkZy1vcHRpb25zICItTyAtZmR1bXAtdHJlZS1vcHRpbWl6ZWQiIH0gKi8NCisNCisj aW5jbHVkZSA8c3RkaW50Lmg+DQorDQordWludDhfdCB0aHJlZV9taW5tYXgxMSAodWludDhfdCB4 YywgdWludDhfdCB4bSwgdWludDhfdCB4eSkgew0KKyAgICAgICAgdWludDhfdCAgeGs7DQorICAg IHhjPX54YzsNCisgICAgeG09fnhtOw0KKyAgICB4eT1+eHk7DQorICAgIGlmICh4YyA8IHhtKSB7 DQorICAgICAgICB4ayA9ICh1aW50OF90KSAoeGMgPiB4eSA/IHhjIDogeHkpOw0KKyAgICB9IGVs c2Ugew0KKyAgICAgICAgeGsgPSAodWludDhfdCkgKHhtID4geHkgPyB4bSA6IHh5KTsNCisgICAg fQ0KKyAgICByZXR1cm4geGs7DQorfQ0KKw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cC10aW1lcyAiTUlOX0VYUFIiIDEgIm9wdGltaXplZCIgfSB9ICovDQorLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNQVhfRVhQUiIgMSAib3B0aW1pemVkIiB9IH0gKi8NCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIj0gfiIgMSAib3B0aW1pemVkIiB9 IH0gKi8NCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgt MTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC0xNS5jDQpuZXcgZmls ZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uMWQ5N2ExNjU2NGYwNjliNDM0OGZmMzI1YzRmZDcxM2EyMjRmODM4YQ0KLS0tIC9kZXYv bnVsbA0KKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTE1LmMNCkBA IC0wLDAgKzEsMjEgQEANCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KKy8qIHsgZGctb3B0aW9u cyAiLU8gLWZkdW1wLXRyZWUtcGhpb3B0IiB9ICovDQorDQorI2luY2x1ZGUgPHN0ZGludC5oPg0K KyNpbmNsdWRlIDxzdGRib29sLmg+DQorDQordWludDhfdCB0aHJlZV9taW4gKHVpbnQ4X3QgeGMs IHVpbnQ4X3QgeG0sIHVpbnQ4X3QgeHksIGJvb2wgbSkgew0KKyAgICB1aW50OF90ICB4azsNCisg ICAgaWYgKHhjKQ0KKyAgICAgIHsNCisgICAgICAgIGlmICh4YyA8IHhtKSB7DQorICAgICAgICAg ICAgeGsgPSAodWludDhfdCkgKHhjIDwgeHkgPyB4YyA6IHh5KTsNCisgICAgICAgIH0gZWxzZSB7 DQorICAgICAgICAgICAgeGsgPSAodWludDhfdCkgKHhtIDwgeHkgPyB4bSA6IHh5KTsNCisgICAg ICAgIH0NCisgICAgICB9DQorDQorICAgIHJldHVybiB4azsNCit9DQorLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNSU5fRVhQUiIgMyAicGhpb3B0MSIgfSB9ICovDQorLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNQVhfRVhQUiIgMCAicGhpb3B0MSIg fSB9ICovDQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4 LTE2LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtMTYuYw0KbmV3IGZp bGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAuLjg5Mzc3YTJjYjM0MWJkYWZhNmJhMTQ1YzYxYzFmOTY2YWY1MzY4MzkNCi0tLSAvZGV2 L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC0xNi5jDQpA QCAtMCwwICsxLDE3IEBADQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCisvKiB7IGRnLW9wdGlv bnMgIi1PIC1mZHVtcC10cmVlLXBoaW9wdCAtZyIgfSAqLw0KKw0KKyNpbmNsdWRlIDxzdGRpbnQu aD4NCisNCit1aW50OF90IHRocmVlX21pbiAodWludDhfdCB4YywgdWludDhfdCB4bSwgdWludDhf dCB4eSkgew0KKwl1aW50OF90CSB4azsNCisgICAgaWYgKHhjIDwgeG0pIHsNCisgICAgICAgIHhr ID0gKHVpbnQ4X3QpICh4YyA8IHh5ID8geGMgOiB4eSk7DQorICAgIH0gZWxzZSB7DQorICAgICAg ICB4ayA9ICh1aW50OF90KSAoeG0gPCB4eSA/IHhtIDogeHkpOw0KKyAgICB9DQorICAgIHJldHVy biB4azsNCit9DQorDQorLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNSU5f RVhQUiIgMyAicGhpb3B0MSIgfSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICJNQVhfRVhQUiIgMCAicGhpb3B0MSIgfSB9ICovDQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3RyZWUtc3NhL21pbm1heC0zLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTNiMmU5NDZlODE3MDFlM2I3NWY1 ODBlNmE4NDM2OTVhMDU3ODZlDQotLS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy90cmVlLXNzYS9taW5tYXgtMy5jDQpAQCAtMCwwICsxLDE3IEBADQorLyogeyBkZy1kbyBj b21waWxlIH0gKi8NCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1mZHVtcC10cmVlLXBoaW9wdCIgfSAq Lw0KKw0KKyNpbmNsdWRlIDxzdGRpbnQuaD4NCisNCit1aW50OF90IHRocmVlX21pbiAodWludDhf dCB4YywgdWludDhfdCB4bSwgdWludDhfdCB4eSkgew0KKwl1aW50OF90CSB4azsNCisgICAgaWYg KHhjIDwgeG0pIHsNCisgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4YyA8IHh5ID8geGMgOiB4eSk7 DQorICAgIH0gZWxzZSB7DQorICAgICAgICB4ayA9ICh1aW50OF90KSAoeG0gPCB4eSA/IHhtIDog eHkpOw0KKyAgICB9DQorICAgIHJldHVybiB4azsNCit9DQorDQorLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICJNSU5fRVhQUiIgMyAicGhpb3B0MSIgfSB9ICovDQorLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNQVhfRVhQUiIgMCAicGhpb3B0MSIgfSB9 ICovDQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTQu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC00LmMNCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li4wYjZkNjY3YmU4NjhjMjQwNWVhZWZkMTdjYjUyMmRhNDRiYWZhMGUyDQotLS0gL2Rldi9udWxs DQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtNC5jDQpAQCAtMCww ICsxLDE3IEBADQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCisvKiB7IGRnLW9wdGlvbnMgIi1P IC1mZHVtcC10cmVlLXBoaW9wdCIgfSAqLw0KKw0KKyNpbmNsdWRlIDxzdGRpbnQuaD4NCisNCit1 aW50OF90IHRocmVlX21heCAodWludDhfdCB4YywgdWludDhfdCB4bSwgdWludDhfdCB4eSkgew0K KyAgICB1aW50OF90CSB4azsNCisgICAgaWYgKHhjID4geG0pIHsNCisgICAgICAgIHhrID0gKHVp bnQ4X3QpICh4YyA+IHh5ID8geGMgOiB4eSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICB4ayA9 ICh1aW50OF90KSAoeG0gPiB4eSA/IHhtIDogeHkpOw0KKyAgICB9DQorICAgIHJldHVybiB4azsN Cit9DQorDQorLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNSU5fRVhQUiIg MCAicGhpb3B0MSIgfSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVz ICJNQVhfRVhQUiIgMyAicGhpb3B0MSIgfSB9ICovDQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUt c3NhL21pbm1heC01LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTA2MDFhM2NjNzVkMDlhOWU2ZTU0YTM1ZjVi OTk5MzA3NGY4NTEwDQotLS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90 cmVlLXNzYS9taW5tYXgtNS5jDQpAQCAtMCwwICsxLDE3IEBADQorLyogeyBkZy1kbyBjb21waWxl IH0gKi8NCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1mZHVtcC10cmVlLXBoaW9wdCIgfSAqLw0KKw0K KyNpbmNsdWRlIDxzdGRpbnQuaD4NCisNCit1aW50OF90IHRocmVlX21pbm1heDEgKHVpbnQ4X3Qg eGMsIHVpbnQ4X3QgeG0sIHVpbnQ4X3QgeHkpIHsNCisJdWludDhfdAkgeGs7DQorICAgIGlmICh4 YyA+IHhtKSB7DQorICAgICAgICB4ayA9ICh1aW50OF90KSAoeGMgPCB4eSA/IHhjIDogeHkpOw0K KyAgICB9IGVsc2Ugew0KKyAgICAgICAgeGsgPSAodWludDhfdCkgKHhtIDwgeHkgPyB4bSA6IHh5 KTsNCisgICAgfQ0KKyAgICByZXR1cm4geGs7DQorfQ0KKw0KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAiTUlOX0VYUFIiIDIgInBoaW9wdDEiIH0gfSAqLw0KKy8qIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiTUFYX0VYUFIiIDEgInBoaW9wdDEiIH0gfSAq Lw0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC02LmMg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtNi5jDQpuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u YTYyOGY2ZDk5MjIyOTU4Y2ZkOGM0MTBmMGU4NTYzOWUzYTQ5ZGQ0Yg0KLS0tIC9kZXYvbnVsbA0K KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTYuYw0KQEAgLTAsMCAr MSwxNyBAQA0KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQorLyogeyBkZy1vcHRpb25zICItTyAt ZmR1bXAtdHJlZS1waGlvcHQiIH0gKi8NCisNCisjaW5jbHVkZSA8c3RkaW50Lmg+DQorDQordWlu dDhfdCB0aHJlZV9taW5tYXgzICh1aW50OF90IHhjLCB1aW50OF90IHhtLCB1aW50OF90IHh5KSB7 DQorICAgICAgICB1aW50OF90ICB4azsNCisgICAgaWYgKHhjID4geG0pIHsNCisgICAgICAgIHhr ID0gKHVpbnQ4X3QpICh4eSA8IHhjID8geGMgOiB4eSk7DQorICAgIH0gZWxzZSB7DQorICAgICAg ICB4ayA9ICh1aW50OF90KSAoeG0gPCB4eSA/IHhtIDogeHkpOw0KKyAgICB9DQorICAgIHJldHVy biB4azsNCit9DQorDQorLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNSU5f RVhQUiIgMSAicGhpb3B0MSIgfSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICJNQVhfRVhQUiIgMSAicGhpb3B0MSIgfSB9ICovDQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3RyZWUtc3NhL21pbm1heC03LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjQyNDEyYzRhZGE0MzNiMmY1OWRm MGE4YmVmOWZhN2IxYzVlMTA0DQotLS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy90cmVlLXNzYS9taW5tYXgtNy5jDQpAQCAtMCwwICsxLDE2IEBADQorLyogeyBkZy1kbyBj b21waWxlIH0gKi8NCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1mZHVtcC10cmVlLXBoaW9wdCIgfSAq Lw0KKw0KKyNpbmNsdWRlIDxzdGRpbnQuaD4NCisNCit1aW50OF90IHRocmVlX21pbm1heDIgKHVp bnQ4X3QgeGMsIHVpbnQ4X3QgeG0sIHVpbnQ4X3QgeHkpIHsNCisJdWludDhfdAkgeGs7DQorICAg IGlmICh4YyA+IHhtKSB7DQorICAgICAgICB4ayA9ICh1aW50OF90KSAoeGMgPiB4eSA/IHhjIDog eHkpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgeGsgPSAodWludDhfdCkgKHhtIDwgeHkgPyB4 bSA6IHh5KTsNCisgICAgfQ0KKyAgICByZXR1cm4geGs7DQorfQ0KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcC10aW1lcyAiTUlOX0VYUFIiIDEgInBoaW9wdDEiIH0gfSAqLw0KKy8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiTUFYX0VYUFIiIDEgInBoaW9wdDEiIH0g fSAqLw0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC04 LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtOC5jDQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uOWNkMDUwZTkzMjM3NmJjNTBiZDZhZTYwY2I2NTRmY2FiMGJmZGQxYw0KLS0tIC9kZXYvbnVs bA0KKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTguYw0KQEAgLTAs MCArMSwxNyBAQA0KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQorLyogeyBkZy1vcHRpb25zICIt TyAtZmR1bXAtdHJlZS1waGlvcHQiIH0gKi8NCisNCisjaW5jbHVkZSA8c3RkaW50Lmg+DQorDQor dWludDhfdCB0aHJlZV9taW5tYXgxMSAodWludDhfdCB4YywgdWludDhfdCB4bSwgdWludDhfdCB4 eSkgew0KKyAgICAgICAgdWludDhfdCAgeGs7DQorICAgIGlmICh4YyA8IHhtKSB7DQorICAgICAg ICB4ayA9ICh1aW50OF90KSAoeGMgPiB4eSA/IHhjIDogeHkpOw0KKyAgICB9IGVsc2Ugew0KKyAg ICAgICAgeGsgPSAodWludDhfdCkgKHhtID4geHkgPyB4bSA6IHh5KTsNCisgICAgfQ0KKyAgICBy ZXR1cm4geGs7DQorfQ0KKw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAi TUlOX0VYUFIiIDEgInBoaW9wdDEiIH0gfSAqLw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAiTUFYX0VYUFIiIDIgInBoaW9wdDEiIH0gfSAqLw0KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC05LmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy90cmVlLXNzYS9taW5tYXgtOS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjRmNTgwMjcxYzNhYzM5NDU4 NjBiNTA2ZDRkYzdkMTc4YTgyNjA5Mw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTkuYw0KQEAgLTAsMCArMSwyMCBAQA0KKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovDQorLyogeyBkZy1vcHRpb25zICItTyAtZmR1bXAtdHJlZS1vcHRpbWl6 ZWQiIH0gKi8NCisNCisjaW5jbHVkZSA8c3RkaW50Lmg+DQorDQordWludDhfdCB0aHJlZV9taW4g KHVpbnQ4X3QgeGMsIHVpbnQ4X3QgeG0sIHVpbnQ4X3QgeHkpIHsNCisJdWludDhfdAkgeGs7DQor ICAgIHhjPX54YzsNCisgICAgeG09fnhtOw0KKyAgICB4eT1+eHk7DQorICAgIGlmICh4YyA8IHht KSB7DQorICAgICAgICB4ayA9ICh1aW50OF90KSAoeGMgPCB4eSA/IHhjIDogeHkpOw0KKyAgICB9 IGVsc2Ugew0KKyAgICAgICAgeGsgPSAodWludDhfdCkgKHhtIDwgeHkgPyB4bSA6IHh5KTsNCisg ICAgfQ0KKyAgICByZXR1cm4geGs7DQorfQ0KKw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAiPSB+IiAxICJvcHRpbWl6ZWQiIH0gfSAqLw0KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcC10aW1lcyAiTUFYX0VYUFIiIDIgIm9wdGltaXplZCIgfSB9ICovDQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Evc3BsaXQtcGF0aC0xLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9zcGxpdC1wYXRoLTEuYw0KaW5kZXggOGIyM2Vm NGM3YTM0ODRjZGMxNjQ3ZWU2ZDFiMTUwZjE1Njg1YmVmZi4uOTAyZGRlNDRhNTBlMTcxYjRmMzRi YTcyNDdkNzVhMzJkMmM4NjBlZCAxMDA2NDQNCi0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3Ry ZWUtc3NhL3NwbGl0LXBhdGgtMS5jDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNz YS9zcGxpdC1wYXRoLTEuYw0KQEAgLTEsNSArMSw1IEBADQogLyogeyBkZy1kbyBydW4gfSAqLw0K LS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mc3BsaXQtcGF0aHMgLWZkdW1wLXRyZWUtc3BsaXQtcGF0 aHMtZGV0YWlscyAtLXBhcmFtIG1heC1qdW1wLXRocmVhZC1kdXBsaWNhdGlvbi1zdG10cz0yMCIg fSAqLw0KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mc3BsaXQtcGF0aHMgLWZkdW1wLXRyZWUtc3Bs aXQtcGF0aHMtZGV0YWlscyAtLXBhcmFtIG1heC1qdW1wLXRocmVhZC1kdXBsaWNhdGlvbi1zdG10 cz0yMCAtZm5vLXNzYS1waGlvcHQiIH0gKi8NCiANCiAjaW5jbHVkZSA8c3RkaW8uaD4NCiAjaW5j bHVkZSA8c3RkbGliLmg+DQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLXBoaW9wdC5jYyBiL2dj Yy90cmVlLXNzYS1waGlvcHQuY2MNCmluZGV4IGU2MWQ5NzM2OTM3NTczZDc3M2FjZGYzZTQzYTdj NzYwNzRiZmIyYzcuLmRmNTQzYjIyY2Q3MjA1MzhjMTRiY2VhNzJmYzc4YThkZWM5YmYxMmIgMTAw NjQ0DQotLS0gYS9nY2MvdHJlZS1zc2EtcGhpb3B0LmNjDQorKysgYi9nY2MvdHJlZS1zc2EtcGhp b3B0LmNjDQpAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgZ3BoaSAqZmFjdG9yX291dF9jb25kaXRp b25hbF9jb252ZXJzaW9uIChlZGdlLCBlZGdlLCBncGhpICosIHRyZWUsIHRyZWUsDQogCQkJCQkJ Z2ltcGxlICopOw0KIHN0YXRpYyBpbnQgdmFsdWVfcmVwbGFjZW1lbnQgKGJhc2ljX2Jsb2NrLCBi YXNpY19ibG9jaywNCiAJCQkgICAgICBlZGdlLCBlZGdlLCBncGhpICosIHRyZWUsIHRyZWUpOw0K LXN0YXRpYyBib29sIG1pbm1heF9yZXBsYWNlbWVudCAoYmFzaWNfYmxvY2ssIGJhc2ljX2Jsb2Nr LA0KLQkJCQllZGdlLCBlZGdlLCBncGhpICosIHRyZWUsIHRyZWUpOw0KK3N0YXRpYyBib29sIG1p bm1heF9yZXBsYWNlbWVudCAoYmFzaWNfYmxvY2ssIGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywN CisJCQkJZWRnZSwgZWRnZSwgZ3BoaSAqLCB0cmVlLCB0cmVlLCBib29sKTsNCiBzdGF0aWMgYm9v bCBzcGFjZXNoaXBfcmVwbGFjZW1lbnQgKGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywNCiAJCQkJ ICAgZWRnZSwgZWRnZSwgZ3BoaSAqLCB0cmVlLCB0cmVlKTsNCiBzdGF0aWMgYm9vbCBjb25kX3Jl bW92YWxfaW5fYnVpbHRpbl96ZXJvX3BhdHRlcm4gKGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywN CkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBib29sIGNvbmRfc3RvcmVfcmVwbGFjZW1lbnQgKGJh c2ljX2Jsb2NrLCBiYXNpY19ibG9jaywgZWRnZSwgZWRnZSwNCiAJCQkJICAgIGhhc2hfc2V0PHRy ZWU+ICopOw0KIHN0YXRpYyBib29sIGNvbmRfaWZfZWxzZV9zdG9yZV9yZXBsYWNlbWVudCAoYmFz aWNfYmxvY2ssIGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jayk7DQogc3RhdGljIGhhc2hfc2V0PHRy ZWU+ICogZ2V0X25vbl90cmFwcGluZyAoKTsNCi1zdGF0aWMgdm9pZCByZXBsYWNlX3BoaV9lZGdl X3dpdGhfdmFyaWFibGUgKGJhc2ljX2Jsb2NrLCBlZGdlLCBncGhpICosIHRyZWUpOw0KK3N0YXRp YyB2b2lkIHJlcGxhY2VfcGhpX2VkZ2Vfd2l0aF92YXJpYWJsZSAoYmFzaWNfYmxvY2ssIGVkZ2Us IGdwaGkgKiwgdHJlZSwgYm9vbCk7DQogc3RhdGljIHZvaWQgaG9pc3RfYWRqYWNlbnRfbG9hZHMg KGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywNCiAJCQkJICBiYXNpY19ibG9jaywgYmFzaWNfYmxv Y2spOw0KIHN0YXRpYyBib29sIGdhdGVfaG9pc3RfbG9hZHMgKHZvaWQpOw0KQEAgLTIwMCw2ICsy MDAsNyBAQCB0cmVlX3NzYV9waGlvcHRfd29ya2VyIChib29sIGRvX3N0b3JlX2VsaW0sIGJvb2wg ZG9faG9pc3RfbG9hZHMsIGJvb2wgZWFybHlfcCkNCiAgICAgICBiYXNpY19ibG9jayBiYjEsIGJi MjsNCiAgICAgICBlZGdlIGUxLCBlMjsNCiAgICAgICB0cmVlIGFyZzAsIGFyZzE7DQorICAgICAg Ym9vbCBkaWFtb25kX3AgPSBmYWxzZTsNCiANCiAgICAgICBiYiA9IGJiX29yZGVyW2ldOw0KIA0K QEAgLTI2Niw2ICsyNjcsOSBAQCB0cmVlX3NzYV9waGlvcHRfd29ya2VyIChib29sIGRvX3N0b3Jl X2VsaW0sIGJvb2wgZG9faG9pc3RfbG9hZHMsIGJvb2wgZWFybHlfcCkNCiAJICAgIGhvaXN0X2Fk amFjZW50X2xvYWRzIChiYiwgYmIxLCBiYjIsIGJiMyk7DQogCSAgY29udGludWU7DQogCX0NCisg ICAgICBlbHNlIGlmIChFREdFX1NVQ0MgKGJiMSwgMCktPmRlc3QgPT0gRURHRV9TVUNDIChiYjIs IDApLT5kZXN0DQorCSAgICAgICAmJiAhZW1wdHlfYmxvY2tfcCAoYmIxKSkNCisJZGlhbW9uZF9w ID0gdHJ1ZTsNCiAgICAgICBlbHNlDQogCWNvbnRpbnVlOw0KIA0KQEAgLTI5NCwxMCArMjk4LDEz IEBAIHRyZWVfc3NhX3BoaW9wdF93b3JrZXIgKGJvb2wgZG9fc3RvcmVfZWxpbSwgYm9vbCBkb19o b2lzdF9sb2FkcywgYm9vbCBlYXJseV9wKQ0KIAl9DQogICAgICAgZWxzZQ0KIAl7DQotCSAgZ2lt cGxlX3NlcSBwaGlzID0gcGhpX25vZGVzIChiYjIpOw0KIAkgIGdpbXBsZV9zdG10X2l0ZXJhdG9y IGdzaTsNCiAJICBib29sIGNhbmRvcmVzdCA9IHRydWU7DQogDQorCSAgLyogQ2hlY2sgdGhhdCB3 ZSdyZSBsb29raW5nIGZvciBuZXN0ZWQgcGhpcy4gICovDQorCSAgYmFzaWNfYmxvY2sgbWVyZ2Ug PSBkaWFtb25kX3AgPyBFREdFX1NVQ0MgKGJiMiwgMCktPmRlc3QgOiBiYjI7DQorCSAgZ2ltcGxl X3NlcSBwaGlzID0gcGhpX25vZGVzIChtZXJnZSk7DQorDQogCSAgLyogVmFsdWUgcmVwbGFjZW1l bnQgY2FuIHdvcmsgd2l0aCBtb3JlIHRoYW4gb25lIFBISQ0KIAkgICAgIHNvIHRyeSB0aGF0IGZp cnN0LiAqLw0KIAkgIGlmICghZWFybHlfcCkNCkBAIC0zMTcsNiArMzI0LDcgQEAgdHJlZV9zc2Ff cGhpb3B0X3dvcmtlciAoYm9vbCBkb19zdG9yZV9lbGltLCBib29sIGRvX2hvaXN0X2xvYWRzLCBi b29sIGVhcmx5X3ApDQogCSAgaWYgKCFjYW5kb3Jlc3QpDQogCSAgICBjb250aW51ZTsNCiANCisJ ICBlMiA9IGRpYW1vbmRfcCA/IEVER0VfU1VDQyAoYmIyLCAwKSA6IGUyOw0KIAkgIHBoaSA9IHNp bmdsZV9ub25fc2luZ2xldG9uX3BoaV9mb3JfZWRnZXMgKHBoaXMsIGUxLCBlMik7DQogCSAgaWYg KCFwaGkpDQogCSAgICBjb250aW51ZTsNCkBAIC0zMzAsNiArMzM4LDcgQEAgdHJlZV9zc2FfcGhp b3B0X3dvcmtlciAoYm9vbCBkb19zdG9yZV9lbGltLCBib29sIGRvX2hvaXN0X2xvYWRzLCBib29s IGVhcmx5X3ApDQogDQogCSAgZ3BoaSAqbmV3cGhpOw0KIAkgIGlmIChzaW5nbGVfcHJlZF9wIChi YjEpDQorCSAgICAgICYmICFkaWFtb25kX3ANCiAJICAgICAgJiYgKG5ld3BoaSA9IGZhY3Rvcl9v dXRfY29uZGl0aW9uYWxfY29udmVyc2lvbiAoZTEsIGUyLCBwaGksDQogCQkJCQkJCSAgICAgIGFy ZzAsIGFyZzEsDQogCQkJCQkJCSAgICAgIGNvbmRfc3RtdCkpKQ0KQEAgLTM0NCwyMCArMzUzLDI1 IEBAIHRyZWVfc3NhX3BoaW9wdF93b3JrZXIgKGJvb2wgZG9fc3RvcmVfZWxpbSwgYm9vbCBkb19o b2lzdF9sb2FkcywgYm9vbCBlYXJseV9wKQ0KIAkgICAgfQ0KIA0KIAkgIC8qIERvIHRoZSByZXBs YWNlbWVudCBvZiBjb25kaXRpb25hbCBpZiBpdCBjYW4gYmUgZG9uZS4gICovDQotCSAgaWYgKCFl YXJseV9wICYmIHR3b192YWx1ZV9yZXBsYWNlbWVudCAoYmIsIGJiMSwgZTIsIHBoaSwgYXJnMCwg YXJnMSkpDQorCSAgaWYgKCFlYXJseV9wDQorCSAgICAgICYmICFkaWFtb25kX3ANCisJICAgICAg JiYgdHdvX3ZhbHVlX3JlcGxhY2VtZW50IChiYiwgYmIxLCBlMiwgcGhpLCBhcmcwLCBhcmcxKSkN CiAJICAgIGNmZ2NoYW5nZWQgPSB0cnVlOw0KLQkgIGVsc2UgaWYgKG1hdGNoX3NpbXBsaWZ5X3Jl cGxhY2VtZW50IChiYiwgYmIxLCBlMSwgZTIsIHBoaSwNCi0JCQkJCSAgICAgICBhcmcwLCBhcmcx LA0KLQkJCQkJICAgICAgIGVhcmx5X3ApKQ0KKwkgIGVsc2UgaWYgKCFkaWFtb25kX3ANCisJCSAg ICYmIG1hdGNoX3NpbXBsaWZ5X3JlcGxhY2VtZW50IChiYiwgYmIxLCBlMSwgZTIsIHBoaSwNCisJ CQkJCQkgIGFyZzAsIGFyZzEsIGVhcmx5X3ApKQ0KIAkgICAgY2ZnY2hhbmdlZCA9IHRydWU7DQog CSAgZWxzZSBpZiAoIWVhcmx5X3ANCisJCSAgICYmICFkaWFtb25kX3ANCiAJCSAgICYmIHNpbmds ZV9wcmVkX3AgKGJiMSkNCiAJCSAgICYmIGNvbmRfcmVtb3ZhbF9pbl9idWlsdGluX3plcm9fcGF0 dGVybiAoYmIsIGJiMSwgZTEsIGUyLA0KIAkJCQkJCQkgICAgcGhpLCBhcmcwLCBhcmcxKSkNCiAJ ICAgIGNmZ2NoYW5nZWQgPSB0cnVlOw0KLQkgIGVsc2UgaWYgKG1pbm1heF9yZXBsYWNlbWVudCAo YmIsIGJiMSwgZTEsIGUyLCBwaGksIGFyZzAsIGFyZzEpKQ0KKwkgIGVsc2UgaWYgKG1pbm1heF9y ZXBsYWNlbWVudCAoYmIsIGJiMSwgYmIyLCBlMSwgZTIsIHBoaSwgYXJnMCwgYXJnMSwNCisJCQkJ ICAgICAgIGRpYW1vbmRfcCkpDQogCSAgICBjZmdjaGFuZ2VkID0gdHJ1ZTsNCiAJICBlbHNlIGlm IChzaW5nbGVfcHJlZF9wIChiYjEpDQorCQkgICAmJiAhZGlhbW9uZF9wDQogCQkgICAmJiBzcGFj ZXNoaXBfcmVwbGFjZW1lbnQgKGJiLCBiYjEsIGUxLCBlMiwgcGhpLCBhcmcwLCBhcmcxKSkNCiAJ ICAgIGNmZ2NoYW5nZWQgPSB0cnVlOw0KIAl9DQpAQCAtMzg2LDcgKzQwMCw3IEBAIHRyZWVfc3Nh X3BoaW9wdF93b3JrZXIgKGJvb2wgZG9fc3RvcmVfZWxpbSwgYm9vbCBkb19ob2lzdF9sb2Fkcywg Ym9vbCBlYXJseV9wKQ0KIA0KIHN0YXRpYyB2b2lkDQogcmVwbGFjZV9waGlfZWRnZV93aXRoX3Zh cmlhYmxlIChiYXNpY19ibG9jayBjb25kX2Jsb2NrLA0KLQkJCQllZGdlIGUsIGdwaGkgKnBoaSwg dHJlZSBuZXdfdHJlZSkNCisJCQkJZWRnZSBlLCBncGhpICpwaGksIHRyZWUgbmV3X3RyZWUsIGJv b2wgZGVsZXRlX2JiID0gdHJ1ZSkNCiB7DQogICBiYXNpY19ibG9jayBiYiA9IGdpbXBsZV9iYiAo cGhpKTsNCiAgIGdpbXBsZV9zdG10X2l0ZXJhdG9yIGdzaTsNCkBAIC00MjcsNyArNDQxLDcgQEAg cmVwbGFjZV9waGlfZWRnZV93aXRoX3ZhcmlhYmxlIChiYXNpY19ibG9jayBjb25kX2Jsb2NrLA0K ICAgICBlZGdlX3RvX3JlbW92ZSA9IEVER0VfU1VDQyAoY29uZF9ibG9jaywgMSk7DQogICBlbHNl DQogICAgIGVkZ2VfdG9fcmVtb3ZlID0gRURHRV9TVUNDIChjb25kX2Jsb2NrLCAwKTsNCi0gIGlm IChFREdFX0NPVU5UIChlZGdlX3RvX3JlbW92ZS0+ZGVzdC0+cHJlZHMpID09IDEpDQorICBpZiAo RURHRV9DT1VOVCAoZWRnZV90b19yZW1vdmUtPmRlc3QtPnByZWRzKSA9PSAxICYmIGRlbGV0ZV9i YikNCiAgICAgew0KICAgICAgIGUtPmZsYWdzIHw9IEVER0VfRkFMTFRIUlU7DQogICAgICAgZS0+ ZmxhZ3MgJj0gfihFREdFX1RSVUVfVkFMVUUgfCBFREdFX0ZBTFNFX1ZBTFVFKTsNCkBAIC0xNzMz LDE1ICsxNzQ3LDUyIEBAIHZhbHVlX3JlcGxhY2VtZW50IChiYXNpY19ibG9jayBjb25kX2JiLCBi YXNpY19ibG9jayBtaWRkbGVfYmIsDQogICByZXR1cm4gMDsNCiB9DQogDQorLyogSWYgVkFSIGlz IGFuIFNTQV9OQU1FIHRoYXQgcG9pbnRzIHRvIGEgQklUX05PVF9FWFBSIHRoZW4gcmV0dXJuIHRo ZSBUUkVFIGZvcg0KKyAgIHRoZSB2YWx1ZSBiZWluZyBpbnZlcnRlZC4gICovDQorDQorc3RhdGlj IHRyZWUNCitzdHJpcF9iaXRfbm90ICh0cmVlIHZhcikNCit7DQorICBpZiAoVFJFRV9DT0RFICh2 YXIpICE9IFNTQV9OQU1FKQ0KKyAgICByZXR1cm4gTlVMTF9UUkVFOw0KKw0KKyAgZ2ltcGxlICph c3NpZ24gPSBTU0FfTkFNRV9ERUZfU1RNVCAodmFyKTsNCisgIGlmIChnaW1wbGVfY29kZSAoYXNz aWduKSAhPSBHSU1QTEVfQVNTSUdOKQ0KKyAgICByZXR1cm4gTlVMTF9UUkVFOw0KKw0KKyAgaWYg KGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKGFzc2lnbikgIT0gQklUX05PVF9FWFBSKQ0KKyAgICBy ZXR1cm4gTlVMTF9UUkVFOw0KKw0KKyAgcmV0dXJuIGdpbXBsZV9hc3NpZ25fcmhzMSAoYXNzaWdu KTsNCit9DQorDQorLyogSW52ZXJ0IGEgTUlOIHRvIGEgTUFYIG9yIGEgTUFYIHRvIGEgTUlOIGV4 cHJlc3Npb24gQ09ERS4gICovDQorDQorZW51bSB0cmVlX2NvZGUNCitpbnZlcnRfbWlubWF4X2Nv ZGUgKGVudW0gdHJlZV9jb2RlIGNvZGUpDQorew0KKyAgc3dpdGNoIChjb2RlKSB7DQorICBjYXNl IE1JTl9FWFBSOg0KKyAgICByZXR1cm4gTUFYX0VYUFI7DQorICBjYXNlIE1BWF9FWFBSOg0KKyAg ICByZXR1cm4gTUlOX0VYUFI7DQorICBkZWZhdWx0Og0KKyAgICBnY2NfdW5yZWFjaGFibGUgKCk7 DQorICB9DQorfQ0KKw0KIC8qICBUaGUgZnVuY3Rpb24gbWlubWF4X3JlcGxhY2VtZW50IGRvZXMg dGhlIG1haW4gd29yayBvZiBkb2luZyB0aGUgbWlubWF4DQogICAgIHJlcGxhY2VtZW50LiAgUmV0 dXJuIHRydWUgaWYgdGhlIHJlcGxhY2VtZW50IGlzIGRvbmUuICBPdGhlcndpc2UgcmV0dXJuDQog ICAgIGZhbHNlLg0KICAgICBCQiBpcyB0aGUgYmFzaWMgYmxvY2sgd2hlcmUgdGhlIHJlcGxhY2Vt ZW50IGlzIGdvaW5nIHRvIGJlIGRvbmUgb24uICBBUkcwDQotICAgIGlzIGFyZ3VtZW50IDAgZnJv bSB0aGUgUEhJLiAgTGlrZXdpc2UgZm9yIEFSRzEuICAqLw0KKyAgICBpcyBhcmd1bWVudCAwIGZy b20gdGhlIFBISS4gIExpa2V3aXNlIGZvciBBUkcxLg0KKw0KKyAgICBJZiBUSFJFRVdBWV9QIHRo ZW4gZXhwZWN0IHRoZSBCQiB0byBiZSBsYWlkIG91dCBpbiBkaWFtb25kIHNoYXBlIHdpdGggZWFj aA0KKyAgICBCQiBjb250YWluaW5nIG9ubHkgYSBNSU4gb3IgTUFYIGV4cHJlc3Npb24uICAqLw0K IA0KIHN0YXRpYyBib29sDQotbWlubWF4X3JlcGxhY2VtZW50IChiYXNpY19ibG9jayBjb25kX2Ji LCBiYXNpY19ibG9jayBtaWRkbGVfYmIsDQotCQkgICAgZWRnZSBlMCwgZWRnZSBlMSwgZ3BoaSAq cGhpLCB0cmVlIGFyZzAsIHRyZWUgYXJnMSkNCittaW5tYXhfcmVwbGFjZW1lbnQgKGJhc2ljX2Js b2NrIGNvbmRfYmIsIGJhc2ljX2Jsb2NrIG1pZGRsZV9iYiwgYmFzaWNfYmxvY2sgYWx0X21pZGRs ZV9iYiwNCisJCSAgICBlZGdlIGUwLCBlZGdlIGUxLCBncGhpICpwaGksIHRyZWUgYXJnMCwgdHJl ZSBhcmcxLCBib29sIHRocmVld2F5X3ApDQogew0KICAgdHJlZSByZXN1bHQ7DQogICBlZGdlIHRy dWVfZWRnZSwgZmFsc2VfZWRnZTsNCkBAIC0xODk2LDE2ICsxOTQ3LDIwIEBAIG1pbm1heF9yZXBs YWNlbWVudCAoYmFzaWNfYmxvY2sgY29uZF9iYiwgYmFzaWNfYmxvY2sgbWlkZGxlX2JiLA0KICAg aWYgKGZhbHNlX2VkZ2UtPmRlc3QgPT0gbWlkZGxlX2JiKQ0KICAgICBmYWxzZV9lZGdlID0gRURH RV9TVUNDIChmYWxzZV9lZGdlLT5kZXN0LCAwKTsNCiANCisgIC8qIFdoZW4gVEhSRUVXQVlfUCB0 aGVuIGUxIHdpbGwgcG9pbnQgdG8gdGhlIGVkZ2Ugb2YgdGhlIGZpbmFsIHRyYW5zaXRpb24NCisg ICAgIGZyb20gbWlkZGxlLWJiIHRvIGVuZC4gICovDQogICBpZiAodHJ1ZV9lZGdlID09IGUwKQ0K ICAgICB7DQotICAgICAgZ2NjX2Fzc2VydCAoZmFsc2VfZWRnZSA9PSBlMSk7DQorICAgICAgaWYg KCF0aHJlZXdheV9wKQ0KKwlnY2NfYXNzZXJ0IChmYWxzZV9lZGdlID09IGUxKTsNCiAgICAgICBh cmdfdHJ1ZSA9IGFyZzA7DQogICAgICAgYXJnX2ZhbHNlID0gYXJnMTsNCiAgICAgfQ0KICAgZWxz ZQ0KICAgICB7DQogICAgICAgZ2NjX2Fzc2VydCAoZmFsc2VfZWRnZSA9PSBlMCk7DQotICAgICAg Z2NjX2Fzc2VydCAodHJ1ZV9lZGdlID09IGUxKTsNCisgICAgICBpZiAoIXRocmVld2F5X3ApDQor CWdjY19hc3NlcnQgKHRydWVfZWRnZSA9PSBlMSk7DQogICAgICAgYXJnX3RydWUgPSBhcmcxOw0K ICAgICAgIGFyZ19mYWxzZSA9IGFyZzA7DQogICAgIH0NCkBAIC0xOTM3LDYgKzE5OTIsMTY1IEBA IG1pbm1heF9yZXBsYWNlbWVudCAoYmFzaWNfYmxvY2sgY29uZF9iYiwgYmFzaWNfYmxvY2sgbWlk ZGxlX2JiLA0KICAgICAgIGVsc2UNCiAJcmV0dXJuIGZhbHNlOw0KICAgICB9DQorICBlbHNlIGlm IChtaWRkbGVfYmIgIT0gYWx0X21pZGRsZV9iYiAmJiB0aHJlZXdheV9wKQ0KKyAgICB7DQorICAg ICAgLyogUmVjb2duaXplIHRoZSBmb2xsb3dpbmcgY2FzZToNCisNCisJIGlmIChzbWFsbGVyIDwg bGFyZ2VyKQ0KKwkgICBhID0gTUlOIChzbWFsbGVyLCBjKTsNCisJIGVsc2UNCisJICAgYiA9IE1J TiAobGFyZ2VyLCBjKTsNCisJIHggPSBQSEkgPGEsIGI+DQorDQorCSBUaGlzIGlzIGVxdWl2YWxl bnQgdG8NCisNCisJIGEgPSBNSU4gKHNtYWxsZXIsIGMpOw0KKwkgeCA9IE1JTiAobGFyZ2VyLCBh KTsgICovDQorDQorICAgICAgZ2ltcGxlICphc3NpZ24gPSBsYXN0X2FuZF9vbmx5X3N0bXQgKG1p ZGRsZV9iYik7DQorICAgICAgdHJlZSBsaHMsIG9wMCwgb3AxLCBib3VuZDsNCisgICAgICB0cmVl IGFsdF9saHMsIGFsdF9vcDAsIGFsdF9vcDE7DQorICAgICAgYm9vbCBpbnZlcnQgPSBmYWxzZTsN CisNCisgICAgICBpZiAoIXNpbmdsZV9wcmVkX3AgKG1pZGRsZV9iYikNCisJICB8fCAhc2luZ2xl X3ByZWRfcCAoYWx0X21pZGRsZV9iYikNCisJICB8fCAhc2luZ2xlX3N1Y2NfcCAobWlkZGxlX2Ji KQ0KKwkgIHx8ICFzaW5nbGVfc3VjY19wIChhbHRfbWlkZGxlX2JiKSkNCisJcmV0dXJuIGZhbHNl Ow0KKw0KKyAgICAgIC8qIFdoZW4gVEhSRUVXQVlfUCB0aGVuIGUxIHdpbGwgcG9pbnQgdG8gdGhl IGVkZ2Ugb2YgdGhlIGZpbmFsIHRyYW5zaXRpb24NCisJIGZyb20gbWlkZGxlLWJiIHRvIGVuZC4g ICovDQorICAgICAgaWYgKHRydWVfZWRnZSA9PSBlMCkNCisJZ2NjX2Fzc2VydCAoZmFsc2VfZWRn ZSA9PSBFREdFX1BSRUQgKGUxLT5zcmMsIDApKTsNCisgICAgICBlbHNlDQorCWdjY19hc3NlcnQg KHRydWVfZWRnZSA9PSBFREdFX1BSRUQgKGUxLT5zcmMsIDApKTsNCisNCisgICAgICBib29sIHZh bGlkX21pbm1heF9wID0gZmFsc2U7DQorICAgICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgaXQxDQor CT0gZ3NpX3N0YXJ0X25vbmRlYnVnX2FmdGVyX2xhYmVsc19iYiAobWlkZGxlX2JiKTsNCisgICAg ICBnaW1wbGVfc3RtdF9pdGVyYXRvciBpdDINCisJPSBnc2lfc3RhcnRfbm9uZGVidWdfYWZ0ZXJf bGFiZWxzX2JiIChhbHRfbWlkZGxlX2JiKTsNCisgICAgICBpZiAoZ3NpX29uZV9ub25kZWJ1Z19i ZWZvcmVfZW5kX3AgKGl0MSkNCisJICAmJiBnc2lfb25lX25vbmRlYnVnX2JlZm9yZV9lbmRfcCAo aXQyKSkNCisJew0KKwkgIGdpbXBsZSAqc3RtdDEgPSBnc2lfc3RtdCAoaXQxKTsNCisJICBnaW1w bGUgKnN0bXQyID0gZ3NpX3N0bXQgKGl0Mik7DQorCSAgaWYgKGlzX2dpbXBsZV9hc3NpZ24gKHN0 bXQxKSAmJiBpc19naW1wbGVfYXNzaWduIChzdG10MikpDQorCSAgICB7DQorCSAgICAgIGVudW0g dHJlZV9jb2RlIGNvZGUxID0gZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAoc3RtdDEpOw0KKwkgICAg ICBlbnVtIHRyZWVfY29kZSBjb2RlMiA9IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKHN0bXQyKTsN CisJICAgICAgdmFsaWRfbWlubWF4X3AgPSAoY29kZTEgPT0gTUlOX0VYUFIgfHwgY29kZTEgPT0g TUFYX0VYUFIpDQorCQkJICAgICAgICYmIChjb2RlMiA9PSBNSU5fRVhQUiB8fCBjb2RlMiA9PSBN QVhfRVhQUik7DQorCSAgICB9DQorCX0NCisNCisgICAgICBpZiAoIXZhbGlkX21pbm1heF9wKQ0K KwlyZXR1cm4gZmFsc2U7DQorDQorICAgICAgaWYgKCFhc3NpZ24NCisJICB8fCBnaW1wbGVfY29k ZSAoYXNzaWduKSAhPSBHSU1QTEVfQVNTSUdOKQ0KKwlyZXR1cm4gZmFsc2U7DQorDQorICAgICAg bGhzID0gZ2ltcGxlX2Fzc2lnbl9saHMgKGFzc2lnbik7DQorICAgICAgYXNzX2NvZGUgPSBnaW1w bGVfYXNzaWduX3Joc19jb2RlIChhc3NpZ24pOw0KKyAgICAgIGlmIChhc3NfY29kZSAhPSBNQVhf RVhQUiAmJiBhc3NfY29kZSAhPSBNSU5fRVhQUikNCisJcmV0dXJuIGZhbHNlOw0KKw0KKyAgICAg IG9wMCA9IGdpbXBsZV9hc3NpZ25fcmhzMSAoYXNzaWduKTsNCisgICAgICBvcDEgPSBnaW1wbGVf YXNzaWduX3JoczIgKGFzc2lnbik7DQorDQorICAgICAgYXNzaWduID0gbGFzdF9hbmRfb25seV9z dG10IChhbHRfbWlkZGxlX2JiKTsNCisgICAgICBpZiAoIWFzc2lnbg0KKwkgIHx8IGdpbXBsZV9j b2RlIChhc3NpZ24pICE9IEdJTVBMRV9BU1NJR04pDQorCXJldHVybiBmYWxzZTsNCisNCisgICAg ICBhbHRfbGhzID0gZ2ltcGxlX2Fzc2lnbl9saHMgKGFzc2lnbik7DQorICAgICAgaWYgKGFzc19j b2RlICE9IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKGFzc2lnbikpDQorCXJldHVybiBmYWxzZTsN CisNCisgICAgICBpZiAoIW9wZXJhbmRfZXF1YWxfZm9yX3BoaV9hcmdfcCAobGhzLCBhcmdfdHJ1 ZSkNCisJIHx8ICFvcGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJnX3AgKGFsdF9saHMsIGFyZ19mYWxz ZSkpDQorCXJldHVybiBmYWxzZTsNCisNCisgICAgICBhbHRfb3AwID0gZ2ltcGxlX2Fzc2lnbl9y aHMxIChhc3NpZ24pOw0KKyAgICAgIGFsdF9vcDEgPSBnaW1wbGVfYXNzaWduX3JoczIgKGFzc2ln bik7DQorDQorICAgICAgaWYgKChvcGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJnX3AgKG9wMCwgc21h bGxlcikNCisJCXx8IChhbHRfc21hbGxlcg0KKwkJICAgICYmIG9wZXJhbmRfZXF1YWxfZm9yX3Bo aV9hcmdfcCAob3AwLCBhbHRfc21hbGxlcikpKQ0KKwkgICAgICAgJiYgKG9wZXJhbmRfZXF1YWxf Zm9yX3BoaV9hcmdfcCAoYWx0X29wMCwgbGFyZ2VyKQ0KKwkJICAgfHwgKGFsdF9sYXJnZXINCisJ CSAgICAgICAmJiBvcGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJnX3AgKGFsdF9vcDAsIGFsdF9sYXJn ZXIpKSkpDQorCXsNCisJICAvKiBXZSBnb3QgaGVyZSBpZiB0aGUgY29uZGl0aW9uIGlzIHRydWUs IGkuZS4sIFNNQUxMRVIgPCBMQVJHRVIuICAqLw0KKwkgIGlmICghb3BlcmFuZF9lcXVhbF9mb3Jf cGhpX2FyZ19wIChvcDEsIGFsdF9vcDEpKQ0KKwkgICAgcmV0dXJuIGZhbHNlOw0KKw0KKwkgIGlm ICgoYXJnMCA9IHN0cmlwX2JpdF9ub3QgKG9wMCkpICE9IE5VTEwNCisJICAgICAgJiYgKGFyZzEg PSBzdHJpcF9iaXRfbm90IChhbHRfb3AwKSkgIT0gTlVMTA0KKwkgICAgICAmJiAoYm91bmQgPSBz dHJpcF9iaXRfbm90IChvcDEpKSAhPSBOVUxMKQ0KKwkgICAgew0KKwkgICAgICBtaW5tYXggPSBN QVhfRVhQUjsNCisJICAgICAgYXNzX2NvZGUgPSBpbnZlcnRfbWlubWF4X2NvZGUgKGFzc19jb2Rl KTsNCisJICAgICAgaW52ZXJ0ID0gdHJ1ZTsNCisJICAgIH0NCisJICBlbHNlDQorCSAgICB7DQor CSAgICAgIGJvdW5kID0gb3AxOw0KKwkgICAgICBtaW5tYXggPSBNSU5fRVhQUjsNCisJICAgICAg YXJnMCA9IG9wMDsNCisJICAgICAgYXJnMSA9IGFsdF9vcDA7DQorCSAgICAgfQ0KKwl9DQorICAg ICAgZWxzZSBpZiAoKG9wZXJhbmRfZXF1YWxfZm9yX3BoaV9hcmdfcCAob3AwLCBsYXJnZXIpDQor CQl8fCAoYWx0X2xhcmdlcg0KKwkJICAgICYmIG9wZXJhbmRfZXF1YWxfZm9yX3BoaV9hcmdfcCAo b3AwLCBhbHRfbGFyZ2VyKSkpDQorCSAgICAgICAmJiAob3BlcmFuZF9lcXVhbF9mb3JfcGhpX2Fy Z19wIChhbHRfb3AwLCBzbWFsbGVyKQ0KKwkJICAgfHwgKGFsdF9zbWFsbGVyDQorCQkgICAgICAg JiYgb3BlcmFuZF9lcXVhbF9mb3JfcGhpX2FyZ19wIChhbHRfb3AwLCBhbHRfc21hbGxlcikpKSkN CisJew0KKwkgIC8qIFdlIGdvdCBoZXJlIGlmIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSwgaS5lLiwg U01BTExFUiA+IExBUkdFUi4gICovDQorCSAgaWYgKCFvcGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJn X3AgKG9wMSwgYWx0X29wMSkpDQorCSAgICByZXR1cm4gZmFsc2U7DQorDQorCSAgaWYgKChhcmcw ID0gc3RyaXBfYml0X25vdCAob3AwKSkgIT0gTlVMTA0KKwkgICAgICAmJiAoYXJnMSA9IHN0cmlw X2JpdF9ub3QgKGFsdF9vcDApKSAhPSBOVUxMDQorCSAgICAgICYmIChib3VuZCA9IHN0cmlwX2Jp dF9ub3QgKG9wMSkpICE9IE5VTEwpDQorCSAgICB7DQorCSAgICAgIG1pbm1heCA9IE1JTl9FWFBS Ow0KKwkgICAgICBhc3NfY29kZSA9IGludmVydF9taW5tYXhfY29kZSAoYXNzX2NvZGUpOw0KKwkg ICAgICBpbnZlcnQgPSB0cnVlOw0KKwkgICAgfQ0KKwkgIGVsc2UNCisJICAgIHsNCisJICAgICAg Ym91bmQgPSBvcDE7DQorCSAgICAgIG1pbm1heCA9IE1BWF9FWFBSOw0KKwkgICAgICBhcmcwID0g b3AwOw0KKwkgICAgICBhcmcxID0gYWx0X29wMDsNCisJICAgICB9DQorCX0NCisgICAgICBlbHNl DQorCXJldHVybiBmYWxzZTsNCisNCisgICAgICAvKiBFbWl0IHRoZSBzdGF0ZW1lbnQgdG8gY29t cHV0ZSBtaW4vbWF4LiAgKi8NCisgICAgICBsb2NhdGlvbl90IGxvY3VzID0gZ2ltcGxlX2xvY2F0 aW9uIChsYXN0X3N0bXQgKGNvbmRfYmIpKTsNCisgICAgICBnaW1wbGVfc2VxIHN0bXRzID0gTlVM TDsNCisgICAgICB0cmVlIHBoaV9yZXN1bHQgPSBQSElfUkVTVUxUIChwaGkpOw0KKyAgICAgIHJl c3VsdCA9IGdpbXBsZV9idWlsZCAoJnN0bXRzLCBsb2N1cywgbWlubWF4LCBUUkVFX1RZUEUgKHBo aV9yZXN1bHQpLA0KKwkJCSAgICAgYXJnMCwgYm91bmQpOw0KKyAgICAgIHJlc3VsdCA9IGdpbXBs ZV9idWlsZCAoJnN0bXRzLCBsb2N1cywgYXNzX2NvZGUsIFRSRUVfVFlQRSAocGhpX3Jlc3VsdCks DQorCQkJICAgICByZXN1bHQsIGFyZzEpOw0KKyAgICAgIGlmIChpbnZlcnQpDQorCXJlc3VsdCA9 IGdpbXBsZV9idWlsZCAoJnN0bXRzLCBsb2N1cywgQklUX05PVF9FWFBSLCBUUkVFX1RZUEUgKHBo aV9yZXN1bHQpLA0KKwkJCSAgICAgICByZXN1bHQpOw0KKw0KKyAgICAgIGdzaSA9IGdzaV9sYXN0 X2JiIChjb25kX2JiKTsNCisgICAgICBnc2lfaW5zZXJ0X3NlcV9iZWZvcmUgKCZnc2ksIHN0bXRz LCBHU0lfTkVXX1NUTVQpOw0KKw0KKyAgICAgIHJlcGxhY2VfcGhpX2VkZ2Vfd2l0aF92YXJpYWJs ZSAoY29uZF9iYiwgZTEsIHBoaSwgcmVzdWx0LCBmYWxzZSk7DQorDQorICAgICAgcmV0dXJuIHRy dWU7DQorICAgIH0NCiAgIGVsc2UNCiAgICAgew0KICAgICAgIC8qIFJlY29nbml6ZSB0aGUgZm9s bG93aW5nIGNhc2UsIGFzc3VtaW5nIGQgPD0gdToNCg== --_002_VI1PR08MB532528528B9CAB9C0467423BFF819VI1PR08MB5325eurp_ Content-Type: application/octet-stream; name="rb15841.patch" Content-Description: rb15841.patch Content-Disposition: attachment; filename="rb15841.patch"; size=23823; creation-date="Tue, 05 Jul 2022 15:16:34 GMT"; modification-date="Tue, 05 Jul 2022 15:25:42 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC0xMC5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTEwLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg5 OTUzNjg0NDE2YTlkMjYzMDg0ZGViNThmNmNkZTcwOTRkZDUxNwotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC0xMC5jCkBAIC0wLDAgKzEsMjAg QEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1mZHVtcC10 cmVlLW9wdGltaXplZCIgfSAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK3VpbnQ4X3QgdGhy ZWVfbWF4ICh1aW50OF90IHhjLCB1aW50OF90IHhtLCB1aW50OF90IHh5KSB7CisgICAgdWludDhf dAkgeGs7CisgICAgeGM9fnhjOworICAgIHhtPX54bTsKKyAgICB4eT1+eHk7CisgICAgaWYgKHhj ID4geG0pIHsKKyAgICAgICAgeGsgPSAodWludDhfdCkgKHhjID4geHkgPyB4YyA6IHh5KTsKKyAg ICB9IGVsc2UgeworICAgICAgICB4ayA9ICh1aW50OF90KSAoeG0gPiB4eSA/IHhtIDogeHkpOwor ICAgIH0KKyAgICByZXR1cm4geGs7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cC10aW1lcyAiTUlOX0VYUFIiIDIgIm9wdGltaXplZCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAtdGltZXMgIj0gfiIgMSAib3B0aW1pemVkIiB9IH0gKi8KZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC0xMS5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTExLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMyZWYwMWI1ZDFl NjM5ZmJmOTViYjVjYTQ3M2I2M2NjOThlOWRmMQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC0xMS5jCkBAIC0wLDAgKzEsMjEgQEAKKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1mZHVtcC10cmVlLW9wdGlt aXplZCIgfSAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK3VpbnQ4X3QgdGhyZWVfbWlubWF4 MSAodWludDhfdCB4YywgdWludDhfdCB4bSwgdWludDhfdCB4eSkgeworCXVpbnQ4X3QJIHhrOwor ICAgIHhjPX54YzsKKyAgICB4bT1+eG07CisgICAgeHk9fnh5OworICAgIGlmICh4YyA+IHhtKSB7 CisgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4YyA8IHh5ID8geGMgOiB4eSk7CisgICAgfSBlbHNl IHsKKyAgICAgICAgeGsgPSAodWludDhfdCkgKHhtIDwgeHkgPyB4bSA6IHh5KTsKKyAgICB9Cisg ICAgcmV0dXJuIHhrOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMg Ik1JTl9FWFBSIiAxICJvcHRpbWl6ZWQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJNQVhfRVhQUiIgMSAib3B0aW1pemVkIiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiPSB+IiAxICJvcHRpbWl6ZWQiIH0gfSAqLwpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTEyLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtMTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDBjMDdk OWI1N2RkNjg5YmNiODk2NTM5Mzc3MjdhYjQ0MWU3ZjJiCi0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTEyLmMKQEAgLTAsMCArMSwyMCBAQAor LyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLWZkdW1wLXRyZWUt cGhpb3B0IiB9ICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwordWludDhfdCB0aHJlZV9taW5t YXgzICh1aW50OF90IHhjLCB1aW50OF90IHhtLCB1aW50OF90IHh5KSB7CisgICAgICAgIHVpbnQ4 X3QgIHhrOworICAgIHhjPX54YzsKKyAgICB4bT1+eG07CisgICAgeHk9fnh5OworICAgIGlmICh4 YyA+IHhtKSB7CisgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4eSA8IHhjID8geGMgOiB4eSk7Cisg ICAgfSBlbHNlIHsKKyAgICAgICAgeGsgPSAodWludDhfdCkgKHhtIDwgeHkgPyB4bSA6IHh5KTsK KyAgICB9CisgICAgcmV0dXJuIHhrOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgIk1JTl9FWFBSIiAxICJwaGlvcHQxIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcC10aW1lcyAiTUFYX0VYUFIiIDEgInBoaW9wdDEiIH0gfSAqLwpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTEzLmMgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtMTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGQwZjI3Yzgw MjdhZTg3NjU0NTMyZDFiOTE5Y2ZlY2NmNDQxM2UwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTEzLmMKQEAgLTAsMCArMSwxOSBAQAorLyog eyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLWZkdW1wLXRyZWUtcGhp b3B0IiB9ICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwordWludDhfdCB0aHJlZV9taW5tYXgy ICh1aW50OF90IHhjLCB1aW50OF90IHhtLCB1aW50OF90IHh5KSB7CisJdWludDhfdAkgeGs7Cisg ICAgeGM9fnhjOworICAgIHhtPX54bTsKKyAgICB4eT1+eHk7CisgICAgaWYgKHhjID4geG0pIHsK KyAgICAgICAgeGsgPSAodWludDhfdCkgKHhjID4geHkgPyB4YyA6IHh5KTsKKyAgICB9IGVsc2Ug eworICAgICAgICB4ayA9ICh1aW50OF90KSAoeG0gPCB4eSA/IHhtIDogeHkpOworICAgIH0KKyAg ICByZXR1cm4geGs7Cit9CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIk1J Tl9FWFBSIiAxICJwaGlvcHQxIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cC10aW1lcyAiTUFYX0VYUFIiIDEgInBoaW9wdDEiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTE0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy90cmVlLXNzYS9taW5tYXgtMTQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzBjYWRiZjdlMzExOTUyN2NiMjAw N2QwMWZlNGM3ZGQ3NzJjMDY5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdHJlZS1zc2EvbWlubWF4LTE0LmMKQEAgLTAsMCArMSwyMSBAQAorLyogeyBkZy1kbyBjb21w aWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLWZkdW1wLXRyZWUtb3B0aW1pemVkIiB9ICov CisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwordWludDhfdCB0aHJlZV9taW5tYXgxMSAodWludDhf dCB4YywgdWludDhfdCB4bSwgdWludDhfdCB4eSkgeworICAgICAgICB1aW50OF90ICB4azsKKyAg ICB4Yz1+eGM7CisgICAgeG09fnhtOworICAgIHh5PX54eTsKKyAgICBpZiAoeGMgPCB4bSkgewor ICAgICAgICB4ayA9ICh1aW50OF90KSAoeGMgPiB4eSA/IHhjIDogeHkpOworICAgIH0gZWxzZSB7 CisgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4bSA+IHh5ID8geG0gOiB4eSk7CisgICAgfQorICAg IHJldHVybiB4azsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJN SU5fRVhQUiIgMSAib3B0aW1pemVkIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAiTUFYX0VYUFIiIDEgIm9wdGltaXplZCIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIj0gfiIgMSAib3B0aW1pemVkIiB9IH0gKi8KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC0xNS5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTE1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ5N2ExNjU2 NGYwNjliNDM0OGZmMzI1YzRmZDcxM2EyMjRmODM4YQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC0xNS5jCkBAIC0wLDAgKzEsMjEgQEAKKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1mZHVtcC10cmVlLXBo aW9wdCIgfSAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkYm9vbC5oPgor Cit1aW50OF90IHRocmVlX21pbiAodWludDhfdCB4YywgdWludDhfdCB4bSwgdWludDhfdCB4eSwg Ym9vbCBtKSB7CisgICAgdWludDhfdCAgeGs7CisgICAgaWYgKHhjKQorICAgICAgeworICAgICAg ICBpZiAoeGMgPCB4bSkgeworICAgICAgICAgICAgeGsgPSAodWludDhfdCkgKHhjIDwgeHkgPyB4 YyA6IHh5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4 bSA8IHh5ID8geG0gOiB4eSk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgIHJldHVybiB4azsK K30KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiTUlOX0VYUFIiIDMgInBo aW9wdDEiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNQVhf RVhQUiIgMCAicGhpb3B0MSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy90cmVlLXNzYS9taW5tYXgtMTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21p bm1heC0xNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5Mzc3YTJjYjM0MWJkYWZhNmJhMTQ1YzYxYzFmOTY2YWY1 MzY4MzkKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9t aW5tYXgtMTYuYwpAQCAtMCwwICsxLDE3IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1vcHRpb25zICItTyAtZmR1bXAtdHJlZS1waGlvcHQgLWciIH0gKi8KKworI2luY2x1ZGUg PHN0ZGludC5oPgorCit1aW50OF90IHRocmVlX21pbiAodWludDhfdCB4YywgdWludDhfdCB4bSwg dWludDhfdCB4eSkgeworCXVpbnQ4X3QJIHhrOworICAgIGlmICh4YyA8IHhtKSB7CisgICAgICAg IHhrID0gKHVpbnQ4X3QpICh4YyA8IHh5ID8geGMgOiB4eSk7CisgICAgfSBlbHNlIHsKKyAgICAg ICAgeGsgPSAodWludDhfdCkgKHhtIDwgeHkgPyB4bSA6IHh5KTsKKyAgICB9CisgICAgcmV0dXJu IHhrOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIk1JTl9FWFBS IiAzICJwaGlvcHQxIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAiTUFYX0VYUFIiIDAgInBoaW9wdDEiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUt c3NhL21pbm1heC0zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGUzYjJlOTQ2ZTgxNzAxZTNiNzVmNTgwZTZhODQz Njk1YTA1Nzg2ZQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUt c3NhL21pbm1heC0zLmMKQEAgLTAsMCArMSwxNyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLU8gLWZkdW1wLXRyZWUtcGhpb3B0IiB9ICovCisKKyNpbmNsdWRl IDxzdGRpbnQuaD4KKwordWludDhfdCB0aHJlZV9taW4gKHVpbnQ4X3QgeGMsIHVpbnQ4X3QgeG0s IHVpbnQ4X3QgeHkpIHsKKwl1aW50OF90CSB4azsKKyAgICBpZiAoeGMgPCB4bSkgeworICAgICAg ICB4ayA9ICh1aW50OF90KSAoeGMgPCB4eSA/IHhjIDogeHkpOworICAgIH0gZWxzZSB7CisgICAg ICAgIHhrID0gKHVpbnQ4X3QpICh4bSA8IHh5ID8geG0gOiB4eSk7CisgICAgfQorICAgIHJldHVy biB4azsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNSU5fRVhQ UiIgMyAicGhpb3B0MSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGlt ZXMgIk1BWF9FWFBSIiAwICJwaGlvcHQxIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVl LXNzYS9taW5tYXgtNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNmQ2NjdiZTg2OGMyNDA1ZWFlZmQxN2NiNTIy ZGE0NGJhZmEwZTIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVl LXNzYS9taW5tYXgtNC5jCkBAIC0wLDAgKzEsMTcgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1PIC1mZHVtcC10cmVlLXBoaW9wdCIgfSAqLworCisjaW5jbHVk ZSA8c3RkaW50Lmg+CisKK3VpbnQ4X3QgdGhyZWVfbWF4ICh1aW50OF90IHhjLCB1aW50OF90IHht LCB1aW50OF90IHh5KSB7CisgICAgdWludDhfdAkgeGs7CisgICAgaWYgKHhjID4geG0pIHsKKyAg ICAgICAgeGsgPSAodWludDhfdCkgKHhjID4geHkgPyB4YyA6IHh5KTsKKyAgICB9IGVsc2Ugewor ICAgICAgICB4ayA9ICh1aW50OF90KSAoeG0gPiB4eSA/IHhtIDogeHkpOworICAgIH0KKyAgICBy ZXR1cm4geGs7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiTUlO X0VYUFIiIDAgInBoaW9wdDEiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICJNQVhfRVhQUiIgMyAicGhpb3B0MSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dHJlZS1zc2EvbWlubWF4LTUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTA2MDFhM2NjNzVkMDlhOWU2ZTU0YTM1 ZjViOTk5MzA3NGY4NTEwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dHJlZS1zc2EvbWlubWF4LTUuYwpAQCAtMCwwICsxLDE3IEBACisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworLyogeyBkZy1vcHRpb25zICItTyAtZmR1bXAtdHJlZS1waGlvcHQiIH0gKi8KKworI2lu Y2x1ZGUgPHN0ZGludC5oPgorCit1aW50OF90IHRocmVlX21pbm1heDEgKHVpbnQ4X3QgeGMsIHVp bnQ4X3QgeG0sIHVpbnQ4X3QgeHkpIHsKKwl1aW50OF90CSB4azsKKyAgICBpZiAoeGMgPiB4bSkg eworICAgICAgICB4ayA9ICh1aW50OF90KSAoeGMgPCB4eSA/IHhjIDogeHkpOworICAgIH0gZWxz ZSB7CisgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4bSA8IHh5ID8geG0gOiB4eSk7CisgICAgfQor ICAgIHJldHVybiB4azsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVz ICJNSU5fRVhQUiIgMiAicGhpb3B0MSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgIk1BWF9FWFBSIiAxICJwaGlvcHQxIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC02LmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy90cmVlLXNzYS9taW5tYXgtNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MjhmNmQ5OTIyMjk1OGNmZDhj NDEwZjBlODU2MzllM2E0OWRkNGIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy90cmVlLXNzYS9taW5tYXgtNi5jCkBAIC0wLDAgKzEsMTcgQEAKKy8qIHsgZGctZG8gY29t cGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1mZHVtcC10cmVlLXBoaW9wdCIgfSAqLwor CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK3VpbnQ4X3QgdGhyZWVfbWlubWF4MyAodWludDhfdCB4 YywgdWludDhfdCB4bSwgdWludDhfdCB4eSkgeworICAgICAgICB1aW50OF90ICB4azsKKyAgICBp ZiAoeGMgPiB4bSkgeworICAgICAgICB4ayA9ICh1aW50OF90KSAoeHkgPCB4YyA/IHhjIDogeHkp OworICAgIH0gZWxzZSB7CisgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4bSA8IHh5ID8geG0gOiB4 eSk7CisgICAgfQorICAgIHJldHVybiB4azsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJNSU5fRVhQUiIgMSAicGhpb3B0MSIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIk1BWF9FWFBSIiAxICJwaGlvcHQxIiB9IH0gKi8KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC03LmMgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtNy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiNDI0MTJj NGFkYTQzM2IyZjU5ZGYwYThiZWY5ZmE3YjFjNWUxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtNy5jCkBAIC0wLDAgKzEsMTYgQEAKKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1mZHVtcC10cmVlLXBo aW9wdCIgfSAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK3VpbnQ4X3QgdGhyZWVfbWlubWF4 MiAodWludDhfdCB4YywgdWludDhfdCB4bSwgdWludDhfdCB4eSkgeworCXVpbnQ4X3QJIHhrOwor ICAgIGlmICh4YyA+IHhtKSB7CisgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4YyA+IHh5ID8geGMg OiB4eSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgeGsgPSAodWludDhfdCkgKHhtIDwgeHkgPyB4 bSA6IHh5KTsKKyAgICB9CisgICAgcmV0dXJuIHhrOworfQorLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wLXRpbWVzICJNSU5fRVhQUiIgMSAicGhpb3B0MSIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIk1BWF9FWFBSIiAxICJwaGlvcHQxIiB9IH0gKi8K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL21pbm1heC04LmMgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtOC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljZDA1 MGU5MzIzNzZiYzUwYmQ2YWU2MGNiNjU0ZmNhYjBiZmRkMWMKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9taW5tYXgtOC5jCkBAIC0wLDAgKzEsMTcgQEAK Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1mZHVtcC10cmVl LXBoaW9wdCIgfSAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK3VpbnQ4X3QgdGhyZWVfbWlu bWF4MTEgKHVpbnQ4X3QgeGMsIHVpbnQ4X3QgeG0sIHVpbnQ4X3QgeHkpIHsKKyAgICAgICAgdWlu dDhfdCAgeGs7CisgICAgaWYgKHhjIDwgeG0pIHsKKyAgICAgICAgeGsgPSAodWludDhfdCkgKHhj ID4geHkgPyB4YyA6IHh5KTsKKyAgICB9IGVsc2UgeworICAgICAgICB4ayA9ICh1aW50OF90KSAo eG0gPiB4eSA/IHhtIDogeHkpOworICAgIH0KKyAgICByZXR1cm4geGs7Cit9CisKKy8qIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiTUlOX0VYUFIiIDEgInBoaW9wdDEiIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJNQVhfRVhQUiIgMiAicGhp b3B0MSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9t aW5tYXgtOS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTkuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi4yNGY1ODAyNzFjM2FjMzk0NTg2MGI1MDZkNGRjN2QxNzhhODI2MDkzCi0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvbWlubWF4LTkuYwpAQCAt MCwwICsxLDIwIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICIt TyAtZmR1bXAtdHJlZS1vcHRpbWl6ZWQiIH0gKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCit1 aW50OF90IHRocmVlX21pbiAodWludDhfdCB4YywgdWludDhfdCB4bSwgdWludDhfdCB4eSkgewor CXVpbnQ4X3QJIHhrOworICAgIHhjPX54YzsKKyAgICB4bT1+eG07CisgICAgeHk9fnh5OworICAg IGlmICh4YyA8IHhtKSB7CisgICAgICAgIHhrID0gKHVpbnQ4X3QpICh4YyA8IHh5ID8geGMgOiB4 eSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgeGsgPSAodWludDhfdCkgKHhtIDwgeHkgPyB4bSA6 IHh5KTsKKyAgICB9CisgICAgcmV0dXJuIHhrOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAtdGltZXMgIj0gfiIgMSAib3B0aW1pemVkIiB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiTUFYX0VYUFIiIDIgIm9wdGltaXplZCIgfSB9ICovCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9zcGxpdC1wYXRoLTEuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3NwbGl0LXBhdGgtMS5jCmluZGV4IDhiMjNl ZjRjN2EzNDg0Y2RjMTY0N2VlNmQxYjE1MGYxNTY4NWJlZmYuLjkwMmRkZTQ0YTUwZTE3MWI0ZjM0 YmE3MjQ3ZDc1YTMyZDJjODYwZWQgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3Ry ZWUtc3NhL3NwbGl0LXBhdGgtMS5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3Nh L3NwbGl0LXBhdGgtMS5jCkBAIC0xLDUgKzEsNSBAQAogLyogeyBkZy1kbyBydW4gfSAqLwotLyog eyBkZy1vcHRpb25zICItTzIgLWZzcGxpdC1wYXRocyAtZmR1bXAtdHJlZS1zcGxpdC1wYXRocy1k ZXRhaWxzIC0tcGFyYW0gbWF4LWp1bXAtdGhyZWFkLWR1cGxpY2F0aW9uLXN0bXRzPTIwIiB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnNwbGl0LXBhdGhzIC1mZHVtcC10cmVlLXNwbGl0LXBh dGhzLWRldGFpbHMgLS1wYXJhbSBtYXgtanVtcC10aHJlYWQtZHVwbGljYXRpb24tc3RtdHM9MjAg LWZuby1zc2EtcGhpb3B0IiB9ICovCiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0 ZGxpYi5oPgpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLXBoaW9wdC5jYyBiL2djYy90cmVlLXNz YS1waGlvcHQuY2MKaW5kZXggZTYxZDk3MzY5Mzc1NzNkNzczYWNkZjNlNDNhN2M3NjA3NGJmYjJj Ny4uZGY1NDNiMjJjZDcyMDUzOGMxNGJjZWE3MmZjNzhhOGRlYzliZjEyYiAxMDA2NDQKLS0tIGEv Z2NjL3RyZWUtc3NhLXBoaW9wdC5jYworKysgYi9nY2MvdHJlZS1zc2EtcGhpb3B0LmNjCkBAIC02 Myw4ICs2Myw4IEBAIHN0YXRpYyBncGhpICpmYWN0b3Jfb3V0X2NvbmRpdGlvbmFsX2NvbnZlcnNp b24gKGVkZ2UsIGVkZ2UsIGdwaGkgKiwgdHJlZSwgdHJlZSwKIAkJCQkJCWdpbXBsZSAqKTsKIHN0 YXRpYyBpbnQgdmFsdWVfcmVwbGFjZW1lbnQgKGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywKIAkJ CSAgICAgIGVkZ2UsIGVkZ2UsIGdwaGkgKiwgdHJlZSwgdHJlZSk7Ci1zdGF0aWMgYm9vbCBtaW5t YXhfcmVwbGFjZW1lbnQgKGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywKLQkJCQllZGdlLCBlZGdl LCBncGhpICosIHRyZWUsIHRyZWUpOworc3RhdGljIGJvb2wgbWlubWF4X3JlcGxhY2VtZW50IChi YXNpY19ibG9jaywgYmFzaWNfYmxvY2ssIGJhc2ljX2Jsb2NrLAorCQkJCWVkZ2UsIGVkZ2UsIGdw aGkgKiwgdHJlZSwgdHJlZSwgYm9vbCk7CiBzdGF0aWMgYm9vbCBzcGFjZXNoaXBfcmVwbGFjZW1l bnQgKGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywKIAkJCQkgICBlZGdlLCBlZGdlLCBncGhpICos IHRyZWUsIHRyZWUpOwogc3RhdGljIGJvb2wgY29uZF9yZW1vdmFsX2luX2J1aWx0aW5femVyb19w YXR0ZXJuIChiYXNpY19ibG9jaywgYmFzaWNfYmxvY2ssCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRp YyBib29sIGNvbmRfc3RvcmVfcmVwbGFjZW1lbnQgKGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywg ZWRnZSwgZWRnZSwKIAkJCQkgICAgaGFzaF9zZXQ8dHJlZT4gKik7CiBzdGF0aWMgYm9vbCBjb25k X2lmX2Vsc2Vfc3RvcmVfcmVwbGFjZW1lbnQgKGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywgYmFz aWNfYmxvY2spOwogc3RhdGljIGhhc2hfc2V0PHRyZWU+ICogZ2V0X25vbl90cmFwcGluZyAoKTsK LXN0YXRpYyB2b2lkIHJlcGxhY2VfcGhpX2VkZ2Vfd2l0aF92YXJpYWJsZSAoYmFzaWNfYmxvY2ss IGVkZ2UsIGdwaGkgKiwgdHJlZSk7CitzdGF0aWMgdm9pZCByZXBsYWNlX3BoaV9lZGdlX3dpdGhf dmFyaWFibGUgKGJhc2ljX2Jsb2NrLCBlZGdlLCBncGhpICosIHRyZWUsIGJvb2wpOwogc3RhdGlj IHZvaWQgaG9pc3RfYWRqYWNlbnRfbG9hZHMgKGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywKIAkJ CQkgIGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jayk7CiBzdGF0aWMgYm9vbCBnYXRlX2hvaXN0X2xv YWRzICh2b2lkKTsKQEAgLTIwMCw2ICsyMDAsNyBAQCB0cmVlX3NzYV9waGlvcHRfd29ya2VyIChi b29sIGRvX3N0b3JlX2VsaW0sIGJvb2wgZG9faG9pc3RfbG9hZHMsIGJvb2wgZWFybHlfcCkKICAg ICAgIGJhc2ljX2Jsb2NrIGJiMSwgYmIyOwogICAgICAgZWRnZSBlMSwgZTI7CiAgICAgICB0cmVl IGFyZzAsIGFyZzE7CisgICAgICBib29sIGRpYW1vbmRfcCA9IGZhbHNlOwogCiAgICAgICBiYiA9 IGJiX29yZGVyW2ldOwogCkBAIC0yNjYsNiArMjY3LDkgQEAgdHJlZV9zc2FfcGhpb3B0X3dvcmtl ciAoYm9vbCBkb19zdG9yZV9lbGltLCBib29sIGRvX2hvaXN0X2xvYWRzLCBib29sIGVhcmx5X3Ap CiAJICAgIGhvaXN0X2FkamFjZW50X2xvYWRzIChiYiwgYmIxLCBiYjIsIGJiMyk7CiAJICBjb250 aW51ZTsKIAl9CisgICAgICBlbHNlIGlmIChFREdFX1NVQ0MgKGJiMSwgMCktPmRlc3QgPT0gRURH RV9TVUNDIChiYjIsIDApLT5kZXN0CisJICAgICAgICYmICFlbXB0eV9ibG9ja19wIChiYjEpKQor CWRpYW1vbmRfcCA9IHRydWU7CiAgICAgICBlbHNlCiAJY29udGludWU7CiAKQEAgLTI5NCwxMCAr Mjk4LDEzIEBAIHRyZWVfc3NhX3BoaW9wdF93b3JrZXIgKGJvb2wgZG9fc3RvcmVfZWxpbSwgYm9v bCBkb19ob2lzdF9sb2FkcywgYm9vbCBlYXJseV9wKQogCX0KICAgICAgIGVsc2UKIAl7Ci0JICBn aW1wbGVfc2VxIHBoaXMgPSBwaGlfbm9kZXMgKGJiMik7CiAJICBnaW1wbGVfc3RtdF9pdGVyYXRv ciBnc2k7CiAJICBib29sIGNhbmRvcmVzdCA9IHRydWU7CiAKKwkgIC8qIENoZWNrIHRoYXQgd2Un cmUgbG9va2luZyBmb3IgbmVzdGVkIHBoaXMuICAqLworCSAgYmFzaWNfYmxvY2sgbWVyZ2UgPSBk aWFtb25kX3AgPyBFREdFX1NVQ0MgKGJiMiwgMCktPmRlc3QgOiBiYjI7CisJICBnaW1wbGVfc2Vx IHBoaXMgPSBwaGlfbm9kZXMgKG1lcmdlKTsKKwogCSAgLyogVmFsdWUgcmVwbGFjZW1lbnQgY2Fu IHdvcmsgd2l0aCBtb3JlIHRoYW4gb25lIFBISQogCSAgICAgc28gdHJ5IHRoYXQgZmlyc3QuICov CiAJICBpZiAoIWVhcmx5X3ApCkBAIC0zMTcsNiArMzI0LDcgQEAgdHJlZV9zc2FfcGhpb3B0X3dv cmtlciAoYm9vbCBkb19zdG9yZV9lbGltLCBib29sIGRvX2hvaXN0X2xvYWRzLCBib29sIGVhcmx5 X3ApCiAJICBpZiAoIWNhbmRvcmVzdCkKIAkgICAgY29udGludWU7CiAKKwkgIGUyID0gZGlhbW9u ZF9wID8gRURHRV9TVUNDIChiYjIsIDApIDogZTI7CiAJICBwaGkgPSBzaW5nbGVfbm9uX3Npbmds ZXRvbl9waGlfZm9yX2VkZ2VzIChwaGlzLCBlMSwgZTIpOwogCSAgaWYgKCFwaGkpCiAJICAgIGNv bnRpbnVlOwpAQCAtMzMwLDYgKzMzOCw3IEBAIHRyZWVfc3NhX3BoaW9wdF93b3JrZXIgKGJvb2wg ZG9fc3RvcmVfZWxpbSwgYm9vbCBkb19ob2lzdF9sb2FkcywgYm9vbCBlYXJseV9wKQogCiAJICBn cGhpICpuZXdwaGk7CiAJICBpZiAoc2luZ2xlX3ByZWRfcCAoYmIxKQorCSAgICAgICYmICFkaWFt b25kX3AKIAkgICAgICAmJiAobmV3cGhpID0gZmFjdG9yX291dF9jb25kaXRpb25hbF9jb252ZXJz aW9uIChlMSwgZTIsIHBoaSwKIAkJCQkJCQkgICAgICBhcmcwLCBhcmcxLAogCQkJCQkJCSAgICAg IGNvbmRfc3RtdCkpKQpAQCAtMzQ0LDIwICszNTMsMjUgQEAgdHJlZV9zc2FfcGhpb3B0X3dvcmtl ciAoYm9vbCBkb19zdG9yZV9lbGltLCBib29sIGRvX2hvaXN0X2xvYWRzLCBib29sIGVhcmx5X3Ap CiAJICAgIH0KIAogCSAgLyogRG8gdGhlIHJlcGxhY2VtZW50IG9mIGNvbmRpdGlvbmFsIGlmIGl0 IGNhbiBiZSBkb25lLiAgKi8KLQkgIGlmICghZWFybHlfcCAmJiB0d29fdmFsdWVfcmVwbGFjZW1l bnQgKGJiLCBiYjEsIGUyLCBwaGksIGFyZzAsIGFyZzEpKQorCSAgaWYgKCFlYXJseV9wCisJICAg ICAgJiYgIWRpYW1vbmRfcAorCSAgICAgICYmIHR3b192YWx1ZV9yZXBsYWNlbWVudCAoYmIsIGJi MSwgZTIsIHBoaSwgYXJnMCwgYXJnMSkpCiAJICAgIGNmZ2NoYW5nZWQgPSB0cnVlOwotCSAgZWxz ZSBpZiAobWF0Y2hfc2ltcGxpZnlfcmVwbGFjZW1lbnQgKGJiLCBiYjEsIGUxLCBlMiwgcGhpLAot CQkJCQkgICAgICAgYXJnMCwgYXJnMSwKLQkJCQkJICAgICAgIGVhcmx5X3ApKQorCSAgZWxzZSBp ZiAoIWRpYW1vbmRfcAorCQkgICAmJiBtYXRjaF9zaW1wbGlmeV9yZXBsYWNlbWVudCAoYmIsIGJi MSwgZTEsIGUyLCBwaGksCisJCQkJCQkgIGFyZzAsIGFyZzEsIGVhcmx5X3ApKQogCSAgICBjZmdj aGFuZ2VkID0gdHJ1ZTsKIAkgIGVsc2UgaWYgKCFlYXJseV9wCisJCSAgICYmICFkaWFtb25kX3AK IAkJICAgJiYgc2luZ2xlX3ByZWRfcCAoYmIxKQogCQkgICAmJiBjb25kX3JlbW92YWxfaW5fYnVp bHRpbl96ZXJvX3BhdHRlcm4gKGJiLCBiYjEsIGUxLCBlMiwKIAkJCQkJCQkgICAgcGhpLCBhcmcw LCBhcmcxKSkKIAkgICAgY2ZnY2hhbmdlZCA9IHRydWU7Ci0JICBlbHNlIGlmIChtaW5tYXhfcmVw bGFjZW1lbnQgKGJiLCBiYjEsIGUxLCBlMiwgcGhpLCBhcmcwLCBhcmcxKSkKKwkgIGVsc2UgaWYg KG1pbm1heF9yZXBsYWNlbWVudCAoYmIsIGJiMSwgYmIyLCBlMSwgZTIsIHBoaSwgYXJnMCwgYXJn MSwKKwkJCQkgICAgICAgZGlhbW9uZF9wKSkKIAkgICAgY2ZnY2hhbmdlZCA9IHRydWU7CiAJICBl bHNlIGlmIChzaW5nbGVfcHJlZF9wIChiYjEpCisJCSAgICYmICFkaWFtb25kX3AKIAkJICAgJiYg c3BhY2VzaGlwX3JlcGxhY2VtZW50IChiYiwgYmIxLCBlMSwgZTIsIHBoaSwgYXJnMCwgYXJnMSkp CiAJICAgIGNmZ2NoYW5nZWQgPSB0cnVlOwogCX0KQEAgLTM4Niw3ICs0MDAsNyBAQCB0cmVlX3Nz YV9waGlvcHRfd29ya2VyIChib29sIGRvX3N0b3JlX2VsaW0sIGJvb2wgZG9faG9pc3RfbG9hZHMs IGJvb2wgZWFybHlfcCkKIAogc3RhdGljIHZvaWQKIHJlcGxhY2VfcGhpX2VkZ2Vfd2l0aF92YXJp YWJsZSAoYmFzaWNfYmxvY2sgY29uZF9ibG9jaywKLQkJCQllZGdlIGUsIGdwaGkgKnBoaSwgdHJl ZSBuZXdfdHJlZSkKKwkJCQllZGdlIGUsIGdwaGkgKnBoaSwgdHJlZSBuZXdfdHJlZSwgYm9vbCBk ZWxldGVfYmIgPSB0cnVlKQogewogICBiYXNpY19ibG9jayBiYiA9IGdpbXBsZV9iYiAocGhpKTsK ICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgZ3NpOwpAQCAtNDI3LDcgKzQ0MSw3IEBAIHJlcGxhY2Vf cGhpX2VkZ2Vfd2l0aF92YXJpYWJsZSAoYmFzaWNfYmxvY2sgY29uZF9ibG9jaywKICAgICBlZGdl X3RvX3JlbW92ZSA9IEVER0VfU1VDQyAoY29uZF9ibG9jaywgMSk7CiAgIGVsc2UKICAgICBlZGdl X3RvX3JlbW92ZSA9IEVER0VfU1VDQyAoY29uZF9ibG9jaywgMCk7Ci0gIGlmIChFREdFX0NPVU5U IChlZGdlX3RvX3JlbW92ZS0+ZGVzdC0+cHJlZHMpID09IDEpCisgIGlmIChFREdFX0NPVU5UIChl ZGdlX3RvX3JlbW92ZS0+ZGVzdC0+cHJlZHMpID09IDEgJiYgZGVsZXRlX2JiKQogICAgIHsKICAg ICAgIGUtPmZsYWdzIHw9IEVER0VfRkFMTFRIUlU7CiAgICAgICBlLT5mbGFncyAmPSB+KEVER0Vf VFJVRV9WQUxVRSB8IEVER0VfRkFMU0VfVkFMVUUpOwpAQCAtMTczMywxNSArMTc0Nyw1MiBAQCB2 YWx1ZV9yZXBsYWNlbWVudCAoYmFzaWNfYmxvY2sgY29uZF9iYiwgYmFzaWNfYmxvY2sgbWlkZGxl X2JiLAogICByZXR1cm4gMDsKIH0KIAorLyogSWYgVkFSIGlzIGFuIFNTQV9OQU1FIHRoYXQgcG9p bnRzIHRvIGEgQklUX05PVF9FWFBSIHRoZW4gcmV0dXJuIHRoZSBUUkVFIGZvcgorICAgdGhlIHZh bHVlIGJlaW5nIGludmVydGVkLiAgKi8KKworc3RhdGljIHRyZWUKK3N0cmlwX2JpdF9ub3QgKHRy ZWUgdmFyKQoreworICBpZiAoVFJFRV9DT0RFICh2YXIpICE9IFNTQV9OQU1FKQorICAgIHJldHVy biBOVUxMX1RSRUU7CisKKyAgZ2ltcGxlICphc3NpZ24gPSBTU0FfTkFNRV9ERUZfU1RNVCAodmFy KTsKKyAgaWYgKGdpbXBsZV9jb2RlIChhc3NpZ24pICE9IEdJTVBMRV9BU1NJR04pCisgICAgcmV0 dXJuIE5VTExfVFJFRTsKKworICBpZiAoZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAoYXNzaWduKSAh PSBCSVRfTk9UX0VYUFIpCisgICAgcmV0dXJuIE5VTExfVFJFRTsKKworICByZXR1cm4gZ2ltcGxl X2Fzc2lnbl9yaHMxIChhc3NpZ24pOworfQorCisvKiBJbnZlcnQgYSBNSU4gdG8gYSBNQVggb3Ig YSBNQVggdG8gYSBNSU4gZXhwcmVzc2lvbiBDT0RFLiAgKi8KKworZW51bSB0cmVlX2NvZGUKK2lu dmVydF9taW5tYXhfY29kZSAoZW51bSB0cmVlX2NvZGUgY29kZSkKK3sKKyAgc3dpdGNoIChjb2Rl KSB7CisgIGNhc2UgTUlOX0VYUFI6CisgICAgcmV0dXJuIE1BWF9FWFBSOworICBjYXNlIE1BWF9F WFBSOgorICAgIHJldHVybiBNSU5fRVhQUjsKKyAgZGVmYXVsdDoKKyAgICBnY2NfdW5yZWFjaGFi bGUgKCk7CisgIH0KK30KKwogLyogIFRoZSBmdW5jdGlvbiBtaW5tYXhfcmVwbGFjZW1lbnQgZG9l cyB0aGUgbWFpbiB3b3JrIG9mIGRvaW5nIHRoZSBtaW5tYXgKICAgICByZXBsYWNlbWVudC4gIFJl dHVybiB0cnVlIGlmIHRoZSByZXBsYWNlbWVudCBpcyBkb25lLiAgT3RoZXJ3aXNlIHJldHVybgog ICAgIGZhbHNlLgogICAgIEJCIGlzIHRoZSBiYXNpYyBibG9jayB3aGVyZSB0aGUgcmVwbGFjZW1l bnQgaXMgZ29pbmcgdG8gYmUgZG9uZSBvbi4gIEFSRzAKLSAgICBpcyBhcmd1bWVudCAwIGZyb20g dGhlIFBISS4gIExpa2V3aXNlIGZvciBBUkcxLiAgKi8KKyAgICBpcyBhcmd1bWVudCAwIGZyb20g dGhlIFBISS4gIExpa2V3aXNlIGZvciBBUkcxLgorCisgICAgSWYgVEhSRUVXQVlfUCB0aGVuIGV4 cGVjdCB0aGUgQkIgdG8gYmUgbGFpZCBvdXQgaW4gZGlhbW9uZCBzaGFwZSB3aXRoIGVhY2gKKyAg ICBCQiBjb250YWluaW5nIG9ubHkgYSBNSU4gb3IgTUFYIGV4cHJlc3Npb24uICAqLwogCiBzdGF0 aWMgYm9vbAotbWlubWF4X3JlcGxhY2VtZW50IChiYXNpY19ibG9jayBjb25kX2JiLCBiYXNpY19i bG9jayBtaWRkbGVfYmIsCi0JCSAgICBlZGdlIGUwLCBlZGdlIGUxLCBncGhpICpwaGksIHRyZWUg YXJnMCwgdHJlZSBhcmcxKQorbWlubWF4X3JlcGxhY2VtZW50IChiYXNpY19ibG9jayBjb25kX2Ji LCBiYXNpY19ibG9jayBtaWRkbGVfYmIsIGJhc2ljX2Jsb2NrIGFsdF9taWRkbGVfYmIsCisJCSAg ICBlZGdlIGUwLCBlZGdlIGUxLCBncGhpICpwaGksIHRyZWUgYXJnMCwgdHJlZSBhcmcxLCBib29s IHRocmVld2F5X3ApCiB7CiAgIHRyZWUgcmVzdWx0OwogICBlZGdlIHRydWVfZWRnZSwgZmFsc2Vf ZWRnZTsKQEAgLTE4OTYsMTYgKzE5NDcsMjAgQEAgbWlubWF4X3JlcGxhY2VtZW50IChiYXNpY19i bG9jayBjb25kX2JiLCBiYXNpY19ibG9jayBtaWRkbGVfYmIsCiAgIGlmIChmYWxzZV9lZGdlLT5k ZXN0ID09IG1pZGRsZV9iYikKICAgICBmYWxzZV9lZGdlID0gRURHRV9TVUNDIChmYWxzZV9lZGdl LT5kZXN0LCAwKTsKIAorICAvKiBXaGVuIFRIUkVFV0FZX1AgdGhlbiBlMSB3aWxsIHBvaW50IHRv IHRoZSBlZGdlIG9mIHRoZSBmaW5hbCB0cmFuc2l0aW9uCisgICAgIGZyb20gbWlkZGxlLWJiIHRv IGVuZC4gICovCiAgIGlmICh0cnVlX2VkZ2UgPT0gZTApCiAgICAgewotICAgICAgZ2NjX2Fzc2Vy dCAoZmFsc2VfZWRnZSA9PSBlMSk7CisgICAgICBpZiAoIXRocmVld2F5X3ApCisJZ2NjX2Fzc2Vy dCAoZmFsc2VfZWRnZSA9PSBlMSk7CiAgICAgICBhcmdfdHJ1ZSA9IGFyZzA7CiAgICAgICBhcmdf ZmFsc2UgPSBhcmcxOwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIGdjY19hc3NlcnQgKGZh bHNlX2VkZ2UgPT0gZTApOwotICAgICAgZ2NjX2Fzc2VydCAodHJ1ZV9lZGdlID09IGUxKTsKKyAg ICAgIGlmICghdGhyZWV3YXlfcCkKKwlnY2NfYXNzZXJ0ICh0cnVlX2VkZ2UgPT0gZTEpOwogICAg ICAgYXJnX3RydWUgPSBhcmcxOwogICAgICAgYXJnX2ZhbHNlID0gYXJnMDsKICAgICB9CkBAIC0x OTM3LDYgKzE5OTIsMTY1IEBAIG1pbm1heF9yZXBsYWNlbWVudCAoYmFzaWNfYmxvY2sgY29uZF9i YiwgYmFzaWNfYmxvY2sgbWlkZGxlX2JiLAogICAgICAgZWxzZQogCXJldHVybiBmYWxzZTsKICAg ICB9CisgIGVsc2UgaWYgKG1pZGRsZV9iYiAhPSBhbHRfbWlkZGxlX2JiICYmIHRocmVld2F5X3Ap CisgICAgeworICAgICAgLyogUmVjb2duaXplIHRoZSBmb2xsb3dpbmcgY2FzZToKKworCSBpZiAo c21hbGxlciA8IGxhcmdlcikKKwkgICBhID0gTUlOIChzbWFsbGVyLCBjKTsKKwkgZWxzZQorCSAg IGIgPSBNSU4gKGxhcmdlciwgYyk7CisJIHggPSBQSEkgPGEsIGI+CisKKwkgVGhpcyBpcyBlcXVp dmFsZW50IHRvCisKKwkgYSA9IE1JTiAoc21hbGxlciwgYyk7CisJIHggPSBNSU4gKGxhcmdlciwg YSk7ICAqLworCisgICAgICBnaW1wbGUgKmFzc2lnbiA9IGxhc3RfYW5kX29ubHlfc3RtdCAobWlk ZGxlX2JiKTsKKyAgICAgIHRyZWUgbGhzLCBvcDAsIG9wMSwgYm91bmQ7CisgICAgICB0cmVlIGFs dF9saHMsIGFsdF9vcDAsIGFsdF9vcDE7CisgICAgICBib29sIGludmVydCA9IGZhbHNlOworCisg ICAgICBpZiAoIXNpbmdsZV9wcmVkX3AgKG1pZGRsZV9iYikKKwkgIHx8ICFzaW5nbGVfcHJlZF9w IChhbHRfbWlkZGxlX2JiKQorCSAgfHwgIXNpbmdsZV9zdWNjX3AgKG1pZGRsZV9iYikKKwkgIHx8 ICFzaW5nbGVfc3VjY19wIChhbHRfbWlkZGxlX2JiKSkKKwlyZXR1cm4gZmFsc2U7CisKKyAgICAg IC8qIFdoZW4gVEhSRUVXQVlfUCB0aGVuIGUxIHdpbGwgcG9pbnQgdG8gdGhlIGVkZ2Ugb2YgdGhl IGZpbmFsIHRyYW5zaXRpb24KKwkgZnJvbSBtaWRkbGUtYmIgdG8gZW5kLiAgKi8KKyAgICAgIGlm ICh0cnVlX2VkZ2UgPT0gZTApCisJZ2NjX2Fzc2VydCAoZmFsc2VfZWRnZSA9PSBFREdFX1BSRUQg KGUxLT5zcmMsIDApKTsKKyAgICAgIGVsc2UKKwlnY2NfYXNzZXJ0ICh0cnVlX2VkZ2UgPT0gRURH RV9QUkVEIChlMS0+c3JjLCAwKSk7CisKKyAgICAgIGJvb2wgdmFsaWRfbWlubWF4X3AgPSBmYWxz ZTsKKyAgICAgIGdpbXBsZV9zdG10X2l0ZXJhdG9yIGl0MQorCT0gZ3NpX3N0YXJ0X25vbmRlYnVn X2FmdGVyX2xhYmVsc19iYiAobWlkZGxlX2JiKTsKKyAgICAgIGdpbXBsZV9zdG10X2l0ZXJhdG9y IGl0MgorCT0gZ3NpX3N0YXJ0X25vbmRlYnVnX2FmdGVyX2xhYmVsc19iYiAoYWx0X21pZGRsZV9i Yik7CisgICAgICBpZiAoZ3NpX29uZV9ub25kZWJ1Z19iZWZvcmVfZW5kX3AgKGl0MSkKKwkgICYm IGdzaV9vbmVfbm9uZGVidWdfYmVmb3JlX2VuZF9wIChpdDIpKQorCXsKKwkgIGdpbXBsZSAqc3Rt dDEgPSBnc2lfc3RtdCAoaXQxKTsKKwkgIGdpbXBsZSAqc3RtdDIgPSBnc2lfc3RtdCAoaXQyKTsK KwkgIGlmIChpc19naW1wbGVfYXNzaWduIChzdG10MSkgJiYgaXNfZ2ltcGxlX2Fzc2lnbiAoc3Rt dDIpKQorCSAgICB7CisJICAgICAgZW51bSB0cmVlX2NvZGUgY29kZTEgPSBnaW1wbGVfYXNzaWdu X3Joc19jb2RlIChzdG10MSk7CisJICAgICAgZW51bSB0cmVlX2NvZGUgY29kZTIgPSBnaW1wbGVf YXNzaWduX3Joc19jb2RlIChzdG10Mik7CisJICAgICAgdmFsaWRfbWlubWF4X3AgPSAoY29kZTEg PT0gTUlOX0VYUFIgfHwgY29kZTEgPT0gTUFYX0VYUFIpCisJCQkgICAgICAgJiYgKGNvZGUyID09 IE1JTl9FWFBSIHx8IGNvZGUyID09IE1BWF9FWFBSKTsKKwkgICAgfQorCX0KKworICAgICAgaWYg KCF2YWxpZF9taW5tYXhfcCkKKwlyZXR1cm4gZmFsc2U7CisKKyAgICAgIGlmICghYXNzaWduCisJ ICB8fCBnaW1wbGVfY29kZSAoYXNzaWduKSAhPSBHSU1QTEVfQVNTSUdOKQorCXJldHVybiBmYWxz ZTsKKworICAgICAgbGhzID0gZ2ltcGxlX2Fzc2lnbl9saHMgKGFzc2lnbik7CisgICAgICBhc3Nf Y29kZSA9IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKGFzc2lnbik7CisgICAgICBpZiAoYXNzX2Nv ZGUgIT0gTUFYX0VYUFIgJiYgYXNzX2NvZGUgIT0gTUlOX0VYUFIpCisJcmV0dXJuIGZhbHNlOwor CisgICAgICBvcDAgPSBnaW1wbGVfYXNzaWduX3JoczEgKGFzc2lnbik7CisgICAgICBvcDEgPSBn aW1wbGVfYXNzaWduX3JoczIgKGFzc2lnbik7CisKKyAgICAgIGFzc2lnbiA9IGxhc3RfYW5kX29u bHlfc3RtdCAoYWx0X21pZGRsZV9iYik7CisgICAgICBpZiAoIWFzc2lnbgorCSAgfHwgZ2ltcGxl X2NvZGUgKGFzc2lnbikgIT0gR0lNUExFX0FTU0lHTikKKwlyZXR1cm4gZmFsc2U7CisKKyAgICAg IGFsdF9saHMgPSBnaW1wbGVfYXNzaWduX2xocyAoYXNzaWduKTsKKyAgICAgIGlmIChhc3NfY29k ZSAhPSBnaW1wbGVfYXNzaWduX3Joc19jb2RlIChhc3NpZ24pKQorCXJldHVybiBmYWxzZTsKKwor ICAgICAgaWYgKCFvcGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJnX3AgKGxocywgYXJnX3RydWUpCisJ IHx8ICFvcGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJnX3AgKGFsdF9saHMsIGFyZ19mYWxzZSkpCisJ cmV0dXJuIGZhbHNlOworCisgICAgICBhbHRfb3AwID0gZ2ltcGxlX2Fzc2lnbl9yaHMxIChhc3Np Z24pOworICAgICAgYWx0X29wMSA9IGdpbXBsZV9hc3NpZ25fcmhzMiAoYXNzaWduKTsKKworICAg ICAgaWYgKChvcGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJnX3AgKG9wMCwgc21hbGxlcikKKwkJfHwg KGFsdF9zbWFsbGVyCisJCSAgICAmJiBvcGVyYW5kX2VxdWFsX2Zvcl9waGlfYXJnX3AgKG9wMCwg YWx0X3NtYWxsZXIpKSkKKwkgICAgICAgJiYgKG9wZXJhbmRfZXF1YWxfZm9yX3BoaV9hcmdfcCAo YWx0X29wMCwgbGFyZ2VyKQorCQkgICB8fCAoYWx0X2xhcmdlcgorCQkgICAgICAgJiYgb3BlcmFu ZF9lcXVhbF9mb3JfcGhpX2FyZ19wIChhbHRfb3AwLCBhbHRfbGFyZ2VyKSkpKQorCXsKKwkgIC8q IFdlIGdvdCBoZXJlIGlmIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSwgaS5lLiwgU01BTExFUiA8IExB UkdFUi4gICovCisJICBpZiAoIW9wZXJhbmRfZXF1YWxfZm9yX3BoaV9hcmdfcCAob3AxLCBhbHRf b3AxKSkKKwkgICAgcmV0dXJuIGZhbHNlOworCisJICBpZiAoKGFyZzAgPSBzdHJpcF9iaXRfbm90 IChvcDApKSAhPSBOVUxMCisJICAgICAgJiYgKGFyZzEgPSBzdHJpcF9iaXRfbm90IChhbHRfb3Aw KSkgIT0gTlVMTAorCSAgICAgICYmIChib3VuZCA9IHN0cmlwX2JpdF9ub3QgKG9wMSkpICE9IE5V TEwpCisJICAgIHsKKwkgICAgICBtaW5tYXggPSBNQVhfRVhQUjsKKwkgICAgICBhc3NfY29kZSA9 IGludmVydF9taW5tYXhfY29kZSAoYXNzX2NvZGUpOworCSAgICAgIGludmVydCA9IHRydWU7CisJ ICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGJvdW5kID0gb3AxOworCSAgICAgIG1pbm1h eCA9IE1JTl9FWFBSOworCSAgICAgIGFyZzAgPSBvcDA7CisJICAgICAgYXJnMSA9IGFsdF9vcDA7 CisJICAgICB9CisJfQorICAgICAgZWxzZSBpZiAoKG9wZXJhbmRfZXF1YWxfZm9yX3BoaV9hcmdf cCAob3AwLCBsYXJnZXIpCisJCXx8IChhbHRfbGFyZ2VyCisJCSAgICAmJiBvcGVyYW5kX2VxdWFs X2Zvcl9waGlfYXJnX3AgKG9wMCwgYWx0X2xhcmdlcikpKQorCSAgICAgICAmJiAob3BlcmFuZF9l cXVhbF9mb3JfcGhpX2FyZ19wIChhbHRfb3AwLCBzbWFsbGVyKQorCQkgICB8fCAoYWx0X3NtYWxs ZXIKKwkJICAgICAgICYmIG9wZXJhbmRfZXF1YWxfZm9yX3BoaV9hcmdfcCAoYWx0X29wMCwgYWx0 X3NtYWxsZXIpKSkpCisJeworCSAgLyogV2UgZ290IGhlcmUgaWYgdGhlIGNvbmRpdGlvbiBpcyB0 cnVlLCBpLmUuLCBTTUFMTEVSID4gTEFSR0VSLiAgKi8KKwkgIGlmICghb3BlcmFuZF9lcXVhbF9m b3JfcGhpX2FyZ19wIChvcDEsIGFsdF9vcDEpKQorCSAgICByZXR1cm4gZmFsc2U7CisKKwkgIGlm ICgoYXJnMCA9IHN0cmlwX2JpdF9ub3QgKG9wMCkpICE9IE5VTEwKKwkgICAgICAmJiAoYXJnMSA9 IHN0cmlwX2JpdF9ub3QgKGFsdF9vcDApKSAhPSBOVUxMCisJICAgICAgJiYgKGJvdW5kID0gc3Ry aXBfYml0X25vdCAob3AxKSkgIT0gTlVMTCkKKwkgICAgeworCSAgICAgIG1pbm1heCA9IE1JTl9F WFBSOworCSAgICAgIGFzc19jb2RlID0gaW52ZXJ0X21pbm1heF9jb2RlIChhc3NfY29kZSk7CisJ ICAgICAgaW52ZXJ0ID0gdHJ1ZTsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgYm91 bmQgPSBvcDE7CisJICAgICAgbWlubWF4ID0gTUFYX0VYUFI7CisJICAgICAgYXJnMCA9IG9wMDsK KwkgICAgICBhcmcxID0gYWx0X29wMDsKKwkgICAgIH0KKwl9CisgICAgICBlbHNlCisJcmV0dXJu IGZhbHNlOworCisgICAgICAvKiBFbWl0IHRoZSBzdGF0ZW1lbnQgdG8gY29tcHV0ZSBtaW4vbWF4 LiAgKi8KKyAgICAgIGxvY2F0aW9uX3QgbG9jdXMgPSBnaW1wbGVfbG9jYXRpb24gKGxhc3Rfc3Rt dCAoY29uZF9iYikpOworICAgICAgZ2ltcGxlX3NlcSBzdG10cyA9IE5VTEw7CisgICAgICB0cmVl IHBoaV9yZXN1bHQgPSBQSElfUkVTVUxUIChwaGkpOworICAgICAgcmVzdWx0ID0gZ2ltcGxlX2J1 aWxkICgmc3RtdHMsIGxvY3VzLCBtaW5tYXgsIFRSRUVfVFlQRSAocGhpX3Jlc3VsdCksCisJCQkg ICAgIGFyZzAsIGJvdW5kKTsKKyAgICAgIHJlc3VsdCA9IGdpbXBsZV9idWlsZCAoJnN0bXRzLCBs b2N1cywgYXNzX2NvZGUsIFRSRUVfVFlQRSAocGhpX3Jlc3VsdCksCisJCQkgICAgIHJlc3VsdCwg YXJnMSk7CisgICAgICBpZiAoaW52ZXJ0KQorCXJlc3VsdCA9IGdpbXBsZV9idWlsZCAoJnN0bXRz LCBsb2N1cywgQklUX05PVF9FWFBSLCBUUkVFX1RZUEUgKHBoaV9yZXN1bHQpLAorCQkJICAgICAg IHJlc3VsdCk7CisKKyAgICAgIGdzaSA9IGdzaV9sYXN0X2JiIChjb25kX2JiKTsKKyAgICAgIGdz aV9pbnNlcnRfc2VxX2JlZm9yZSAoJmdzaSwgc3RtdHMsIEdTSV9ORVdfU1RNVCk7CisKKyAgICAg IHJlcGxhY2VfcGhpX2VkZ2Vfd2l0aF92YXJpYWJsZSAoY29uZF9iYiwgZTEsIHBoaSwgcmVzdWx0 LCBmYWxzZSk7CisKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgZWxzZQogICAgIHsKICAg ICAgIC8qIFJlY29nbml6ZSB0aGUgZm9sbG93aW5nIGNhc2UsIGFzc3VtaW5nIGQgPD0gdToK --_002_VI1PR08MB532528528B9CAB9C0467423BFF819VI1PR08MB5325eurp_--