From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6EDF5C4CECA for ; Sun, 15 Sep 2019 00:26:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 46F5A20830 for ; Sun, 15 Sep 2019 00:26:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=fb.com header.i=@fb.com header.b="ffN8+aKr"; dkim=pass (1024-bit key) header.d=fb.onmicrosoft.com header.i=@fb.onmicrosoft.com header.b="Pr1NCBre" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726240AbfIOA0C (ORCPT ); Sat, 14 Sep 2019 20:26:02 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:20166 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726190AbfIOA0C (ORCPT ); Sat, 14 Sep 2019 20:26:02 -0400 Received: from pps.filterd (m0148461.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x8F0PHYK005473; Sat, 14 Sep 2019 17:25:21 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=facebook; bh=+otDMNacRJyhVH7jbMZwmX4GACEl5hc9B8WUKsTX3lw=; b=ffN8+aKrglCHOBu05LQVypo69/Qooh5fhBf2tKTVOvW13Yah5tfn19+wpVoUsnDrw/kl hzxeSJ0gy89gcLBmeKTxwWX4wm6m5317JZbAIHT4Z9UXrg62iAmDX6xxsn4SqYVnbart 19D34tLIBY1Hpb9GJzPvnLUaQoctxFcyrwY= Received: from maileast.thefacebook.com ([163.114.130.16]) by mx0a-00082601.pphosted.com with ESMTP id 2v0wb71xbm-7 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Sat, 14 Sep 2019 17:25:21 -0700 Received: from ash-exhub101.TheFacebook.com (2620:10d:c0a8:82::e) by ash-exhub204.TheFacebook.com (2620:10d:c0a8:83::4) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Sat, 14 Sep 2019 17:25:04 -0700 Received: from NAM05-BY2-obe.outbound.protection.outlook.com (100.104.31.183) by o365-in.thefacebook.com (100.104.35.173) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Sat, 14 Sep 2019 17:24:58 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J3wSFSgi0UqmtieVx7dNZBDtsjGEVRiRl+1b4eLj0U8kC4bSEfD3yTnv2Cyjieir4/F5HvcH7pm97JckQAGZo2AVtabkcLtH71NyZXEUoTotX10SwuS0h6BI9XvhsTXXOa7GX6nbJ17s20nWk+UcJKJYeuJB/K236TvhRiVyhjmrs33qeQDuqo4btk7BMQLZNUj50Q2fU+uIE0IDl2LeTm7vhYW0aYUHW2tTCh2vp9Dj27mlXkOfYYIeQeT/2ZnCZv8Kum3mFWjYO9ZQDABkO3HJBP7ecUhtD+Dw88PN/R0Ux4RGd+3XlY99j+2Bpalds8MgrB++jdf2u2QVIAlW4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+otDMNacRJyhVH7jbMZwmX4GACEl5hc9B8WUKsTX3lw=; b=fi5lYnsp/p3gjoM/AV7GfJec6sdjj9EWE4UZ5AJR/p2ku0RO03FZ/KtCGZYBhBqJPI0N6EviC8XFk5hi7MWrpESYzDeSyZZRzOUU03rUUyL+Buf/s/er/kaQpri5L8n0j3YGWLtKZzLKFiLEkdACJgLWAcpSsA3SDHa6CpiCNnBuvAuaZb8X41PWQS8Gk+9tO0RfsFeLIXGNJ/PYRpg546go2Zrhm8yznu0SoedeyjZZl7MqsykPcK/RnaezRieBTMQ+5Hmdokethn0KyoSAWKEXh49/u/roiTEY2MVvACNUAbuGwVJVmbdyZGHTuFPOnetJ3XPNoZw48uNnVScO8g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fb.com; dmarc=pass action=none header.from=fb.com; dkim=pass header.d=fb.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector2-fb-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+otDMNacRJyhVH7jbMZwmX4GACEl5hc9B8WUKsTX3lw=; b=Pr1NCBrepKbiG7O+PbSCE2OWPrSmU5A5OeoTPIxqQIw0zdjmcoE/dmNtisvLxgleVqPBDmFAaIKuoMeMcV4UPZY0ZrlrK4oaXyMsmLR21yArPBR0ESBgSG+T7JsV5LuPRMI7oStcaL9aJT2gFvU831/aKqlukW6cHQ39MHojSdk= Received: from BYAPR15MB3384.namprd15.prod.outlook.com (20.179.60.27) by BYAPR15MB3303.namprd15.prod.outlook.com (20.179.59.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2263.23; Sun, 15 Sep 2019 00:24:39 +0000 Received: from BYAPR15MB3384.namprd15.prod.outlook.com ([fe80::95ab:61a0:29f4:e07e]) by BYAPR15MB3384.namprd15.prod.outlook.com ([fe80::95ab:61a0:29f4:e07e%6]) with mapi id 15.20.2263.021; Sun, 15 Sep 2019 00:24:39 +0000 From: Yonghong Song To: KP Singh , "linux-kernel@vger.kernel.org" , "bpf@vger.kernel.org" , "linux-security-module@vger.kernel.org" CC: Alexei Starovoitov , Daniel Borkmann , James Morris , Kees Cook , Thomas Garnier , "Michael Halcrow" , Paul Turner , Brendan Gregg , Jann Horn , Matthew Garrett , Christian Brauner , =?utf-8?B?TWlja2HDq2wgU2FsYcO8bg==?= , Florent Revest , Martin Lau , Song Liu , "Serge E. Hallyn" , "Mauro Carvalho Chehab" , "David S. Miller" , Greg Kroah-Hartman , Nicolas Ferre , Stanislav Fomichev , "Quentin Monnet" , Andrey Ignatov , "Joe Stringer" Subject: Re: [RFC v1 13/14] krsi: Provide an example to read and log environment variables Thread-Topic: [RFC v1 13/14] krsi: Provide an example to read and log environment variables Thread-Index: AQHVZ87j1G7F0OMFS0SrMJxSXDJHOKcr6EgA Date: Sun, 15 Sep 2019 00:24:38 +0000 Message-ID: <840efccc-d875-20af-14ee-c436580629e5@fb.com> References: <20190910115527.5235-1-kpsingh@chromium.org> <20190910115527.5235-14-kpsingh@chromium.org> In-Reply-To: <20190910115527.5235-14-kpsingh@chromium.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: MWHPR12CA0066.namprd12.prod.outlook.com (2603:10b6:300:103::28) To BYAPR15MB3384.namprd15.prod.outlook.com (2603:10b6:a03:112::27) x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [2620:10d:c090:180::69e8] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: cfd4cc4d-1eb6-4781-e086-08d739731815 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(2017052603328)(7193020);SRVR:BYAPR15MB3303; x-ms-traffictypediagnostic: BYAPR15MB3303: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1169; x-forefront-prvs: 01613DFDC8 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(396003)(136003)(39860400002)(346002)(376002)(189003)(199004)(14454004)(71200400001)(71190400001)(256004)(86362001)(8676002)(6116002)(81166006)(2501003)(81156014)(8936002)(229853002)(5024004)(2906002)(14444005)(31696002)(31686004)(476003)(11346002)(446003)(2201001)(6486002)(5660300002)(486006)(6436002)(53546011)(6506007)(386003)(66946007)(102836004)(66476007)(6246003)(66446008)(64756008)(66556008)(30864003)(2616005)(52116002)(76176011)(53936002)(36756003)(316002)(99286004)(4326008)(7736002)(305945005)(25786009)(110136005)(7416002)(54906003)(478600001)(6512007)(46003)(186003);DIR:OUT;SFP:1102;SCL:1;SRVR:BYAPR15MB3303;H:BYAPR15MB3384.namprd15.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: fb.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 9O72LnhyHokuh99cjgnZpKGzBl3yd2YhiFN+WTTfVmV5BdOW6q2JQmRw05AzpxEk6WKI54kqCYNqdQQzou0Rv3FV9zqjw2Ghv4cHqKB+ubsuFFsSlFuNXBvT3rK7NbAK4DKMLkGPaVxKWIvBkNbjoaflHoe5yrF0T64sKqUgBQhYzpVIcOxE90RvcmJx1TVDg6lS8PVH+uo6IVIXLQOrRV/p0fWUr+aq8y8Q3t7e28uOJ/A6Ovmbe245hSB7NZUb1CiPCO2eeBGehreQtPzwnLIDllfa18/8RWSC6wD4cN9a4mCKxoSL/0JjJk8pQDVhgAk/BZLJl5XThUN0rqWN1M4e88uycxGE5iPx7/KIO2d7ueDJIjvRROajPsjvYBrQIiMH3bfbZ4nB9OtaCrmkuG5UFS9CoTXacd5t/3w/KPg= Content-Type: text/plain; charset="utf-8" Content-ID: <2F941584E27B2D4F91D572B4FDEFC46C@namprd15.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: cfd4cc4d-1eb6-4781-e086-08d739731815 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Sep 2019 00:24:38.8621 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 2KwA1KwQakT/impKTS0SwnBjkf0j1yujpKKx5e+yh+lwcQmDioIslRVIJGdQwN// X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR15MB3303 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.70,1.0.8 definitions=2019-09-14_07:2019-09-11,2019-09-14 signatures=0 X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 suspectscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 impostorscore=0 mlxscore=0 bulkscore=0 mlxlogscore=999 spamscore=0 priorityscore=1501 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1908290000 definitions=main-1909150001 X-FB-Internal: deliver Sender: owner-linux-security-module@vger.kernel.org Precedence: bulk List-ID: DQoNCk9uIDkvMTAvMTkgMTI6NTUgUE0sIEtQIFNpbmdoIHdyb3RlOg0KPiBGcm9tOiBLUCBTaW5n aCA8a3BzaW5naEBnb29nbGUuY29tPg0KPiANCj4gCSogIFRoZSBwcm9ncmFtIHRha2VzIHRoZSBu YW1lIG9mIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFzIGFuDQo+IAkgICBhcmd1bWVudC4NCj4g CSogIEFuIGVCUEYgcHJvZ3JhbSBpcyBsb2FkZWQgYW5kIGF0dGFjaGVkIHRvIHRoZQ0KPiAJICAg cHJvY2Vzc19leGVjdXRpb24gaG9vay4NCj4gCSogIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVu dCB2YXJpYWJsZSBwYXNzZWQgaXMgdXBkYXRlZCBpbiBhDQo+IAkgICBlQlBGIHBlci1jcHUgbWFw Lg0KPiAJKiAgVGhlIGVCUEYgcHJvZ3JhbSB1c2VzIHRoZSBrcnNpX2dldF9lbnZfdmFyIGhlbHBl ciB0byBnZXQgdGhlDQo+IAkgICB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBhbmQgbG9ncyB0 aGUgcmVzdWx0IHRvIHRoZSBwZXJmDQo+IAkgICBldmVudHMgYnVmZmVyLg0KPiAJKiAgVGhlIHVz ZXItc3BhY2UgcHJvZ3JhbSBsaXN0ZW5zIHRvIHRoZSBwZXJmIGV2ZW50cyBhbmQgcHJpbnRzDQo+ IAkgICB0aGUgdmFsdWVzLg0KPiANCj4gRXhhbXBsZSBleGVjdXRpb246DQo+IA0KPiAJLi9rcnNp IExEX1BSRUxPQUQNCj4gDQo+IAlbcF9waWQ9MTIzXSBMRF9QUkVMT0FEIGlzIG5vdCBzZXQNCj4g CVtwX3BpZD00NTZdIExEX1BSRUxPQUQ9L2xpYi9iYWQuc28NCj4gCVtwX3BpZD03ODldIFdBUk5J TkchIExEX1BSRUxPQUQgaXMgc2V0IDIgdGltZXMNCj4gCVtwX3BpZD03ODldIExEX1BSRUxPQUQ9 L2xpYi9kZWNveS5zbw0KPiAJW3BfcGlkPTc4OV0gTERfUFJFTE9BRD0vbGliL2JhZC5zbw0KPiAN Cj4gSW4gYSBzZXBhcmF0ZSBzZXNzaW9uIHRoZSBmb2xsb3dpbmcgWzEsIDIsIDNdIGV4ZWMgc3lz dGVtIGNhbGxzDQo+IGFyZSBtYWRlIHdoZXJlOg0KPiANCj4gCVsxLCAyLCAzXSBjaGFyICphcmd2 W10gPSB7Ii9iaW4vbHMiLCAwfTsNCj4gDQo+IAlbMV0gY2hhciAqZW52cCA9IHswfTsNCj4gCVsy XSBjaGFyICplbnZwID0geyJMRF9QUkVMT0FEPS9saWIvYmFkLnNvIiwgMH07DQo+IAlbM10gY2hh ciAqZW52cCA9IHsiTERfUFJFTE9BRD0vbGliL2RlY295LnNvLCAiTERfUFJFTE9BRD0vbGliL2Jh ZC5zbyIsIDB9Ow0KPiANCj4gVGhpcyBleGFtcGxlIGRlbW9uc3RyYXRlcyB0aGF0IHVzZXItc3Bh Y2UgaXMgZnJlZSB0byBjaG9vc2UgdGhlIGZvcm1hdA0KPiBpbiB3aGljaCB0aGUgZGF0YSBpcyBs b2dnZWQgYW5kIGNhbiB1c2UgdmVyeSBzcGVjaWZpYyBoZWxwZXJzIGxpa2UNCj4ga3JzaV9nZXRf ZW52X3ZhciB0byBwb3B1bGF0ZSBvbmx5IHRoZSBkYXRhIHRoYXQgaXMgcmVxdWlyZWQuDQo+IA0K PiBTaWduZWQtb2ZmLWJ5OiBLUCBTaW5naCA8a3BzaW5naEBnb29nbGUuY29tPg0KPiAtLS0NCj4g ICBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICB8ICAgMyArDQo+ICAgc2FtcGxlcy9icGYvLmdp dGlnbm9yZSAgICAgfCAgIDEgKw0KPiAgIHNhbXBsZXMvYnBmL01ha2VmaWxlICAgICAgIHwgICAz ICsNCj4gICBzYW1wbGVzL2JwZi9rcnNpX2hlbHBlcnMuaCB8ICAzMSArKysrKysNCj4gICBzYW1w bGVzL2JwZi9rcnNpX2tlcm4uYyAgICB8ICA1MiArKysrKysrKysrDQo+ICAgc2FtcGxlcy9icGYv a3JzaV91c2VyLmMgICAgfCAyMDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kw0KDQpUaGUgS1JTSSBkb2VzIG5vdCBkZXBlbmQgb24ga2VybmVsIGhlYWRlcnMuDQpJIHdvdWxk IHJlY29tbWVuZCB0byBwdXQgdGhpcyBpbnRvIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZg0K YXMgYSBzZWxmdGVzdC4gU2VsZnRlc3QgaXMgdGhlIHBsYWNlIHRvIHRlc3QgcmVncmVzc2lvbnMg d2l0aA0KYnBmIGNoYW5nZXMuDQoNClRoZSBrcnNpX2tlcm4uYyBjYW4gYmUgcHV0IGludG8gdG9v bHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzDQphbmQga3JzaV91c2VyLmMgY2FuIGJlIHB1 dCBpbnRvIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzLg0KDQo+ICAgNiBm aWxlcyBjaGFuZ2VkLCAyOTIgaW5zZXJ0aW9ucygrKQ0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBz YW1wbGVzL2JwZi9rcnNpX2hlbHBlcnMuaA0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVz L2JwZi9rcnNpX2tlcm4uYw0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW1wbGVzL2JwZi9rcnNp X3VzZXIuYw0KPiANCj4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMNCj4g aW5kZXggOGUwMzY0MzkxZDhiLi5lYzM3OGFiYjRjMjMgMTAwNjQ0DQo+IC0tLSBhL01BSU5UQUlO RVJTDQo+ICsrKyBiL01BSU5UQUlORVJTDQo+IEBAIC05MDA1LDYgKzkwMDUsOSBAQCBGOglrZXJu ZWwva3Byb2Jlcy5jDQo+ICAgS1JTSSBTRUNVUklUWSBNT0RVTEUNCj4gICBNOglLUCBTaW5naCA8 a3BzaW5naEBjaHJvbWl1bS5vcmc+DQo+ICAgUzoJU3VwcG9ydGVkDQo+ICtGOglzYW1wbGVzL2Jw Zi9rcnNpX2hlbHBlcnMuaA0KPiArRjoJc2FtcGxlcy9icGYva3JzaV9rZXJuLmMNCj4gK0Y6CXNh bXBsZXMvYnBmL2tyc2lfdXNlci5jDQo+ICAgRjoJc2VjdXJpdHkva3JzaS8NCj4gICANCj4gICBL UzAxMDggTENEIENPTlRST0xMRVIgRFJJVkVSDQo+IGRpZmYgLS1naXQgYS9zYW1wbGVzL2JwZi8u Z2l0aWdub3JlIGIvc2FtcGxlcy9icGYvLmdpdGlnbm9yZQ0KPiBpbmRleCA3NGQzMWZkM2M5OWMu LjZiYmY1YTA0ODc3ZiAxMDA2NDQNCj4gLS0tIGEvc2FtcGxlcy9icGYvLmdpdGlnbm9yZQ0KPiAr KysgYi9zYW1wbGVzL2JwZi8uZ2l0aWdub3JlDQo+IEBAIC0yLDYgKzIsNyBAQCBjcHVzdGF0DQo+ ICAgZmRzX2V4YW1wbGUNCj4gICBoYm0NCj4gICBpYnVtYWQNCj4gK2tyc2kNCj4gICBsYXRoaXN0 DQo+ICAgbHd0X2xlbl9oaXN0DQo+ICAgbWFwX3BlcmZfdGVzdA0KPiBkaWZmIC0tZ2l0IGEvc2Ft cGxlcy9icGYvTWFrZWZpbGUgYi9zYW1wbGVzL2JwZi9NYWtlZmlsZQ0KPiBpbmRleCAxZDliZTI2 YjRlZGQuLjMzZDNiZWYxNzU0OSAxMDA2NDQNCj4gLS0tIGEvc2FtcGxlcy9icGYvTWFrZWZpbGUN Cj4gKysrIGIvc2FtcGxlcy9icGYvTWFrZWZpbGUNCj4gQEAgLTgsNiArOCw3IEBAIGhvc3Rwcm9n cy15IDo9IHRlc3RfbHJ1X2Rpc3QNCj4gICBob3N0cHJvZ3MteSArPSBzb2NrX2V4YW1wbGUNCj4g ICBob3N0cHJvZ3MteSArPSBmZHNfZXhhbXBsZQ0KPiAgIGhvc3Rwcm9ncy15ICs9IHNvY2tleDEN Cj4gK2hvc3Rwcm9ncy15ICs9IGtyc2kNCj4gICBob3N0cHJvZ3MteSArPSBzb2NrZXgyDQo+ICAg aG9zdHByb2dzLXkgKz0gc29ja2V4Mw0KPiAgIGhvc3Rwcm9ncy15ICs9IHRyYWNleDENCj4gQEAg LTYyLDYgKzYzLDcgQEAgVFJBQ0VfSEVMUEVSUyA6PSAuLi8uLi90b29scy90ZXN0aW5nL3NlbGZ0 ZXN0cy9icGYvdHJhY2VfaGVscGVycy5vDQo+ICAgDQo+ICAgZmRzX2V4YW1wbGUtb2JqcyA6PSBm ZHNfZXhhbXBsZS5vDQo+ICAgc29ja2V4MS1vYmpzIDo9IHNvY2tleDFfdXNlci5vDQo+ICtrcnNp LW9ianMgOj0ga3JzaV91c2VyLm8gJChUUkFDRV9IRUxQRVJTKQ0KPiAgIHNvY2tleDItb2JqcyA6 PSBzb2NrZXgyX3VzZXIubw0KPiAgIHNvY2tleDMtb2JqcyA6PSBicGZfbG9hZC5vIHNvY2tleDNf dXNlci5vDQo+ICAgdHJhY2V4MS1vYmpzIDo9IGJwZl9sb2FkLm8gdHJhY2V4MV91c2VyLm8NCj4g QEAgLTExMyw2ICsxMTUsNyBAQCBoYm0tb2JqcyA6PSBicGZfbG9hZC5vIGhibS5vICQoQ0dST1VQ X0hFTFBFUlMpDQo+ICAgIyBUZWxsIGtidWlsZCB0byBhbHdheXMgYnVpbGQgdGhlIHByb2dyYW1z DQo+ICAgYWx3YXlzIDo9ICQoaG9zdHByb2dzLXkpDQo+ICAgYWx3YXlzICs9IHNvY2tleDFfa2Vy bi5vDQo+ICthbHdheXMgKz0ga3JzaV9rZXJuLm8NCj4gICBhbHdheXMgKz0gc29ja2V4Ml9rZXJu Lm8NCj4gICBhbHdheXMgKz0gc29ja2V4M19rZXJuLm8NCj4gICBhbHdheXMgKz0gdHJhY2V4MV9r ZXJuLm8NCj4gZGlmZiAtLWdpdCBhL3NhbXBsZXMvYnBmL2tyc2lfaGVscGVycy5oIGIvc2FtcGxl cy9icGYva3JzaV9oZWxwZXJzLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAw MDAwMDAwMDAwLi4zMDA3YmZkNjIxMmUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9zYW1wbGVz L2JwZi9rcnNpX2hlbHBlcnMuaA0KPiBAQCAtMCwwICsxLDMxIEBADQo+ICsvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KPiArDQo+ICsjaWZuZGVmIF9LUlNJX0hFTFBFUlNf SA0KPiArI2RlZmluZSBfS1JTSV9IRUxQRVJTX0gNCj4gKw0KPiArI2RlZmluZSBfX2JwZl9wZXJj cHVfdmFsX2FsaWduIF9fYWxpZ25lZCg4KQ0KPiArDQo+ICsjZGVmaW5lIEVOVl9WQVJfTkFNRV9N QVhfTEVOIDQ4DQo+ICsjZGVmaW5lIEVOVl9WQVJfVkFMX01BWF9MRU4gNDA5Ng0KPiArDQo+ICsj ZGVmaW5lIE1BWF9DUFVTIDEyOA0KPiArDQo+ICsjZGVmaW5lIF9fTE9XRVIoeCkgKHggJiAweGZm ZmZmZmZmKQ0KPiArI2RlZmluZSBfX1VQUEVSKHgpICh4ID4+IDMyKQ0KPiArDQo+ICtzdHJ1Y3Qg a3JzaV9lbnZfdmFsdWUgew0KPiArCS8vIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJp YWJsZS4NCj4gKwljaGFyIG5hbWVbRU5WX1ZBUl9OQU1FX01BWF9MRU5dOw0KPiArCS8vIFRoZSB2 YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgKGlmIHNldCkuDQo+ICsJY2hhciB2YWx1 ZVtFTlZfVkFSX1ZBTF9NQVhfTEVOXTsNCj4gKwkvLyBJbmRpY2F0ZXMgaWYgYW4gb3ZlcmZsb3cg b2NjdXJyZWQgd2hpbGUgcmVhZGluZyB0aGUgdmFsdWUgb2YgdGhlDQo+ICsJLy8gb2YgdGhlIGVu dmlyb25tZW50IHZhcmlhYmxlLiBUaGlzIG1lYW5zIHRoYXQgYW4gLUUyQklHIHdhcyByZWNlaXZl ZA0KPiArCS8vIGZyb20gdGhlIGtyc2lfZ2V0X2Vudl92YXIgaGVscGVyLg0KPiArCWJvb2wgb3Zl cmZsb3c7DQo+ICsJLy8gVGhlIG51bWJlciBvZiB0aW1lcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFi bGUgd2FzIHNldC4NCj4gKwlfX3UzMiB0aW1lczsNCj4gKwkvLyBUaGUgUElEIG9mIHRoZSBwYXJl bnQgcHJvY2Vzcy4NCj4gKwlfX3UzMiBwX3BpZDsNCj4gK30gX19icGZfcGVyY3B1X3ZhbF9hbGln bjsNCj4gKw0KPiArI2VuZGlmIC8vIF9LUlNJX0hFTFBFUlNfSA0KPiBkaWZmIC0tZ2l0IGEvc2Ft cGxlcy9icGYva3JzaV9rZXJuLmMgYi9zYW1wbGVzL2JwZi9rcnNpX2tlcm4uYw0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjA4N2E2ZjBjYzgxZA0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKyBiL3NhbXBsZXMvYnBmL2tyc2lfa2Vybi5jDQo+IEBAIC0wLDAgKzEs NTIgQEANCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ICsNCj4gKyNp bmNsdWRlIDxsaW51eC9wdHJhY2UuaD4NCj4gKyNpbmNsdWRlIDx1YXBpL2xpbnV4L2JwZi5oPg0K PiArI2luY2x1ZGUgPHVhcGkvbGludXgvaXAuaD4NCj4gKyNpbmNsdWRlICJicGZfaGVscGVycy5o Ig0KPiArI2luY2x1ZGUgImtyc2lfaGVscGVycy5oIg0KPiArDQo+ICsjZGVmaW5lIE1BWF9DUFVT IDEyOA0KPiArDQo+ICtzdHJ1Y3QgYnBmX21hcF9kZWYgU0VDKCJtYXBzIikgZW52X21hcCA9IHsN Cj4gKwkudHlwZSA9IEJQRl9NQVBfVFlQRV9QRVJDUFVfQVJSQVksDQo+ICsJLmtleV9zaXplID0g c2l6ZW9mKHUzMiksDQo+ICsJLnZhbHVlX3NpemUgPSBzaXplb2Yoc3RydWN0IGtyc2lfZW52X3Zh bHVlKSwNCj4gKwkubWF4X2VudHJpZXMgPSAxLA0KPiArfTsNCj4gKw0KPiArc3RydWN0IGJwZl9t YXBfZGVmIFNFQygibWFwcyIpIHBlcmZfbWFwID0gew0KPiArCS50eXBlID0gQlBGX01BUF9UWVBF X1BFUkZfRVZFTlRfQVJSQVksDQo+ICsJLmtleV9zaXplID0gc2l6ZW9mKGludCksDQo+ICsJLnZh bHVlX3NpemUgPSBzaXplb2YodTMyKSwNCj4gKwkubWF4X2VudHJpZXMgPSBNQVhfQ1BVUywNCj4g K307DQo+ICsNCj4gK1NFQygia3JzaSIpDQo+ICtpbnQgZW52X2R1bXBlcih2b2lkICpjdHgpDQo+ ICt7DQo+ICsJdTY0IHRpbWVzX3JldDsNCj4gKwlzMzIgcmV0Ow0KPiArCXUzMiBtYXBfaWQgPSAw Ow0KPiArCWNoYXIgKm1hcF92YWx1ZTsNCj4gKwlzdHJ1Y3Qga3JzaV9lbnZfdmFsdWUgKmVudjsN Cj4gKw0KPiArCWVudiA9IGJwZl9tYXBfbG9va3VwX2VsZW0oJmVudl9tYXAsICZtYXBfaWQpOw0K PiArCWlmICghZW52KQ0KPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gKwl0aW1lc19yZXQgPSBrcnNp X2dldF9lbnZfdmFyKGN0eCwgZW52LT5uYW1lLCBFTlZfVkFSX05BTUVfTUFYX0xFTiwNCj4gKwkJ CQkgICAgIGVudi0+dmFsdWUsIEVOVl9WQVJfVkFMX01BWF9MRU4pOw0KPiArCXJldCA9IF9fTE9X RVIodGltZXNfcmV0KTsNCj4gKwlpZiAocmV0ID09IC1FMkJJRykNCj4gKwkJZW52LT5vdmVyZmxv dyA9IHRydWU7DQo+ICsJZWxzZSBpZiAocmV0IDwgMCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0K PiArCWVudi0+dGltZXMgPSBfX1VQUEVSKHRpbWVzX3JldCk7DQo+ICsJZW52LT5wX3BpZCA9IGJw Zl9nZXRfY3VycmVudF9waWRfdGdpZCgpOw0KPiArCWJwZl9wZXJmX2V2ZW50X291dHB1dChjdHgs ICZwZXJmX21hcCwgQlBGX0ZfQ1VSUkVOVF9DUFUsIGVudiwNCj4gKwkJCSAgICAgIHNpemVvZihz dHJ1Y3Qga3JzaV9lbnZfdmFsdWUpKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArY2hh ciBfbGljZW5zZVtdIFNFQygibGljZW5zZSIpID0gIkdQTCI7DQo+IGRpZmYgLS1naXQgYS9zYW1w bGVzL2JwZi9rcnNpX3VzZXIuYyBiL3NhbXBsZXMvYnBmL2tyc2lfdXNlci5jDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMWZhZDI5YmYwMTdhDQo+IC0tLSAv ZGV2L251bGwNCj4gKysrIGIvc2FtcGxlcy9icGYva3JzaV91c2VyLmMNCj4gQEAgLTAsMCArMSwy MDIgQEANCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ICsNCj4gKyNp bmNsdWRlIDxzdGRpby5oPg0KPiArI2luY2x1ZGUgPHN0ZGxpYi5oPg0KPiArI2luY2x1ZGUgPHN0 cmluZy5oPg0KPiArI2luY2x1ZGUgPGVycm5vLmg+DQo+ICsjaW5jbHVkZSA8ZXJyLmg+DQo+ICsj aW5jbHVkZSA8YXNzZXJ0Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbGltaXRzLmg+DQo+ICsjaW5j bHVkZSA8bGludXgvYnBmLmg+DQo+ICsjaW5jbHVkZSA8YnBmL2JwZi5oPg0KPiArI2luY2x1ZGUg ImJwZi9saWJicGYuaCINCj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4NCj4gKyNpbmNsdWRlIDxzeXMv dHlwZXMuaD4NCj4gKyNpbmNsdWRlIDxzeXMvc3RhdC5oPg0KPiArI2luY2x1ZGUgPHN5cy9zeXNp bmZvLmg+DQo+ICsjaW5jbHVkZSA8c3lzL2lvY3RsLmg+DQo+ICsjaW5jbHVkZSA8ZmNudGwuaD4N Cj4gKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4NCj4gKw0KPiArI2luY2x1ZGUgInBlcmYtc3lz LmgiDQo+ICsjaW5jbHVkZSAidHJhY2VfaGVscGVycy5oIg0KPiArI2luY2x1ZGUgImtyc2lfaGVs cGVycy5oIg0KPiArDQo+ICsjZGVmaW5lIExTTV9IT09LX1BBVEggIi9zeXMva2VybmVsL3NlY3Vy aXR5L2tyc2kvcHJvY2Vzc19leGVjdXRpb24iDQo+ICsNCj4gK3N0YXRpYyBpbnQgcG11X2Zkc1tN QVhfQ1BVU107DQo+ICtzdGF0aWMgc3RydWN0IHBlcmZfZXZlbnRfbW1hcF9wYWdlICpoZWFkZXJz W01BWF9DUFVTXTsNCj4gKw0KPiArc3RhdGljIGludCBwcmludF9lbnYodm9pZCAqZCwgaW50IHNp emUpDQo+ICt7DQo+ICsJc3RydWN0IGtyc2lfZW52X3ZhbHVlICplbnYgPSBkOw0KPiArCWludCB0 aW1lcyA9IGVudi0+dGltZXM7DQo+ICsJY2hhciAqbmV4dCA9IGVudi0+dmFsdWU7DQo+ICsJc2l6 ZV90IHRvdGFsID0gMDsNCj4gKw0KPiArCWlmIChlbnYtPnRpbWVzID4gMSkNCj4gKwkJcHJpbnRm KCJbcF9waWQ9JXVdIFdBUk5JTkchICVzIGlzIHNldCAldSB0aW1lc1xuIiwNCj4gKwkJCWVudi0+ cF9waWQsIGVudi0+bmFtZSwgZW52LT50aW1lcyk7DQo+ICsNCj4gKwkvKg0KPiArCSAqIGtyc2lf Z2V0X2Vudl92YXIgZW5zdXJlcyB0aGF0IGV2ZW4gb3ZlcmZsb3dzDQo+ICsJICogYXJlIG51bGwg dGVybWluYXRlZC4gSW5jYXNlIG9mIGFuIG92ZXJmbG93LA0KPiArCSAqIHRoaXMgbG9naWMgdHJp ZXMgdG8gcHJpbnQgYXMgbXVjaCBpbmZvcm1hdGlvbg0KPiArCSAqIHRoYXQgd2FzIGdhdGhlcmVk Lg0KPiArCSAqLw0KPiArCXdoaWxlICh0aW1lcyAmJiB0b3RhbCA8IEVOVl9WQVJfTkFNRV9NQVhf TEVOKSB7DQo+ICsJCW5leHQgKz0gdG90YWw7DQo+ICsJCWlmIChlbnYtPm92ZXJmbG93KQ0KPiAr CQkJcHJpbnRmKCJbcF9waWQ9JXVdIE9WRVJGTE9XISAlcz0lc1xuIiwNCj4gKwkJCSAgICAgICBl bnYtPnBfcGlkLCBlbnYtPm5hbWUsIG5leHQpOw0KPiArCQllbHNlDQo+ICsJCQlwcmludGYoIltw X3BpZD0ldV0gJXM9JXNcbiIsDQo+ICsJCQkgICAgICAgZW52LT5wX3BpZCwgZW52LT5uYW1lLCBu ZXh0KTsNCj4gKwkJdGltZXMtLTsNCj4gKwkJdG90YWwgKz0gc3RybGVuKG5leHQpICsgMTsNCj4g Kwl9DQo+ICsNCj4gKwlpZiAoIWVudi0+dGltZXMpDQo+ICsJCXByaW50ZigicF9waWQ9JXVdICVz IGlzIG5vdCBzZXRcbiIsDQo+ICsJCSAgICAgICBlbnYtPnBfcGlkLCBlbnYtPm5hbWUpOw0KPiAr DQo+ICsJcmV0dXJuIExJQkJQRl9QRVJGX0VWRU5UX0NPTlQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyBpbnQgb3Blbl9wZXJmX2V2ZW50cyhpbnQgbWFwX2ZkLCBpbnQgbnVtKQ0KPiArew0KPiArCWlu dCBpOw0KPiArCXN0cnVjdCBwZXJmX2V2ZW50X2F0dHIgYXR0ciA9IHsNCj4gKwkJLnNhbXBsZV90 eXBlID0gUEVSRl9TQU1QTEVfUkFXLA0KPiArCQkudHlwZSA9IFBFUkZfVFlQRV9TT0ZUV0FSRSwN Cj4gKwkJLmNvbmZpZyA9IFBFUkZfQ09VTlRfU1dfQlBGX09VVFBVVCwNCj4gKwkJLndha2V1cF9l dmVudHMgPSAxLCAvKiBnZXQgYW4gZmQgbm90aWZpY2F0aW9uIGZvciBldmVyeSBldmVudCAqLw0K PiArCX07DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspIHsNCj4gKwkJaW50IGtl eSA9IGk7DQo+ICsJCWludCByZXQ7DQo+ICsNCj4gKwkJcmV0ID0gc3lzX3BlcmZfZXZlbnRfb3Bl bigmYXR0ciwgLTEgLypwaWQqLywgaS8qY3B1Ki8sDQo+ICsJCQkJCSAtMS8qZ3JvdXBfZmQqLywg MCk7DQo+ICsJCWlmIChyZXQgPCAwKQ0KPiArCQkJcmV0dXJuIHJldDsNCj4gKwkJcG11X2Zkc1tp XSA9IHJldDsNCj4gKwkJcmV0ID0gYnBmX21hcF91cGRhdGVfZWxlbShtYXBfZmQsICZrZXksICZw bXVfZmRzW2ldLCBCUEZfQU5ZKTsNCj4gKwkJaWYgKHJldCA8IDApDQo+ICsJCQlyZXR1cm4gcmV0 Ow0KPiArCQlpb2N0bChwbXVfZmRzW2ldLCBQRVJGX0VWRU5UX0lPQ19FTkFCTEUsIDApOw0KPiAr CX0NCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCB1cGRhdGVfZW52X21h cChzdHJ1Y3QgYnBmX29iamVjdCAqcHJvZ19vYmosIGNvbnN0IGNoYXIgKmVudl92YXJfbmFtZSwN Cj4gKwkJCSAgaW50IG51bWNwdXMpDQo+ICt7DQo+ICsJc3RydWN0IGJwZl9tYXAgKm1hcDsNCj4g KwlzdHJ1Y3Qga3JzaV9lbnZfdmFsdWUgKmVudjsNCj4gKwlpbnQgbWFwX2ZkOw0KPiArCWludCBr ZXkgPSAwLCByZXQgPSAwLCBpOw0KPiArDQo+ICsJbWFwID0gYnBmX29iamVjdF9fZmluZF9tYXBf YnlfbmFtZShwcm9nX29iaiwgImVudl9tYXAiKTsNCj4gKwlpZiAoIW1hcCkNCj4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ICsNCj4gKwltYXBfZmQgPSBicGZfbWFwX19mZChtYXApOw0KPiArCWlmICht YXBfZmQgPCAwKQ0KPiArCQlyZXR1cm4gbWFwX2ZkOw0KPiArDQo+ICsJZW52ID0gbWFsbG9jKG51 bWNwdXMgKiBzaXplb2Yoc3RydWN0IGtyc2lfZW52X3ZhbHVlKSk7DQo+ICsJaWYgKCFlbnYpIHsN Cj4gKwkJcmV0ID0gLUVOT01FTTsNCj4gKwkJZ290byBvdXQ7DQo+ICsJfQ0KPiArDQo+ICsJZm9y IChpID0gMDsgaSA8IG51bWNwdXM7IGkrKykNCj4gKwkJc3RyY3B5KGVudltpXS5uYW1lLCBlbnZf dmFyX25hbWUpOw0KPiArDQo+ICsJcmV0ID0gYnBmX21hcF91cGRhdGVfZWxlbShtYXBfZmQsICZr ZXksIGVudiwgQlBGX0FOWSk7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCWdvdG8gb3V0Ow0KPiAr DQo+ICtvdXQ6DQo+ICsJZnJlZShlbnYpOw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4g K2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCj4gK3sNCj4gKwlzdHJ1Y3QgYnBmX29i amVjdCAqcHJvZ19vYmo7DQo+ICsJY29uc3QgY2hhciAqZW52X3Zhcl9uYW1lOw0KPiArCXN0cnVj dCBicGZfcHJvZ19sb2FkX2F0dHIgYXR0cjsNCj4gKwlpbnQgcHJvZ19mZCwgdGFyZ2V0X2ZkLCBt YXBfZmQ7DQo+ICsJaW50IHJldCwgaSwgbnVtY3B1czsNCj4gKwlzdHJ1Y3QgYnBmX21hcCAqbWFw Ow0KPiArCWNoYXIgZmlsZW5hbWVbUEFUSF9NQVhdOw0KPiArCXN0cnVjdCBybGltaXQgciA9IHtS TElNX0lORklOSVRZLCBSTElNX0lORklOSVRZfTsNCj4gKw0KPiArDQo+ICsJaWYgKGFyZ2MgIT0g MikNCj4gKwkJZXJyeChFWElUX0ZBSUxVUkUsICJVc2FnZSAlcyBlbnZfdmFyX25hbWVcbiIsIGFy Z3ZbMF0pOw0KPiArDQo+ICsJZW52X3Zhcl9uYW1lID0gYXJndlsxXTsNCj4gKwlpZiAoc3RybGVu KGVudl92YXJfbmFtZSkgPiBFTlZfVkFSX05BTUVfTUFYX0xFTiAtIDEpDQo+ICsJCWVycngoRVhJ VF9GQUlMVVJFLA0KPiArCQkgICAgICI8ZW52X3Zhcl9uYW1lPiBjYW5ub3QgYmUgbW9yZSB0aGFu ICVkIGluIGxlbmd0aCIsDQo+ICsJCSAgICAgRU5WX1ZBUl9OQU1FX01BWF9MRU4gLSAxKTsNCj4g Kw0KPiArDQo+ICsJc2V0cmxpbWl0KFJMSU1JVF9NRU1MT0NLLCAmcik7DQo+ICsJc25wcmludGYo ZmlsZW5hbWUsIHNpemVvZihmaWxlbmFtZSksICIlc19rZXJuLm8iLCBhcmd2WzBdKTsNCj4gKw0K PiArCW1lbXNldCgmYXR0ciwgMCwgc2l6ZW9mKHN0cnVjdCBicGZfcHJvZ19sb2FkX2F0dHIpKTsN Cj4gKwlhdHRyLnByb2dfdHlwZSA9IEJQRl9QUk9HX1RZUEVfS1JTSTsNCj4gKwlhdHRyLmV4cGVj dGVkX2F0dGFjaF90eXBlID0gQlBGX0tSU0k7DQo+ICsJYXR0ci5maWxlID0gZmlsZW5hbWU7DQo+ ICsNCj4gKwkvKiBBdHRhY2ggdGhlIEJQRiBwcm9ncmFtIHRvIHRoZSBnaXZlbiBob29rICovDQo+ ICsJdGFyZ2V0X2ZkID0gb3BlbihMU01fSE9PS19QQVRILCBPX1JEV1IpOw0KPiArCWlmICh0YXJn ZXRfZmQgPCAwKQ0KPiArCQllcnIoRVhJVF9GQUlMVVJFLCAiRmFpbGVkIHRvIG9wZW4gdGFyZ2V0 IGZpbGUiKTsNCj4gKw0KPiArCWlmIChicGZfcHJvZ19sb2FkX3hhdHRyKCZhdHRyLCAmcHJvZ19v YmosICZwcm9nX2ZkKSkNCj4gKwkJZXJyKEVYSVRfRkFJTFVSRSwgIkZhaWxlZCB0byBsb2FkIGVC UEYgcHJvZ3JhbSIpOw0KPiArDQo+ICsJbnVtY3B1cyA9IGdldF9ucHJvY3MoKTsNCj4gKwlpZiAo bnVtY3B1cyA+IE1BWF9DUFVTKQ0KPiArCQludW1jcHVzID0gTUFYX0NQVVM7DQo+ICsNCj4gKwly ZXQgPSB1cGRhdGVfZW52X21hcChwcm9nX29iaiwgZW52X3Zhcl9uYW1lLCBudW1jcHVzKTsNCj4g KwlpZiAocmV0IDwgMCkNCj4gKwkJZXJyKEVYSVRfRkFJTFVSRSwgIkZhaWxlZCB0byB1cGRhdGUg ZW52IG1hcCIpOw0KPiArDQo+ICsJbWFwID0gYnBmX29iamVjdF9fZmluZF9tYXBfYnlfbmFtZShw cm9nX29iaiwgInBlcmZfbWFwIik7DQo+ICsJaWYgKCFtYXApDQo+ICsJCWVycihFWElUX0ZBSUxV UkUsDQo+ICsJCSAgICAiRmluZGluZyB0aGUgcGVyZiBldmVudCBtYXAgaW4gb2JqIGZpbGUgZmFp bGVkIik7DQo+ICsNCj4gKwltYXBfZmQgPSBicGZfbWFwX19mZChtYXApOw0KPiArCWlmIChtYXBf ZmQgPCAwKQ0KPiArCQllcnIoRVhJVF9GQUlMVVJFLCAiRmFpbGVkIHRvIGdldCBmZCBmb3IgcGVy ZiBldmVudHMgbWFwIik7DQo+ICsNCj4gKwlyZXQgPSBicGZfcHJvZ19hdHRhY2gocHJvZ19mZCwg dGFyZ2V0X2ZkLCBCUEZfS1JTSSwNCj4gKwkJCSAgICAgIEJQRl9GX0FMTE9XX09WRVJSSURFKTsN Cj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJZXJyKEVYSVRfRkFJTFVSRSwgIkZhaWxlZCB0byBhdHRh Y2ggcHJvZyB0byBMU00gaG9vayIpOw0KPiArDQo+ICsJcmV0ID0gb3Blbl9wZXJmX2V2ZW50cyht YXBfZmQsIG51bWNwdXMpOw0KPiArCWlmIChyZXQgPCAwKQ0KPiArCQllcnIoRVhJVF9GQUlMVVJF LCAiRmFpbGVkIHRvIG9wZW4gcGVyZiBldmVudHMgaGFuZGxlciIpOw0KPiArDQo+ICsJZm9yIChp ID0gMDsgaSA8IG51bWNwdXM7IGkrKykgew0KPiArCQlyZXQgPSBwZXJmX2V2ZW50X21tYXBfaGVh ZGVyKHBtdV9mZHNbaV0sICZoZWFkZXJzW2ldKTsNCj4gKwkJaWYgKHJldCA8IDApDQo+ICsJCQll cnIoRVhJVF9GQUlMVVJFLCAicGVyZl9ldmVudF9tbWFwX2hlYWRlciIpOw0KPiArCX0NCj4gKw0K PiArCXJldCA9IHBlcmZfZXZlbnRfcG9sbGVyX211bHRpKHBtdV9mZHMsIGhlYWRlcnMsIG51bWNw dXMsIHByaW50X2Vudik7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCWVycihFWElUX0ZBSUxVUkUs ICJGYWlsZWQgdG8gcG9sbCBwZXJmIGV2ZW50cyIpOw0KPiArDQo+ICsJcmV0dXJuIEVYSVRfU1VD Q0VTUzsNCj4gK30NCj4gDQo=