From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7A8EAC433EF for ; Mon, 18 Oct 2021 19:52:06 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4470C60F9D for ; Mon, 18 Oct 2021 19:52:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 4470C60F9D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=vgUYNf8Gp45+NvyyQpbSaLBZDXmrhJOS0NdkszPNHKo=; b=b6viBH9P+unWVU ehxio1GVPLpzcG8HjNuYXdi7ifeHFgW3PInxYx5kpWiuOApRS6FKTaoouBv92+sjna4OSUyJtqlHb jxc7lJvmBBWsHsnIegKJv7WzAxGfq9RPG0HSNXHL0pp59RXp7BRe+qGnLxgVsharHaLJCQzBKE/vW TS/uuf3tAqOWiptJlNi+z3y1mo1xrG5+KNd757G7L2JftRgyEP1ah3csf+PlhSh/Xz/czqqblK1G1 gi2Ep8SYDbY43PcgW5jRWlHaGVP8/rLSU57aC+WBB6w3sYlwpKvRlQhISkiHMYyDQwk5HKKUgbsjQ /Mpd+T0xW67t0X+tieMQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mcYeG-00H8Ly-9R; Mon, 18 Oct 2021 19:50:17 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mcYXf-00H5VO-4z for linux-arm-kernel@lists.infradead.org; Mon, 18 Oct 2021 19:43:31 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 685E6ED1; Mon, 18 Oct 2021 12:43:22 -0700 (PDT) Received: from e120937-lin (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 665AE3F694; Mon, 18 Oct 2021 12:43:21 -0700 (PDT) Date: Mon, 18 Oct 2021 20:43:17 +0100 From: Cristian Marussi To: Etienne Carriere Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Sudeep Holla , Vincent Guittot Subject: Re: [PATCH v3 2/2] firmware: arm_scmi: Add optee transport Message-ID: <20211018194317.GA6526@e120937-lin> References: <20211018114046.25571-1-etienne.carriere@linaro.org> <20211018114046.25571-2-etienne.carriere@linaro.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20211018114046.25571-2-etienne.carriere@linaro.org> User-Agent: Mutt/1.9.4 (2018-02-28) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211018_124327_415302_1A49CF86 X-CRM114-Status: GOOD ( 43.14 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gTW9uLCBPY3QgMTgsIDIwMjEgYXQgMDE6NDA6NDZQTSArMDIwMCwgRXRpZW5uZSBDYXJyaWVy ZSB3cm90ZToKPiBBZGQgYSBuZXcgdHJhbnNwb3J0IGNoYW5uZWwgdG8gdGhlIFNDTUkgZmlybXdh cmUgaW50ZXJmYWNlIGRyaXZlciBmb3IKPiBTQ01JIG1lc3NhZ2UgZXhjaGFuZ2UgYmFzZWQgb24g b3B0ZWUgdHJhbnNwb3J0IGNoYW5uZWwuIFRoZSBvcHRlZQo+IHRyYW5zcG9ydCBpcyByZWFsaXpl ZCBieSBjb25uZWN0aW5nIGFuZCBpbnZva2luZyBPUC1URUUgU0NNSSBzZXJ2aWNlCj4gaW50ZXJm YWNlIFBUQS4KPiAKPiBPcHRlZSB0cmFuc3BvcnQgc3VwcG9ydCAoQ09ORklHX0FSTV9TQ01JX1RS QU5TUE9SVF9PUFRFRSkgaXMgZGVmYXVsdAo+IGVuYWJsZWQgd2hlbiBvcHRlZSBkcml2ZXIgKENG R19PUFRFRSkgaXMgZW5hYmxlZC4gRWZmZWN0aXZlIG9wdGVlCj4gdHJhbnNwb3J0IGlzIHNldHVw IHVwb24gT1AtVEVFIFNDTUkgc2VydmljZSBkaXNjb3ZlcnkgYXQgb3B0ZWUKPiBkZXZpY2UgaW5p dGlhbGl6YXRpb24uIEZvciB0aGlzIFNDTUkgVVVJRCBpcyByZWdpc3RlcmVkIHRvIHRoZSBvcHRl ZQo+IGJ1cyBmb3IgcHJvYmluZy4gVGhpcyBpcyBkb25lIGF0IGRldmljZV9pbml0IGluaXRjYWxs IGxldmVsLCBhZnRlcgo+IG9wdGVlIGJ1cyBpbml0aWFsaXphdGlvbiB0aGF0IGlzIGRvbmUgYXQg c3Vic3lzX2luaXQgbGV2ZWwsIGFzIHRoZSBzY21pCj4gZHJpdmVyIGluaXRpYWxpemF0aW9uLgo+ IAo+IFRoZSBvcHRlZSB0cmFuc3BvcnQgY2FuIHVzZSBhIHN0YXRpY2FsbHkgZGVmaW5lZCBzaGFy ZWQgbWVtb3J5IGluCj4gd2hpY2ggY2FzZSBTQ01JIGRldmljZSB0cmVlIG5vZGUgZGVmaW5lcyBp dCB1c2luZyBhbiAiYXJtLHNjbWktc2htZW0iCj4gY29tcGF0aWJsZSBwaGFuZGxlIHRocm91Z2gg cHJvcGVydHkgc2htZW0uIEFsdGVybmF0aXZlbHksIG9wdGVlIHRyYW5zcG9ydAo+IGFsbG9jYXRl cyB0aGUgc2hhcmVkIG1lbW9yeSBidWZmZXIgZnJvbSB0aGUgb3B0ZWUgZHJpdmVyIHdoZW4gbm8g c2htZW0KPiBwcm9wZXJ0eSBpcyBkZWZpbmVkLgo+IAo+IFRoZSBwcm90b2NvbCB1c2VkIHRvIGV4 Y2hhbmdlIFNDTUkgbWVzc2FnZSBvdmVyIHRoYXQgc2hhcmVkIG1lbW9yeSBpcwo+IG5lZ290aWF0 ZWQgYmV0d2VlbiBvcHRlZSB0cmFuc3BvcnQgZHJpdmVyIGFuZCB0aGUgT1AtVEVFIHNlcnZpY2Ug dGhyb3VnaAo+IGNhcGFiaWxpdGllcyBleGNoYW5nZS4KPiAKPiBPUC1URUUgU0NNSSBzZXJ2aWNl IGlzIGludGVncmF0ZWQgaW4gT1AtVEVFIHNpbmNlIGl0cyByZWxlYXNlIHRhZyAzLjEzLjAuCj4g VGhlIHNlcnZpY2UgaW50ZXJmYWNlIGlzIHB1Ymxpc2hlZCBpbiBbMV0uCj4gCj4gTGluazogWzFd IGh0dHBzOi8vZ2l0aHViLmNvbS9PUC1URUUvb3B0ZWVfb3MvYmxvYi8zLjEzLjAvbGliL2xpYnV0 ZWUvaW5jbHVkZS9wdGFfc2NtaV9jbGllbnQuaAo+IENjOiBDcmlzdGlhbiBNYXJ1c3NpIDxjcmlz dGlhbi5tYXJ1c3NpQGFybS5jb20+Cj4gQ2M6IFN1ZGVlcCBIb2xsYSA8c3VkZWVwLmhvbGxhQGFy bS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogRXRpZW5uZSBDYXJyaWVyZSA8ZXRpZW5uZS5jYXJyaWVy ZUBsaW5hcm8ub3JnPgo+IC0tLQo+IENoYW5nZXMgc2luY2UgdjI6Cj4gLSBSZWJhc2Ugb24gZm9y LW5leHQvc2NtaSwgYmFzZWQgb24gTGludXggdjUuMTUtcmMxLgo+IC0gSW1wbGVtZW50IHN1cHBv cnQgZm9yIGR5bmFtaWMgYW5kIHN0YXRpYyBzaGFyZWQgbWVtb3J5Lgo+IC0gRmFjdG9yaXplIHNv bWUgZnVuY3Rpb25zIGFuZCBzaW1wbGlmeSB0cmFuc3BvcnQgZXhpdCBzZXF1ZW5jZS4KPiAtIFJl bmFtZSBkcml2ZXIgc291cmNlIGZpbGUgZnJvbSBvcHRlZV9zZXJ2aWNlLmMgdG8gb3B0ZWUuYy4K PiAKPiBObyBjaGFuZ2Ugc2luY2UgdjEKPiAtLS0KCkhpIEV0aWVubmUsCgphIGZldyByZW1hcmtz IGJlbG93LgoKPiAgZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9LY29uZmlnICB8ICAxMiArCj4g IGRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvTWFrZWZpbGUgfCAgIDEgKwo+ICBkcml2ZXJzL2Zp cm13YXJlL2FybV9zY21pL2NvbW1vbi5oIHwgICAzICsKPiAgZHJpdmVycy9maXJtd2FyZS9hcm1f c2NtaS9kcml2ZXIuYyB8ICAgMyArCj4gIGRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvb3B0ZWUu YyAgfCA1NTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgNSBmaWxlcyBjaGFuZ2Vk LCA1NzggaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9maXJtd2Fy ZS9hcm1fc2NtaS9vcHRlZS5jCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZmlybXdhcmUvYXJt X3NjbWkvS2NvbmZpZyBiL2RyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvS2NvbmZpZwo+IGluZGV4 IDNkNzA4MWU4NDg1My4uOTEwN2UyNDkwMjNjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZmlybXdh cmUvYXJtX3NjbWkvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvS2Nv bmZpZwo+IEBAIC03Nyw2ICs3NywxOCBAQCBjb25maWcgQVJNX1NDTUlfVFJBTlNQT1JUX1ZJUlRJ Two+ICAJICBJZiB5b3Ugd2FudCB0aGUgQVJNIFNDTUkgUFJPVE9DT0wgc3RhY2sgdG8gaW5jbHVk ZSBzdXBwb3J0IGZvciBhCj4gIAkgIHRyYW5zcG9ydCBiYXNlZCBvbiBWaXJ0SU8sIGFuc3dlciBZ Lgo+ICAKPiArY29uZmlnIEFSTV9TQ01JX1RSQU5TUE9SVF9PUFRFRQo+ICsJYm9vbCAiU0NNSSB0 cmFuc3BvcnQgYmFzZWQgb24gT1AtVEVFIHNlcnZpY2UiCj4gKwlkZXBlbmRzIG9uIE9QVEVFCj4g KwlzZWxlY3QgQVJNX1NDTUlfSEFWRV9UUkFOU1BPUlQKPiArCXNlbGVjdCBBUk1fU0NNSV9IQVZF X1NITUVNCj4gKwlkZWZhdWx0IHkKPiArCWhlbHAKPiArCSAgVGhpcyBlbmFibGVzIHRoZSBPUC1U RUUgc2VydmljZSBiYXNlZCB0cmFuc3BvcnQgZm9yIFNDTUkuCj4gKwo+ICsJICBJZiB5b3Ugd2Fu dCB0aGUgQVJNIFNDTUkgUFJPVE9DT0wgc3RhY2sgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBhCj4g KwkgIHRyYW5zcG9ydCBiYXNlZCBvbiBPUC1URUUgU0NNSSBzZXJ2aWNlLCBhbnN3ZXIgWS4KPiAr Cj4gIGVuZGlmICNBUk1fU0NNSV9QUk9UT0NPTAo+ICAKClNvIHRoaXMgJ2RlcGVuZHMgb24gT1BU RUUnIHJlbWluZGVkIG1lIG9mIGEgc2ltaWxhciBpc3N1ZSBvbiBWSVJUSU8KdHJhbnNwb3J0IHNw b3R0ZWQgYnkgYSBib3QgKHNlZSB0aGUgZml4IGZvciBWaXJ0aW8gYXQ6IGM5MDUyMWEwZTk0ZiBm aXJtd2FyZToKYXJtX3NjbWk6IEZpeCB2aXJ0aW8gdHJhbnNwb3J0IEtjb25maWcgZGVwZW5kZW5j eSksIHRoYXQgY29uc2lzdGUgaW4gYSBicm9rZW4KYnVpbGQgd2hlbiBTQ01JIHdhcyBjb21waWxl ZCBidWlsdC1pbiB3aXRoIFZJUlRJTyB0cmFuc3BvcnQgc3VwcG9ydCB3aXRoCkFSTV9TQ01JX1BS T1RPQ09MPXkgd2hpbGUgdGhlIGNvcmUgd2FzIENPTkZJR19WSVJUSU89bS4KClNvIEkgdHJpZWQg c2ltaWxhcmx5IHRvIHNldCBDT05GSUdfT1BURUU9bSB3aGlsZSBrZWVwaW5nIEFSTV9TQ01JX1BS T1RPQ09MPXkKZXhwZWN0aW5nIHRvIHNlZSBhIHNpbWlsYXIgaXNzdWUgYXMgaW4gVmlydElPIChp LmUuIG5vdCBiZWluZyBhYmxlIHRvIGFjY2VzcwpvcHRlZSBtb2R1bGUgc3ltYm9scyBmcm9tIHRo ZSBidWlsdGluIFNDTUkpLCBpbnN0ZWFkIEkgc3BvdHRlZCBhIGRpZmZlcmVudCBidWcgOkQKCiAg QVIgICAgICBkcml2ZXJzL2Jhc2UvYnVpbHQtaW4uYSAgICAgICAgICAgICAgICAgICAgICAgICAK L2hvbWUvY3JpbWFyMDEvQVJNL2Rldi9zcmMvcGRzdy9saW51eC9kcml2ZXJzL2Zpcm13YXJlL2Fy bV9zY21pL29wdGVlLmM6IEluIGZ1bmN0aW9uIOKAmGludm9rZV9wcm9jZXNzX3NtdF9jaGFubmVs 4oCZOgovaG9tZS9jcmltYXIwMS9BUk0vZGV2L3NyYy9wZHN3L2xpbnV4L2RyaXZlcnMvZmlybXdh cmUvYXJtX3NjbWkvb3B0ZWUuYzoyMzM6Mjc6IGVycm9yOiDigJhzY21pX29wdGVlX2Rlc2PigJkg dW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4g4oCY c2NtaV9zbWNfZGVzY+KAmT8KICAgY29uc3Qgc2l6ZV90IG1zZ19zaXplID0gc2NtaV9vcHRlZV9k ZXNjLm1heF9tc2dfc2l6ZTsgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICBefn5+fn5+fn5+fn5+fn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjbWlfc21jX2Rlc2MgICAgICAgICAgICAg ICAgICAgICAgIAovaG9tZS9jcmltYXIwMS9BUk0vZGV2L3NyYy9wZHN3L2xpbnV4L2RyaXZlcnMv ZmlybXdhcmUvYXJtX3NjbWkvb3B0ZWUuYzoyMzM6Mjc6IG5vdGU6IGVhY2ggdW5kZWNsYXJlZCBp ZGVudGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkgb25jZSBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBl YXJzIGluCi9ob21lL2NyaW1hcjAxL0FSTS9kZXYvc3JjL3Bkc3cvbGludXgvZHJpdmVycy9maXJt d2FyZS9hcm1fc2NtaS9vcHRlZS5jOiBJbiBmdW5jdGlvbiDigJhzZXR1cF9keW5hbWljX3NobWVt 4oCZOgovaG9tZS9jcmltYXIwMS9BUk0vZGV2L3NyYy9wZHN3L2xpbnV4L2RyaXZlcnMvZmlybXdh cmUvYXJtX3NjbWkvb3B0ZWUuYzoyNjY6MjY6IGVycm9yOiDigJhzY21pX29wdGVlX2Rlc2PigJkg dW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4g4oCY c2NtaV9zbWNfZGVzY+KAmT8KICBjb25zdCBzaXplX3QgbXNnX3NpemUgPSBzY21pX29wdGVlX2Rl c2MubWF4X21zZ19zaXplOyAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg IF5+fn5+fn5+fn5+fn5+fiAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICBzY21pX3NtY19kZXNjICAgICAgICAgICAgICAgICAgICAgICAgICAKL2hvbWUvY3Jp bWFyMDEvQVJNL2Rldi9zcmMvcGRzdy9saW51eC9zY3JpcHRzL01ha2VmaWxlLmJ1aWxkOjI3Nzog cmVjaXBlIGZvciB0YXJnZXQgJ2RyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvb3B0ZWUubycgZmFp bGVkICAgICAgICAgICAgICAgICAgICAgICAgICAKbWFrZVs0XTogKioqIFtkcml2ZXJzL2Zpcm13 YXJlL2FybV9zY21pL29wdGVlLm9dIEVycm9yIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAptYWtlWzRd OiAqKiogV2FpdGluZyBmb3IgdW5maW5pc2hlZCBqb2JzLi4uLiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKSW4gZmFjdCB0aG9zZSBzY21pX29wdGVl X2Rlc2MgYXJlIHJlZmVyZW5jZSB0byBhIGdsb2JhbCBvbmx5IGRlY2xhcmVkCmRvd24gYmVsb3cu IEZpeGVkIHdpdGggYSBmZXcgZGVmaW5lcyB0byBjYXJyeSBvbjoKCi0tLTg8LS0tLS0tLS0tLS0t LS0tLS0tCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9vcHRlZS5jIGIv ZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9vcHRlZS5jCmluZGV4IDY0YWFiYTRhOGJmMi4uOTNh ODRjOTE0NTdiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL29wdGVlLmMK KysrIGIvZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9vcHRlZS5jCkBAIC0xOCw2ICsxOCw4IEBA CiAKICNkZWZpbmUgRFJJVkVSX05BTUUgIm9wdGVlLXNjbWkiCiAKKyNkZWZpbmUgU0NNSV9PUFRF RV9NQVhfTVNHX1NJWkUgICAgICAgICAgICAgICAgMTI4CisKIGVudW0gb3B0ZWVfc21jaV9wdGFf Y21kIHsKICAgICAgICAvKgogICAgICAgICAqIFBUQV9TQ01JX0NNRF9DQVBBQklMSVRJRVMgLSBH ZXQgY2hhbm5lbCBjYXBhYmlsaXRpZXMKQEAgLTIzMCw3ICsyMzIsNyBAQCBzdGF0aWMgaW50IGlu dm9rZV9wcm9jZXNzX3NtdF9jaGFubmVsKHN0cnVjdCBvcHRlZV9jaGFubmVsICpjaGFubmVsKQog ICAgICAgIHBhcmFtWzBdLnUudmFsdWUuYSA9IGNoYW5uZWwtPmNoYW5uZWxfaWQ7CiAKICAgICAg ICBpZiAoY2hhbm5lbC0+dGVlX3NobSkgewotICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG1z Z19zaXplID0gc2NtaV9vcHRlZV9kZXNjLm1heF9tc2dfc2l6ZTsKKyAgICAgICAgICAgICAgIGNv bnN0IHNpemVfdCBtc2dfc2l6ZSA9IFNDTUlfT1BURUVfTUFYX01TR19TSVpFOwogCiAgICAgICAg ICAgICAgICBwYXJhbVsxXS5hdHRyID0gVEVFX0lPQ1RMX1BBUkFNX0FUVFJfVFlQRV9NRU1SRUZf SU5PVVQ7CiAgICAgICAgICAgICAgICBwYXJhbVsxXS51Lm1lbXJlZi5zaG0gPSBjaGFubmVsLT50 ZWVfc2htOwpAQCAtMjYzLDcgKzI2NSw3IEBAIHN0YXRpYyBib29sIG9wdGVlX2NoYW5fYXZhaWxh YmxlKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGlkeCkKIAogc3RhdGljIGludCBzZXR1cF9keW5h bWljX3NobWVtKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG9wdGVlX2NoYW5uZWwgKmNoYW5u ZWwpCiB7Ci0gICAgICAgY29uc3Qgc2l6ZV90IG1zZ19zaXplID0gc2NtaV9vcHRlZV9kZXNjLm1h eF9tc2dfc2l6ZTsKKyAgICAgICBjb25zdCBzaXplX3QgbXNnX3NpemUgPSBTQ01JX09QVEVFX01B WF9NU0dfU0laRTsKIAogICAgICAgIGNoYW5uZWwtPnRlZV9zaG0gPSB0ZWVfc2htX2FsbG9jX2tl cm5lbF9idWYob3B0ZWVfcHJpdmF0ZS0+dGVlX2N0eCwgbXNnX3NpemUpOwogICAgICAgIGlmIChJ U19FUlIoY2hhbm5lbC0+dGVlX3NobSkpIHsKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CgpBZnRlciB0aGUgYWJvdmUgY2hhbmdlIGl0IGNvbXBpbGVkIGZpbmUsIHNvIEkgd2VudCBhIHN0 ZXAgZnVydGhlciBhbmQgY29uZmlndXJlZCBhbHNvCkNPTkZJR19URUU9bSAoanVzdCB0cnlpbmcg dG8gcmVwcm9kdWNlIHdoYXQgYm90IHNhdyBvbiBzaW1pbGFyIFZpcnRJTyBlZWguLi4uIG5vdCB0 aGF0CkkgYW0gc28gZXZpbCBhbmQgc2FkaWMgOkQpCgpBbmQgaW5kZWVkIG5vdyAod2l0aCBBUk1f U0NNSV9QUk9UT0NPTD15IGFuZCBDT05GSUdfVEVFPW0pIEkgZ2V0OgoKCiAgR0VOICAgICBtb2R1 bGVzLmJ1aWx0aW4KICBMRCAgICAgIC50bXBfdm1saW51eC5rYWxsc3ltczEKL29wdC90b29sY2hh aW5zL2djYy1hcm0tOC4zLTIwMTkuMDMteDg2XzY0LWFhcmNoNjQtbGludXgtZ251L2Jpbi9hYXJj aDY0LWxpbnV4LWdudS1sZDogVW5leHBlY3RlZCBHT1QvUExUIGVudHJpZXMgZGV0ZWN0ZWQhCi9v cHQvdG9vbGNoYWlucy9nY2MtYXJtLTguMy0yMDE5LjAzLXg4Nl82NC1hYXJjaDY0LWxpbnV4LWdu dS9iaW4vYWFyY2g2NC1saW51eC1nbnUtbGQ6IFVuZXhwZWN0ZWQgcnVuLXRpbWUgcHJvY2VkdXJl IGxpbmthZ2VzIGRldGVjdGVkIQovb3B0L3Rvb2xjaGFpbnMvZ2NjLWFybS04LjMtMjAxOS4wMy14 ODZfNjQtYWFyY2g2NC1saW51eC1nbnUvYmluL2FhcmNoNjQtbGludXgtZ251LWxkOiBkcml2ZXJz L2Zpcm13YXJlL2FybV9zY21pL29wdGVlLm86IGluIGZ1bmN0aW9uIGBpbnZva2VfcHJvY2Vzc19z bXRfY2hhbm5lbCc6Ci9ob21lL2NyaW1hcjAxL0FSTS9kZXYvc3JjL3Bkc3cvbGludXgvZHJpdmVy cy9maXJtd2FyZS9hcm1fc2NtaS9vcHRlZS5jOjI0NzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBg dGVlX2NsaWVudF9pbnZva2VfZnVuYycKL29wdC90b29sY2hhaW5zL2djYy1hcm0tOC4zLTIwMTku MDMteDg2XzY0LWFhcmNoNjQtbGludXgtZ251L2Jpbi9hYXJjaDY0LWxpbnV4LWdudS1sZDogL2hv bWUvY3JpbWFyMDEvQVJNL2Rldi9zcmMvcGRzdy9saW51eC9kcml2ZXJzL2Zpcm13YXJlL2FybV9z Y21pL29wdGVlLmM6MjQ3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB0ZWVfY2xpZW50X2ludm9r ZV9mdW5jJwovb3B0L3Rvb2xjaGFpbnMvZ2NjLWFybS04LjMtMjAxOS4wMy14ODZfNjQtYWFyY2g2 NC1saW51eC1nbnUvYmluL2FhcmNoNjQtbGludXgtZ251LWxkOiBkcml2ZXJzL2Zpcm13YXJlL2Fy bV9zY21pL29wdGVlLm86IGluIGZ1bmN0aW9uIGBvcHRlZV9jaGFuX2ZyZWUnOgovaG9tZS9jcmlt YXIwMS9BUk0vZGV2L3NyYy9wZHN3L2xpbnV4L2RyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvb3B0 ZWUuYzozOTc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHRlZV9zaG1fZnJlZScKL29wdC90b29s Y2hhaW5zL2djYy1hcm0tOC4zLTIwMTkuMDMteDg2XzY0LWFhcmNoNjQtbGludXgtZ251L2Jpbi9h YXJjaDY0LWxpbnV4LWdudS1sZDogZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9vcHRlZS5vOiBp biBmdW5jdGlvbiBgb3Blbl9zZXNzaW9uJzoKL2hvbWUvY3JpbWFyMDEvQVJNL2Rldi9zcmMvcGRz dy9saW51eC9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL29wdGVlLmM6MTM3OiB1bmRlZmluZWQg cmVmZXJlbmNlIHRvIGB0ZWVfY2xpZW50X29wZW5fc2Vzc2lvbicKL29wdC90b29sY2hhaW5zL2dj Yy1hcm0tOC4zLTIwMTkuMDMteDg2XzY0LWFhcmNoNjQtbGludXgtZ251L2Jpbi9hYXJjaDY0LWxp bnV4LWdudS1sZDogZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9vcHRlZS5vOiBpbiBmdW5jdGlv biBgb3B0ZWVfc2VydmljZV9yZW1vdmUnOgovaG9tZS9jcmltYXIwMS9BUk0vZGV2L3NyYy9wZHN3 L2xpbnV4L2RyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvb3B0ZWUuYzo1MTY6IHVuZGVmaW5lZCBy ZWZlcmVuY2UgdG8gYHRlZV9jbGllbnRfY2xvc2VfY29udGV4dCcKL29wdC90b29sY2hhaW5zL2dj Yy1hcm0tOC4zLTIwMTkuMDMteDg2XzY0LWFhcmNoNjQtbGludXgtZ251L2Jpbi9hYXJjaDY0LWxp bnV4LWdudS1sZDogZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9vcHRlZS5vOiBpbiBmdW5jdGlv biBgb3B0ZWVfc2VydmljZV9wcm9iZSc6Ci9ob21lL2NyaW1hcjAxL0FSTS9kZXYvc3JjL3Bkc3cv bGludXgvZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9vcHRlZS5jOjQ4MTogdW5kZWZpbmVkIHJl ZmVyZW5jZSB0byBgdGVlX2NsaWVudF9vcGVuX2NvbnRleHQnCi9vcHQvdG9vbGNoYWlucy9nY2Mt YXJtLTguMy0yMDE5LjAzLXg4Nl82NC1hYXJjaDY0LWxpbnV4LWdudS9iaW4vYWFyY2g2NC1saW51 eC1nbnUtbGQ6IC9ob21lL2NyaW1hcjAxL0FSTS9kZXYvc3JjL3Bkc3cvbGludXgvZHJpdmVycy9m aXJtd2FyZS9hcm1fc2NtaS9vcHRlZS5jOjUwMTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgdGVl X2NsaWVudF9jbG9zZV9jb250ZXh0Jwovb3B0L3Rvb2xjaGFpbnMvZ2NjLWFybS04LjMtMjAxOS4w My14ODZfNjQtYWFyY2g2NC1saW51eC1nbnUvYmluL2FhcmNoNjQtbGludXgtZ251LWxkOiBkcml2 ZXJzL2Zpcm13YXJlL2FybV9zY21pL29wdGVlLm86IGluIGZ1bmN0aW9uIGBnZXRfY2FwYWJpbGl0 aWVzJzoKL2hvbWUvY3JpbWFyMDEvQVJNL2Rldi9zcmMvcGRzdy9saW51eC9kcml2ZXJzL2Zpcm13 YXJlL2FybV9zY21pL29wdGVlLmM6MTcyOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB0ZWVfY2xp ZW50X2ludm9rZV9mdW5jJwovb3B0L3Rvb2xjaGFpbnMvZ2NjLWFybS04LjMtMjAxOS4wMy14ODZf NjQtYWFyY2g2NC1saW51eC1nbnUvYmluL2FhcmNoNjQtbGludXgtZ251LWxkOiBkcml2ZXJzL2Zp cm13YXJlL2FybV9zY21pL29wdGVlLm86IGluIGZ1bmN0aW9uIGBjbG9zZV9zZXNzaW9uJzoKL2hv bWUvY3JpbWFyMDEvQVJNL2Rldi9zcmMvcGRzdy9saW51eC9kcml2ZXJzL2Zpcm13YXJlL2FybV9z Y21pL29wdGVlLmM6MTUxOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB0ZWVfY2xpZW50X2Nsb3Nl X3Nlc3Npb24nCi9vcHQvdG9vbGNoYWlucy9nY2MtYXJtLTguMy0yMDE5LjAzLXg4Nl82NC1hYXJj aDY0LWxpbnV4LWdudS9iaW4vYWFyY2g2NC1saW51eC1nbnUtbGQ6IGRyaXZlcnMvZmlybXdhcmUv YXJtX3NjbWkvb3B0ZWUubzogaW4gZnVuY3Rpb24gYGdldF9jaGFubmVsJzoKL2hvbWUvY3JpbWFy MDEvQVJNL2Rldi9zcmMvcGRzdy9saW51eC9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL29wdGVl LmM6MjA5OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB0ZWVfY2xpZW50X2ludm9rZV9mdW5jJwov b3B0L3Rvb2xjaGFpbnMvZ2NjLWFybS04LjMtMjAxOS4wMy14ODZfNjQtYWFyY2g2NC1saW51eC1n bnUvYmluL2FhcmNoNjQtbGludXgtZ251LWxkOiBkcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL29w dGVlLm86IGluIGZ1bmN0aW9uIGBzZXR1cF9keW5hbWljX3NobWVtJzoKL2hvbWUvY3JpbWFyMDEv QVJNL2Rldi9zcmMvcGRzdy9saW51eC9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL29wdGVlLmM6 MjcwOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB0ZWVfc2htX2FsbG9jX2tlcm5lbF9idWYnCi9v cHQvdG9vbGNoYWlucy9nY2MtYXJtLTguMy0yMDE5LjAzLXg4Nl82NC1hYXJjaDY0LWxpbnV4LWdu dS9iaW4vYWFyY2g2NC1saW51eC1nbnUtbGQ6IC9ob21lL2NyaW1hcjAxL0FSTS9kZXYvc3JjL3Bk c3cvbGludXgvZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9vcHRlZS5jOjI3NjogdW5kZWZpbmVk IHJlZmVyZW5jZSB0byBgdGVlX3NobV9nZXRfdmEnCi9vcHQvdG9vbGNoYWlucy9nY2MtYXJtLTgu My0yMDE5LjAzLXg4Nl82NC1hYXJjaDY0LWxpbnV4LWdudS9iaW4vYWFyY2g2NC1saW51eC1nbnUt bGQ6IGRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvb3B0ZWUubzogaW4gZnVuY3Rpb24gYGNsb3Nl X3Nlc3Npb24nOgovaG9tZS9jcmltYXIwMS9BUk0vZGV2L3NyYy9wZHN3L2xpbnV4L2RyaXZlcnMv ZmlybXdhcmUvYXJtX3NjbWkvb3B0ZWUuYzoxNTE6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHRl ZV9jbGllbnRfY2xvc2Vfc2Vzc2lvbicKL29wdC90b29sY2hhaW5zL2djYy1hcm0tOC4zLTIwMTku MDMteDg2XzY0LWFhcmNoNjQtbGludXgtZ251L2Jpbi9hYXJjaDY0LWxpbnV4LWdudS1sZDogZHJp dmVycy9maXJtd2FyZS9hcm1fc2NtaS9vcHRlZS5vOiguZGF0YSsweDEwKTogdW5kZWZpbmVkIHJl ZmVyZW5jZSB0byBgdGVlX2J1c190eXBlJwovaG9tZS9jcmltYXIwMS9BUk0vZGV2L3NyYy9wZHN3 L2xpbnV4L01ha2VmaWxlOjExODk6IHJlY2lwZSBmb3IgdGFyZ2V0ICd2bWxpbnV4JyBmYWlsZWQK bWFrZVsxXTogKioqIFt2bWxpbnV4XSBFcnJvciAxCm1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5 ICcvaG9tZS9jcmltYXIwMS9BUk0vZGV2L3NyYy9wZHN3L291dF9saW51eCcKTWFrZWZpbGU6MjE5 OiByZWNpcGUgZm9yIHRhcmdldCAnX19zdWItbWFrZScgZmFpbGVkCgpUYWtpbmcgYSBzaW1pbGFy IGFwcHJvYWNoIHRvIFZpcnRpbywgdGhpcyBmaXhlZCBmb3IgbWUKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2Zpcm13YXJlL2FybV9zY21pL0tjb25maWcgYi9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21p L0tjb25maWcKaW5kZXggOTEwN2UyNDkwMjNjLi4zMDc0NjM1MDM0OWMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvS2NvbmZpZworKysgYi9kcml2ZXJzL2Zpcm13YXJlL2Fy bV9zY21pL0tjb25maWcKQEAgLTc5LDcgKzc5LDcgQEAgY29uZmlnIEFSTV9TQ01JX1RSQU5TUE9S VF9WSVJUSU8KIAogY29uZmlnIEFSTV9TQ01JX1RSQU5TUE9SVF9PUFRFRQogICAgICAgIGJvb2wg IlNDTUkgdHJhbnNwb3J0IGJhc2VkIG9uIE9QLVRFRSBzZXJ2aWNlIgotICAgICAgIGRlcGVuZHMg b24gT1BURUUKKyAgICAgICBkZXBlbmRzIG9uIE9QVEVFPXkgfHwgT1BURUU9QVJNX1NDTUlfUFJP VE9DT0wKICAgICAgICBzZWxlY3QgQVJNX1NDTUlfSEFWRV9UUkFOU1BPUlQKICAgICAgICBzZWxl Y3QgQVJNX1NDTUlfSEFWRV9TSE1FTQogICAgICAgIGRlZmF1bHQgeQoKd2hpY2ggYmFzaWNhbGx5 IGRpc2FibGVzIEFSTV9TQ01JX1RSQU5TUE9SVF9PUFRFRSB3aGVuIENPTkZJR19PUFRFRT1tIEFO RApBUk1fU0NNSV9UUkFOU1BPUlRfT1BURUU9eTogaW4gdGhpcyBzY2VuYXJpbyBpZiBURUUgaXMg PW0geW91IGhhdmUgdG8gYnVpbGQKQVJNX1NDTUlfUFJPVE9DT0w9bSB0b28gdG8gYmUgYWJsZSB0 byBpbmNsdWRlIEFSTV9TQ01JX1RSQU5TUE9SVF9PUFRFRS4KCgo+ICBjb25maWcgQVJNX1NDTUlf UE9XRVJfRE9NQUlOCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvTWFr ZWZpbGUgYi9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL01ha2VmaWxlCj4gaW5kZXggMWRjZjEy M2Q2NGFiLi5lZjY2ZWM4Y2E5MTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9maXJtd2FyZS9hcm1f c2NtaS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvTWFrZWZpbGUK PiBAQCAtNiw2ICs2LDcgQEAgc2NtaS10cmFuc3BvcnQtJChDT05GSUdfQVJNX1NDTUlfVFJBTlNQ T1JUX01BSUxCT1gpICs9IG1haWxib3gubwo+ICBzY21pLXRyYW5zcG9ydC0kKENPTkZJR19BUk1f U0NNSV9UUkFOU1BPUlRfU01DKSArPSBzbWMubwo+ICBzY21pLXRyYW5zcG9ydC0kKENPTkZJR19B Uk1fU0NNSV9IQVZFX01TRykgKz0gbXNnLm8KPiAgc2NtaS10cmFuc3BvcnQtJChDT05GSUdfQVJN X1NDTUlfVFJBTlNQT1JUX1ZJUlRJTykgKz0gdmlydGlvLm8KPiArc2NtaS10cmFuc3BvcnQtJChD T05GSUdfQVJNX1NDTUlfVFJBTlNQT1JUX09QVEVFKSArPSBvcHRlZS5vCj4gIHNjbWktcHJvdG9j b2xzLXkgPSBiYXNlLm8gY2xvY2subyBwZXJmLm8gcG93ZXIubyByZXNldC5vIHNlbnNvcnMubyBz eXN0ZW0ubyB2b2x0YWdlLm8KPiAgc2NtaS1tb2R1bGUtb2JqcyA6PSAkKHNjbWktYnVzLXkpICQo c2NtaS1kcml2ZXIteSkgJChzY21pLXByb3RvY29scy15KSBcCj4gIAkJICAgICQoc2NtaS10cmFu c3BvcnQteSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9jb21tb24u aCBiL2RyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvY29tbW9uLmgKPiBpbmRleCBkZWExYmZiZTEw NTIuLjgyZmYzYzNhNmQyZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21p L2NvbW1vbi5oCj4gKysrIGIvZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9jb21tb24uaAo+IEBA IC00MjEsNiArNDIxLDkgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzY21pX2Rlc2Mgc2NtaV9zbWNf ZGVzYzsKPiAgI2lmZGVmIENPTkZJR19BUk1fU0NNSV9UUkFOU1BPUlRfVklSVElPCj4gIGV4dGVy biBjb25zdCBzdHJ1Y3Qgc2NtaV9kZXNjIHNjbWlfdmlydGlvX2Rlc2M7Cj4gICNlbmRpZgo+ICsj aWZkZWYgQ09ORklHX09QVEVFCgpUaGlzIHNob3VsZCBiZTogCgojaWZkZWYgQ09ORklHX0FSTV9T Q01JX1RSQU5TUE9SVF9PUFRFRSAKCmlmIG5vdCBkaXNhYmxpbmcgT1BURUUgdHJhbnNwb3J0IGlu IEtjb25maWcgYnJlYWtzIHRoZSBidWlsZC4KCiBMRCAgICAgIC50bXBfdm1saW51eC5rYWxsc3lt czEKIC9vcHQvdG9vbGNoYWlucy9nY2MtYXJtLTguMy0yMDE5LjAzLXg4Nl82NC1hYXJjaDY0LWxp bnV4LWdudS9iaW4vYWFyY2g2NC1saW51eC1nbnUtbGQ6CiBkcml2ZXJzL2Zpcm13YXJlL2FybV9z Y21pL2RyaXZlci5vOigucm9kYXRhKzB4MjgwKTogdW5kZWZpbmVkIHJlZmVyZW5jZQogdG8gYHNj bWlfb3B0ZWVfZGVzYycKIC9ob21lL2NyaW1hcjAxL0FSTS9kZXYvc3JjL3Bkc3cvbGludXgvTWFr ZWZpbGU6MTE4OTogcmVjaXBlIGZvciB0YXJnZXQKICd2bWxpbnV4JyBmYWlsZWQKIG1ha2VbMV06 ICoqKiBbdm1saW51eF0gRXJyb3IgMQogbWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgJy9ob21l L2NyaW1hcjAxL0FSTS9kZXYvc3JjL3Bkc3cvb3V0X2xpbnV4JwoKCj4gK2V4dGVybiBjb25zdCBz dHJ1Y3Qgc2NtaV9kZXNjIHNjbWlfb3B0ZWVfZGVzYzsKPiArI2VuZGlmCj4gIAo+ICB2b2lkIHNj bWlfcnhfY2FsbGJhY2soc3RydWN0IHNjbWlfY2hhbl9pbmZvICpjaW5mbywgdTMyIG1zZ19oZHIs IHZvaWQgKnByaXYpOwo+ICB2b2lkIHNjbWlfZnJlZV9jaGFubmVsKHN0cnVjdCBzY21pX2NoYW5f aW5mbyAqY2luZm8sIHN0cnVjdCBpZHIgKmlkciwgaW50IGlkKTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9maXJtd2FyZS9hcm1fc2NtaS9kcml2ZXIuYyBiL2RyaXZlcnMvZmlybXdhcmUvYXJtX3Nj bWkvZHJpdmVyLmMKPiBpbmRleCBiNDA2YjNmNzhmNDYuLjA2ZjBhOTg0NmM3ZSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL2RyaXZlci5jCj4gKysrIGIvZHJpdmVycy9m aXJtd2FyZS9hcm1fc2NtaS9kcml2ZXIuYwo+IEBAIC0xOTk5LDYgKzE5OTksOSBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzY21pX29mX21hdGNoW10gPSB7Cj4gICNlbmRpZgo+ ICAjaWZkZWYgQ09ORklHX0FSTV9TQ01JX1RSQU5TUE9SVF9WSVJUSU8KPiAgCXsgLmNvbXBhdGli bGUgPSAiYXJtLHNjbWktdmlydGlvIiwgLmRhdGEgPSAmc2NtaV92aXJ0aW9fZGVzY30sCj4gKyNl bmRpZgo+ICsjaWZkZWYgQ09ORklHX09QVEVFCgpTYW1lIGFzIGFib3ZlIHNob3VsZCBiZSAjaWYg Q09ORklHX0FSTV9TQ01JX1RSQU5TUE9SVF9PUFRFRQoKPiArCXsgLmNvbXBhdGlibGUgPSAibGlu YXJvLHNjbWktb3B0ZWUiLCAuZGF0YSA9ICZzY21pX29wdGVlX2Rlc2MgfSwKPiAgI2VuZGlmCj4g IAl7IC8qIFNlbnRpbmVsICovIH0sCj4gIH07Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZmlybXdh cmUvYXJtX3NjbWkvb3B0ZWUuYyBiL2RyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvb3B0ZWUuYwo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5lMjk0Y2ZmMzdiZWEK PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9vcHRlZS5j Cj4gQEAgLTAsMCArMSw1NTkgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgTGluYXJvIEx0ZC4KPiArICov Cj4gKwo+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwu aD4KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvbXV0ZXgu aD4KPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3RlZV9kcnYu aD4KPiArI2luY2x1ZGUgPGxpbnV4L3V1aWQuaD4KPiArI2luY2x1ZGUgPHVhcGkvbGludXgvdGVl Lmg+Cj4gKwo+ICsjaW5jbHVkZSAiY29tbW9uLmgiCj4gKwo+ICsjZGVmaW5lIERSSVZFUl9OQU1F ICJvcHRlZS1zY21pIgo+ICsKPiArZW51bSBvcHRlZV9zbWNpX3B0YV9jbWQgewogICAgICAgICAg ICAgIF4KCSAgICAgIHNjbWkgPyBvciBpcyBpdCBhbm90aGVyIGZhbmN5IDRsZXR0ZXJzIGFjcm9u eW0gOkQKPiArCS8qCj4gKwkgKiBQVEFfU0NNSV9DTURfQ0FQQUJJTElUSUVTIC0gR2V0IGNoYW5u ZWwgY2FwYWJpbGl0aWVzCj4gKwkgKgo+ICsJICogW291dF0gICAgdmFsdWVbMF0uYTogQ2FwYWJp bGl0eSBiaXQgbWFzayAoZW51bSBwdGFfc2NtaV9jYXBzKQo+ICsJICogW291dF0gICAgdmFsdWVb MF0uYjogRXh0ZW5kZWQgY2FwYWJpbGl0aWVzIG9yIDAKPiArCSAqLwo+ICsJUFRBX1NDTUlfQ01E X0NBUEFCSUxJVElFUyA9IDAsCj4gKwo+ICsJLyoKPiArCSAqIFBUQV9TQ01JX0NNRF9QUk9DRVNT X1NNVF9DSEFOTkVMIC0gUHJvY2VzcyBTQ01JIG1lc3NhZ2UgaW4gU01UIGJ1ZmZlcgo+ICsJICoK PiArCSAqIFtpbl0gICAgIHZhbHVlWzBdLmE6IENoYW5uZWwgaGFuZGxlCj4gKwkgKgo+ICsJICog U2hhcmVkIG1lbW9yeSB1c2VkIGZvciBTQ01JIG1lc3NhZ2UvcmVzcG9uc2UgZXhoYW5nZSBpcyBl eHBlY3RlZAo+ICsJICogYWxyZWFkeSBpZGVudGlmaWVkIGFuZCBib3VuZCB0byBjaGFubmVsIGhh bmRsZSBpbiBib3RoIFNDTUkgYWdlbnQKPiArCSAqIGFuZCBTQ01JIHNlcnZlciAoT1AtVEVFKSBw YXJ0cy4KPiArCSAqIFRoZSBtZW1vcnkgdXNlcyBTTVQgaGVhZGVyIHRvIGNhcnJ5IFNDTUkgbWV0 YS1kYXRhIChwcm90b2NvbCBJRCBhbmQKPiArCSAqIHByb3RvY29sIG1lc3NhZ2UgSUQpLgo+ICsJ ICovCj4gKwlQVEFfU0NNSV9DTURfUFJPQ0VTU19TTVRfQ0hBTk5FTCA9IDEsCj4gKwo+ICsJLyoK PiArCSAqIFBUQV9TQ01JX0NNRF9QUk9DRVNTX1NNVF9DSEFOTkVMX01FU1NBR0UgLSBQcm9jZXNz IFNNVC9TQ01JIG1lc3NhZ2UKPiArCSAqCj4gKwkgKiBbaW5dICAgICB2YWx1ZVswXS5hOiBDaGFu bmVsIGhhbmRsZQo+ICsJICogW2luL291dF0gbWVtcmVmWzFdOiBNZXNzYWdlL3Jlc3BvbnNlIGJ1 ZmZlciAoU01UIGFuZCBTQ01JIHBheWxvYWQpCj4gKwkgKgo+ICsJICogU2hhcmVkIG1lbW9yeSB1 c2VkIGZvciBTQ01JIG1lc3NhZ2UvcmVzcG9uc2UgaXMgYSBTTVQgYnVmZmVyCj4gKwkgKiByZWZl cmVuY2VkIGJ5IHBhcmFtWzFdLiBJdCBzaGFsbCBiZSAxMjggYnl0ZXMgbGFyZ2UgdG8gZml0IHJl c3BvbnNlCj4gKwkgKiBwYXlsb2FkIHdoYXRldmVyIG1lc3NhZ2UgcGxheWxvYWQgc2l6ZS4KPiAr CSAqIFRoZSBtZW1vcnkgdXNlcyBTTVQgaGVhZGVyIHRvIGNhcnJ5IFNDTUkgbWV0YS1kYXRhIChw cm90b2NvbCBJRCBhbmQKPiArCSAqIHByb3RvY29sIG1lc3NhZ2UgSUQpLgo+ICsJICovCj4gKwlQ VEFfU0NNSV9DTURfUFJPQ0VTU19TTVRfQ0hBTk5FTF9NRVNTQUdFID0gMiwKPiArCj4gKwkvKgo+ ICsJICogUFRBX1NDTUlfQ01EX0dFVF9DSEFOTkVMIC0gR2V0IGNoYW5uZWwgaGFuZGxlCj4gKwkg Kgo+ICsJICogU0NNSSBzaG0gaW5mb3JtYXRpb24gYXJlIDAgaWYgYWdlbnQgZXhwZWN0cyB0byB1 c2UgT1AtVEVFIHJlZ3VsYXIgU0hNCj4gKwkgKgo+ICsJICogW2luXSAgICAgdmFsdWVbMF0uYTog Q2hhbm5lbCBpZGVudGlmaWVyCj4gKwkgKiBbb3V0XSAgICB2YWx1ZVswXS5hOiBSZXR1cm5lZCBj aGFubmVsIGhhbmRsZQo+ICsJICogW2luXSAgICAgdmFsdWVbMF0uYjogUmVxdWVzdGVkIGNhcGFi aWxpdGllcyBtYXNrIChlbnVtIHB0YV9zY21pX2NhcHMpCj4gKwkgKi8KPiArCVBUQV9TQ01JX0NN RF9HRVRfQ0hBTk5FTCA9IDMsCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBDYXBhYmlsaXRpZXMKPiAr ICovCj4gK2VudW0gcHRhX3NjbWlfY2FwcyB7Cj4gKwlQVEFfU0NNSV9DQVBTX05PTkUgPSAwLAo+ ICsJLyoKPiArCSAqIFN1cHBvcnRzIGNvbW1hbmQgdXNpbmcgU01UIGhlYWRlciBwcm90b2NvbCAo U0NNSSBzaG1lbSkgaW4gc2hhcmVkCj4gKwkgKiBtZW1vcnkgYnVmZmVycyB0byBjYXJyeSBTQ01J IHByb3RvY29sIHN5bmNocm9uaXNhdGlvbiBpbmZvcm1hdGlvbi4KPiArCSAqLwo+ICsJUFRBX1ND TUlfQ0FQU19TTVRfSEVBREVSID0gQklUKDApLAo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIHN0cnVj dCBvcHRlZV9jaGFubmVsIC0gRGVzY3JpcHRpb24gb2YgYW4gT1AtVEVFIFNDTUkgY2hhbm5lbAo+ ICsgKgo+ICsgKiBAY2hhbm5lbF9pZDogT1AtVEVFIGNoYW5uZWwgSUQgdXNlZCBmb3IgdGhpcyB0 cmFuc3BvcnQKPiArICogQG11OiBNdXRleCBwcm90ZWN0aW9uIG9uIGNoYW5uZWwgYWNjZXNzCj4g KyAqIEB0ZWVfc2Vzc2lvbjogVEVFIHNlc3Npb24gaWRlbnRpZmllcgo+ICsgKiBAY2luZm86IFND TUkgY2hhbm5lbCBpbmZvcm1hdGlvbgo+ICsgKiBAc2htZW06IFZpcnR1YWwgYmFzZSBhZGRyZXNz IG9mIHRoZSBzaGFyZWQgbWVtb3J5Cj4gKyAqIEB0ZWVfc2htOiBSZWZlcmVuY2UgdG8gVEVFIHNo YXJlZCBtZW1vcnkgb3IgTlVMTCBpZiB1c2luZyBzdGF0aWMgc2htZW0KPiArICogQGNhcHM6IE9Q LVRFRSBTQ01JIGNoYW5uZWwgY2FwYWJpbGl0aWVzCj4gKyAqIEBsaW5rOiBSZWZlcmVuY2UgaW4g YWdlbnQncyBjaGFubmVsIGxpc3QKPiArICovCj4gK3N0cnVjdCBvcHRlZV9jaGFubmVsIHsKPiAr CXUzMiBjaGFubmVsX2lkOwo+ICsJc3RydWN0IG11dGV4IG11Owo+ICsJdTMyIHRlZV9zZXNzaW9u Owo+ICsJc3RydWN0IHNjbWlfY2hhbl9pbmZvICpjaW5mbzsKPiArCXN0cnVjdCBzY21pX3NoYXJl ZF9tZW0gX19pb21lbSAqc2htZW07Cj4gKwlzdHJ1Y3QgdGVlX3NobSAqdGVlX3NobTsKPiArCWVu dW0gcHRhX3NjbWlfY2FwcyBjYXBzOwo+ICsJc3RydWN0IGxpc3RfaGVhZCBsaW5rOwo+ICt9Owo+ ICsKPiArLyoqCj4gKyAqIHN0cnVjdCBvcHRlZV9hZ2VudCAtIE9QLVRFRSB0cmFuc3BvcnQgcHJp dmF0ZSBkYXRhCj4gKyAqCj4gKyAqIEBkZXY6IERldmljZSB1c2VkIGZvciBjb21tdW5pY2F0aW9u IHdpdGggVEVFCj4gKyAqIEB0ZWVfY3R4OiBURUUgY29udGV4dCB1c2VkIGZvciBjb21tdW5pY2F0 aW9uCj4gKyAqIEBjYXBzOiBTdXBwb3J0ZWQgY2hhbm5lbCBjYXBhYmlsaXRpZXMKPiArICogQG11 OiBNdXRleCBmb3IgcHJvdGVjdGlvbiBvZiBAY2hhbm5lbF9saXN0Cj4gKyAqIEBjaGFubmVsX2xp c3Q6IExpc3Qgb2YgYWxsIGNyZWF0ZWQgY2hhbm5lbHMgZm9yIHRoZSBhZ2VudAo+ICsgKi8KPiAr c3RydWN0IG9wdGVlX2FnZW50IHsKPiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiArCXN0cnVjdCB0 ZWVfY29udGV4dCAqdGVlX2N0eDsKPiArCWVudW0gcHRhX3NjbWlfY2FwcyBjYXBzOwo+ICsJc3Ry dWN0IG11dGV4IG11Owo+ICsJc3RydWN0IGxpc3RfaGVhZCBjaGFubmVsX2xpc3Q7Cj4gK307Cj4g Kwo+ICsvKiBUaGVyZSBjYW4gYmUgb25seSAxIFNDTUkgc2VydmljZSBpbiBPUC1URUUgd2UgY29u bmVjdCB0byAqLwo+ICtzdGF0aWMgc3RydWN0IG9wdGVlX2FnZW50ICpvcHRlZV9wcml2YXRlOwo+ ICsKCk1heWJlIG5hbWluZyB0aGVzZSBsb2NhbGx5IGRlZmluZWQgb3B0ZWVfIHN0cnVjdHMgYXMg c2NtaV9vcHRlZV8gPwoKV2hlbiBJIHNlZSB0aG9zZSBvcHRlZV8gcmVmcyBhcm91bmQgZG93biBi ZWxvdyBJIHRlbmQgdG8gdGhpbmsgdGhleQphcmUgT1BURUUgY29yZSBzdHJ1Y3RzIG5vdCBsb2Nh bGx5IGRlZmluZWQgY29udGFpbmVycy4KKEkgdWRlcnN0YW5kIHRoYXQgZGVwZW5kcyBvbiBteSBw b29yIGZhbWlsaWFyaXR5IHdpdGggT1BURUUgQVBJcwp0aG91Z2guLi4pCgo+ICsvKiBPcGVuIGEg c2Vzc2lvbiB0b3dhcmQgU0NNSSBPUC1URUUgc2VydmljZSB3aXRoIFJFRV9LRVJORUwgaWRlbnRp dHkgKi8KPiArc3RhdGljIGludCBvcGVuX3Nlc3Npb24odTMyICp0ZWVfc2Vzc2lvbikKPiArewo+ ICsJc3RydWN0IGRldmljZSAqZGV2ID0gb3B0ZWVfcHJpdmF0ZS0+ZGV2Owo+ICsJc3RydWN0IHRl ZV9jbGllbnRfZGV2aWNlICpzY21pX3B0YSA9IHRvX3RlZV9jbGllbnRfZGV2aWNlKGRldik7Cj4g KwlzdHJ1Y3QgdGVlX2lvY3RsX29wZW5fc2Vzc2lvbl9hcmcgYXJnID0geyB9Owo+ICsJaW50IHJl dDsKPiArCj4gKwltZW1jcHkoYXJnLnV1aWQsIHNjbWlfcHRhLT5pZC51dWlkLmIsIFRFRV9JT0NU TF9VVUlEX0xFTik7Cj4gKwlhcmcuY2xudF9sb2dpbiA9IFRFRV9JT0NUTF9MT0dJTl9SRUVfS0VS TkVMOwo+ICsKPiArCXJldCA9IHRlZV9jbGllbnRfb3Blbl9zZXNzaW9uKG9wdGVlX3ByaXZhdGUt PnRlZV9jdHgsICZhcmcsIE5VTEwpOwo+ICsJaWYgKHJldCA8IDAgfHwgYXJnLnJldCkgewo+ICsJ CWRldl9lcnIoZGV2LCAiQ2FuJ3Qgb3BlbiB0ZWUgc2Vzc2lvbjogJWQgLyAlI3hcbiIsIHJldCwg YXJnLnJldCk7Cj4gKwo+ICsJCXJldHVybiAtRU9QTk9UU1VQUDsKPiArCX0KPiArCj4gKwkqdGVl X3Nlc3Npb24gPSBhcmcuc2Vzc2lvbjsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgY2xvc2Vfc2Vzc2lvbih1MzIgdGVlX3Nlc3Npb24pCj4gK3sKPiArCXRlZV9jbGll bnRfY2xvc2Vfc2Vzc2lvbihvcHRlZV9wcml2YXRlLT50ZWVfY3R4LCB0ZWVfc2Vzc2lvbik7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgZ2V0X2NhcGFiaWxpdGllcyh2b2lkKQo+ICt7Cj4gKwlzdHJ1 Y3Qgb3B0ZWVfYWdlbnQgKmFnZW50ID0gb3B0ZWVfcHJpdmF0ZTsKPiArCXN0cnVjdCB0ZWVfaW9j dGxfaW52b2tlX2FyZyBhcmcgPSB7IH07Cj4gKwlzdHJ1Y3QgdGVlX3BhcmFtIHBhcmFtWzFdID0g eyB9Owo+ICsJdTMyIHRlZV9zZXNzaW9uOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBvcGVu X3Nlc3Npb24oJnRlZV9zZXNzaW9uKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiAr Cj4gKwlhcmcuZnVuYyA9IFBUQV9TQ01JX0NNRF9DQVBBQklMSVRJRVM7Cj4gKwlhcmcuc2Vzc2lv biA9IHRlZV9zZXNzaW9uOwo+ICsJYXJnLm51bV9wYXJhbXMgPSAxOwo+ICsKPiArCXBhcmFtWzBd LmF0dHIgPSBURUVfSU9DVExfUEFSQU1fQVRUUl9UWVBFX1ZBTFVFX09VVFBVVDsKPiArCj4gKwly ZXQgPSB0ZWVfY2xpZW50X2ludm9rZV9mdW5jKGFnZW50LT50ZWVfY3R4LCAmYXJnLCBwYXJhbSk7 Cj4gKwo+ICsJY2xvc2Vfc2Vzc2lvbih0ZWVfc2Vzc2lvbik7Cj4gKwo+ICsJaWYgKHJldCA8IDAg fHwgYXJnLnJldCkgewo+ICsJCWRldl9lcnIoYWdlbnQtPmRldiwgIkNhbid0IGdldCBjYXBhYmls aXRpZXM6ICVkIC8gJSN4XG4iLCByZXQsIGFyZy5yZXQpOwo+ICsKPiArCQlyZXR1cm4gLUVPUE5P VFNVUFA7Cj4gKwl9Cj4gKwo+ICsJYWdlbnQtPmNhcHMgPSBwYXJhbVswXS51LnZhbHVlLmE7Cj4g Kwo+ICsJaWYgKCEoYWdlbnQtPmNhcHMgJiBQVEFfU0NNSV9DQVBTX1NNVF9IRUFERVIpKSB7Cj4g KwkJZGV2X2VycihhZ2VudC0+ZGV2LCAiT1AtVEVFIFNDTUkgUFRBIGRvZXNuJ3Qgc3VwcG9ydCBT TVRcbiIpOwo+ICsKPiArCQlyZXR1cm4gLUVPUE5PVFNVUFA7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJu IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZ2V0X2NoYW5uZWwoc3RydWN0IG9wdGVlX2NoYW5u ZWwgKmNoYW5uZWwpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IG9wdGVlX3ByaXZhdGUt PmRldjsKPiArCXN0cnVjdCB0ZWVfaW9jdGxfaW52b2tlX2FyZyBhcmcgPSB7IH07Cj4gKwlzdHJ1 Y3QgdGVlX3BhcmFtIHBhcmFtWzFdID0geyB9Owo+ICsJdW5zaWduZWQgaW50IGNhcHMgPSBQVEFf U0NNSV9DQVBTX1NNVF9IRUFERVI7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWFyZy5mdW5jID0gUFRB X1NDTUlfQ01EX0dFVF9DSEFOTkVMOwo+ICsJYXJnLnNlc3Npb24gPSBjaGFubmVsLT50ZWVfc2Vz c2lvbjsKPiArCWFyZy5udW1fcGFyYW1zID0gMTsKPiArCj4gKwlwYXJhbVswXS5hdHRyID0gVEVF X0lPQ1RMX1BBUkFNX0FUVFJfVFlQRV9WQUxVRV9JTk9VVDsKPiArCXBhcmFtWzBdLnUudmFsdWUu YSA9IGNoYW5uZWwtPmNoYW5uZWxfaWQ7Cj4gKwlwYXJhbVswXS51LnZhbHVlLmIgPSBjYXBzOwo+ ICsKPiArCXJldCA9IHRlZV9jbGllbnRfaW52b2tlX2Z1bmMob3B0ZWVfcHJpdmF0ZS0+dGVlX2N0 eCwgJmFyZywgcGFyYW0pOwo+ICsKPiArCWlmIChyZXQgfHwgYXJnLnJldCkgewo+ICsJCWRldl9l cnIoZGV2LCAiQ2FuJ3QgZ2V0IGNoYW5uZWwgd2l0aCBjYXBzICUjeDogJWQgLyAlI3hcbiIsIGNh cHMsIHJldCwgYXJnLnJldCk7Cj4gKwo+ICsJCXJldHVybiAtRU9QTk9UU1VQUDsKPiArCX0KPiAr Cj4gKwkvKiBGcm9tIG5vdyBvbiB1c2UgY2hhbm5lbCBpZGVudGlmZXIgcHJvdmlkZWQgYnkgT1At VEVFIFNDTUkgc2VydmljZSAqLwo+ICsJY2hhbm5lbC0+Y2hhbm5lbF9pZCA9IHBhcmFtWzBdLnUu dmFsdWUuYTsKPiArCWNoYW5uZWwtPmNhcHMgPSBjYXBzOwo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IGludm9rZV9wcm9jZXNzX3NtdF9jaGFubmVsKHN0cnVjdCBvcHRl ZV9jaGFubmVsICpjaGFubmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgdGVlX2lvY3RsX2ludm9rZV9hcmcg YXJnID0geyB9Owo+ICsJc3RydWN0IHRlZV9wYXJhbSBwYXJhbVsyXSA9IHsgfTsKPiArCWludCBy ZXQ7Cj4gKwo+ICsJYXJnLnNlc3Npb24gPSBjaGFubmVsLT50ZWVfc2Vzc2lvbjsKPiArCXBhcmFt WzBdLmF0dHIgPSBURUVfSU9DVExfUEFSQU1fQVRUUl9UWVBFX1ZBTFVFX0lOUFVUOwo+ICsJcGFy YW1bMF0udS52YWx1ZS5hID0gY2hhbm5lbC0+Y2hhbm5lbF9pZDsKPiArCj4gKwlpZiAoY2hhbm5l bC0+dGVlX3NobSkgewo+ICsJCWNvbnN0IHNpemVfdCBtc2dfc2l6ZSA9IHNjbWlfb3B0ZWVfZGVz Yy5tYXhfbXNnX3NpemU7Cj4gKwo+ICsJCXBhcmFtWzFdLmF0dHIgPSBURUVfSU9DVExfUEFSQU1f QVRUUl9UWVBFX01FTVJFRl9JTk9VVDsKPiArCQlwYXJhbVsxXS51Lm1lbXJlZi5zaG0gPSBjaGFu bmVsLT50ZWVfc2htOwo+ICsJCXBhcmFtWzFdLnUubWVtcmVmLnNpemUgPSBtc2dfc2l6ZTsKPiAr CQlhcmcubnVtX3BhcmFtcyA9IDI7Cj4gKwkJYXJnLmZ1bmMgPSBQVEFfU0NNSV9DTURfUFJPQ0VT U19TTVRfQ0hBTk5FTF9NRVNTQUdFOwo+ICsJfSBlbHNlIHsKPiArCQlhcmcubnVtX3BhcmFtcyA9 IDE7Cj4gKwkJYXJnLmZ1bmMgPSBQVEFfU0NNSV9DTURfUFJPQ0VTU19TTVRfQ0hBTk5FTDsKPiAr CX0KPiArCj4gKwlyZXQgPSB0ZWVfY2xpZW50X2ludm9rZV9mdW5jKG9wdGVlX3ByaXZhdGUtPnRl ZV9jdHgsICZhcmcsIHBhcmFtKTsKPiArCWlmIChyZXQgPCAwIHx8IGFyZy5yZXQpIHsKPiArCQlk ZXZfZXJyKG9wdGVlX3ByaXZhdGUtPmRldiwgIkZhaWxlZCBvbiBjaGFubmVsICV1OiAlZCAvICUj eFxuIiwKPiArCQkJY2hhbm5lbC0+Y2hhbm5lbF9pZCwgcmV0LCBhcmcucmV0KTsKPiArCj4gKwkJ cmV0dXJuIC1FSU87Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBi b29sIG9wdGVlX2NoYW5fYXZhaWxhYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGlkeCkKPiAr ewo+ICsJdTMyIGNoYW5uZWxfaWQ7Cj4gKwo+ICsJcmV0dXJuICFvZl9wcm9wZXJ0eV9yZWFkX3Uz Ml9pbmRleChkZXYtPm9mX25vZGUsICJsaW5hcm8sb3B0ZWUtY2hhbm5lbC1pZCIsCj4gKwkJCQkJ ICAgaWR4LCAmY2hhbm5lbF9pZCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgc2V0dXBfZHluYW1p Y19zaG1lbShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBvcHRlZV9jaGFubmVsICpjaGFubmVs KQo+ICt7Cj4gKwljb25zdCBzaXplX3QgbXNnX3NpemUgPSBzY21pX29wdGVlX2Rlc2MubWF4X21z Z19zaXplOwo+ICsKPiArCWNoYW5uZWwtPnRlZV9zaG0gPSB0ZWVfc2htX2FsbG9jX2tlcm5lbF9i dWYob3B0ZWVfcHJpdmF0ZS0+dGVlX2N0eCwgbXNnX3NpemUpOwo+ICsJaWYgKElTX0VSUihjaGFu bmVsLT50ZWVfc2htKSkgewo+ICsJCWRldl9lcnIoY2hhbm5lbC0+Y2luZm8tPmRldiwgInNobWVt IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCX0KPiArCj4g KwljaGFubmVsLT5zaG1lbSA9ICh2b2lkICopdGVlX3NobV9nZXRfdmEoY2hhbm5lbC0+dGVlX3No bSwgMCk7Cj4gKwltZW1zZXQoY2hhbm5lbC0+c2htZW0sIDAsIG1zZ19zaXplKTsKPiArCXNobWVt X2NsZWFyX2NoYW5uZWwoY2hhbm5lbC0+c2htZW0pOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IHNldHVwX3N0YXRpY19zaG1lbShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBzY21pX2NoYW5faW5mbyAqY2luZm8sCj4gKwkJCSAgICAgIHN0cnVjdCBvcHRlZV9jaGFu bmVsICpjaGFubmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOwo+ICsJcmVzb3Vy Y2Vfc2l6ZV90IHNpemU7Cj4gKwlzdHJ1Y3QgcmVzb3VyY2UgcmVzOwo+ICsJaW50IHJldDsKPiAr Cj4gKwlucCA9IG9mX3BhcnNlX3BoYW5kbGUoY2luZm8tPmRldi0+b2Zfbm9kZSwgInNobWVtIiwg MCk7Cj4gKwlpZiAoIW9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCAiYXJtLHNjbWktc2htZW0i KSkgewo+ICsJCXJldCA9IC1FTlhJTzsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwlyZXQg PSBvZl9hZGRyZXNzX3RvX3Jlc291cmNlKG5wLCAwLCAmcmVzKTsKPiArCWlmIChyZXQpIHsKPiAr CQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgU0NNSSBUeCBzaGFyZWQgbWVtb3J5XG4iKTsK PiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwlzaXplID0gcmVzb3VyY2Vfc2l6ZSgmcmVzKTsK PiArCj4gKwljaGFubmVsLT5zaG1lbSA9IGRldm1faW9yZW1hcChkZXYsIHJlcy5zdGFydCwgc2l6 ZSk7Cj4gKwlpZiAoIWNoYW5uZWwtPnNobWVtKSB7Cj4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQg dG8gaW9yZW1hcCBTQ01JIFR4IHNoYXJlZCBtZW1vcnlcbiIpOwo+ICsJCXJldCA9IC1FQUREUk5P VEFWQUlMOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCXJldCA9IDA7Cj4gKwo+ICtvdXQ6 Cj4gKwlvZl9ub2RlX3B1dChucCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3Rh dGljIGludCBvcHRlZV9jaGFuX3NldHVwX3NobWVtKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0 IHNjbWlfY2hhbl9pbmZvICpjaW5mbywKPiArCQkJCSAgYm9vbCB0eCwgc3RydWN0IG9wdGVlX2No YW5uZWwgKmNoYW5uZWwpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmNkZXYgPSBjaW5mby0+ZGV2 Owo+ICsKPiArCWlmIChvZl9maW5kX3Byb3BlcnR5KGNkZXYtPm9mX25vZGUsICJzaG1lbSIsIE5V TEwpKQo+ICsJCXJldHVybiBzZXR1cF9zdGF0aWNfc2htZW0oZGV2LCBjaW5mbywgY2hhbm5lbCk7 Cj4gKwllbHNlCj4gKwkJcmV0dXJuIHNldHVwX2R5bmFtaWNfc2htZW0oZGV2LCBjaGFubmVsKTsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgb3B0ZWVfY2xlYXJfY2hhbm5lbChzdHJ1Y3Qgc2NtaV9j aGFuX2luZm8gKmNpbmZvKQo+ICt7Cj4gKwlzdHJ1Y3Qgb3B0ZWVfY2hhbm5lbCAqY2hhbm5lbCA9 IGNpbmZvLT50cmFuc3BvcnRfaW5mbzsKPiArCj4gKwlzaG1lbV9jbGVhcl9jaGFubmVsKGNoYW5u ZWwtPnNobWVtKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBvcHRlZV9jaGFuX3NldHVwKHN0cnVj dCBzY21pX2NoYW5faW5mbyAqY2luZm8sIHN0cnVjdCBkZXZpY2UgKmRldiwgYm9vbCB0eCkKPiAr ewo+ICsJc3RydWN0IG9wdGVlX2NoYW5uZWwgKmNoYW5uZWw7Cj4gKwl1aW50MzJfdCBjaGFubmVs X2lkOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIXR4KQo+ICsJCXJldHVybiAtRU5PREVWOwo+ ICsKPiArCS8qIFNoYWxsIHdhaXQgZm9yIE9QLVRFRSBkcml2ZXIgdG8gYmUgdXAgYW5kIHJlYWR5 ICovCj4gKwlpZiAoIW9wdGVlX3ByaXZhdGUgfHwgIW9wdGVlX3ByaXZhdGUtPnRlZV9jdHgpCj4g KwkJcmV0dXJuIC1FUFJPQkVfREVGRVI7Cj4gKwo+ICsJY2hhbm5lbCA9IGRldm1fa3phbGxvYyhk ZXYsIHNpemVvZigqY2hhbm5lbCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFjaGFubmVsKQo+ICsJ CXJldHVybiAtRU5PTUVNOwo+ICsKPiArCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyX2luZGV4 KGNpbmZvLT5kZXYtPm9mX25vZGUsICJsaW5hcm8sb3B0ZWUtY2hhbm5lbC1pZCIsCj4gKwkJCQkJ IDAsICZjaGFubmVsX2lkKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlj aW5mby0+dHJhbnNwb3J0X2luZm8gPSBjaGFubmVsOwo+ICsJY2hhbm5lbC0+Y2luZm8gPSBjaW5m bzsKPiArCWNoYW5uZWwtPmNoYW5uZWxfaWQgPSBjaGFubmVsX2lkOwo+ICsJbXV0ZXhfaW5pdCgm Y2hhbm5lbC0+bXUpOwo+ICsKPiArCXJldCA9IG9wdGVlX2NoYW5fc2V0dXBfc2htZW0oZGV2LCBj aW5mbywgdHgsIGNoYW5uZWwpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiAr CXJldCA9IG9wZW5fc2Vzc2lvbigmY2hhbm5lbC0+dGVlX3Nlc3Npb24pOwo+ICsJaWYgKHJldCkK PiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IGdldF9jaGFubmVsKGNoYW5uZWwpOwo+ICsJ aWYgKHJldCkgewo+ICsJCWNsb3NlX3Nlc3Npb24oY2hhbm5lbC0+dGVlX3Nlc3Npb24pOwo+ICsK PiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCW11dGV4X2xvY2soJm9wdGVlX3ByaXZhdGUt Pm11KTsKPiArCWxpc3RfYWRkKCZjaGFubmVsLT5saW5rLCAmb3B0ZWVfcHJpdmF0ZS0+Y2hhbm5l bF9saXN0KTsKPiArCW11dGV4X3VubG9jaygmb3B0ZWVfcHJpdmF0ZS0+bXUpOwo+ICsKPiArCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG9wdGVlX2NoYW5fZnJlZShpbnQgaWQsIHZv aWQgKnAsIHZvaWQgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCBzY21pX2NoYW5faW5mbyAqY2luZm8g PSBwOwo+ICsJc3RydWN0IG9wdGVlX2NoYW5uZWwgKmNoYW5uZWwgPSBjaW5mby0+dHJhbnNwb3J0 X2luZm87Cj4gKwo+ICsJbXV0ZXhfbG9jaygmb3B0ZWVfcHJpdmF0ZS0+bXUpOwo+ICsJbGlzdF9k ZWwoJmNoYW5uZWwtPmxpbmspOwo+ICsJbXV0ZXhfdW5sb2NrKCZvcHRlZV9wcml2YXRlLT5tdSk7 Cj4gKwo+ICsJaWYgKGNoYW5uZWwtPnRlZV9zaG0pIHsKPiArCQl0ZWVfc2htX2ZyZWUoY2hhbm5l bC0+dGVlX3NobSk7Cj4gKwkJY2hhbm5lbC0+dGVlX3NobSA9IE5VTEw7Cj4gKwl9Cj4gKwo+ICsJ Y2luZm8tPnRyYW5zcG9ydF9pbmZvID0gTlVMTDsKPiArCWNoYW5uZWwtPmNpbmZvID0gTlVMTDsK PiArCj4gKwlzY21pX2ZyZWVfY2hhbm5lbChjaW5mbywgZGF0YSwgaWQpOwo+ICsKPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHNjbWlfc2hhcmVkX21lbSAqZ2V0X2NoYW5u ZWxfc2htKHN0cnVjdCBvcHRlZV9jaGFubmVsICpjaGFuLCBzdHJ1Y3Qgc2NtaV94ZmVyICp4ZmVy KQo+ICt7Cj4gKwlpZiAoIWNoYW4pCj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwo+ICsJcmV0dXJuIGNo YW4tPnNobWVtOwo+ICt9Cj4gKwo+ICsKPiArc3RhdGljIGludCBvcHRlZV9zZW5kX21lc3NhZ2Uo c3RydWN0IHNjbWlfY2hhbl9pbmZvICpjaW5mbywKPiArCQkJICAgICAgc3RydWN0IHNjbWlfeGZl ciAqeGZlcikKPiArewo+ICsJc3RydWN0IG9wdGVlX2NoYW5uZWwgKmNoYW5uZWwgPSBjaW5mby0+ dHJhbnNwb3J0X2luZm87Cj4gKwlzdHJ1Y3Qgc2NtaV9zaGFyZWRfbWVtICpzaG1lbSA9IGdldF9j aGFubmVsX3NobShjaGFubmVsLCB4ZmVyKTsKPiArCWludCByZXQ7Cj4gKwo+ICsJbXV0ZXhfbG9j aygmY2hhbm5lbC0+bXUpOwo+ICsJc2htZW1fdHhfcHJlcGFyZShzaG1lbSwgeGZlcik7Cj4gKwo+ ICsJcmV0ID0gaW52b2tlX3Byb2Nlc3Nfc210X2NoYW5uZWwoY2hhbm5lbCk7CgpIZXJlIGFsbCB0 aGUgYXNzb2NpYXRlZCBwcm9jZXNzaW5nIGluIHRoZSBUcnVzdGVkT1MgaXMgZnVsbHkgY29tcGxl dGVkCnJpZ2h0ID8gaS5lLiBhbGwgdGhlIHBvc3NpYmxlIHJlcGx5IHZhbHVlcyBoYXZlIGJlZW4g cHV0IGludG8gc2htZW0gYnkKdGhlIFRydXN0ZWRPUyBwcm9jZXNzIGJlZm9yZSB0aGUgdW5kZXJs eWluZyBTTUMgY2FsbCByZXR1cm5zLgooanVzdCB0byB1bmRlcnN0YW5kIGJldHRlciBob3cgT1BU RUUgdHJhbnNwb3J0IGlzIHN1cHBvc2VkIHRvIGJlaGF2ZSkKCj4gKwo+ICsJc2NtaV9yeF9jYWxs YmFjayhjaW5mbywgc2htZW1fcmVhZF9oZWFkZXIoc2htZW0pLCBOVUxMKTsKPiArCW11dGV4X3Vu bG9jaygmY2hhbm5lbC0+bXUpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIG9wdGVlX2ZldGNoX3Jlc3BvbnNlKHN0cnVjdCBzY21pX2NoYW5faW5mbyAqY2luZm8s Cj4gKwkJCQkgc3RydWN0IHNjbWlfeGZlciAqeGZlcikKPiArewo+ICsJc3RydWN0IG9wdGVlX2No YW5uZWwgKmNoYW5uZWwgPSBjaW5mby0+dHJhbnNwb3J0X2luZm87Cj4gKwlzdHJ1Y3Qgc2NtaV9z aGFyZWRfbWVtICpzaG1lbSA9IGdldF9jaGFubmVsX3NobShjaGFubmVsLCB4ZmVyKTsKPiArCj4g KwlzaG1lbV9mZXRjaF9yZXNwb25zZShzaG1lbSwgeGZlcik7Cj4gK30KPiArCj4gK3N0YXRpYyBi b29sIG9wdGVlX3BvbGxfZG9uZShzdHJ1Y3Qgc2NtaV9jaGFuX2luZm8gKmNpbmZvLAo+ICsJCQkg ICAgc3RydWN0IHNjbWlfeGZlciAqeGZlcikKPiArewo+ICsJc3RydWN0IG9wdGVlX2NoYW5uZWwg KmNoYW5uZWwgPSBjaW5mby0+dHJhbnNwb3J0X2luZm87Cj4gKwlzdHJ1Y3Qgc2NtaV9zaGFyZWRf bWVtICpzaG1lbSA9IGdldF9jaGFubmVsX3NobShjaGFubmVsLCB4ZmVyKTsKPiArCj4gKwlyZXR1 cm4gc2htZW1fcG9sbF9kb25lKHNobWVtLCB4ZmVyKTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVj dCBzY21pX3RyYW5zcG9ydF9vcHMgc2NtaV9vcHRlZV9vcHMgPSB7Cj4gKwkuY2hhbl9hdmFpbGFi bGUgPSBvcHRlZV9jaGFuX2F2YWlsYWJsZSwKPiArCS5jaGFuX3NldHVwID0gb3B0ZWVfY2hhbl9z ZXR1cCwKPiArCS5jaGFuX2ZyZWUgPSBvcHRlZV9jaGFuX2ZyZWUsCj4gKwkuc2VuZF9tZXNzYWdl ID0gb3B0ZWVfc2VuZF9tZXNzYWdlLAo+ICsJLmZldGNoX3Jlc3BvbnNlID0gb3B0ZWVfZmV0Y2hf cmVzcG9uc2UsCj4gKwkuY2xlYXJfY2hhbm5lbCA9IG9wdGVlX2NsZWFyX2NoYW5uZWwsCj4gKwku cG9sbF9kb25lID0gb3B0ZWVfcG9sbF9kb25lLAo+ICt9Owo+ICsKPiArY29uc3Qgc3RydWN0IHNj bWlfZGVzYyBzY21pX29wdGVlX2Rlc2MgPSB7Cj4gKwkub3BzID0gJnNjbWlfb3B0ZWVfb3BzLAo+ ICsJLm1heF9yeF90aW1lb3V0X21zID0gMzAsCj4gKwkubWF4X21zZyA9IDIwLAo+ICsJLm1heF9t c2dfc2l6ZSA9IDEyOCwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgb3B0ZWVfY3R4X21hdGNoKHN0 cnVjdCB0ZWVfaW9jdGxfdmVyc2lvbl9kYXRhICp2ZXIsIGNvbnN0IHZvaWQgKmRhdGEpCj4gK3sK PiArCXJldHVybiB2ZXItPmltcGxfaWQgPT0gVEVFX0lNUExfSURfT1BURUU7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgb3B0ZWVfc2VydmljZV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sK PiArCXN0cnVjdCBvcHRlZV9hZ2VudCAqYWdlbnQ7Cj4gKwlzdHJ1Y3QgdGVlX2NvbnRleHQgKnRl ZV9jdHg7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCS8qIE9ubHkgb25lIFNDTUkgT1AtVEVFIGRldmlj ZSBhbGxvd2VkICovCj4gKwlpZiAob3B0ZWVfcHJpdmF0ZSkgewo+ICsJCWRldl9lcnIoZGV2LCAi QW4gU0NNSSBPUC1URUUgZGV2aWNlIHdhcyBhbHJlYWR5IGluaXRpYWxpemVkOiBvbmx5IG9uZSBh bGxvd2VkXG4iKTsKPiArCQlyZXR1cm4gLUVCVVNZOwo+ICsJfQo+ICsKPiArCXRlZV9jdHggPSB0 ZWVfY2xpZW50X29wZW5fY29udGV4dChOVUxMLCBvcHRlZV9jdHhfbWF0Y2gsIE5VTEwsIE5VTEwp Owo+ICsJaWYgKElTX0VSUih0ZWVfY3R4KSkKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlh Z2VudCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqYWdlbnQpLCBHRlBfS0VSTkVMKTsKPiAr CWlmICghYWdlbnQpIHsKPiArCQlyZXQgPSAtRU5PTUVNOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ ICsKPiArCWFnZW50LT5kZXYgPSBkZXY7Cj4gKwlhZ2VudC0+dGVlX2N0eCA9IHRlZV9jdHg7Cj4g KwlJTklUX0xJU1RfSEVBRCgmYWdlbnQtPmNoYW5uZWxfbGlzdCk7Cj4gKwo+ICsJb3B0ZWVfcHJp dmF0ZSA9IGFnZW50OwoKQmFycmllciBoZXJlIHRvIGJlIHN1cmUgdGhpcyBnbG9iYWwgaXMgdmlz aWJsZSBhbmQgbm90IHJlb3JkZXJlZCA/CgpOb3Qgc3VyZSBpZiBpdCBpcyBwbGF1c2libGUgdGhh dCB3aXRob3V0IGEgYmFycmllciB0aGUgc3Vic2VxdWVudApvcHRlZV9jaGFuX3NldHVwIGNvdWxk IHJ1biBvbiBhbm90aGVyIGNvcmUgYW5kIHNpbXBseSBtaXNzIHRoaXMgdXBkYXRlCmFuZCBiYWls IG91dC4gKGNhbm5vdCBzZWUgYW55IGxvY2tpbmcgb2YgYW55IGtpbmQgZWl0aGVyIGluIHRoZQpj aGFuX2F2YWlsYWJsZS9jaGFuX3NldHVwIFRYIHBhdGggdGhhdCBjb3VsZCB0cmlnZ2VyIGEgaW1w bGljaXQgbWVtb3J5CmJhcnJpZXIuLi4uYmFoIG1heWJlIEknbSBwYXJhbm9pZCkKCj4gKwo+ICsJ cmV0ID0gZ2V0X2NhcGFiaWxpdGllcygpOwo+ICsKPiArb3V0Ogo+ICsJaWYgKHJldCkgewo+ICsJ CXRlZV9jbGllbnRfY2xvc2VfY29udGV4dCh0ZWVfY3R4KTsKPiArCQlvcHRlZV9wcml2YXRlID0g TlVMTDsKCkJhcnJpZXIgPyAobm90IHN1cmUgYXMgYWJvdmUuLi4pCgo+ICsJfQo+ICsKPiArCXJl dHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgb3B0ZWVfc2VydmljZV9yZW1vdmUoc3Ry dWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlpZiAob3B0ZWVfcHJpdmF0ZSkKPiArCQlyZXR1cm4g LUVJTlZBTDsKCklzIGl0ICBpbnN0ZWFkOiBpZiAoIW9wdGVlX3ByaXZhdGUpID8KPiArCj4gKwlp ZiAoIWxpc3RfZW1wdHkoJm9wdGVlX3ByaXZhdGUtPmNoYW5uZWxfbGlzdCkpCj4gKwkJcmV0dXJu IC1FQlVTWTsKPiArCj4gKwl0ZWVfY2xpZW50X2Nsb3NlX2NvbnRleHQob3B0ZWVfcHJpdmF0ZS0+ dGVlX2N0eCk7Cj4gKwo+ICsJb3B0ZWVfcHJpdmF0ZSA9IE5VTEw7Cj4gKwoKQmFycmllciA/IChu b3Qgc3VyZSBhcyBhYm92ZS4uLikKCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCB0ZWVfY2xpZW50X2RldmljZV9pZCBzY21pX29wdGVlX3NlcnZpY2VfaWRbXSA9 IHsKPiArCXsKPiArCQlVVUlEX0lOSVQoMHhhOGNmZTQwNiwgMHhkNGY1LCAweDRhMmUsCj4gKwkJ CSAgMHg5ZiwgMHg4ZCwgMHhhMiwgMHg1ZCwgMHhjNywgMHg1NCwgMHhjMCwgMHg5OSkKPiArCX0s Cj4gKwl7IH0KPiArfTsKPiArCj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUodGVlLCBzY21pX29wdGVl X3NlcnZpY2VfaWQpOwo+ICsKPiArc3RhdGljIHN0cnVjdCB0ZWVfY2xpZW50X2RyaXZlciBzY21p X29wdGVlX2RyaXZlciA9IHsKPiArCS5pZF90YWJsZQk9IHNjbWlfb3B0ZWVfc2VydmljZV9pZCwK PiArCS5kcml2ZXIJCT0gewo+ICsJCS5uYW1lID0gInNjbWktb3B0ZWUiLAo+ICsJCS5idXMgPSAm dGVlX2J1c190eXBlLAo+ICsJCS5wcm9iZSA9IG9wdGVlX3NlcnZpY2VfcHJvYmUsCj4gKwkJLnJl bW92ZSA9IG9wdGVlX3NlcnZpY2VfcmVtb3ZlLAo+ICsJfSwKPiArfTsKPiArCj4gK3N0YXRpYyBp bnQgX19pbml0IHNjbWlfb3B0ZWVfaW5pdCh2b2lkKQo+ICt7Cj4gKwlyZXR1cm4gZHJpdmVyX3Jl Z2lzdGVyKCZzY21pX29wdGVlX2RyaXZlci5kcml2ZXIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZCBfX2V4aXQgc2NtaV9vcHRlZV9leGl0KHZvaWQpCj4gK3sKPiArCWRyaXZlcl91bnJlZ2lzdGVy KCZzY21pX29wdGVlX2RyaXZlci5kcml2ZXIpOwo+ICt9Cj4gKwo+ICtkZXZpY2VfaW5pdGNhbGwo c2NtaV9vcHRlZV9pbml0KQo+ICttb2R1bGVfZXhpdChzY21pX29wdGVlX2V4aXQpOwoKVGhpcyBi cmVha3MgdGhlIGJ1aWxkIHdoZW4gQVJNX1NDTUlfUFJPVE9DT0w9bSBhbmQgU0NNSSBPUFRFRSB0 cmFuc3BvcnQgaXMgZW5hYmxlZCwKc2luY2UgdGhlIFNDTUkgdHJhbnNwb3J0cyBhcmUgbm90IGZ1 bGwgZmxlZGdlZCBkcml2ZXJzIGJ1dCB0aGV5IGFyZSBidWlsdCBpbnRvCnRoZSBTQ01JIHN0YWNr IGNvcmUgbW9kdWxlLCBzbyBpZiB5b3UgZW5kdXAgdHJ5aW5nIHRvIGRlZmluZSBtdWx0aXBsZSBp bml0cy4KCiBMRCBbTV0gIGRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvc2NtaS1tb2R1bGUubwov b3B0L3Rvb2xjaGFpbnMvZ2NjLWFybS04LjMtMjAxOS4wMy14ODZfNjQtYWFyY2g2NC1saW51eC1n bnUvYmluL2FhcmNoNjQtbGludXgtZ251LWxkOiBkcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL29w dGVlLm86IGluIGZ1bmN0aW9uIGBzY21pX29wdGVlX2luaXQnOgovaG9tZS9jcmltYXIwMS9BUk0v ZGV2L3NyYy9wZHN3L2xpbnV4L2RyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvb3B0ZWUuYzo1NDk6 IG11bHRpcGxlIGRlZmluaXRpb24gb2YgYGluaXRfbW9kdWxlJzsgZHJpdmVycy9maXJtd2FyZS9h cm1fc2NtaS9kcml2ZXIubzovaG9tZS9jcmltYXIwMS9BUk0vZGV2L3NyYy9wZHN3L2xpbnV4L2Ry aXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvZHJpdmVyLmM6MjA3MDogZmlyc3QgZGVmaW5lZCBoZXJl Ci9vcHQvdG9vbGNoYWlucy9nY2MtYXJtLTguMy0yMDE5LjAzLXg4Nl82NC1hYXJjaDY0LWxpbnV4 LWdudS9iaW4vYWFyY2g2NC1saW51eC1nbnUtbGQ6IGRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkv b3B0ZWUubzogaW4gZnVuY3Rpb24gYHNjbWlfb3B0ZWVfZXhpdCc6Ci9ob21lL2NyaW1hcjAxL0FS TS9kZXYvc3JjL3Bkc3cvbGludXgvZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9vcHRlZS5jOjU1 NDogbXVsdGlwbGUgZGVmaW5pdGlvbiBvZiBgY2xlYW51cF9tb2R1bGUnOyBkcml2ZXJzL2Zpcm13 YXJlL2FybV9zY21pL2RyaXZlci5vOi9ob21lL2NyaW1hcjAxL0FSTS9kZXYvc3JjL3Bkc3cvbGlu dXgvZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9kcml2ZXIuYzoyMDk5OiBmaXJzdCBkZWZpbmVk IGhlcmUKL2hvbWUvY3JpbWFyMDEvQVJNL2Rldi9zcmMvcGRzdy9saW51eC9zY3JpcHRzL01ha2Vm aWxlLmJ1aWxkOjQ3NDogcmVjaXBlIGZvciB0YXJnZXQgJ2RyaXZlcnMvZmlybXdhcmUvYXJtX3Nj bWkvc2NtaS1tb2R1bGUubycgZmFpbGVkCm1ha2VbNF06ICoqKiBbZHJpdmVycy9maXJtd2FyZS9h cm1fc2NtaS9zY21pLW1vZHVsZS5vXSBFcnJvciAxCi9ob21lL2NyaW1hcjAxL0FSTS9kZXYvc3Jj L3Bkc3cvbGludXgvc2NyaXB0cy9NYWtlZmlsZS5idWlsZDo1NDA6IHJlY2lwZSBmb3IgdGFyZ2V0 ICdkcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pJyBmYWlsZWQKbWFrZVszXTogKioqIFtkcml2ZXJz L2Zpcm13YXJlL2FybV9zY21pXSBFcnJvciAyCi9ob21lL2NyaW1hcjAxL0FSTS9kZXYvc3JjL3Bk c3cvbGludXgvc2NyaXB0cy9NYWtlZmlsZS5idWlsZDo1NDA6IHJlY2lwZSBmb3IgdGFyZ2V0ICdk cml2ZXJzL2Zpcm13YXJlJyBmYWlsZWQKbWFrZVsyXTogKioqIFtkcml2ZXJzL2Zpcm13YXJlXSBF cnJvciAyCm1ha2VbMl06ICoqKiBXYWl0aW5nIGZvciB1bmZpbmlzaGVkIGpvYnMuLi4uCi9ob21l L2NyaW1hcjAxL0FSTS9kZXYvc3JjL3Bkc3cvbGludXgvTWFrZWZpbGU6MTg3NDogcmVjaXBlIGZv ciB0YXJnZXQgJ2RyaXZlcnMnIGZhaWxlZAptYWtlWzFdOiAqKiogW2RyaXZlcnNdIEVycm9yIDIK bWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgJy9ob21lL2NyaW1hcjAxL0FSTS9kZXYvc3JjL3Bk c3cvb3V0X2xpbnV4JwpNYWtlZmlsZToyMTk6IHJlY2lwZSBmb3IgdGFyZ2V0ICdfX3N1Yi1tYWtl JyBmYWlsZWQKCkluIG9yZGVyIHRvIGFkZHJlc3MgdGhpcyBpc3N1ZSAoc2FtZSBoYXBwZW5kZWQg d2l0aCBWaXJ0SU8pIEkgYWRkZWQKdHJhbnNwb3J0X2luaXQvdHJhbnNwb3J0X2V4aXQgb3B0aW9u YWwgaG9va3MgaW50byBzY21pX2Rlc2MsIHNvIHRoYXQKeW91IGNhbiBhc2sgdGhlIGNvcmUgU0NN SSBzdGFjayB0byBwZXJmb3JtIHdoYXRldmVyIHlvdXIgdHJhbnNwb3J0Cm5lZWRzIGF0IFNDTUkg Y29yZSBpbml0LXRpbWUsIGJlZm9yZSB0aGUgU0NNSSBjb3JlIHN0YWNrIGlzIHByb2JlZC4KCklu IG90aGVyIHdvcmRzIHRoZSBmaXggaGVyZSBkb3duIGJlbG93IGZpeGVzIGZvciBtZSB0aGUgYnVp bGQgYXMgYQptb2R1bGUgb2YgdGhlIFNDTUkgc3RhY2suCgpOb3RlIHRoYXQgYWxzbyBfX2V4aXQg b24gc2NtaV9vcHRlZV9leGl0KCApaGEgc2JlZW4gcmVtb3ZlZCB0byBhdm9pZApzb21lIGNvbXBs YWlucyBzcG90dGVkIGJ5IEFybmQgb24gU0NNSSBWaXJ0SU8gKDFjZDczMjAwZGFkMiBmaXJtd2Fy ZToKYXJtX3NjbWk6IFJlbW92ZSBfX2V4aXQgYW5ub3RhdGlvbikKClRoYW5rcywKQ3Jpc3RpYW4K Ci0tLTg8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Zpcm13 YXJlL2FybV9zY21pL29wdGVlLmMgYi9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL29wdGVlLmMK aW5kZXggZTI5NGNmZjM3YmVhLi5hZjZkNTI0MzhiMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZmly bXdhcmUvYXJtX3NjbWkvb3B0ZWUuYworKysgYi9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL29w dGVlLmMKQEAgLTQ1OSwxMyArNDU5LDYgQEAgc3RhdGljIHN0cnVjdCBzY21pX3RyYW5zcG9ydF9v cHMgc2NtaV9vcHRlZV9vcHMgPSB7CiAgICAgICAgLnBvbGxfZG9uZSA9IG9wdGVlX3BvbGxfZG9u ZSwKIH07CiAKLWNvbnN0IHN0cnVjdCBzY21pX2Rlc2Mgc2NtaV9vcHRlZV9kZXNjID0gewotICAg ICAgIC5vcHMgPSAmc2NtaV9vcHRlZV9vcHMsCi0gICAgICAgLm1heF9yeF90aW1lb3V0X21zID0g MzAsCi0gICAgICAgLm1heF9tc2cgPSAyMCwKLSAgICAgICAubWF4X21zZ19zaXplID0gMTI4LAot fTsKLQogc3RhdGljIGludCBvcHRlZV9jdHhfbWF0Y2goc3RydWN0IHRlZV9pb2N0bF92ZXJzaW9u X2RhdGEgKnZlciwgY29uc3Qgdm9pZCAqZGF0YSkKIHsKICAgICAgICByZXR1cm4gdmVyLT5pbXBs X2lkID09IFRFRV9JTVBMX0lEX09QVEVFOwpAQCAtNTUwLDEwICs1NDMsMTYgQEAgc3RhdGljIGlu dCBfX2luaXQgc2NtaV9vcHRlZV9pbml0KHZvaWQpCiAgICAgICAgcmV0dXJuIGRyaXZlcl9yZWdp c3Rlcigmc2NtaV9vcHRlZV9kcml2ZXIuZHJpdmVyKTsKIH0KIAotc3RhdGljIHZvaWQgX19leGl0 IHNjbWlfb3B0ZWVfZXhpdCh2b2lkKQorc3RhdGljIHZvaWQgc2NtaV9vcHRlZV9leGl0KHZvaWQp CiB7CiAgICAgICAgZHJpdmVyX3VucmVnaXN0ZXIoJnNjbWlfb3B0ZWVfZHJpdmVyLmRyaXZlcik7 CiB9CiAKLWRldmljZV9pbml0Y2FsbChzY21pX29wdGVlX2luaXQpCi1tb2R1bGVfZXhpdChzY21p X29wdGVlX2V4aXQpOworY29uc3Qgc3RydWN0IHNjbWlfZGVzYyBzY21pX29wdGVlX2Rlc2MgPSB7 CisgICAgICAgLnRyYW5zcG9ydF9pbml0ID0gc2NtaV9vcHRlZV9pbml0LAorICAgICAgIC50cmFu c3BvcnRfZXhpdCA9IHNjbWlfb3B0ZWVfZXhpdCwKKyAgICAgICAub3BzID0gJnNjbWlfb3B0ZWVf b3BzLAorICAgICAgIC5tYXhfcnhfdGltZW91dF9tcyA9IDMwLAorICAgICAgIC5tYXhfbXNnID0g MjAsCisgICAgICAgLm1heF9tc2dfc2l6ZSA9IDEyOCwKK307Cgo+IC0tIAo+IDIuMTcuMQo+IAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJt LWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtl cm5lbAo=