From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5FA7AA054F; Mon, 15 Mar 2021 15:44:49 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 09BB84068C; Mon, 15 Mar 2021 15:44:49 +0100 (CET) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70070.outbound.protection.outlook.com [40.107.7.70]) by mails.dpdk.org (Postfix) with ESMTP id E947640687 for ; Mon, 15 Mar 2021 15:44:47 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JLm1krAEO0bywUcIpJ8adEZq+QxwAVHTTb0cj+qy0IrgX0tI6y7b2+fujDZypog+Mxub5m/rmBtUEDtV0SQnALZ4SP3DFWhLM7wsvORG/Jd19d2IKtIjQUTiFJVOxX0VFx73ocifa4AYF8nQBjoPa1YHIoqYPvPdzJ0g+HR8AbWmeOYlZidvAIB0ME3+LLPds373IbLGveTdgG618Ni2mZccLnqxq0ZgWc6SPun8X9XbppJg2194HX9tzv9dhdY7IZAxFXWF35LfgfFVr3kTjNLDtBVm2r2PLZ4cTKs4uCUhk9c43vNc2xxKXqrApyiUuWPBofGbN8fcg8EQND+Puw== 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=RYoqhzJqeXMCwtJQKMSrJ25sKlYOlxa3NjSAInS1UOc=; b=iJr0yTbM5vWS9oskNEEC+jNrIyZpZ8ipOa2YGsFjbrHZoRaUBo4pCOUAGLcYyCBMbcoWh0AyNL47LDqIqP3DqUXWXIc5J3Y1qFQ94pIh/DI89gF0GjJ5TceEt/OXxZJxR/atsRexX5ohfFTViPQR88xGKyPmbI+jsVknXrDM4A99GCBuycl7LHp5oYZF2uvcC9L/SmBdWsY5LcxiOj+d+DcFh367AnZPSzRTgwvKt6PaDw8ueb2MIYBB1xFPlk9rFvAiZLwC+qEIO9weaaUyghGWNWdskEzD3H5IHToSg+NMl+RXe3KqZKulxvRbs/tUJkw56BLBX5nJM4QCxpsYVA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ericsson.com; dmarc=pass action=none header.from=ericsson.com; dkim=pass header.d=ericsson.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RYoqhzJqeXMCwtJQKMSrJ25sKlYOlxa3NjSAInS1UOc=; b=BAZ/ZlVZGQWhm24RA5dG+Cgix+BWFGe4RhKiOmCqZB+4rY4nJrtZT1/AY4fqav4rlMRKfLdlfEv5QJ0umYITe79E/JV545JNduDcYfHfGRTO6JJTuej6dfDs8D8FetQXqdbHRylOvOqutqjImJEn2GWe53hCX9FiWRNCNSNVNz0= Received: from DB7PR07MB5978.eurprd07.prod.outlook.com (2603:10a6:10:80::15) by DBAPR07MB6744.eurprd07.prod.outlook.com (2603:10a6:10:193::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.10; Mon, 15 Mar 2021 14:44:44 +0000 Received: from DB7PR07MB5978.eurprd07.prod.outlook.com ([fe80::c124:6b80:23b9:7d25]) by DB7PR07MB5978.eurprd07.prod.outlook.com ([fe80::c124:6b80:23b9:7d25%5]) with mapi id 15.20.3955.011; Mon, 15 Mar 2021 14:44:44 +0000 From: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= To: Jerin Jacob CC: Jerin Jacob , dpdk-dev , "Richardson, Bruce" Thread-Topic: [dpdk-dev] [RFC] eventdev: introduce event dispatcher Thread-Index: AQHXBiQf9yzrG9vVkEm8iOSCE+QTI6po2CcAgAFGx4CADnm7gIAMroeA Date: Mon, 15 Mar 2021 14:44:44 +0000 Message-ID: References: <20210218183011.254447-1-mattias.ronnblom@ericsson.com> In-Reply-To: Accept-Language: sv-SE, en-US Content-Language: sv-SE X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=ericsson.com; x-originating-ip: [62.63.215.114] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bf1a585e-a558-420d-7773-08d8e7c0dfa6 x-ms-traffictypediagnostic: DBAPR07MB6744: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: qH4+/kP+9uqUoZlcK34ZbGExYRdrSNk78O5Ozwmpwy11CcB6f4as1l1Ms8Xf+N+wCbfz+PKRcqxnMfGCBaBL1ib7zeyk7d6u4uKDqQmZe6jtDQJHTCYjg2En1Q3hgREH+BeOXFVXI0I0Lva0TGC+VPBEdo2VAdkVhywiQa8h8RYfCrfLtjcBTts4Af1se5XmHxE5o+3aExFtRWJd77aiLjpUbv5xEidBhWD5ffi/iDo3ox/YNDiSs/0ATQLBhpRMuAjsGyklDm4IrETOptO8mpDpnIaRBlQOjrP8Vt2gTYU5bFVaHBIwuxkLx9Yhe8l3dDRaekN8Z6cMCdOpkBD6pAW6SIM1RGTCuMXgcEals1iTZ20L5Q+uo23alAO3wjA25RLSvkLxrjARgTVJXuRTkSz5h0JYDfim64V/YUWHFDPaza5cPTH+LNCFyytz4rjgQohAdR85zpyy0rvFZfc4KyhFHfamBIxFA76ednGahZh1xkx+U1yNAJXOJ/tSAMxDPCg4gpcRj7me/h/2wqb5s3USiV3BvD3PXjxAFiJFdP3E1GqgNvieUac+EA2RiDVGrVFhkWBHEGyZojAL3d4RKafbbklMVbBGSn3P0WqhQ4y3sMvSXIHV/XoZ3uqryDKSiCVNvp5zkOa2syms9Fcsj3acQcJIrV4if61m5dRhAEy/L9PMWYiIkeCJ6hbtExlbut+MI+pnE6IBneBU7ZL71V0wjLtcSCJUGCrSQpjh2ZI= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR07MB5978.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(346002)(376002)(136003)(39860400002)(366004)(6916009)(85202003)(478600001)(66446008)(85182001)(2616005)(186003)(36756003)(64756008)(86362001)(76116006)(2906002)(71200400001)(66946007)(4326008)(26005)(83380400001)(66476007)(5660300002)(6486002)(8936002)(54906003)(316002)(6512007)(966005)(6506007)(30864003)(66574015)(31696002)(8676002)(53546011)(66556008)(31686004)(45980500001)(43740500002)(579004)(559001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?cmhZSGxSRll3bDFaeHB5T3N5VUM2S3pYOUtDK1g5TmRjQ3VkUUdCL25MUUxx?= =?utf-8?B?NE9KR2J2S1dpMDljc2MxRFpOS0VPNjFtWVVMeWJEampxSnIzZ3VHWXRpa1Na?= =?utf-8?B?MFI2emcvMnUzdFp1UGxEaWxkbTZhQWpTOHpxTUhRY0t0MWo3UENaNFdlYm1P?= =?utf-8?B?OWFYMllrVHpkNWgrSU1ZdmFFSWtMa2FVREdpVzB5MXhPeW9pdTFzUzY4cUJC?= =?utf-8?B?L1F4aytNWkNieFZMWEdpcmRITHk1MXQ4OG1rOGt0Y3BVNHZXRlZVdXhuWHA3?= =?utf-8?B?SHN0eUFYemJzUkMxam5XbXR0MTE2djFxSk45aGZkeVNsQW81MWYvVTFYemxG?= =?utf-8?B?Q1VKTG9JS0Q5bXVaTXlnYlhHWWx1R0NzNzZpeHFhcEpENDAwaHpVVmtGQ08v?= =?utf-8?B?aHZQWXM0T3NxTnpYdHoyQTdOVk9lRkpBZXhMeWg2RG1SY01ndUpGTk0wM2lZ?= =?utf-8?B?aVdlczQ3d0RncStzU1dZVzdPeWY3NGxwbVY4S090N3BkNlcvZGlPdlNKaHV6?= =?utf-8?B?MmtVSTVyaTBUR2hoaXVjQUc5L1UvUURNM2k1eUJZS1J1bUtZU3liWkdSL21T?= =?utf-8?B?QU5vbW5tdE5tSHpNYmtXS3MrQ2tseTFFL0I2ZTZiYllBNXdaeDJLVFA0ZTJY?= =?utf-8?B?TDI1MGMvNXVuNWZ1NDZKMDZuQUdLNndhTjBaVVk3VFV3UDNpYUE2bkd0dlZt?= =?utf-8?B?MmdScVVpOUNnSjJ2ZGFnM2dwS1ZYMzEwRmxnMVY2TGh6V2EzYTFpZGg3OGNp?= =?utf-8?B?SmszWmg3bldVUWFaOXR1Mks2SHd3NkloSE5yZFVLdDZ5UmE1RDFmdHgzTDRD?= =?utf-8?B?T0FZUForQjJtNjVaN3EzTjZSdTRGTTlaTHJtTTF4bXlaYWcwTWxhZVQ5NEFG?= =?utf-8?B?RmQxMnFlUG01a1k0c0d4QVlmNnpjbUxJSHVFMmN6b0xGWG1maFB2SXNWRXpp?= =?utf-8?B?VWFtbmVvdlFCUU9SdWoySTRJVXBpSnFRTzk3UFluMERWUUEzc1RrMzBXY2ds?= =?utf-8?B?ZHJzOWpZNjl1elY2NTVQc0xpdkZCSk9hRzZSaExYRnd1Q05TdlBDU01ENXNW?= =?utf-8?B?ZzFrOHROa1I4eGlYa2xBamVid2p4Sm1Ya1htVkF0M3F4SUpNQWdmYzBLSzFL?= =?utf-8?B?cGs2b0cvQWpBYmZGWGRjb2sySEtxUFA5K0RzdWg4cE9GbStSbXRaMmV6UURP?= =?utf-8?B?a1UwbHNSRVlzSXhsQUk5WkZFSlhYdU5IenpBQnRqc3hVRDVvc2lYSVovbmRC?= =?utf-8?B?VzJGM2RYbGRCejEza2ZDZ0lMRitkcXdJSzRSU2g0ekFNV2k3MWZMRVRuVmZN?= =?utf-8?B?L21MYkJad1h4VEl1Vng1VG12OE5RSjYwRnN2bnRNQ1ovSnZQQ1dRVlA4QzNG?= =?utf-8?B?NUp3R3dxcXVVOW5xOWVSaE45K2I4SU1OT0pFZ2hLcjRycXhDRWpEQ2x2SDdp?= =?utf-8?B?SnRhMTRwWEJGNVR4QTl4dlVhb0J1WUJzT1dISmMwYkFoYzNjQ0dhRmhHWEs1?= =?utf-8?B?cGVQb1pveWVHMFA1NkhlNkJ2T3hxR1dBbjJPZHRGZHF0c2lxNDRDaDN2ck9S?= =?utf-8?B?QjlYdnJzMHFoSkprcTRWSWxEQ0dTN2g3YUdqdmprK05CNFozc0Q1UFBSVEo5?= =?utf-8?B?em9UUUlXNERNd0UxOWpYZmgwTTIzUk5uZGZyUTQ3aHdsVkRxdFFucndXVkVW?= =?utf-8?B?RlE1WHAvNzM4Q2tBbFV1YW9QZFdTRys3UkpkNWlwWXhMUHRkYTRiQVZYblRs?= =?utf-8?Q?8WB8GIFqP36OaL7ywQ=3D?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <8A9C64DBB8DC0346B4E47BCD91C358F9@eurprd07.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: ericsson.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DB7PR07MB5978.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bf1a585e-a558-420d-7773-08d8e7c0dfa6 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Mar 2021 14:44:44.3381 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: GkXt3bNc00mzc70uJ1Yf2RZi79/TgEXDNvhZ7MyEbGEgWN7tsConsLxTNGd3sBYza2UEkYJ3jMwZbTdQv89PljURJNBoHt/uuCH11EUlpoI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR07MB6744 Subject: Re: [dpdk-dev] [RFC] eventdev: introduce event dispatcher X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" T24gMjAyMS0wMy0wNyAxNDowNCwgSmVyaW4gSmFjb2Igd3JvdGU6DQo+IE9uIEZyaSwgRmViIDI2 LCAyMDIxIGF0IDE6MzEgUE0gTWF0dGlhcyBSw7ZubmJsb20NCj4gPG1hdHRpYXMucm9ubmJsb21A ZXJpY3Nzb24uY29tPiB3cm90ZToNCj4+IE9uIDIwMjEtMDItMjUgMTM6MzIsIEplcmluIEphY29i IHdyb3RlOg0KPj4+IE9uIEZyaSwgRmViIDE5LCAyMDIxIGF0IDEyOjAwIEFNIE1hdHRpYXMgUsO2 bm5ibG9tDQo+Pj4gPG1hdHRpYXMucm9ubmJsb21AZXJpY3Nzb24uY29tPiB3cm90ZToNCj4+Pj4g VGhlIHB1cnBvc2Ugb2YgdGhlIGV2ZW50IGRpc3BhdGNoZXIgaXMgcHJpbWFyaWx5IHRvIGRlY291 cGxlIGRpZmZlcmVudA0KPj4+PiBwYXJ0cyBvZiBhbiBhcHBsaWNhdGlvbiAoZS5nLiwgcHJvY2Vz c2luZyBwaXBlbGluZSBzdGFnZXMpLCB3aGljaA0KPj4+PiBzaGFyZSB0aGUgc2FtZSB1bmRlcmx5 aW5nIGV2ZW50IGRldmljZS4NCj4+Pj4NCj4+Pj4gVGhlIGV2ZW50IGRpc3BhdGNoZXIgcmVwbGFj ZXMgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIChvZnRlbiwgYSBzd2l0Y2gNCj4+Pj4gc3RhdGVtZW50 KSB0aGF0IHR5cGljYWxseSBmb2xsb3dzIGFuIGV2ZW50IGRldmljZSBkZXF1ZXVlIG9wZXJhdGlv biwNCj4+Pj4gd2hlcmUgZXZlbnRzIGFyZSBkaXNwYXRjaGVkIHRvIGRpZmZlcmVudCBwYXJ0cyBv ZiB0aGUgYXBwbGljYXRpb24NCj4+Pj4gYmFzZWQgb24gdGhlIGRlc3RpbmF0aW9uIHF1ZXVlIGlk Lg0KPj4+ICMgSWYgdGhlIGRldmljZSBoYXMgYWxsIHR5cGUgcXVldWVbMV0gdGhpcyBSRkMgd291 bGQgcmVzdHJpY3QgdG8NCj4+PiB1c2UgcXVldWUgT05MWSBhcyBzdGFnZS4gQSBzdGFnZSBjYW4g YmUgYSBRdWV1ZSBUeXBlIGFsc28uDQo+Pj4gSG93IHdlIGNhbiBhYnN0cmFjdCB0aGlzIGluIHRo aXMgbW9kZWw/DQo+Pg0KPj4gIkFsbCBxdWV1ZSB0eXBlIiBpcyBhYm91dCBzY2hlZHVsaW5nIHBv bGljeS4gSSB3b3VsZCB0aGluayB0aGF0IHdvdWxkIGJlDQo+PiBpbmRlcGVuZGVudCBvZiB0aGUg ImxvZ2ljYWwgZW5kcG9pbnQiIG9mIHRoZSBldmVudCAoaS5lLiwgdGhlIHF1ZXVlIGlkKS4NCj4+ IEkgZmVlbCBsaWtlIEknbSBtaXNzaW5nIHNvbWV0aGluZyBoZXJlLg0KPiBFYWNoIHF1ZXVlIHR5 cGUgYWxzbyBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgYSBzdGFnZS4NCj4gRm9yIGV4YW1wbGUsIElm IHRoZSBzeXN0ZW0gaGFzIG9ubHkgb25lIHF1ZXVlLCB0aGUgVHlwaWNhbCBJUHNlYw0KPiBvdXRi b3VuZCBzdGFnZXMgY2FuIGJlDQo+IFEwLU9yZGVyZWQoRm9yIFNBIGxvb2t1cCkgLT4gUTAoQXRv bWljKShGb3IgU2VxdWVuY2UgbnVtYmVyIHVwZGF0ZSkgLT4NCj4gUTAoT3JkZXJkKShDcnlwdG8g b3BlcmF0aW9uKS0+UTAoQXRvbWljKShTZW5kIG9uIHdpcmUpDQoNCg0KT0ssIHRoaXMgbWFrZXMg c2Vuc2UuDQoNCg0KV291bGQgc3VjaCBhbiBhcHBsaWNhdGlvbiB3YW50IHRvIGFkZCBhIGNhbGxi YWNrIA0KcGVyLXF1ZXVlLXBlci1zY2hlZC10eXBlLCBvciBqdXN0IHBlci1zY2hlZC10eXBlPyBJ biB5b3VyIGV4YW1wbGUsIGlmIA0KeW91IHdvdWxkIGhhdmUgYSBxdWV1ZSBRMSBhcyB3ZWxsLCB3 b3VsZCB3YW50IHRvIGhhdmUgdGhlIG9wdGlvbiB0byBoYXZlIA0KZGlmZmVyZW50IGNhbGxiYWNr cyBmb3IgYXRvbWljLXR5cGUgZXZlbnRzIG9uIFEwIGFuZCBRMT8NCg0KDQpXb3VsZCB5b3Ugd2Fu dCB0byBkaXNwYXRjaCBiYXNlZCBvbiBhbnl0aGluZyBlbHNlIGluIHRoZSBldmVudD8gWW91IA0K Y291bGQgYmFzaWNhbGx5IGRvIGl0IG9uIGFueSBmaWVsZCAoZmxvdyBpZCwgcHJpb3JpdHksIGV0 Yy4pLCBidXQgaXMgDQp0aGVyZSBzb21lIG90aGVyIGZpZWxkIHRoYXQncyBjb21tb25seSB1c2Vk IHRvIGRlbm90ZSBhIHByb2Nlc3Npbmcgc3RhZ2U/DQoNCg0KPj4NCj4+PiAjIEFsc28sIEkgdGhp bmssIGl0IG1heSBtYWtlIHNlbnNlIHRvIGFkZCB0aGlzIHR5cGUgb2YgaW5mcmFzdHJ1Y3R1cmUg YXMNCj4+PiBoZWxwZXIgZnVuY3Rpb25zIGFzIHRoZXNlIGFyZSBidWlsdCBvbiB0b3Agb2YgZXhp c3RpbmcgQVBJcyBpLmUgVGhlcmUNCj4+PiBpcyBubyBzdXBwb3J0DQo+Pj4gcmVxdWlyZWQgZnJv bSB0aGUgZHJpdmVyIHRvIGVzdGFibGlzaCB0aGlzIG1vZGVsLiBJTU8sIElmIHdlIG5lZWQgdG8N Cj4+PiBhZGQgc3VjaCBzdXBwb3J0IGFzDQo+Pj4gb25lIGZpeGVkIHNldCBvZiBmdW5jdGlvbmFs aXR5LCB3ZSBjb3VsZCBoYXZlIGhlbHBlciBBUElzIHRvIGV4cHJlc3MgYSBjZXJ0YWluDQo+Pj4g dXNhZ2Ugb2YgZXZlbnRkZXYuIFJhdGhlciBkZWZpbmluZyB0aGUgdGhhdCdzIG9ubHkgd2F5IHRv IGRvIHRoaXMuDQo+Pj4gSSB0aGluaywgQSBoZWxwZXIgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8g YXMgYWJzdHJhY3Rpb24gdG8gZGVmaW5lDQo+Pj4gdGhpcyBraW5kIG9mIG1vZGVsLg0KPj4+DQo+ Pj4gIyBBbHNvLCBUaGVyZSBpcyBmdW5jdGlvbiBwb2ludGVyIG92ZXJoZWFkIGFuZCBhZ2dyZWdh dGluZyB0aGUgZXZlbnRzDQo+Pj4gaW4gaW1wbGVtZW50YXRpb24sDQo+Pj4gVGhhdCBtYXkgYmUg bm90IGFsd2F5cyAidGhlIiBvcHRpbWl6ZWQgbW9kZWwgb2YgbWFraW5nIGl0IHdvcmsgdnMgc3dp dGNoIGNhc2UgaW4NCj4+PiBhcHBsaWNhdGlvbi4NCj4+DQo+PiBTdXJlLCBidXQgd2hhdCB0byBk byBpbiBhIHJlYXNvbmFibGUgZ2VuZXJpYyBmcmFtZXdvcms/DQo+Pg0KPj4NCj4+IElmIHlvdSBh cmUgdmVyeSBzZW5zaXRpdmUgdG8gdGhhdCAyMCBjYyBvciB3aGF0ZXZlciBmdW5jdGlvbiBwb2lu dGVyDQo+PiBjYWxsLCB5b3Ugd29uJ3QgdXNlIHRoaXMgbGlicmFyeS4gT3IgeW91IHdpbGwsIGFu ZCB1c2Ugc3RhdGljIGxpbmtpbmcNCj4+IGFuZCBMVE8gdG8gZ2V0IHJpZCBvZiB0aGF0IG92ZXJo ZWFkLg0KPj4NCj4+DQo+PiBQcm9iYWJseSwgeW91IGhhdmUgYSBmZXcgcXVldWVzLCBub3QgbWFu eS4gUHJvYmFibHksIHlvdXIgZGVxdWV1ZSBidXJzdHMNCj4+IGFyZSBsYXJnZSwgaWYgdGhlIHN5 c3RlbSBsb2FkIGlzIGhpZ2ggKGFuZCBvdGhlcndpc2UsIHlvdSBkb24ndCBjYXJlDQo+PiBhYm91 dCBlZmZpY2llbmN5KS4gVGhlbiwgeW91IHdpbGwgaGF2ZSBhdCBsZWFzdCBvZiBjb3VwbGUgb2Yg ZXZlbnRzIHBlcg0KPj4gZnVuY3Rpb24gY2FsbC4NCj4gSSBhbSBmaW5lIHdpdGggdGhpcyBsaWJy YXJ5IGFuZCBleHBvc2luZyBpdCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgaWYNCj4gc29tZW9uZSBu ZWVkcyB0bw0KPiBoYXZlIGEgImhlbHBlciIgZnVuY3Rpb24gdG8gbW9kZWwgdGhlIHN5c3RlbSBh cm91bmQgdGhpcyBsb2dpYy4NCj4NCj4gVGhpcyBSRkMgbG9va3MgZ29vZCB0byBtZSBpbiBnZW5l cmFsLiBJIHdvdWxkIHN1Z2dlc3QgdG8gbWFrZSBpdCBhcw0KPg0KPiAtIEhlbHBlciBmdW5jdGlv bnMgaS5lIGlmIHNvbWVvbmUgY2hvb3NlcyB0byBkbyB3cml0ZSB0aGUgc3RhZ2UgaW4NCj4gdGhp cyB3YXksIGl0IGNhbiBiZSBlbmFibGVkIHRocm91Z2ggdGhpcyBoZWxwZXIgZnVuY3Rpb24uDQo+ IEJ5IGNob29zaW5nIGFzIGhlbHBlciBmdW5jdGlvbiBpdCBkZXBpY3RzLCB0aGlzIGlzIG9uZSB3 YXkgdG8gZG8gdGhlDQo+IHN0dWZmIGJ1dCB0aGUgTk9UIE9OTFkgV0FZLg0KPiAtIEFic3RyYWN0 IHN0YWdlcyBhcyBhIHF1ZXVlKHdoaWNoIGFscmVhZHkgYWRkZWQgaW4gdGhlIHBhdGNoKSBhbmQN Cj4gZWFjaCB0eXBlIGluIHRoZSBxdWV1ZSBmb3IgYWxsIHR5cGUgcXVldWUgY2FzZXMuDQo+IC0g RW5oYW5jZSB0ZXN0LWV2ZW50ZGV2IHRvIHNob3djYXNlIHRoZSBmdW5jdGlvbmFsaXR5IGFuZCBw ZXJmb3JtYW5jZQ0KPiBvZiB0aGVzZSBoZWxwZXJzLg0KPg0KPiBUaGFua3MgZm9yIHRoZSBSRkMu DQo+DQo+Pg0KPj4+IFsxXQ0KPj4+IFNlZSBSVEVfRVZFTlRfREVWX0NBUF9RVUVVRV9BTExfVFlQ RVMgaW4NCj4+PiBodHRwczovL3Byb3RlY3QyLmZpcmVleWUuY29tL3YxL3VybD9rPWRjZjNhMmI5 LTgzNjg5Yjk0LWRjZjNlMjIyLTg2OTJkYzgyODRjYi01YmExOTgxM2ExNTU2YTg1JnE9MSZlPTBm ZjE4NjFmLThlMjQtNDUzYy1hOTNiLTczZmQ4OGUwZjMxNiZ1PWh0dHBzJTNBJTJGJTJGZG9jLmRw ZGsub3JnJTJGZ3VpZGVzJTJGcHJvZ19ndWlkZSUyRmV2ZW50ZGV2Lmh0bWwNCj4+Pg0KPj4+DQo+ Pj4+IFRoZSBjb25jZXB0IGlzIHNpbWlsYXIgdG8gYSBVTklYIGZpbGUgZGVzY3JpcHRvciBldmVu dCBsb29wIGxpYnJhcnkuDQo+Pj4+IEluc3RlYWQgb2YgdHlpbmcgY2FsbGJhY2sgZnVuY3Rpb25z IHRvIGZkcyBhcyBmb3IgZXhhbXBsZSBsaWJldmVudA0KPj4+PiBkb2VzLCB0aGUgZXZlbnQgZGlz cGF0Y2hlciBiaW5kcyBjYWxsYmFja3MgdG8gcXVldWUgaWRzLg0KPj4+Pg0KPj4+PiBBbiBldmVu dCBkaXNwYXRjaGVyIGlzIGNvbmZpZ3VyZWQgdG8gZGVxdWV1ZSBldmVudHMgZnJvbSBhIHNwZWNp ZmljDQo+Pj4+IGV2ZW50IGRldmljZSwgYW5kIHRpZXMgaW50byB0aGUgc2VydmljZSBjb3JlIGZy YW1ld29yaywgdG8gZG8gaXRzIChhbmQNCj4+Pj4gdGhlIGFwcGxpY2F0aW9uJ3MpIHdvcmsuDQo+ Pj4+DQo+Pj4+IFRoZSBldmVudCBkaXNwYXRjaGVyIHByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkg Zm9yIGFuIGV2ZW50ZGV2LWJhc2VkDQo+Pj4+IGFwcGxpY2F0aW9uIHRvIHVzZSBzZXJ2aWNlIGNv cmVzIGZvciBhcHBsaWNhdGlvbi1sZXZlbCBwcm9jZXNzaW5nLCBhbmQNCj4+Pj4gdGh1cyBmb3Ig c2hhcmluZyB0aG9zZSBjb3JlcyB3aXRoIG90aGVyIERQREsgc2VydmljZXMuDQo+Pj4+DQo+Pj4+ IFNpZ25lZC1vZmYtYnk6IE1hdHRpYXMgUsO2bm5ibG9tIDxtYXR0aWFzLnJvbm5ibG9tQGVyaWNz c29uLmNvbT4NCj4+Pj4gLS0tDQo+Pj4+ICAgIGxpYi9saWJydGVfZXZlbnRkZXYvTWFrZWZpbGUg ICAgICAgICAgICAgICAgIHwgICAyICsNCj4+Pj4gICAgbGliL2xpYnJ0ZV9ldmVudGRldi9tZXNv bi5idWlsZCAgICAgICAgICAgICAgfCAgIDYgKy0NCj4+Pj4gICAgbGliL2xpYnJ0ZV9ldmVudGRl di9ydGVfZXZlbnRfZGlzcGF0Y2hlci5jICAgfCA0MjAgKysrKysrKysrKysrKysrKysrKw0KPj4+ PiAgICBsaWIvbGlicnRlX2V2ZW50ZGV2L3J0ZV9ldmVudF9kaXNwYXRjaGVyLmggICB8IDI1MSAr KysrKysrKysrKw0KPj4+PiAgICBsaWIvbGlicnRlX2V2ZW50ZGV2L3J0ZV9ldmVudGRldl92ZXJz aW9uLm1hcCB8ICAxMCArDQo+Pj4+ICAgIDUgZmlsZXMgY2hhbmdlZCwgNjg3IGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pDQo+Pj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRl X2V2ZW50ZGV2L3J0ZV9ldmVudF9kaXNwYXRjaGVyLmMNCj4+Pj4gICAgY3JlYXRlIG1vZGUgMTAw NjQ0IGxpYi9saWJydGVfZXZlbnRkZXYvcnRlX2V2ZW50X2Rpc3BhdGNoZXIuaA0KPj4+Pg0KPj4+ PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9ldmVudGRldi9NYWtlZmlsZSBiL2xpYi9saWJydGVf ZXZlbnRkZXYvTWFrZWZpbGUNCj4+Pj4gaW5kZXggMDcxNTI1NmJiNC4uNjE0ZDUzYWYxYiAxMDA2 NDQNCj4+Pj4gLS0tIGEvbGliL2xpYnJ0ZV9ldmVudGRldi9NYWtlZmlsZQ0KPj4+PiArKysgYi9s aWIvbGlicnRlX2V2ZW50ZGV2L01ha2VmaWxlDQo+Pj4+IEBAIC0yNiw2ICsyNiw3IEBAIFNSQ1Mt eSArPSBydGVfZXZlbnRfZXRoX3J4X2FkYXB0ZXIuYw0KPj4+PiAgICBTUkNTLXkgKz0gcnRlX2V2 ZW50X3RpbWVyX2FkYXB0ZXIuYw0KPj4+PiAgICBTUkNTLXkgKz0gcnRlX2V2ZW50X2NyeXB0b19h ZGFwdGVyLmMNCj4+Pj4gICAgU1JDUy15ICs9IHJ0ZV9ldmVudF9ldGhfdHhfYWRhcHRlci5jDQo+ Pj4+ICtTUkNTLXkgKz0gcnRlX2V2ZW50X2Rpc3BhdGNoZXIuYw0KPj4+Pg0KPj4+PiAgICAjIGV4 cG9ydCBpbmNsdWRlIGZpbGVzDQo+Pj4+ICAgIFNZTUxJTksteS1pbmNsdWRlICs9IHJ0ZV9ldmVu dGRldi5oDQo+Pj4+IEBAIC00MCw2ICs0MSw3IEBAIFNZTUxJTksteS1pbmNsdWRlICs9IHJ0ZV9l dmVudF90aW1lcl9hZGFwdGVyLmgNCj4+Pj4gICAgU1lNTElOSy15LWluY2x1ZGUgKz0gcnRlX2V2 ZW50X3RpbWVyX2FkYXB0ZXJfcG1kLmgNCj4+Pj4gICAgU1lNTElOSy15LWluY2x1ZGUgKz0gcnRl X2V2ZW50X2NyeXB0b19hZGFwdGVyLmgNCj4+Pj4gICAgU1lNTElOSy15LWluY2x1ZGUgKz0gcnRl X2V2ZW50X2V0aF90eF9hZGFwdGVyLmgNCj4+Pj4gK1NZTUxJTksteS1pbmNsdWRlICs9IHJ0ZV9l dmVudF9kaXNwYXRjaGVyLmgNCj4+Pj4NCj4+Pj4gICAgIyB2ZXJzaW9uaW5nIGV4cG9ydCBtYXAN Cj4+Pj4gICAgRVhQT1JUX01BUCA6PSBydGVfZXZlbnRkZXZfdmVyc2lvbi5tYXANCj4+Pj4gZGlm ZiAtLWdpdCBhL2xpYi9saWJydGVfZXZlbnRkZXYvbWVzb24uYnVpbGQgYi9saWIvbGlicnRlX2V2 ZW50ZGV2L21lc29uLmJ1aWxkDQo+Pj4+IGluZGV4IGQxZjI1ZWU1Y2EuLjJjYTgxOTgzYjUgMTAw NjQ0DQo+Pj4+IC0tLSBhL2xpYi9saWJydGVfZXZlbnRkZXYvbWVzb24uYnVpbGQNCj4+Pj4gKysr IGIvbGliL2xpYnJ0ZV9ldmVudGRldi9tZXNvbi5idWlsZA0KPj4+PiBAQCAtMTMsNyArMTMsOCBA QCBzb3VyY2VzID0gZmlsZXMoJ3J0ZV9ldmVudGRldi5jJywNCj4+Pj4gICAgICAgICAgICAgICAg ICAgJ3J0ZV9ldmVudF9ldGhfcnhfYWRhcHRlci5jJywNCj4+Pj4gICAgICAgICAgICAgICAgICAg J3J0ZV9ldmVudF90aW1lcl9hZGFwdGVyLmMnLA0KPj4+PiAgICAgICAgICAgICAgICAgICAncnRl X2V2ZW50X2NyeXB0b19hZGFwdGVyLmMnLA0KPj4+PiAtICAgICAgICAgICAgICAgJ3J0ZV9ldmVu dF9ldGhfdHhfYWRhcHRlci5jJykNCj4+Pj4gKyAgICAgICAgICAgICAgICdydGVfZXZlbnRfZXRo X3R4X2FkYXB0ZXIuYycsDQo+Pj4+ICsgICAgICAgICAgICAgICAncnRlX2V2ZW50X2Rpc3BhdGNo ZXIuYycpDQo+Pj4+ICAgIGhlYWRlcnMgPSBmaWxlcygncnRlX2V2ZW50ZGV2LmgnLA0KPj4+PiAg ICAgICAgICAgICAgICAgICAncnRlX2V2ZW50ZGV2X3BtZC5oJywNCj4+Pj4gICAgICAgICAgICAg ICAgICAgJ3J0ZV9ldmVudGRldl9wbWRfcGNpLmgnLA0KPj4+PiBAQCAtMjUsNSArMjYsNiBAQCBo ZWFkZXJzID0gZmlsZXMoJ3J0ZV9ldmVudGRldi5oJywNCj4+Pj4gICAgICAgICAgICAgICAgICAg J3J0ZV9ldmVudF90aW1lcl9hZGFwdGVyLmgnLA0KPj4+PiAgICAgICAgICAgICAgICAgICAncnRl X2V2ZW50X3RpbWVyX2FkYXB0ZXJfcG1kLmgnLA0KPj4+PiAgICAgICAgICAgICAgICAgICAncnRl X2V2ZW50X2NyeXB0b19hZGFwdGVyLmgnLA0KPj4+PiAtICAgICAgICAgICAgICAgJ3J0ZV9ldmVu dF9ldGhfdHhfYWRhcHRlci5oJykNCj4+Pj4gKyAgICAgICAgICAgICAgICdydGVfZXZlbnRfZXRo X3R4X2FkYXB0ZXIuaCcsDQo+Pj4+ICsgICAgICAgICAgICAgICAncnRlX2V2ZW50X2Rpc3BhdGNo ZXIuaCcpDQo+Pj4+ICAgIGRlcHMgKz0gWydyaW5nJywgJ2V0aGRldicsICdoYXNoJywgJ21lbXBv b2wnLCAnbWJ1ZicsICd0aW1lcicsICdjcnlwdG9kZXYnXQ0KPj4+PiBkaWZmIC0tZ2l0IGEvbGli L2xpYnJ0ZV9ldmVudGRldi9ydGVfZXZlbnRfZGlzcGF0Y2hlci5jIGIvbGliL2xpYnJ0ZV9ldmVu dGRldi9ydGVfZXZlbnRfZGlzcGF0Y2hlci5jDQo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ Pj4+IGluZGV4IDAwMDAwMDAwMDAuLjFjN2U1NWE3NTINCj4+Pj4gLS0tIC9kZXYvbnVsbA0KPj4+ PiArKysgYi9saWIvbGlicnRlX2V2ZW50ZGV2L3J0ZV9ldmVudF9kaXNwYXRjaGVyLmMNCj4+Pj4g QEAgLTAsMCArMSw0MjAgQEANCj4+Pj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt My1DbGF1c2UNCj4+Pj4gKyAqIENvcHlyaWdodChjKSAyMDIxIEVyaWNzc29uIEFCDQo+Pj4+ICsg Ki8NCj4+Pj4gKw0KPj4+PiArI2luY2x1ZGUgPHN0ZGJvb2wuaD4NCj4+Pj4gKyNpbmNsdWRlIDxz dGRpbnQuaD4NCj4+Pj4gKw0KPj4+PiArI2luY2x1ZGUgPHJ0ZV9sY29yZS5oPg0KPj4+PiArI2lu Y2x1ZGUgPHJ0ZV9zZXJ2aWNlX2NvbXBvbmVudC5oPg0KPj4+PiArI2luY2x1ZGUgPHJ0ZV9ldmVu dGRldl9wbWQuaD4NCj4+Pj4gKw0KPj4+PiArI2luY2x1ZGUgPHJ0ZV9ldmVudF9kaXNwYXRjaGVy Lmg+DQo+Pj4+ICsNCj4+Pj4gKyNkZWZpbmUgUkVEX01BWF9QT1JUU19QRVJfTENPUkUgKDQpDQo+ Pj4+ICsNCj4+Pj4gK3N0cnVjdCBydGVfZXZlbnRfZGlzcGF0Y2hlcl9sY29yZV9wb3J0IHsNCj4+ Pj4gKyAgICAgICB1aW50OF90IHBvcnRfaWQ7DQo+Pj4+ICsgICAgICAgdWludDE2X3QgYmF0Y2hf c2l6ZTsNCj4+Pj4gKyAgICAgICB1aW50NjRfdCB0aW1lb3V0Ow0KPj4+PiArfTsNCj4+Pj4gKw0K Pj4+PiArc3RydWN0IHJ0ZV9ldmVudF9kaXNwYXRjaGVyX2xjb3JlIHsNCj4+Pj4gKyAgICAgICB1 aW50OF90IG51bV9wb3J0czsNCj4+Pj4gKyAgICAgICBzdHJ1Y3QgcnRlX2V2ZW50X2Rpc3BhdGNo ZXJfbGNvcmVfcG9ydCBwb3J0c1tSRURfTUFYX1BPUlRTX1BFUl9MQ09SRV07DQo+Pj4+ICt9Ow0K Pj4+PiArDQo+Pj4+ICtzdHJ1Y3QgcnRlX2V2ZW50X2Rpc3BhdGNoZXJfY2Igew0KPj4+PiArICAg ICAgIHJ0ZV9ldmVudF9kaXNwYXRjaGVyX2NiX3QgY2JfZnVuOw0KPj4+PiArICAgICAgIHZvaWQg KmNiX2RhdGE7DQo+Pj4+ICt9Ow0KPj4+PiArDQo+Pj4+ICtzdHJ1Y3QgcnRlX2V2ZW50X2Rpc3Bh dGNoZXIgew0KPj4+PiArICAgICAgIHVpbnQ4X3QgaWQ7DQo+Pj4+ICsgICAgICAgdWludDhfdCBl dmVudF9kZXZfaWQ7DQo+Pj4+ICsgICAgICAgaW50IHNvY2tldF9pZDsNCj4+Pj4gKyAgICAgICB1 aW50MzJfdCBzZXJ2aWNlX2lkOw0KPj4+PiArICAgICAgIHN0cnVjdCBydGVfZXZlbnRfZGlzcGF0 Y2hlcl9sY29yZSBsY29yZXNbUlRFX01BWF9MQ09SRV07DQo+Pj4+ICsgICAgICAgc3RydWN0IHJ0 ZV9ldmVudF9kaXNwYXRjaGVyX2NiIHF1ZXVlX2Nic1tVSU5UOF9NQVhdOw0KPj4+PiArICAgICAg IHN0cnVjdCBydGVfZXZlbnRfZGlzcGF0Y2hlcl9jYiBmYWxsYmFjazsNCj4+Pj4gK307DQo+Pj4+ ICsNCj4+Pj4gK3N0YXRpYyBzdHJ1Y3QgcnRlX2V2ZW50X2Rpc3BhdGNoZXIgKmRpc3BhdGNoZXJz W1VJTlQ4X01BWF07DQo+Pj4+ICsNCj4+Pj4gK3N0YXRpYyBib29sDQo+Pj4+ICtyZWRfaGFzX2Rp c3BhdGNoZXIodWludDhfdCBpZCkNCj4+Pj4gK3sNCj4+Pj4gKyAgICAgICByZXR1cm4gZGlzcGF0 Y2hlcnNbaWRdICE9IE5VTEw7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gK3N0YXRpYyBzdHJ1Y3Qg cnRlX2V2ZW50X2Rpc3BhdGNoZXIgKg0KPj4+PiArcmVkX2dldF9kaXNwYXRjaGVyKHVpbnQ4X3Qg aWQpDQo+Pj4+ICt7DQo+Pj4+ICsgICAgICAgcmV0dXJuIGRpc3BhdGNoZXJzW2lkXTsNCj4+Pj4g K30NCj4+Pj4gKw0KPj4+PiArc3RhdGljIHZvaWQNCj4+Pj4gK3JlZF9zZXRfZGlzcGF0Y2hlcih1 aW50OF90IGlkLCBzdHJ1Y3QgcnRlX2V2ZW50X2Rpc3BhdGNoZXIgKmRpc3BhdGNoZXIpDQo+Pj4+ ICt7DQo+Pj4+ICsgICAgICAgZGlzcGF0Y2hlcnNbaWRdID0gZGlzcGF0Y2hlcjsNCj4+Pj4gK30N Cj4+Pj4gKw0KPj4+PiArI2RlZmluZSBSRURfVkFMSURfSURfT1JfUkVUX0VJTlZBTChpZCkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+Pj4+ICsgICAgICAgZG8geyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4+ Pj4gKyAgICAgICAgICAgICAgIGlmICh1bmxpa2VseSghcmVkX2hhc19kaXNwYXRjaGVyKGlkKSkp IHsgICAgICAgICAgICAgICAgXA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICBSVEVfRURF Vl9MT0dfRVJSKCJJbnZhbGlkIGRpc3BhdGNoZXIgaWQgJWRcbiIsIGlkKTsgXA0KPj4+PiArICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+Pj4+ICsgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4+Pj4gKyAgICAgICB9IHdoaWxl ICgwKQ0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgc3RydWN0IHJ0ZV9ldmVudF9kaXNwYXRjaGVyX2Ni ICoNCj4+Pj4gK3JlZF9sb29rdXBfY2Ioc3RydWN0IHJ0ZV9ldmVudF9kaXNwYXRjaGVyICpkaXNw YXRjaGVyLCB1aW50OF90IHF1ZXVlX2lkKQ0KPj4+PiArew0KPj4+PiArICAgICAgIHN0cnVjdCBy dGVfZXZlbnRfZGlzcGF0Y2hlcl9jYiAqY2IgPSAmZGlzcGF0Y2hlci0+cXVldWVfY2JzW3F1ZXVl X2lkXTsNCj4+Pj4gKw0KPj4+PiArICAgICAgIGlmICh1bmxpa2VseShjYi0+Y2JfZnVuID09IE5V TEwpKQ0KPj4+PiArICAgICAgICAgICBjYiA9ICZkaXNwYXRjaGVyLT5mYWxsYmFjazsNCj4+Pj4g Kw0KPj4+PiArICAgICAgIHJldHVybiBjYjsNCj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiArc3RhdGlj IHZvaWQNCj4+Pj4gK3JlZF9kaXNwYXRjaF9ldmVudHMoc3RydWN0IHJ0ZV9ldmVudF9kaXNwYXRj aGVyICpkaXNwYXRjaGVyLA0KPj4+PiArICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfZXZl bnQgKmV2ZW50cywgdWludDE2X3QgbnVtX2V2ZW50cykNCj4+Pj4gK3sNCj4+Pj4gKyAgICAgICB1 aW50MTZfdCBjYl9zdGFydDsNCj4+Pj4gKyAgICAgICB1aW50MTZfdCBjYl9sZW47DQo+Pj4+ICsN Cj4+Pj4gKyAgICAgICBmb3IgKGNiX3N0YXJ0ID0gMDsgY2Jfc3RhcnQgPCBudW1fZXZlbnRzOyBj Yl9zdGFydCArPSBjYl9sZW4pIHsNCj4+Pj4gKyAgICAgICAgICAgICAgIHVpbnQxNl90IGNiX2Vu ZCA9IGNiX3N0YXJ0Ow0KPj4+PiArICAgICAgICAgICAgICAgdWludDhfdCBxdWV1ZV9pZCA9IGV2 ZW50c1tjYl9zdGFydF0ucXVldWVfaWQ7DQo+Pj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgcnRl X2V2ZW50X2Rpc3BhdGNoZXJfY2IgKmNiOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgICAgICAgICB3 aGlsZSAoKytjYl9lbmQgPCBudW1fZXZlbnRzICYmDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICAgZXZlbnRzW2NiX2VuZF0ucXVldWVfaWQgPT0gcXVldWVfaWQpDQo+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIDsNCj4+Pj4gKw0KPj4+PiArICAgICAgICAgICAgICAgY2JfbGVuID0gY2Jf ZW5kIC0gY2Jfc3RhcnQ7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICAgICAgICAgIGNiID0gcmVkX2xv b2t1cF9jYihkaXNwYXRjaGVyLCBxdWV1ZV9pZCk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICAgICAg ICAgIGlmICh1bmxpa2VseShjYi0+Y2JfZnVuID09IE5VTEwpKSB7DQo+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIFJURV9FREVWX0xPR19FUlIoIkF0dGVtcHRlZCB0byBkaXNwYXRjaCAlZCBl dmVudHMgIg0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm b3IgcXVldWUgaWQgJWQsIGJ1dCBubyBxdWV1ZSBvciAiDQo+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImZhbGxiYWNrIGNiIHdlcmUgY29uZmlndXJlZFxuIiwN Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYl9sZW4sIHF1 ZXVlX2lkKTsNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+Pj4+ICsg ICAgICAgICAgICAgICB9DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICAgICAgICAgIGNiLT5jYl9mdW4o JmV2ZW50c1tjYl9zdGFydF0sIGNiX2xlbiwgY2ItPmNiX2RhdGEpOw0KPj4+PiArICAgICAgIH0N Cj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiArc3RhdGljIHZvaWQNCj4+Pj4gK3JlZF9wb3J0X2RlcXVl dWUoc3RydWN0IHJ0ZV9ldmVudF9kaXNwYXRjaGVyICpkaXNwYXRjaGVyLA0KPj4+PiArICAgICAg ICAgICAgICAgIHN0cnVjdCBydGVfZXZlbnRfZGlzcGF0Y2hlcl9sY29yZV9wb3J0ICpwb3J0KQ0K Pj4+PiArew0KPj4+PiArICAgICAgIHVpbnQxNl90IGJhdGNoX3NpemUgPSBwb3J0LT5iYXRjaF9z aXplOw0KPj4+PiArICAgICAgIHN0cnVjdCBydGVfZXZlbnQgZXZlbnRzW2JhdGNoX3NpemVdOw0K Pj4+PiArICAgICAgIHVpbnQxNl90IG47DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICBuID0gcnRlX2V2 ZW50X2RlcXVldWVfYnVyc3QoZGlzcGF0Y2hlci0+ZXZlbnRfZGV2X2lkLCBwb3J0LT5wb3J0X2lk LA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHMsIGJhdGNo X3NpemUsIHBvcnQtPnRpbWVvdXQpOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgcmVkX2Rpc3BhdGNo X2V2ZW50cyhkaXNwYXRjaGVyLCBldmVudHMsIG4pOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtz dGF0aWMgaW50MzJfdA0KPj4+PiArcmVkX2xjb3JlX3Byb2Nlc3Modm9pZCAqdXNlcmRhdGEpDQo+ Pj4+ICt7DQo+Pj4+ICsgICAgICAgdWludDE2X3QgaTsNCj4+Pj4gKyAgICAgICBzdHJ1Y3QgcnRl X2V2ZW50X2Rpc3BhdGNoZXIgKmRpc3BhdGNoZXIgPSB1c2VyZGF0YTsNCj4+Pj4gKyAgICAgICB1 bnNpZ25lZCBpbnQgbGNvcmVfaWQgPSBydGVfbGNvcmVfaWQoKTsNCj4+Pj4gKyAgICAgICBzdHJ1 Y3QgcnRlX2V2ZW50X2Rpc3BhdGNoZXJfbGNvcmUgKmxjb3JlID0NCj4+Pj4gKyAgICAgICAgICAg ICAgICZkaXNwYXRjaGVyLT5sY29yZXNbbGNvcmVfaWRdOw0KPj4+PiArDQo+Pj4+ICsgICAgICAg Zm9yIChpID0gMDsgaSA8IGxjb3JlLT5udW1fcG9ydHM7IGkrKykgew0KPj4+PiArICAgICAgICAg ICAgICAgc3RydWN0IHJ0ZV9ldmVudF9kaXNwYXRjaGVyX2xjb3JlX3BvcnQgKnBvcnQgPQ0KPj4+ PiArICAgICAgICAgICAgICAgICAgICAgICAmbGNvcmUtPnBvcnRzW2ldOw0KPj4+PiArDQo+Pj4+ ICsgICAgICAgICAgICAgICByZWRfcG9ydF9kZXF1ZXVlKGRpc3BhdGNoZXIsIHBvcnQpOw0KPj4+ PiArICAgICAgIH0NCj4+Pj4gKw0KPj4+PiArICAgICAgIHJldHVybiAwOw0KPj4+PiArfQ0KPj4+ PiArDQo+Pj4+ICtzdGF0aWMgaW50DQo+Pj4+ICtyZWRfc2VydmljZV9ydW5zdGF0ZV9zZXQodWlu dDMyX3Qgc2VydmljZV9pZCwgaW50IHN0YXRlKQ0KPj4+PiArew0KPj4+PiArICAgICAgIGludCBy YzsNCj4+Pj4gKw0KPj4+PiArICAgICAgIHJjID0gcnRlX3NlcnZpY2VfY29tcG9uZW50X3J1bnN0 YXRlX3NldChzZXJ2aWNlX2lkLCBzdGF0ZSk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICBpZiAocmMp DQo+Pj4+ICsgICAgICAgICAgICAgICBSVEVfRURFVl9MT0dfRVJSKCJFcnJvciAlZCBvY2N1cnJl ZCB3aGlsZSBzZXR0aW5nIHNlcnZpY2UgIg0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiY29tcG9uZW50IHJ1biBzdGF0ZSB0byAlZFxuIiwgcmMsIHN0YXRlKTsNCj4+Pj4g Kw0KPj4+PiArICAgICAgIHJldHVybiByYzsNCj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiArc3RhdGlj IGludA0KPj4+PiArcmVkX3NlcnZpY2VfcmVnaXN0ZXIoc3RydWN0IHJ0ZV9ldmVudF9kaXNwYXRj aGVyICpkaXNwYXRjaGVyKQ0KPj4+PiArew0KPj4+PiArICAgICAgIHN0cnVjdCBydGVfc2Vydmlj ZV9zcGVjIHNlcnZpY2UgPSB7DQo+Pj4+ICsgICAgICAgICAgICAgICAuY2FsbGJhY2sgPSByZWRf bGNvcmVfcHJvY2VzcywNCj4+Pj4gKyAgICAgICAgICAgICAgIC5jYWxsYmFja191c2VyZGF0YSA9 IGRpc3BhdGNoZXIsDQo+Pj4+ICsgICAgICAgICAgICAgICAuY2FwYWJpbGl0aWVzID0gUlRFX1NF UlZJQ0VfQ0FQX01UX1NBRkUsDQo+Pj4+ICsgICAgICAgICAgICAgICAuc29ja2V0X2lkID0gZGlz cGF0Y2hlci0+c29ja2V0X2lkDQo+Pj4+ICsgICAgICAgfTsNCj4+Pj4gKyAgICAgICBpbnQgcmM7 DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICBzbnByaW50ZihzZXJ2aWNlLm5hbWUsIFJURV9TRVJWSUNF X05BTUVfTUFYIC0gMSwgInJlZF8lZCIsDQo+Pj4+ICsgICAgICAgICAgICAgICAgZGlzcGF0Y2hl ci0+aWQpOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgcmMgPSBydGVfc2VydmljZV9jb21wb25lbnRf cmVnaXN0ZXIoJnNlcnZpY2UsICZkaXNwYXRjaGVyLT5zZXJ2aWNlX2lkKTsNCj4+Pj4gKw0KPj4+ PiArICAgICAgIGlmIChyYykNCj4+Pj4gKyAgICAgICAgICAgICAgIFJURV9FREVWX0xPR19FUlIo IlJlZ2lzdHJhdGlvbiBvZiBldmVudCBkaXNwYXRjaGVyIHNlcnZpY2UgIg0KPj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlZFxu IiwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZS5uYW1lLCBy Yyk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICByYyA9IHJlZF9zZXJ2aWNlX3J1bnN0YXRlX3NldChk aXNwYXRjaGVyLT5zZXJ2aWNlX2lkLCAxKTsNCj4+Pj4gKw0KPj4+PiArICAgICAgIGlmIChyYykN Cj4+Pj4gKyAgICAgICAgICAgICAgIHJ0ZV9zZXJ2aWNlX2NvbXBvbmVudF91bnJlZ2lzdGVyKGRp c3BhdGNoZXItPnNlcnZpY2VfaWQpOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgcmV0dXJuIHJjOw0K Pj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgaW50DQo+Pj4+ICtyZWRfc2VydmljZV91bnJl Z2lzdGVyKHN0cnVjdCBydGVfZXZlbnRfZGlzcGF0Y2hlciAqZGlzcGF0Y2hlcikNCj4+Pj4gK3sN Cj4+Pj4gKyAgICAgICBpbnQgcmM7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICByYyA9IHJlZF9zZXJ2 aWNlX3J1bnN0YXRlX3NldChkaXNwYXRjaGVyLT5zZXJ2aWNlX2lkLCAwKTsNCj4+Pj4gKw0KPj4+ PiArICAgICAgIGlmIChyYykNCj4+Pj4gKyAgICAgICAgICAgICAgIHJldHVybiByYzsNCj4+Pj4g Kw0KPj4+PiArICAgICAgIHJjID0gcnRlX3NlcnZpY2VfY29tcG9uZW50X3VucmVnaXN0ZXIoZGlz cGF0Y2hlci0+c2VydmljZV9pZCk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICBpZiAocmMpDQo+Pj4+ ICsgICAgICAgICAgICAgICBSVEVfRURFVl9MT0dfRVJSKCJVbnJlZ2lzdHJhdGlvbiBvZiBldmVu dCBkaXNwYXRjaGVyIHNlcnZpY2UgIg0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlZFxuIiwgcmMpOw0KPj4+PiArDQo+Pj4+ICsg ICAgICAgcmV0dXJuIHJjOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtpbnQNCj4+Pj4gK3J0ZV9l dmVudF9kaXNwYXRjaGVyX2NyZWF0ZSh1aW50OF90IGlkLCB1aW50OF90IGV2ZW50X2Rldl9pZCkN Cj4+Pj4gK3sNCj4+Pj4gKyAgICAgICBpbnQgc29ja2V0X2lkOw0KPj4+PiArICAgICAgIHN0cnVj dCBydGVfZXZlbnRfZGlzcGF0Y2hlciAqZGlzcGF0Y2hlcjsNCj4+Pj4gKyAgICAgICBpbnQgcmM7 DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICBpZiAocmVkX2hhc19kaXNwYXRjaGVyKGlkKSkgew0KPj4+ PiArICAgICAgICAgICAgICAgUlRFX0VERVZfTE9HX0VSUigiRGlzcGF0Y2hlciB3aXRoIGlkICVk IGFscmVhZHkgZXhpc3RzXG4iLA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZCk7DQo+Pj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVFWElTVDsNCj4+Pj4gKyAgICAg ICB9DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICBzb2NrZXRfaWQgPSBydGVfZXZlbnRfZGV2X3NvY2tl dF9pZChldmVudF9kZXZfaWQpOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgZGlzcGF0Y2hlciA9DQo+ Pj4+ICsgICAgICAgICAgICAgICBydGVfbWFsbG9jX3NvY2tldCgiZXZlbnQgZGlzcGF0Y2hlciIs DQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHJ0 ZV9ldmVudF9kaXNwYXRjaGVyKSwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJURV9DQUNIRV9MSU5FX1NJWkUsIHNvY2tldF9pZCk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAg ICBpZiAoZGlzcGF0Y2hlciA9PSBOVUxMKSB7DQo+Pj4+ICsgICAgICAgICAgICAgICBSVEVfRURF Vl9MT0dfRVJSKCJVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBldmVudCAiDQo+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXNwYXRjaGVyXG4iKTsNCj4+Pj4gKyAg ICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPj4+PiArICAgICAgIH0NCj4+Pj4gKw0KPj4+ PiArICAgICAgICpkaXNwYXRjaGVyID0gKHN0cnVjdCBydGVfZXZlbnRfZGlzcGF0Y2hlcikgew0K Pj4+PiArICAgICAgICAgICAgICAgLmlkID0gaWQsDQo+Pj4+ICsgICAgICAgICAgICAgICAuZXZl bnRfZGV2X2lkID0gZXZlbnRfZGV2X2lkLA0KPj4+PiArICAgICAgICAgICAgICAgLnNvY2tldF9p ZCA9IHNvY2tldF9pZA0KPj4+PiArICAgICAgIH07DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICByYyA9 IHJlZF9zZXJ2aWNlX3JlZ2lzdGVyKGRpc3BhdGNoZXIpOw0KPj4+PiArDQo+Pj4+ICsgICAgICAg aWYgKHJjIDwgMCkgew0KPj4+PiArICAgICAgICAgICAgICAgcnRlX2ZyZWUoZGlzcGF0Y2hlcik7 DQo+Pj4+ICsgICAgICAgICAgICAgICByZXR1cm4gcmM7DQo+Pj4+ICsgICAgICAgfQ0KPj4+PiAr DQo+Pj4+ICsgICAgICAgcmVkX3NldF9kaXNwYXRjaGVyKGlkLCBkaXNwYXRjaGVyKTsNCj4+Pj4g Kw0KPj4+PiArICAgICAgIHJldHVybiAwOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtpbnQNCj4+ Pj4gK3J0ZV9ldmVudF9kaXNwYXRjaGVyX2ZyZWUodWludDhfdCBpZCkNCj4+Pj4gK3sNCj4+Pj4g KyAgICAgICBzdHJ1Y3QgcnRlX2V2ZW50X2Rpc3BhdGNoZXIgKmRpc3BhdGNoZXI7DQo+Pj4+ICsg ICAgICAgaW50IHJjOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgUkVEX1ZBTElEX0lEX09SX1JFVF9F SU5WQUwoaWQpOw0KPj4+PiArICAgICAgIGRpc3BhdGNoZXIgPSByZWRfZ2V0X2Rpc3BhdGNoZXIo aWQpOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgcmMgPSByZWRfc2VydmljZV91bnJlZ2lzdGVyKGRp c3BhdGNoZXIpOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgaWYgKHJjKQ0KPj4+PiArICAgICAgICAg ICAgICAgcmV0dXJuIHJjOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgcmVkX3NldF9kaXNwYXRjaGVy KGlkLCBOVUxMKTsNCj4+Pj4gKw0KPj4+PiArICAgICAgIHJ0ZV9mcmVlKGRpc3BhdGNoZXIpOw0K Pj4+PiArDQo+Pj4+ICsgICAgICAgcmV0dXJuIDA7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gK2lu dA0KPj4+PiArcnRlX2V2ZW50X2Rpc3BhdGNoZXJfc2VydmljZV9pZF9nZXQodWludDhfdCBpZCwg dWludDMyX3QgKnNlcnZpY2VfaWQpDQo+Pj4+ICt7DQo+Pj4+ICsgICAgICAgc3RydWN0IHJ0ZV9l dmVudF9kaXNwYXRjaGVyICpkaXNwYXRjaGVyOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgUkVEX1ZB TElEX0lEX09SX1JFVF9FSU5WQUwoaWQpOw0KPj4+PiArICAgICAgIGRpc3BhdGNoZXIgPSByZWRf Z2V0X2Rpc3BhdGNoZXIoaWQpOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgKnNlcnZpY2VfaWQgPSBk aXNwYXRjaGVyLT5zZXJ2aWNlX2lkOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgcmV0dXJuIDA7DQo+ Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gK3N0YXRpYyBpbnQxNl90DQo+Pj4+ICtsY29yZV9wb3J0X2lu ZGV4KHN0cnVjdCBydGVfZXZlbnRfZGlzcGF0Y2hlcl9sY29yZSAqbGNvcmUsDQo+Pj4+ICsgICAg ICAgICAgICAgICAgdWludDhfdCBldmVudF9wb3J0X2lkKQ0KPj4+PiArew0KPj4+PiArICAgICAg IHVpbnQxNl90IGk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGNvcmUt Pm51bV9wb3J0czsgaSsrKSB7DQo+Pj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2V2ZW50 X2Rpc3BhdGNoZXJfbGNvcmVfcG9ydCAqcG9ydCA9DQo+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICZsY29yZS0+cG9ydHNbaV07DQo+Pj4+ICsgICAgICAgICAgICAgICBpZiAocG9ydC0+cG9y dF9pZCA9PSBldmVudF9wb3J0X2lkKQ0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gaTsNCj4+Pj4gKyAgICAgICB9DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICByZXR1cm4gLTE7DQo+ Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gK2ludA0KPj4+PiArcnRlX2V2ZW50X2Rpc3BhdGNoZXJfYmlu ZF9wb3J0X3RvX2xjb3JlKHVpbnQ4X3QgaWQsIHVpbnQ4X3QgZXZlbnRfcG9ydF9pZCwNCj4+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGJhdGNoX3Np emUsIHVpbnQ2NF90IHRpbWVvdXQsDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGNvcmVfaWQpDQo+Pj4+ICt7DQo+Pj4+ICsgICAgICAg c3RydWN0IHJ0ZV9ldmVudF9kaXNwYXRjaGVyICpkaXNwYXRjaGVyOw0KPj4+PiArICAgICAgIHN0 cnVjdCBydGVfZXZlbnRfZGlzcGF0Y2hlcl9sY29yZSAqbGNvcmU7DQo+Pj4+ICsgICAgICAgc3Ry dWN0IHJ0ZV9ldmVudF9kaXNwYXRjaGVyX2xjb3JlX3BvcnQgKnBvcnQ7DQo+Pj4+ICsNCj4+Pj4g KyAgICAgICBSRURfVkFMSURfSURfT1JfUkVUX0VJTlZBTChpZCk7DQo+Pj4+ICsgICAgICAgZGlz cGF0Y2hlciA9IHJlZF9nZXRfZGlzcGF0Y2hlcihpZCk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICBs Y29yZSA9ICZkaXNwYXRjaGVyLT5sY29yZXNbbGNvcmVfaWRdOw0KPj4+PiArDQo+Pj4+ICsgICAg ICAgaWYgKGxjb3JlLT5udW1fcG9ydHMgPT0gUkVEX01BWF9QT1JUU19QRVJfTENPUkUpDQo+Pj4+ ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4+Pj4gKw0KPj4+PiArICAgICAgIGlm IChsY29yZV9wb3J0X2luZGV4KGxjb3JlLCBldmVudF9wb3J0X2lkKSA+PSAwKQ0KPj4+PiArICAg ICAgICAgICAgICAgcmV0dXJuIC1FRVhJU1Q7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICBwb3J0ID0g Jmxjb3JlLT5wb3J0c1tsY29yZS0+bnVtX3BvcnRzXTsNCj4+Pj4gKw0KPj4+PiArICAgICAgICpw b3J0ID0gKHN0cnVjdCBydGVfZXZlbnRfZGlzcGF0Y2hlcl9sY29yZV9wb3J0KSB7DQo+Pj4+ICsg ICAgICAgICAgICAgICAucG9ydF9pZCA9IGV2ZW50X3BvcnRfaWQsDQo+Pj4+ICsgICAgICAgICAg ICAgICAuYmF0Y2hfc2l6ZSA9IGJhdGNoX3NpemUsDQo+Pj4+ICsgICAgICAgICAgICAgICAudGlt ZW91dCA9IHRpbWVvdXQNCj4+Pj4gKyAgICAgICB9Ow0KPj4+PiArDQo+Pj4+ICsgICAgICAgbGNv cmUtPm51bV9wb3J0cysrOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgcmV0dXJuIDA7DQo+Pj4+ICt9 DQo+Pj4+ICsNCj4+Pj4gK2ludA0KPj4+PiArcnRlX2V2ZW50X2Rpc3BhdGNoZXJfdW5iaW5kX3Bv cnRfZnJvbV9sY29yZSh1aW50OF90IGlkLCB1aW50OF90IGV2ZW50X3BvcnRfaWQsDQo+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxj b3JlX2lkKQ0KPj4+PiArew0KPj4+PiArICAgICAgIHN0cnVjdCBydGVfZXZlbnRfZGlzcGF0Y2hl ciAqZGlzcGF0Y2hlcjsNCj4+Pj4gKyAgICAgICBzdHJ1Y3QgcnRlX2V2ZW50X2Rpc3BhdGNoZXJf bGNvcmUgKmxjb3JlOw0KPj4+PiArICAgICAgIGludDE2X3QgcG9ydF9pZHg7DQo+Pj4+ICsgICAg ICAgc3RydWN0IHJ0ZV9ldmVudF9kaXNwYXRjaGVyX2xjb3JlX3BvcnQgKnBvcnQ7DQo+Pj4+ICsg ICAgICAgc3RydWN0IHJ0ZV9ldmVudF9kaXNwYXRjaGVyX2xjb3JlX3BvcnQgKmxhc3Q7DQo+Pj4+ ICsNCj4+Pj4gKyAgICAgICBSRURfVkFMSURfSURfT1JfUkVUX0VJTlZBTChpZCk7DQo+Pj4+ICsg ICAgICAgZGlzcGF0Y2hlciA9IHJlZF9nZXRfZGlzcGF0Y2hlcihpZCk7DQo+Pj4+ICsNCj4+Pj4g KyAgICAgICBsY29yZSA9ICZkaXNwYXRjaGVyLT5sY29yZXNbbGNvcmVfaWRdOw0KPj4+PiArDQo+ Pj4+ICsgICAgICAgcG9ydF9pZHggPSBsY29yZV9wb3J0X2luZGV4KGxjb3JlLCBldmVudF9wb3J0 X2lkKTsNCj4+Pj4gKw0KPj4+PiArICAgICAgIGlmIChwb3J0X2lkeCA8IDApDQo+Pj4+ICsgICAg ICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsNCj4+Pj4gKw0KPj4+PiArICAgICAgIHBvcnQgPSAm bGNvcmUtPnBvcnRzW3BvcnRfaWR4XTsNCj4+Pj4gKyAgICAgICBsYXN0ID0gJmxjb3JlLT5wb3J0 c1tsY29yZS0+bnVtX3BvcnRzIC0gMV07DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICBpZiAocG9ydCAh PSBsYXN0KQ0KPj4+PiArICAgICAgICAgICAgICAgKnBvcnQgPSAqbGFzdDsNCj4+Pj4gKw0KPj4+ PiArICAgICAgIGxjb3JlLT5udW1fcG9ydHMtLTsNCj4+Pj4gKw0KPj4+PiArICAgICAgIHJldHVy biAwOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgaW50DQo+Pj4+ICtyZWRfY2JfbWFu YWdlKHVpbnQ4X3QgaWQsIHVpbnQ4X3QgcXVldWVfaWQsIGJvb2wgcmVnLCBib29sIGZhbGxiYWNr LA0KPj4+PiArICAgICAgICAgIHJ0ZV9ldmVudF9kaXNwYXRjaGVyX2NiX3QgY2JfZnVuLCB2b2lk ICpjYl9kYXRhKQ0KPj4+PiArew0KPj4+PiArICAgICAgIHN0cnVjdCBydGVfZXZlbnRfZGlzcGF0 Y2hlciAqZGlzcGF0Y2hlcjsNCj4+Pj4gKyAgICAgICBzdHJ1Y3QgcnRlX2V2ZW50X2Rpc3BhdGNo ZXJfY2IgKmNiOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgUkVEX1ZBTElEX0lEX09SX1JFVF9FSU5W QUwoaWQpOw0KPj4+PiArICAgICAgIGRpc3BhdGNoZXIgPSByZWRfZ2V0X2Rpc3BhdGNoZXIoaWQp Ow0KPj4+PiArDQo+Pj4+ICsgICAgICAgaWYgKGZhbGxiYWNrKQ0KPj4+PiArICAgICAgICAgICAg ICAgY2IgPSAmZGlzcGF0Y2hlci0+ZmFsbGJhY2s7DQo+Pj4+ICsgICAgICAgZWxzZQ0KPj4+PiAr ICAgICAgICAgICAgICAgY2IgPSAmZGlzcGF0Y2hlci0+cXVldWVfY2JzW3F1ZXVlX2lkXTsNCj4+ Pj4gKw0KPj4+PiArICAgICAgIGlmIChyZWcgJiYgY2ItPmNiX2Z1biAhPSBOVUxMKQ0KPj4+PiAr ICAgICAgICAgICAgICAgcmV0dXJuIC1FRVhJU1Q7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICBpZiAo IXJlZyAmJiBjYi0+Y2JfZnVuID09IE5VTEwpDQo+Pj4+ICsgICAgICAgICAgICAgICByZXR1cm4g LUVOT0VOVDsNCj4+Pj4gKw0KPj4+PiArICAgICAgICpjYiA9IChzdHJ1Y3QgcnRlX2V2ZW50X2Rp c3BhdGNoZXJfY2IpIHsNCj4+Pj4gKyAgICAgICAgICAgICAgIC5jYl9mdW4gPSBjYl9mdW4sDQo+ Pj4+ICsgICAgICAgICAgICAgICAuY2JfZGF0YSA9IGNiX2RhdGENCj4+Pj4gKyAgICAgICB9Ow0K Pj4+PiArDQo+Pj4+ICsgICAgICAgcmV0dXJuIDA7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gK2lu dA0KPj4+PiArcnRlX2V2ZW50X2Rpc3BhdGNoZXJfcmVnaXN0ZXIodWludDhfdCBpZCwgdWludDhf dCBxdWV1ZV9pZCwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRlX2V2ZW50 X2Rpc3BhdGNoZXJfY2JfdCBjYl9mdW4sIHZvaWQgKmNiX2RhdGEpDQo+Pj4+ICt7DQo+Pj4+ICsg ICAgICAgcmV0dXJuIHJlZF9jYl9tYW5hZ2UoaWQsIHF1ZXVlX2lkLCB0cnVlLCBmYWxzZSwgY2Jf ZnVuLCBjYl9kYXRhKTsNCj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiAraW50DQo+Pj4+ICtydGVfZXZl bnRfZGlzcGF0Y2hlcl91bnJlZ2lzdGVyKHVpbnQ4X3QgaWQsIHVpbnQ4X3QgcXVldWVfaWQpDQo+ Pj4+ICt7DQo+Pj4+ICsgICAgICAgcmV0dXJuIHJlZF9jYl9tYW5hZ2UoaWQsIHF1ZXVlX2lkLCBm YWxzZSwgZmFsc2UsIE5VTEwsIE5VTEwpOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtpbnQNCj4+ Pj4gK3J0ZV9ldmVudF9kaXNwYXRjaGVyX3JlZ2lzdGVyX2ZhbGxiYWNrKHVpbnQ4X3QgaWQsDQo+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0ZV9ldmVudF9kaXNw YXRjaGVyX2NiX3QgY2JfZnVuLA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkICpjYl9kYXRhKQ0KPj4+PiArew0KPj4+PiArICAgICAgIHJldHVybiByZWRf Y2JfbWFuYWdlKGlkLCAwLCB0cnVlLCB0cnVlLCBjYl9mdW4sIGNiX2RhdGEpOw0KPj4+PiArfQ0K Pj4+PiArDQo+Pj4+ICtpbnQNCj4+Pj4gK3J0ZV9ldmVudF9kaXNwYXRjaGVyX3VucmVnaXN0ZXJf ZmFsbGJhY2sodWludDhfdCBpZCkNCj4+Pj4gK3sNCj4+Pj4gKyAgICAgICByZXR1cm4gcmVkX2Ni X21hbmFnZShpZCwgMCwgZmFsc2UsIHRydWUsIE5VTEwsIE5VTEwpOw0KPj4+PiArfQ0KPj4+PiBk aWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9ldmVudGRldi9ydGVfZXZlbnRfZGlzcGF0Y2hlci5oIGIv bGliL2xpYnJ0ZV9ldmVudGRldi9ydGVfZXZlbnRfZGlzcGF0Y2hlci5oDQo+Pj4+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+Pj4+IGluZGV4IDAwMDAwMDAwMDAuLjExZjU3NTcxYWINCj4+Pj4gLS0t IC9kZXYvbnVsbA0KPj4+PiArKysgYi9saWIvbGlicnRlX2V2ZW50ZGV2L3J0ZV9ldmVudF9kaXNw YXRjaGVyLmgNCj4+Pj4gQEAgLTAsMCArMSwyNTEgQEANCj4+Pj4gKy8qIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4+Pj4gKyAqIENvcHlyaWdodChjKSAyMDIxIEVyaWNz c29uIEFCDQo+Pj4+ICsgKi8NCj4+Pj4gKw0KPj4+PiArI2lmbmRlZiBfX1JURV9FVkVOVF9ESVNQ QVRDSEVSX0hfXw0KPj4+PiArI2RlZmluZSBfX1JURV9FVkVOVF9ESVNQQVRDSEVSX0hfXw0KPj4+ PiArDQo+Pj4+ICsvKioNCj4+Pj4gKyAqIEBmaWxlDQo+Pj4+ICsgKg0KPj4+PiArICogUlRFIEV2 ZW50IERpc3BhdGNoZXINCj4+Pj4gKyAqDQo+Pj4+ICsgKi8NCj4+Pj4gKw0KPj4+PiArI2lmZGVm IF9fY3BsdXNwbHVzDQo+Pj4+ICtleHRlcm4gIkMiIHsNCj4+Pj4gKyNlbmRpZg0KPj4+PiArDQo+ Pj4+ICsjaW5jbHVkZSA8cnRlX2V2ZW50ZGV2Lmg+DQo+Pj4+ICsNCj4+Pj4gKy8qKg0KPj4+PiAr ICogRnVuY3Rpb24gcHJvdG90eXBlIGZvciBkaXNwYXRjaGVyIGNhbGxiYWNrcy4NCj4+Pj4gKyAq DQo+Pj4+ICsgKiBAcGFyYW0gZXZlbnRzDQo+Pj4+ICsgKiAgUG9pbnRlciB0byBhbiBhcnJheSBv ZiBldmVudHMuDQo+Pj4+ICsgKg0KPj4+PiArICogQHBhcmFtIG51bQ0KPj4+PiArICogIFRoZSBu dW1iZXIgb2YgZXZlbnRzIGluIHRoZSBAcCBldmVudHMgYXJyYXkuDQo+Pj4+ICsgKg0KPj4+PiAr ICogQHBhcmFtIGNiX2RhdGENCj4+Pj4gKyAqICBUaGUgcG9pbnRlciBzdXBwbGllZCBieSB0aGUg YXBwbGljYXRpb24gaW4NCj4+Pj4gKyAqICBydGVfZXZlbnRfZGlzcGF0Y2hlcl9yZWdpc3Rlcigp IG9yDQo+Pj4+ICsgKiAgcnRlX2V2ZW50X2Rpc3BhdGNoZXJfcmVnaXN0ZXJfZmFsbGJhY2soKS4N Cj4+Pj4gKyAqLw0KPj4+PiArDQo+Pj4+ICt0eXBlZGVmIHZvaWQgKCpydGVfZXZlbnRfZGlzcGF0 Y2hlcl9jYl90KShzdHJ1Y3QgcnRlX2V2ZW50ICpldmVudHMsDQo+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG51bSwgdm9pZCAqY2JfZGF0YSk7 DQo+Pj4+ICsNCj4+Pj4gKy8qKg0KPj4+PiArICogQ3JlYXRlIGFuIGV2ZW50IGRpc3BhdGNoZXIg d2l0aCB0aGUgc3BlY2lmaWVkIGlkLg0KPj4+PiArICoNCj4+Pj4gKyAqIEBwYXJhbSBpZA0KPj4+ PiArICogIEFuIGFwcGxpY2F0aW9uLXNwZWNpZmllZCwgdW5pcXVlIChhY3Jvc3MgYWxsIGV2ZW50 IGRpc3BhdGNoZXINCj4+Pj4gKyAqICBpbnN0YW5jZXMpIGlkZW50aWZpZXIuDQo+Pj4+ICsgKg0K Pj4+PiArICogQHBhcmFtIGV2ZW50X2Rldl9pZA0KPj4+PiArICogIFRoZSBpZGVudGlmaWVyIG9m IHRoZSBldmVudCBkZXZpY2UgZnJvbSB3aGljaCB0aGlzIGV2ZW50IGRpc3BhdGNoZXINCj4+Pj4g KyAqICB3aWxsIGRlcXVldWUgZXZlbnRzLg0KPj4+PiArICoNCj4+Pj4gKyAqIEByZXR1cm4NCj4+ Pj4gKyAqICAgLSAwOiBTdWNjZXNzDQo+Pj4+ICsgKiAgIC0gPDA6IEVycm9yIGNvZGUgb24gZmFp bHVyZQ0KPj4+PiArICovDQo+Pj4+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4+Pj4gK2ludA0KPj4+ PiArcnRlX2V2ZW50X2Rpc3BhdGNoZXJfY3JlYXRlKHVpbnQ4X3QgaWQsIHVpbnQ4X3QgZXZlbnRf ZGV2X2lkKTsNCj4+Pj4gKw0KPj4+PiArLyoqDQo+Pj4+ICsgKiBGcmVlcyBhbiBldmVudCBkaXNw YXRjaGVyIHdpdGggdGhlIHNwZWNpZmllZCBpZC4NCj4+Pj4gKyAqDQo+Pj4+ICsgKiBAcGFyYW0g aWQNCj4+Pj4gKyAqICBUaGUgZXZlbnQgZGlzcGF0Y2hlciBpZGVudGlmaWVyLg0KPj4+PiArICoN Cj4+Pj4gKyAqIEByZXR1cm4NCj4+Pj4gKyAqICAgLSAwOiBTdWNjZXNzDQo+Pj4+ICsgKiAgIC0g PDA6IEVycm9yIGNvZGUgb24gZmFpbHVyZQ0KPj4+PiArICovDQo+Pj4+ICtfX3J0ZV9leHBlcmlt ZW50YWwNCj4+Pj4gK2ludA0KPj4+PiArcnRlX2V2ZW50X2Rpc3BhdGNoZXJfZnJlZSh1aW50OF90 IGlkKTsNCj4+Pj4gKw0KPj4+PiArLyoqDQo+Pj4+ICsgKiBSZXRyaWV2ZSB0aGUgc2VydmljZSBp ZGVudGlmaWVyIG9mIHRoZSBldmVudCBkaXNwYXRjaGVyLg0KPj4+PiArICoNCj4+Pj4gKyAqIEBw YXJhbSBpZA0KPj4+PiArICogIFRoZSBldmVudCBkaXNwYXRjaGVyIGlkZW50aWZpZXIuDQo+Pj4+ ICsgKg0KPj4+PiArICogQHBhcmFtIFtvdXRdIHNlcnZpY2VfaWQNCj4+Pj4gKyAqICBBIHBvaW50 ZXIgdG8gYSBjYWxsZXItc3VwcGxpZWQgYnVmZmVyIHdoZXJlIHRoZSBldmVudCBkaXNwYXRjaGVy J3MNCj4+Pj4gKyAqICBzZXJ2aWNlIGlkIHdpbGwgYmUgc3RvcmVkLg0KPj4+PiArICoNCj4+Pj4g KyAqIEByZXR1cm4NCj4+Pj4gKyAqICAtIDA6IFN1Y2Nlc3MNCj4+Pj4gKyAqICAtIDwwOiBFcnJv ciBjb2RlIG9uIGZhaWx1cmUuDQo+Pj4+ICsgKi8NCj4+Pj4gK19fcnRlX2V4cGVyaW1lbnRhbA0K Pj4+PiAraW50DQo+Pj4+ICtydGVfZXZlbnRfZGlzcGF0Y2hlcl9zZXJ2aWNlX2lkX2dldCh1aW50 OF90IGlkLCB1aW50MzJfdCAqc2VydmljZV9pZCk7DQo+Pj4+ICsNCj4+Pj4gKy8qKg0KPj4+PiAr ICogQmluZHMgYW4gZXZlbnQgZGV2aWNlIHBvcnQgdG8gYSBzcGVjaWZpYyBsY29yZSBvbiB0aGUg c3BlY2lmaWVkDQo+Pj4+ICsgKiBldmVudCBkaXNwYXRjaGVyLg0KPj4+PiArICoNCj4+Pj4gKyAq IFRoaXMgZnVuY3Rpb24gY29uZmlndXJlcyBhbiBldmVudCBkaXNwYXRjaGVyIHRvIGRlcXVldWUg ZXZlbnRzIGZyb20NCj4+Pj4gKyAqIGFuIGV2ZW50IGRldmljZSBwb3J0IChhcyBzcGVjaWZpZWQg YnkgQHAgZXZlbnRfcG9ydF9pZCksIGluIGNhc2UNCj4+Pj4gKyAqIGl0cyBzZXJ2aWNlIGZ1bmN0 aW9uIGlzIHJ1biBvbiBwYXJ0aWN1bGFyIGxjb3JlIChhcyBzcGVjaWZpZWQgYnkgQHANCj4+Pj4g KyAqIGxjb3JlX2lkKS4NCj4+Pj4gKyAqDQo+Pj4+ICsgKiBNdWx0aXBsZSBldmVudCBkZXZpY2Ug cG9ydHMgbWF5IGJlIGJvdW5kIHRvIHRoZSBzYW1lIGxjb3JlLiBBDQo+Pj4+ICsgKiBwYXJ0aWN1 bGFyIHBvcnQgbWF5IG9ubHkgYmUgYm91bmQgdG8gb25lIGxjb3JlLg0KPj4+PiArICoNCj4+Pj4g KyAqIElmIHRoZSBldmVudCBkaXNwYXRjaGVyIHNlcnZpY2UgaXMgbWFwcGVkICh3aXRoDQo+Pj4+ ICsgKiBydGVfc2VydmljZV9tYXBfbGNvcmVfc2V0KCkpIHRvIGEgbGNvcmUgZm9yIHdoaWNoIG5v IHBvcnRzIGFyZQ0KPj4+PiArICogYm91bmQsIHRoZSBzZXJ2aWNlIGZ1bmN0aW9uIHdpbGwgYmUg YSBuby1vcGVyYXRpb24uDQo+Pj4+ICsgKg0KPj4+PiArICogQHBhcmFtIGlkDQo+Pj4+ICsgKiAg VGhlIGV2ZW50IGRpc3BhdGNoZXIgaWRlbnRpZmllci4NCj4+Pj4gKyAqDQo+Pj4+ICsgKiBAcGFy YW0gZXZlbnRfcG9ydF9pZA0KPj4+PiArICogIFRoZSBldmVudCBkZXZpY2UgcG9ydCBpZGVudGlm aWVyLg0KPj4+PiArICoNCj4+Pj4gKyAqIEBwYXJhbSBiYXRjaF9zaXplDQo+Pj4+ICsgKiAgVGhl IGJhdGNoIHNpemUgdG8gdXNlIGluIHJ0ZV9ldmVudF9kZXF1ZXVlX2J1cnN0KCksIGZvciB0aGUN Cj4+Pj4gKyAqICBjb25maWd1cmVkIGV2ZW50IGRldmljZSBwb3J0IGFuZCBsY29yZS4NCj4+Pj4g KyAqDQo+Pj4+ICsgKiBAcGFyYW0gdGltZW91dA0KPj4+PiArICogIFRoZSB0aW1lb3V0IHBhcmFt ZXRlciB0byB1c2UgaW4gcnRlX2V2ZW50X2RlcXVldWVfYnVyc3QoKSwgZm9yIHRoZQ0KPj4+PiAr ICogIGNvbmZpZ3VyZWQgZXZlbnQgZGV2aWNlIHBvcnQgYW5kIGxjb3JlLg0KPj4+PiArICoNCj4+ Pj4gKyAqIEByZXR1cm4NCj4+Pj4gKyAqICAtIDA6IFN1Y2Nlc3MNCj4+Pj4gKyAqICAtIDwwOiBF cnJvciBjb2RlIG9uIGZhaWx1cmUuDQo+Pj4+ICsgKi8NCj4+Pj4gK19fcnRlX2V4cGVyaW1lbnRh bA0KPj4+PiAraW50DQo+Pj4+ICtydGVfZXZlbnRfZGlzcGF0Y2hlcl9iaW5kX3BvcnRfdG9fbGNv cmUodWludDhfdCBpZCwgdWludDhfdCBldmVudF9wb3J0X2lkLA0KPj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgYmF0Y2hfc2l6ZSwgdWludDY0X3Qg dGltZW91dCwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBsY29yZV9pZCk7DQo+Pj4+ICsNCj4+Pj4gKy8qKg0KPj4+PiArICogVW5iaW5k IGFuIGV2ZW50IGRldmljZSBwb3J0IGZyb20gYSBzcGVjaWZpYyBsY29yZS4NCj4+Pj4gKyAqDQo+ Pj4+ICsgKiBAcGFyYW0gaWQNCj4+Pj4gKyAqICBUaGUgZXZlbnQgZGlzcGF0Y2hlciBpZGVudGlm aWVyLg0KPj4+PiArICoNCj4+Pj4gKyAqIEBwYXJhbSBldmVudF9wb3J0X2lkDQo+Pj4+ICsgKiAg VGhlIGV2ZW50IGRldmljZSBwb3J0IGlkZW50aWZpZXIuDQo+Pj4+ICsgKg0KPj4+PiArICogQHJl dHVybg0KPj4+PiArICogIC0gMDogU3VjY2Vzcw0KPj4+PiArICogIC0gPDA6IEVycm9yIGNvZGUg b24gZmFpbHVyZS4NCj4+Pj4gKyAqLw0KPj4+PiArX19ydGVfZXhwZXJpbWVudGFsDQo+Pj4+ICtp bnQNCj4+Pj4gK3J0ZV9ldmVudF9kaXNwYXRjaGVyX3VuYmluZF9wb3J0X2Zyb21fbGNvcmUodWlu dDhfdCBpZCwgdWludDhfdCBldmVudF9wb3J0X2lkLA0KPj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsY29yZV9pZCk7DQo+Pj4+ICsN Cj4+Pj4gKy8qKg0KPj4+PiArICogUmVnaXN0ZXIgYSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhl IHNwZWNpZmllZCBxdWV1ZSBpZGVudGlmaWVyLg0KPj4+PiArICoNCj4+Pj4gKyAqIEF0IG1vc3Qg b25lIGNhbGxiYWNrIG1heSBiZSByZWdpc3RlcmVkIHBlciBxdWV1ZSBpZC4NCj4+Pj4gKyAqDQo+ Pj4+ICsgKiBUaGUgc2FtZSBjYWxsYmFjayBmdW5jdGlvbiBtYXkgYmUgcmVnaXN0ZXJlZCBmb3Ig bXVsdGlwbGUgcXVldWUgaWRzLg0KPj4+PiArICoNCj4+Pj4gKyAqIEZvciBlYWNoIGNhbGxiYWNr IGludm9jYXRpb24sIGV2ZW50cyBiZWxvbmdpbmcgdG8gYSBzaW5nbGUgcXVldWUgaWQNCj4+Pj4g KyAqIHdpbGwgZGlzcGF0Y2hlZC4NCj4+Pj4gKyAqDQo+Pj4+ICsgKiBAcGFyYW0gaWQNCj4+Pj4g KyAqICBUaGUgZXZlbnQgZGlzcGF0Y2hlciBpZGVudGlmaWVyLg0KPj4+PiArICoNCj4+Pj4gKyAq IEBwYXJhbSBxdWV1ZV9pZA0KPj4+PiArICogIFRoZSBldmVudCBkZXZpY2UgcXVldWUgaWQgZm9y IHdoaWNoIEBwIGNiX2Z1biBzaG91bGQgYmUgY2FsbGVkLg0KPj4+PiArICoNCj4+Pj4gKyAqIEBw YXJhbSBjYl9mdW4NCj4+Pj4gKyAqICBUaGUgY2FsbGJhY2sgZnVuY3Rpb24uDQo+Pj4+ICsgKg0K Pj4+PiArICogQHBhcmFtIGNiX2RhdGENCj4+Pj4gKyAqICBBIHBvaW50ZXIgdG8gc29tZSBhcHBs aWNhdGlvbi1zcGVjaWZpYyBvcGFxdWUgZGF0YSAob3IgTlVMTCksDQo+Pj4+ICsgKiAgd2hpY2gg aXMgc3VwcGxpZWQgYmFjayB0byB0aGUgYXBwbGljYXRpb24gaW4gdGhlIGNhbGxiYWNrLg0KPj4+ PiArICoNCj4+Pj4gKyAqIEByZXR1cm4NCj4+Pj4gKyAqICAtIDA6IFN1Y2Nlc3MNCj4+Pj4gKyAq ICAtIDwwOiBFcnJvciBjb2RlIG9uIGZhaWx1cmUuDQo+Pj4+ICsgKi8NCj4+Pj4gK19fcnRlX2V4 cGVyaW1lbnRhbA0KPj4+PiAraW50DQo+Pj4+ICtydGVfZXZlbnRfZGlzcGF0Y2hlcl9yZWdpc3Rl cih1aW50OF90IGlkLCB1aW50OF90IHF1ZXVlX2lkLA0KPj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBydGVfZXZlbnRfZGlzcGF0Y2hlcl9jYl90IGNiX2Z1biwgdm9pZCAqY2JfZGF0 YSk7DQo+Pj4+ICsNCj4+Pj4gKy8qKg0KPj4+PiArICogVW5yZWdpc3RlciBhIGNhbGxiYWNrIGZ1 bmN0aW9uIGZvciB0aGUgc3BlY2lmaWVkIHF1ZXVlIGlkZW50aWZpZXIuDQo+Pj4+ICsgKg0KPj4+ PiArICogQHBhcmFtIGlkDQo+Pj4+ICsgKiAgVGhlIGV2ZW50IGRpc3BhdGNoZXIgaWRlbnRpZmll ci4NCj4+Pj4gKyAqDQo+Pj4+ICsgKiBAcGFyYW0gcXVldWVfaWQNCj4+Pj4gKyAqICBUaGUgZXZl bnQgZGV2aWNlIHF1ZXVlIGlkIGZvciB3aGljaCB0aGUgY2FsbGJhY2sgc2hvdWxkIGJlIHJlbW92 ZWQuDQo+Pj4+ICsgKg0KPj4+PiArICogQHJldHVybg0KPj4+PiArICogIC0gMDogU3VjY2Vzcw0K Pj4+PiArICogIC0gPDA6IEVycm9yIGNvZGUgb24gZmFpbHVyZS4NCj4+Pj4gKyAqLw0KPj4+PiAr X19ydGVfZXhwZXJpbWVudGFsDQo+Pj4+ICtpbnQNCj4+Pj4gK3J0ZV9ldmVudF9kaXNwYXRjaGVy X3VucmVnaXN0ZXIodWludDhfdCBpZCwgdWludDhfdCBxdWV1ZV9pZCk7DQo+Pj4+ICsNCj4+Pj4g Ky8qKg0KPj4+PiArICogUmVnaXN0ZXIgYSBmYWxsYmFjayBjYWxsYmFjayBmdW5jdGlvbiBmb3Ig dGhlIHNwZWNpZmllZCBxdWV1ZQ0KPj4+PiArICogaWRlbnRpZmllci4NCj4+Pj4gKyAqDQo+Pj4+ ICsgKiBPbmx5IGV2ZW50cyBmb3Igd2hpY2ggbm8gcXVldWUtc3BlY2lmaWMgY2FsbGJhY2sgZnVu Y3Rpb24gd2lsbCBiZQ0KPj4+PiArICogZGlzcGF0Y2hlZCB0byB0aGUgQHAgY2JfZnVuIGNhbGxi YWNrLg0KPj4+PiArICoNCj4+Pj4gKyAqIEF0IG1vc3Qgb25lIGNhbGxiYWNrIGZhbGxiYWNrIGZ1 bmN0aW9uIG1heSBiZSByZWdpc3RlcmVkLg0KPj4+PiArICoNCj4+Pj4gKyAqIEZvciBlYWNoIGNh bGxiYWNrIGludm9jYXRpb24sIG9ubHkgZXZlbnRzIGJlbG9uZ2luZyB0byBhIHNpbmdsZQ0KPj4+ PiArICogcXVldWUgaWQgd2lsbCBiZSBpbmNsdWRlZC4NCj4+Pj4gKyAqDQo+Pj4+ICsgKiBJZiB0 aGUgZXZlbnQgZGlzcGF0Y2hlciBlbmNvdW50ZXJzIGFuIGV2ZW50IHdpdGggYSBxdWV1ZSBpZCBm b3INCj4+Pj4gKyAqIHdoaWNoIHRoZSBhcHBsaWNhdGlvbiBoYXMgbm90IHJlZ2lzdGVyZWQgYW55 IHNwZWNpZmljIGNhbGxiYWNrLCBhbmQNCj4+Pj4gKyAqIHRoZXJlIGlzIGFsc28gbm8gZmFsbGJh Y2sgY29uZmlndXJlZCwgdGhlIGV2ZW50IHdpbGwgYmUgZHJvcHBlZC4NCj4+Pj4gKyAqDQo+Pj4+ ICsgKiBAcGFyYW0gaWQNCj4+Pj4gKyAqICBUaGUgZXZlbnQgZGlzcGF0Y2hlciBpZGVudGlmaWVy Lg0KPj4+PiArICoNCj4+Pj4gKyAqIEBwYXJhbSBjYl9mdW4NCj4+Pj4gKyAqICBUaGUgZmFsbGJh Y2sgY2FsbGJhY2sgZnVuY3Rpb24uDQo+Pj4+ICsgKg0KPj4+PiArICogQHBhcmFtIGNiX2RhdGEN Cj4+Pj4gKyAqICBBIHBvaW50ZXIgdG8gc29tZSBhcHBsaWNhdGlvbi1zcGVjaWZpYyBvcGFxdWUg ZGF0YSAob3IgTlVMTCksDQo+Pj4+ICsgKiAgd2hpY2ggaXMgc3VwcGxpZWQgYmFjayB0byB0aGUg YXBwbGljYXRpb24gaW4gdGhlIGNhbGxiYWNrLg0KPj4+PiArICoNCj4+Pj4gKyAqIEByZXR1cm4N Cj4+Pj4gKyAqICAtIDA6IFN1Y2Nlc3MNCj4+Pj4gKyAqICAtIDwwOiBFcnJvciBjb2RlIG9uIGZh aWx1cmUuDQo+Pj4+ICsgKi8NCj4+Pj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPj4+PiAraW50DQo+ Pj4+ICtydGVfZXZlbnRfZGlzcGF0Y2hlcl9yZWdpc3Rlcl9mYWxsYmFjayh1aW50OF90IGlkLA0K Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGVfZXZlbnRfZGlz cGF0Y2hlcl9jYl90IGNiX2Z1biwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdm9pZCAqY2JfZGF0YSk7DQo+Pj4+ICsNCj4+Pj4gKy8qKg0KPj4+PiArICogVW5y ZWdpc3RlciB0aGUgZmFsbGJhY2sgY2FsbGJhY2sgZnVuY3Rpb24uDQo+Pj4+ICsgKg0KPj4+PiAr ICogQHBhcmFtIGlkDQo+Pj4+ICsgKiAgVGhlIGV2ZW50IGRpc3BhdGNoZXIgaWRlbnRpZmllci4N Cj4+Pj4gKyAqDQo+Pj4+ICsgKiBAcmV0dXJuDQo+Pj4+ICsgKiAgLSAwOiBTdWNjZXNzDQo+Pj4+ ICsgKiAgLSA8MDogRXJyb3IgY29kZSBvbiBmYWlsdXJlLg0KPj4+PiArICovDQo+Pj4+ICtfX3J0 ZV9leHBlcmltZW50YWwNCj4+Pj4gK2ludA0KPj4+PiArcnRlX2V2ZW50X2Rpc3BhdGNoZXJfdW5y ZWdpc3Rlcl9mYWxsYmFjayh1aW50OF90IGlkKTsNCj4+Pj4gKw0KPj4+PiArI2lmZGVmIF9fY3Bs dXNwbHVzDQo+Pj4+ICt9DQo+Pj4+ICsjZW5kaWYNCj4+Pj4gKw0KPj4+PiArI2VuZGlmIC8qIF9f UlRFX0VWRU5UX0RJU1BBVENIRVJfXyAqLw0KPj4+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9l dmVudGRldi9ydGVfZXZlbnRkZXZfdmVyc2lvbi5tYXAgYi9saWIvbGlicnRlX2V2ZW50ZGV2L3J0 ZV9ldmVudGRldl92ZXJzaW9uLm1hcA0KPj4+PiBpbmRleCA5MWE2MmNkMDc3Li5kY2I4ODc2MDFi IDEwMDY0NA0KPj4+PiAtLS0gYS9saWIvbGlicnRlX2V2ZW50ZGV2L3J0ZV9ldmVudGRldl92ZXJz aW9uLm1hcA0KPj4+PiArKysgYi9saWIvbGlicnRlX2V2ZW50ZGV2L3J0ZV9ldmVudGRldl92ZXJz aW9uLm1hcA0KPj4+PiBAQCAtMTM0LDQgKzEzNCwxNCBAQCBFWFBFUklNRU5UQUwgew0KPj4+PiAg ICAgICAgICAgX19ydGVfZXZlbnRkZXZfdHJhY2VfY3J5cHRvX2FkYXB0ZXJfcXVldWVfcGFpcl9k ZWw7DQo+Pj4+ICAgICAgICAgICBfX3J0ZV9ldmVudGRldl90cmFjZV9jcnlwdG9fYWRhcHRlcl9z dGFydDsNCj4+Pj4gICAgICAgICAgIF9fcnRlX2V2ZW50ZGV2X3RyYWNlX2NyeXB0b19hZGFwdGVy X3N0b3A7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICBydGVfZXZlbnRfZGlzcGF0Y2hlcl9jcmVhdGU7 DQo+Pj4+ICsgICAgICAgcnRlX2V2ZW50X2Rpc3BhdGNoZXJfZnJlZTsNCj4+Pj4gKyAgICAgICBy dGVfZXZlbnRfZGlzcGF0Y2hlcl9zZXJ2aWNlX2lkX2dldDsNCj4+Pj4gKyAgICAgICBydGVfZXZl bnRfZGlzcGF0Y2hlcl9iaW5kX3BvcnRfdG9fbGNvcmU7DQo+Pj4+ICsgICAgICAgcnRlX2V2ZW50 X2Rpc3BhdGNoZXJfdW5iaW5kX3BvcnRfZnJvbV9sY29yZTsNCj4+Pj4gKyAgICAgICBydGVfZXZl bnRfZGlzcGF0Y2hlcl9yZWdpc3RlcjsNCj4+Pj4gKyAgICAgICBydGVfZXZlbnRfZGlzcGF0Y2hl cl91bnJlZ2lzdGVyOw0KPj4+PiArICAgICAgIHJ0ZV9ldmVudF9kaXNwYXRjaGVyX3JlZ2lzdGVy X2ZhbGxiYWNrOw0KPj4+PiArICAgICAgIHJ0ZV9ldmVudF9kaXNwYXRjaGVyX3VucmVnaXN0ZXJf ZmFsbGJhY2s7DQo+Pj4+ICAgIH07DQo+Pj4+IC0tDQo+Pj4+IDIuMjUuMQ0KPj4+Pg0KDQo=