Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp7001499imu; Thu, 27 Dec 2018 10:17:42 -0800 (PST) X-Google-Smtp-Source: ALg8bN4ddP8LrNYF672y3j5WzsfeLzCrY4jqEA5YHc/hZhlwBqts5NTPcUezlBqYrCG1ZtU2PAex X-Received: by 2002:a17:902:6848:: with SMTP id f8mr23942115pln.300.1545934662451; Thu, 27 Dec 2018 10:17:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545934662; cv=none; d=google.com; s=arc-20160816; b=QQe9uiCpPmyH/LmdatRsJ0pAD3ru3i0vrDgIvrfPWJTDKb9anBSqcTKlI8xxcAqZXQ iJxSnL3Vz/jocx0uKdHu+6fQcjv6KP+CSACLm49ke+BZ9phgGYTOwMe71WL4HAv9XiID kwVh9qycZhcJPREAzrpjLm3p8n0i5p59i647G/RCaOq1ix2BXKwJ+QtwWTV4dRN3+FAl 4UXAr2y3I4IYQ/mDSU5XDG2h/Tw0mBXmIR654Xt7VvE9BDnAO1WUnxbfCZ/HwQLeaDTA tlmMa7mSPnK5DKlRBuEWse4WXvl7z9xHFLdDb+Hi1AGJJcImKe2LpACYQNQ7DqSidVR0 aJNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:spamdiagnosticmetadata:spamdiagnosticoutput:nodisclaimer :user-agent:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=//8a7ohF58PL//FF8uRhPxyDZ9lORhT+TeOF1B79ZTo=; b=vksf7cN0qmyaBrM6MQsQklAJgypgs6bn3djQC/88Mvull9Y/yWJa9xyy+Z/ksHaKVm ykxqTE2JUnjf3ijcBCEysE4h8jUCEwI9o+43nnuFVGX4SMk6goXGk9qI5jBYViQH7JCw 2o+2eOjnVnaCyQO9wXDka6chg8tXI23xgcxxAeG4Y9bHzPkb2LOmSodqnpRF7GHMO3oC CyVg9SkBe4BjcbtWg52El8ibQ5aDMCClPmtucEn9wGWsmijsxO2Bud8Mk7W8GczUuleI B5tRrI4eXbUPDtONfwycNwKHpsQcRbbPD86J70YqCwD5iW7VDudpLsCW8+Pg4VRMER0U yjww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector1-arm-com header.b=ptsGRn8n; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j65si14412576pge.444.2018.12.27.10.17.27; Thu, 27 Dec 2018 10:17:42 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector1-arm-com header.b=ptsGRn8n; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729299AbeL0Gw1 (ORCPT + 99 others); Thu, 27 Dec 2018 01:52:27 -0500 Received: from mail-eopbgr20041.outbound.protection.outlook.com ([40.107.2.41]:44478 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727225AbeL0Gw1 (ORCPT ); Thu, 27 Dec 2018 01:52:27 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=//8a7ohF58PL//FF8uRhPxyDZ9lORhT+TeOF1B79ZTo=; b=ptsGRn8n3VwjW8amV+TAKMCewiyT5KWeUf48mswihzfCsBr6qWe0Aeb2ju1Vc/JlKBuyQqvj46+uOVKpviJ4GSFUjOwL1bEV0nhuErjUhLw2QpRyhXLXAQUEWwSbHCCXSMyMsNlXOA/axRBNCb3IDMz3gj3v93ynw4EdrdklMjo= Received: from AM3PR08MB0611.eurprd08.prod.outlook.com (10.163.188.149) by AM3PR08MB0182.eurprd08.prod.outlook.com (10.161.35.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1471.20; Thu, 27 Dec 2018 06:37:02 +0000 Received: from AM3PR08MB0611.eurprd08.prod.outlook.com ([fe80::3c73:534c:9c6e:352d]) by AM3PR08MB0611.eurprd08.prod.outlook.com ([fe80::3c73:534c:9c6e:352d%2]) with mapi id 15.20.1471.019; Thu, 27 Dec 2018 06:37:02 +0000 From: "james qian wang (Arm Technology China)" To: Liviu Dudau CC: "Jonathan Chai (Arm Technology China)" , Brian Starkey , "Julien Yin (Arm Technology China)" , "thomas Sun (Arm Technology China)" , Alexandru-Cosmin Gheorghe , "Lowry Li (Arm Technology China)" , Ayan Halder , "Tiannan Zhu (Arm Technology China)" , "Jin Gao (Arm Technology China)" , "Yiqi Kang (Arm Technology China)" , nd , "malidp@foss.arm.com" , "maarten.lankhorst@linux.intel.com" , "maxime.ripard@bootlin.com" , "sean@poorly.run" , "corbet@lwn.net" , "linux-doc@vger.kernel.org" , "rdunlap@infradead.org" , "mchehab+samsung@kernel.org" , "davem@davemloft.net" , "gregkh@linuxfoundation.org" , "akpm@linux-foundation.org" , "nicolas.ferre@microchip.com" , "arnd@arndb.de" , "robh+dt@kernel.org" , Mark Rutland , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "airlied@linux.ie" , "yamada.masahiro@socionext.com" Subject: Re: [PATCH v3 1/9] drm/komeda: komeda_dev/pipeline/component definition and initialzation Thread-Topic: [PATCH v3 1/9] drm/komeda: komeda_dev/pipeline/component definition and initialzation Thread-Index: AQHUmRPJAuG+kJeSHE6HuYvOcmM+WA== Date: Thu, 27 Dec 2018 06:37:02 +0000 Message-ID: <20181227063647.GA26908@james-ThinkStation-P300> References: <20181221095757.15510-1-james.qian.wang@arm.com> <20181221095757.15510-2-james.qian.wang@arm.com> <20181224115739.GC22341@e110455-lin.cambridge.arm.com> In-Reply-To: <20181224115739.GC22341@e110455-lin.cambridge.arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mutt/1.9.4 (2018-02-28) x-originating-ip: [113.29.88.7] x-clientproxiedby: SYCPR01CA0037.ausprd01.prod.outlook.com (2603:10c6:10:e::25) To AM3PR08MB0611.eurprd08.prod.outlook.com (2a01:111:e400:c408::21) authentication-results: spf=none (sender IP is ) smtp.mailfrom=james.qian.wang@arm.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;AM3PR08MB0182;6:NA2WVpz7GbrPDM3RSJ6lkazS0oHP9mr1C1/G0NpTzK5fOqjfyuno1oSF9P8zYTcJ8HrPwNObKN3mXPTKnAgrXSDdzBg9l8l0FKEc3hbGZfO0Fs+gExC/RRn5v0BqFHLPpAIVUHHAHNn1c2z2NivKLAjpRAkHqGEqH4SxCl5MxBWcF6rnm8e9R1nS2ujyxx+mCBRnqutnIUpADrgPxft2wcmXK6u99BahrpIXwz1vjWRqZ77RdDuloah1GUUD25y9ZBz6Du4Rq40/yd4Iv0tJ7UkzsZn6nLyQhtQGKGNT1IzqGrmHWtMZlRBN7MnPLR8LRVv4PdP888xsIiOhhPjtFfiKljF44ghDeYcXGw3SpFQzSTfj8X+Ry+PgdnqHKRKFb0Q3hhJlYkNpVGgDuz+75/gqCTH48BoiRvRtGcwU5cCNuCSTF7TjoUczDKwaWdAf1D8UWbeJeP3SQBaCB7ccbg==;5:YUpYW7q9Dp5zsAD4ozGlLwBFxEA+OLCtLrFM+RCmwpH85i3D4MqeuhDl/3Izl4U00zSBdNoSgLAQEyRlwMcXNmB9mZHO9Vwes04qSbVYcEbVM7N04dAkYPIFS4d/OzySZE/lLWvkxdnusUtXdzGmyvJ11VNVDQOeXLuXM/lUJG4=;7:37WV2vmrgNVKvATrL9Wtkn81v/7QcbqypiMPIxyp5WE1xttwop/bE1MNGBS72bGC1zst/39FRajyfsn+SH/xgkDl0oDv+8emmS4XjRvcIEIR9OIEuRV/UBwAnr/U52zBYfRDMpsws6niGp6Fv6HAow== x-ms-office365-filtering-correlation-id: 484b591d-f899-4e4c-0525-08d66bc5b53d x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020);SRVR:AM3PR08MB0182; x-ms-traffictypediagnostic: AM3PR08MB0182: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(3230021)(908002)(999002)(5005026)(6040522)(2401047)(8121501046)(10201501046)(93006095)(93001095)(3231475)(944501520)(52105112)(3002001)(6055026)(6041310)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699051)(76991095);SRVR:AM3PR08MB0182;BCL:0;PCL:0;RULEID:;SRVR:AM3PR08MB0182; x-forefront-prvs: 0899B47777 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(7916004)(366004)(376002)(346002)(39860400002)(396003)(136003)(189003)(199004)(186003)(6116002)(3846002)(6512007)(105586002)(478600001)(8936002)(71190400001)(81166006)(81156014)(8676002)(71200400001)(33656002)(229853002)(2906002)(476003)(97736004)(106356001)(256004)(14454004)(6636002)(99286004)(486006)(14444005)(33716001)(446003)(9686003)(305945005)(7736002)(316002)(4326008)(5660300001)(68736007)(11346002)(86362001)(55236004)(386003)(6506007)(4744004)(102836004)(76176011)(54906003)(53936002)(6486002)(33896004)(66066001)(6246003)(6862004)(26005)(7416002)(1076003)(25786009)(58126008)(53946003)(52116002)(6436002)(18370500001)(21314003)(559001)(579004)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:AM3PR08MB0182;H:AM3PR08MB0611.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: eKeOsyvgnKHFGqPjgTewxOa3OBGJsOXOcTSpYOoMRvEUVCkzwmRsTXBXXDOLickvOIT2sikABgNbxhcJV3c3hvVTUUCb2peb6uLSWFO25JqnfpAOVhYGACzPRX2QPj/KH+yoOJm5r04oYtnxU/ZVSnIYMzwLFZGvd7ps0EIjEpH+8gmd6xsNGgouww9pX2EGMwGQFJ6vPgY5zjGxQVd5LlmIiWUj5hbkyIjn6VoARRON6FINIcLAp7PNKQeJgEOlkawuFrtVgqdrctKjqhlGQF7jmnvLkGMHHSWnXXn14NVxi8yqL3yTmfeBmcx1iLPU spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <5B9B8262D6AE0E4F9E1A8BB1469B1235@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 484b591d-f899-4e4c-0525-08d66bc5b53d X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Dec 2018 06:37:02.4757 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM3PR08MB0182 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gTW9uLCBEZWMgMjQsIDIwMTggYXQgMDc6NTc6NDFQTSArMDgwMCwgTGl2aXUgRHVkYXUgd3Jv dGU6DQo+IE9uIEZyaSwgRGVjIDIxLCAyMDE4IGF0IDA5OjU4OjU1QU0gKzAwMDAsIGphbWVzIHFp YW4gd2FuZyAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIHdyb3RlOg0KPiA+IDEuIEFkZGVkIGEgYnJp ZWYgZGVmaW5pdGlvbiBvZiBrb21lZGFfZGV2L3BpcGVsaW5lL2NvbXBvbmVudCwgdGhpcyBjaGFu Z2UNCj4gPiAgICBkaWRuJ3QgYWRkIHRoZSBkZXRhaWxlZCBjb21wb25lbnQgZmVhdHVyZXMgYW5k IGNhcGFiaWxpdGllcywgd2hpY2ggd2lsbA0KPiA+ICAgIGJlIGFkZGVkIGluIHRoZSBmb2xsb3dp bmcgY2hhbmdlcy4NCj4gPiAyLiBDb3JyZXNwb25kaW5nIHJlc291cmNlcyBkaXNjb3ZlcnkgYW5k IGluaXRpYWx6YXRpb24gZnVuY3Rpb25zLg0KPiA+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IEphbWVz IChRaWFuKSBXYW5nIDxqYW1lcy5xaWFuLndhbmdAYXJtLmNvbT4NCj4gPiANCj4gPiBDaGFuZ2Vz IGluIHYzOg0KPiA+IC0gRml4ZWQgc3R5bGUgcHJvYmxlbSBmb3VuZCBieSBjaGVja3BhdGNoLnBs IC0tc3RyaWN0Lg0KPiA+IA0KPiA+IENoYW5nZXMgaW4gdjI6DQo+ID4gLSBVbmlmaWVkIGFiYnJl dmlhdGlvbiBvZiAicGlwZWxpbmUiIHRvICJwaXBlIi4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9n cHUvZHJtL2FybS9LY29uZmlnICAgICAgICAgICAgICAgICAgIHwgICAyICsNCj4gPiAgZHJpdmVy cy9ncHUvZHJtL2FybS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgICAxICsNCj4gPiAgZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L0tidWlsZCAgICAgICAgICAgIHwgICAzICsNCj4gPiAg ZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L0tjb25maWcgICAgICAgICAgIHwgIDE0ICsNCj4g PiAgLi4uL2RybS9hcm0vZGlzcGxheS9pbmNsdWRlL21hbGlkcF9wcm9kdWN0LmggIHwgIDIzICsr DQo+ID4gIC4uLi9kcm0vYXJtL2Rpc3BsYXkvaW5jbHVkZS9tYWxpZHBfdXRpbHMuaCAgICB8ICAx NiArDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUgICB8 ICAxMSArDQo+ID4gIC4uLi9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZGV2LmMg ICB8IDExNyArKysrKysNCj4gPiAgLi4uL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVk YV9kZXYuaCAgIHwgIDk4ICsrKysrDQo+ID4gIC4uLi9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tv bWVkYV9waXBlbGluZS5jICB8IDE5OCArKysrKysrKysrDQo+ID4gIC4uLi9kcm0vYXJtL2Rpc3Bs YXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oICB8IDM1MCArKysrKysrKysrKysrKysrKysNCj4g PiAgMTEgZmlsZXMgY2hhbmdlZCwgODMzIGluc2VydGlvbnMoKykNCj4gPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9LYnVpbGQNCj4gPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9LY29uZmlnDQo+ID4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvaW5jbHVkZS9tYWxpZHBf cHJvZHVjdC5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rp c3BsYXkvaW5jbHVkZS9tYWxpZHBfdXRpbHMuaA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9NYWtlZmlsZQ0KPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZGV2LmMN Cj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21l ZGEva29tZWRhX2Rldi5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v YXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5o DQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vS2NvbmZpZyBiL2Ry aXZlcnMvZ3B1L2RybS9hcm0vS2NvbmZpZw0KPiA+IGluZGV4IGY5Zjc3NjFjYjJmNC4uYTIwNDEw M2IzZWZiIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vS2NvbmZpZw0KPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vS2NvbmZpZw0KPiA+IEBAIC0zNyw0ICszNyw2IEBA IGNvbmZpZyBEUk1fTUFMSV9ESVNQTEFZDQo+ID4gIA0KPiA+ICAJICBJZiBjb21waWxlZCBhcyBh IG1vZHVsZSBpdCB3aWxsIGJlIGNhbGxlZCBtYWxpLWRwLg0KPiA+ICANCj4gPiArc291cmNlICJk cml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvS2NvbmZpZyINCj4gPiArDQo+ID4gIGVuZG1lbnUN Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9NYWtlZmlsZSBiL2RyaXZlcnMv Z3B1L2RybS9hcm0vTWFrZWZpbGUNCj4gPiBpbmRleCAzYmYzMWQxYTQ3MjIuLjEyMGJlZjgwMWZj ZiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJtL01ha2VmaWxlDQo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2FybS9NYWtlZmlsZQ0KPiA+IEBAIC0zLDMgKzMsNCBAQCBvYmot JChDT05GSUdfRFJNX0hETENEKQkrPSBoZGxjZC5vDQo+ID4gIG1hbGktZHAteSA6PSBtYWxpZHBf ZHJ2Lm8gbWFsaWRwX2h3Lm8gbWFsaWRwX3BsYW5lcy5vIG1hbGlkcF9jcnRjLm8NCj4gPiAgbWFs aS1kcC15ICs9IG1hbGlkcF9tdy5vDQo+ID4gIG9iai0kKENPTkZJR19EUk1fTUFMSV9ESVNQTEFZ KQkrPSBtYWxpLWRwLm8NCj4gPiArb2JqLSQoQ09ORklHX0RSTV9LT01FREEpICs9IGRpc3BsYXkv DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9LYnVpbGQgYi9k cml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvS2J1aWxkDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjM4MmYxY2E4MzFlNA0KPiA+IC0tLSAvZGV2L251 bGwNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvS2J1aWxkDQo+ID4gQEAg LTAsMCArMSwzIEBADQo+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4g PiArDQo+ID4gK29iai0kKENPTkZJR19EUk1fS09NRURBKSArPSBrb21lZGEvDQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9LY29uZmlnIGIvZHJpdmVycy9ncHUv ZHJtL2FybS9kaXNwbGF5L0tjb25maWcNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uY2VjMDYzOWUzYWExDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9LY29uZmlnDQo+ID4gQEAgLTAsMCArMSwx NCBAQA0KPiA+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ID4gK2NvbmZp ZyBEUk1fS09NRURBDQo+ID4gKwl0cmlzdGF0ZSAiQVJNIEtvbWVkYSBkaXNwbGF5IGRyaXZlciIN Cj4gPiArCWRlcGVuZHMgb24gRFJNICYmIE9GDQo+ID4gKwlkZXBlbmRzIG9uIENPTU1PTl9DTEsN Cj4gPiArCXNlbGVjdCBEUk1fS01TX0hFTFBFUg0KPiA+ICsJc2VsZWN0IERSTV9LTVNfQ01BX0hF TFBFUg0KPiA+ICsJc2VsZWN0IERSTV9HRU1fQ01BX0hFTFBFUg0KPiA+ICsJc2VsZWN0IFZJREVP TU9ERV9IRUxQRVJTDQo+ID4gKwloZWxwDQo+ID4gKwkgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5 b3Ugd2FudCB0byBjb21waWxlIHRoZSBBUk0gS29tZWRhIGRpc3BsYXkNCj4gPiArCSAgUHJvY2Vz c29yIGRyaXZlci4gSXQgc3VwcG9ydHMgdGhlIEQ3MSB2YXJpYW50cyBvZiB0aGUgaGFyZHdhcmUu DQo+ID4gKw0KPiA+ICsJICBJZiBjb21waWxlZCBhcyBhIG1vZHVsZSBpdCB3aWxsIGJlIGNhbGxl ZCBrb21lZGEuDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9p bmNsdWRlL21hbGlkcF9wcm9kdWN0LmggYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvaW5j bHVkZS9tYWxpZHBfcHJvZHVjdC5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRl eCAwMDAwMDAwMDAwMDAuLmIzNWZjNWRiODY2Yg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvaW5jbHVkZS9tYWxpZHBfcHJvZHVjdC5oDQo+ ID4gQEAgLTAsMCArMSwyMyBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMCAqLw0KPiA+ICsvKg0KPiA+ICsgKiAoQykgQ09QWVJJR0hUIDIwMTggQVJNIExpbWl0ZWQu IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxq YW1lcy5xaWFuLndhbmdAYXJtLmNvbT4NCj4gPiArICoNCj4gPiArICovDQo+ID4gKyNpZm5kZWYg X01BTElEUF9QUk9EVUNUX0hfDQo+ID4gKyNkZWZpbmUgX01BTElEUF9QUk9EVUNUX0hfDQo+ID4g Kw0KPiA+ICsvKiBQcm9kdWN0IGlkZW50aWZpY2F0aW9uICovDQo+ID4gKyNkZWZpbmUgTUFMSURQ X0NPUkVfSUQoX19wcm9kdWN0LCBfX21ham9yLCBfX21pbm9yLCBfX3N0YXR1cykgXA0KPiA+ICsJ KCgoKF9fcHJvZHVjdCkgJiAweEZGRkYpIDw8IDE2KSB8ICgoKF9fbWFqb3IpICYgMHhGKSA8PCAx MikgfCBcDQo+ID4gKwkoKChfX21pbm9yKSAmIDB4RikgPDwgOCkgfCAoKF9fc3RhdHVzKSAmIDB4 RkYpKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBNQUxJRFBfQ09SRV9JRF9QUk9EVUNUX0lEKF9fY29y ZV9pZCkgKChfX3UzMikoX19jb3JlX2lkKSA+PiAxNikNCj4gPiArI2RlZmluZSBNQUxJRFBfQ09S RV9JRF9NQUpPUihfX2NvcmVfaWQpICAgICAgKCgoX191MzIpKF9fY29yZV9pZCkgPj4gMTIpICYg MHhGKQ0KPiA+ICsjZGVmaW5lIE1BTElEUF9DT1JFX0lEX01JTk9SKF9fY29yZV9pZCkgICAgICAo KChfX3UzMikoX19jb3JlX2lkKSA+PiA4KSAmIDB4RikNCj4gPiArI2RlZmluZSBNQUxJRFBfQ09S RV9JRF9TVEFUVVMoX19jb3JlX2lkKSAgICAgKCgoX191MzIpKF9fY29yZV9pZCkpICYgMHhGRikN Cj4gPiArDQo+ID4gKy8qIE1hbGktZGlzcGxheSBwcm9kdWN0IElEcyAqLw0KPiA+ICsjZGVmaW5l IE1BTElEUF9ENzFfUFJPRFVDVF9JRCAgIDB4MDA3MQ0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIF9N QUxJRFBfUFJPRFVDVF9IXyAqLw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJt L2Rpc3BsYXkvaW5jbHVkZS9tYWxpZHBfdXRpbHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlz cGxheS9pbmNsdWRlL21hbGlkcF91dGlscy5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g PiBpbmRleCAwMDAwMDAwMDAwMDAuLjYzY2M0N2NlZmNmOA0KPiA+IC0tLSAvZGV2L251bGwNCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvaW5jbHVkZS9tYWxpZHBfdXRpbHMu aA0KPiA+IEBAIC0wLDAgKzEsMTYgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgKi8NCj4gPiArLyoNCj4gPiArICogKEMpIENPUFlSSUdIVCAyMDE4IEFSTSBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICsgKiBBdXRob3I6IEphbWVzLlFpYW4uV2Fu ZyA8amFtZXMucWlhbi53YW5nQGFybS5jb20+DQo+ID4gKyAqDQo+ID4gKyAqLw0KPiA+ICsjaWZu ZGVmIF9NQUxJRFBfVVRJTFNfDQo+ID4gKyNkZWZpbmUgX01BTElEUF9VVElMU18NCj4gPiArDQo+ ID4gKyNkZWZpbmUgaGFzX2JpdChuciwgbWFzaykJKEJJVChucikgJiAobWFzaykpDQo+ID4gKyNk ZWZpbmUgaGFzX2JpdHMoYml0cywgbWFzaykJKCgoYml0cykgJiAobWFzaykpID09IChiaXRzKSkN Cj4gPiArDQo+ID4gKyNkZWZpbmUgZHBfZm9yX2VhY2hfc2V0X2JpdChiaXQsIG1hc2spIFwNCj4g PiArCWZvcl9lYWNoX3NldF9iaXQoKGJpdCksICgodW5zaWduZWQgbG9uZyAqKSYobWFzaykpLCBz aXplb2YobWFzaykgKiA4KQ0KPiANCj4gR2l2ZW4gdGhhdCBtb3N0IG9mIG91ciByZWdpc3RlcnMg KGFuZCBtYXNrcywgYnkgZXh0ZW5zaW9uKSBhcmUgMzJiaXQsIEkNCj4gdGhpbmsgaXQgbWlnaHQg YmUgYmV0dGVyIHRvIHVzZSAzMiBpbnN0ZWFkIG9mIHNpemVvZihtYXNrKSAqIDggYXMgd2UNCj4g ZG9uJ3Qgd2FudCB0byBpbnRyb2R1Y2Ugc3VidGxlIGJ1Z3MgaW4gdGhlIGZ1dHVyZS4gQW5kIEkg ZG9uJ3QgdGhpbmsgeW91DQo+IG5lZWQgdGhlICh1bnNpZ25lZCBsb25nICopIGNhc3QgZWl0aGVy Lg0KPg0KDQpTb3JyeSwgVGhpcyBNQUNSTyBpcyBub3Qgb25seSBmb3IgdGhlIHJlZ2lzdGVycywg YnV0IHdoaWNoIGlzIG1haW5seSB1c2VkDQpieSB0aGUgS29tZWRhLUNPUkUgZm9yIGl0ZXJhdGlu ZyBwaXBlbGluZSBjb21wb25lbnRzIGJ5IG1hc2sgKDMyYml0KSwgb3INCml0ZXJhdGluZyBhY3Rp dmVfaW5wdXRzICgxNmJpdCkgb2YgYSBjb21wb25lbnQsIG1heWJlIGFsc28gd2lsbCBiZSB1c2Vk IGJ5DQp0aGUgZXZlbnQvaXJxIGhhbmRsaW5nLCBrb21lZGEgZXZlbnQgd2lsbCBiZSA2NGJpdCB2 YWx1ZSBldmVyeSBiaXQgd2lsbA0KaW5kaWNhdGUgYSBzZXBlcmF0ZWQgZXZlbnQgb3IgZXJyb3Iu DQoNCj4gPiArDQo+ID4gKyNlbmRpZiAvKiBfTUFMSURQX1VUSUxTXyAqLw0KPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL01ha2VmaWxlIGIvZHJpdmVy cy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9NYWtlZmlsZQ0KPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi41YjQ0ZTM2NTA5YjENCj4gPiAtLS0gL2Rl di9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9NYWtl ZmlsZQ0KPiA+IEBAIC0wLDAgKzEsMTEgQEANCj4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMA0KPiA+ICsNCj4gPiArY2NmbGFncy15IDo9IFwNCj4gPiArCS1JJChzcmMpLy4u L2luY2x1ZGUgXA0KPiA+ICsJLUkkKHNyYykNCj4gPiArDQo+ID4gK2tvbWVkYS15IDo9IFwNCj4g PiArCWtvbWVkYV9kZXYubyBcDQo+ID4gKwlrb21lZGFfcGlwZWxpbmUubyBcDQo+ID4gKw0KPiA+ ICtvYmotJChDT05GSUdfRFJNX0tPTUVEQSkgKz0ga29tZWRhLm8NCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZGV2LmMgYi9kcml2ZXJz L2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9kZXYuYw0KPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi44ODdhMTcwMDUzNjcNCj4gPiAtLS0g L2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9r b21lZGFfZGV2LmMNCj4gPiBAQCAtMCwwICsxLDExNyBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ICsvKg0KPiA+ICsgKiAoQykgQ09QWVJJR0hUIDIwMTgg QVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gKyAqIEF1dGhvcjogSmFtZXMu UWlhbi5XYW5nIDxqYW1lcy5xaWFuLndhbmdAYXJtLmNvbT4NCj4gPiArICoNCj4gPiArICovDQo+ ID4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4gPiArI2luY2x1ZGUgPGxp bnV4L2Nsay5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4NCj4gPiArI2luY2x1ZGUgPGxp bnV4L29mX2RldmljZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4NCj4gPiAr I2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4NCj4gPiArI2luY2x1ZGUgImtvbWVkYV9kZXYuaCIN Cj4gPiArDQo+ID4gK3N0cnVjdCBrb21lZGFfZGV2ICprb21lZGFfZGV2X2NyZWF0ZShzdHJ1Y3Qg ZGV2aWNlICpkZXYpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYg PSB0b19wbGF0Zm9ybV9kZXZpY2UoZGV2KTsNCj4gPiArCWNvbnN0IHN0cnVjdCBrb21lZGFfcHJv ZHVjdF9kYXRhICpwcm9kdWN0Ow0KPiA+ICsJc3RydWN0IGtvbWVkYV9kZXYgKm1kZXY7DQo+ID4g KwlzdHJ1Y3QgcmVzb3VyY2UgKmlvX3JlczsNCj4gPiArCWludCBlcnIgPSAwOw0KPiA+ICsNCj4g PiArCXByb2R1Y3QgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsNCj4gPiArCWlmICgh cHJvZHVjdCkNCj4gPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsNCj4gPiArDQo+ID4gKwlp b19yZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOw0K PiA+ICsJaWYgKCFpb19yZXMpIHsNCj4gPiArCQlEUk1fRVJST1IoIk5vIHJlZ2lzdGVycyBkZWZp bmVkLlxuIik7DQo+ID4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJbWRldiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqbWRldiksIEdGUF9LRVJO RUwpOw0KPiA+ICsJaWYgKCFtZGV2KQ0KPiA+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOw0K PiA+ICsNCj4gPiArCW1kZXYtPmRldiA9IGRldjsNCj4gPiArCW1kZXYtPnJlZ19iYXNlID0gZGV2 bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgaW9fcmVzKTsNCj4gPiArCWlmIChJU19FUlIobWRldi0+ cmVnX2Jhc2UpKSB7DQo+ID4gKwkJRFJNX0VSUk9SKCJNYXAgcmVnaXN0ZXIgc3BhY2UgZmFpbGVk LlxuIik7DQo+ID4gKwkJZXJyID0gUFRSX0VSUihtZGV2LT5yZWdfYmFzZSk7DQo+ID4gKwkJbWRl di0+cmVnX2Jhc2UgPSBOVUxMOw0KPiA+ICsJCWdvdG8gZXJyX2NsZWFudXA7DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICsJbWRldi0+cGNsayA9IGRldm1fY2xrX2dldChkZXYsICJwY2xrIik7DQo+ID4g KwlpZiAoSVNfRVJSKG1kZXYtPnBjbGspKSB7DQo+ID4gKwkJRFJNX0VSUk9SKCJHZXQgQVBCIGNs ayBmYWlsZWQuXG4iKTsNCj4gPiArCQllcnIgPSBQVFJfRVJSKG1kZXYtPnBjbGspOw0KPiA+ICsJ CW1kZXYtPnBjbGsgPSBOVUxMOw0KPiA+ICsJCWdvdG8gZXJyX2NsZWFudXA7DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICsJLyogRW5hYmxlIEFQQiBjbG9jayB0byBhY2Nlc3MgdGhlIHJlZ2lzdGVycyAq Lw0KPiA+ICsJY2xrX3ByZXBhcmVfZW5hYmxlKG1kZXYtPnBjbGspOw0KPiA+ICsNCj4gPiArCW1k ZXYtPmZ1bmNzID0gcHJvZHVjdC0+aWRlbnRpZnkobWRldi0+cmVnX2Jhc2UsICZtZGV2LT5jaGlw KTsNCj4gPiArCWlmICgha29tZWRhX3Byb2R1Y3RfbWF0Y2gobWRldiwgcHJvZHVjdC0+cHJvZHVj dF9pZCkpIHsNCj4gPiArCQlEUk1fRVJST1IoIkRUIGNvbmZpZ3VyZWQgJXggbWlzbWF0Y2ggd2l0 aCByZWFsIEhXICV4LlxuIiwNCj4gPiArCQkJICBwcm9kdWN0LT5wcm9kdWN0X2lkLA0KPiA+ICsJ CQkgIE1BTElEUF9DT1JFX0lEX1BST0RVQ1RfSUQobWRldi0+Y2hpcC5jb3JlX2lkKSk7DQo+ID4g KwkJZXJyID0gLUVOT0RFVjsNCj4gPiArCQlnb3RvIGVycl9jbGVhbnVwOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCURSTV9JTkZPKCJGb3VuZCBBUk0gTWFsaS1EJXggdmVyc2lvbiByJWRwJWRcbiIs DQo+ID4gKwkJIE1BTElEUF9DT1JFX0lEX1BST0RVQ1RfSUQobWRldi0+Y2hpcC5jb3JlX2lkKSwN Cj4gPiArCQkgTUFMSURQX0NPUkVfSURfTUFKT1IobWRldi0+Y2hpcC5jb3JlX2lkKSwNCj4gPiAr CQkgTUFMSURQX0NPUkVfSURfTUlOT1IobWRldi0+Y2hpcC5jb3JlX2lkKSk7DQo+ID4gKw0KPiA+ ICsJZXJyID0gbWRldi0+ZnVuY3MtPmVudW1fcmVzb3VyY2VzKG1kZXYpOw0KPiA+ICsJaWYgKGVy cikgew0KPiA+ICsJCURSTV9FUlJPUigiZW51bWVyYXRlIGRpc3BsYXkgcmVzb3VyY2UgZmFpbGVk LlxuIik7DQo+ID4gKwkJZ290byBlcnJfY2xlYW51cDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwly ZXR1cm4gbWRldjsNCj4gPiArDQo+ID4gK2Vycl9jbGVhbnVwOg0KPiA+ICsJa29tZWRhX2Rldl9k ZXN0cm95KG1kZXYpOw0KPiA+ICsJcmV0dXJuIEVSUl9QVFIoZXJyKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArdm9pZCBrb21lZGFfZGV2X2Rlc3Ryb3koc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpDQo+ ID4gK3sNCj4gPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IG1kZXYtPmRldjsNCj4gPiArCXN0cnVj dCBrb21lZGFfZGV2X2Z1bmNzICpmdW5jcyA9IG1kZXYtPmZ1bmNzOw0KPiA+ICsJaW50IGk7DQo+ ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IG1kZXYtPm5fcGlwZWxpbmVzOyBpKyspIHsNCj4g PiArCQlrb21lZGFfcGlwZWxpbmVfZGVzdHJveShtZGV2LCBtZGV2LT5waXBlbGluZXNbaV0pOw0K PiA+ICsJCW1kZXYtPnBpcGVsaW5lc1tpXSA9IE5VTEw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJ bWRldi0+bl9waXBlbGluZXMgPSAwOw0KPiA+ICsNCj4gPiArCWlmIChmdW5jcyAmJiBmdW5jcy0+ Y2xlYW51cCkNCj4gPiArCQlmdW5jcy0+Y2xlYW51cChtZGV2KTsNCj4gPiArDQo+ID4gKwlpZiAo bWRldi0+cmVnX2Jhc2UpIHsNCj4gPiArCQlkZXZtX2lvdW5tYXAoZGV2LCBtZGV2LT5yZWdfYmFz ZSk7DQo+ID4gKwkJbWRldi0+cmVnX2Jhc2UgPSBOVUxMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr CWlmIChtZGV2LT5tY2xrKSB7DQo+ID4gKwkJZGV2bV9jbGtfcHV0KGRldiwgbWRldi0+bWNsayk7 DQo+ID4gKwkJbWRldi0+bWNsayA9IE5VTEw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKG1k ZXYtPnBjbGspIHsNCj4gPiArCQljbGtfZGlzYWJsZV91bnByZXBhcmUobWRldi0+cGNsayk7DQo+ ID4gKwkJZGV2bV9jbGtfcHV0KGRldiwgbWRldi0+cGNsayk7DQo+ID4gKwkJbWRldi0+cGNsayA9 IE5VTEw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZGV2bV9rZnJlZShkZXYsIG1kZXYpOw0KPiA+ ICt9DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEv a29tZWRhX2Rldi5oIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFf ZGV2LmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4u YWQ4ZmExNjBlZmY5DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Rldi5oDQo+ID4gQEAgLTAsMCArMSw5OCBAQA0K PiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KPiA+ICsvKg0KPiA+ ICsgKiAoQykgQ09QWVJJR0hUIDIwMTggQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ID4gKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxqYW1lcy5xaWFuLndhbmdAYXJtLmNv bT4NCj4gPiArICoNCj4gPiArICovDQo+ID4gKyNpZm5kZWYgX0tPTUVEQV9ERVZfSF8NCj4gPiAr I2RlZmluZSBfS09NRURBX0RFVl9IXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L2Rldmlj ZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+DQo+IA0KPiBZb3UgZG9uJ3Qg bmVlZCB0aGlzIGhlYWRlciB0byBiZSBpbmNsdWRlZCBoZXJlLg0KDQpPSy4NCg0KPiANCj4gPiAr I2luY2x1ZGUgImtvbWVkYV9waXBlbGluZS5oIg0KPiA+ICsjaW5jbHVkZSAibWFsaWRwX3Byb2R1 Y3QuaCINCj4gPiArDQo+ID4gKy8qIG1hbGlkcCBkZXZpY2UgaWQgKi8NCj4gPiArZW51bSB7DQo+ ID4gKwlNQUxJX0Q3MSA9IDAsDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKiBwaXBlbGluZSBEVCBw b3J0cyAqLw0KPiA+ICtlbnVtIHsNCj4gPiArCUtPTUVEQV9PRl9QT1JUX09VVFBVVAkJPSAwLA0K PiA+ICsJS09NRURBX09GX1BPUlRfQ09QUk9DCQk9IDEsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtz dHJ1Y3Qga29tZWRhX2NoaXBfaW5mbyB7DQo+ID4gKwl1MzIgYXJjaF9pZDsNCj4gPiArCXUzMiBj b3JlX2lkOw0KPiA+ICsJdTMyIGNvcmVfaW5mbzsNCj4gPiArCXUzMiBidXNfd2lkdGg7DQo+ID4g K307DQo+ID4gKw0KPiA+ICtzdHJ1Y3Qga29tZWRhX3Byb2R1Y3RfZGF0YSB7DQo+ID4gKwl1MzIg cHJvZHVjdF9pZDsNCj4gPiArCXN0cnVjdCBrb21lZGFfZGV2X2Z1bmNzICooKmlkZW50aWZ5KSh1 MzIgX19pb21lbSAqcmVnLA0KPiA+ICsJCQkJCSAgICAgc3RydWN0IGtvbWVkYV9jaGlwX2luZm8g KmluZm8pOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGtvbWVkYV9kZXY7DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogc3RydWN0IGtvbWVkYV9kZXZfZnVuY3MNCj4gPiArICoNCj4gPiAr ICogU3VwcGxpZWQgYnkgY2hpcCBsZXZlbCBhbmQgcmV0dXJuZWQgYnkgdGhlIGNoaXAgZW50cnkg ZnVuY3Rpb24geHh4X2lkZW50aWZ5LA0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGtvbWVkYV9kZXZf ZnVuY3Mgew0KPiA+ICsJLyoqDQo+ID4gKwkgKiBAZW51bV9yZXNvdXJjZXM6DQo+ID4gKwkgKg0K PiA+ICsJICogZm9yIENISVAgdG8gcmVwb3J0IG9yIGFkZCBwaXBlbGluZSBhbmQgY29tcG9uZW50 IHJlc291cmNlcyB0byBDT1JFDQo+ID4gKwkgKi8NCj4gPiArCWludCAoKmVudW1fcmVzb3VyY2Vz KShzdHJ1Y3Qga29tZWRhX2RldiAqbWRldik7DQo+ID4gKwkvKiogQGNsZWFudXA6IGNhbGwgdG8g Y2hpcCB0byBjbGVhbnVwIGtvbWVkYV9kZXYtPmNoaXAgZGF0YSAqLw0KPiA+ICsJdm9pZCAoKmNs ZWFudXApKHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KTsNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgKiBzdHJ1Y3Qga29tZWRhX2Rldg0KPiA+ICsgKg0KPiA+ICsgKiBQaXBlbGluZSBh bmQgY29tcG9uZW50IGFyZSB1c2VkIHRvIGRlc2NyaWJlIGhvdyB0byBoYW5kbGUgdGhlIHBpeGVs IGRhdGEuDQo+ID4gKyAqIGtvbWVkYV9kZXZpY2UgaXMgZm9yIGRlc2NyaWJpbmcgdGhlIHdob2xl IHZpZXcgb2YgdGhlIGRldmljZSwgYW5kIHRoZQ0KPiA+ICsgKiBjb250cm9sLWFiaWxpdGVzIG9m IGRldmljZS4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBrb21lZGFfZGV2IHsNCj4gPiArCXN0cnVj dCBkZXZpY2UgKmRldjsNCj4gPiArCXUzMiBfX2lvbWVtICAgKnJlZ19iYXNlOw0KPiA+ICsNCj4g PiArCXN0cnVjdCBrb21lZGFfY2hpcF9pbmZvIGNoaXA7DQo+ID4gKw0KPiA+ICsJLyoqIEBwY2xr OiBBUEIgY2xvY2sgZm9yIHJlZ2lzdGVyIGFjY2VzcyAqLw0KPiA+ICsJc3RydWN0IGNsayAqcGNs azsNCj4gPiArCS8qKiBAbWNrOiBIVyBtYWluIGVuZ2luZSBjbGsgKi8NCj4gPiArCXN0cnVjdCBj bGsgKm1jbGs7DQo+ID4gKw0KPiA+ICsJaW50IG5fcGlwZWxpbmVzOw0KPiA+ICsJc3RydWN0IGtv bWVkYV9waXBlbGluZSAqcGlwZWxpbmVzW0tPTUVEQV9NQVhfUElQRUxJTkVTXTsNCj4gPiArDQo+ ID4gKwkvKiogQGZ1bmNzOiBjaGlwIGZ1bmNzIHRvIGFjY2VzcyB0byBIVyAqLw0KPiA+ICsJc3Ry dWN0IGtvbWVkYV9kZXZfZnVuY3MgKmZ1bmNzOw0KPiA+ICsJLyoqDQo+ID4gKwkgKiBAY2hpcF9k YXRhOg0KPiA+ICsJICoNCj4gPiArCSAqIGNoaXAgZGF0YSB3aWxsIGJlIGFkZGVkIGJ5ICZrb21l ZGFfZGV2X2Z1bmNzLmVudW1fcmVzb3VyY2VzKCkgYW5kDQo+ID4gKwkgKiBkZXN0cm95ZWQgYnkg JmtvbWVkYV9kZXZfZnVuY3MuY2xlYW51cCgpDQo+ID4gKwkgKi8NCj4gPiArCXZvaWQgKmNoaXBf ZGF0YTsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBpbmxpbmUgYm9vbA0KPiA+ICtrb21l ZGFfcHJvZHVjdF9tYXRjaChzdHJ1Y3Qga29tZWRhX2RldiAqbWRldiwgdTMyIHRhcmdldCkNCj4g PiArew0KPiA+ICsJcmV0dXJuIE1BTElEUF9DT1JFX0lEX1BST0RVQ1RfSUQobWRldi0+Y2hpcC5j b3JlX2lkKSA9PSB0YXJnZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0cnVjdCBrb21lZGFfZGV2 ICprb21lZGFfZGV2X2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYpOw0KPiA+ICt2b2lkIGtvbWVk YV9kZXZfZGVzdHJveShzdHJ1Y3Qga29tZWRhX2RldiAqbWRldik7DQo+ID4gKw0KPiA+ICsjZW5k aWYgLypfS09NRURBX0RFVl9IXyovDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h cm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVsaW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJt L2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjkyOTM1OThiMDUzMw0KPiA+IC0tLSAvZGV2L251 bGwNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9w aXBlbGluZS5jDQo+ID4gQEAgLTAsMCArMSwxOTggQEANCj4gPiArLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjANCj4gPiArLyoNCj4gPiArICogKEMpIENPUFlSSUdIVCAyMDE4IEFS TSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICsgKiBBdXRob3I6IEphbWVzLlFp YW4uV2FuZyA8amFtZXMucWlhbi53YW5nQGFybS5jb20+DQo+ID4gKyAqDQo+ID4gKyAqLw0KPiA+ ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+ID4gKyNpbmNsdWRlICJrb21lZGFfZGV2LmgiDQo+ ID4gKyNpbmNsdWRlICJrb21lZGFfcGlwZWxpbmUuaCINCj4gPiArDQo+ID4gKy8qKiBrb21lZGFf cGlwZWxpbmVfYWRkIC0gQWRkIGEgcGlwZWxpbmUgdG8gJmtvbWVkYV9kZXYgKi8NCj4gPiArc3Ry dWN0IGtvbWVkYV9waXBlbGluZSAqDQo+ID4gK2tvbWVkYV9waXBlbGluZV9hZGQoc3RydWN0IGtv bWVkYV9kZXYgKm1kZXYsIHNpemVfdCBzaXplLA0KPiA+ICsJCSAgICBzdHJ1Y3Qga29tZWRhX3Bp cGVsaW5lX2Z1bmNzICpmdW5jcykNCj4gPiArew0KPiA+ICsJc3RydWN0IGtvbWVkYV9waXBlbGlu ZSAqcGlwZTsNCj4gPiArDQo+ID4gKwlpZiAobWRldi0+bl9waXBlbGluZXMgKyAxID4gS09NRURB X01BWF9QSVBFTElORVMpIHsNCj4gPiArCQlEUk1fRVJST1IoIkV4Y2VlZCBtYXggc3VwcG9ydCAl ZCBwaXBlbGluZXMuXG4iLA0KPiA+ICsJCQkgIEtPTUVEQV9NQVhfUElQRUxJTkVTKTsNCj4gPiAr CQlyZXR1cm4gTlVMTDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAoc2l6ZSA8IHNpemVvZigq cGlwZSkpIHsNCj4gPiArCQlEUk1fRVJST1IoIlJlcXVlc3QgcGlwZWxpbmUgc2l6ZSB0b28gc21h bGwuXG4iKTsNCj4gPiArCQlyZXR1cm4gTlVMTDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlwaXBl ID0gZGV2bV9remFsbG9jKG1kZXYtPmRldiwgc2l6ZSwgR0ZQX0tFUk5FTCk7DQo+ID4gKwlpZiAo IXBpcGUpDQo+ID4gKwkJcmV0dXJuIE5VTEw7DQo+ID4gKw0KPiA+ICsJcGlwZS0+bWRldiA9IG1k ZXY7DQo+ID4gKwlwaXBlLT5pZCAgID0gbWRldi0+bl9waXBlbGluZXM7DQo+ID4gKwlwaXBlLT5m dW5jcyA9IGZ1bmNzOw0KPiA+ICsNCj4gPiArCW1kZXYtPnBpcGVsaW5lc1ttZGV2LT5uX3BpcGVs aW5lc10gPSBwaXBlOw0KPiA+ICsJbWRldi0+bl9waXBlbGluZXMrKzsNCj4gPiArDQo+ID4gKwly ZXR1cm4gcGlwZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9pZCBrb21lZGFfcGlwZWxpbmVfZGVz dHJveShzdHJ1Y3Qga29tZWRhX2RldiAqbWRldiwNCj4gPiArCQkJICAgICBzdHJ1Y3Qga29tZWRh X3BpcGVsaW5lICpwaXBlKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAq YzsNCj4gPiArCWludCBpOw0KPiA+ICsNCj4gPiArCWRwX2Zvcl9lYWNoX3NldF9iaXQoaSwgcGlw ZS0+YXZhaWxfY29tcHMpIHsNCj4gPiArCQljID0ga29tZWRhX3BpcGVsaW5lX2dldF9jb21wb25l bnQocGlwZSwgaSk7DQo+ID4gKw0KPiANCj4gVW5uZWNlc3NhcnkgZW1wdHkgbGluZQ0KPiANCg0K T0ssIHdpbGwgZGVsIGl0Lg0KDQo+ID4gKwkJa29tZWRhX2NvbXBvbmVudF9kZXN0cm95KG1kZXYs IGMpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWNsa19wdXQocGlwZS0+cHhsY2xrKTsNCj4gPiAr CWNsa19wdXQocGlwZS0+YWNsayk7DQo+ID4gKw0KPiA+ICsJZGV2bV9rZnJlZShtZGV2LT5kZXYs IHBpcGUpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqKg0K PiA+ICtrb21lZGFfcGlwZWxpbmVfZ2V0X2NvbXBvbmVudF9wb3Moc3RydWN0IGtvbWVkYV9waXBl bGluZSAqcGlwZSwgaW50IGlkKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3Qga29tZWRhX2RldiAqbWRl diA9IHBpcGUtPm1kZXY7DQo+ID4gKwlzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICp0ZW1wID0gTlVM TDsNCj4gPiArCXN0cnVjdCBrb21lZGFfY29tcG9uZW50ICoqcG9zID0gTlVMTDsNCj4gPiArDQo+ ID4gKwlzd2l0Y2ggKGlkKSB7DQo+ID4gKwljYXNlIEtPTUVEQV9DT01QT05FTlRfTEFZRVIwOg0K PiA+ICsJY2FzZSBLT01FREFfQ09NUE9ORU5UX0xBWUVSMToNCj4gPiArCWNhc2UgS09NRURBX0NP TVBPTkVOVF9MQVlFUjI6DQo+ID4gKwljYXNlIEtPTUVEQV9DT01QT05FTlRfTEFZRVIzOg0KPiA+ ICsJCXBvcyA9IHRvX2Nwb3MocGlwZS0+bGF5ZXJzW2lkIC0gS09NRURBX0NPTVBPTkVOVF9MQVlF UjBdKTsNCj4gPiArCQlicmVhazsNCj4gPiArCWNhc2UgS09NRURBX0NPTVBPTkVOVF9XQl9MQVlF UjoNCj4gPiArCQlwb3MgPSB0b19jcG9zKHBpcGUtPndiX2xheWVyKTsNCj4gPiArCQlicmVhazsN Cj4gPiArCWNhc2UgS09NRURBX0NPTVBPTkVOVF9DT01QSVowOg0KPiA+ICsJY2FzZSBLT01FREFf Q09NUE9ORU5UX0NPTVBJWjE6DQo+ID4gKwkJdGVtcCA9IG1kZXYtPnBpcGVsaW5lc1tpZCAtIEtP TUVEQV9DT01QT05FTlRfQ09NUElaMF07DQo+ID4gKwkJaWYgKCF0ZW1wKSB7DQo+ID4gKwkJCURS TV9FUlJPUigiY29tcGl6LSVkIGRvZXNuJ3QgZXhpc3QuXG4iLCBpZCk7DQo+ID4gKwkJCXJldHVy biBOVUxMOw0KPiA+ICsJCX0NCj4gPiArCQlwb3MgPSB0b19jcG9zKHRlbXAtPmNvbXBpeik7DQo+ ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIEtPTUVEQV9DT01QT05FTlRfU0NBTEVSMDoNCj4gPiAr CWNhc2UgS09NRURBX0NPTVBPTkVOVF9TQ0FMRVIxOg0KPiA+ICsJCXBvcyA9IHRvX2Nwb3MocGlw ZS0+c2NhbGVyc1tpZCAtIEtPTUVEQV9DT01QT05FTlRfU0NBTEVSMF0pOw0KPiA+ICsJCWJyZWFr Ow0KPiA+ICsJY2FzZSBLT01FREFfQ09NUE9ORU5UX0lQUzA6DQo+ID4gKwljYXNlIEtPTUVEQV9D T01QT05FTlRfSVBTMToNCj4gPiArCQl0ZW1wID0gbWRldi0+cGlwZWxpbmVzW2lkIC0gS09NRURB X0NPTVBPTkVOVF9JUFMwXTsNCj4gPiArCQlpZiAoIXRlbXApIHsNCj4gPiArCQkJRFJNX0VSUk9S KCJpcHMtJWQgZG9lc24ndCBleGlzdC5cbiIsIGlkKTsNCj4gPiArCQkJcmV0dXJuIE5VTEw7DQo+ ID4gKwkJfQ0KPiA+ICsJCXBvcyA9IHRvX2Nwb3ModGVtcC0+aW1wcm9jKTsNCj4gPiArCQlicmVh azsNCj4gPiArCWNhc2UgS09NRURBX0NPTVBPTkVOVF9USU1JTkdfQ1RSTFI6DQo+ID4gKwkJcG9z ID0gdG9fY3BvcyhwaXBlLT5jdHJscik7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwlkZWZhdWx0Og0K PiA+ICsJCXBvcyA9IE5VTEw7DQo+ID4gKwkJRFJNX0VSUk9SKCJVbmtub3duIHBpcGVsaW5lIHJl c291cmNlIElEOiAlZC5cbiIsIGlkKTsNCj4gPiArCQlicmVhazsNCj4gPiArCX0NCj4gPiArDQo+ ID4gKwlyZXR1cm4gcG9zOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdHJ1Y3Qga29tZWRhX2NvbXBv bmVudCAqDQo+ID4gK2tvbWVkYV9waXBlbGluZV9nZXRfY29tcG9uZW50KHN0cnVjdCBrb21lZGFf cGlwZWxpbmUgKnBpcGUsIGludCBpZCkNCj4gPiArew0KPiA+ICsJc3RydWN0IGtvbWVkYV9jb21w b25lbnQgKipwb3MgPSBOVUxMOw0KPiA+ICsJc3RydWN0IGtvbWVkYV9jb21wb25lbnQgKmMgPSBO VUxMOw0KPiA+ICsNCj4gPiArCXBvcyA9IGtvbWVkYV9waXBlbGluZV9nZXRfY29tcG9uZW50X3Bv cyhwaXBlLCBpZCk7DQo+ID4gKwlpZiAocG9zKQ0KPiA+ICsJCWMgPSAqcG9zOw0KPiA+ICsNCj4g PiArCXJldHVybiBjOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioga29tZWRhX2NvbXBvbmVudF9h ZGQgLSBBZGQgYSBjb21wb25lbnQgdG8gJmtvbWVkYV9waXBlbGluZSAqLw0KPiA+ICtzdHJ1Y3Qg a29tZWRhX2NvbXBvbmVudCAqDQo+ID4gK2tvbWVkYV9jb21wb25lbnRfYWRkKHN0cnVjdCBrb21l ZGFfcGlwZWxpbmUgKnBpcGUsDQo+ID4gKwkJICAgICBzaXplX3QgY29tcF9zeiwgdTMyIGlkLCB1 MzIgaHdfaWQsDQo+ID4gKwkJICAgICBzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9mdW5jcyAqZnVu Y3MsDQo+ID4gKwkJICAgICB1OCBtYXhfYWN0aXZlX2lucHV0cywgdTMyIHN1cHBvcnRlZF9pbnB1 dHMsDQo+ID4gKwkJICAgICB1OCBtYXhfYWN0aXZlX291dHB1dHMsIHUzMiBfX2lvbWVtICpyZWcs DQo+ID4gKwkJICAgICBjb25zdCBjaGFyICpuYW1lX2ZtdCwgLi4uKQ0KPiA+ICt7DQo+ID4gKwlz dHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqKnBvczsNCj4gPiArCXN0cnVjdCBrb21lZGFfY29tcG9u ZW50ICpjOw0KPiA+ICsJaW50IGlkeCwgKm51bSA9IE5VTEw7DQo+ID4gKw0KPiA+ICsJaWYgKG1h eF9hY3RpdmVfaW5wdXRzID4gS09NRURBX0NPTVBPTkVOVF9OX0lOUFVUUykgew0KPiA+ICsJCVdB Uk4oMSwgInBsZWFzZSBsYXJnZSBLT01FREFfQ09NUE9ORU5UX05fSU5QVVRTIHRvICVkLlxuIiwN Cj4gPiArCQkgICAgIG1heF9hY3RpdmVfaW5wdXRzKTsNCj4gPiArCQlyZXR1cm4gTlVMTDsNCj4g PiArCX0NCj4gPiArDQo+ID4gKwlwb3MgPSBrb21lZGFfcGlwZWxpbmVfZ2V0X2NvbXBvbmVudF9w b3MocGlwZSwgaWQpOw0KPiA+ICsJaWYgKCFwb3MgfHwgISgqcG9zKSkNCj4gPiArCQlyZXR1cm4g TlVMTDsNCj4gPiArDQo+ID4gKwlpZiAoaGFzX2JpdChpZCwgS09NRURBX1BJUEVMSU5FX0xBWUVS UykpIHsNCj4gPiArCQlpZHggPSBpZCAtIEtPTUVEQV9DT01QT05FTlRfTEFZRVIwOw0KPiA+ICsJ CW51bSA9ICZwaXBlLT5uX2xheWVyczsNCj4gPiArCQlpZiAoaWR4ICE9IHBpcGUtPm5fbGF5ZXJz KSB7DQo+ID4gKwkJCURSTV9FUlJPUigicGxlYXNlIGFkZCBMYXllciBieSBpZCBzZXF1ZW5jZS5c biIpOw0KPiA+ICsJCQlyZXR1cm4gTlVMTDsNCj4gPiArCQl9DQo+ID4gKwl9IGVsc2UgaWYgKGhh c19iaXQoaWQsICBLT01FREFfUElQRUxJTkVfU0NBTEVSUykpIHsNCj4gPiArCQlpZHggPSBpZCAt IEtPTUVEQV9DT01QT05FTlRfU0NBTEVSMDsNCj4gPiArCQludW0gPSAmcGlwZS0+bl9zY2FsZXJz Ow0KPiA+ICsJCWlmIChpZHggIT0gcGlwZS0+bl9zY2FsZXJzKSB7DQo+ID4gKwkJCURSTV9FUlJP UigicGxlYXNlIGFkZCBTY2FsZXIgYnkgaWQgc2VxdWVuY2UuXG4iKTsNCj4gPiArCQkJcmV0dXJu IE5VTEw7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWMgPSBkZXZtX2t6YWxsb2Mo cGlwZS0+bWRldi0+ZGV2LCBjb21wX3N6LCBHRlBfS0VSTkVMKTsNCj4gPiArCWlmICghYykNCj4g PiArCQlyZXR1cm4gTlVMTDsNCj4gPiArDQo+ID4gKwljLT5pZCA9IGlkOw0KPiA+ICsJYy0+aHdf aWQgPSBod19pZDsNCj4gPiArCWMtPnJlZyA9IHJlZzsNCj4gPiArCWMtPnBpcGVsaW5lID0gcGlw ZTsNCj4gPiArCWMtPm1heF9hY3RpdmVfaW5wdXRzID0gbWF4X2FjdGl2ZV9pbnB1dHM7DQo+ID4g KwljLT5tYXhfYWN0aXZlX291dHB1dHMgPSBtYXhfYWN0aXZlX291dHB1dHM7DQo+ID4gKwljLT5z dXBwb3J0ZWRfaW5wdXRzID0gc3VwcG9ydGVkX2lucHV0czsNCj4gPiArCWMtPmZ1bmNzID0gZnVu Y3M7DQo+ID4gKw0KPiA+ICsJaWYgKG5hbWVfZm10KSB7DQo+ID4gKwkJdmFfbGlzdCBhcmdzOw0K PiA+ICsNCj4gPiArCQl2YV9zdGFydChhcmdzLCBuYW1lX2ZtdCk7DQo+ID4gKwkJdnNucHJpbnRm KGMtPm5hbWUsIHNpemVvZihjLT5uYW1lKSwgbmFtZV9mbXQsIGFyZ3MpOw0KPiA+ICsJCXZhX2Vu ZChhcmdzKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAobnVtKQ0KPiA+ICsJCSpudW0gPSAq bnVtICsgMTsNCj4gPiArDQo+ID4gKwlwaXBlLT5hdmFpbF9jb21wcyB8PSBCSVQoYy0+aWQpOw0K PiA+ICsJKnBvcyA9IGM7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIGM7DQo+ID4gK30NCj4gPiArDQo+ ID4gK3ZvaWQga29tZWRhX2NvbXBvbmVudF9kZXN0cm95KHN0cnVjdCBrb21lZGFfZGV2ICptZGV2 LA0KPiA+ICsJCQkgICAgICBzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqYykNCj4gPiArew0KPiA+ ICsJZGV2bV9rZnJlZShtZGV2LT5kZXYsIGMpOw0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVsaW5lLmggYi9kcml2 ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oDQo+ID4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjIxNzQ3OTZkNDdjNQ0K PiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkv a29tZWRhL2tvbWVkYV9waXBlbGluZS5oDQo+ID4gQEAgLTAsMCArMSwzNTAgQEANCj4gPiArLyog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8NCj4gPiArLyoNCj4gPiArICogKEMp IENPUFlSSUdIVCAyMDE4IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICsg KiBBdXRob3I6IEphbWVzLlFpYW4uV2FuZyA8amFtZXMucWlhbi53YW5nQGFybS5jb20+DQo+ID4g KyAqDQo+ID4gKyAqLw0KPiA+ICsjaWZuZGVmIF9LT01FREFfUElQRUxJTkVfSF8NCj4gPiArI2Rl ZmluZSBfS09NRURBX1BJUEVMSU5FX0hfDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvdHlw ZXMuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9i aXRvcHMuaD4NCj4gDQo+IG9mLmggYW5kIGJpdG9wcy5oIGFyZSB1bm5lY2Vzc2FyeSBpbiB0aGlz IGhlYWRlciBmaWxlLg0KDQpPSywgd2lsbCBkZWwgdGhlc2UgdW5uZWNlc3NhcnkgaGVhZGVycy4N Cg0KPiANCj4gPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+DQo+ID4gKyNpbmNsdWRlIDxk cm0vZHJtX2F0b21pY19oZWxwZXIuaD4NCj4gPiArI2luY2x1ZGUgIm1hbGlkcF91dGlscy5oIg0K PiA+ICsNCj4gPiArI2RlZmluZSBLT01FREFfTUFYX1BJUEVMSU5FUwkJMg0KPiA+ICsjZGVmaW5l IEtPTUVEQV9QSVBFTElORV9NQVhfTEFZRVJTCTQNCj4gPiArI2RlZmluZSBLT01FREFfUElQRUxJ TkVfTUFYX1NDQUxFUlMJMg0KPiA+ICsjZGVmaW5lIEtPTUVEQV9DT01QT05FTlRfTl9JTlBVVFMJ NQ0KPiA+ICsNCj4gPiArLyogcGlwZWxpbmUgY29tcG9uZW50IElEcyAqLw0KPiA+ICtlbnVtIHsN Cj4gPiArCUtPTUVEQV9DT01QT05FTlRfTEFZRVIwCQk9IDAsDQo+ID4gKwlLT01FREFfQ09NUE9O RU5UX0xBWUVSMQkJPSAxLA0KPiA+ICsJS09NRURBX0NPTVBPTkVOVF9MQVlFUjIJCT0gMiwNCj4g PiArCUtPTUVEQV9DT01QT05FTlRfTEFZRVIzCQk9IDMsDQo+ID4gKwlLT01FREFfQ09NUE9ORU5U X1dCX0xBWUVSCT0gNywgLyogd3JpdGUgYmFjayBsYXllciAqLw0KPiA+ICsJS09NRURBX0NPTVBP TkVOVF9TQ0FMRVIwCT0gOCwNCj4gPiArCUtPTUVEQV9DT01QT05FTlRfU0NBTEVSMQk9IDksDQo+ ID4gKwlLT01FREFfQ09NUE9ORU5UX1NQTElUVEVSCT0gMTIsDQo+ID4gKwlLT01FREFfQ09NUE9O RU5UX01FUkdFUgkJPSAxNCwNCj4gPiArCUtPTUVEQV9DT01QT05FTlRfQ09NUElaMAk9IDE2LCAv KiBjb21wb3NpdG9yICovDQo+ID4gKwlLT01FREFfQ09NUE9ORU5UX0NPTVBJWjEJPSAxNywNCj4g PiArCUtPTUVEQV9DT01QT05FTlRfSVBTMAkJPSAyMCwgLyogcG9zdCBpbWFnZSBwcm9jZXNzb3Ig Ki8NCj4gPiArCUtPTUVEQV9DT01QT05FTlRfSVBTMQkJPSAyMSwNCj4gPiArCUtPTUVEQV9DT01Q T05FTlRfVElNSU5HX0NUUkxSCT0gMjIsIC8qIHRpbWluZyBjb250cm9sbGVyICovDQo+ID4gK307 DQo+ID4gKw0KPiA+ICsjZGVmaW5lIEtPTUVEQV9QSVBFTElORV9MQVlFUlMJCShCSVQoS09NRURB X0NPTVBPTkVOVF9MQVlFUjApIHxcDQo+ID4gKwkJCQkJIEJJVChLT01FREFfQ09NUE9ORU5UX0xB WUVSMSkgfFwNCj4gPiArCQkJCQkgQklUKEtPTUVEQV9DT01QT05FTlRfTEFZRVIyKSB8XA0KPiA+ ICsJCQkJCSBCSVQoS09NRURBX0NPTVBPTkVOVF9MQVlFUjMpKQ0KPiA+ICsNCj4gPiArI2RlZmlu ZSBLT01FREFfUElQRUxJTkVfU0NBTEVSUwkJKEJJVChLT01FREFfQ09NUE9ORU5UX1NDQUxFUjAp IHxcDQo+ID4gKwkJCQkJIEJJVChLT01FREFfQ09NUE9ORU5UX1NDQUxFUjEpKQ0KPiA+ICsNCj4g PiArI2RlZmluZSBLT01FREFfUElQRUxJTkVfQ09NUElaUwkJKEJJVChLT01FREFfQ09NUE9ORU5U X0NPTVBJWjApIHxcDQo+ID4gKwkJCQkJIEJJVChLT01FREFfQ09NUE9ORU5UX0NPTVBJWjEpKQ0K PiA+ICsNCj4gPiArI2RlZmluZSBLT01FREFfUElQRUxJTkVfSU1QUk9DUwkJKEJJVChLT01FREFf Q09NUE9ORU5UX0lQUzApIHxcDQo+ID4gKwkJCQkJIEJJVChLT01FREFfQ09NUE9ORU5UX0lQUzEp KQ0KPiA+ICtzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudDsNCj4gPiArc3RydWN0IGtvbWVkYV9jb21w b25lbnRfc3RhdGU7DQo+ID4gKw0KPiA+ICsvKioga29tZWRhX2NvbXBvbmVudF9mdW5jcyAtIGNv bXBvbmVudCBjb250cm9sIGZ1bmN0aW9ucyAqLw0KPiA+ICtzdHJ1Y3Qga29tZWRhX2NvbXBvbmVu dF9mdW5jcyB7DQo+ID4gKwkvKiogQHZhbGlkYXRlOiBvcHRpb25hbCwNCj4gPiArCSAqIGNvbXBv bmVudCBtYXkgaGFzIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9yIGxpbWl0YXRpb25zLCB0aGlzIGZ1 bmN0aW9uDQo+ID4gKwkgKiBzdXBwbHkgSFcgdGhlIGFiaWxpdHkgdG8gZG8gdGhlIGZ1cnRoZXIg SFcgc3BlY2lmaWMgY2hlY2suDQo+ID4gKwkgKi8NCj4gPiArCWludCAoKnZhbGlkYXRlKShzdHJ1 Y3Qga29tZWRhX2NvbXBvbmVudCAqYywNCj4gPiArCQkJc3RydWN0IGtvbWVkYV9jb21wb25lbnRf c3RhdGUgKnN0YXRlKTsNCj4gPiArCS8qKiBAdXBkYXRlOiB1cGRhdGUgaXMgYSBhY3RpdmUgdXBk YXRlICovDQo+ID4gKwl2b2lkICgqdXBkYXRlKShzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqYywN Cj4gPiArCQkgICAgICAgc3RydWN0IGtvbWVkYV9jb21wb25lbnRfc3RhdGUgKnN0YXRlKTsNCj4g PiArCS8qKiBAZGlzYWJsZTogZGlzYWJsZSBjb21wb25lbnQgKi8NCj4gPiArCXZvaWQgKCpkaXNh YmxlKShzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqYyk7DQo+ID4gKwkvKiogQGR1bXBfcmVnaXN0 ZXI6IE9wdGlvbmFsLCBkdW1wIHJlZ2lzdGVycyB0byBzZXFfZmlsZSAqLw0KPiA+ICsJdm9pZCAo KmR1bXBfcmVnaXN0ZXIpKHN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpjLCBzdHJ1Y3Qgc2VxX2Zp bGUgKnNlcSk7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGtvbWVk YV9jb21wb25lbnQNCj4gPiArICoNCj4gPiArICogc3RydWN0IGtvbWVkYV9jb21wb25lbnQgZGVz Y3JpYmUgdGhlIGRhdGEgZmxvdyBjYXBhYmlsaXRpZXMgZm9yIGhvdyB0byBsaW5rIGENCj4gPiAr ICogY29tcG9uZW50IGludG8gdGhlIGRpc3BsYXkgcGlwZWxpbmUuDQo+ID4gKyAqIGFsbCBzcGVj aWZpZWQgY29tcG9uZW50cyBhcmUgc3ViY2xhc3Mgb2YgdGhpcyBzdHJ1Y3R1cmUuDQo+ID4gKyAq Lw0KPiA+ICtzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCB7DQo+ID4gKwkvKiogQG9iajogdHJlYXQg Y29tcG9uZW50IGFzIHByaXZhdGUgb2JqICovDQo+ID4gKwlzdHJ1Y3QgZHJtX3ByaXZhdGVfb2Jq IG9iajsNCj4gPiArCS8qKiBAcGlwZWxpbmU6IHRoZSBrb21lZGEgcGlwZWxpbmUgdGhpcyBjb21w b25lbnQgYmVsb25ncyB0byAqLw0KPiA+ICsJc3RydWN0IGtvbWVkYV9waXBlbGluZSAqcGlwZWxp bmU7DQo+ID4gKwkvKiogQG5hbWU6IGNvbXBvbmVudCBuYW1lICovDQo+ID4gKwljaGFyIG5hbWVb MzJdOw0KPiA+ICsJLyoqDQo+ID4gKwkgKiBAcmVnOg0KPiA+ICsJICogY29tcG9uZW50IHJlZ2lz dGVyIGJhc2UsDQo+ID4gKwkgKiB3aGljaCBpcyBpbml0aWFsaXplZCBieSBjaGlwIGFuZCB1c2Vk IGJ5IGNoaXAgb25seQ0KPiA+ICsJICovDQo+ID4gKwl1MzIgX19pb21lbSAqcmVnOw0KPiA+ICsJ LyoqIEBpZDogY29tcG9uZW50IGlkICovDQo+ID4gKwl1MzIgaWQ7DQo+ID4gKwkvKiogQGh3X2lj OiBjb21wb25lbnQgaHcgaWQsDQo+ID4gKwkgKiAgd2hpY2ggaXMgaW5pdGlhbGl6ZWQgYnkgY2hp cCBhbmQgdXNlZCBieSBjaGlwIG9ubHkNCj4gPiArCSAqLw0KPiA+ICsJdTMyIGh3X2lkOw0KPiA+ ICsNCj4gPiArCS8qKg0KPiA+ICsJICogQG1heF9hY3RpdmVfaW5wdXRzOg0KPiA+ICsJICogQG1h eF9hY3RpdmVfb3V0cHVzOg0KPiA+ICsJICoNCj4gPiArCSAqIG1heGltdW0gbnVtYmVyIG9mIGlu cHV0cy9vdXRwdXRzIHRoYXQgY2FuIGJlIGFjdGl2ZSBpbiB0aGUgc2FtZSB0aW1lDQo+ID4gKwkg KiBOb3RlOg0KPiA+ICsJICogdGhlIG51bWJlciBpc24ndCB0aGUgYml0IG51bWJlciBvZiBAc3Vw cG9ydGVkX2lucHV0cyBvcg0KPiA+ICsJICogQHN1cHBvcnRlZF9vdXRwdXRzLCBidXQgbWF5IGJl IGxlc3MgdGhhbiBpdCwgc2luY2UgY29tcG9uZW50IG1heSBub3QNCj4gPiArCSAqIHN1cHBvcnQg ZW5hYmxpbmcgYWxsIEBzdXBwb3J0ZWRfaW5wdXRzL291dHB1dHMgYXQgdGhlIHNhbWUgdGltZS4N Cj4gPiArCSAqLw0KPiA+ICsJdTggbWF4X2FjdGl2ZV9pbnB1dHM7DQo+ID4gKwl1OCBtYXhfYWN0 aXZlX291dHB1dHM7DQo+ID4gKwkvKioNCj4gPiArCSAqIEBzdXBwb3J0ZWRfaW5wdXRzOg0KPiA+ ICsJICogQHN1cHBvcnRlZF9vdXRwdXRzOg0KPiA+ICsJICoNCj4gPiArCSAqIGJpdG1hc2sgb2Yg QklUKGNvbXBvbmVudC0+aWQpIGZvciB0aGUgc3VwcG9ydGVkIGlucHV0cy9vdXRwdXRzDQo+ID4g KwkgKiBkZXNjcmliZXMgdGhlIHBvc3NpYmlsaXRpZXMgb2YgaG93IGEgY29tcG9uZW50IGlzIGxp bmtlZCBpbnRvIGENCj4gPiArCSAqIHBpcGVsaW5lLg0KPiA+ICsJICovDQo+ID4gKwl1MzIgc3Vw cG9ydGVkX2lucHV0czsNCj4gPiArCXUzMiBzdXBwb3J0ZWRfb3V0cHV0czsNCj4gPiArDQo+ID4g KwkvKioNCj4gPiArCSAqIEBmdW5jczogY2hpcCBmdW5jdGlvbnMgdG8gYWNjZXNzIEhXDQo+ID4g KwkgKi8NCj4gPiArCXN0cnVjdCBrb21lZGFfY29tcG9uZW50X2Z1bmNzICpmdW5jczsNCj4gPiAr fTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9vdXRw dXQNCj4gPiArICoNCj4gPiArICogYSBjb21wb25lbnQgaGFzIG11bHRpcGxlIG91dHB1dHMsIGlm IHdhbnQgdG8ga25vdyB3aGVyZSB0aGUgZGF0YQ0KPiA+ICsgKiBjb21lcyBmcm9tLCBvbmx5IGtu b3cgdGhlIGNvbXBvbmVudCBpcyBub3QgZW5vdWdoLCB3ZSBzdGlsbCBuZWVkIHRvIGtub3cNCj4g PiArICogaXRzIG91dHB1dCBwb3J0DQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3Qga29tZWRhX2NvbXBv bmVudF9vdXRwdXQgew0KPiA+ICsJLyoqIEBjb21wb25lbnQ6IGluZGljYXRlIHdoaWNoIGNvbXBv bmVudCB0aGUgZGF0YSBjb21lcyBmcm9tICovDQo+ID4gKwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVu dCAqY29tcG9uZW50Ow0KPiA+ICsJLyoqIEBvdXRwdXRfcG9ydDoNCj4gPiArCSAqIHRoZSBvdXRw dXQgcG9ydCBvZiB0aGUgJmtvbWVkYV9jb21wb25lbnRfb3V0cHV0LmNvbXBvbmVudA0KPiA+ICsJ ICovDQo+ID4gKwl1OCBvdXRwdXRfcG9ydDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgKiBzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9zdGF0ZQ0KPiA+ICsgKg0KPiA+ICsgKiBjb21w b25lbnRfc3RhdGUgaXMgdGhlIGRhdGEgZmxvdyBjb25maWd1cmF0aW9uIG9mIHRoZSBjb21wb25l bnQsIGFuZCBpdCdzDQo+ID4gKyAqIHRoZSBzdXBlcmNsYXNzIG9mIGFsbCBzcGVjaWZpYyBjb21w b25lbnRfc3RhdGUgbGlrZSBAa29tZWRhX2xheWVyX3N0YXRlLA0KPiA+ICsgKiBAa29tZWRhX3Nj YWxlcl9zdGF0ZQ0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGtvbWVkYV9jb21wb25lbnRfc3RhdGUg ew0KPiA+ICsJLyoqIEBvYmo6IHRyYWNraW5nIGNvbXBvbmVudF9zdGF0ZSBieSBkcm1fYXRvbWlj X3N0YXRlICovDQo+ID4gKwlzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgb2JqOw0KPiA+ICsJc3Ry dWN0IGtvbWVkYV9jb21wb25lbnQgKmNvbXBvbmVudDsNCj4gPiArCS8qKg0KPiA+ICsJICogQGJp bmRpbmdfdXNlcjoNCj4gPiArCSAqIGN1cnJlbnRseSBib3VuZCB1c2VyLCB0aGUgdXNlciBjYW4g YmUgY3J0Yy9wbGFuZS93Yl9jb25uLCB3aGljaCBpcw0KPiA+ICsJICogdmFsaWQgZGVjaWRlZCBi eSBAY29tcG9uZW50IGFuZCBAaW5wdXRzDQo+ID4gKwkgKg0KPiA+ICsJICogLSAgTGF5ZXI6IGl0 cyB1c2VyIGFsd2F5cyBpcyBwbGFuZS4NCj4gPiArCSAqIC0gIGNvbXBpei9pbXByb2MvdGltaW5n X2N0cmxyOiB0aGUgdXNlciBpcyBjcnRjLg0KPiA+ICsJICogLSAgd2JfbGF5ZXI6IHdiX2Nvbm47 DQo+ID4gKwkgKiAtICBzY2FsZXI6IHBsYW5lIHdoZW4gaW5wdXQgaXMgbGF5ZXIsIHdiX2Nvbm4g aWYgaW5wdXQgaXMgY29tcGl6Lg0KPiA+ICsJICovDQo+ID4gKwl1bmlvbiB7DQo+ID4gKwkJc3Ry dWN0IGRybV9jcnRjICpjcnRjOw0KPiA+ICsJCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOw0KPiA+ ICsJCXN0cnVjdCBkcm1fY29ubmVjdG9yICp3Yl9jb25uOw0KPiA+ICsJCXZvaWQgKmJpbmRpbmdf dXNlcjsNCj4gPiArCX07DQo+ID4gKwkvKioNCj4gPiArCSAqIEBhY3RpdmVfaW5wdXRzOg0KPiA+ ICsJICoNCj4gPiArCSAqIGFjdGl2ZV9pbnB1dHMgaXMgYml0bWFzayBvZiBAaW5wdXRzIGluZGV4 DQo+ID4gKwkgKg0KPiA+ICsJICogLSAgYWN0aXZlX2lucHV0cyA9IGNoYW5nZWRfYWN0aXZlX2lu cHV0cyArIHVuY2hhbmdlZF9hY3RpdmVfaW5wdXRzDQo+ID4gKwkgKiAtICBhZmZlY3RlZF9pbnB1 dHMgPSBvbGQtPmFjdGl2ZV9pbnB1dHMgKyBuZXctPmFjdGl2ZV9pbnB1dHM7DQo+ID4gKwkgKiAt ICBkaXNhYmxpbmdfaW5wdXRzID0gYWZmZWN0ZWRfaW5wdXRzIF4gYWN0aXZlX2lucHV0czsNCj4g PiArCSAqIC0gIGNoYW5nZWRfaW5wdXRzID0gZGlzYWJsaW5nX2lucHV0cyArIGNoYW5nZWRfYWN0 aXZlX2lucHV0czsNCj4gPiArCSAqDQo+ID4gKwkgKiBOT1RFOg0KPiA+ICsJICogY2hhbmdlZF9p bnB1dHMgZG9lc24ndCBpbmNsdWRlIGFsbCBhY3RpdmVfaW5wdXQgYnV0IG9ubHkNCj4gPiArCSAq IEBjaGFuZ2VkX2FjdGl2ZV9pbnB1dHMsIGFuZCB0aGlzIGJpdG1hc2sgY2FuIGJlIHVzZWQgaW4g Y2hpcA0KPiA+ICsJICogbGV2ZWwgZm9yIGRpcnR5IHVwZGF0ZS4NCj4gPiArCSAqLw0KPiA+ICsJ dTE2IGFjdGl2ZV9pbnB1dHM7DQo+ID4gKwl1MTYgY2hhbmdlZF9hY3RpdmVfaW5wdXRzOw0KPiA+ ICsJdTE2IGFmZmVjdGVkX2lucHV0czsNCj4gPiArCS8qKg0KPiA+ICsJICogQGlucHV0czoNCj4g PiArCSAqDQo+ID4gKwkgKiB0aGUgc3BlY2lmaWMgaW5wdXRzW2ldIG9ubHkgdmFsaWQgb24gQklU KGkpIGhhcyBiZWVuIHNldCBpbg0KPiA+ICsJICogQGFjdGl2ZV9pbnB1dHMsIGlmIG5vdCB0aGUg aW5wdXRzW2ldIGlzIHVuZGVmaW5lZC4NCj4gPiArCSAqLw0KPiA+ICsJc3RydWN0IGtvbWVkYV9j b21wb25lbnRfb3V0cHV0IGlucHV0c1tLT01FREFfQ09NUE9ORU5UX05fSU5QVVRTXTsNCj4gPiAr fTsNCj4gPiArDQo+ID4gK3N0YXRpYyBpbmxpbmUgdTE2IGNvbXBvbmVudF9kaXNhYmxpbmdfaW5w dXRzKHN0cnVjdCBrb21lZGFfY29tcG9uZW50X3N0YXRlICpzdCkNCj4gPiArew0KPiA+ICsJcmV0 dXJuIHN0LT5hZmZlY3RlZF9pbnB1dHMgXiBzdC0+YWN0aXZlX2lucHV0czsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIGlubGluZSB1MTYgY29tcG9uZW50X2NoYW5nZWRfaW5wdXRzKHN0cnVj dCBrb21lZGFfY29tcG9uZW50X3N0YXRlICpzdCkNCj4gPiArew0KPiA+ICsJcmV0dXJuIGNvbXBv bmVudF9kaXNhYmxpbmdfaW5wdXRzKHN0KSB8IHN0LT5jaGFuZ2VkX2FjdGl2ZV9pbnB1dHM7DQo+ ID4gK30NCj4gPiArDQo+ID4gKyNkZWZpbmUgdG9fY29tcChfX2MpCSgoKF9fYykgPT0gTlVMTCkg PyBOVUxMIDogJigoX19jKS0+YmFzZSkpDQo+ID4gKyNkZWZpbmUgdG9fY3BvcyhfX2MpCSgoc3Ry dWN0IGtvbWVkYV9jb21wb25lbnQgKiopJihfX2MpKQ0KPiA+ICsNCj4gPiArLyogdGhlc2Ugc3Ry dWN0dXJlcyBhcmUgZ29pbmcgdG8gYmUgZmlsbGVkIGluIGluIHV0dXJlIHBhdGNoZXMgKi8NCj4g PiArc3RydWN0IGtvbWVkYV9sYXllciB7DQo+ID4gKwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCBi YXNlOw0KPiA+ICsJLyogbGF5ZXIgc3BlY2lmaWMgZmVhdHVyZXMgYW5kIGNhcHMgKi8NCj4gPiAr fTsNCj4gPiArDQo+ID4gK3N0cnVjdCBrb21lZGFfbGF5ZXJfc3RhdGUgew0KPiA+ICsJc3RydWN0 IGtvbWVkYV9jb21wb25lbnRfc3RhdGUgYmFzZTsNCj4gPiArCS8qIGxheWVyIHNwZWNpZmljIGNv bmZpZ3VyYXRpb24gc3RhdGUgKi8NCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBrb21lZGFf Y29tcGl6IHsNCj4gPiArCXN0cnVjdCBrb21lZGFfY29tcG9uZW50IGJhc2U7DQo+ID4gKwkvKiBj b21waXogc3BlY2lmaWMgZmVhdHVyZXMgYW5kIGNhcHMgKi8NCj4gPiArfTsNCj4gPiArDQo+ID4g K3N0cnVjdCBrb21lZGFfY29tcGl6X3N0YXRlIHsNCj4gPiArCXN0cnVjdCBrb21lZGFfY29tcG9u ZW50X3N0YXRlIGJhc2U7DQo+ID4gKwkvKiBjb21waXogc3BlY2lmaWMgY29uZmlndXJhdGlvbiBz dGF0ZSAqLw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGtvbWVkYV9zY2FsZXIgew0KPiA+ ICsJc3RydWN0IGtvbWVkYV9jb21wb25lbnQgYmFzZTsNCj4gPiArCS8qIHNjYWxlciBmZWF0dXJl cyBhbmQgY2FwcyAqLw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGtvbWVkYV9zY2FsZXJf c3RhdGUgew0KPiA+ICsJc3RydWN0IGtvbWVkYV9jb21wb25lbnRfc3RhdGUgYmFzZTsNCj4gPiAr fTsNCj4gPiArDQo+ID4gK3N0cnVjdCBrb21lZGFfaW1wcm9jIHsNCj4gPiArCXN0cnVjdCBrb21l ZGFfY29tcG9uZW50IGJhc2U7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3Qga29tZWRhX2lt cHJvY19zdGF0ZSB7DQo+ID4gKwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9zdGF0ZSBiYXNlOw0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArLyogZGlzcGxheSB0aW1pbmcgY29udHJvbGxlciAqLw0KPiA+ ICtzdHJ1Y3Qga29tZWRhX3RpbWluZ19jdHJsciB7DQo+ID4gKwlzdHJ1Y3Qga29tZWRhX2NvbXBv bmVudCBiYXNlOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGtvbWVkYV90aW1pbmdfY3Ry bHJfc3RhdGUgew0KPiA+ICsJc3RydWN0IGtvbWVkYV9jb21wb25lbnRfc3RhdGUgYmFzZTsNCj4g PiArfTsNCj4gPiArDQo+ID4gKy8qKiBzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lX2Z1bmNzICovDQo+ ID4gK3N0cnVjdCBrb21lZGFfcGlwZWxpbmVfZnVuY3Mgew0KPiA+ICsJLyogZHVtcF9yZWdpc3Rl cjogT3B0aW9uYWwsIGR1bXAgcmVnaXN0ZXJzIHRvIHNlcV9maWxlICovDQo+ID4gKwl2b2lkICgq ZHVtcF9yZWdpc3Rlcikoc3RydWN0IGtvbWVkYV9waXBlbGluZSAqcGlwZSwNCj4gPiArCQkJICAg ICAgc3RydWN0IHNlcV9maWxlICpzZik7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICogc3RydWN0IGtvbWVkYV9waXBlbGluZQ0KPiA+ICsgKg0KPiA+ICsgKiBSZXByZXNlbnQgYSBj b21wbGV0ZSBkaXNwbGF5IHBpcGVsaW5lIGFuZCBob2xkIGFsbCBmdW5jdGlvbmFsIGNvbXBvbmVu dHMuDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lIHsNCj4gPiArCS8qKiBA b2JqOiBsaW5rIHBpcGVsaW5lIGFzIHByaXZhdGUgb2JqIG9mIGRybV9hdG9taWNfc3RhdGUgKi8N Cj4gPiArCXN0cnVjdCBkcm1fcHJpdmF0ZV9vYmogb2JqOw0KPiA+ICsJLyoqIEBtZGV2OiB0aGUg cGFyZW50IGtvbWVkYV9kZXYgKi8NCj4gPiArCXN0cnVjdCBrb21lZGFfZGV2ICptZGV2Ow0KPiA+ ICsJLyoqIEBweGxjbGs6IHBpeGVsIGNsb2NrICovDQo+ID4gKwlzdHJ1Y3QgY2xrICpweGxjbGs7 DQo+ID4gKwkvKiogQGFjbGs6IEFYSSBjbG9jayAqLw0KPiA+ICsJc3RydWN0IGNsayAqYWNsazsN Cj4gPiArCS8qKiBAaWQ6IHBpcGVsaW5lIGlkICovDQo+ID4gKwlpbnQgaWQ7DQo+ID4gKwkvKiog QGF2YWlsX2NvbXBzOiBhdmFpbGFibGUgY29tcG9uZW50cyBtYXNrIG9mIHBpcGVsaW5lICovDQo+ ID4gKwl1MzIgYXZhaWxfY29tcHM7DQo+ID4gKwlpbnQgbl9sYXllcnM7DQo+ID4gKwlzdHJ1Y3Qg a29tZWRhX2xheWVyICpsYXllcnNbS09NRURBX1BJUEVMSU5FX01BWF9MQVlFUlNdOw0KPiA+ICsJ aW50IG5fc2NhbGVyczsNCj4gPiArCXN0cnVjdCBrb21lZGFfc2NhbGVyICpzY2FsZXJzW0tPTUVE QV9QSVBFTElORV9NQVhfU0NBTEVSU107DQo+ID4gKwlzdHJ1Y3Qga29tZWRhX2NvbXBpeiAqY29t cGl6Ow0KPiA+ICsJc3RydWN0IGtvbWVkYV9sYXllciAgKndiX2xheWVyOw0KPiA+ICsJc3RydWN0 IGtvbWVkYV9pbXByb2MgKmltcHJvYzsNCj4gPiArCXN0cnVjdCBrb21lZGFfdGltaW5nX2N0cmxy ICpjdHJscjsNCj4gPiArCXN0cnVjdCBrb21lZGFfcGlwZWxpbmVfZnVuY3MgKmZ1bmNzOyAvKiBw cml2YXRlIHBpcGVsaW5lIGZ1bmN0aW9ucyAqLw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAqIHN0cnVjdCBrb21lZGFfcGlwZWxpbmVfc3RhdGUNCj4gPiArICoNCj4gPiArICogTk9U RToNCj4gPiArICogVW5saWtlIHRoZSBwaXBlbGluZSwgcGlwZWxpbmVfc3RhdGUgZG9lc27igJl0 IGdhdGhlciBhbnkgY29tcG9uZW50X3N0YXRlDQo+ID4gKyAqIGludG8gaXQuIEl0IGJlY2F1c2Ug YWxsIGNvbXBvbmVudCB3aWxsIGJlIG1hbmFnZWQgYnkgZHJtX2F0b21pY19zdGF0ZS4NCj4gPiAr ICovDQo+ID4gK3N0cnVjdCBrb21lZGFfcGlwZWxpbmVfc3RhdGUgew0KPiA+ICsJLyoqIEBvYmo6 IHRyYWNraW5nIHBpcGVsaW5lX3N0YXRlIGJ5IGRybV9hdG9taWNfc3RhdGUgKi8NCj4gPiArCXN0 cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSBvYmo7DQo+ID4gKwlzdHJ1Y3Qga29tZWRhX3BpcGVsaW5l ICpwaXBlOw0KPiA+ICsJLyoqIEBjcnRjOiBjdXJyZW50bHkgYm91bmQgY3J0YyAqLw0KPiA+ICsJ c3RydWN0IGRybV9jcnRjICpjcnRjOw0KPiA+ICsJLyoqDQo+ID4gKwkgKiBAYWN0aXZlX2NvbXBz Og0KPiA+ICsJICoNCj4gPiArCSAqIGJpdG1hc2sgLSBCSVQoY29tcG9uZW50LT5pZCkgb2YgYWN0 aXZlIGNvbXBvbmVudHMNCj4gPiArCSAqLw0KPiA+ICsJdTMyIGFjdGl2ZV9jb21wczsNCj4gPiAr fTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgdG9fbGF5ZXIoYykJY29udGFpbmVyX29mKGMsIHN0cnVj dCBrb21lZGFfbGF5ZXIsIGJhc2UpDQo+ID4gKyNkZWZpbmUgdG9fY29tcGl6KGMpCWNvbnRhaW5l cl9vZihjLCBzdHJ1Y3Qga29tZWRhX2NvbXBpeiwgYmFzZSkNCj4gPiArI2RlZmluZSB0b19zY2Fs ZXIoYykJY29udGFpbmVyX29mKGMsIHN0cnVjdCBrb21lZGFfc2NhbGVyLCBiYXNlKQ0KPiA+ICsj ZGVmaW5lIHRvX2ltcHJvYyhjKQljb250YWluZXJfb2YoYywgc3RydWN0IGtvbWVkYV9pbXByb2Ms IGJhc2UpDQo+ID4gKyNkZWZpbmUgdG9fY3RybHIoYykJY29udGFpbmVyX29mKGMsIHN0cnVjdCBr b21lZGFfdGltaW5nX2N0cmxyLCBiYXNlKQ0KPiA+ICsNCj4gPiArI2RlZmluZSB0b19sYXllcl9z dChjKQljb250YWluZXJfb2YoYywgc3RydWN0IGtvbWVkYV9sYXllcl9zdGF0ZSwgYmFzZSkNCj4g PiArI2RlZmluZSB0b19jb21waXpfc3QoYykJY29udGFpbmVyX29mKGMsIHN0cnVjdCBrb21lZGFf Y29tcGl6X3N0YXRlLCBiYXNlKQ0KPiA+ICsjZGVmaW5lIHRvX3NjYWxlcl9zdChjKSBjb250YWlu ZXJfb2YoYywgc3RydWN0IGtvbWVkYV9zY2FsZXJfc3RhdGUsIGJhc2UpDQo+ID4gKyNkZWZpbmUg dG9faW1wcm9jX3N0KGMpCWNvbnRhaW5lcl9vZihjLCBzdHJ1Y3Qga29tZWRhX2ltcHJvY19zdGF0 ZSwgYmFzZSkNCj4gPiArI2RlZmluZSB0b19jdHJscl9zdChjKQljb250YWluZXJfb2YoYywgc3Ry dWN0IGtvbWVkYV90aW1pbmdfY3RybHJfc3RhdGUsIGJhc2UpDQo+ID4gKw0KPiA+ICsvKiBwaXBl bGluZSBBUElzICovDQo+ID4gK3N0cnVjdCBrb21lZGFfcGlwZWxpbmUgKg0KPiA+ICtrb21lZGFf cGlwZWxpbmVfYWRkKHN0cnVjdCBrb21lZGFfZGV2ICptZGV2LCBzaXplX3Qgc2l6ZSwNCj4gPiAr CQkgICAgc3RydWN0IGtvbWVkYV9waXBlbGluZV9mdW5jcyAqZnVuY3MpOw0KPiA+ICt2b2lkIGtv bWVkYV9waXBlbGluZV9kZXN0cm95KHN0cnVjdCBrb21lZGFfZGV2ICptZGV2LA0KPiA+ICsJCQkg ICAgIHN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKnBpcGUpOw0KPiA+ICsNCj4gPiArc3RydWN0IGtv bWVkYV9jb21wb25lbnQgKg0KPiA+ICtrb21lZGFfcGlwZWxpbmVfZ2V0X2NvbXBvbmVudChzdHJ1 Y3Qga29tZWRhX3BpcGVsaW5lICpwaXBlLCBpbnQgaWQpOw0KPiA+ICsNCj4gPiArLyogY29tcG9u ZW50IEFQSXMgKi8NCj4gPiArc3RydWN0IGtvbWVkYV9jb21wb25lbnQgKg0KPiA+ICtrb21lZGFf Y29tcG9uZW50X2FkZChzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICpwaXBlLA0KPiA+ICsJCSAgICAg c2l6ZV90IGNvbXBfc3osIHUzMiBpZCwgdTMyIGh3X2lkLA0KPiA+ICsJCSAgICAgc3RydWN0IGtv bWVkYV9jb21wb25lbnRfZnVuY3MgKmZ1bmNzLA0KPiA+ICsJCSAgICAgdTggbWF4X2FjdGl2ZV9p bnB1dHMsIHUzMiBzdXBwb3J0ZWRfaW5wdXRzLA0KPiA+ICsJCSAgICAgdTggbWF4X2FjdGl2ZV9v dXRwdXRzLCB1MzIgX19pb21lbSAqcmVnLA0KPiA+ICsJCSAgICAgY29uc3QgY2hhciAqbmFtZV9m bXQsIC4uLik7DQo+ID4gKw0KPiA+ICt2b2lkIGtvbWVkYV9jb21wb25lbnRfZGVzdHJveShzdHJ1 Y3Qga29tZWRhX2RldiAqbWRldiwNCj4gPiArCQkJICAgICAgc3RydWN0IGtvbWVkYV9jb21wb25l bnQgKmMpOw0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIF9LT01FREFfUElQRUxJTkVfSF8qLw0KPiA+ IC0tIA0KPiA+IDIuMTcuMQ0KPiA+IA0KPiANCj4gV2l0aCB0aGVzZSBzbWFsbCBjaGFuZ2VzOg0K PiANCj4gUmV2aWV3ZWQtYnk6IExpdml1IER1ZGF1IDxsaXZpdS5kdWRhdUBhcm0uY29tPg0KPiAN Cj4gQmVzdCByZWdhcmRzLA0KPiBMaXZpdQ0KPiANCj4gDQo+IC0tIA0KPiA9PT09PT09PT09PT09 PT09PT09PQ0KPiB8IEkgd291bGQgbGlrZSB0byB8DQo+IHwgZml4IHRoZSB3b3JsZCwgIHwNCj4g fCBidXQgdGhleSdyZSBub3QgfA0KPiB8IGdpdmluZyBtZSB0aGUgICB8DQo+ICBcIHNvdXJjZSBj b2RlISAgLw0KPiAgIC0tLS0tLS0tLS0tLS0tLQ0KPiAgICAgwq9cXyjjg4QpXy/Crw0K