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=-8.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS autolearn=ham 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 168ADC43387 for ; Wed, 16 Jan 2019 06:19:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B7BE52082F for ; Wed, 16 Jan 2019 06:19:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=fb.com header.i=@fb.com header.b="GbMK1FDt"; dkim=pass (1024-bit key) header.d=fb.onmicrosoft.com header.i=@fb.onmicrosoft.com header.b="iWHPfxZr" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733292AbfAPGTB (ORCPT ); Wed, 16 Jan 2019 01:19:01 -0500 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:43928 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730701AbfAPGTB (ORCPT ); Wed, 16 Jan 2019 01:19:01 -0500 Received: from pps.filterd (m0109334.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x0G6HkCP009535; Tue, 15 Jan 2019 22:18:34 -0800 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=kAUTNllNFlB5Y3AUs2uMfYNKtfa3dun3D8LYbVtaMhs=; b=GbMK1FDtUFFl7OB7BD/2YXpmdA4k9pEai4yQQpn2q086/9BqS1gjh93Trp80FdUiAwuS iq1leSTcvKsuZKYR9es4522bSqm1cqGiduABlVSaUgdib6Ld1Kvm6GJBh1yVQmrkYV1p hFhBawSfD8DleobuBwW/XaFXhkA0urohXIU= Received: from maileast.thefacebook.com ([199.201.65.23]) by mx0a-00082601.pphosted.com with ESMTP id 2q1xhwg3b1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 15 Jan 2019 22:18:34 -0800 Received: from frc-hub03.TheFacebook.com (2620:10d:c021:18::173) by frc-hub01.TheFacebook.com (2620:10d:c021:18::171) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.1.1531.3; Tue, 15 Jan 2019 22:18:33 -0800 Received: from NAM02-CY1-obe.outbound.protection.outlook.com (192.168.183.28) by o365-in.thefacebook.com (192.168.177.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.1.1531.3 via Frontend Transport; Tue, 15 Jan 2019 22:18:32 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kAUTNllNFlB5Y3AUs2uMfYNKtfa3dun3D8LYbVtaMhs=; b=iWHPfxZrorHksVIVmv24/EkO5B+6o6pFRUFNTA1Up9Fs50HGnYWPHa6rwubSmI7bPXI1hWXUBoVki3vZ5wlZjisnOQ5QAI8ZzAYBq7yhhAkRVw0A5czopZvRVNLdkCrVRiRZnxRvliy6npVBkJr0fbK5yx/rrTjHsFgfbSH5eyo= Received: from BYAPR15MB3384.namprd15.prod.outlook.com (20.179.59.17) by BYAPR15MB2597.namprd15.prod.outlook.com (20.179.155.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1537.26; Wed, 16 Jan 2019 06:18:30 +0000 Received: from BYAPR15MB3384.namprd15.prod.outlook.com ([fe80::5c3:a690:6a4c:b62f]) by BYAPR15MB3384.namprd15.prod.outlook.com ([fe80::5c3:a690:6a4c:b62f%3]) with mapi id 15.20.1537.018; Wed, 16 Jan 2019 06:18:30 +0000 From: Yonghong Song To: Alexei Starovoitov , "davem@davemloft.net" CC: "daniel@iogearbox.net" , "jakub.kicinski@netronome.com" , "netdev@vger.kernel.org" , Kernel Team Subject: Re: [PATCH bpf-next 8/9] libbpf: introduce bpf_map_lookup_elem_flags() Thread-Topic: [PATCH bpf-next 8/9] libbpf: introduce bpf_map_lookup_elem_flags() Thread-Index: AQHUrVmKHd9qCJCfI0iJ7Or11+zxSKWxa98A Date: Wed, 16 Jan 2019 06:18:30 +0000 Message-ID: References: <20190116050830.1881316-1-ast@kernel.org> <20190116050830.1881316-9-ast@kernel.org> In-Reply-To: <20190116050830.1881316-9-ast@kernel.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: MWHPR12CA0027.namprd12.prod.outlook.com (2603:10b6:301:2::13) To BYAPR15MB3384.namprd15.prod.outlook.com (2603:10b6:a03:10e::17) x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [2620:10d:c090:180::1:b6e5] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;BYAPR15MB2597;20:3HHbtj1dZUJhli13wR8RnQaVZfNxiK8kJWxO2tbAbQI4V+rFiBCeb2CwbvP6NzPXSivoCZan+rNaOJWbFv8SfpFejpz8q1aOqqGJHHl9V5tga+OY8kPEb4wiNKED4DGBrpcsXVueGJni85tkFHsCh4yzOv4HxbHthplaKlhObJc= x-ms-office365-filtering-correlation-id: ab3b6b82-e4a8-4797-8e55-08d67b7a6f20 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600109)(711020)(2017052603328)(7153060)(7193020);SRVR:BYAPR15MB2597; x-ms-traffictypediagnostic: BYAPR15MB2597: x-microsoft-antispam-prvs: x-forefront-prvs: 091949432C x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(39860400002)(136003)(346002)(376002)(366004)(396003)(199004)(189003)(76176011)(53546011)(6506007)(386003)(52116002)(6512007)(30864003)(8936002)(5660300001)(476003)(2616005)(53946003)(102836004)(97736004)(186003)(7736002)(305945005)(6486002)(2906002)(6246003)(486006)(81156014)(8676002)(11346002)(446003)(81166006)(6436002)(53936002)(46003)(36756003)(316002)(31686004)(110136005)(39060400002)(54906003)(25786009)(68736007)(31696002)(6116002)(256004)(14454004)(105586002)(86362001)(14444005)(5024004)(478600001)(106356001)(229853002)(2501003)(99286004)(4744004)(71200400001)(4326008)(71190400001)(579004)(457024003);DIR:OUT;SFP:1102;SCL:1;SRVR:BYAPR15MB2597;H:BYAPR15MB3384.namprd15.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX: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: qs8YSeclsx8HJKMrFouoVIRBwHQZCbUbxQt6gAKOdDbczq+FpmnpHevgAJokCjnN0SakVkORg+xxA0WNlS2vaegBJBYC90Au4al0sEYZHjTC8VxVOa0usZh5z4b54HKR0kHCdt/Z/U2BIq4WZXZK82/h18EVj9ZanGvOHu9osqGvCUH8/IdxjDvsYtZJzkIwRwT5s8N+0o0gqhgPoL7Le7ATdim113hGMGgs9VNaKr/+L6BVZyQLFkOpJaHAKuv7axp5ADTVp0A5QhriaasY1hayDk60bE1GTI3mD1jKQxiYWpYpICYHfpNbqu9tOK3h/Z4Rg2ruGJzmNQhZCa1PYUOGVpyhFQpPK9xCXqkR4VxGt9oGl5qVq69fUZ0AuX5CNUOWaPz4SROB/TQz3bfjIHrqi7YHfS7QxDJ5PfMevnw= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: ab3b6b82-e4a8-4797-8e55-08d67b7a6f20 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jan 2019 06:18:28.9041 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR15MB2597 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-01-16_02:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DQoNCk9uIDEvMTUvMTkgOTowOCBQTSwgQWxleGVpIFN0YXJvdm9pdG92IHdyb3RlOg0KPiBJbnRy b2R1Y2UNCj4gaW50IGJwZl9tYXBfbG9va3VwX2VsZW1fZmxhZ3MoaW50IGZkLCBjb25zdCB2b2lk ICprZXksIHZvaWQgKnZhbHVlLCBfX3U2NCBmbGFncykNCj4gaGVscGVyIHRvIGxvb2t1cCBhcnJh eS9oYXNoL2Nncm91cF9sb2NhbF9zdG9yYWdlIGVsZW1lbnRzIHdpdGggQlBGX0ZfTE9DSyBmbGFn Lg0KPiANCj4gU2lnbmVkLW9mZi1ieTogQWxleGVpIFN0YXJvdm9pdG92IDxhc3RAa2VybmVsLm9y Zz4NCj4gLS0tDQo+ICAgdG9vbHMvbGliL2JwZi9icGYuYyAgICAgIHwgIDEzICsrDQo+ICAgdG9v bHMvbGliL2JwZi9icGYuaCAgICAgIHwgICAyICsNCj4gICB0b29scy9saWIvYnBmL2xpYmJwZi5t YXAgfCAgIDQgKw0KPiAgIHRvb2xzL2xpYi9icGYvdGFncyAgICAgICB8IDI1NCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCg0KSSB0aGluayB0aGlzIHRvb2xzL2xpYi9i cGYvdGFncyBpcyBub3QgbmVlZGVkIGFuZCBhY2NpZGVudGFsbHkgc2xpcHBlZCANCmluIGR1ZSB0 byBjc2NvcGU/DQoNCj4gICA0IGZpbGVzIGNoYW5nZWQsIDI3MyBpbnNlcnRpb25zKCspDQo+ICAg Y3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYi9icGYvdGFncw0KPiANCj4gZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYi9icGYvYnBmLmMgYi90b29scy9saWIvYnBmL2JwZi5jDQo+IGluZGV4IDNjYWFh MzQyODc3NC4uZDU1YTc3YTA1ZDVmIDEwMDY0NA0KPiAtLS0gYS90b29scy9saWIvYnBmL2JwZi5j DQo+ICsrKyBiL3Rvb2xzL2xpYi9icGYvYnBmLmMNCj4gQEAgLTM1Nyw2ICszNTcsMTkgQEAgaW50 IGJwZl9tYXBfbG9va3VwX2VsZW0oaW50IGZkLCBjb25zdCB2b2lkICprZXksIHZvaWQgKnZhbHVl KQ0KPiAgIAlyZXR1cm4gc3lzX2JwZihCUEZfTUFQX0xPT0tVUF9FTEVNLCAmYXR0ciwgc2l6ZW9m KGF0dHIpKTsNCj4gICB9DQo+ICAgDQo+ICtpbnQgYnBmX21hcF9sb29rdXBfZWxlbV9mbGFncyhp bnQgZmQsIGNvbnN0IHZvaWQgKmtleSwgdm9pZCAqdmFsdWUsIF9fdTY0IGZsYWdzKQ0KPiArew0K PiArCXVuaW9uIGJwZl9hdHRyIGF0dHI7DQo+ICsNCj4gKwliemVybygmYXR0ciwgc2l6ZW9mKGF0 dHIpKTsNCj4gKwlhdHRyLm1hcF9mZCA9IGZkOw0KPiArCWF0dHIua2V5ID0gcHRyX3RvX3U2NChr ZXkpOw0KPiArCWF0dHIudmFsdWUgPSBwdHJfdG9fdTY0KHZhbHVlKTsNCj4gKwlhdHRyLmZsYWdz ID0gZmxhZ3M7DQo+ICsNCj4gKwlyZXR1cm4gc3lzX2JwZihCUEZfTUFQX0xPT0tVUF9FTEVNLCAm YXR0ciwgc2l6ZW9mKGF0dHIpKTsNCj4gK30NCj4gKw0KPiAgIGludCBicGZfbWFwX2xvb2t1cF9h bmRfZGVsZXRlX2VsZW0oaW50IGZkLCBjb25zdCB2b2lkICprZXksIHZvaWQgKnZhbHVlKQ0KPiAg IHsNCj4gICAJdW5pb24gYnBmX2F0dHIgYXR0cjsNCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9i cGYvYnBmLmggYi90b29scy9saWIvYnBmL2JwZi5oDQo+IGluZGV4IDhmMDlkZTQ4MjgzOS4uZWQw OWVlZDJkYzNiIDEwMDY0NA0KPiAtLS0gYS90b29scy9saWIvYnBmL2JwZi5oDQo+ICsrKyBiL3Rv b2xzL2xpYi9icGYvYnBmLmgNCj4gQEAgLTExMCw2ICsxMTAsOCBAQCBMSUJCUEZfQVBJIGludCBi cGZfbWFwX3VwZGF0ZV9lbGVtKGludCBmZCwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2b2lkICp2 YWx1ZSwNCj4gICAJCQkJICAgX191NjQgZmxhZ3MpOw0KPiAgIA0KPiAgIExJQkJQRl9BUEkgaW50 IGJwZl9tYXBfbG9va3VwX2VsZW0oaW50IGZkLCBjb25zdCB2b2lkICprZXksIHZvaWQgKnZhbHVl KTsNCj4gK0xJQkJQRl9BUEkgaW50IGJwZl9tYXBfbG9va3VwX2VsZW1fZmxhZ3MoaW50IGZkLCBj b25zdCB2b2lkICprZXksIHZvaWQgKnZhbHVlLA0KPiArCQkJCQkgX191NjQgZmxhZ3MpOw0KPiAg IExJQkJQRl9BUEkgaW50IGJwZl9tYXBfbG9va3VwX2FuZF9kZWxldGVfZWxlbShpbnQgZmQsIGNv bnN0IHZvaWQgKmtleSwNCj4gICAJCQkJCSAgICAgIHZvaWQgKnZhbHVlKTsNCj4gICBMSUJCUEZf QVBJIGludCBicGZfbWFwX2RlbGV0ZV9lbGVtKGludCBmZCwgY29uc3Qgdm9pZCAqa2V5KTsNCj4g ZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLm1hcCBiL3Rvb2xzL2xpYi9icGYvbGli YnBmLm1hcA0KPiBpbmRleCBjZDAyY2Q0ZTJjYzMuLmNhNTE1NTQwOWExNSAxMDA2NDQNCj4gLS0t IGEvdG9vbHMvbGliL2JwZi9saWJicGYubWFwDQo+ICsrKyBiL3Rvb2xzL2xpYi9icGYvbGliYnBm Lm1hcA0KPiBAQCAtMTI0LDMgKzEyNCw3IEBAIExJQkJQRl8wLjAuMSB7DQo+ICAgCWxvY2FsOg0K PiAgIAkJKjsNCj4gICB9Ow0KPiArTElCQlBGXzAuMC4yIHsNCj4gKwlnbG9iYWw6DQo+ICsJCWJw Zl9tYXBfbG9va3VwX2VsZW1fZmxhZ3M7DQo+ICt9IExJQkJQRl8wLjAuMTsNCj4gZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYi9icGYvdGFncyBiL3Rvb2xzL2xpYi9icGYvdGFncw0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmJlMzA1NDhhMDI4ZQ0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL3Rvb2xzL2xpYi9icGYvdGFncw0KPiBAQCAtMCwwICsxLDI1NCBAQA0K PiArIV9UQUdfRklMRV9GT1JNQVQJMgkvZXh0ZW5kZWQgZm9ybWF0OyAtLWZvcm1hdD0xIHdpbGwg bm90IGFwcGVuZCA7IiB0byBsaW5lcy8NCj4gKyFfVEFHX0ZJTEVfU09SVEVECTEJLzA9dW5zb3J0 ZWQsIDE9c29ydGVkLCAyPWZvbGRjYXNlLw0KPiArIV9UQUdfUFJPR1JBTV9BVVRIT1IJRGFycmVu IEhpZWJlcnQJL2RoaWViZXJ0QHVzZXJzLnNvdXJjZWZvcmdlLm5ldC8NCj4gKyFfVEFHX1BST0dS QU1fTkFNRQlFeHViZXJhbnQgQ3RhZ3MJLy8NCj4gKyFfVEFHX1BST0dSQU1fVVJMCWh0dHA6Ly9j dGFncy5zb3VyY2Vmb3JnZS5uZXQJL29mZmljaWFsIHNpdGUvDQo+ICshX1RBR19QUk9HUkFNX1ZF UlNJT04JNS44CS8vDQo+ICtCUEZfRVhUUkFWRVJTSU9OCU1ha2VmaWxlCS9eQlBGX0VYVFJBVkVS U0lPTiA9IDEkLzsiCW0NCj4gK0JQRl9GU19NQUdJQwlsaWJicGYuYwk1MjsiCWQJZmlsZToNCj4g K0JQRl9JTglNYWtlZmlsZQkvXkJQRl9JTiAgICA6PSAkKE9VVFBVVClsaWJicGYtaW4ubyQvOyIJ bQ0KPiArQlBGX0xPR19CVUZfU0laRQlicGYuaAk0MzsiCWQNCj4gK0JQRl9QQVRDSExFVkVMCU1h a2VmaWxlCS9eQlBGX1BBVENITEVWRUwgPSAwJC87IgltDQo+ICtCUEZfUFJPR19UWVBFX0ZOUwls aWJicGYuYwkxNzAyOyIJZAlmaWxlOg0KPiArQlBGX1ZFUlNJT04JTWFrZWZpbGUJL15CUEZfVkVS U0lPTiA9IDAkLzsiCW0NCj4gK0NGTEFHUwlNYWtlZmlsZQkvXiAgQ0ZMQUdTIDo9ICQoRVhUUkFf Q0ZMQUdTKSQvOyIJbQ0KPiArQ0ZMQUdTCU1ha2VmaWxlCS9eICBDRkxBR1MgOj0gLWcgLVdhbGwk LzsiCW0NCj4gK0NIRUNLX0VSUglsaWJicGYuYwkxNDA7IglkCWZpbGU6DQo+ICtDTURfVEFSR0VU UwlNYWtlZmlsZQkvXkNNRF9UQVJHRVRTID0gJChMSUJfRklMRSkkLzsiCW0NCj4gK0RFU1RESVIJ TWFrZWZpbGUJL15ERVNURElSID89JC87IgltDQo+ICtERVNURElSX1NRCU1ha2VmaWxlCS9eREVT VERJUl9TUSA9ICckKHN1YnN0ICcsJ1xcJycsJChERVNURElSKSknJC87IgltDQo+ICtFTV9CUEYJ bGliYnBmLmMJNDg7IglkCWZpbGU6DQo+ICtFUlJDT0RFX09GRlNFVAlsaWJicGYuYwk5NTsiCWQJ ZmlsZToNCj4gK0VSUk5PX09GRlNFVAlsaWJicGYuYwk5NDsiCWQJZmlsZToNCj4gK0VYVFJBVkVS U0lPTglNYWtlZmlsZQkvXkVYVFJBVkVSU0lPTgk9ICQoQlBGX0VYVFJBVkVSU0lPTikkLzsiCW0N Cj4gK0ZFQVRVUkVfQ0hFQ0tfQ0ZMQUdTLWJwZglNYWtlZmlsZQkvXkZFQVRVUkVfQ0hFQ0tfQ0ZM QUdTLWJwZiA9ICQoSU5DTFVERVMpJC87IgltDQo+ICtGRUFUVVJFX0RJU1BMQVkJTWFrZWZpbGUJ L15GRUFUVVJFX0RJU1BMQVkgPSBsaWJlbGYgYnBmJC87IgltDQo+ICtGRUFUVVJFX1RFU1RTCU1h a2VmaWxlCS9eRkVBVFVSRV9URVNUUyA9IGxpYmVsZiBsaWJlbGYtZ2V0cGhkcm51bSBsaWJlbGYt bW1hcCBicGYkLzsiCW0NCj4gK0ZFQVRVUkVfVVNFUglNYWtlZmlsZQkvXkZFQVRVUkVfVVNFUiA9 IC5saWJicGYkLzsiCW0NCj4gK0lOQ0xVREVTCU1ha2VmaWxlCS9eSU5DTFVERVMgPSAtSS4gLUkk KHNyY3RyZWUpXC90b29sc1wvaW5jbHVkZSAtSSQoc3JjdHJlZSlcL3Rvb2xzXC9hcmNoXC8kKEFS Q0gpXC9pbmNsdWRlXC91YXBpIC1JJChzcmN0cmVlKVwvdG9vbHNcL2luY2x1ZGVcL3VhcGkkLzsi CW0NCj4gK0lOU1RBTEwJTWFrZWZpbGUJL15JTlNUQUxMID0gaW5zdGFsbCQvOyIJbQ0KPiArTElC QlBGX0VMRl9DX1JFQURfTU1BUAlsaWJicGYuYwkxNjI7IglkCWZpbGU6DQo+ICtMSUJCUEZfRUxG X0NfUkVBRF9NTUFQCWxpYmJwZi5jCTE2NDsiCWQJZmlsZToNCj4gK0xJQkJQRl9FUlJOT19fRU5E SUFOCWxpYmJwZi5oCS9eCUxJQkJQRl9FUlJOT19fRU5ESUFOLAlcLyogRW5kaWFuIG1pc21hdGNo ICpcLyQvOyIJZQllbnVtOmxpYmJwZl9lcnJubw0KPiArTElCQlBGX0VSUk5PX19GT1JNQVQJbGli YnBmLmgJL14JTElCQlBGX0VSUk5PX19GT1JNQVQsCVwvKiBCUEYgb2JqZWN0IGZvcm1hdCBpbnZh bGlkICpcLyQvOyIJZQllbnVtOmxpYmJwZl9lcnJubw0KPiArTElCQlBGX0VSUk5PX19JTlRFUk5B TAlsaWJicGYuaAkvXglMSUJCUEZfRVJSTk9fX0lOVEVSTkFMLAlcLyogSW50ZXJuYWwgZXJyb3Ig aW4gbGliYnBmICpcLyQvOyIJZQllbnVtOmxpYmJwZl9lcnJubw0KPiArTElCQlBGX0VSUk5PX19L VkVSCWxpYmJwZi5oCS9eCUxJQkJQRl9FUlJOT19fS1ZFUiwJXC8qIEluY29ycmVjdCBrZXJuZWwg dmVyc2lvbiAqXC8kLzsiCWUJZW51bTpsaWJicGZfZXJybm8NCj4gK0xJQkJQRl9FUlJOT19fS1ZF UlNJT04JbGliYnBmLmgJL14JTElCQlBGX0VSUk5PX19LVkVSU0lPTiwJXC8qIEluY29ycmVjdCBv ciBubyAndmVyc2lvbicgc2VjdGlvbiAqXC8kLzsiCWUJZW51bTpsaWJicGZfZXJybm8NCj4gK0xJ QkJQRl9FUlJOT19fTElCRUxGCWxpYmJwZi5oCS9eCUxJQkJQRl9FUlJOT19fTElCRUxGID0gX19M SUJCUEZfRVJSTk9fX1NUQVJULCQvOyIJZQllbnVtOmxpYmJwZl9lcnJubw0KPiArTElCQlBGX0VS Uk5PX19MT0FECWxpYmJwZi5oCS9eCUxJQkJQRl9FUlJOT19fTE9BRCwJXC8qIExvYWQgcHJvZ3Jh bSBmYWlsdXJlIGZvciB1bmtub3duIHJlYXNvbiAqXC8kLzsiCWUJZW51bTpsaWJicGZfZXJybm8N Cj4gK0xJQkJQRl9FUlJOT19fUFJPRzJCSUcJbGliYnBmLmgJL14JTElCQlBGX0VSUk5PX19QUk9H MkJJRywJXC8qIFByb2dyYW0gdG9vIGJpZyAqXC8kLzsiCWUJZW51bTpsaWJicGZfZXJybm8NCj4g K0xJQkJQRl9FUlJOT19fUFJPR1RZUEUJbGliYnBmLmgJL14JTElCQlBGX0VSUk5PX19QUk9HVFlQ RSwJXC8qIEtlcm5lbCBkb2Vzbid0IHN1cHBvcnQgdGhpcyBwcm9ncmFtIHR5cGUgKlwvJC87Igll CWVudW06bGliYnBmX2Vycm5vDQo+ICtMSUJCUEZfRVJSTk9fX1JFTE9DCWxpYmJwZi5oCS9eCUxJ QkJQRl9FUlJOT19fUkVMT0MsCVwvKiBSZWxvY2F0aW9uIGZhaWxlZCAqXC8kLzsiCWUJZW51bTps aWJicGZfZXJybm8NCj4gK0xJQkJQRl9FUlJOT19fVkVSSUZZCWxpYmJwZi5oCS9eCUxJQkJQRl9F UlJOT19fVkVSSUZZLAlcLyogS2VybmVsIHZlcmlmaWVyIGJsb2NrcyBwcm9ncmFtIGxvYWRpbmcg KlwvJC87IgllCWVudW06bGliYnBmX2Vycm5vDQo+ICtMSUJCUEZfVkVSU0lPTglNYWtlZmlsZQkv XkxJQkJQRl9WRVJTSU9OID0gJChCUEZfVkVSU0lPTikuJChCUEZfUEFUQ0hMRVZFTCkuJChCUEZf RVhUUkFWRVJTSU9OKSQvOyIJbQ0KPiArTElCX0ZJTEUJTWFrZWZpbGUJL15MSUJfRklMRSA6PSAk KGFkZHByZWZpeCAkKE9VVFBVVCksJChMSUJfRklMRSkpJC87IgltDQo+ICtMSUJfRklMRQlNYWtl ZmlsZQkvXkxJQl9GSUxFID0gbGliYnBmLmEgbGliYnBmLnNvJC87IgltDQo+ICtNQUtFT1ZFUlJJ REVTCU1ha2VmaWxlCS9eTUFLRU9WRVJSSURFUz0kLzsiCW0NCj4gK04JTWFrZWZpbGUJL15OCQk9 JC87IgltDQo+ICtOT05fQ0hFQ0tfRkVBVF9UQVJHRVRTCU1ha2VmaWxlCS9eTk9OX0NIRUNLX0ZF QVRfVEFSR0VUUyA6PSBjbGVhbiBUQUdTIHRhZ3MgY3Njb3BlIGhlbHAkLzsiCW0NCj4gK05SX0VS Uk5PCWxpYmJwZi5jCTk2OyIJZAlmaWxlOg0KPiArT0JKCU1ha2VmaWxlCS9eT0JKCQk9ICRAJC87 IgltDQo+ICtQQVRDSExFVkVMCU1ha2VmaWxlCS9eUEFUQ0hMRVZFTAk9ICQoQlBGX1BBVENITEVW RUwpJC87IgltDQo+ICtRCU1ha2VmaWxlCS9eICBRID0gQCQvOyIJbQ0KPiArUQlNYWtlZmlsZQkv XiAgUSA9JC87IgltDQo+ICtTVFJFUlJfQlVGU0laRQlsaWJicGYuYwk5MjsiCWQJZmlsZToNCj4g K1RBUkdFVFMJTWFrZWZpbGUJL15UQVJHRVRTID0gJChDTURfVEFSR0VUUykkLzsiCW0NCj4gK1ZF UkJPU0UJTWFrZWZpbGUJL14gIFZFUkJPU0UgPSAkKFYpJC87IgltDQo+ICtWRVJCT1NFCU1ha2Vm aWxlCS9eICBWRVJCT1NFID0gMCQvOyIJbQ0KPiArVkVSU0lPTglNYWtlZmlsZQkvXlZFUlNJT04J CT0gJChCUEZfVkVSU0lPTikkLzsiCW0NCj4gK19fQlBGX0JQRl9ICWJwZi5oCTIyOyIJZA0KPiAr X19CUEZfTElCQlBGX0gJbGliYnBmLmgJMjI7IglkDQo+ICtfX0xJQkJQRl9FUlJOT19fRU5ECWxp YmJwZi5oCS9eCV9fTElCQlBGX0VSUk5PX19FTkQsJC87IgllCWVudW06bGliYnBmX2Vycm5vDQo+ ICtfX0xJQkJQRl9FUlJOT19fU1RBUlQJbGliYnBmLmgJL14JX19MSUJCUEZfRVJSTk9fX1NUQVJU ID0gNDAwMCwkLzsiCWUJZW51bTpsaWJicGZfZXJybm8NCj4gK19fTlJfYnBmCWJwZi5jCTM1OyIJ ZAlmaWxlOg0KPiArX19OUl9icGYJYnBmLmMJMzc7IglkCWZpbGU6DQo+ICtfX05SX2JwZglicGYu YwkzOTsiCWQJZmlsZToNCj4gK19fTlJfYnBmCWJwZi5jCTQxOyIJZAlmaWxlOg0KPiArX19OUl9i cGYJYnBmLmMJNDM7IglkCWZpbGU6DQo+ICtfX2Jhc2VfcHIJbGliYnBmLmMJL15zdGF0aWMgaW50 IF9fYmFzZV9wcihjb25zdCBjaGFyICpmb3JtYXQsIC4uLikkLzsiCWYJZmlsZToNCj4gK19fYnBm X29iamVjdF9fb3BlbglsaWJicGYuYwkvXl9fYnBmX29iamVjdF9fb3Blbihjb25zdCBjaGFyICpw YXRoLCB2b2lkICpvYmpfYnVmLCBzaXplX3Qgb2JqX2J1Zl9zeikkLzsiCWYJZmlsZToNCj4gK19f cHIJbGliYnBmLmMJNzM7IglkCWZpbGU6DQo+ICtfX3ByX2RlYnVnCWxpYmJwZi5jCS9ec3RhdGlj IF9fcHJpbnRmKDEsIDIpIGxpYmJwZl9wcmludF9mbl90IF9fcHJfZGVidWc7JC87Igl2DQo+ICtf X3ByX2luZm8JbGliYnBmLmMJL15zdGF0aWMgX19wcmludGYoMSwgMikgbGliYnBmX3ByaW50X2Zu X3QgX19wcl9pbmZvID0gX19iYXNlX3ByOyQvOyIJdg0KPiArX19wcl93YXJuaW5nCWxpYmJwZi5j CS9ec3RhdGljIF9fcHJpbnRmKDEsIDIpIGxpYmJwZl9wcmludF9mbl90IF9fcHJfd2FybmluZyA9 IF9fYmFzZV9wcjskLzsiCXYNCj4gK19fcHJpbnRmCWxpYmJwZi5jCTU1OyIJZAlmaWxlOg0KPiAr YWxsb3ctb3ZlcnJpZGUJTWFrZWZpbGUJL15kZWZpbmUgYWxsb3ctb3ZlcnJpZGUkLzsiCW0NCj4g K2JwZl9jcmVhdGVfbWFwCWJwZi5jCS9eaW50IGJwZl9jcmVhdGVfbWFwKGVudW0gYnBmX21hcF90 eXBlIG1hcF90eXBlLCBpbnQga2V5X3NpemUsJC87IglmDQo+ICticGZfY3JlYXRlX21hcF9pbl9t YXAJYnBmLmMJL15pbnQgYnBmX2NyZWF0ZV9tYXBfaW5fbWFwKGVudW0gYnBmX21hcF90eXBlIG1h cF90eXBlLCBjb25zdCBjaGFyICpuYW1lLCQvOyIJZg0KPiArYnBmX2NyZWF0ZV9tYXBfaW5fbWFw X25vZGUJYnBmLmMJL15pbnQgYnBmX2NyZWF0ZV9tYXBfaW5fbWFwX25vZGUoZW51bSBicGZfbWFw X3R5cGUgbWFwX3R5cGUsIGNvbnN0IGNoYXIgKm5hbWUsJC87IglmDQo+ICticGZfY3JlYXRlX21h cF9uYW1lCWJwZi5jCS9eaW50IGJwZl9jcmVhdGVfbWFwX25hbWUoZW51bSBicGZfbWFwX3R5cGUg bWFwX3R5cGUsIGNvbnN0IGNoYXIgKm5hbWUsJC87IglmDQo+ICticGZfY3JlYXRlX21hcF9ub2Rl CWJwZi5jCS9eaW50IGJwZl9jcmVhdGVfbWFwX25vZGUoZW51bSBicGZfbWFwX3R5cGUgbWFwX3R5 cGUsIGNvbnN0IGNoYXIgKm5hbWUsJC87IglmDQo+ICticGZfbG9hZF9wcm9ncmFtCWJwZi5jCS9e aW50IGJwZl9sb2FkX3Byb2dyYW0oZW51bSBicGZfcHJvZ190eXBlIHR5cGUsIGNvbnN0IHN0cnVj dCBicGZfaW5zbiAqaW5zbnMsJC87IglmDQo+ICticGZfbG9hZF9wcm9ncmFtX25hbWUJYnBmLmMJ L15pbnQgYnBmX2xvYWRfcHJvZ3JhbV9uYW1lKGVudW0gYnBmX3Byb2dfdHlwZSB0eXBlLCBjb25z dCBjaGFyICpuYW1lLCQvOyIJZg0KPiArYnBmX21hcAlsaWJicGYuYwkvXnN0cnVjdCBicGZfbWFw IHskLzsiCXMJZmlsZToNCj4gK2JwZl9tYXBfX2RlZglsaWJicGYuYwkvXmNvbnN0IHN0cnVjdCBi cGZfbWFwX2RlZiAqYnBmX21hcF9fZGVmKHN0cnVjdCBicGZfbWFwICptYXApJC87IglmDQo+ICti cGZfbWFwX19mZAlsaWJicGYuYwkvXmludCBicGZfbWFwX19mZChzdHJ1Y3QgYnBmX21hcCAqbWFw KSQvOyIJZg0KPiArYnBmX21hcF9fZm9yX2VhY2gJbGliYnBmLmgJMjMwOyIJZA0KPiArYnBmX21h cF9fbmFtZQlsaWJicGYuYwkvXmNvbnN0IGNoYXIgKmJwZl9tYXBfX25hbWUoc3RydWN0IGJwZl9t YXAgKm1hcCkkLzsiCWYNCj4gK2JwZl9tYXBfX25leHQJbGliYnBmLmMJL15icGZfbWFwX19uZXh0 KHN0cnVjdCBicGZfbWFwICpwcmV2LCBzdHJ1Y3QgYnBmX29iamVjdCAqb2JqKSQvOyIJZg0KPiAr YnBmX21hcF9fcGluCWxpYmJwZi5jCS9eaW50IGJwZl9tYXBfX3BpbihzdHJ1Y3QgYnBmX21hcCAq bWFwLCBjb25zdCBjaGFyICpwYXRoKSQvOyIJZg0KPiArYnBmX21hcF9fcHJpdglsaWJicGYuYwkv XnZvaWQgKmJwZl9tYXBfX3ByaXYoc3RydWN0IGJwZl9tYXAgKm1hcCkkLzsiCWYNCj4gK2JwZl9t YXBfX3NldF9wcml2CWxpYmJwZi5jCS9eaW50IGJwZl9tYXBfX3NldF9wcml2KHN0cnVjdCBicGZf bWFwICptYXAsIHZvaWQgKnByaXYsJC87IglmDQo+ICticGZfbWFwX2NsZWFyX3ByaXZfdAlsaWJi cGYuaAkvXnR5cGVkZWYgdm9pZCAoKmJwZl9tYXBfY2xlYXJfcHJpdl90KShzdHJ1Y3QgYnBmX21h cCAqLCB2b2lkICopOyQvOyIJdA0KPiArYnBmX21hcF9kZWYJbGliYnBmLmgJL15zdHJ1Y3QgYnBm X21hcF9kZWYgeyQvOyIJcw0KPiArYnBmX21hcF9kZWxldGVfZWxlbQlicGYuYwkvXmludCBicGZf bWFwX2RlbGV0ZV9lbGVtKGludCBmZCwgY29uc3Qgdm9pZCAqa2V5KSQvOyIJZg0KPiArYnBmX21h cF9nZXRfZmRfYnlfaWQJYnBmLmMJL15pbnQgYnBmX21hcF9nZXRfZmRfYnlfaWQoX191MzIgaWQp JC87IglmDQo+ICticGZfbWFwX2dldF9uZXh0X2lkCWJwZi5jCS9eaW50IGJwZl9tYXBfZ2V0X25l eHRfaWQoX191MzIgc3RhcnRfaWQsIF9fdTMyICpuZXh0X2lkKSQvOyIJZg0KPiArYnBmX21hcF9n ZXRfbmV4dF9rZXkJYnBmLmMJL15pbnQgYnBmX21hcF9nZXRfbmV4dF9rZXkoaW50IGZkLCBjb25z dCB2b2lkICprZXksIHZvaWQgKm5leHRfa2V5KSQvOyIJZg0KPiArYnBmX21hcF9sb29rdXBfZWxl bQlicGYuYwkvXmludCBicGZfbWFwX2xvb2t1cF9lbGVtKGludCBmZCwgY29uc3Qgdm9pZCAqa2V5 LCB2b2lkICp2YWx1ZSkkLzsiCWYNCj4gK2JwZl9tYXBfdXBkYXRlX2VsZW0JYnBmLmMJL15pbnQg YnBmX21hcF91cGRhdGVfZWxlbShpbnQgZmQsIGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAq dmFsdWUsJC87IglmDQo+ICticGZfb2JqX2dldAlicGYuYwkvXmludCBicGZfb2JqX2dldChjb25z dCBjaGFyICpwYXRobmFtZSkkLzsiCWYNCj4gK2JwZl9vYmpfZ2V0X2luZm9fYnlfZmQJYnBmLmMJ L15pbnQgYnBmX29ial9nZXRfaW5mb19ieV9mZChpbnQgcHJvZ19mZCwgdm9pZCAqaW5mbywgX191 MzIgKmluZm9fbGVuKSQvOyIJZg0KPiArYnBmX29ial9waW4JYnBmLmMJL15pbnQgYnBmX29ial9w aW4oaW50IGZkLCBjb25zdCBjaGFyICpwYXRobmFtZSkkLzsiCWYNCj4gK2JwZl9vYmplY3QJbGli YnBmLmMJL15zdHJ1Y3QgYnBmX29iamVjdCB7JC87IglzCWZpbGU6DQo+ICticGZfb2JqZWN0X19h ZGRfcHJvZ3JhbQlsaWJicGYuYwkvXmJwZl9vYmplY3RfX2FkZF9wcm9ncmFtKHN0cnVjdCBicGZf b2JqZWN0ICpvYmosIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCQvOyIJZglmaWxlOg0KPiArYnBm X29iamVjdF9fY2hlY2tfZW5kaWFubmVzcwlsaWJicGYuYwkvXmJwZl9vYmplY3RfX2NoZWNrX2Vu ZGlhbm5lc3Moc3RydWN0IGJwZl9vYmplY3QgKm9iaikkLzsiCWYJZmlsZToNCj4gK2JwZl9vYmpl Y3RfX2Nsb3NlCWxpYmJwZi5jCS9edm9pZCBicGZfb2JqZWN0X19jbG9zZShzdHJ1Y3QgYnBmX29i amVjdCAqb2JqKSQvOyIJZg0KPiArYnBmX29iamVjdF9fY29sbGVjdF9yZWxvYwlsaWJicGYuYwkv XnN0YXRpYyBpbnQgYnBmX29iamVjdF9fY29sbGVjdF9yZWxvYyhzdHJ1Y3QgYnBmX29iamVjdCAq b2JqKSQvOyIJZglmaWxlOg0KPiArYnBmX29iamVjdF9fY3JlYXRlX21hcHMJbGliYnBmLmMJL15i cGZfb2JqZWN0X19jcmVhdGVfbWFwcyhzdHJ1Y3QgYnBmX29iamVjdCAqb2JqKSQvOyIJZglmaWxl Og0KPiArYnBmX29iamVjdF9fZWxmX2NvbGxlY3QJbGliYnBmLmMJL15zdGF0aWMgaW50IGJwZl9v YmplY3RfX2VsZl9jb2xsZWN0KHN0cnVjdCBicGZfb2JqZWN0ICpvYmopJC87IglmCWZpbGU6DQo+ ICticGZfb2JqZWN0X19lbGZfZmluaXNoCWxpYmJwZi5jCS9ec3RhdGljIHZvaWQgYnBmX29iamVj dF9fZWxmX2ZpbmlzaChzdHJ1Y3QgYnBmX29iamVjdCAqb2JqKSQvOyIJZglmaWxlOg0KPiArYnBm X29iamVjdF9fZWxmX2luaXQJbGliYnBmLmMJL15zdGF0aWMgaW50IGJwZl9vYmplY3RfX2VsZl9p bml0KHN0cnVjdCBicGZfb2JqZWN0ICpvYmopJC87IglmCWZpbGU6DQo+ICticGZfb2JqZWN0X19m aW5kX21hcF9ieV9uYW1lCWxpYmJwZi5jCS9eYnBmX29iamVjdF9fZmluZF9tYXBfYnlfbmFtZShz dHJ1Y3QgYnBmX29iamVjdCAqb2JqLCBjb25zdCBjaGFyICpuYW1lKSQvOyIJZg0KPiArYnBmX29i amVjdF9fZmluZF9tYXBfYnlfb2Zmc2V0CWxpYmJwZi5jCS9eYnBmX29iamVjdF9fZmluZF9tYXBf Ynlfb2Zmc2V0KHN0cnVjdCBicGZfb2JqZWN0ICpvYmosIHNpemVfdCBvZmZzZXQpJC87IglmDQo+ ICticGZfb2JqZWN0X19maW5kX3Byb2dfYnlfaWR4CWxpYmJwZi5jCS9eYnBmX29iamVjdF9fZmlu ZF9wcm9nX2J5X2lkeChzdHJ1Y3QgYnBmX29iamVjdCAqb2JqLCBpbnQgaWR4KSQvOyIJZglmaWxl Og0KPiArYnBmX29iamVjdF9fZm9yX2VhY2hfcHJvZ3JhbQlsaWJicGYuaAk5NTsiCWQNCj4gK2Jw Zl9vYmplY3RfX2Zvcl9lYWNoX3NhZmUJbGliYnBmLmgJNzk7IglkDQo+ICticGZfb2JqZWN0X19p bml0X2t2ZXJzaW9uCWxpYmJwZi5jCS9eYnBmX29iamVjdF9faW5pdF9rdmVyc2lvbihzdHJ1Y3Qg YnBmX29iamVjdCAqb2JqLCQvOyIJZglmaWxlOg0KPiArYnBmX29iamVjdF9faW5pdF9saWNlbnNl CWxpYmJwZi5jCS9eYnBmX29iamVjdF9faW5pdF9saWNlbnNlKHN0cnVjdCBicGZfb2JqZWN0ICpv YmosJC87IglmCWZpbGU6DQo+ICticGZfb2JqZWN0X19pbml0X21hcHMJbGliYnBmLmMJL15icGZf b2JqZWN0X19pbml0X21hcHMoc3RydWN0IGJwZl9vYmplY3QgKm9iaikkLzsiCWYJZmlsZToNCj4g K2JwZl9vYmplY3RfX2luaXRfcHJvZ19uYW1lcwlsaWJicGYuYwkvXmJwZl9vYmplY3RfX2luaXRf cHJvZ19uYW1lcyhzdHJ1Y3QgYnBmX29iamVjdCAqb2JqKSQvOyIJZglmaWxlOg0KPiArYnBmX29i amVjdF9fa3ZlcnNpb24JbGliYnBmLmMJL151bnNpZ25lZCBpbnQgYnBmX29iamVjdF9fa3ZlcnNp b24oc3RydWN0IGJwZl9vYmplY3QgKm9iaikkLzsiCWYNCj4gK2JwZl9vYmplY3RfX2xvYWQJbGli YnBmLmMJL15pbnQgYnBmX29iamVjdF9fbG9hZChzdHJ1Y3QgYnBmX29iamVjdCAqb2JqKSQvOyIJ Zg0KPiArYnBmX29iamVjdF9fbG9hZF9wcm9ncwlsaWJicGYuYwkvXmJwZl9vYmplY3RfX2xvYWRf cHJvZ3Moc3RydWN0IGJwZl9vYmplY3QgKm9iaikkLzsiCWYJZmlsZToNCj4gK2JwZl9vYmplY3Rf X25hbWUJbGliYnBmLmMJL15jb25zdCBjaGFyICpicGZfb2JqZWN0X19uYW1lKHN0cnVjdCBicGZf b2JqZWN0ICpvYmopJC87IglmDQo+ICticGZfb2JqZWN0X19uZXcJbGliYnBmLmMJL15zdGF0aWMg c3RydWN0IGJwZl9vYmplY3QgKmJwZl9vYmplY3RfX25ldyhjb25zdCBjaGFyICpwYXRoLCQvOyIJ ZglmaWxlOg0KPiArYnBmX29iamVjdF9fbmV4dAlsaWJicGYuYwkvXmJwZl9vYmplY3RfX25leHQo c3RydWN0IGJwZl9vYmplY3QgKnByZXYpJC87IglmDQo+ICticGZfb2JqZWN0X19vcGVuCWxpYmJw Zi5jCS9ec3RydWN0IGJwZl9vYmplY3QgKmJwZl9vYmplY3RfX29wZW4oY29uc3QgY2hhciAqcGF0 aCkkLzsiCWYNCj4gK2JwZl9vYmplY3RfX29wZW5fYnVmZmVyCWxpYmJwZi5jCS9ec3RydWN0IGJw Zl9vYmplY3QgKmJwZl9vYmplY3RfX29wZW5fYnVmZmVyKHZvaWQgKm9ial9idWYsJC87IglmDQo+ ICticGZfb2JqZWN0X19waW4JbGliYnBmLmMJL15pbnQgYnBmX29iamVjdF9fcGluKHN0cnVjdCBi cGZfb2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKnBhdGgpJC87IglmDQo+ICticGZfb2JqZWN0X19w cml2CWxpYmJwZi5jCS9edm9pZCAqYnBmX29iamVjdF9fcHJpdihzdHJ1Y3QgYnBmX29iamVjdCAq b2JqKSQvOyIJZg0KPiArYnBmX29iamVjdF9fcmVsb2NhdGUJbGliYnBmLmMJL15icGZfb2JqZWN0 X19yZWxvY2F0ZShzdHJ1Y3QgYnBmX29iamVjdCAqb2JqKSQvOyIJZglmaWxlOg0KPiArYnBmX29i amVjdF9fc2V0X3ByaXYJbGliYnBmLmMJL15pbnQgYnBmX29iamVjdF9fc2V0X3ByaXYoc3RydWN0 IGJwZl9vYmplY3QgKm9iaiwgdm9pZCAqcHJpdiwkLzsiCWYNCj4gK2JwZl9vYmplY3RfX3VubG9h ZAlsaWJicGYuYwkvXmludCBicGZfb2JqZWN0X191bmxvYWQoc3RydWN0IGJwZl9vYmplY3QgKm9i aikkLzsiCWYNCj4gK2JwZl9vYmplY3RfX3ZhbGlkYXRlCWxpYmJwZi5jCS9ec3RhdGljIGludCBi cGZfb2JqZWN0X192YWxpZGF0ZShzdHJ1Y3QgYnBmX29iamVjdCAqb2JqKSQvOyIJZglmaWxlOg0K PiArYnBmX29iamVjdF9jbGVhcl9wcml2X3QJbGliYnBmLmgJL150eXBlZGVmIHZvaWQgKCpicGZf b2JqZWN0X2NsZWFyX3ByaXZfdCkoc3RydWN0IGJwZl9vYmplY3QgKiwgdm9pZCAqKTskLzsiCXQN Cj4gK2JwZl9wcm9nX2F0dGFjaAlicGYuYwkvXmludCBicGZfcHJvZ19hdHRhY2goaW50IHByb2df ZmQsIGludCB0YXJnZXRfZmQsIGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUsJC87IglmDQo+ICti cGZfcHJvZ19kZXRhY2gJYnBmLmMJL15pbnQgYnBmX3Byb2dfZGV0YWNoKGludCB0YXJnZXRfZmQs IGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpJC87IglmDQo+ICticGZfcHJvZ19kZXRhY2gyCWJw Zi5jCS9eaW50IGJwZl9wcm9nX2RldGFjaDIoaW50IHByb2dfZmQsIGludCB0YXJnZXRfZmQsIGVu dW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpJC87IglmDQo+ICticGZfcHJvZ19nZXRfZmRfYnlfaWQJ YnBmLmMJL15pbnQgYnBmX3Byb2dfZ2V0X2ZkX2J5X2lkKF9fdTMyIGlkKSQvOyIJZg0KPiArYnBm X3Byb2dfZ2V0X25leHRfaWQJYnBmLmMJL15pbnQgYnBmX3Byb2dfZ2V0X25leHRfaWQoX191MzIg c3RhcnRfaWQsIF9fdTMyICpuZXh0X2lkKSQvOyIJZg0KPiArYnBmX3Byb2dfbG9hZAlsaWJicGYu YwkvXmludCBicGZfcHJvZ19sb2FkKGNvbnN0IGNoYXIgKmZpbGUsIGVudW0gYnBmX3Byb2dfdHlw ZSB0eXBlLCQvOyIJZg0KPiArYnBmX3Byb2dfcHJlcF9yZXN1bHQJbGliYnBmLmgJL15zdHJ1Y3Qg YnBmX3Byb2dfcHJlcF9yZXN1bHQgeyQvOyIJcw0KPiArYnBmX3Byb2dfcXVlcnkJYnBmLmMJL15p bnQgYnBmX3Byb2dfcXVlcnkoaW50IHRhcmdldF9mZCwgZW51bSBicGZfYXR0YWNoX3R5cGUgdHlw ZSwgX191MzIgcXVlcnlfZmxhZ3MsJC87IglmDQo+ICticGZfcHJvZ190ZXN0X3J1bglicGYuYwkv XmludCBicGZfcHJvZ190ZXN0X3J1bihpbnQgcHJvZ19mZCwgaW50IHJlcGVhdCwgdm9pZCAqZGF0 YSwgX191MzIgc2l6ZSwkLzsiCWYNCj4gK2JwZl9wcm9ncmFtCWxpYmJwZi5jCS9ec3RydWN0IGJw Zl9wcm9ncmFtIHskLzsiCXMJZmlsZToNCj4gK2JwZl9wcm9ncmFtX19jb2xsZWN0X3JlbG9jCWxp YmJwZi5jCS9eYnBmX3Byb2dyYW1fX2NvbGxlY3RfcmVsb2Moc3RydWN0IGJwZl9wcm9ncmFtICpw cm9nLCQvOyIJZglmaWxlOg0KPiArYnBmX3Byb2dyYW1fX2V4aXQJbGliYnBmLmMJL15zdGF0aWMg dm9pZCBicGZfcHJvZ3JhbV9fZXhpdChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2cpJC87IglmCWZp bGU6DQo+ICticGZfcHJvZ3JhbV9fZmQJbGliYnBmLmMJL15pbnQgYnBmX3Byb2dyYW1fX2ZkKHN0 cnVjdCBicGZfcHJvZ3JhbSAqcHJvZykkLzsiCWYNCj4gK2JwZl9wcm9ncmFtX19pbml0CWxpYmJw Zi5jCS9eYnBmX3Byb2dyYW1fX2luaXQodm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIGNoYXIgKnNl Y3Rpb25fbmFtZSwgaW50IGlkeCwkLzsiCWYJZmlsZToNCj4gK2JwZl9wcm9ncmFtX19pc190eXBl CWxpYmJwZi5jCS9ec3RhdGljIGJvb2wgYnBmX3Byb2dyYW1fX2lzX3R5cGUoc3RydWN0IGJwZl9w cm9ncmFtICpwcm9nLCQvOyIJZglmaWxlOg0KPiArYnBmX3Byb2dyYW1fX2xvYWQJbGliYnBmLmMJ L15icGZfcHJvZ3JhbV9fbG9hZChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csJC87IglmCWZpbGU6 DQo+ICticGZfcHJvZ3JhbV9fbmV4dAlsaWJicGYuYwkvXmJwZl9wcm9ncmFtX19uZXh0KHN0cnVj dCBicGZfcHJvZ3JhbSAqcHJldiwgc3RydWN0IGJwZl9vYmplY3QgKm9iaikkLzsiCWYNCj4gK2Jw Zl9wcm9ncmFtX19udGhfZmQJbGliYnBmLmMJL15pbnQgYnBmX3Byb2dyYW1fX250aF9mZChzdHJ1 Y3QgYnBmX3Byb2dyYW0gKnByb2csIGludCBuKSQvOyIJZg0KPiArYnBmX3Byb2dyYW1fX3Bpbgls aWJicGYuYwkvXmludCBicGZfcHJvZ3JhbV9fcGluKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywg Y29uc3QgY2hhciAqcGF0aCkkLzsiCWYNCj4gK2JwZl9wcm9ncmFtX19waW5faW5zdGFuY2UJbGli YnBmLmMJL15pbnQgYnBmX3Byb2dyYW1fX3Bpbl9pbnN0YW5jZShzdHJ1Y3QgYnBmX3Byb2dyYW0g KnByb2csIGNvbnN0IGNoYXIgKnBhdGgsJC87IglmDQo+ICticGZfcHJvZ3JhbV9fcHJpdglsaWJi cGYuYwkvXnZvaWQgKmJwZl9wcm9ncmFtX19wcml2KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZykk LzsiCWYNCj4gK2JwZl9wcm9ncmFtX19yZWxvY2F0ZQlsaWJicGYuYwkvXmJwZl9wcm9ncmFtX19y ZWxvY2F0ZShzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIHN0cnVjdCBicGZfb2JqZWN0ICpvYmop JC87IglmCWZpbGU6DQo+ICticGZfcHJvZ3JhbV9fc2V0X3ByZXAJbGliYnBmLmMJL15pbnQgYnBm X3Byb2dyYW1fX3NldF9wcmVwKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgaW50IG5yX2luc3Rh bmNlcywkLzsiCWYNCj4gK2JwZl9wcm9ncmFtX19zZXRfcHJpdglsaWJicGYuYwkvXmludCBicGZf cHJvZ3JhbV9fc2V0X3ByaXYoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCB2b2lkICpwcml2LCQv OyIJZg0KPiArYnBmX3Byb2dyYW1fX3NldF90eXBlCWxpYmJwZi5jCS9edm9pZCBicGZfcHJvZ3Jh bV9fc2V0X3R5cGUoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBlbnVtIGJwZl9wcm9nX3R5cGUg dHlwZSkkLzsiCWYNCj4gK2JwZl9wcm9ncmFtX190aXRsZQlsaWJicGYuYwkvXmNvbnN0IGNoYXIg KmJwZl9wcm9ncmFtX190aXRsZShzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIGJvb2wgbmVlZHNf Y29weSkkLzsiCWYNCj4gK2JwZl9wcm9ncmFtX191bmxvYWQJbGliYnBmLmMJL15zdGF0aWMgdm9p ZCBicGZfcHJvZ3JhbV9fdW5sb2FkKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZykkLzsiCWYJZmls ZToNCj4gK2JwZl9wcm9ncmFtX2NsZWFyX3ByaXZfdAlsaWJicGYuaAkvXnR5cGVkZWYgdm9pZCAo KmJwZl9wcm9ncmFtX2NsZWFyX3ByaXZfdCkoc3RydWN0IGJwZl9wcm9ncmFtICosJC87Igl0DQo+ ICticGZfcHJvZ3JhbV9wcmVwX3QJbGliYnBmLmgJL150eXBlZGVmIGludCAoKmJwZl9wcm9ncmFt X3ByZXBfdCkoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBpbnQgbiwkLzsiCXQNCj4gK2JwZl92 ZXJpZnlfcHJvZ3JhbQlicGYuYwkvXmludCBicGZfdmVyaWZ5X3Byb2dyYW0oZW51bSBicGZfcHJv Z190eXBlIHR5cGUsIGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbnMsJC87IglmDQo+ICtjaGVj a19mZWF0CU1ha2VmaWxlCS9eICBjaGVja19mZWF0IDo9IDAkLzsiCW0NCj4gK2NoZWNrX2ZlYXQJ TWFrZWZpbGUJL15jaGVja19mZWF0IDo9IDEkLzsiCW0NCj4gK2NoZWNrX3BhdGgJbGliYnBmLmMJ L15zdGF0aWMgaW50IGNoZWNrX3BhdGgoY29uc3QgY2hhciAqcGF0aCkkLzsiCWYJZmlsZToNCj4g K2NsZWFyX3ByaXYJbGliYnBmLmMJL14JYnBmX21hcF9jbGVhcl9wcml2X3QgY2xlYXJfcHJpdjsk LzsiCW0Jc3RydWN0OmJwZl9tYXAJZmlsZToNCj4gK2NsZWFyX3ByaXYJbGliYnBmLmMJL14JYnBm X29iamVjdF9jbGVhcl9wcml2X3QgY2xlYXJfcHJpdjskLzsiCW0Jc3RydWN0OmJwZl9vYmplY3QJ ZmlsZToNCj4gK2NsZWFyX3ByaXYJbGliYnBmLmMJL14JYnBmX3Byb2dyYW1fY2xlYXJfcHJpdl90 IGNsZWFyX3ByaXY7JC87IgltCXN0cnVjdDpicGZfcHJvZ3JhbQlmaWxlOg0KPiArY29tcGFyZV9i cGZfbWFwCWxpYmJwZi5jCS9ec3RhdGljIGludCBjb21wYXJlX2JwZl9tYXAoY29uc3Qgdm9pZCAq X2EsIGNvbnN0IHZvaWQgKl9iKSQvOyIJZglmaWxlOg0KPiArZGF0YQlsaWJicGYuYwkvXgkJCUVs Zl9EYXRhICpkYXRhOyQvOyIJbQlzdHJ1Y3Q6YnBmX29iamVjdDo6X19hbm9uMzo6X19hbm9uNAlm aWxlOg0KPiArZGVmCWxpYmJwZi5jCS9eCXN0cnVjdCBicGZfbWFwX2RlZiBkZWY7JC87IgltCXN0 cnVjdDpicGZfbWFwCXR5cGVyZWY6c3RydWN0OmJwZl9tYXA6OmJwZl9tYXBfZGVmCWZpbGU6DQo+ ICtkb19pbnN0YWxsCU1ha2VmaWxlCS9eZGVmaW5lIGRvX2luc3RhbGwkLzsiCW0NCj4gK2VmaWxl CWxpYmJwZi5jCS9eCX0gZWZpbGU7JC87IgltCXN0cnVjdDpicGZfb2JqZWN0CXR5cGVyZWY6c3Ry dWN0OmJwZl9vYmplY3Q6Ol9fYW5vbjMJZmlsZToNCj4gK2VoZHIJbGliYnBmLmMJL14JCUdFbGZf RWhkciBlaGRyOyQvOyIJbQlzdHJ1Y3Q6YnBmX29iamVjdDo6X19hbm9uMwlmaWxlOg0KPiArZWxm CWxpYmJwZi5jCS9eCQlFbGYgKmVsZjskLzsiCW0Jc3RydWN0OmJwZl9vYmplY3Q6Ol9fYW5vbjMJ ZmlsZToNCj4gK2ZkCWxpYmJwZi5jCS9eCQlpbnQgZmQ7JC87IgltCXN0cnVjdDpicGZfb2JqZWN0 OjpfX2Fub24zCWZpbGU6DQo+ICtmZAlsaWJicGYuYwkvXglpbnQgZmQ7JC87IgltCXN0cnVjdDpi cGZfbWFwCWZpbGU6DQo+ICtmZHMJbGliYnBmLmMJL14JCWludCAqZmRzOyQvOyIJbQlzdHJ1Y3Q6 YnBmX3Byb2dyYW06Ol9fYW5vbjIJZmlsZToNCj4gK2lkeAlsaWJicGYuYwkvXglpbnQgaWR4OyQv OyIJbQlzdHJ1Y3Q6YnBmX3Byb2dyYW0JZmlsZToNCj4gK2luc25faWR4CWxpYmJwZi5jCS9eCQlp bnQgaW5zbl9pZHg7JC87IgltCXN0cnVjdDpicGZfcHJvZ3JhbTo6X19hbm9uMQlmaWxlOg0KPiAr aW5zbnMJbGliYnBmLmMJL14Jc3RydWN0IGJwZl9pbnNuICppbnNuczskLzsiCW0Jc3RydWN0OmJw Zl9wcm9ncmFtCXR5cGVyZWY6c3RydWN0OmJwZl9wcm9ncmFtOjpicGZfaW5zbglmaWxlOg0KPiAr aW5zbnNfY250CWxpYmJwZi5jCS9eCXNpemVfdCBpbnNuc19jbnQ7JC87IgltCXN0cnVjdDpicGZf cHJvZ3JhbQlmaWxlOg0KPiAraW5zdGFuY2VzCWxpYmJwZi5jCS9eCX0gaW5zdGFuY2VzOyQvOyIJ bQlzdHJ1Y3Q6YnBmX3Byb2dyYW0JdHlwZXJlZjpzdHJ1Y3Q6YnBmX3Byb2dyYW06Ol9fYW5vbjIJ ZmlsZToNCj4gK2tlcm5fdmVyc2lvbglsaWJicGYuYwkvXgl1MzIga2Vybl92ZXJzaW9uOyQvOyIJ bQlzdHJ1Y3Q6YnBmX29iamVjdAlmaWxlOg0KPiAra2V5X3NpemUJbGliYnBmLmgJL14JdW5zaWdu ZWQgaW50IGtleV9zaXplOyQvOyIJbQlzdHJ1Y3Q6YnBmX21hcF9kZWYNCj4gK2xpYmJwZl9lcnJu bwlsaWJicGYuaAkvXmVudW0gbGliYnBmX2Vycm5vIHskLzsiCWcNCj4gK2xpYmJwZl9nZXRfZXJy b3IJbGliYnBmLmMJL15sb25nIGxpYmJwZl9nZXRfZXJyb3IoY29uc3Qgdm9pZCAqcHRyKSQvOyIJ Zg0KPiArbGliYnBmX3ByaW50X2ZuX3QJbGliYnBmLmgJL150eXBlZGVmIGludCAoKmxpYmJwZl9w cmludF9mbl90KShjb25zdCBjaGFyICosIC4uLikkLzsiCXQNCj4gK2xpYmJwZl9zZXRfcHJpbnQJ bGliYnBmLmMJL152b2lkIGxpYmJwZl9zZXRfcHJpbnQobGliYnBmX3ByaW50X2ZuX3Qgd2Fybiwk LzsiCWYNCj4gK2xpYmJwZl9zdHJlcnJvcglsaWJicGYuYwkvXmludCBsaWJicGZfc3RyZXJyb3Io aW50IGVyciwgY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSkkLzsiCWYNCj4gK2xpYmJwZl9zdHJlcnJv cl90YWJsZQlsaWJicGYuYwkvXnN0YXRpYyBjb25zdCBjaGFyICpsaWJicGZfc3RyZXJyb3JfdGFi bGVbTlJfRVJSTk9dID0geyQvOyIJdglmaWxlOg0KPiArbGliZGlyCU1ha2VmaWxlCS9ebGliZGly ID0gJChwcmVmaXgpXC8kKGxpYmRpcl9yZWxhdGl2ZSkkLzsiCW0NCj4gK2xpYmRpcl9TUQlNYWtl ZmlsZQkvXmxpYmRpcl9TUSA9ICQoc3Vic3QgJywnXFwnJywkKGxpYmRpcikpJC87IgltDQo+ICts aWJkaXJfcmVsYXRpdmUJTWFrZWZpbGUJL14gIGxpYmRpcl9yZWxhdGl2ZSA9IGxpYiQvOyIJbQ0K PiArbGliZGlyX3JlbGF0aXZlCU1ha2VmaWxlCS9eICBsaWJkaXJfcmVsYXRpdmUgPSBsaWI2NCQv OyIJbQ0KPiArbGliZGlyX3JlbGF0aXZlX1NRCU1ha2VmaWxlCS9ebGliZGlyX3JlbGF0aXZlX1NR ID0gJChzdWJzdCAnLCdcXCcnLCQobGliZGlyX3JlbGF0aXZlKSkkLzsiCW0NCj4gK2xpY2Vuc2UJ bGliYnBmLmMJL14JY2hhciBsaWNlbnNlWzY0XTskLzsiCW0Jc3RydWN0OmJwZl9vYmplY3QJZmls ZToNCj4gK2xpc3QJbGliYnBmLmMJL14Jc3RydWN0IGxpc3RfaGVhZCBsaXN0OyQvOyIJbQlzdHJ1 Y3Q6YnBmX29iamVjdAl0eXBlcmVmOnN0cnVjdDpicGZfb2JqZWN0OjpsaXN0X2hlYWQJZmlsZToN Cj4gK2xvYWRfcHJvZ3JhbQlsaWJicGYuYwkvXmxvYWRfcHJvZ3JhbShlbnVtIGJwZl9wcm9nX3R5 cGUgdHlwZSwgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGJwZl9pbnNuICppbnNucywkLzsiCWYJ ZmlsZToNCj4gK2xvYWRlZAlsaWJicGYuYwkvXglib29sIGxvYWRlZDskLzsiCW0Jc3RydWN0OmJw Zl9vYmplY3QJZmlsZToNCj4gK21ha2VfZGlyCWxpYmJwZi5jCS9ec3RhdGljIGludCBtYWtlX2Rp cihjb25zdCBjaGFyICpwYXRoKSQvOyIJZglmaWxlOg0KPiArbWFuX2RpcglNYWtlZmlsZQkvXm1h bl9kaXIgPSAkKHByZWZpeClcL3NoYXJlXC9tYW4kLzsiCW0NCj4gK21hbl9kaXJfU1EJTWFrZWZp bGUJL15tYW5fZGlyX1NRID0gJyQoc3Vic3QgJywnXFwnJywkKG1hbl9kaXIpKSckLzsiCW0NCj4g K21hcF9mbGFncwlsaWJicGYuaAkvXgl1bnNpZ25lZCBpbnQgbWFwX2ZsYWdzOyQvOyIJbQlzdHJ1 Y3Q6YnBmX21hcF9kZWYNCj4gK21hcF9pZHgJbGliYnBmLmMJL14JCWludCBtYXBfaWR4OyQvOyIJ bQlzdHJ1Y3Q6YnBmX3Byb2dyYW06Ol9fYW5vbjEJZmlsZToNCj4gK21hcHMJbGliYnBmLmMJL14J c3RydWN0IGJwZl9tYXAgKm1hcHM7JC87IgltCXN0cnVjdDpicGZfb2JqZWN0CXR5cGVyZWY6c3Ry dWN0OmJwZl9vYmplY3Q6OmJwZl9tYXAJZmlsZToNCj4gK21hcHNfc2huZHgJbGliYnBmLmMJL14J CWludCBtYXBzX3NobmR4OyQvOyIJbQlzdHJ1Y3Q6YnBmX29iamVjdDo6X19hbm9uMwlmaWxlOg0K PiArbWF4X2VudHJpZXMJbGliYnBmLmgJL14JdW5zaWduZWQgaW50IG1heF9lbnRyaWVzOyQvOyIJ bQlzdHJ1Y3Q6YnBmX21hcF9kZWYNCj4gK21pbglicGYuYwk0OTsiCWQJZmlsZToNCj4gK25hbWUJ bGliYnBmLmMJL14JY2hhciAqbmFtZTskLzsiCW0Jc3RydWN0OmJwZl9tYXAJZmlsZToNCj4gK25h bWUJbGliYnBmLmMJL14JY2hhciAqbmFtZTskLzsiCW0Jc3RydWN0OmJwZl9wcm9ncmFtCWZpbGU6 DQo+ICtuZXdfaW5zbl9jbnQJbGliYnBmLmgJL14JaW50IG5ld19pbnNuX2NudDskLzsiCW0Jc3Ry dWN0OmJwZl9wcm9nX3ByZXBfcmVzdWx0DQo+ICtuZXdfaW5zbl9wdHIJbGliYnBmLmgJL14Jc3Ry dWN0IGJwZl9pbnNuICpuZXdfaW5zbl9wdHI7JC87IgltCXN0cnVjdDpicGZfcHJvZ19wcmVwX3Jl c3VsdAl0eXBlcmVmOnN0cnVjdDpicGZfcHJvZ19wcmVwX3Jlc3VsdDo6YnBmX2luc24NCj4gK25y CWxpYmJwZi5jCS9eCQlpbnQgbnI7JC87IgltCXN0cnVjdDpicGZfcHJvZ3JhbTo6X19hbm9uMglm aWxlOg0KPiArbnJfbWFwcwlsaWJicGYuYwkvXglzaXplX3QgbnJfbWFwczskLzsiCW0Jc3RydWN0 OmJwZl9vYmplY3QJZmlsZToNCj4gK25yX3Byb2dyYW1zCWxpYmJwZi5jCS9eCXNpemVfdCBucl9w cm9ncmFtczskLzsiCW0Jc3RydWN0OmJwZl9vYmplY3QJZmlsZToNCj4gK25yX3JlbG9jCWxpYmJw Zi5jCS9eCQlpbnQgbnJfcmVsb2M7JC87IgltCXN0cnVjdDpicGZfb2JqZWN0OjpfX2Fub24zCWZp bGU6DQo+ICtucl9yZWxvYwlsaWJicGYuYwkvXglpbnQgbnJfcmVsb2M7JC87IgltCXN0cnVjdDpi cGZfcHJvZ3JhbQlmaWxlOg0KPiArb2JqCWxpYmJwZi5jCS9eCXN0cnVjdCBicGZfb2JqZWN0ICpv Ymo7JC87IgltCXN0cnVjdDpicGZfcHJvZ3JhbQl0eXBlcmVmOnN0cnVjdDpicGZfcHJvZ3JhbTo6 YnBmX29iamVjdAlmaWxlOg0KPiArb2JqX2J1ZglsaWJicGYuYwkvXgkJdm9pZCAqb2JqX2J1Zjsk LzsiCW0Jc3RydWN0OmJwZl9vYmplY3Q6Ol9fYW5vbjMJZmlsZToNCj4gK29ial9idWZfc3oJbGli YnBmLmMJL14JCXNpemVfdCBvYmpfYnVmX3N6OyQvOyIJbQlzdHJ1Y3Q6YnBmX29iamVjdDo6X19h bm9uMwlmaWxlOg0KPiArb2JqX2VsZl92YWxpZAlsaWJicGYuYwkyNTA7IglkCWZpbGU6DQo+ICtv ZmZzZXQJbGliYnBmLmMJL14Jc2l6ZV90IG9mZnNldDskLzsiCW0Jc3RydWN0OmJwZl9tYXAJZmls ZToNCj4gK3BhdGgJbGliYnBmLmMJL14JY2hhciBwYXRoW107JC87IgltCXN0cnVjdDpicGZfb2Jq ZWN0CWZpbGU6DQo+ICtwZmQJbGliYnBmLmgJL14JaW50ICpwZmQ7JC87IgltCXN0cnVjdDpicGZf cHJvZ19wcmVwX3Jlc3VsdA0KPiArcGx1Z2luX2Rpcl9TUQlNYWtlZmlsZQkvXnBsdWdpbl9kaXJf U1EgPSAkKHN1YnN0ICcsJ1xcJycsJChwbHVnaW5fZGlyKSkkLzsiCW0NCj4gK3ByX2RlYnVnCWxp YmJwZi5jCTgxOyIJZAlmaWxlOg0KPiArcHJfaW5mbwlsaWJicGYuYwk4MDsiCWQJZmlsZToNCj4g K3ByX3dhcm5pbmcJbGliYnBmLmMJNzk7IglkCWZpbGU6DQo+ICtwcmVmaXgJTWFrZWZpbGUJL15w cmVmaXggPz0gXC91c3JcL2xvY2FsJC87IgltDQo+ICtwcmVwcm9jZXNzb3IJbGliYnBmLmMJL14J YnBmX3Byb2dyYW1fcHJlcF90IHByZXByb2Nlc3NvcjskLzsiCW0Jc3RydWN0OmJwZl9wcm9ncmFt CWZpbGU6DQo+ICtwcml2CWxpYmJwZi5jCS9eCXZvaWQgKnByaXY7JC87IgltCXN0cnVjdDpicGZf bWFwCWZpbGU6DQo+ICtwcml2CWxpYmJwZi5jCS9eCXZvaWQgKnByaXY7JC87IgltCXN0cnVjdDpi cGZfb2JqZWN0CWZpbGU6DQo+ICtwcml2CWxpYmJwZi5jCS9eCXZvaWQgKnByaXY7JC87IgltCXN0 cnVjdDpicGZfcHJvZ3JhbQlmaWxlOg0KPiArcHJvZ3JhbXMJbGliYnBmLmMJL14Jc3RydWN0IGJw Zl9wcm9ncmFtICpwcm9ncmFtczskLzsiCW0Jc3RydWN0OmJwZl9vYmplY3QJdHlwZXJlZjpzdHJ1 Y3Q6YnBmX29iamVjdDo6YnBmX3Byb2dyYW0JZmlsZToNCj4gK3B0cl90b191NjQJYnBmLmMJL15z dGF0aWMgaW5saW5lIF9fdTY0IHB0cl90b191NjQoY29uc3Qgdm9pZCAqcHRyKSQvOyIJZglmaWxl Og0KPiArcmVsb2MJbGliYnBmLmMJL14JCX0gKnJlbG9jOyQvOyIJbQlzdHJ1Y3Q6YnBmX29iamVj dDo6X19hbm9uMwl0eXBlcmVmOnN0cnVjdDpicGZfb2JqZWN0OjpfX2Fub24zOjpfX2Fub240CWZp bGU6DQo+ICtyZWxvY19kZXNjCWxpYmJwZi5jCS9eCX0gKnJlbG9jX2Rlc2M7JC87IgltCXN0cnVj dDpicGZfcHJvZ3JhbQl0eXBlcmVmOnN0cnVjdDpicGZfcHJvZ3JhbTo6X19hbm9uMQlmaWxlOg0K PiArc2VjdGlvbl9uYW1lCWxpYmJwZi5jCS9eCWNoYXIgKnNlY3Rpb25fbmFtZTskLzsiCW0Jc3Ry dWN0OmJwZl9wcm9ncmFtCWZpbGU6DQo+ICtzaGRyCWxpYmJwZi5jCS9eCQkJR0VsZl9TaGRyIHNo ZHI7JC87IgltCXN0cnVjdDpicGZfb2JqZWN0OjpfX2Fub24zOjpfX2Fub240CWZpbGU6DQo+ICtz cmN0cmVlCU1ha2VmaWxlCS9ec3JjdHJlZSA6PSAkKHBhdHN1YnN0ICVcLywlLCQoZGlyICQoQ1VS RElSKSkpJC87IgltDQo+ICtzcmN0cmVlCU1ha2VmaWxlCS9ec3JjdHJlZSA6PSAkKHBhdHN1YnN0 ICVcLywlLCQoZGlyICQoc3JjdHJlZSkpKSQvOyIJbQ0KPiArc3RydGFiaWR4CWxpYmJwZi5jCS9e CQlzaXplX3Qgc3RydGFiaWR4OyQvOyIJbQlzdHJ1Y3Q6YnBmX29iamVjdDo6X19hbm9uMwlmaWxl Og0KPiArc3ltYm9scwlsaWJicGYuYwkvXgkJRWxmX0RhdGEgKnN5bWJvbHM7JC87IgltCXN0cnVj dDpicGZfb2JqZWN0OjpfX2Fub24zCWZpbGU6DQo+ICtzeXNfYnBmCWJwZi5jCS9ec3RhdGljIGlu bGluZSBpbnQgc3lzX2JwZihlbnVtIGJwZl9jbWQgY21kLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwk LzsiCWYJZmlsZToNCj4gK3R5cGUJbGliYnBmLmMJL14JZW51bSBicGZfcHJvZ190eXBlIHR5cGU7 JC87IgltCXN0cnVjdDpicGZfcHJvZ3JhbQl0eXBlcmVmOmVudW06YnBmX3Byb2dyYW06OmJwZl9w cm9nX3R5cGUJZmlsZToNCj4gK3R5cGUJbGliYnBmLmgJL14JdW5zaWduZWQgaW50IHR5cGU7JC87 IgltCXN0cnVjdDpicGZfbWFwX2RlZg0KPiArdXBkYXRlX2RpcglNYWtlZmlsZQkvXmRlZmluZSB1 cGRhdGVfZGlyJC87IgltDQo+ICt2YWx1ZV9zaXplCWxpYmJwZi5oCS9eCXVuc2lnbmVkIGludCB2 YWx1ZV9zaXplOyQvOyIJbQlzdHJ1Y3Q6YnBmX21hcF9kZWYNCj4gK3pjbG9zZQlsaWJicGYuYwkx NTM7IglkCWZpbGU6DQo+ICt6ZnJlZQlsaWJicGYuYwkxNDk7IglkCWZpbGU6DQo+IA0K