From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2043.outbound.protection.outlook.com [40.107.20.43]) by sourceware.org (Postfix) with ESMTPS id 613863858036 for ; Thu, 30 Sep 2021 09:57:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 613863858036 Received: from AM6PR08CA0036.eurprd08.prod.outlook.com (2603:10a6:20b:c0::24) by DB7PR08MB3066.eurprd08.prod.outlook.com (2603:10a6:5:1e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.15; Thu, 30 Sep 2021 09:56:57 +0000 Received: from VE1EUR03FT013.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:c0:cafe::a9) by AM6PR08CA0036.outlook.office365.com (2603:10a6:20b:c0::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.13 via Frontend Transport; Thu, 30 Sep 2021 09:56:57 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT013.mail.protection.outlook.com (10.152.19.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14 via Frontend Transport; Thu, 30 Sep 2021 09:56:57 +0000 Received: ("Tessian outbound 71ebfb754289:v103"); Thu, 30 Sep 2021 09:56:56 +0000 X-CR-MTA-TID: 64aa7808 Received: from 9419157abd88.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 8918691D-186A-4812-81E0-B8AA9A0F8BD5.1; Thu, 30 Sep 2021 09:56:42 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 9419157abd88.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 30 Sep 2021 09:56:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ixzq8v+UjBdqvHmsu/ydjo9cZLN8xeN1tRBMuDjldu4NOEC2m201B9TjXiJ3W+gYTcwB5gt89ZDV8oa89GgA/3hZ4IJGF1YhiymAdyxnzc1xCVCXWQFWOvfb+VdCe1/wP2gzO3vnLpk0UjNXkdRbQo+kUklHSH1nX3HX6df23LNeF0JVypqnurTfehT0LZt2PeGsu77ZSuYsO+nT4Sq0uJuw7guIvf1EsX7iaCbzgJ3oUxht7JxgK7STgCvKe2Rg2syLGmO2jFWkt01Iv7ncVHOwPkzbpQAB7LGln4Qpam8eT07euQRnJ8ybsYVoTrmvFhSZkPbsW9T2E3Yh1HTGvA== 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; bh=VUy3VRHiVK0YMDo2DZcm6f8CJyHhdCaBZnBCe97rjUI=; b=XOYEjk6xgzy8DIUJBF6i/PSLSqSveJ5u3fJGQ2RZn4oXbrklmbUcUREDxZUIeqjtE/f/vlgrELTq6BATAWjJMZIeJDW0MJV/3yu44uea/1dnU3o8Kq4XorT+PSiuBPXz5ovA/NDSOH5e/q5F2Sm8XZ0ef8KRvXl1w4NvaF9SQ7/9E1G/MuzsMwp+Vyg2Cfr9eI41uEYLahpEqVhYF48BwG2rB0agCRsCrcWy8CbIO2QRDB1N8Ij9YhpvpifA4/XcSSb+szAf8zocYagQA/SvVza1o2323Y2W6nTXSwn5jQoy50VvzwdyteSsppkVica1qjipEd+eUl20ZnvQ2pEtVA== 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 VI1PR0801MB2126.eurprd08.prod.outlook.com (2603:10a6:800:51::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.15; Thu, 30 Sep 2021 09:56:32 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::bd45:5ad5:f666:272a]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::bd45:5ad5:f666:272a%5]) with mapi id 15.20.4544.022; Thu, 30 Sep 2021 09:56:32 +0000 From: Tamar Christina To: Richard Biener CC: "gcc-patches@gcc.gnu.org" , nd Subject: RE: [PATCH 5/7]middle-end Convert bitclear + cmp #0 into cm Thread-Topic: [PATCH 5/7]middle-end Convert bitclear + cmp #0 into cm Thread-Index: AQHXtU4Cr64N+y8IjEqGo7Pasjs07qu8GyYAgAA7+bA= Date: Thu, 30 Sep 2021 09:56:32 +0000 Message-ID: References: <20210929162106.GA5336@arm.com> <81r597qr-192o-q9p-6r5o-37nn6r48n538@fhfr.qr> In-Reply-To: <81r597qr-192o-q9p-6r5o-37nn6r48n538@fhfr.qr> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 99C668DF564EC84082161CD073496D5F.0 x-checkrecipientchecked: true Authentication-Results-Original: suse.de; dkim=none (message not signed) header.d=none;suse.de; dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 786162b6-610d-43ef-c776-08d983f8a3d4 x-ms-traffictypediagnostic: VI1PR0801MB2126:|DB7PR08MB3066: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:4714;OLM:4714; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: d2ovMIe+hjuAFJ1hRCut0FDnXMC6K08l8YsNVVoMB4Ybr6NCRYi0inZo38MtX4gvUEs/o5SGxXmgBR1DgNPzO1YHwsmt4+7uUoDgJdemNkS3XAKd5TQzi/pNOtt++fkwSQvYXNYa0KikoU0h1pSjy6mVe+CU5EasOMh4skfDXSkdqz7OkWR3npv2TsJVaQRkf6KZiESgW5kBAXv4i7MfjOwq3rLDoJx6+m4D+K/lHHtavRN7KGQ97kQowK/IMA51zitghFp+YufW6myotFl3s0ETvbOTJ2ViLO7IMRbdtuhRGWPfm3mA97Ct+pX49IxCxQBjcDTP8ED1cvaSJSxxylU5/a09NJRQBBC997Vmrps5CbIwoB+CX48oPGGpan3cTRHTbMKDxP6y+sZbuIg1H96bhccxjXOovYSuiDxK5PGt9jO60ssKp3LXNF1Xb+SvL8+h8rvMo3ypuNDzg7A5TJBN/xiKpjsr9y6dca7loKuaDz6xJ5TtQthwtBtT2kCyTfT9qagCII1KrsGqZIrufQwwAZfq3aE8bwf0RIntozA/Uru7zJEn5yeLd0p5rqYQIz0KK0nSt0NLyJHi66GQwwAmPQJf06A2r8xI3NYTmtJnneEoNRWm22Wroa1sEHtB68fKAmnCXV8dXcZ/lwfyW4ahhi4+mnSzkOvWOwYZ4xhl5Fi4lTXO7R5YTDYeYoecRpzsqWv52g/sqfHiHd/Ppn3DuxKA3a9jsnZpihIRTzRpVvziPMZ5A6TF5e44o3kbYknb8sUQu01vsaygGsHeXjuWTdiWiQm276AAp/4btOA/Ps1jEeQ6ZrGdthbe+MaC X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB5325.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(8936002)(122000001)(5660300002)(9686003)(26005)(66574015)(55016002)(186003)(30864003)(38070700005)(8676002)(508600001)(52536014)(54906003)(76116006)(64756008)(66946007)(66476007)(66556008)(66446008)(71200400001)(6916009)(316002)(7696005)(33656002)(2906002)(83380400001)(38100700002)(53546011)(6506007)(4326008)(86362001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB2126 Original-Authentication-Results: suse.de; dkim=none (message not signed) header.d=none;suse.de; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT013.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: ca3c715e-9cd2-4ab6-133b-08d983f89516 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EtFMiWdNn6B7dFkR4bCOnY08Qehm/K4Z5dIlr0Gv9JHBKrG7LnOf1HqXkPQSqozcUvhDsU2PJQBdvZYu+WLXSVWw8hhGNKPaWbjRlzOnAeNrNxykTIXokbRaXISPiOUPP44GOq/d3Cm49lQC54nv8FIo2STg2kbBqjNr6rTVlUFRqA/O9cBOnraUHKnKSQkBFgSTircLE90uSvjJcaAAC8JshoeaTe3RXF9nd2SdrHXF+bYQGnLaMtNPz5geB81UmeN6ot+oq+99Xe5ETorlaktfzaIcbdcHHRZi1PEIsDELl2acoYh0oYoqiu2kmMTwJ9hnlri3e7MWimQhZeA1FzI2/XUkGMcWSnRZ5nDiNmwd0TbJhbQnT0BD8I3+E8ahHEu+hB4qIa442U/9HkMe2OhYogRdW/ozvjH+SQCGUFr/JoQtdxVReP5c+cqEbferJoVTi/xIMPRf0hFcJ9UeQhVx0m7+LQAgaPiCRA3DIC0jlwLXy3YzBilVhJsl/qZoXw/9XIUqZG1gVLvmHx516K+yVKkVLeCCeSxvzZs07GkTE7GF6a1osaIiMBCU3EuifWE3knIGtZSrXhhBFQVu/gY3EZFZQAS5eQMPccrI/bNe4wS+/dduX4RnTqlKwOV+KwciFnEQmSIt0b+QeaV8WpI8hrqiP4nVXXX6KUYbkpYqTXrmGEgiZJorkDAP4flSonnssjZaq4v/P+j+kZvtnLuIiD47dFMTMR4ef1n+ElcGpvtT9WM7FVxSgA9o4Kz6l62Ii+ez9UHs3gg94CnL2I1XC4tb7QacELGlse+vBbx1YxzdU++tiK8csHRSc7b/ X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(46966006)(36840700001)(4326008)(33656002)(36860700001)(6862004)(508600001)(8936002)(30864003)(52536014)(5660300002)(55016002)(47076005)(9686003)(54906003)(2906002)(8676002)(356005)(81166007)(86362001)(82310400003)(316002)(186003)(26005)(336012)(53546011)(66574015)(6506007)(83380400001)(7696005)(70586007)(70206006); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2021 09:56:57.1955 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 786162b6-610d-43ef-c776-08d983f8a3d4 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: VE1EUR03FT013.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3066 X-Spam-Status: No, score=-13.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: Thu, 30 Sep 2021 09:57:04 -0000 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmd1 ZW50aGVyQHN1c2UuZGU+DQo+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMzAsIDIwMjEgNzox OCBBTQ0KPiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4NCj4g Q2M6IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnOyBuZCA8bmRAYXJtLmNvbT4NCj4gU3ViamVjdDog UmU6IFtQQVRDSCA1LzddbWlkZGxlLWVuZCBDb252ZXJ0IGJpdGNsZWFyIDxpbW0+ICsgY21wPGNj PiAjMA0KPiBpbnRvIGNtPGNjMj4gPGltbTI+DQo+IA0KPiBPbiBXZWQsIDI5IFNlcCAyMDIxLCBU YW1hciBDaHJpc3RpbmEgd3JvdGU6DQo+IA0KPiA+IEhpIEFsbCwNCj4gPg0KPiA+IFRoaXMgb3B0 aW1pemVzIHRoZSBjYXNlIHdoZXJlIGEgbWFzayBZIHdoaWNoIGZ1bGZpbGxzIH5ZICsgMSA9PSBw b3cyDQo+ID4gaXMgdXNlZCB0byBjbGVhciBhIHNvbWUgYml0cyBhbmQgdGhlbiBjb21wYXJlZCBh Z2FpbnN0IDAgaW50byBvbmUNCj4gPiB3aXRob3V0IHRoZSBtYXNraW5nIGFuZCBhIGNvbXBhcmUg YWdhaW5zdCBhIGRpZmZlcmVudCBiaXQgaW1tZWRpYXRlLg0KPiA+DQo+ID4gV2UgY2FuIGRvIHRo aXMgZm9yIGFsbCB1bnNpZ25lZCBjb21wYXJlcyBhbmQgZm9yIHNpZ25lZCB3ZSBjYW4gZG8gaXQN Cj4gPiBmb3IgY29tcGFyaXNvbnMgb2YgRVEgYW5kIE5FOg0KPiA+DQo+ID4gKHggJiAofjI1NSkp ID09IDAgYmVjb21lcyB4IDw9IDI1NS4gV2hpY2ggZm9yIGxlYXZlcyBpdCB0byB0aGUgdGFyZ2V0 DQo+ID4gdG8gb3B0aW1hbGx5IGRlYWwgd2l0aCB0aGUgY29tcGFyaXNvbi4NCj4gPg0KPiA+IFRo aXMgdHJhbnNmb3JtYXRpb24gaGFzIHRvIGJlIGRvbmUgaW4gdGhlIG1pZC1lbmQgYmVjYXVzZSBp biBSVEwgeW91DQo+ID4gZG9uJ3QgaGF2ZSB0aGUgc2lnbnMgb2YgdGhlIGNvbXBhcmlzb24gb3Bl cmFuZHMgYW5kIGlmIHRoZSB0YXJnZXQNCj4gPiBuZWVkcyBhbiBpbW1lZGlhdGUgdGhpcyBzaG91 bGQgYmUgZmxvYXRlZCBvdXRzaWRlIG9mIHRoZSBsb29wLg0KPiA+DQo+ID4gVGhlIFJUTCBsb29w IGludmFyaWFudCBob2lzdGluZyBpcyBkb25lIGJlZm9yZSBzcGxpdDEuDQo+ID4NCj4gPiBpLmUu DQo+ID4NCj4gPiB2b2lkIGZ1bjEoaW50MzJfdCAqeCwgaW50IG4pDQo+ID4gew0KPiA+ICAgICBm b3IgKGludCBpID0gMDsgaSA8IChuICYgLTE2KTsgaSsrKQ0KPiA+ICAgICAgIHhbaV0gPSAoeFtp XSYofjI1NSkpID09IDA7DQo+ID4gfQ0KPiA+DQo+ID4gbm93IGdlbmVyYXRlczoNCj4gPg0KPiA+ IC5MMzoNCj4gPiAgICAgICAgIGxkciAgICAgcTAsIFt4MF0NCj4gPiAgICAgICAgIGNtaHMgICAg djAuNHMsIHYyLjRzLCB2MC40cw0KPiA+ICAgICAgICAgYW5kICAgICB2MC4xNmIsIHYxLjE2Yiwg djAuMTZiDQo+ID4gICAgICAgICBzdHIgICAgIHEwLCBbeDBdLCAxNg0KPiA+ICAgICAgICAgY21w ICAgICB4MCwgeDENCj4gPiAgICAgICAgIGJuZSAgICAgLkwzDQo+ID4NCj4gPiBhbmQgZmxvYXRz IHRoZSBpbW1lZGlhdGUgb3V0IG9mIHRoZSBsb29wLg0KPiA+DQo+ID4gaW5zdGVhZCBvZjoNCj4g Pg0KPiA+IC5MMzoNCj4gPiAgICAgICAgIGxkciAgICAgcTAsIFt4MF0NCj4gPiAgICAgICAgIGJp YyAgICAgdjAuNHMsICMyNTUNCj4gPiAgICAgICAgIGNtZXEgICAgdjAuNHMsIHYwLjRzLCAjMA0K PiA+ICAgICAgICAgYW5kICAgICB2MC4xNmIsIHYxLjE2YiwgdjAuMTZiDQo+ID4gICAgICAgICBz dHIgICAgIHEwLCBbeDBdLCAxNg0KPiA+ICAgICAgICAgY21wICAgICB4MCwgeDENCj4gPiAgICAg ICAgIGJuZSAgICAgLkwzDQo+ID4NCj4gPiBCb290c3RyYXBwZWQgUmVndGVzdGVkIG9uIGFhcmNo NjQtbm9uZS1saW51eC1nbnUsIHg4Nl82NC1wYy1saW51eC1nbnUNCj4gPiBhbmQgbm8gaXNzdWVz Lg0KPiA+DQo+ID4gT2sgZm9yIG1hc3Rlcj8NCj4gPg0KPiA+IFRoYW5rcywNCj4gPiBUYW1hcg0K PiA+DQo+ID4gZ2NjL0NoYW5nZUxvZzoNCj4gPg0KPiA+IAkqIG1hdGNoLnBkOiBOZXcgYml0bWFz ayBjb21wYXJlIHBhdHRlcm4uDQo+ID4NCj4gPiBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoNCj4g Pg0KPiA+IAkqIGdjYy5kZy9iaWMtYml0bWFzay0xMC5jOiBOZXcgdGVzdC4NCj4gPiAJKiBnY2Mu ZGcvYmljLWJpdG1hc2stMTEuYzogTmV3IHRlc3QuDQo+ID4gCSogZ2NjLmRnL2JpYy1iaXRtYXNr LTEyLmM6IE5ldyB0ZXN0Lg0KPiA+IAkqIGdjYy5kZy9iaWMtYml0bWFzay0yLmM6IE5ldyB0ZXN0 Lg0KPiA+IAkqIGdjYy5kZy9iaWMtYml0bWFzay0zLmM6IE5ldyB0ZXN0Lg0KPiA+IAkqIGdjYy5k Zy9iaWMtYml0bWFzay00LmM6IE5ldyB0ZXN0Lg0KPiA+IAkqIGdjYy5kZy9iaWMtYml0bWFzay01 LmM6IE5ldyB0ZXN0Lg0KPiA+IAkqIGdjYy5kZy9iaWMtYml0bWFzay02LmM6IE5ldyB0ZXN0Lg0K PiA+IAkqIGdjYy5kZy9iaWMtYml0bWFzay03LmM6IE5ldyB0ZXN0Lg0KPiA+IAkqIGdjYy5kZy9i aWMtYml0bWFzay04LmM6IE5ldyB0ZXN0Lg0KPiA+IAkqIGdjYy5kZy9iaWMtYml0bWFzay05LmM6 IE5ldyB0ZXN0Lg0KPiA+IAkqIGdjYy5kZy9iaWMtYml0bWFzay5oOiBOZXcgdGVzdC4NCj4gPiAJ KiBnY2MudGFyZ2V0L2FhcmNoNjQvYmljLWJpdG1hc2stMS5jOiBOZXcgdGVzdC4NCj4gPg0KPiA+ IC0tLSBpbmxpbmUgY29weSBvZiBwYXRjaCAtLQ0KPiA+IGRpZmYgLS1naXQgYS9nY2MvbWF0Y2gu cGQgYi9nY2MvbWF0Y2gucGQgaW5kZXgNCj4gPg0KPiAwZmNmZDBlYTYyYzA0M2RjMjE3ZDBkNTYw Y2U1YjdlNTY5YjcwZTdkLi5kZjkyMTJjYjI3ZDE3Mjg1NmI5ZDQzYjA4DQo+IDc1Mg0KPiA+IDYy Zjk2ZTg5OTNjNCAxMDA2NDQNCj4gPiAtLS0gYS9nY2MvbWF0Y2gucGQNCj4gPiArKysgYi9nY2Mv bWF0Y2gucGQNCj4gPiBAQCAtNDI4OCw2ICs0Mjg4LDU2IEBAIERFRklORV9JTlRfQU5EX0ZMT0FU X1JPVU5EX0ZOIChSSU5UKQ0KPiA+ICAgICAgKGlmIChpYyA9PSBuY21wKQ0KPiA+ICAgICAgIChu Y21wIEAwIEAxKSkpKSkpDQo+ID4NCj4gPiArLyogVHJhbnNmb3JtIGNvbXBhcmlzb25zIG9mIHRo ZSBmb3JtIChYICYgWSkgQ01QIDAgdG8gWCBDTVAyIFoNCj4gPiArICAgd2hlcmUgflkgKyAxID09 IHBvdzIgYW5kIFogPSB+WS4gICovIChmb3IgY21wIChzaW1wbGVfY29tcGFyaXNvbikNCj4gPiAr KHNpbXBsaWZ5DQo+ID4gKyAgKGNtcCAoYml0X2FuZDpjIEAwIFZFQ1RPUl9DU1RAMSkgaW50ZWdl cl96ZXJvcCkNCj4gDQo+IFdoeSBub3QgZm9yIElOVEVHRVJfQ1NUIGFzIHdlbGw/ICBXZSBkbyBo YXZlIGEgcmVsYXRlZCBmb2xkaW5nIChvbmx5IGZvcg0KPiBJTlRFR0VSX0NTVCkgdGhhdCBkb2Vz DQo+IA0KDQpCZWNhdXNlIG9mIGEgc2xpZ2h0IGNvbmNlcm4gdG8gZGUtb3B0aW1pemUgd2hhdCB0 YXJnZXRzIGN1cnJlbnRseSBnZW5lcmF0ZSBmb3IgdGhlIGZsYWcgc2V0dGluZyB2YXJpYW50cy4N ClNvIGZvciBleGFtcGxlIEFBcmNoNjQgZ2VuZXJhdGVzIHdvcnNlIGNvZGUgZm9yIGZvbyB0aGFu IGl0IGRvZXMgYmFyDQoNCmludCBmb28gKGludCB4KQ0Kew0KICAgIGlmICh4IDw9IDB4RkZGRikN CiAgICAgIHJldHVybiAxOw0KDQogICAgcmV0dXJuIDA7DQp9DQoNCmludCBiYXIgKGludCB4KQ0K ew0KICAgIGlmICh4ICYgfjB4RkZGRikNCiAgICAgIHJldHVybiAxOw0KDQogICAgcmV0dXJuIDA7 DQp9DQoNCkJlY2F1c2UgdGhlIGZsYWcgc2V0dGluZyBiaXRtYXNrIHdhcyBvcHRpbWl6ZWQgbW9y ZS4gIEkgY2FuIG9mIGNvdXJzZSBkbyB0aGlzIGFuZCBmaXgNCkFBcmNoNjQgYnV0IG90aGVyIHRh cmdldHMgbWF5IGhhdmUgdGhlIHNhbWUgaXNzdWUuICBGb3IgdmVjdG9ycyB0aGlzIHdhcyBsZXNz IG9mIGEgY29uY2VybiBzaW5jZQ0KdGhlcmUncyBub3QgZmxhZyBzZXR0aW5nIHRoZXJlLg0KDQpE byB5b3Ugc3RpbGwgd2FudCB0aGUgc2NhbGFyIHZlcnNpb24/DQoNClRoYW5rcywNClRhbWFyDQoN Cj4gLyogQSAmICgyKipOIC0gMSkgPD0gMioqSyAtIDEgLT4gQSAmICgyKipOIC0gMioqSykgPT0g MA0KPiAgICBBICYgKDIqKk4gLSAxKSA+ICAyKipLIC0gMSAtPiBBICYgKDIqKk4gLSAyKipLKSAh PSAwDQo+IA0KPiB3aGljaCBjb3VsZCBiZSBleHRlbmRlZCBmb3IgaW50ZWdlciB2ZWN0b3JzLiAg VGhhdCBzYWlkLCBjYW4geW91IHBsZWFzZSBwbGFjZQ0KPiB0aGUgcGF0dGVybiBuZXh0IHRvIHRo ZSBhYm92ZT8NCj4gDQo+IFdoeSBkb2VzIHRoZSB0cmFuc2Zvcm0gb25seSB3b3JrIGZvciB1bmlm b3JtIHZlY3RvciBjb25zdGFudHM/ICAoSSBzZWUgdGhhdA0KPiB0aGUgaW1wbGVtZW50YXRpb24g YmVjb21lcyBzaW1wbGVyLCBidXQgdGhlbiB5b3Ugc2hvdWxkIGFsc28gaGFuZGxlIHRoZQ0KPiBJ TlRFR0VSX0NTVCBjYXNlIGF0IGxlYXN0KQ0KPiANCj4gPiArICAgKGlmIChWRUNUT1JfSU5URUdF Ul9UWVBFX1AgKFRSRUVfVFlQRSAoQDEpKQ0KPiA+ICsJJiYgdW5pZm9ybV92ZWN0b3JfcCAoQDEp KQ0KPiA+ICsgICAgKHdpdGggeyB0cmVlIGVsdCA9IHZlY3Rvcl9jc3RfZWx0IChAMSwgMCk7IH0N Cj4gPiArICAgICAoc3dpdGNoDQo+ID4gKyAgICAgIChpZiAoVFlQRV9VTlNJR05FRCAoVFJFRV9U WVBFIChAMSkpICYmIHRyZWVfZml0c191aHdpX3AgKGVsdCkpDQo+IA0KPiBhdm9pZCB0cmVlX2Zp dHNfdWh3aV9wIGFuZCB1c2Ugd2lkZV9pbnQgaGVyZQ0KPiANCj4gPiArCSh3aXRoIHsgdW5zaWdu ZWQgSE9TVF9XSURFX0lOVCBkaWZmID0gdHJlZV90b191aHdpIChlbHQpOw0KPiA+ICsJICAgICAg ICB0cmVlIHRkaWZmID0gd2lkZV9pbnRfdG9fdHJlZSAoVFJFRV9UWVBFIChlbHQpLCAofmRpZmYp ICsgMSk7DQo+ID4gKwkJdHJlZSBuZXd2YWwgPSB3aWRlX2ludF90b190cmVlIChUUkVFX1RZUEUg KGVsdCksIH5kaWZmKTsNCj4gPiArCQl0cmVlIG5ld21hc2sgPSBidWlsZF91bmlmb3JtX2NzdCAo VFJFRV9UWVBFIChAMSksDQo+IG5ld3ZhbCk7IH0NCj4gPiArCSAoaWYgKGludGVnZXJfcG93MnAg KHRkaWZmKSkNCj4gDQo+IFlvdSBkb24ndCBzZWVtIHRvIHVzZSAndGRpZmYnIHNvIHBsZWFzZSBk byB0aGlzIGNoZWNrIGluIHdpZGVfaW50DQo+IA0KPiA+ICsJICAoc3dpdGNoDQo+ID4gKwkgICAv KiAoKG1hc2sgJiB4KSA8IDApIC0+IDAuICAqLw0KPiA+ICsJICAgKGlmIChjbXAgPT0gTFRfRVhQ UikNCj4gPiArCSAgICB7IGJ1aWxkX3plcm9fY3N0IChUUkVFX1RZUEUgKEAxKSk7IH0pDQo+ID4g KwkgICAvKiAoKG1hc2sgJiB4KSA8PSAwKSAtPiB4IDwgbWFzay4gICovDQo+ID4gKwkgICAoaWYg KGNtcCA9PSBMRV9FWFBSKQ0KPiA+ICsJICAgIChsdCBAMCB7IG5ld21hc2s7IH0pKQ0KPiA+ICsJ ICAgLyogKChtYXNrICYgeCkgPT0gMCkgLT4geCA8IG1hc2suICAqLw0KPiA+ICsJICAgKGlmIChj bXAgPT0gRVFfRVhQUikNCj4gPiArCSAgICAobGUgQDAgeyBuZXdtYXNrOyB9KSkNCj4gPiArCSAg IC8qICgobWFzayAmIHgpICE9IDApIC0+IHggPiBtYXNrLiAgKi8NCj4gPiArCSAgIChpZiAoY21w ID09IE5FX0VYUFIpDQo+ID4gKwkgICAgKGd0IEAwIHsgbmV3bWFzazsgfSkpDQo+ID4gKwkgICAv KiAoKG1hc2sgJiB4KSA+PSAwKSAtPiB4IDw9IG1hc2suICAqLw0KPiA+ICsJICAgKGlmIChjbXAg PT0gR0VfRVhQUikNCj4gPiArCSAgICAobGUgQDAgeyBuZXdtYXNrOyB9KSkNCj4gPiArCSAgICAv KiAoKG1hc2sgJiB4KSA+IDApIC0+IHggPCBtYXNrLiAgKi8NCj4gPiArCSAgIChpZiAoY21wID09 IEdUX0VYUFIpDQo+ID4gKwkgICAgKGx0IEAwIHsgbmV3bWFzazsgfSkpKSkpKQ0KPiANCj4geW91 IGNhbiBhdm9pZCB0aGlzIHN3aXRjaCB3aXRoIGEgbG9jay1zdGVwIChmb3IsIHRoYXQgbWFwcyAn Y21wJw0KPiB0byB0aGUgcmVzdWx0IGNvbXBhcmlzb24gY29kZSAoZm9yIHNpbXBsaWNpdHkgeW91 IGNhbiBlaXRoZXIga2VlcCB0aGUgTFRfRVhQUg0KPiBzcGVjaWFsLWNhc2Ugb3IgdHJhbnNmb3Jt IHRvIGFuIGFsd2F5cyB0cnVlIGNvbmRpdGlvbiB3aGljaCB3aWxsIGJlIHNpbXBsaWZpZWQpLg0K PiANCj4gPiArICAgICAgKGlmICghVFlQRV9VTlNJR05FRCAoVFJFRV9UWVBFIChAMSkpICYmIHRy ZWVfZml0c19zaHdpX3AgKGVsdCkpDQo+ID4gKwkod2l0aCB7IHVuc2lnbmVkIEhPU1RfV0lERV9J TlQgZGlmZiA9IHRyZWVfdG9fc2h3aSAoZWx0KTsNCj4gPiArCQl0cmVlIHVzdHlwZSA9IHVuc2ln bmVkX3R5cGVfZm9yIChUUkVFX1RZUEUgKGVsdCkpOw0KPiA+ICsJCXRyZWUgdXZ0eXBlID0gdW5z aWduZWRfdHlwZV9mb3IgKFRSRUVfVFlQRSAoQDEpKTsNCj4gPiArCSAgICAgICAgdHJlZSB0ZGlm ZiA9IHdpZGVfaW50X3RvX3RyZWUgKHVzdHlwZSwgKH5kaWZmKSArIDEpOw0KPiA+ICsJICAgICAg ICB0cmVlIHVkaWZmID0gd2lkZV9pbnRfdG9fdHJlZSAodXN0eXBlLCB+ZGlmZik7DQo+ID4gKwkJ dHJlZSBjc3QgPSBidWlsZF91bmlmb3JtX2NzdCAodXZ0eXBlLCB1ZGlmZik7IH0NCj4gPiArCSAo aWYgKGludGVnZXJfcG93MnAgKHRkaWZmKSkNCj4gPiArCSAgKHN3aXRjaA0KPiA+ICsJICAgIC8q ICgobWFzayAmIHgpID09IDApIC0+IHggPCBtYXNrLiAgKi8NCj4gPiArCSAgICAoaWYgKGNtcCA9 PSBFUV9FWFBSKQ0KPiA+ICsJICAgICAobGUgKGNvbnZlcnQ6dXZ0eXBlIEAwKSB7IGNzdDsgfSkp DQo+ID4gKwkgICAgLyogKChtYXNrICYgeCkgIT0gMCkgLT4geCA+IG1hc2suICAqLw0KPiA+ICsJ ICAgIChpZiAoY21wID09IE5FX0VYUFIpDQo+ID4gKwkgICAgIChndCAoY29udmVydDp1dnR5cGUg QDApIHsgY3N0OyB9KSkpKSkpKSkpKSkNCj4gPiArDQo+ID4gIC8qIFRyYW5zZm9ybSBjb21wYXJp c29ucyBvZiB0aGUgZm9ybSBYIC0gWSBDTVAgMCB0byBYIENNUCBZLg0KPiA+ICAgICA/Pz8gVGhl IHRyYW5zZm9ybWF0aW9uIGlzIHZhbGlkIGZvciB0aGUgb3RoZXIgb3BlcmF0b3JzIGlmIG92ZXJm bG93DQo+ID4gICAgIGlzIHVuZGVmaW5lZCBmb3IgdGhlIHR5cGUsIGJ1dCBwZXJmb3JtaW5nIGl0 IGhlcmUgYmFkbHkgaW50ZXJhY3RzDQo+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL2JpYy1iaXRtYXNrLTEwLmMNCj4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2JpYy1iaXRt YXNrLTEwLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4DQo+ID4NCj4gMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZhMjJhMjMxMzEzN2EyYTc1 ZGQ3MTFjMmMNCj4gMTUNCj4gPiBjMmQzYTM0ZTE1YWENCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4g KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYmljLWJpdG1hc2stMTAuYw0KPiA+IEBAIC0wLDAg KzEsMjYgQEANCj4gPiArLyogeyBkZy1kbyBydW4gfSAqLw0KPiA+ICsvKiB7IGRnLW9wdGlvbnMg Ii1PMyAtc2F2ZS10ZW1wcyAtZmR1bXAtdHJlZS1kY2UiIH0gKi8NCj4gPiArDQo+ID4gKyNpbmNs dWRlIDxzdGRpbnQuaD4NCj4gPiArDQo+ID4gK19fYXR0cmlidXRlX18oKG5vaW5saW5lLCBub2lw YSkpDQo+ID4gK3ZvaWQgZnVuMShpbnQzMl90ICp4LCBpbnQgbikNCj4gPiArew0KPiA+ICsgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCAobiAmIC0xNik7IGkrKykNCj4gPiArICAgICAgeFtpXSA9ICh4 W2ldJih+MjU1KSkgPT0gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArX19hdHRyaWJ1dGVfXygobm9p bmxpbmUsIG5vaXBhLCBvcHRpbWl6ZSgiTzEiKSkpIHZvaWQgZnVuMihpbnQzMl90DQo+ID4gKyp4 LCBpbnQgbikgew0KPiA+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAobiAmIC0xNik7IGkrKykN Cj4gPiArICAgICAgeFtpXSA9ICh4W2ldJih+MjU1KSkgPT0gMDsNCj4gPiArfQ0KPiA+ICsNCj4g PiArI2RlZmluZSBUWVBFIGludDMyX3QNCj4gPiArI2luY2x1ZGUgImJpYy1iaXRtYXNrLmgiDQo+ ID4gKw0KPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgezw9XHMqLitceyAyNTUs LitcfX0gZGNlNyB9IH0gKi8NCj4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5v dCB7JlxzKi4rXHsgNDI5NDk2NzI5MCwuK1x9fSBkY2U3IH0NCj4gPiArfSAqLw0KPiA+ICsvKiB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtbm90IHtccytiaWNccyt9IGRjZTcgeyB0YXJnZXQg ew0KPiA+ICthYXJjaDY0Ki0qLSogfSB9IH0gfSAqLw0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYmljLWJpdG1hc2stMTEuYw0KPiA+IGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvYmljLWJpdG1hc2stMTEuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4g aW5kZXgNCj4gPg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z MjU1M2Q3YmEyZjgyM2Y3YTIxMjM3NDUxOQ0KPiA5MA0KPiA+IGQwYTIxNmQyZjkxMg0KPiA+IC0t LSAvZGV2L251bGwNCj4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9iaWMtYml0bWFzay0x MS5jDQo+ID4gQEAgLTAsMCArMSwyNSBAQA0KPiA+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+ID4g Ky8qIHsgZGctb3B0aW9ucyAiLU8zIC1zYXZlLXRlbXBzIC1mZHVtcC10cmVlLWRjZSIgfSAqLw0K PiA+ICsNCj4gPiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiA+ICsNCj4gPiArX19hdHRyaWJ1dGVf Xygobm9pbmxpbmUsIG5vaXBhKSkNCj4gPiArdm9pZCBmdW4xKHVpbnQzMl90ICp4LCBpbnQgbikN Cj4gPiArew0KPiA+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAobiAmIC0xNik7IGkrKykNCj4g PiArICAgICAgeFtpXSA9ICh4W2ldJih+MjU1KSkgIT0gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr X19hdHRyaWJ1dGVfXygobm9pbmxpbmUsIG5vaXBhLCBvcHRpbWl6ZSgiTzEiKSkpIHZvaWQgZnVu Mih1aW50MzJfdA0KPiA+ICsqeCwgaW50IG4pIHsNCj4gPiArICAgIGZvciAoaW50IGkgPSAwOyBp IDwgKG4gJiAtMTYpOyBpKyspDQo+ID4gKyAgICAgIHhbaV0gPSAoeFtpXSYofjI1NSkpICE9IDA7 DQo+ID4gK30NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJiaWMtYml0bWFzay5oIg0KPiA+ICsNCj4g PiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wIHs+XHMqLitceyAyNTUsLitcfX0gZGNl NyB9IH0gKi8NCj4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCB7JlxzKi4r XHsgNDI5NDk2NzI5MCwuK1x9fSBkY2U3IH0NCj4gPiArfSAqLw0KPiA+ICsvKiB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAtbm90IHtccytiaWNccyt9IGRjZTcgeyB0YXJnZXQgew0KPiA+ICth YXJjaDY0Ki0qLSogfSB9IH0gfSAqLw0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvYmljLWJpdG1hc2stMTIuYw0KPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv YmljLWJpdG1hc2stMTIuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgNCj4g Pg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTBjYmY3ZmFi ZTJkYmY3Y2U0MzZjZGYzNw0KPiBiMA0KPiA+IGY4YjIwN2M1ODQwOA0KPiA+IC0tLSAvZGV2L251 bGwNCj4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9iaWMtYml0bWFzay0xMi5jDQo+ID4g QEAgLTAsMCArMSwxNyBAQA0KPiA+ICsvKiB7IGRnLWRvIGFzc2VtYmxlIH0gKi8NCj4gPiArLyog eyBkZy1vcHRpb25zICItTzMgLWZkdW1wLXRyZWUtZGNlIiB9ICovDQo+ID4gKw0KPiA+ICsjaW5j bHVkZSA8c3RkaW50Lmg+DQo+ID4gKw0KPiA+ICt0eXBlZGVmIHVuc2lnbmVkIGludCB2NHNpIF9f YXR0cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSAoMTYpKSk7DQo+ID4gKw0KPiA+ICtfX2F0dHJpYnV0 ZV9fKChub2lubGluZSwgbm9pcGEpKQ0KPiA+ICt2b2lkIGZ1bih2NHNpICp4LCBpbnQgbikNCj4g PiArew0KPiA+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAobiAmIC0xNik7IGkrKykNCj4gPiAr ICAgICAgeFtpXSA9ICh4W2ldJih+MjU1KSkgPT0gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wIHs8PVxzKi4rXHsgMjU1LC4rXH19IGRjZTcgfSB9 ICovDQo+ID4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgeyZccyouK1x7IDQy OTQ5NjcyOTAsLitcfX0gZGNlNyB9DQo+ID4gK30gKi8NCj4gPiArLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLW5vdCB7XHMrYmljXHMrfSBkY2U3IHsgdGFyZ2V0IHsNCj4gPiArYWFyY2g2 NCotKi0qIH0gfSB9IH0gKi8NCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv YmljLWJpdG1hc2stMi5jDQo+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9iaWMtYml0bWFzay0y LmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4DQo+ID4NCj4gMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGEzMGZhZDg5ZjZjODIzOWJhYTQzOTVi M2YNCj4gZmENCj4gPiBlYzBiZTU3N2UxM2YNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYmljLWJpdG1hc2stMi5jDQo+ID4gQEAgLTAsMCArMSwyNSBA QA0KPiA+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+ID4gKy8qIHsgZGctb3B0aW9ucyAiLU8zIC1z YXZlLXRlbXBzIC1mZHVtcC10cmVlLWRjZSIgfSAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPHN0 ZGludC5oPg0KPiA+ICsNCj4gPiArX19hdHRyaWJ1dGVfXygobm9pbmxpbmUsIG5vaXBhKSkNCj4g PiArdm9pZCBmdW4xKHVpbnQzMl90ICp4LCBpbnQgbikNCj4gPiArew0KPiA+ICsgICAgZm9yIChp bnQgaSA9IDA7IGkgPCAobiAmIC0xNik7IGkrKykNCj4gPiArICAgICAgeFtpXSA9ICh4W2ldJih+ MjU1KSkgPT0gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArX19hdHRyaWJ1dGVfXygobm9pbmxpbmUs IG5vaXBhLCBvcHRpbWl6ZSgiTzEiKSkpIHZvaWQgZnVuMih1aW50MzJfdA0KPiA+ICsqeCwgaW50 IG4pIHsNCj4gPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKG4gJiAtMTYpOyBpKyspDQo+ID4g KyAgICAgIHhbaV0gPSAoeFtpXSYofjI1NSkpID09IDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKyNp bmNsdWRlICJiaWMtYml0bWFzay5oIg0KPiA+ICsNCj4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wLXRpbWVzIHs8PVxzKi4rXHsgMjU1LC4rXH19IDEgZGNlNyB9IH0NCj4gPiArKi8N Cj4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCB7JlxzKi4rXHsgNDI5NDk2 NzA0MCwuK1x9fSBkY2U3IH0NCj4gPiArfSAqLw0KPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAtbm90IHtccytiaWNccyt9IGRjZTcgeyB0YXJnZXQgew0KPiA+ICthYXJjaDY0Ki0q LSogfSB9IH0gfSAqLw0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvYmljLWJpdG1hc2stMy5jDQo+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9iaWMtYml0bWFz ay0zLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4DQo+ID4NCj4gMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGEzMGZhZDg5ZjZjODIzOWJhYTQz OTViM2YNCj4gZmENCj4gPiBlYzBiZTU3N2UxM2YNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYmljLWJpdG1hc2stMy5jDQo+ID4gQEAgLTAsMCArMSwy NSBAQA0KPiA+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+ID4gKy8qIHsgZGctb3B0aW9ucyAiLU8z IC1zYXZlLXRlbXBzIC1mZHVtcC10cmVlLWRjZSIgfSAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUg PHN0ZGludC5oPg0KPiA+ICsNCj4gPiArX19hdHRyaWJ1dGVfXygobm9pbmxpbmUsIG5vaXBhKSkN Cj4gPiArdm9pZCBmdW4xKHVpbnQzMl90ICp4LCBpbnQgbikNCj4gPiArew0KPiA+ICsgICAgZm9y IChpbnQgaSA9IDA7IGkgPCAobiAmIC0xNik7IGkrKykNCj4gPiArICAgICAgeFtpXSA9ICh4W2ld Jih+MjU1KSkgPT0gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArX19hdHRyaWJ1dGVfXygobm9pbmxp bmUsIG5vaXBhLCBvcHRpbWl6ZSgiTzEiKSkpIHZvaWQgZnVuMih1aW50MzJfdA0KPiA+ICsqeCwg aW50IG4pIHsNCj4gPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKG4gJiAtMTYpOyBpKyspDQo+ ID4gKyAgICAgIHhbaV0gPSAoeFtpXSYofjI1NSkpID09IDA7DQo+ID4gK30NCj4gPiArDQo+ID4g KyNpbmNsdWRlICJiaWMtYml0bWFzay5oIg0KPiA+ICsNCj4gPiArLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzIHs8PVxzKi4rXHsgMjU1LC4rXH19IDEgZGNlNyB9IH0NCj4gPiAr Ki8NCj4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCB7JlxzKi4rXHsgNDI5 NDk2NzA0MCwuK1x9fSBkY2U3IH0NCj4gPiArfSAqLw0KPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAtbm90IHtccytiaWNccyt9IGRjZTcgeyB0YXJnZXQgew0KPiA+ICthYXJjaDY0 Ki0qLSogfSB9IH0gfSAqLw0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvYmljLWJpdG1hc2stNC5jDQo+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9iaWMtYml0 bWFzay00LmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4DQo+ID4NCj4gMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJjZjIzY2NmMTQ0N2Q2Yzhj OTk5ZWQxZWINCj4gMjUNCj4gPiBiYTBhNDUwMDI4ZTENCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4g KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYmljLWJpdG1hc2stNC5jDQo+ID4gQEAgLTAsMCAr MSwyNSBAQA0KPiA+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+ID4gKy8qIHsgZGctb3B0aW9ucyAi LU8zIC1zYXZlLXRlbXBzIC1mZHVtcC10cmVlLWRjZSIgfSAqLw0KPiA+ICsNCj4gPiArI2luY2x1 ZGUgPHN0ZGludC5oPg0KPiA+ICsNCj4gPiArX19hdHRyaWJ1dGVfXygobm9pbmxpbmUsIG5vaXBh KSkNCj4gPiArdm9pZCBmdW4xKHVpbnQzMl90ICp4LCBpbnQgbikNCj4gPiArew0KPiA+ICsgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCAobiAmIC0xNik7IGkrKykNCj4gPiArICAgICAgeFtpXSA9ICh4 W2ldJih+MjU1KSkgPj0gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArX19hdHRyaWJ1dGVfXygobm9p bmxpbmUsIG5vaXBhLCBvcHRpbWl6ZSgiTzEiKSkpIHZvaWQgZnVuMih1aW50MzJfdA0KPiA+ICsq eCwgaW50IG4pIHsNCj4gPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKG4gJiAtMTYpOyBpKysp DQo+ID4gKyAgICAgIHhbaV0gPSAoeFtpXSYofjI1NSkpID49IDA7DQo+ID4gK30NCj4gPiArDQo+ ID4gKyNpbmNsdWRlICJiaWMtYml0bWFzay5oIg0KPiA+ICsNCj4gPiArLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzIHs9XHMqLitceyAxLC4rXH19IDEgZGNlNyB9IH0gKi8NCj4g PiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCB7JlxzKi4rXHsgNDI5NDk2NzA0 MCwuK1x9fSBkY2U3IH0NCj4gPiArfSAqLw0KPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtbm90IHtccytiaWNccyt9IGRjZTcgeyB0YXJnZXQgew0KPiA+ICthYXJjaDY0Ki0qLSog fSB9IH0gfSAqLw0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv YmljLWJpdG1hc2stNS5jDQo+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9iaWMtYml0bWFzay01 LmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4DQo+ID4NCj4gMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU1YTJmY2E5OTkyZWZiYzAxZjhkYmJj NmYNCj4gOTUNCj4gPiA5MzZlODY2NDMwMjgNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYmljLWJpdG1hc2stNS5jDQo+ID4gQEAgLTAsMCArMSwyNSBA QA0KPiA+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+ID4gKy8qIHsgZGctb3B0aW9ucyAiLU8zIC1z YXZlLXRlbXBzIC1mZHVtcC10cmVlLWRjZSIgfSAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPHN0 ZGludC5oPg0KPiA+ICsNCj4gPiArX19hdHRyaWJ1dGVfXygobm9pbmxpbmUsIG5vaXBhKSkNCj4g PiArdm9pZCBmdW4xKHVpbnQzMl90ICp4LCBpbnQgbikNCj4gPiArew0KPiA+ICsgICAgZm9yIChp bnQgaSA9IDA7IGkgPCAobiAmIC0xNik7IGkrKykNCj4gPiArICAgICAgeFtpXSA9ICh4W2ldJih+ MjU1KSkgPiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtfX2F0dHJpYnV0ZV9fKChub2lubGluZSwg bm9pcGEsIG9wdGltaXplKCJPMSIpKSkgdm9pZCBmdW4yKHVpbnQzMl90DQo+ID4gKyp4LCBpbnQg bikgew0KPiA+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAobiAmIC0xNik7IGkrKykNCj4gPiAr ICAgICAgeFtpXSA9ICh4W2ldJih+MjU1KSkgPiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsjaW5j bHVkZSAiYmljLWJpdG1hc2suaCINCj4gPiArDQo+ID4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcC10aW1lcyB7PlxzKi4rXHsgMjU1LC4rXH19IDEgZGNlNyB9IH0NCj4gPiArKi8NCj4g PiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCB7JmBzKi4rXHsgNDI5NDk2NzA0 MCwuK1x9fSBkY2U3IH0NCj4gPiArfSAqLw0KPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtbm90IHtccytiaWNccyt9IGRjZTcgeyB0YXJnZXQgew0KPiA+ICthYXJjaDY0Ki0qLSog fSB9IH0gfSAqLw0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv YmljLWJpdG1hc2stNi5jDQo+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9iaWMtYml0bWFzay02 LmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4DQo+ID4NCj4gMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE4ZTdhNDM0OGM5ZmM0NjExMDZjM2Q5 ZDANCj4gMTINCj4gPiA5MTMyNWQzNDA2YzINCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYmljLWJpdG1hc2stNi5jDQo+ID4gQEAgLTAsMCArMSwyNSBA QA0KPiA+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+ID4gKy8qIHsgZGctb3B0aW9ucyAiLU8zIC1z YXZlLXRlbXBzIC1mZHVtcC10cmVlLWRjZSIgfSAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPHN0 ZGludC5oPg0KPiA+ICsNCj4gPiArX19hdHRyaWJ1dGVfXygobm9pbmxpbmUsIG5vaXBhKSkNCj4g PiArdm9pZCBmdW4xKHVpbnQzMl90ICp4LCBpbnQgbikNCj4gPiArew0KPiA+ICsgICAgZm9yIChp bnQgaSA9IDA7IGkgPCAobiAmIC0xNik7IGkrKykNCj4gPiArICAgICAgeFtpXSA9ICh4W2ldJih+ MjU1KSkgPD0gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArX19hdHRyaWJ1dGVfXygobm9pbmxpbmUs IG5vaXBhLCBvcHRpbWl6ZSgiTzEiKSkpIHZvaWQgZnVuMih1aW50MzJfdA0KPiA+ICsqeCwgaW50 IG4pIHsNCj4gPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKG4gJiAtMTYpOyBpKyspDQo+ID4g KyAgICAgIHhbaV0gPSAoeFtpXSYofjI1NSkpIDw9IDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKyNp bmNsdWRlICJiaWMtYml0bWFzay5oIg0KPiA+ICsNCj4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wLXRpbWVzIHs8PVxzKi4rXHsgMjU1LC4rXH19IDEgZGNlNyB9IH0NCj4gPiArKi8N Cj4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCB7JlxzKi4rXHsgNDI5NDk2 NzA0MCwuK1x9fSBkY2U3IH0NCj4gPiArfSAqLw0KPiA+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAtbm90IHtccytiaWNccyt9IGRjZTcgeyB0YXJnZXQgew0KPiA+ICthYXJjaDY0Ki0q LSogfSB9IH0gfSAqLw0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvYmljLWJpdG1hc2stNy5jDQo+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9iaWMtYml0bWFz ay03LmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4DQo+ID4NCj4gMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk4Njc4ZmI3NTU1MDUyYzkzYWJj NGNhMzQNCj4gZjYNCj4gPiAxN2Q2NDBmNzNiYjQNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYmljLWJpdG1hc2stNy5jDQo+ID4gQEAgLTAsMCArMSwy NCBAQA0KPiA+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+ID4gKy8qIHsgZGctb3B0aW9ucyAiLU8z IC1zYXZlLXRlbXBzIC1mZHVtcC10cmVlLWRjZSIgfSAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUg PHN0ZGludC5oPg0KPiA+ICsNCj4gPiArX19hdHRyaWJ1dGVfXygobm9pbmxpbmUsIG5vaXBhKSkN Cj4gPiArdm9pZCBmdW4xKHVpbnQzMl90ICp4LCBpbnQgbikNCj4gPiArew0KPiA+ICsgICAgZm9y IChpbnQgaSA9IDA7IGkgPCAobiAmIC0xNik7IGkrKykNCj4gPiArICAgICAgeFtpXSA9ICh4W2ld Jih+MSkpIDwgMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArX19hdHRyaWJ1dGVfXygobm9pbmxpbmUs IG5vaXBhLCBvcHRpbWl6ZSgiTzEiKSkpIHZvaWQgZnVuMih1aW50MzJfdA0KPiA+ICsqeCwgaW50 IG4pIHsNCj4gPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKG4gJiAtMTYpOyBpKyspDQo+ID4g KyAgICAgIHhbaV0gPSAoeFtpXSYofjEpKSA8IDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKyNpbmNs dWRlICJiaWMtYml0bWFzay5oIg0KPiA+ICsNCj4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzIHtfX2J1aWx0aW5fbWVtc2V0fSAxIGRjZTcgfSB9ICovDQo+ID4gKy8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3Qge1xzK2JpY1xzK30gZGNlNyB7IHRhcmdldCB7 DQo+ID4gK2FhcmNoNjQqLSotKiB9IH0gfSB9ICovDQo+ID4gKw0KPiA+IGRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy5kZy9iaWMtYml0bWFzay04LmMNCj4gPiBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL2JpYy1iaXRtYXNrLTguYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5k ZXgNCj4gPg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGFi ZTgzNGVkNTdkZmEwYmU0OGMxZGMzDQo+IGRiYg0KPiA+IDIyNjA5MmM3OWExYQ0KPiA+IC0tLSAv ZGV2L251bGwNCj4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9iaWMtYml0bWFzay04LmMN Cj4gPiBAQCAtMCwwICsxLDI1IEBADQo+ID4gKy8qIHsgZGctZG8gcnVuIH0gKi8NCj4gPiArLyog eyBkZy1vcHRpb25zICItTzMgLXNhdmUtdGVtcHMgLWZkdW1wLXRyZWUtZGNlIiB9ICovDQo+ID4g Kw0KPiA+ICsjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4gKw0KPiA+ICtfX2F0dHJpYnV0ZV9fKChu b2lubGluZSwgbm9pcGEpKQ0KPiA+ICt2b2lkIGZ1bjEodWludDMyX3QgKngsIGludCBuKQ0KPiA+ ICt7DQo+ID4gKyAgICBmb3IgKGludCBpID0gMDsgaSA8IChuICYgLTE2KTsgaSsrKQ0KPiA+ICsg ICAgICB4W2ldID0gKHhbaV0mKH4xKSkgIT0gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArX19hdHRy aWJ1dGVfXygobm9pbmxpbmUsIG5vaXBhLCBvcHRpbWl6ZSgiTzEiKSkpIHZvaWQgZnVuMih1aW50 MzJfdA0KPiA+ICsqeCwgaW50IG4pIHsNCj4gPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKG4g JiAtMTYpOyBpKyspDQo+ID4gKyAgICAgIHhbaV0gPSAoeFtpXSYofjEpKSAhPSAwOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiYmljLWJpdG1hc2suaCINCj4gPiArDQo+ID4gKy8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyB7PlxzKi4rXHsgMSwuK1x9fSAxIGRjZTcg fSB9ICovDQo+ID4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgeyZccyouK1x7 IDQyOTQ5NjcyOTQsLitcfX0gZGNlNyB9DQo+ID4gK30gKi8NCj4gPiArLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLW5vdCB7XHMrYmljXHMrfSBkY2U3IHsgdGFyZ2V0IHsNCj4gPiArYWFy Y2g2NCotKi0qIH0gfSB9IH0gKi8NCj4gPiArDQo+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL2JpYy1iaXRtYXNrLTkuYw0KPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYmlj LWJpdG1hc2stOS5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleA0KPiA+DQo+ IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljMWY4ZWUwYWRmYzQ1 ZDFiOWZjMjEyMTM4DQo+IGVhDQo+ID4gMjZiYjZiNjkzZTQ5DQo+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2JpYy1iaXRtYXNrLTkuYw0KPiA+IEBAIC0w LDAgKzEsMjUgQEANCj4gPiArLyogeyBkZy1kbyBydW4gfSAqLw0KPiA+ICsvKiB7IGRnLW9wdGlv bnMgIi1PMyAtc2F2ZS10ZW1wcyAtZmR1bXAtdHJlZS1kY2UiIH0gKi8NCj4gPiArDQo+ID4gKyNp bmNsdWRlIDxzdGRpbnQuaD4NCj4gPiArDQo+ID4gK19fYXR0cmlidXRlX18oKG5vaW5saW5lLCBu b2lwYSkpDQo+ID4gK3ZvaWQgZnVuMSh1aW50MzJfdCAqeCwgaW50IG4pDQo+ID4gK3sNCj4gPiAr ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKG4gJiAtMTYpOyBpKyspDQo+ID4gKyAgICAgIHhbaV0g PSAoeFtpXSYofjUpKSA9PSAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtfX2F0dHJpYnV0ZV9fKChu b2lubGluZSwgbm9pcGEsIG9wdGltaXplKCJPMSIpKSkgdm9pZCBmdW4yKHVpbnQzMl90DQo+ID4g Kyp4LCBpbnQgbikgew0KPiA+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAobiAmIC0xNik7IGkr KykNCj4gPiArICAgICAgeFtpXSA9ICh4W2ldJih+NSkpID09IDA7DQo+ID4gK30NCj4gPiArDQo+ ID4gKyNpbmNsdWRlICJiaWMtYml0bWFzay5oIg0KPiA+ICsNCj4gPiArLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLW5vdCB7PD1ccyouK1x7IDQyOTQ5NjcyODksLitcfX0gZGNlNyB9DQo+ ID4gK30gKi8NCj4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wIHsmXHMqLitceyA0 Mjk0OTY3MjkwLC4rXH19IGRjZTcgfSB9ICovDQo+ID4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcC1ub3Qge1xzK2JpY1xzK30gZGNlNyB7IHRhcmdldCB7DQo+ID4gK2FhcmNoNjQqLSot KiB9IH0gfSB9ICovDQo+ID4gKw0KPiA+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy9iaWMtYml0bWFzay5oDQo+ID4gYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9iaWMtYml0bWFzay5o DQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleA0KPiA+DQo+IDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiOTQwNjVjMDI1ZTBjYmY3MWEyMWFjOWI5 DQo+IGQ2DQo+ID4gMzE0ZTI0YjBjMmQ5DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL2JpYy1iaXRtYXNrLmgNCj4gPiBAQCAtMCwwICsxLDQzIEBADQo+ ID4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPiA+ICsNCj4gPiArI2lmbmRlZiBODQo+ID4gKyNkZWZp bmUgTiA1MA0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNpZm5kZWYgVFlQRQ0KPiA+ICsjZGVm aW5lIFRZUEUgdWludDMyX3QNCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICsjaWZuZGVmIERFQlVH DQo+ID4gKyNkZWZpbmUgREVCVUcgMA0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNkZWZpbmUg QkFTRSAoKFRZUEUpIC0xIDwgMCA/IC0xMjYgOiA0KQ0KPiA+ICsNCj4gPiAraW50IG1haW4gKCkN Cj4gPiArew0KPiA+ICsgIFRZUEUgYVtOXTsNCj4gPiArICBUWVBFIGJbTl07DQo+ID4gKw0KPiA+ ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgKytpKQ0KPiA+ICsgICAgew0KPiA+ICsgICAgICBh W2ldID0gQkFTRSArIGkgKiAxMzsNCj4gPiArICAgICAgYltpXSA9IEJBU0UgKyBpICogMTM7DQo+ ID4gKyAgICAgIGlmIChERUJVRykNCj4gPiArICAgICAgICBwcmludGYgKCIlZDogMHgleFxuIiwg aSwgYVtpXSk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgIGZ1bjEgKGEsIE4pOw0KPiA+ICsg IGZ1bjIgKGIsIE4pOw0KPiA+ICsNCj4gPiArICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkN Cj4gPiArICAgIHsNCj4gPiArICAgICAgaWYgKERFQlVHKQ0KPiA+ICsgICAgICAgIHByaW50ZiAo IiVkID0gMHgleCA9PSAweCV4XG4iLCBpLCBhW2ldLCBiW2ldKTsNCj4gPiArDQo+ID4gKyAgICAg IGlmIChhW2ldICE9IGJbaV0pDQo+ID4gKyAgICAgICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiA+ ICsgICAgfQ0KPiA+ICsgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+IGRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9iaWMtYml0bWFzay0xLmMNCj4gPiBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2JpYy1iaXRtYXNrLTEuYw0KPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgNCj4gPg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjhjMWZmYzhiYzQxNDhlZmFlZWJhN2E0NQ0KPiBhNw0K PiA+IDVlY2JkM2E3YTNkZA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYWFyY2g2NC9iaWMtYml0bWFzay0xLmMNCj4gPiBAQCAtMCwwICsxLDEz IEBADQo+ID4gKy8qIHsgZGctZG8gYXNzZW1ibGUgfSAqLw0KPiA+ICsvKiB7IGRnLW9wdGlvbnMg Ii1PMiAtc2F2ZS10ZW1wcyIgfSAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGFybV9uZW9uLmg+ DQo+ID4gKw0KPiA+ICt1aW50MzJ4NF90IGZvbyAoaW50MzJ4NF90IGEpDQo+ID4gK3sNCj4gPiAr ICBpbnQzMng0X3QgY3N0ID0gdmR1cHFfbl9zMzIgKDI1NSk7DQo+ID4gKyAgaW50MzJ4NF90IHpl cm8gPSB2ZHVwcV9uX3MzMiAoMCk7DQo+ID4gKyAgcmV0dXJuIHZjZXFxX3MzMiAodmJpY3FfczMy IChhLCBjc3QpLCB6ZXJvKTsgfQ0KPiA+ICsNCj4gPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLW5vdCB7XHRiaWNcdH0geyB4ZmFpbCB7IGFhcmNoNjQqLSotKiB9DQo+ID4gK30gfSB9 ICovDQo+ID4NCj4gPg0KPiA+DQo+IA0KPiAtLQ0KPiBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVy QHN1c2UuZGU+DQo+IFNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSCwgTWF4ZmVs ZHN0cmFzc2UgNSwgOTA0MDkNCj4gTnVlcm5iZXJnLCBHZXJtYW55OyBHRjogRmVsaXggSW1lbmTD tnJmZmVyOyBIUkIgMzY4MDkgKEFHIE51ZXJuYmVyZykNCg==