From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3C3FEC4727C for ; Tue, 29 Sep 2020 18:43:19 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 8DF032075A for ; Tue, 29 Sep 2020 18:43:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Xw3nPJ21"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="a4ftXw/l" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8DF032075A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=PvAJpmA7DI8AHp3WsdYhFeLndAJnJbxhuFme/Cg/6Y0=; b=Xw3nPJ21fqXAxJnip8LUIlxes D4RcrSfj1qkuD+9SJXiUaIM8EaWpHYtxbxbgBNaBEVxNMxSXqOeGkJXZlpJIqYlQRXGim8TKc0/N3 c4M/Ga5S7ctnu08x9sw+m/QgLs8AmXAc80I6fCn897H09Ko1GUMEO7FL55G+Bv9WqisbLtDabAKPZ p4yXV28Rpf1Y+oAGSlGrUfZH53Ehg+NsW6FvX8kAyZzpIu10a038rKMUCiYbkvK+XhYLy8jDdK2mB 0Wr5DjWYazwP6FnPgksXw946O1KJ4If7WRYhFTRGpE4JFdWZ1uQoSafUnyyIgmlO18LwzR6ZFgmX+ Hizgvx8og==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kNKYy-0006rE-Ow; Tue, 29 Sep 2020 18:41:20 +0000 Received: from mail-oo1-xc43.google.com ([2607:f8b0:4864:20::c43]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kNKYu-0006pm-6M for linux-arm-kernel@lists.infradead.org; Tue, 29 Sep 2020 18:41:18 +0000 Received: by mail-oo1-xc43.google.com with SMTP id r4so1541928ooq.7 for ; Tue, 29 Sep 2020 11:41:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=Fn2fwfXGKljyWFSQQ7DcPwxjQ+ariVYgE3aWbHWcSrM=; b=a4ftXw/lJiFIeYCUtBsbiQpCWL7kKC+wNvxnWJhAcUBrfEtDHUXFeQqG+627mLG2zQ QxqLmlQHvvF6fhx7fsPfLddViYQHo9XEVnmJGD3Wq7ovSKabhlG5HL2qlGUTYeNUid+v vH4qISNcfoBrpUZo6dIaV1xGwVQKUuFF2dFaM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=Fn2fwfXGKljyWFSQQ7DcPwxjQ+ariVYgE3aWbHWcSrM=; b=qPdc6/McnyC0sIcVRtxBg4iSQmcSdTrWP4Z9j06PqXucv00kl/eN2/5l232ExZNWxW /rdU3NQfZBLZh6ulJ9oiwYPVKzoldiMNNGj1lFCNTdSQRr2dsDAqZmrs4Cr0ez8PMarc L0kJrj69Vu1qJIzGyg6f5vFe68hvL1F7gjS/RBdxix9q99E3nMSXCSXbc8gVAlGOic4l tgbzKEIJBiKwA2Z9VRy2kxXPQ7TDeqbrKVzBt1F+OQlFKwBsgQzxmI9NPBJ99JD9uIPl cS5+KbdWmrWMFNwKI2BLq1TiQ3GDrUwwuE99DyXCMuy6vv1mm6VVbmdB13XSkardLNyY d2RA== X-Gm-Message-State: AOAM532/w3wnoUOIFIFRJ88Yt9ochLOB+JQrANKvrcOoy9m/UMyP8e3Q aS7hyNWogZdO1BhJ6q83I54kmgCH/viD017NWxZo5g== X-Google-Smtp-Source: ABdhPJwOhL4fEWWZK8pnHAkXU1N7RuoeN9JREFPA8SJG3a6l+s3GAUeQJ/CxbdYxlKQdmynzBSY8yx2NMC4zsu4n0NM= X-Received: by 2002:a4a:3b44:: with SMTP id s65mr5649229oos.85.1601404873486; Tue, 29 Sep 2020 11:41:13 -0700 (PDT) MIME-Version: 1.0 References: <20200928200856.1897023-1-pcc@google.com> <0dc9f36b-417d-bfad-9eb7-858c3041ff0c@baylibre.com> <20200929093201.GL438822@phenom.ffwll.local> <20200929164828.GP438822@phenom.ffwll.local> <20200929165206.GQ438822@phenom.ffwll.local> In-Reply-To: From: Daniel Vetter Date: Tue, 29 Sep 2020 20:41:01 +0200 Message-ID: Subject: Re: [PATCH] Revert "video: fbdev: amba-clcd: Retire elder CLCD driver" To: Peter Collingbourne X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200929_144116_466163_6E514AC3 X-CRM114-Status: GOOD ( 50.41 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Neil Armstrong , Linus Walleij , Kevin Brodsky , Russell King , ML dri-devel , Eric Anholt , Sean Paul , Linux ARM 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 T24gVHVlLCBTZXAgMjksIDIwMjAgYXQgNzo0OSBQTSBQZXRlciBDb2xsaW5nYm91cm5lIDxwY2NA Z29vZ2xlLmNvbT4gd3JvdGU6Cj4KPiBPbiBUdWUsIFNlcCAyOSwgMjAyMCBhdCA5OjUyIEFNIERh bmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4gd3JvdGU6Cj4gPgo+ID4gT24gVHVlLCBTZXAg MjksIDIwMjAgYXQgMDY6NDg6MjhQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4g T24gVHVlLCBTZXAgMjksIDIwMjAgYXQgMDk6MzA6MDhBTSAtMDcwMCwgUGV0ZXIgQ29sbGluZ2Jv dXJuZSB3cm90ZToKPiA+ID4gPiBPbiBUdWUsIFNlcCAyOSwgMjAyMCBhdCAyOjMyIEFNIERhbmll bCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4gd3JvdGU6Cj4gPiA+ID4gPgo+ID4gPiA+ID4gT24g VHVlLCBTZXAgMjksIDIwMjAgYXQgMDk6Mjg6NTZBTSArMDIwMCwgTmVpbCBBcm1zdHJvbmcgd3Jv dGU6Cj4gPiA+ID4gPiA+IEhpLAo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBPbiAyOC8wOS8yMDIw IDIyOjA4LCBQZXRlciBDb2xsaW5nYm91cm5lIHdyb3RlOgo+ID4gPiA+ID4gPiA+IEFsc28gcmV2 ZXJ0IHRoZSBmb2xsb3ctdXAgY2hhbmdlICJkcm06IHBsMTExOiBBYnNvcmIgdGhlIGV4dGVybmFs Cj4gPiA+ID4gPiA+ID4gcmVnaXN0ZXIgaGVhZGVyIi4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4g PiA+IFRoaXMgcmV2ZXJ0cyBjb21taXRzIDdlNGU1ODlkYjc2YTNjZjRjMWY1MzRlYjVhMDljYzY0 MjI3NjZiOTMKPiA+ID4gPiA+ID4gPiBhbmQgMGZiODEyNTYzNWU4ZWI1NDgzZmIwOTVmOThkY2Yw NjUxMjA2YTdiOC4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IFRoZSBmYmRldiBkcml2ZXIg aXMgdXNlZCBieSBBbmRyb2lkJ3MgRlZQIGNvbmZpZ3VyYXRpb24uIFVzaW5nIHRoZQo+ID4gPiA+ ID4gPiA+IERSTSBkcml2ZXIgdG9nZXRoZXIgd2l0aCBEUk0ncyBmYmRldiBlbXVsYXRpb24gcmVz dWx0cyBpbiBhIGZhaWx1cmUKPiA+ID4gPiA+ID4gPiB0byBib290IEFuZHJvaWQuIFRoZSByb290 IGNhdXNlIGlzIHRoYXQgQW5kcm9pZCdzIGdlbmVyaWMgZmJkZXYKPiA+ID4gPiA+ID4gPiB1c2Vy c3BhY2UgZHJpdmVyIHJlbGllcyBvbiB0aGUgYWJpbGl0eSB0byBzZXQgdGhlIHBpeGVsIGZvcm1h dCB2aWEKPiA+ID4gPiA+ID4gPiBGQklPUFVUX1ZTQ1JFRU5JTkZPLCB3aGljaCBpcyBub3Qgc3Vw cG9ydGVkIGJ5IGZiZGV2IGVtdWxhdGlvbi4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gQ2FuJ3Qg QW5kcm9pZCBGVlAgdXNlIGRybS1od2NvbXBvc2VyIGluc3RlYWQgPwo+ID4gPiA+Cj4gPiA+ID4g Tm90IHdpdGhvdXQga2VybmVsIGNoYW5nZXMuIFNlZSBlLmcuCj4gPiA+ID4gaHR0cHM6Ly93d3cu c3Bpbmljcy5uZXQvbGlzdHMvZHJpLWRldmVsL21zZzI1NTg4My5odG1sCj4gPiA+Cj4gPiA+IFRo YXQgZGlzY3Vzc2lvbiBzZWVtcyB0byBoYXZlIGRpZWQgZG93biB3aXRoIG5vIGZ1cnRoZXIgYWN0 aW9uLgo+ID4gPgo+ID4gPiBJIGFsc28gd2FzIGtpbmRhIHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRo YXQgd2l0aCBBbmRyb2lkIHRoZXNlIGJ1ZmZlcnMKPiA+ID4gd291bGQgYmUgYWxsb2NhdGVkIGRp cmVjdGx5IGZyb20gZG1hLWJ1ZiBoZWFwcy9pb24sIHNvIHRoaXMgYWxsIHNlZW1zIG5vdAo+ID4g PiB0aGF0IHdlbGwgYmFrZWQgb3V0Lgo+Cj4gVGhlIGRpc2FncmVlbWVudCBhYm91dCB3aGV0aGVy IHRoZXNlIGFsbG9jYXRpb25zIHNob3VsZCBiZSBtYWRlIHZpYQo+IHRoZSByZW5kZXIgbm9kZSBv ciB2aWEgZG1hLWJ1Zi9pb24gaXMgb25lIHJlYXNvbiB3aHkgaXQgd2FzIGhhcmQgdG8KPiBtYWtl IHByb2dyZXNzIG9uIHRoaXMsIHVuZm9ydHVuYXRlbHkuCj4KPiA+ID4gPiA+IEFsc28sIGlmIHdl IG5lZWQgdG8gYWRkIG1vcmUgcmFuZG9tIGZiZGV2IGlvY3RscyB0byB0aGUgZHJtIGZiZGV2Cj4g PiA+ID4gPiBlbXVsYXRpb24sIHRoZW4gbGV0J3MgZG8gdGhhdC4gTm90IGtlZXAgZmJkZXYgZHJp dmVycyBvbiBsaWZlIHN1cHBvcnQgZm9yCj4gPiA+ID4gPiBsb25nZXIgdGhhbiBuZWNlc3Nhcnku Cj4gPiA+ID4KPiA+ID4gPiBUaGF0IHNob3VsZCBoYXZlIGJlZW4gZG9uZSAqYmVmb3JlKiByZW1v dmluZyB0aGUgb2xkIGRyaXZlciwgd2hpY2ggd2FzCj4gPiA+ID4gYSB1c2Vyc3BhY2UgYnJlYWsg dGhhdCB3YXMgaW50cm9kdWNlZCBpbiA1LjlyYzEuIFdlIHNob3VsZG4ndCBsZWF2ZQo+ID4gPiA+ IHVzZXJzcGFjZSBicm9rZW4gZm9yIHRoZSBwZXJpb2Qgb2YgdGltZSB0aGF0IGl0IHdvdWxkIHRh a2UgdG8gZGV2ZWxvcAo+ID4gPiA+IHRoYXQgY2hhbmdlLiBFdmVuIGlmIHN1Y2ggYSBjaGFuZ2Ug d2VyZSBkZXZlbG9wZWQgYmVmb3JlIDUuOSBpcwo+ID4gPiA+IHJlbGVhc2VkLCBpdCBwcm9iYWJs eSB3b3VsZG4ndCBiZSBjb25zaWRlcmVkIGEgYnVnIGZpeCB0aGF0IHdvdWxkIGJlCj4gPiA+ID4g ZWxpZ2libGUgZm9yIDUuOS4KPiA+ID4gPgo+ID4gPiA+ID4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gTmVpbAo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gVGhlcmUgaGF2 ZSBiZWVuIG90aGVyIGxlc3MgY3JpdGljYWwgYmVoYXZpb3JhbCBkaWZmZXJlbmNlcyBpZGVudGlm aWVkCj4gPiA+ID4gPiA+ID4gYmV0d2VlbiB0aGUgZmJkZXYgZHJpdmVyIGFuZCB0aGUgRFJNIGRy aXZlciB3aXRoIGZiZGV2IGVtdWxhdGlvbi4gVGhlCj4gPiA+ID4gPiA+ID4gRFJNIGRyaXZlciBl eHBvc2VzIGRpZmZlcmVudCB2YWx1ZXMgZm9yIHRoZSBwYW5lbCdzIHdpZHRoLCBoZWlnaHQgYW5k Cj4gPiA+ID4gPiA+ID4gcmVmcmVzaCByYXRlLCBhbmQgdGhlIERSTSBkcml2ZXIgZmFpbHMgYSBG QklPUFVUX1ZTQ1JFRU5JTkZPIHN5c2NhbGwKPiA+ID4gPiA+ID4gPiB3aXRoIHlyZXNfdmlydHVh bCBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gc3VwcG9ydGVkIHZhbHVlIGluc3RlYWQKPiA+ID4g PiA+ID4gPiBvZiBsZXR0aW5nIHRoZSBzeXNjYWxsIHN1Y2NlZWQgYW5kIHNldHRpbmcgeXJlc192 aXJ0dWFsIGJhc2VkIG9uIHlyZXMuCj4gPiA+ID4gPgo+ID4gPiA+ID4gQWxzbyBzb21ldGhpbmcg dGhhdCBzaG91bGQgYmUgZml4ZWQgSSB0aGluayBpbiB1cHN0cmVhbSwgaW4gdGhlIGRybSBmYmRl dgo+ID4gPiA+ID4gZW11bGF0aW9uLiBBdCBsZWFzdCBkb2Vzbid0IHNvdW5kIGxpa2UgaXQncyBz b21ldGhpbmcgdW5maXhhYmxlLgo+ID4gPiA+Cj4gPiA+ID4gQWdhaW4sIGl0IHNob3VsZCBoYXZl IGJlZW4gZml4ZWQgYmVmb3JlIHJlbW92aW5nIHRoZSBvbGQgZHJpdmVyLgo+ID4gPgo+ID4gPiBZ ZWFoLCBidXQgd2UgYWxzbyBkb24ndCBoYXZlIGEgd2hvbGUgbG90IHBlb3BsZSB3aG8gc2VlbSB0 byBwdXNoIGZvciB0aGlzLgo+ID4gPiBTbyB0aGUgb25seSB3YXkgdG8gZmluZCB0aGUgcGVvcGxl IHdobyBzdGlsbCBjYXJlIGlzIHRvIHJlbW92ZSB0aGUgZmJkZXYKPiA+ID4gZHJpdmVycy4KPiA+ ID4KPiA+ID4gZmJkZXYgaXMgZGVhZC4gSSdtIHRvdGFsbHkgZmluZSByZXZlcnRpbmcgdGhlIGRy aXZlciB0byBzaHV0IHVwIHRoZQo+ID4gPiByZWdyZXNzaW9uIHJlcG9ydCwgYnV0IGl0J3Mgbm90 IGZpeGluZyBhbnl0aGluZyBsb25nIHRlcm0uIFRoZXJlJ3Mgbm90Cj4gPiA+IGdvaW5nIHRvIGJl IG5ldyBkcml2ZXJzLCBvciBuZXcgaHcgc3VwcG9ydCBpbiBleGlzdGluZyBkcml2ZXJzIGluIGZi ZGV2Lgo+ID4gPgo+ID4gPiBBbHNvIG5vdGUgdGhhdCB0aGVyZSdzIG5vdCBzcGVjIG5vciB0ZXN0 IHN1aXRlIGZvciBmYmRldiwgc28gInlvdSBndXlzCj4gPiA+IHNob3VsZCBoYXZlIGtub3duIGJl Zm9yZSByZW1vdmluZyBkcml2ZXJzIiBkb2Vzbid0IHdvcmsuCj4gPgo+ID4gYnR3IHJldmVydCBp dHNlbGYgaXMgc3R1Y2sgc29tZXdoZXJlLCBzbyBJIGNhbid0IGZpbmQgaXQuIEFuZCBmb3IgdGhl Cj4KPiBZb3Ugc2hvdWxkIGJlIGFibGUgdG8gZG93bmxvYWQgdGhlIGNvbW1pdCBsaWtlIHRoaXMg KHRoZSBjb21taXQKPiBtZXNzYWdlIHdpbGwgbmVlZCBhbWVuZGluZyB0byByZW1vdmUgbW9zdCBv ZiB0aGUgdHJhaWxlcnMgYXQgdGhlCj4gYm90dG9tLCB0aG91Z2gpOgo+Cj4gZ2l0IGZldGNoIGh0 dHBzOi8vbGludXguZ29vZ2xlc291cmNlLmNvbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xp bnV4Cj4gcmVmcy9jaGFuZ2VzLzUyLzI5NTIvMQo+Cj4gPiByZXZlcnQgY2FuIHlvdSBwbHMganVz dCByZXN1cnJlY3QgdGhlIGZpbGVzIGluIGRyaXZlcnMvdmlkZW8sIHdpdGhvdXQKPiA+IHRvdWNo aW5nIGFueXRoaW5nIGluIGRyaXZlcnMvZ3B1PyBUeWluZyBkb3duIGRybSBkcml2ZXJzIHdpdGgg c3R1ZmYgaW4KPiA+IGZiZGV2IGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlIHRvIG1lLgo+Cj4gVGhl IHRvdWNoaW5nIG9mIGNvZGUgaW4gZHJtIHdhcyBhIGNvbnNlcXVlbmNlIG9mIG5lZWRpbmcgdG8g cmV2ZXJ0IGEKPiBmb2xsb3ctdXAgY29tbWl0IHdoaWNoIG1vdmVkIGNvZGUgcHJldmlvdXNseSBz aGFyZWQgYmV0d2VlbiBmYmRldiBhbmQKPiBkcm0gaW50byB0aGUgZHJtIGRyaXZlci4KPgo+IE9y IGRvIHlvdSB0aGluayB3ZSBzaG91bGQgIm1hbnVhbGx5IiByZXZlcnQgdGhlIGZpcnN0IGNvbW1p dCBhbmQgYXMgYQo+IGNvbnNlcXVlbmNlIGVuZCB1cCB3aXRoIHRoZSB0d28gY29waWVzIG9mIHRo ZSBjb2RlPwoKWXVwLgotRGFuaWVsCgo+Cj4gUGV0ZXIKPgo+ID4KPiA+IFRoYW5rcywgRGFuaWVs Cj4gPgo+ID4gPiAtRGFuaWVsCj4gPiA+Cj4gPiA+ID4KPiA+ID4gPiBQZXRlcgo+ID4gPiA+Cj4g PiA+ID4gPiAtRGFuaWVsCj4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gU2ln bmVkLW9mZi1ieTogUGV0ZXIgQ29sbGluZ2JvdXJuZSA8cGNjQGdvb2dsZS5jb20+Cj4gPiA+ID4g PiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gVmlldyB0aGlzIGNoYW5nZSBpbiBHZXJyaXQ6IGh0dHBz Oi8vbGludXgtcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vcS9JMmQ3ZTU5YjBlNjkzZDlmZWMyMDZk NDBkZjE5MGM1YWEwMjg0NGI1Ngo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gIE1BSU5UQUlO RVJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArCj4gPiA+ID4gPiA+ID4gIGRy aXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kZWJ1Z2ZzLmMgICB8ICAgMSArCj4gPiA+ID4gPiA+ ID4gIGRyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kaXNwbGF5LmMgICB8ICAgMSArCj4gPiA+ ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kcm0uaCAgICAgICB8ICA3MyAt LQo+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFfZHJ2LmMgICAgICAg fCAgIDEgKwo+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFfdmVyc2F0 aWxlLmMgfCAgIDEgKwo+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWcg ICAgICAgICAgICAgfCAgMjAgKwo+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L01h a2VmaWxlICAgICAgICAgICAgfCAgIDEgKwo+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL3ZpZGVvL2Zi ZGV2L2FtYmEtY2xjZC5jICAgICAgICAgfCA5ODYgKysrKysrKysrKysrKysrKysrKysrKysrCj4g PiA+ID4gPiA+ID4gIGluY2x1ZGUvbGludXgvYW1iYS9jbGNkLXJlZ3MuaCAgICAgICAgICB8ICA4 NyArKysKPiA+ID4gPiA+ID4gPiAgaW5jbHVkZS9saW51eC9hbWJhL2NsY2QuaCAgICAgICAgICAg ICAgIHwgMjkwICsrKysrKysKPiA+ID4gPiA+ID4gPiAgMTEgZmlsZXMgY2hhbmdlZCwgMTM5MyBp bnNlcnRpb25zKCspLCA3MyBkZWxldGlvbnMoLSkKPiA+ID4gPiA+ID4gPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJkZXYvYW1iYS1jbGNkLmMKPiA+ID4gPiA+ID4gPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvYW1iYS9jbGNkLXJlZ3MuaAo+ID4gPiA+ID4g PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC9hbWJhL2NsY2QuaAo+ID4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5F UlMKPiA+ID4gPiA+ID4gPiBpbmRleCAxOTBjN2ZhMmVhMDEuLjY3MWMxZmE3OWU2NCAxMDA2NDQK PiA+ID4gPiA+ID4gPiAtLS0gYS9NQUlOVEFJTkVSUwo+ID4gPiA+ID4gPiA+ICsrKyBiL01BSU5U QUlORVJTCj4gPiA+ID4gPiA+ID4gQEAgLTE0NjAsNiArMTQ2MCwxMSBAQCBTOiAgIE9kZCBGaXhl cwo+ID4gPiA+ID4gPiA+ICBGOiBkcml2ZXJzL2FtYmEvCj4gPiA+ID4gPiA+ID4gIEY6IGluY2x1 ZGUvbGludXgvYW1iYS9idXMuaAo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gK0FSTSBQUklN RUNFTEwgQ0xDRCBQTDExMCBEUklWRVIKPiA+ID4gPiA+ID4gPiArTTogUnVzc2VsbCBLaW5nIDxs aW51eEBhcm1saW51eC5vcmcudWs+Cj4gPiA+ID4gPiA+ID4gK1M6IE9kZCBGaXhlcwo+ID4gPiA+ ID4gPiA+ICtGOiBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2FtYmEtY2xjZC4qCj4gPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiA+ICBBUk0gUFJJTUVDRUxMIEtNSSBQTDA1MCBEUklWRVIKPiA+ID4gPiA+ ID4gPiAgTTogUnVzc2VsbCBLaW5nIDxsaW51eEBhcm1saW51eC5vcmcudWs+Cj4gPiA+ID4gPiA+ ID4gIFM6IE9kZCBGaXhlcwo+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vcGwxMTEvcGwxMTFfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX2Rl YnVnZnMuYwo+ID4gPiA+ID4gPiA+IGluZGV4IDMxN2Y2OGFiZjE4Yi4uMjZjYThjZGYzZTYwIDEw MDY0NAo+ID4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kZWJ1 Z2ZzLmMKPiA+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFfZGVi dWdmcy5jCj4gPiA+ID4gPiA+ID4gQEAgLTMsNiArMyw3IEBACj4gPiA+ID4gPiA+ID4gICAqICBD b3B5cmlnaHQgwqkgMjAxNyBCcm9hZGNvbQo+ID4gPiA+ID4gPiA+ICAgKi8KPiA+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvYW1iYS9jbGNkLXJlZ3MuaD4KPiA+ID4g PiA+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L3NlcV9maWxlLmg+Cj4gPiA+ID4gPiA+ID4KPiA+ID4g PiA+ID4gPiAgI2luY2x1ZGUgPGRybS9kcm1fZGVidWdmcy5oPgo+ID4gPiA+ID4gPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFfZGlzcGxheS5jIGIvZHJpdmVycy9n cHUvZHJtL3BsMTExL3BsMTExX2Rpc3BsYXkuYwo+ID4gPiA+ID4gPiA+IGluZGV4IGIzZTg2OTdj YWZjZi4uNzAzZGRjODAzYzU1IDEwMDY0NAo+ID4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9wbDExMS9wbDExMV9kaXNwbGF5LmMKPiA+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vcGwxMTEvcGwxMTFfZGlzcGxheS5jCj4gPiA+ID4gPiA+ID4gQEAgLTksNiArOSw3IEBA Cj4gPiA+ID4gPiA+ID4gICAqIENvcHlyaWdodCAoQykgMjAxMSBUZXhhcyBJbnN0cnVtZW50cwo+ ID4gPiA+ID4gPiA+ICAgKi8KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8 bGludXgvYW1iYS9jbGNkLXJlZ3MuaD4KPiA+ID4gPiA+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L2Ns ay5oPgo+ID4gPiA+ID4gPiA+ICAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPiA+ID4gPiA+ID4g PiAgI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX2RybS5oIGIvZHJpdmVycy9ncHUvZHJtL3BsMTEx L3BsMTExX2RybS5oCj4gPiA+ID4gPiA+ID4gaW5kZXggMmE0NmI1YmQ4NTc2Li5iYTM5OWJjYjc5 MmYgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTEx X2RybS5oCj4gPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX2Ry bS5oCj4gPiA+ID4gPiA+ID4gQEAgLTIzLDc5ICsyMyw2IEBACj4gPiA+ID4gPiA+ID4gICNpbmNs dWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4gPiA+ID4gPiA+ID4gICNpbmNsdWRlIDxkcm0vZHJtX3Np bXBsZV9rbXNfaGVscGVyLmg+Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiAtLyoKPiA+ID4g PiA+ID4gPiAtICogQ0xDRCBDb250cm9sbGVyIEludGVybmFsIFJlZ2lzdGVyIGFkZHJlc3Nlcwo+ ID4gPiA+ID4gPiA+IC0gKi8KPiA+ID4gPiA+ID4gPiAtI2RlZmluZSBDTENEX1RJTTAgICAgICAg ICAgMHgwMDAwMDAwMAo+ID4gPiA+ID4gPiA+IC0jZGVmaW5lIENMQ0RfVElNMSAgICAgICAgICAw eDAwMDAwMDA0Cj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ0xDRF9USU0yICAgICAgICAgIDB4MDAw MDAwMDgKPiA+ID4gPiA+ID4gPiAtI2RlZmluZSBDTENEX1RJTTMgICAgICAgICAgMHgwMDAwMDAw Ywo+ID4gPiA+ID4gPiA+IC0jZGVmaW5lIENMQ0RfVUJBUyAgICAgICAgICAweDAwMDAwMDEwCj4g PiA+ID4gPiA+ID4gLSNkZWZpbmUgQ0xDRF9MQkFTICAgICAgICAgIDB4MDAwMDAwMTQKPiA+ID4g PiA+ID4gPiAtCj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ0xDRF9QTDExMF9JRU5CICAgICAgICAg ICAgMHgwMDAwMDAxOAo+ID4gPiA+ID4gPiA+IC0jZGVmaW5lIENMQ0RfUEwxMTBfQ05UTCAgICAg ICAgICAgIDB4MDAwMDAwMWMKPiA+ID4gPiA+ID4gPiAtI2RlZmluZSBDTENEX1BMMTEwX1NUQVQg ICAgICAgICAgICAweDAwMDAwMDIwCj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ0xDRF9QTDExMF9J TlRSICAgICAgICAgICAgMHgwMDAwMDAyNAo+ID4gPiA+ID4gPiA+IC0jZGVmaW5lIENMQ0RfUEwx MTBfVUNVUiAgICAgICAgICAgIDB4MDAwMDAwMjgKPiA+ID4gPiA+ID4gPiAtI2RlZmluZSBDTENE X1BMMTEwX0xDVVIgICAgICAgICAgICAweDAwMDAwMDJDCj4gPiA+ID4gPiA+ID4gLQo+ID4gPiA+ ID4gPiA+IC0jZGVmaW5lIENMQ0RfUEwxMTFfQ05UTCAgICAgICAgICAgIDB4MDAwMDAwMTgKPiA+ ID4gPiA+ID4gPiAtI2RlZmluZSBDTENEX1BMMTExX0lFTkIgICAgICAgICAgICAweDAwMDAwMDFj Cj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ0xDRF9QTDExMV9SSVMgICAgICAgICAgICAgMHgwMDAw MDAyMAo+ID4gPiA+ID4gPiA+IC0jZGVmaW5lIENMQ0RfUEwxMTFfTUlTICAgICAgICAgICAgIDB4 MDAwMDAwMjQKPiA+ID4gPiA+ID4gPiAtI2RlZmluZSBDTENEX1BMMTExX0lDUiAgICAgICAgICAg ICAweDAwMDAwMDI4Cj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ0xDRF9QTDExMV9VQ1VSICAgICAg ICAgICAgMHgwMDAwMDAyYwo+ID4gPiA+ID4gPiA+IC0jZGVmaW5lIENMQ0RfUEwxMTFfTENVUiAg ICAgICAgICAgIDB4MDAwMDAwMzAKPiA+ID4gPiA+ID4gPiAtCj4gPiA+ID4gPiA+ID4gLSNkZWZp bmUgQ0xDRF9QQUxMICAgICAgICAgIDB4MDAwMDAyMDAKPiA+ID4gPiA+ID4gPiAtI2RlZmluZSBD TENEX1BBTEVUVEUgICAgICAgICAgICAgICAweDAwMDAwMjAwCj4gPiA+ID4gPiA+ID4gLQo+ID4g PiA+ID4gPiA+IC0jZGVmaW5lIFRJTTJfUENEX0xPX01BU0sgICBHRU5NQVNLKDQsIDApCj4gPiA+ ID4gPiA+ID4gLSNkZWZpbmUgVElNMl9QQ0RfTE9fQklUUyAgIDUKPiA+ID4gPiA+ID4gPiAtI2Rl ZmluZSBUSU0yX0NMS1NFTCAgICAgICAgICAgICAgICAoMSA8PCA1KQo+ID4gPiA+ID4gPiA+IC0j ZGVmaW5lIFRJTTJfQUNCX01BU0sgICAgICAgICAgICAgIEdFTk1BU0soMTAsIDYpCj4gPiA+ID4g PiA+ID4gLSNkZWZpbmUgVElNMl9JVlMgICAgICAgICAgICgxIDw8IDExKQo+ID4gPiA+ID4gPiA+ IC0jZGVmaW5lIFRJTTJfSUhTICAgICAgICAgICAoMSA8PCAxMikKPiA+ID4gPiA+ID4gPiAtI2Rl ZmluZSBUSU0yX0lQQyAgICAgICAgICAgKDEgPDwgMTMpCj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUg VElNMl9JT0UgICAgICAgICAgICgxIDw8IDE0KQo+ID4gPiA+ID4gPiA+IC0jZGVmaW5lIFRJTTJf QkNEICAgICAgICAgICAoMSA8PCAyNikKPiA+ID4gPiA+ID4gPiAtI2RlZmluZSBUSU0yX1BDRF9I SV9NQVNLICAgR0VOTUFTSygzMSwgMjcpCj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgVElNMl9QQ0Rf SElfQklUUyAgIDUKPiA+ID4gPiA+ID4gPiAtI2RlZmluZSBUSU0yX1BDRF9ISV9TSElGVCAgMjcK PiA+ID4gPiA+ID4gPiAtCj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ05UTF9MQ0RFTiAgICAgICAg ICgxIDw8IDApCj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ05UTF9MQ0RCUFAxICAgICAgICAgICAg ICAgKDAgPDwgMSkKPiA+ID4gPiA+ID4gPiAtI2RlZmluZSBDTlRMX0xDREJQUDIgICAgICAgICAg ICAgICAoMSA8PCAxKQo+ID4gPiA+ID4gPiA+IC0jZGVmaW5lIENOVExfTENEQlBQNCAgICAgICAg ICAgICAgICgyIDw8IDEpCj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ05UTF9MQ0RCUFA4ICAgICAg ICAgICAgICAgKDMgPDwgMSkKPiA+ID4gPiA+ID4gPiAtI2RlZmluZSBDTlRMX0xDREJQUDE2ICAg ICAgICAgICAgICAoNCA8PCAxKQo+ID4gPiA+ID4gPiA+IC0jZGVmaW5lIENOVExfTENEQlBQMTZf NTY1ICAoNiA8PCAxKQo+ID4gPiA+ID4gPiA+IC0jZGVmaW5lIENOVExfTENEQlBQMTZfNDQ0ICAo NyA8PCAxKQo+ID4gPiA+ID4gPiA+IC0jZGVmaW5lIENOVExfTENEQlBQMjQgICAgICAgICAgICAg ICg1IDw8IDEpCj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ05UTF9MQ0RCVyAgICAgICAgICgxIDw8 IDQpCj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ05UTF9MQ0RURlQgICAgICAgICAgICAgICAgKDEg PDwgNSkKPiA+ID4gPiA+ID4gPiAtI2RlZmluZSBDTlRMX0xDRE1PTk84ICAgICAgICAgICAgICAo MSA8PCA2KQo+ID4gPiA+ID4gPiA+IC0jZGVmaW5lIENOVExfTENERFVBTCAgICAgICAgICAgICAg ICgxIDw8IDcpCj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ05UTF9CR1IgICAgICAgICAgICgxIDw8 IDgpCj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ05UTF9CRUJPICAgICAgICAgICgxIDw8IDkpCj4g PiA+ID4gPiA+ID4gLSNkZWZpbmUgQ05UTF9CRVBPICAgICAgICAgICgxIDw8IDEwKQo+ID4gPiA+ ID4gPiA+IC0jZGVmaW5lIENOVExfTENEUFdSICAgICAgICAgICAgICAgICgxIDw8IDExKQo+ID4g PiA+ID4gPiA+IC0jZGVmaW5lIENOVExfTENEVkNPTVAoeCkgICAoKHgpIDw8IDEyKQo+ID4gPiA+ ID4gPiA+IC0jZGVmaW5lIENOVExfTERNQUZJRk9USU1FICAoMSA8PCAxNSkKPiA+ID4gPiA+ID4g PiAtI2RlZmluZSBDTlRMX1dBVEVSTUFSSyAgICAgICAgICAgICAoMSA8PCAxNikKPiA+ID4gPiA+ ID4gPiAtCj4gPiA+ID4gPiA+ID4gLS8qIFNUIE1pY3JvZWxlY3Ryb25pY3MgdmFyaWFudCBiaXRz ICovCj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ05UTF9TVF8xWEJQUF80NDQgIDB4MAo+ID4gPiA+ ID4gPiA+IC0jZGVmaW5lIENOVExfU1RfMVhCUFBfNTU1MSAoMSA8PCAxNykKPiA+ID4gPiA+ID4g PiAtI2RlZmluZSBDTlRMX1NUXzFYQlBQXzU2NSAgKDEgPDwgMTgpCj4gPiA+ID4gPiA+ID4gLSNk ZWZpbmUgQ05UTF9TVF9DRFdJRF8xMiAgIDB4MAo+ID4gPiA+ID4gPiA+IC0jZGVmaW5lIENOVExf U1RfQ0RXSURfMTYgICAoMSA8PCAxOSkKPiA+ID4gPiA+ID4gPiAtI2RlZmluZSBDTlRMX1NUX0NE V0lEXzE4ICAgKDEgPDwgMjApCj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ05UTF9TVF9DRFdJRF8y NCAgICgoMSA8PCAxOSkgfCAoMSA8PCAyMCkpCj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ05UTF9T VF9DRUFFTiAgICAgICAgICAgICAgKDEgPDwgMjEpCj4gPiA+ID4gPiA+ID4gLSNkZWZpbmUgQ05U TF9TVF9MQ0RCUFAyNF9QQUNLRUQgICAgKDYgPDwgMSkKPiA+ID4gPiA+ID4gPiAtCj4gPiA+ID4g PiA+ID4gICNkZWZpbmUgQ0xDRF9JUlFfTkVYVEJBU0VfVVBEQVRFIEJJVCgyKQo+ID4gPiA+ID4g PiA+Cj4gPiA+ID4gPiA+ID4gIHN0cnVjdCBkcm1fbWlub3I7Cj4gPiA+ID4gPiA+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9wbDExMV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9wbDExMS9wbDExMV9kcnYuYwo+ID4gPiA+ID4gPiA+IGluZGV4IDk2ZTU4ZmRhNzVkOC4uZGEw YzM5ZGFlODc0IDEwMDY0NAo+ID4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wbDEx MS9wbDExMV9kcnYuYwo+ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wbDExMS9w bDExMV9kcnYuYwo+ID4gPiA+ID4gPiA+IEBAIC00Nyw2ICs0Nyw3IEBACj4gPiA+ID4gPiA+ID4g ICAqLwo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gICNpbmNsdWRlIDxsaW51eC9hbWJhL2J1 cy5oPgo+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvYW1iYS9jbGNkLXJlZ3MuaD4KPiA+ ID4gPiA+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KPiA+ID4gPiA+ID4gPiAgI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4gPiA+ID4gPiA+ICAjaW5jbHVkZSA8bGludXgvb2Yu aD4KPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTEx X3ZlcnNhdGlsZS5jIGIvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX3ZlcnNhdGlsZS5jCj4g PiA+ID4gPiA+ID4gaW5kZXggYmRkODgzZjRmMGRhLi4xMTI3MDgyZTlhNjAgMTAwNjQ0Cj4gPiA+ ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX3ZlcnNhdGlsZS5jCj4g PiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX3ZlcnNhdGlsZS5j Cj4gPiA+ID4gPiA+ID4gQEAgLTksNiArOSw3IEBACj4gPiA+ID4gPiA+ID4gICAqIE1ham9yIGNv bnRyaWJ1dGlvbnMgYW5kIGRpc2NvdmVyaWVzIGJ5IFJ1c3NlbGwgS2luZy4KPiA+ID4gPiA+ID4g PiAgICovCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2FtYmEv Y2xjZC1yZWdzLmg+Cj4gPiA+ID4gPiA+ID4gICNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KPiA+ ID4gPiA+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgo+ID4gPiA+ID4gPiA+ICAjaW5j bHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgo+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWcgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWcKPiA+ ID4gPiA+ID4gPiBpbmRleCBiMmM5ZGQ0ZjBjYjUuLjQwMmU4NTQ1MGJiNSAxMDA2NDQKPiA+ID4g PiA+ID4gPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWcKPiA+ID4gPiA+ID4gPiAr KysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWcKPiA+ID4gPiA+ID4gPiBAQCAtMjcyLDYg KzI3MiwyNiBAQCBjb25maWcgRkJfUE0yX0ZJRk9fRElTQ09OTkVDVAo+ID4gPiA+ID4gPiA+ICAg ICBoZWxwCj4gPiA+ID4gPiA+ID4gICAgICAgU3VwcG9ydCB0aGUgUGVybWVkaWEyIEZJRk8gZGlz Y29ubmVjdCBmZWF0dXJlLgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gK2NvbmZpZyBGQl9B Uk1DTENECj4gPiA+ID4gPiA+ID4gKyAgIHRyaXN0YXRlICJBUk0gUHJpbWVDZWxsIFBMMTEwIHN1 cHBvcnQiCj4gPiA+ID4gPiA+ID4gKyAgIGRlcGVuZHMgb24gQVJNIHx8IEFSTTY0IHx8IENPTVBJ TEVfVEVTVAo+ID4gPiA+ID4gPiA+ICsgICBkZXBlbmRzIG9uIEZCICYmIEFSTV9BTUJBICYmIEhB U19JT01FTQo+ID4gPiA+ID4gPiA+ICsgICBzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUCj4gPiA+ID4g PiA+ID4gKyAgIHNlbGVjdCBGQl9DRkJfQ09QWUFSRUEKPiA+ID4gPiA+ID4gPiArICAgc2VsZWN0 IEZCX0NGQl9JTUFHRUJMSVQKPiA+ID4gPiA+ID4gPiArICAgc2VsZWN0IEZCX01PREVfSEVMUEVS UyBpZiBPRgo+ID4gPiA+ID4gPiA+ICsgICBzZWxlY3QgVklERU9NT0RFX0hFTFBFUlMgaWYgT0YK PiA+ID4gPiA+ID4gPiArICAgc2VsZWN0IEJBQ0tMSUdIVF9DTEFTU19ERVZJQ0UgaWYgT0YKPiA+ ID4gPiA+ID4gPiArICAgaGVscAo+ID4gPiA+ID4gPiA+ICsgICAgIFRoaXMgZnJhbWVidWZmZXIg ZGV2aWNlIGRyaXZlciBpcyBmb3IgdGhlIEFSTSBQcmltZUNlbGwgUEwxMTAKPiA+ID4gPiA+ID4g PiArICAgICBDb2xvdXIgTENEIGNvbnRyb2xsZXIuICBBUk0gUHJpbWVDZWxscyBwcm92aWRlIHRo ZSBidWlsZGluZwo+ID4gPiA+ID4gPiA+ICsgICAgIGJsb2NrcyBmb3IgU3lzdGVtIG9uIGEgQ2hp cCBkZXZpY2VzLgo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICBJZiB5b3Ugd2Fu dCB0byBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUgKD1jb2RlIHdoaWNoIGNhbiBiZQo+ID4gPiA+ ID4gPiA+ICsgICAgIGluc2VydGVkIGludG8gYW5kIHJlbW92ZWQgZnJvbSB0aGUgcnVubmluZyBr ZXJuZWwpLCBzYXkgTQo+ID4gPiA+ID4gPiA+ICsgICAgIGhlcmUgYW5kIHJlYWQgPGZpbGU6RG9j dW1lbnRhdGlvbi9rYnVpbGQvbW9kdWxlcy5yc3Q+LiAgVGhlIG1vZHVsZQo+ID4gPiA+ID4gPiA+ ICsgICAgIHdpbGwgYmUgY2FsbGVkIGFtYmEtY2xjZC4KPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4g PiA+ID4gIGNvbmZpZyBGQl9BQ09STgo+ID4gPiA+ID4gPiA+ICAgICBib29sICJBY29ybiBWSURD IHN1cHBvcnQiCj4gPiA+ID4gPiA+ID4gICAgIGRlcGVuZHMgb24gKEZCID0geSkgJiYgQVJNICYm IEFSQ0hfQUNPUk4KPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRl di9NYWtlZmlsZSBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvTWFrZWZpbGUKPiA+ID4gPiA+ID4gPiBp bmRleCBjYWQ0ZmI2NDQ0MmEuLmEwNzA1Yjk5ZTY0MyAxMDA2NDQKPiA+ID4gPiA+ID4gPiAtLS0g YS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L01ha2VmaWxlCj4gPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVy cy92aWRlby9mYmRldi9NYWtlZmlsZQo+ID4gPiA+ID4gPiA+IEBAIC03NSw2ICs3NSw3IEBAIG9i ai0kKENPTkZJR19GQl9ISVQpICAgICAgICAgICAgICArPSBoaXRmYi5vCj4gPiA+ID4gPiA+ID4g IG9iai0kKENPTkZJR19GQl9BVE1FTCkgICAgICAgICAgICAgICArPSBhdG1lbF9sY2RmYi5vCj4g PiA+ID4gPiA+ID4gIG9iai0kKENPTkZJR19GQl9QVlIyKSAgICAgICAgICAgICArPSBwdnIyZmIu bwo+ID4gPiA+ID4gPiA+ICBvYmotJChDT05GSUdfRkJfVk9PRE9PMSkgICAgICAgICAgKz0gc3N0 ZmIubwo+ID4gPiA+ID4gPiA+ICtvYmotJChDT05GSUdfRkJfQVJNQ0xDRCkgICAgICs9IGFtYmEt Y2xjZC5vCj4gPiA+ID4gPiA+ID4gIG9iai0kKENPTkZJR19GQl9HT0xERklTSCkgICAgICAgICAr PSBnb2xkZmlzaGZiLm8KPiA+ID4gPiA+ID4gPiAgb2JqLSQoQ09ORklHX0ZCXzY4MzI4KSAgICAg ICAgICAgICs9IDY4MzI4ZmIubwo+ID4gPiA+ID4gPiA+ICBvYmotJChDT05GSUdfRkJfR0JFKSAg ICAgICAgICAgICAgKz0gZ2JlZmIubwo+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L2FtYmEtY2xjZC5jIGIvZHJpdmVycy92aWRlby9mYmRldi9hbWJhLWNsY2Qu Ywo+ID4gPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gaW5kZXgg MDAwMDAwMDAwMDAwLi5iNzY4MmRlNDEyZDgKPiA+ID4gPiA+ID4gPiAtLS0gL2Rldi9udWxsCj4g PiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9hbWJhLWNsY2QuYwo+ID4gPiA+ ID4gPiA+IEBAIC0wLDAgKzEsOTg2IEBACj4gPiA+ID4gPiA+ID4gKy8qCj4gPiA+ID4gPiA+ID4g KyAqICBsaW51eC9kcml2ZXJzL3ZpZGVvL2FtYmEtY2xjZC5jCj4gPiA+ID4gPiA+ID4gKyAqCj4g PiA+ID4gPiA+ID4gKyAqIENvcHlyaWdodCAoQykgMjAwMSBBUk0gTGltaXRlZCwgYnkgRGF2aWQg QSBSdXNsaW5nCj4gPiA+ID4gPiA+ID4gKyAqIFVwZGF0ZWQgdG8gMi41LCBEZWVwIEJsdWUgU29s dXRpb25zIEx0ZC4KPiA+ID4gPiA+ID4gPiArICoKPiA+ID4gPiA+ID4gPiArICogVGhpcyBmaWxl IGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMKPiA+ID4gPiA+ID4gPiArICogTGljZW5zZS4gIFNlZSB0aGUgZmlsZSBDT1BZSU5H IGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIGFyY2hpdmUKPiA+ID4gPiA+ID4gPiArICog Zm9yIG1vcmUgZGV0YWlscy4KPiA+ID4gPiA+ID4gPiArICoKPiA+ID4gPiA+ID4gPiArICogIEFS TSBQcmltZUNlbGwgUEwxMTAgQ29sb3IgTENEIENvbnRyb2xsZXIKPiA+ID4gPiA+ID4gPiArICov Cj4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9hbWJhL2J1cy5oPgo+ID4gPiA+ID4gPiA+ ICsjaW5jbHVkZSA8bGludXgvYW1iYS9jbGNkLmg+Cj4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxs aW51eC9iYWNrbGlnaHQuaD4KPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPiA+ID4gPiA+ID4gPiArI2lu Y2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+Cj4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxsaW51 eC9mYi5oPgo+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvaW5pdC5oPgo+ID4gPiA+ID4g PiA+ICsjaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+Cj4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxs aW51eC9saXN0Lmg+Cj4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9tbS5oPgo+ID4gPiA+ ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiA+ID4gPiA+ID4gKyNpbmNsdWRl IDxsaW51eC9vZl9hZGRyZXNzLmg+Cj4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9n cmFwaC5oPgo+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ID4gPiA+ID4g PiA+ICsjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+Cj4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDx2 aWRlby9kaXNwbGF5X3RpbWluZy5oPgo+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8dmlkZW8vb2Zf ZGlzcGxheV90aW1pbmcuaD4KPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPHZpZGVvL3ZpZGVvbW9k ZS5oPgo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArI2RlZmluZSB0b19jbGNkKGluZm8p ICAgICAgY29udGFpbmVyX29mKGluZm8sIHN0cnVjdCBjbGNkX2ZiLCBmYikKPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gKy8qIFRoaXMgaXMgbGltaXRlZCB0byAxNiBjaGFyYWN0ZXJzIHdo ZW4gZGlzcGxheWVkIGJ5IFggc3RhcnR1cCAqLwo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgY29uc3Qg Y2hhciAqY2xjZF9uYW1lID0gIkNMQ0QgRkIiOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4g PiArLyoKPiA+ID4gPiA+ID4gPiArICogVW5mb3J0dW5hdGVseSwgdGhlIGVuYWJsZS9kaXNhYmxl IGZ1bmN0aW9ucyBtYXkgYmUgY2FsbGVkIGVpdGhlciBmcm9tCj4gPiA+ID4gPiA+ID4gKyAqIHBy b2Nlc3Mgb3IgSVJRIGNvbnRleHQsIGFuZCB3ZSBfbmVlZF8gdG8gZGVsYXkuICBUaGlzIGlzIF9u b3RfIGdvb2QuCj4gPiA+ID4gPiA+ID4gKyAqLwo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW5saW5l IHZvaWQgY2xjZGZiX3NsZWVwKHVuc2lnbmVkIGludCBtcykKPiA+ID4gPiA+ID4gPiArewo+ID4g PiA+ID4gPiA+ICsgICBpZiAoaW5fYXRvbWljKCkpIHsKPiA+ID4gPiA+ID4gPiArICAgICAgICAg ICBtZGVsYXkobXMpOwo+ID4gPiA+ID4gPiA+ICsgICB9IGVsc2Ugewo+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgIG1zbGVlcChtcyk7Cj4gPiA+ID4gPiA+ID4gKyAgIH0KPiA+ID4gPiA+ID4gPiAr fQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArc3RhdGljIGlubGluZSB2b2lkIGNsY2Rm Yl9zZXRfc3RhcnQoc3RydWN0IGNsY2RfZmIgKmZiKQo+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4g PiA+ID4gKyAgIHVuc2lnbmVkIGxvbmcgdXN0YXJ0ID0gZmItPmZiLmZpeC5zbWVtX3N0YXJ0Owo+ ID4gPiA+ID4gPiA+ICsgICB1bnNpZ25lZCBsb25nIGxzdGFydDsKPiA+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ID4gKyAgIHVzdGFydCArPSBmYi0+ZmIudmFyLnlvZmZzZXQgKiBmYi0+ZmIuZml4 LmxpbmVfbGVuZ3RoOwo+ID4gPiA+ID4gPiA+ICsgICBsc3RhcnQgPSB1c3RhcnQgKyBmYi0+ZmIu dmFyLnlyZXMgKiBmYi0+ZmIuZml4LmxpbmVfbGVuZ3RoIC8gMjsKPiA+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ID4gKyAgIHdyaXRlbCh1c3RhcnQsIGZiLT5yZWdzICsgQ0xDRF9VQkFTKTsKPiA+ ID4gPiA+ID4gPiArICAgd3JpdGVsKGxzdGFydCwgZmItPnJlZ3MgKyBDTENEX0xCQVMpOwo+ID4g PiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBj bGNkZmJfZGlzYWJsZShzdHJ1Y3QgY2xjZF9mYiAqZmIpCj4gPiA+ID4gPiA+ID4gK3sKPiA+ID4g PiA+ID4gPiArICAgdTMyIHZhbDsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIGlm IChmYi0+Ym9hcmQtPmRpc2FibGUpCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgZmItPmJvYXJk LT5kaXNhYmxlKGZiKTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIGlmIChmYi0+ cGFuZWwtPmJhY2tsaWdodCkgewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGZiLT5wYW5lbC0+ YmFja2xpZ2h0LT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1BPV0VSRE9XTjsKPiA+ID4gPiA+ID4g PiArICAgICAgICAgICBiYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhmYi0+cGFuZWwtPmJhY2tsaWdo dCk7Cj4gPiA+ID4gPiA+ID4gKyAgIH0KPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAg IHZhbCA9IHJlYWRsKGZiLT5yZWdzICsgZmItPm9mZl9jbnRsKTsKPiA+ID4gPiA+ID4gPiArICAg aWYgKHZhbCAmIENOVExfTENEUFdSKSB7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgdmFsICY9 IH5DTlRMX0xDRFBXUjsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICB3cml0ZWwodmFsLCBmYi0+ cmVncyArIGZiLT5vZmZfY250bCk7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgIGNsY2RmYl9zbGVlcCgyMCk7Cj4gPiA+ID4gPiA+ID4gKyAgIH0KPiA+ID4gPiA+ID4g PiArICAgaWYgKHZhbCAmIENOVExfTENERU4pIHsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICB2 YWwgJj0gfkNOVExfTENERU47Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgd3JpdGVsKHZhbCwg ZmItPnJlZ3MgKyBmYi0+b2ZmX2NudGwpOwo+ID4gPiA+ID4gPiA+ICsgICB9Cj4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAvKgo+ID4gPiA+ID4gPiA+ICsgICAgKiBEaXNhYmxlIENM Q0QgY2xvY2sgc291cmNlLgo+ID4gPiA+ID4gPiA+ICsgICAgKi8KPiA+ID4gPiA+ID4gPiArICAg aWYgKGZiLT5jbGtfZW5hYmxlZCkgewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGZiLT5jbGtf ZW5hYmxlZCA9IGZhbHNlOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGNsa19kaXNhYmxlKGZi LT5jbGspOwo+ID4gPiA+ID4gPiA+ICsgICB9Cj4gPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIGNsY2RmYl9lbmFibGUoc3RydWN0IGNsY2Rf ZmIgKmZiLCB1MzIgY250bCkKPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ICsgICAvKgo+ ID4gPiA+ID4gPiA+ICsgICAgKiBFbmFibGUgdGhlIENMQ0QgY2xvY2sgc291cmNlLgo+ID4gPiA+ ID4gPiA+ICsgICAgKi8KPiA+ID4gPiA+ID4gPiArICAgaWYgKCFmYi0+Y2xrX2VuYWJsZWQpIHsK PiA+ID4gPiA+ID4gPiArICAgICAgICAgICBmYi0+Y2xrX2VuYWJsZWQgPSB0cnVlOwo+ID4gPiA+ ID4gPiA+ICsgICAgICAgICAgIGNsa19lbmFibGUoZmItPmNsayk7Cj4gPiA+ID4gPiA+ID4gKyAg IH0KPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIC8qCj4gPiA+ID4gPiA+ID4gKyAg ICAqIEJyaW5nIHVwIGJ5IGZpcnN0IGVuYWJsaW5nLi4KPiA+ID4gPiA+ID4gPiArICAgICovCj4g PiA+ID4gPiA+ID4gKyAgIGNudGwgfD0gQ05UTF9MQ0RFTjsKPiA+ID4gPiA+ID4gPiArICAgd3Jp dGVsKGNudGwsIGZiLT5yZWdzICsgZmItPm9mZl9jbnRsKTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ ID4gPiA+ID4gKyAgIGNsY2RmYl9zbGVlcCgyMCk7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiA+ICsgICAvKgo+ID4gPiA+ID4gPiA+ICsgICAgKiBhbmQgbm93IGFwcGx5IHBvd2VyLgo+ID4g PiA+ID4gPiA+ICsgICAgKi8KPiA+ID4gPiA+ID4gPiArICAgY250bCB8PSBDTlRMX0xDRFBXUjsK PiA+ID4gPiA+ID4gPiArICAgd3JpdGVsKGNudGwsIGZiLT5yZWdzICsgZmItPm9mZl9jbnRsKTsK PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIC8qCj4gPiA+ID4gPiA+ID4gKyAgICAq IFR1cm4gb24gYmFja2xpZ2h0Cj4gPiA+ID4gPiA+ID4gKyAgICAqLwo+ID4gPiA+ID4gPiA+ICsg ICBpZiAoZmItPnBhbmVsLT5iYWNrbGlnaHQpIHsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBm Yi0+cGFuZWwtPmJhY2tsaWdodC0+cHJvcHMucG93ZXIgPSBGQl9CTEFOS19VTkJMQU5LOwo+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgIGJhY2tsaWdodF91cGRhdGVfc3RhdHVzKGZiLT5wYW5lbC0+ YmFja2xpZ2h0KTsKPiA+ID4gPiA+ID4gPiArICAgfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiArICAgLyoKPiA+ID4gPiA+ID4gPiArICAgICogZmluYWxseSwgZW5hYmxlIHRoZSBpbnRl cmZhY2UuCj4gPiA+ID4gPiA+ID4gKyAgICAqLwo+ID4gPiA+ID4gPiA+ICsgICBpZiAoZmItPmJv YXJkLT5lbmFibGUpCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgZmItPmJvYXJkLT5lbmFibGUo ZmIpOwo+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtzdGF0 aWMgaW50Cj4gPiA+ID4gPiA+ID4gK2NsY2RmYl9zZXRfYml0ZmllbGRzKHN0cnVjdCBjbGNkX2Zi ICpmYiwgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIpCj4gPiA+ID4gPiA+ID4gK3sKPiA+ ID4gPiA+ID4gPiArICAgdTMyIGNhcHM7Cj4gPiA+ID4gPiA+ID4gKyAgIGludCByZXQgPSAwOwo+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgaWYgKGZiLT5wYW5lbC0+Y2FwcyAmJiBm Yi0+Ym9hcmQtPmNhcHMpCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgY2FwcyA9IGZiLT5wYW5l bC0+Y2FwcyAmIGZiLT5ib2FyZC0+Y2FwczsKPiA+ID4gPiA+ID4gPiArICAgZWxzZSB7Cj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgLyogT2xkIHdheSBvZiBzcGVjaWZ5aW5nIHdoYXQgY2FuIGJl IHVzZWQgKi8KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBjYXBzID0gZmItPnBhbmVsLT5jbnRs ICYgQ05UTF9CR1IgPwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgQ0xDRF9DQVBf QkdSIDogQ0xDRF9DQVBfUkdCOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIC8qIEJ1dCBtYXNr IG91dCA0NDQgbW9kZXMgYXMgdGhleSB3ZXJlbid0IHN1cHBvcnRlZCAqLwo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgIGNhcHMgJj0gfkNMQ0RfQ0FQXzQ0NDsKPiA+ID4gPiA+ID4gPiArICAgfQo+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgLyogT25seSBURlQgcGFuZWxzIGNhbiBk byBSR0I4ODgvQkdSODg4ICovCj4gPiA+ID4gPiA+ID4gKyAgIGlmICghKGZiLT5wYW5lbC0+Y250 bCAmIENOVExfTENEVEZUKSkKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBjYXBzICY9IH5DTENE X0NBUF84ODg7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBtZW1zZXQoJnZhci0+ dHJhbnNwLCAwLCBzaXplb2YodmFyLT50cmFuc3ApKTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4g PiA+ID4gKyAgIHZhci0+cmVkLm1zYl9yaWdodCA9IDA7Cj4gPiA+ID4gPiA+ID4gKyAgIHZhci0+ Z3JlZW4ubXNiX3JpZ2h0ID0gMDsKPiA+ID4gPiA+ID4gPiArICAgdmFyLT5ibHVlLm1zYl9yaWdo dCA9IDA7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBzd2l0Y2ggKHZhci0+Yml0 c19wZXJfcGl4ZWwpIHsKPiA+ID4gPiA+ID4gPiArICAgY2FzZSAxOgo+ID4gPiA+ID4gPiA+ICsg ICBjYXNlIDI6Cj4gPiA+ID4gPiA+ID4gKyAgIGNhc2UgNDoKPiA+ID4gPiA+ID4gPiArICAgY2Fz ZSA4Ogo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIC8qIElmIHdlIGNhbid0IGRvIDU1NTEsIHJl amVjdCAqLwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGNhcHMgJj0gQ0xDRF9DQVBfNTU1MTsK PiA+ID4gPiA+ID4gPiArICAgICAgICAgICBpZiAoIWNhcHMpIHsKPiA+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICBicmVhazsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICB9Cj4gPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHZhci0+cmVkLmxlbmd0aCAgICAgICAgID0gdmFy LT5iaXRzX3Blcl9waXhlbDsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICB2YXItPnJlZC5vZmZz ZXQgICAgICAgICA9IDA7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgdmFyLT5ncmVlbi5sZW5n dGggICAgICAgPSB2YXItPmJpdHNfcGVyX3BpeGVsOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAg IHZhci0+Z3JlZW4ub2Zmc2V0ICAgICAgID0gMDsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICB2 YXItPmJsdWUubGVuZ3RoICAgICAgICA9IHZhci0+Yml0c19wZXJfcGl4ZWw7Cj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgdmFyLT5ibHVlLm9mZnNldCAgICAgICAgPSAwOwo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgIGJyZWFrOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgY2Fz ZSAxNjoKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAvKiBJZiB3ZSBjYW4ndCBkbyA0NDQsIDU1 NTEgb3IgNTY1LCByZWplY3QgKi8KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBpZiAoIShjYXBz ICYgKENMQ0RfQ0FQXzQ0NCB8IENMQ0RfQ0FQXzU1NTEgfCBDTENEX0NBUF81NjUpKSkgewo+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsKPiA+ID4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIH0K PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgLyoKPiA+ID4gPiA+ID4g PiArICAgICAgICAgICAgKiBHcmVlbiBsZW5ndGggY2FuIGJlIDQsIDUgb3IgNiBkZXBlbmRpbmcg d2hldGhlcgo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAqIHdlJ3JlIG9wZXJhdGluZyBpbiA0 NDQsIDU1NTEgb3IgNTY1IG1vZGUuCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICovCj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgaWYgKHZhci0+Z3JlZW4ubGVuZ3RoID09IDQgJiYgY2FwcyAm IENMQ0RfQ0FQXzQ0NCkKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIGNhcHMgJj0g Q0xDRF9DQVBfNDQ0Owo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGlmICh2YXItPmdyZWVuLmxl bmd0aCA9PSA1ICYmIGNhcHMgJiBDTENEX0NBUF81NTUxKQo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgY2FwcyAmPSBDTENEX0NBUF81NTUxOwo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgIGVsc2UgaWYgKHZhci0+Z3JlZW4ubGVuZ3RoID09IDYgJiYgY2FwcyAmIENMQ0RfQ0FQXzU2 NSkKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIGNhcHMgJj0gQ0xDRF9DQVBfNTY1 Owo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGVsc2Ugewo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgLyoKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAqIFBMMTEw IG9mZmljaWFsbHkgb25seSBzdXBwb3J0cyBSR0I1NTUsCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgKiBidXQgbWF5IGJlIHdpcmVkIHVwIHRvIGFsbG93IFJHQjU2NS4KPiA+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAqLwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgaWYgKGNhcHMgJiBDTENEX0NBUF81NjUpIHsKPiA+ID4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgdmFyLT5ncmVlbi5sZW5ndGggPSA2Owo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBzICY9IENMQ0RfQ0FQXzU2NTsKPiA+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FwcyAmIENMQ0RfQ0FQXzU1 NTEpIHsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT5ncmVl bi5sZW5ndGggPSA1Owo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBj YXBzICY9IENMQ0RfQ0FQXzU1NTE7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICB9 IGVsc2Ugewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXItPmdy ZWVuLmxlbmd0aCA9IDQ7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGNhcHMgJj0gQ0xDRF9DQVBfNDQ0Owo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg fQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIH0KPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgaWYgKHZhci0+Z3JlZW4ubGVuZ3RoID49IDUpIHsKPiA+ID4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgIHZhci0+cmVkLmxlbmd0aCA9IDU7Cj4gPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICB2YXItPmJsdWUubGVuZ3RoID0gNTsKPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICB9IGVsc2Ugewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgdmFy LT5yZWQubGVuZ3RoID0gNDsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIHZhci0+ Ymx1ZS5sZW5ndGggPSA0Owo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIH0KPiA+ID4gPiA+ID4g PiArICAgICAgICAgICBicmVhazsKPiA+ID4gPiA+ID4gPiArICAgY2FzZSAzMjoKPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICAvKiBJZiB3ZSBjYW4ndCBkbyA4ODgsIHJlamVjdCAqLwo+ID4gPiA+ ID4gPiA+ICsgICAgICAgICAgIGNhcHMgJj0gQ0xDRF9DQVBfODg4Owo+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgIGlmICghY2Fwcykgewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg cmV0ID0gLUVJTlZBTDsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIH0KPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4g KyAgICAgICAgICAgdmFyLT5yZWQubGVuZ3RoID0gODsKPiA+ID4gPiA+ID4gPiArICAgICAgICAg ICB2YXItPmdyZWVuLmxlbmd0aCA9IDg7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgdmFyLT5i bHVlLmxlbmd0aCA9IDg7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgYnJlYWs7Cj4gPiA+ID4g PiA+ID4gKyAgIGRlZmF1bHQ6Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgcmV0ID0gLUVJTlZB TDsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBicmVhazsKPiA+ID4gPiA+ID4gPiArICAgfQo+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgLyoKPiA+ID4gPiA+ID4gPiArICAgICog Pj0gMTZicHAgZGlzcGxheXMgaGF2ZSBzZXBhcmF0ZSBjb2xvdXIgY29tcG9uZW50IGJpdGZpZWxk cwo+ID4gPiA+ID4gPiA+ICsgICAgKiBlbmNvZGVkIGluIHRoZSBwaXhlbCBkYXRhLiAgQ2FsY3Vs YXRlIHRoZWlyIHBvc2l0aW9uIGZyb20KPiA+ID4gPiA+ID4gPiArICAgICogdGhlIGJpdGZpZWxk IGxlbmd0aCBkZWZpbmVkIGFib3ZlLgo+ID4gPiA+ID4gPiA+ICsgICAgKi8KPiA+ID4gPiA+ID4g PiArICAgaWYgKHJldCA9PSAwICYmIHZhci0+Yml0c19wZXJfcGl4ZWwgPj0gMTYpIHsKPiA+ID4g PiA+ID4gPiArICAgICAgICAgICBib29sIGJnciwgcmdiOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiArICAgICAgICAgICBiZ3IgPSBjYXBzICYgQ0xDRF9DQVBfQkdSICYmIHZhci0+Ymx1 ZS5vZmZzZXQgPT0gMDsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICByZ2IgPSBjYXBzICYgQ0xD RF9DQVBfUkdCICYmIHZhci0+cmVkLm9mZnNldCA9PSAwOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiArICAgICAgICAgICBpZiAoIWJnciAmJiAhcmdiKQo+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgLyoKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAqIFRo ZSByZXF1ZXN0ZWQgZm9ybWF0IHdhcyBub3QgcG9zc2libGUsIHRyeSBqdXN0Cj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgKiBvdXIgY2FwYWJpbGl0aWVzLiAgT25lIG9mIEJHUiBv ciBSR0IgbXVzdCBiZQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICogc3VwcG9y dGVkLgo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICovCj4gPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICBiZ3IgPSBjYXBzICYgQ0xDRF9DQVBfQkdSOwo+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBpZiAoYmdyKSB7Cj4gPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICB2YXItPmJsdWUub2Zmc2V0ID0gMDsKPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgIHZhci0+Z3JlZW4ub2Zmc2V0ID0gdmFyLT5ibHVlLm9mZnNldCAr IHZhci0+Ymx1ZS5sZW5ndGg7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICB2YXIt PnJlZC5vZmZzZXQgPSB2YXItPmdyZWVuLm9mZnNldCArIHZhci0+Z3JlZW4ubGVuZ3RoOwo+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgIH0gZWxzZSB7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICB2YXItPnJlZC5vZmZzZXQgPSAwOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgdmFyLT5ncmVlbi5vZmZzZXQgPSB2YXItPnJlZC5vZmZzZXQgKyB2YXItPnJlZC5sZW5n dGg7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICB2YXItPmJsdWUub2Zmc2V0ID0g dmFyLT5ncmVlbi5vZmZzZXQgKyB2YXItPmdyZWVuLmxlbmd0aDsKPiA+ID4gPiA+ID4gPiArICAg ICAgICAgICB9Cj4gPiA+ID4gPiA+ID4gKyAgIH0KPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ ID4gKyAgIHJldHVybiByZXQ7Cj4gPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gPiArCj4gPiA+ ID4gPiA+ID4gK3N0YXRpYyBpbnQgY2xjZGZiX2NoZWNrX3ZhcihzdHJ1Y3QgZmJfdmFyX3NjcmVl bmluZm8gKnZhciwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gPiA+ID4gPiA+ID4gK3sKPiA+ID4g PiA+ID4gPiArICAgc3RydWN0IGNsY2RfZmIgKmZiID0gdG9fY2xjZChpbmZvKTsKPiA+ID4gPiA+ ID4gPiArICAgaW50IHJldCA9IC1FSU5WQUw7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ ICsgICBpZiAoZmItPmJvYXJkLT5jaGVjaykKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICByZXQg PSBmYi0+Ym9hcmQtPmNoZWNrKGZiLCB2YXIpOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4g PiArICAgaWYgKHJldCA9PSAwICYmCj4gPiA+ID4gPiA+ID4gKyAgICAgICB2YXItPnhyZXNfdmly dHVhbCAqIHZhci0+Yml0c19wZXJfcGl4ZWwgLyA4ICoKPiA+ID4gPiA+ID4gPiArICAgICAgIHZh ci0+eXJlc192aXJ0dWFsID4gZmItPmZiLmZpeC5zbWVtX2xlbikKPiA+ID4gPiA+ID4gPiArICAg ICAgICAgICByZXQgPSAtRUlOVkFMOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAg aWYgKHJldCA9PSAwKQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHJldCA9IGNsY2RmYl9zZXRf Yml0ZmllbGRzKGZiLCB2YXIpOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgcmV0 dXJuIHJldDsKPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiAr c3RhdGljIGludCBjbGNkZmJfc2V0X3BhcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiA+ID4gPiA+ ID4gPiArewo+ID4gPiA+ID4gPiA+ICsgICBzdHJ1Y3QgY2xjZF9mYiAqZmIgPSB0b19jbGNkKGlu Zm8pOwo+ID4gPiA+ID4gPiA+ICsgICBzdHJ1Y3QgY2xjZF9yZWdzIHJlZ3M7Cj4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBmYi0+ZmIuZml4LmxpbmVfbGVuZ3RoID0gZmItPmZiLnZh ci54cmVzX3ZpcnR1YWwgKgo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmItPmZiLnZhci5iaXRzX3Blcl9waXhlbCAvIDg7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gPiA+ICsgICBpZiAoZmItPmZiLnZhci5iaXRzX3Blcl9waXhlbCA8PSA4KQo+ID4gPiA+ID4g PiA+ICsgICAgICAgICAgIGZiLT5mYi5maXgudmlzdWFsID0gRkJfVklTVUFMX1BTRVVET0NPTE9S Owo+ID4gPiA+ID4gPiA+ICsgICBlbHNlCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgZmItPmZi LmZpeC52aXN1YWwgPSBGQl9WSVNVQUxfVFJVRUNPTE9SOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiArICAgZmItPmJvYXJkLT5kZWNvZGUoZmIsICZyZWdzKTsKPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gKyAgIGNsY2RmYl9kaXNhYmxlKGZiKTsKPiA+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ID4gKyAgIHdyaXRlbChyZWdzLnRpbTAsIGZiLT5yZWdzICsgQ0xDRF9USU0wKTsK PiA+ID4gPiA+ID4gPiArICAgd3JpdGVsKHJlZ3MudGltMSwgZmItPnJlZ3MgKyBDTENEX1RJTTEp Owo+ID4gPiA+ID4gPiA+ICsgICB3cml0ZWwocmVncy50aW0yLCBmYi0+cmVncyArIENMQ0RfVElN Mik7Cj4gPiA+ID4gPiA+ID4gKyAgIHdyaXRlbChyZWdzLnRpbTMsIGZiLT5yZWdzICsgQ0xDRF9U SU0zKTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIGNsY2RmYl9zZXRfc3RhcnQo ZmIpOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgY2xrX3NldF9yYXRlKGZiLT5j bGssICgxMDAwMDAwMDAwIC8gcmVncy5waXhjbG9jaykgKiAxMDAwKTsKPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5jbGNkX2NudGwgPSByZWdzLmNudGw7Cj4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBjbGNkZmJfZW5hYmxlKGZiLCByZWdzLmNudGwpOwo+ID4g PiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArI2lmZGVmIERFQlVHCj4gPiA+ID4gPiA+ID4gKyAg IHByaW50ayhLRVJOX0lORk8KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICJDTENEOiBSZWdpc3Rl cnMgc2V0IHRvXG4iCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAiICAlMDh4ICUwOHggJTA4eCAl MDh4XG4iCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAiICAlMDh4ICUwOHggJTA4eCAlMDh4XG4i LAo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHJlYWRsKGZiLT5yZWdzICsgQ0xDRF9USU0wKSwg cmVhZGwoZmItPnJlZ3MgKyBDTENEX1RJTTEpLAo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHJl YWRsKGZiLT5yZWdzICsgQ0xDRF9USU0yKSwgcmVhZGwoZmItPnJlZ3MgKyBDTENEX1RJTTMpLAo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHJlYWRsKGZiLT5yZWdzICsgQ0xDRF9VQkFTKSwgcmVh ZGwoZmItPnJlZ3MgKyBDTENEX0xCQVMpLAo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHJlYWRs KGZiLT5yZWdzICsgZmItPm9mZl9pZW5iKSwgcmVhZGwoZmItPnJlZ3MgKyBmYi0+b2ZmX2NudGwp KTsKPiA+ID4gPiA+ID4gPiArI2VuZGlmCj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsg ICByZXR1cm4gMDsKPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4g PiArc3RhdGljIGlubGluZSB1MzIgY29udmVydF9iaXRmaWVsZChpbnQgdmFsLCBzdHJ1Y3QgZmJf Yml0ZmllbGQgKmJmKQo+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4gKyAgIHVuc2lnbmVk IGludCBtYXNrID0gKDEgPDwgYmYtPmxlbmd0aCkgLSAxOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiArICAgcmV0dXJuICh2YWwgPj4gKDE2IC0gYmYtPmxlbmd0aCkgJiBtYXNrKSA8PCBi Zi0+b2Zmc2V0Owo+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ ICsvKgo+ID4gPiA+ID4gPiA+ICsgKiAgU2V0IGEgc2luZ2xlIGNvbG9yIHJlZ2lzdGVyLiBUaGUg dmFsdWVzIHN1cHBsaWVkIGhhdmUgYSAxNiBiaXQKPiA+ID4gPiA+ID4gPiArICogIG1hZ25pdHVk ZS4gIFJldHVybiAhPSAwIGZvciBpbnZhbGlkIHJlZ25vLgo+ID4gPiA+ID4gPiA+ICsgKi8KPiA+ ID4gPiA+ID4gPiArc3RhdGljIGludAo+ID4gPiA+ID4gPiA+ICtjbGNkZmJfc2V0Y29scmVnKHVu c2lnbmVkIGludCByZWdubywgdW5zaWduZWQgaW50IHJlZCwgdW5zaWduZWQgaW50IGdyZWVuLAo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYmx1ZSwgdW5zaWduZWQgaW50 IHRyYW5zcCwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ ID4gPiArICAgc3RydWN0IGNsY2RfZmIgKmZiID0gdG9fY2xjZChpbmZvKTsKPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gKyAgIGlmIChyZWdubyA8IDE2KQo+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgIGZiLT5jbWFwW3JlZ25vXSA9IGNvbnZlcnRfYml0ZmllbGQodHJhbnNwLCAmZmItPmZi LnZhci50cmFuc3ApIHwKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb252ZXJ0X2JpdGZpZWxkKGJsdWUsICZmYi0+ZmIudmFyLmJsdWUpIHwKPiA+ID4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0X2JpdGZpZWxkKGdyZWVuLCAm ZmItPmZiLnZhci5ncmVlbikgfAo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnZlcnRfYml0ZmllbGQocmVkLCAmZmItPmZiLnZhci5yZWQpOwo+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiArICAgaWYgKGZiLT5mYi5maXgudmlzdWFsID09IEZCX1ZJU1VB TF9QU0VVRE9DT0xPUiAmJiByZWdubyA8IDI1Nikgewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAg IGludCBod19yZWcgPSBDTENEX1BBTEVUVEUgKyAoKHJlZ25vICogMikgJiB+Myk7Cj4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgdTMyIHZhbCwgbWFzaywgbmV3dmFsOwo+ID4gPiA+ID4gPiA+ICsK PiA+ID4gPiA+ID4gPiArICAgICAgICAgICBuZXd2YWwgID0gKHJlZCA+PiAxMSkgICYgMHgwMDFm Owo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIG5ld3ZhbCB8PSAoZ3JlZW4gPj4gNikgJiAweDAz ZTA7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgbmV3dmFsIHw9IChibHVlID4+IDEpICAmIDB4 N2MwMDsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgLyoKPiA+ID4g PiA+ID4gPiArICAgICAgICAgICAgKiAzLjIuMTE6IGlmIHdlJ3JlIGNvbmZpZ3VyZWQgZm9yIGJp ZyBlbmRpYW4KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgKiBieXRlIG9yZGVyLCB0aGUgcGFs ZXR0ZSBlbnRyaWVzIGFyZSBzd2FwcGVkLgo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAqLwo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGlmIChmYi0+Y2xjZF9jbnRsICYgQ05UTF9CRUJPKQo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgcmVnbm8gXj0gMTsKPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgaWYgKHJlZ25vICYgMSkgewo+ID4gPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgbmV3dmFsIDw8PSAxNjsKPiA+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgIG1hc2sgPSAweDAwMDBmZmZmOwo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgIH0gZWxzZSB7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICBtYXNrID0gMHhm ZmZmMDAwMDsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICB9Cj4gPiA+ID4gPiA+ID4gKwo+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgIHZhbCA9IHJlYWRsKGZiLT5yZWdzICsgaHdfcmVnKSAmIG1h c2s7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgd3JpdGVsKHZhbCB8IG5ld3ZhbCwgZmItPnJl Z3MgKyBod19yZWcpOwo+ID4gPiA+ID4gPiA+ICsgICB9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gPiA+ICsgICByZXR1cm4gcmVnbm8gPiAyNTU7Cj4gPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ID4gKy8qCj4gPiA+ID4gPiA+ID4gKyAqICBCbGFuayB0aGUgc2Ny ZWVuIGlmIGJsYW5rX21vZGUgIT0gMCwgZWxzZSB1bmJsYW5rLiBJZiBibGFuayA9PSBOVUxMCj4g PiA+ID4gPiA+ID4gKyAqICB0aGVuIHRoZSBjYWxsZXIgYmxhbmtzIGJ5IHNldHRpbmcgdGhlIENM VVQgKENvbG9yIExvb2sgVXAgVGFibGUpIHRvIGFsbAo+ID4gPiA+ID4gPiA+ICsgKiAgYmxhY2su IFJldHVybiAwIGlmIGJsYW5raW5nIHN1Y2NlZWRlZCwgIT0gMCBpZiB1bi0vYmxhbmtpbmcgZmFp bGVkIGR1ZQo+ID4gPiA+ID4gPiA+ICsgKiAgdG8gZS5nLiBhIHZpZGVvIG1vZGUgd2hpY2ggZG9l c24ndCBzdXBwb3J0IGl0LiBJbXBsZW1lbnRzIFZFU0Egc3VzcGVuZAo+ID4gPiA+ID4gPiA+ICsg KiAgYW5kIHBvd2VyZG93biBtb2RlcyBvbiBoYXJkd2FyZSB0aGF0IHN1cHBvcnRzIGRpc2FibGlu ZyBoc3luYy92c3luYzoKPiA+ID4gPiA+ID4gPiArICogICAgYmxhbmtfbW9kZSA9PSAyOiBzdXNw ZW5kIHZzeW5jCj4gPiA+ID4gPiA+ID4gKyAqICAgIGJsYW5rX21vZGUgPT0gMzogc3VzcGVuZCBo c3luYwo+ID4gPiA+ID4gPiA+ICsgKiAgICBibGFua19tb2RlID09IDQ6IHBvd2VyZG93bgo+ID4g PiA+ID4gPiA+ICsgKi8KPiA+ID4gPiA+ID4gPiArc3RhdGljIGludCBjbGNkZmJfYmxhbmsoaW50 IGJsYW5rX21vZGUsIHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ ID4gPiA+ID4gKyAgIHN0cnVjdCBjbGNkX2ZiICpmYiA9IHRvX2NsY2QoaW5mbyk7Cj4gPiA+ID4g PiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBpZiAoYmxhbmtfbW9kZSAhPSAwKSB7Cj4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgY2xjZGZiX2Rpc2FibGUoZmIpOwo+ID4gPiA+ID4gPiA+ICsgICB9 IGVsc2Ugewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGNsY2RmYl9lbmFibGUoZmIsIGZiLT5j bGNkX2NudGwpOwo+ID4gPiA+ID4gPiA+ICsgICB9Cj4gPiA+ID4gPiA+ID4gKyAgIHJldHVybiAw Owo+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtzdGF0aWMg aW50IGNsY2RmYl9tbWFwKHN0cnVjdCBmYl9pbmZvICppbmZvLAo+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKPiA+ID4gPiA+ID4gPiAr ewo+ID4gPiA+ID4gPiA+ICsgICBzdHJ1Y3QgY2xjZF9mYiAqZmIgPSB0b19jbGNkKGluZm8pOwo+ ID4gPiA+ID4gPiA+ICsgICB1bnNpZ25lZCBsb25nIGxlbiwgb2ZmID0gdm1hLT52bV9wZ29mZiA8 PCBQQUdFX1NISUZUOwo+ID4gPiA+ID4gPiA+ICsgICBpbnQgcmV0ID0gLUVJTlZBTDsKPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIGxlbiA9IGluZm8tPmZpeC5zbWVtX2xlbjsKPiA+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIGlmIChvZmYgPD0gbGVuICYmIHZtYS0+dm1f ZW5kIC0gdm1hLT52bV9zdGFydCA8PSBsZW4gLSBvZmYgJiYKPiA+ID4gPiA+ID4gPiArICAgICAg IGZiLT5ib2FyZC0+bW1hcCkKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICByZXQgPSBmYi0+Ym9h cmQtPm1tYXAoZmIsIHZtYSk7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICByZXR1 cm4gcmV0Owo+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBjbGNkZmJfb3BzID0gewo+ID4gPiA+ID4gPiA+ICsg ICAub3duZXIgICAgICAgICAgPSBUSElTX01PRFVMRSwKPiA+ID4gPiA+ID4gPiArICAgLmZiX2No ZWNrX3ZhciAgID0gY2xjZGZiX2NoZWNrX3ZhciwKPiA+ID4gPiA+ID4gPiArICAgLmZiX3NldF9w YXIgICAgID0gY2xjZGZiX3NldF9wYXIsCj4gPiA+ID4gPiA+ID4gKyAgIC5mYl9zZXRjb2xyZWcg ICA9IGNsY2RmYl9zZXRjb2xyZWcsCj4gPiA+ID4gPiA+ID4gKyAgIC5mYl9ibGFuayAgICAgICA9 IGNsY2RmYl9ibGFuaywKPiA+ID4gPiA+ID4gPiArICAgLmZiX2ZpbGxyZWN0ICAgID0gY2ZiX2Zp bGxyZWN0LAo+ID4gPiA+ID4gPiA+ICsgICAuZmJfY29weWFyZWEgICAgPSBjZmJfY29weWFyZWEs Cj4gPiA+ID4gPiA+ID4gKyAgIC5mYl9pbWFnZWJsaXQgICA9IGNmYl9pbWFnZWJsaXQsCj4gPiA+ ID4gPiA+ID4gKyAgIC5mYl9tbWFwICAgICAgICA9IGNsY2RmYl9tbWFwLAo+ID4gPiA+ID4gPiA+ ICt9Owo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArc3RhdGljIGludCBjbGNkZmJfcmVn aXN0ZXIoc3RydWN0IGNsY2RfZmIgKmZiKQo+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4g KyAgIGludCByZXQ7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAvKgo+ID4gPiA+ ID4gPiA+ICsgICAgKiBBUk0gUEwxMTEgYWx3YXlzIGhhcyBJRU5CIGF0IDB4MWM7IGl0J3Mgb25s eSBQTDExMAo+ID4gPiA+ID4gPiA+ICsgICAgKiB3aGljaCBpcyByZXZlcnNlZCBvbiBzb21lIHBs YXRmb3Jtcy4KPiA+ID4gPiA+ID4gPiArICAgICovCj4gPiA+ID4gPiA+ID4gKyAgIGlmIChhbWJh X21hbmYoZmItPmRldikgPT0gMHg0MSAmJiBhbWJhX3BhcnQoZmItPmRldikgPT0gMHgxMTEpIHsK PiA+ID4gPiA+ID4gPiArICAgICAgICAgICBmYi0+b2ZmX2llbmIgPSBDTENEX1BMMTExX0lFTkI7 Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgZmItPm9mZl9jbnRsID0gQ0xDRF9QTDExMV9DTlRM Owo+ID4gPiA+ID4gPiA+ICsgICB9IGVsc2Ugewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGZi LT5vZmZfaWVuYiA9IENMQ0RfUEwxMTBfSUVOQjsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBm Yi0+b2ZmX2NudGwgPSBDTENEX1BMMTEwX0NOVEw7Cj4gPiA+ID4gPiA+ID4gKyAgIH0KPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5jbGsgPSBjbGtfZ2V0KCZmYi0+ZGV2LT5k ZXYsIE5VTEwpOwo+ID4gPiA+ID4gPiA+ICsgICBpZiAoSVNfRVJSKGZiLT5jbGspKSB7Cj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgcmV0ID0gUFRSX0VSUihmYi0+Y2xrKTsKPiA+ID4gPiA+ID4g PiArICAgICAgICAgICBnb3RvIG91dDsKPiA+ID4gPiA+ID4gPiArICAgfQo+ID4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gPiArICAgcmV0ID0gY2xrX3ByZXBhcmUoZmItPmNsayk7Cj4gPiA+ID4g PiA+ID4gKyAgIGlmIChyZXQpCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgZ290byBmcmVlX2Ns azsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5mYi5kZXZpY2UgICAgICAg ICAgID0gJmZiLT5kZXYtPmRldjsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIGZi LT5mYi5maXgubW1pb19zdGFydCAgID0gZmItPmRldi0+cmVzLnN0YXJ0Owo+ID4gPiA+ID4gPiA+ ICsgICBmYi0+ZmIuZml4Lm1taW9fbGVuICAgICA9IHJlc291cmNlX3NpemUoJmZiLT5kZXYtPnJl cyk7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBmYi0+cmVncyA9IGlvcmVtYXAo ZmItPmZiLmZpeC5tbWlvX3N0YXJ0LCBmYi0+ZmIuZml4Lm1taW9fbGVuKTsKPiA+ID4gPiA+ID4g PiArICAgaWYgKCFmYi0+cmVncykgewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHByaW50ayhL RVJOX0VSUiAiQ0xDRDogdW5hYmxlIHRvIHJlbWFwIHJlZ2lzdGVyc1xuIik7Cj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgcmV0ID0gLUVOT01FTTsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBn b3RvIGNsa191bnByZXA7Cj4gPiA+ID4gPiA+ID4gKyAgIH0KPiA+ID4gPiA+ID4gPiArCj4gPiA+ ID4gPiA+ID4gKyAgIGZiLT5mYi5mYm9wcyAgICAgICAgICAgID0gJmNsY2RmYl9vcHM7Cj4gPiA+ ID4gPiA+ID4gKyAgIGZiLT5mYi5mbGFncyAgICAgICAgICAgID0gRkJJTkZPX0ZMQUdfREVGQVVM VDsKPiA+ID4gPiA+ID4gPiArICAgZmItPmZiLnBzZXVkb19wYWxldHRlICAgPSBmYi0+Y21hcDsK PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIHN0cm5jcHkoZmItPmZiLmZpeC5pZCwg Y2xjZF9uYW1lLCBzaXplb2YoZmItPmZiLmZpeC5pZCkpOwo+ID4gPiA+ID4gPiA+ICsgICBmYi0+ ZmIuZml4LnR5cGUgICAgICAgICA9IEZCX1RZUEVfUEFDS0VEX1BJWEVMUzsKPiA+ID4gPiA+ID4g PiArICAgZmItPmZiLmZpeC50eXBlX2F1eCAgICAgPSAwOwo+ID4gPiA+ID4gPiA+ICsgICBmYi0+ ZmIuZml4LnhwYW5zdGVwICAgICA9IDA7Cj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5mYi5maXgueXBh bnN0ZXAgICAgID0gMDsKPiA+ID4gPiA+ID4gPiArICAgZmItPmZiLmZpeC55d3JhcHN0ZXAgICAg PSAwOwo+ID4gPiA+ID4gPiA+ICsgICBmYi0+ZmIuZml4LmFjY2VsICAgICAgICA9IEZCX0FDQ0VM X05PTkU7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBmYi0+ZmIudmFyLnhyZXMg ICAgICAgICA9IGZiLT5wYW5lbC0+bW9kZS54cmVzOwo+ID4gPiA+ID4gPiA+ICsgICBmYi0+ZmIu dmFyLnlyZXMgICAgICAgICA9IGZiLT5wYW5lbC0+bW9kZS55cmVzOwo+ID4gPiA+ID4gPiA+ICsg ICBmYi0+ZmIudmFyLnhyZXNfdmlydHVhbCA9IGZiLT5wYW5lbC0+bW9kZS54cmVzOwo+ID4gPiA+ ID4gPiA+ICsgICBmYi0+ZmIudmFyLnlyZXNfdmlydHVhbCA9IGZiLT5wYW5lbC0+bW9kZS55cmVz Owo+ID4gPiA+ID4gPiA+ICsgICBmYi0+ZmIudmFyLmJpdHNfcGVyX3BpeGVsID0gZmItPnBhbmVs LT5icHA7Cj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5mYi52YXIuZ3JheXNjYWxlICAgID0gZmItPnBh bmVsLT5ncmF5c2NhbGU7Cj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5mYi52YXIucGl4Y2xvY2sgICAg ID0gZmItPnBhbmVsLT5tb2RlLnBpeGNsb2NrOwo+ID4gPiA+ID4gPiA+ICsgICBmYi0+ZmIudmFy LmxlZnRfbWFyZ2luICA9IGZiLT5wYW5lbC0+bW9kZS5sZWZ0X21hcmdpbjsKPiA+ID4gPiA+ID4g PiArICAgZmItPmZiLnZhci5yaWdodF9tYXJnaW4gPSBmYi0+cGFuZWwtPm1vZGUucmlnaHRfbWFy Z2luOwo+ID4gPiA+ID4gPiA+ICsgICBmYi0+ZmIudmFyLnVwcGVyX21hcmdpbiA9IGZiLT5wYW5l bC0+bW9kZS51cHBlcl9tYXJnaW47Cj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5mYi52YXIubG93ZXJf bWFyZ2luID0gZmItPnBhbmVsLT5tb2RlLmxvd2VyX21hcmdpbjsKPiA+ID4gPiA+ID4gPiArICAg ZmItPmZiLnZhci5oc3luY19sZW4gICAgPSBmYi0+cGFuZWwtPm1vZGUuaHN5bmNfbGVuOwo+ID4g PiA+ID4gPiA+ICsgICBmYi0+ZmIudmFyLnZzeW5jX2xlbiAgICA9IGZiLT5wYW5lbC0+bW9kZS52 c3luY19sZW47Cj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5mYi52YXIuc3luYyAgICAgICAgID0gZmIt PnBhbmVsLT5tb2RlLnN5bmM7Cj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5mYi52YXIudm1vZGUgICAg ICAgID0gZmItPnBhbmVsLT5tb2RlLnZtb2RlOwo+ID4gPiA+ID4gPiA+ICsgICBmYi0+ZmIudmFy LmFjdGl2YXRlICAgICA9IEZCX0FDVElWQVRFX05PVzsKPiA+ID4gPiA+ID4gPiArICAgZmItPmZi LnZhci5ub25zdGQgICAgICAgPSAwOwo+ID4gPiA+ID4gPiA+ICsgICBmYi0+ZmIudmFyLmhlaWdo dCAgICAgICA9IGZiLT5wYW5lbC0+aGVpZ2h0Owo+ID4gPiA+ID4gPiA+ICsgICBmYi0+ZmIudmFy LndpZHRoICAgICAgICA9IGZiLT5wYW5lbC0+d2lkdGg7Cj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5m Yi52YXIuYWNjZWxfZmxhZ3MgID0gMDsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAg IGZiLT5mYi5tb25zcGVjcy5oZm1pbiAgID0gMDsKPiA+ID4gPiA+ID4gPiArICAgZmItPmZiLm1v bnNwZWNzLmhmbWF4ICAgPSAxMDAwMDA7Cj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5mYi5tb25zcGVj cy52Zm1pbiAgID0gMDsKPiA+ID4gPiA+ID4gPiArICAgZmItPmZiLm1vbnNwZWNzLnZmbWF4ICAg PSA0MDA7Cj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5mYi5tb25zcGVjcy5kY2xrbWluID0gMTAwMDAw MDsKPiA+ID4gPiA+ID4gPiArICAgZmItPmZiLm1vbnNwZWNzLmRjbGttYXggPSAxMDAwMDAwMDA7 Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAvKgo+ID4gPiA+ID4gPiA+ICsgICAg KiBNYWtlIHN1cmUgdGhhdCB0aGUgYml0ZmllbGRzIGFyZSBzZXQgYXBwcm9wcmlhdGVseS4KPiA+ ID4gPiA+ID4gPiArICAgICovCj4gPiA+ID4gPiA+ID4gKyAgIGNsY2RmYl9zZXRfYml0ZmllbGRz KGZiLCAmZmItPmZiLnZhcik7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAvKgo+ ID4gPiA+ID4gPiA+ICsgICAgKiBBbGxvY2F0ZSBjb2xvdXJtYXAuCj4gPiA+ID4gPiA+ID4gKyAg ICAqLwo+ID4gPiA+ID4gPiA+ICsgICByZXQgPSBmYl9hbGxvY19jbWFwKCZmYi0+ZmIuY21hcCwg MjU2LCAwKTsKPiA+ID4gPiA+ID4gPiArICAgaWYgKHJldCkKPiA+ID4gPiA+ID4gPiArICAgICAg ICAgICBnb3RvIHVubWFwOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgLyoKPiA+ ID4gPiA+ID4gPiArICAgICogRW5zdXJlIGludGVycnVwdHMgYXJlIGRpc2FibGVkLgo+ID4gPiA+ ID4gPiA+ICsgICAgKi8KPiA+ID4gPiA+ID4gPiArICAgd3JpdGVsKDAsIGZiLT5yZWdzICsgZmIt Pm9mZl9pZW5iKTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIGZiX3NldF92YXIo JmZiLT5mYiwgJmZiLT5mYi52YXIpOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAg ZGV2X2luZm8oJmZiLT5kZXYtPmRldiwgIiVzIGhhcmR3YXJlLCAlcyBkaXNwbGF5XG4iLAo+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgICBmYi0+Ym9hcmQtPm5hbWUsIGZiLT5wYW5lbC0+bW9kZS5u YW1lKTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIHJldCA9IHJlZ2lzdGVyX2Zy YW1lYnVmZmVyKCZmYi0+ZmIpOwo+ID4gPiA+ID4gPiA+ICsgICBpZiAocmV0ID09IDApCj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgZ290byBvdXQ7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiA+ICsgICBwcmludGsoS0VSTl9FUlIgIkNMQ0Q6IGNhbm5vdCByZWdpc3RlciBmcmFtZWJ1ZmZl ciAoJWQpXG4iLCByZXQpOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgZmJfZGVh bGxvY19jbWFwKCZmYi0+ZmIuY21hcCk7Cj4gPiA+ID4gPiA+ID4gKyB1bm1hcDoKPiA+ID4gPiA+ ID4gPiArICAgaW91bm1hcChmYi0+cmVncyk7Cj4gPiA+ID4gPiA+ID4gKyBjbGtfdW5wcmVwOgo+ ID4gPiA+ID4gPiA+ICsgICBjbGtfdW5wcmVwYXJlKGZiLT5jbGspOwo+ID4gPiA+ID4gPiA+ICsg ZnJlZV9jbGs6Cj4gPiA+ID4gPiA+ID4gKyAgIGNsa19wdXQoZmItPmNsayk7Cj4gPiA+ID4gPiA+ ID4gKyBvdXQ6Cj4gPiA+ID4gPiA+ID4gKyAgIHJldHVybiByZXQ7Cj4gPiA+ID4gPiA+ID4gK30K PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyNpZmRlZiBDT05GSUdfT0YKPiA+ID4gPiA+ ID4gPiArc3RhdGljIGludCBjbGNkZmJfb2ZfZ2V0X2RwaV9wYW5lbF9tb2RlKHN0cnVjdCBkZXZp Y2Vfbm9kZSAqbm9kZSwKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBzdHJ1Y3QgY2xjZF9wYW5l bCAqY2xjZF9wYW5lbCkKPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ICsgICBpbnQgZXJy Owo+ID4gPiA+ID4gPiA+ICsgICBzdHJ1Y3QgZGlzcGxheV90aW1pbmcgdGltaW5nOwo+ID4gPiA+ ID4gPiA+ICsgICBzdHJ1Y3QgdmlkZW9tb2RlIHZpZGVvOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiArICAgZXJyID0gb2ZfZ2V0X2Rpc3BsYXlfdGltaW5nKG5vZGUsICJwYW5lbC10aW1p bmciLCAmdGltaW5nKTsKPiA+ID4gPiA+ID4gPiArICAgaWYgKGVycikgewo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgIHByX2VycigiJXBPRjogcHJvYmxlbXMgcGFyc2luZyBwYW5lbC10aW1pbmcg KCVkKVxuIiwgbm9kZSwgZXJyKTsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICByZXR1cm4gZXJy Owo+ID4gPiA+ID4gPiA+ICsgICB9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICB2 aWRlb21vZGVfZnJvbV90aW1pbmcoJnRpbWluZywgJnZpZGVvKTsKPiA+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ID4gKyAgIGVyciA9IGZiX3ZpZGVvbW9kZV9mcm9tX3ZpZGVvbW9kZSgmdmlkZW8s ICZjbGNkX3BhbmVsLT5tb2RlKTsKPiA+ID4gPiA+ID4gPiArICAgaWYgKGVycikKPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4g PiArICAgLyogU2V0IHVwIHNvbWUgaW52ZXJzaW9uIGZsYWdzICovCj4gPiA+ID4gPiA+ID4gKyAg IGlmICh0aW1pbmcuZmxhZ3MgJiBESVNQTEFZX0ZMQUdTX1BJWERBVEFfTkVHRURHRSkKPiA+ID4g PiA+ID4gPiArICAgICAgICAgICBjbGNkX3BhbmVsLT50aW0yIHw9IFRJTTJfSVBDOwo+ID4gPiA+ ID4gPiA+ICsgICBlbHNlIGlmICghKHRpbWluZy5mbGFncyAmIERJU1BMQVlfRkxBR1NfUElYREFU QV9QT1NFREdFKSkKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAvKgo+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAqIFRvIHByZXNlcnZlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUgSVBD IChpbnZlcnRlZAo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAqIHBpeGVsIGNsb2NrKSBmbGFn IG5lZWRzIHRvIGJlIHNldCBvbiBhbnkgZGlzcGxheSB0aGF0Cj4gPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICogZG9lc24ndCBleHBsaWNpdGx5IHNwZWNpZnkgdGhhdCB0aGUgcGl4ZWwgY2xvY2sg aXMKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgKiBhY3RpdmUgb24gdGhlIG5lZ2F0aXZlIG9y IHBvc2l0aXZlIGVkZ2UuCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICovCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgY2xjZF9wYW5lbC0+dGltMiB8PSBUSU0yX0lQQzsKPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gKyAgIGlmICh0aW1pbmcuZmxhZ3MgJiBESVNQTEFZX0ZMQUdTX0hT WU5DX0xPVykKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBjbGNkX3BhbmVsLT50aW0yIHw9IFRJ TTJfSUhTOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgaWYgKHRpbWluZy5mbGFn cyAmIERJU1BMQVlfRkxBR1NfVlNZTkNfTE9XKQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGNs Y2RfcGFuZWwtPnRpbTIgfD0gVElNMl9JVlM7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ ICsgICBpZiAodGltaW5nLmZsYWdzICYgRElTUExBWV9GTEFHU19ERV9MT1cpCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgY2xjZF9wYW5lbC0+dGltMiB8PSBUSU0yX0lPRTsKPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gKyAgIHJldHVybiAwOwo+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4g PiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW50IGNsY2RmYl9zbnByaW50Zl9tb2RlKGNo YXIgKmJ1ZiwgaW50IHNpemUsIHN0cnVjdCBmYl92aWRlb21vZGUgKm1vZGUpCj4gPiA+ID4gPiA+ ID4gK3sKPiA+ID4gPiA+ID4gPiArICAgcmV0dXJuIHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiV1eCV1 QCV1IiwgbW9kZS0+eHJlcywgbW9kZS0+eXJlcywKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgIG1vZGUtPnJlZnJlc2gpOwo+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW50IGNsY2RmYl9vZl9nZXRfYmFja2xpZ2h0KHN0cnVjdCBk ZXZpY2UgKmRldiwKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGNsY2RfcGFuZWwgKmNsY2RfcGFuZWwpCj4gPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ ID4gPiArICAgc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJhY2tsaWdodDsKPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gKyAgIC8qIExvb2sgdXAgdGhlIG9wdGlvbmFsIGJhY2tsaWdodCBk ZXZpY2UgKi8KPiA+ID4gPiA+ID4gPiArICAgYmFja2xpZ2h0ID0gZGV2bV9vZl9maW5kX2JhY2ts aWdodChkZXYpOwo+ID4gPiA+ID4gPiA+ICsgICBpZiAoSVNfRVJSKGJhY2tsaWdodCkpCj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoYmFja2xpZ2h0KTsKPiA+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIGNsY2RfcGFuZWwtPmJhY2tsaWdodCA9IGJhY2tsaWdo dDsKPiA+ID4gPiA+ID4gPiArICAgcmV0dXJuIDA7Cj4gPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ID4gK3N0YXRpYyBpbnQgY2xjZGZiX29mX2dldF9tb2RlKHN0cnVj dCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpwYW5lbCwKPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjbGNkX3BhbmVsICpjbGNkX3BhbmVsKQo+ ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4gKyAgIGludCBlcnI7Cj4gPiA+ID4gPiA+ID4g KyAgIHN0cnVjdCBmYl92aWRlb21vZGUgKm1vZGU7Cj4gPiA+ID4gPiA+ID4gKyAgIGNoYXIgKm5h bWU7Cj4gPiA+ID4gPiA+ID4gKyAgIGludCBsZW47Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiA+ICsgICAvKiBPbmx5IGRpcmVjdGx5IGNvbm5lY3RlZCBEUEkgcGFuZWxzIHN1cHBvcnRlZCBm b3Igbm93ICovCj4gPiA+ID4gPiA+ID4gKyAgIGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShw YW5lbCwgInBhbmVsLWRwaSIpKQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGVyciA9IGNsY2Rm Yl9vZl9nZXRfZHBpX3BhbmVsX21vZGUocGFuZWwsIGNsY2RfcGFuZWwpOwo+ID4gPiA+ID4gPiA+ ICsgICBlbHNlCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgZXJyID0gLUVOT0VOVDsKPiA+ID4g PiA+ID4gPiArICAgaWYgKGVycikKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICByZXR1cm4gZXJy Owo+ID4gPiA+ID4gPiA+ICsgICBtb2RlID0gJmNsY2RfcGFuZWwtPm1vZGU7Cj4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBsZW4gPSBjbGNkZmJfc25wcmludGZfbW9kZShOVUxMLCAw LCBtb2RlKTsKPiA+ID4gPiA+ID4gPiArICAgbmFtZSA9IGRldm1fa3phbGxvYyhkZXYsIGxlbiAr IDEsIEdGUF9LRVJORUwpOwo+ID4gPiA+ID4gPiA+ICsgICBpZiAoIW5hbWUpCj4gPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiA+ICsgICBjbGNkZmJfc25wcmludGZfbW9kZShuYW1lLCBsZW4gKyAxLCBtb2RlKTsKPiA+ID4g PiA+ID4gPiArICAgbW9kZS0+bmFtZSA9IG5hbWU7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiA+ICsgICByZXR1cm4gMDsKPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiArc3RhdGljIGludCBjbGNkZmJfb2ZfaW5pdF90ZnRfcGFuZWwoc3RydWN0IGNsY2Rf ZmIgKmZiLCB1MzIgcjAsIHUzMiBnMCwgdTMyIGIwKQo+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4g PiA+ID4gKyAgIHN0YXRpYyBzdHJ1Y3Qgewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHVuc2ln bmVkIGludCBwYXJ0Owo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHUzMiByMCwgZzAsIGIwOwo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHUzMiBjYXBzOwo+ID4gPiA+ID4gPiA+ICsgICB9IHBh bmVsc1tdID0gewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHsgMHgxMTAsIDEsICA3LCAxMywg Q0xDRF9DQVBfNTU1MSB9LAo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHsgMHgxMTAsIDAsICA4 LCAxNiwgQ0xDRF9DQVBfODg4IH0sCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgeyAweDExMCwg MTYsIDgsIDAsICBDTENEX0NBUF84ODggfSwKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICB7IDB4 MTExLCA0LCAxNCwgMjAsIENMQ0RfQ0FQXzQ0NCB9LAo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAg IHsgMHgxMTEsIDMsIDExLCAxOSwgQ0xDRF9DQVBfNDQ0IHwgQ0xDRF9DQVBfNTU1MSB9LAo+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgIHsgMHgxMTEsIDMsIDEwLCAxOSwgQ0xDRF9DQVBfNDQ0IHwg Q0xDRF9DQVBfNTU1MSB8Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBDTENEX0NBUF81NjUgfSwKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICB7IDB4MTExLCAw LCAgOCwgMTYsIENMQ0RfQ0FQXzQ0NCB8IENMQ0RfQ0FQXzU1NTEgfAo+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xDRF9DQVBfNTY1IHwgQ0xDRF9DQVBfODg4 IH0sCj4gPiA+ID4gPiA+ID4gKyAgIH07Cj4gPiA+ID4gPiA+ID4gKyAgIGludCBpOwo+ID4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgLyogQnlwYXNzIHBpeGVsIGNsb2NrIGRpdmlkZXIg Ki8KPiA+ID4gPiA+ID4gPiArICAgZmItPnBhbmVsLT50aW0yIHw9IFRJTTJfQkNEOwo+ID4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgLyogVEZUIGRpc3BsYXksIHZlcnQuIGNvbXAuIGlu dGVycnVwdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGJhY2sgcG9yY2ggKi8KPiA+ID4gPiA+ID4gPiAr ICAgZmItPnBhbmVsLT5jbnRsIHw9IENOVExfTENEVEZUIHwgQ05UTF9MQ0RWQ09NUCgxKTsKPiA+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5wYW5lbC0+Y2FwcyA9IDA7Cj4gPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAvKiBNYXRjaCB0aGUgc2V0dXAgd2l0aCBrbm93 biB2YXJpYW50cyAqLwo+ID4gPiA+ID4gPiA+ICsgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RShwYW5lbHMpICYmICFmYi0+cGFuZWwtPmNhcHM7IGkrKykgewo+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgIGlmIChhbWJhX3BhcnQoZmItPmRldikgIT0gcGFuZWxzW2ldLnBhcnQpCj4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ID4gPiA+ID4gPiArICAgICAg ICAgICBpZiAoZzAgIT0gcGFuZWxzW2ldLmcwKQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgY29udGludWU7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgaWYgKHIwID09IHBhbmVs c1tpXS5yMCAmJiBiMCA9PSBwYW5lbHNbaV0uYjApCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICBmYi0+cGFuZWwtPmNhcHMgPSBwYW5lbHNbaV0uY2FwczsKPiA+ID4gPiA+ID4gPiAr ICAgfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgLyoKPiA+ID4gPiA+ID4gPiAr ICAgICogSWYgd2UgYWN0dWFsbHkgcGh5c2ljYWxseSBjb25uZWN0ZWQgdGhlIFIgbGluZXMgdG8g QiBhbmQKPiA+ID4gPiA+ID4gPiArICAgICogdmljZSB2ZXJzYQo+ID4gPiA+ID4gPiA+ICsgICAg Ki8KPiA+ID4gPiA+ID4gPiArICAgaWYgKHIwICE9IDAgJiYgYjAgPT0gMCkKPiA+ID4gPiA+ID4g PiArICAgICAgICAgICBmYi0+cGFuZWwtPmJncl9jb25uZWN0aW9uID0gdHJ1ZTsKPiA+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIHJldHVybiBmYi0+cGFuZWwtPmNhcHMgPyAwIDogLUVJ TlZBTDsKPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArc3Rh dGljIGludCBjbGNkZmJfb2ZfaW5pdF9kaXNwbGF5KHN0cnVjdCBjbGNkX2ZiICpmYikKPiA+ID4g PiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ICsgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmVuZHBvaW50 LCAqcGFuZWw7Cj4gPiA+ID4gPiA+ID4gKyAgIGludCBlcnI7Cj4gPiA+ID4gPiA+ID4gKyAgIHVu c2lnbmVkIGludCBicHA7Cj4gPiA+ID4gPiA+ID4gKyAgIHUzMiBtYXhfYmFuZHdpZHRoOwo+ID4g PiA+ID4gPiA+ICsgICB1MzIgdGZ0X3IwYjBnMFszXTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4g PiA+ID4gKyAgIGZiLT5wYW5lbCA9IGRldm1fa3phbGxvYygmZmItPmRldi0+ZGV2LCBzaXplb2Yo KmZiLT5wYW5lbCksIEdGUF9LRVJORUwpOwo+ID4gPiA+ID4gPiA+ICsgICBpZiAoIWZiLT5wYW5l bCkKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gKyAgIC8qCj4gPiA+ID4gPiA+ID4gKyAgICAqIEZldGNoIHRoZSBw YW5lbCBlbmRwb2ludC4KPiA+ID4gPiA+ID4gPiArICAgICovCj4gPiA+ID4gPiA+ID4gKyAgIGVu ZHBvaW50ID0gb2ZfZ3JhcGhfZ2V0X25leHRfZW5kcG9pbnQoZmItPmRldi0+ZGV2Lm9mX25vZGUs IE5VTEwpOwo+ID4gPiA+ID4gPiA+ICsgICBpZiAoIWVuZHBvaW50KQo+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgIHJldHVybiAtRU5PREVWOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiAr ICAgcGFuZWwgPSBvZl9ncmFwaF9nZXRfcmVtb3RlX3BvcnRfcGFyZW50KGVuZHBvaW50KTsKPiA+ ID4gPiA+ID4gPiArICAgaWYgKCFwYW5lbCkKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICByZXR1 cm4gLUVOT0RFVjsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIGVyciA9IGNsY2Rm Yl9vZl9nZXRfYmFja2xpZ2h0KCZmYi0+ZGV2LT5kZXYsIGZiLT5wYW5lbCk7Cj4gPiA+ID4gPiA+ ID4gKyAgIGlmIChlcnIpCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgcmV0dXJuIGVycjsKPiA+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIGVyciA9IGNsY2RmYl9vZl9nZXRfbW9kZSgm ZmItPmRldi0+ZGV2LCBwYW5lbCwgZmItPnBhbmVsKTsKPiA+ID4gPiA+ID4gPiArICAgaWYgKGVy cikKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4gPiA+ID4gPiA+ICsK PiA+ID4gPiA+ID4gPiArICAgZXJyID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoZmItPmRldi0+ZGV2 Lm9mX25vZGUsICJtYXgtbWVtb3J5LWJhbmR3aWR0aCIsCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAmbWF4X2JhbmR3aWR0aCk7Cj4gPiA+ID4gPiA+ID4gKyAgIGlmICghZXJyKSB7 Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgLyoKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg KiBtYXhfYmFuZHdpZHRoIGlzIGluIGJ5dGVzIHBlciBzZWNvbmQgYW5kIHBpeGNsb2NrIGluCj4g PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICogcGljby1zZWNvbmRzLCBzbyB0aGUgbWF4aW11bSBh bGxvd2VkIGJpdHMgcGVyIHBpeGVsIGlzCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICogICA4 ICogbWF4X2JhbmR3aWR0aCAvIChQSUNPUzJLSFoocGl4Y2xvY2spICogMTAwMCkKPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICAgKiBSZWFycmFuZ2UgdGhpcyBjYWxjdWxhdGlvbiB0byBhdm9pZCBv dmVyZmxvdyBhbmQgdGhlbiBlbnN1cmUKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgKiByZXN1 bHQgaXMgYSB2YWxpZCBmb3JtYXQuCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICovCj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgYnBwID0gbWF4X2JhbmR3aWR0aCAvICgxMDAwIC8gOCkKPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIC8gUElDT1MyS0haKGZiLT5wYW5lbC0+bW9k ZS5waXhjbG9jayk7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgYnBwID0gcm91bmRkb3duX3Bv d19vZl90d28oYnBwKTsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBpZiAoYnBwID4gMzIpCj4g PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICBicHAgPSAzMjsKPiA+ID4gPiA+ID4gPiAr ICAgfSBlbHNlCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgYnBwID0gMzI7Cj4gPiA+ID4gPiA+ ID4gKyAgIGZiLT5wYW5lbC0+YnBwID0gYnBwOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4g PiArI2lmZGVmIENPTkZJR19DUFVfQklHX0VORElBTgo+ID4gPiA+ID4gPiA+ICsgICBmYi0+cGFu ZWwtPmNudGwgfD0gQ05UTF9CRUJPOwo+ID4gPiA+ID4gPiA+ICsjZW5kaWYKPiA+ID4gPiA+ID4g PiArICAgZmItPnBhbmVsLT53aWR0aCA9IC0xOwo+ID4gPiA+ID4gPiA+ICsgICBmYi0+cGFuZWwt PmhlaWdodCA9IC0xOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgaWYgKG9mX3By b3BlcnR5X3JlYWRfdTMyX2FycmF5KGVuZHBvaW50LAo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgImFybSxwbDExeCx0ZnQtcjBnMGIwLXBhZHMiLAo+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgdGZ0X3IwYjBnMCwgQVJSQVlfU0laRSh0ZnRfcjBiMGcwKSkgIT0gMCkK PiA+ID4gPiA+ID4gPiArICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gKyAgIHJldHVybiBjbGNkZmJfb2ZfaW5pdF90ZnRfcGFuZWwoZmIsIHRm dF9yMGIwZzBbMF0sCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGZ0X3IwYjBnMFsxXSwgIHRmdF9yMGIwZzBbMl0pOwo+ID4gPiA+ID4gPiA+ICt9Cj4g PiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW50IGNsY2RmYl9vZl92cmFtX3Nl dHVwKHN0cnVjdCBjbGNkX2ZiICpmYikKPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ICsg ICBpbnQgZXJyOwo+ID4gPiA+ID4gPiA+ICsgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1lbW9yeTsK PiA+ID4gPiA+ID4gPiArICAgdTY0IHNpemU7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ ICsgICBlcnIgPSBjbGNkZmJfb2ZfaW5pdF9kaXNwbGF5KGZiKTsKPiA+ID4gPiA+ID4gPiArICAg aWYgKGVycikKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiArICAgbWVtb3J5ID0gb2ZfcGFyc2VfcGhhbmRsZShmYi0+ZGV2 LT5kZXYub2Zfbm9kZSwgIm1lbW9yeS1yZWdpb24iLCAwKTsKPiA+ID4gPiA+ID4gPiArICAgaWYg KCFtZW1vcnkpCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4gPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBmYi0+ZmIuc2NyZWVuX2Jhc2UgPSBvZl9pb21h cChtZW1vcnksIDApOwo+ID4gPiA+ID4gPiA+ICsgICBpZiAoIWZiLT5mYi5zY3JlZW5fYmFzZSkK PiA+ID4gPiA+ID4gPiArICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5mYi5maXguc21lbV9zdGFydCA9IG9mX3RyYW5zbGF0ZV9h ZGRyZXNzKG1lbW9yeSwKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIG9mX2dldF9h ZGRyZXNzKG1lbW9yeSwgMCwgJnNpemUsIE5VTEwpKTsKPiA+ID4gPiA+ID4gPiArICAgZmItPmZi LmZpeC5zbWVtX2xlbiA9IHNpemU7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBy ZXR1cm4gMDsKPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiAr c3RhdGljIGludCBjbGNkZmJfb2ZfdnJhbV9tbWFwKHN0cnVjdCBjbGNkX2ZiICpmYiwgc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gPiArICAg dW5zaWduZWQgbG9uZyBvZmYsIHVzZXJfc2l6ZSwga2VybmVsX3NpemU7Cj4gPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgb2ZmID0gdm1hLT52bV9wZ29mZiA8 PCBQQUdFX1NISUZUOwo+ID4gPiA+ID4gPiA+ICsgICB1c2VyX3NpemUgPSB2bWEtPnZtX2VuZCAt IHZtYS0+dm1fc3RhcnQ7Cj4gPiA+ID4gPiA+ID4gKyAgIGtlcm5lbF9zaXplID0gZmItPmZiLmZp eC5zbWVtX2xlbjsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIGlmIChvZmYgPj0g a2VybmVsX3NpemUgfHwgdXNlcl9zaXplID4gKGtlcm5lbF9zaXplIC0gb2ZmKSkKPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICByZXR1cm4gLUVOWElPOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiArICAgcmV0dXJuIHJlbWFwX3Bmbl9yYW5nZSh2bWEsIHZtYS0+dm1fc3RhcnQsCj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICBfX3BoeXNfdG9fcGZuKGZiLT5mYi5maXguc21l bV9zdGFydCkgKyB2bWEtPnZtX3Bnb2ZmLAo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgdXNlcl9zaXplLAo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgcGdwcm90X3dy aXRlY29tYmluZSh2bWEtPnZtX3BhZ2VfcHJvdCkpOwo+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4g PiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBjbGNkZmJfb2ZfdnJhbV9yZW1vdmUo c3RydWN0IGNsY2RfZmIgKmZiKQo+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4gKyAgIGlv dW5tYXAoZmItPmZiLnNjcmVlbl9iYXNlKTsKPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gPiArc3RhdGljIGludCBjbGNkZmJfb2ZfZG1hX3NldHVwKHN0cnVjdCBj bGNkX2ZiICpmYikKPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ICsgICB1bnNpZ25lZCBs b25nIGZyYW1lc2l6ZTsKPiA+ID4gPiA+ID4gPiArICAgZG1hX2FkZHJfdCBkbWE7Cj4gPiA+ID4g PiA+ID4gKyAgIGludCBlcnI7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBlcnIg PSBjbGNkZmJfb2ZfaW5pdF9kaXNwbGF5KGZiKTsKPiA+ID4gPiA+ID4gPiArICAgaWYgKGVycikK PiA+ID4gPiA+ID4gPiArICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4gPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ID4gPiArICAgZnJhbWVzaXplID0gUEFHRV9BTElHTihmYi0+cGFuZWwtPm1vZGUueHJl cyAqIGZiLT5wYW5lbC0+bW9kZS55cmVzICoKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgIGZiLT5wYW5lbC0+YnBwIC8gOCk7Cj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5mYi5zY3JlZW5f YmFzZSA9IGRtYV9hbGxvY19jb2hlcmVudCgmZmItPmRldi0+ZGV2LCBmcmFtZXNpemUsCj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAmZG1hLCBHRlBfS0VSTkVMKTsKPiA+ID4gPiA+ ID4gPiArICAgaWYgKCFmYi0+ZmIuc2NyZWVuX2Jhc2UpCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgcmV0dXJuIC1FTk9NRU07Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBmYi0+ ZmIuZml4LnNtZW1fc3RhcnQgPSBkbWE7Cj4gPiA+ID4gPiA+ID4gKyAgIGZiLT5mYi5maXguc21l bV9sZW4gPSBmcmFtZXNpemU7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICByZXR1 cm4gMDsKPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArc3Rh dGljIGludCBjbGNkZmJfb2ZfZG1hX21tYXAoc3RydWN0IGNsY2RfZmIgKmZiLCBzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSkKPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ICsgICByZXR1 cm4gZG1hX21tYXBfd2MoJmZiLT5kZXYtPmRldiwgdm1hLCBmYi0+ZmIuc2NyZWVuX2Jhc2UsCj4g PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBmYi0+ZmIuZml4LnNtZW1fc3RhcnQs IGZiLT5mYi5maXguc21lbV9sZW4pOwo+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBjbGNkZmJfb2ZfZG1hX3JlbW92ZShzdHJ1Y3QgY2xj ZF9mYiAqZmIpCj4gPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gPiArICAgZG1hX2ZyZWVfY29o ZXJlbnQoJmZiLT5kZXYtPmRldiwgZmItPmZiLmZpeC5zbWVtX2xlbiwKPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgIGZiLT5mYi5zY3JlZW5fYmFzZSwgZmItPmZiLmZpeC5zbWVtX3N0 YXJ0KTsKPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArc3Rh dGljIHN0cnVjdCBjbGNkX2JvYXJkICpjbGNkZmJfb2ZfZ2V0X2JvYXJkKHN0cnVjdCBhbWJhX2Rl dmljZSAqZGV2KQo+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4gKyAgIHN0cnVjdCBjbGNk X2JvYXJkICpib2FyZCA9IGRldm1fa3phbGxvYygmZGV2LT5kZXYsIHNpemVvZigqYm9hcmQpLAo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgR0ZQX0tFUk5FTCk7Cj4gPiA+ID4gPiA+ ID4gKyAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IGRldi0+ZGV2Lm9mX25vZGU7Cj4gPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBpZiAoIWJvYXJkKQo+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAg Ym9hcmQtPm5hbWUgPSBvZl9ub2RlX2Z1bGxfbmFtZShub2RlKTsKPiA+ID4gPiA+ID4gPiArICAg Ym9hcmQtPmNhcHMgPSBDTENEX0NBUF9BTEw7Cj4gPiA+ID4gPiA+ID4gKyAgIGJvYXJkLT5jaGVj ayA9IGNsY2RmYl9jaGVjazsKPiA+ID4gPiA+ID4gPiArICAgYm9hcmQtPmRlY29kZSA9IGNsY2Rm Yl9kZWNvZGU7Cj4gPiA+ID4gPiA+ID4gKyAgIGlmIChvZl9maW5kX3Byb3BlcnR5KG5vZGUsICJt ZW1vcnktcmVnaW9uIiwgTlVMTCkpIHsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBib2FyZC0+ c2V0dXAgPSBjbGNkZmJfb2ZfdnJhbV9zZXR1cDsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBi b2FyZC0+bW1hcCA9IGNsY2RmYl9vZl92cmFtX21tYXA7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgYm9hcmQtPnJlbW92ZSA9IGNsY2RmYl9vZl92cmFtX3JlbW92ZTsKPiA+ID4gPiA+ID4gPiAr ICAgfSBlbHNlIHsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBib2FyZC0+c2V0dXAgPSBjbGNk ZmJfb2ZfZG1hX3NldHVwOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGJvYXJkLT5tbWFwID0g Y2xjZGZiX29mX2RtYV9tbWFwOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGJvYXJkLT5yZW1v dmUgPSBjbGNkZmJfb2ZfZG1hX3JlbW92ZTsKPiA+ID4gPiA+ID4gPiArICAgfQo+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiArICAgcmV0dXJuIGJvYXJkOwo+ID4gPiA+ID4gPiA+ICt9Cj4g PiA+ID4gPiA+ID4gKyNlbHNlCj4gPiA+ID4gPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgY2xjZF9ib2Fy ZCAqY2xjZGZiX29mX2dldF9ib2FyZChzdHJ1Y3QgYW1iYV9kZXZpY2UgKmRldikKPiA+ID4gPiA+ ID4gPiArewo+ID4gPiA+ID4gPiA+ICsgICByZXR1cm4gTlVMTDsKPiA+ID4gPiA+ID4gPiArfQo+ ID4gPiA+ID4gPiA+ICsjZW5kaWYKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gK3N0YXRp YyBpbnQgY2xjZGZiX3Byb2JlKHN0cnVjdCBhbWJhX2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3Qg YW1iYV9pZCAqaWQpCj4gPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gPiArICAgc3RydWN0IGNs Y2RfYm9hcmQgKmJvYXJkID0gZGV2X2dldF9wbGF0ZGF0YSgmZGV2LT5kZXYpOwo+ID4gPiA+ID4g PiA+ICsgICBzdHJ1Y3QgY2xjZF9mYiAqZmI7Cj4gPiA+ID4gPiA+ID4gKyAgIGludCByZXQ7Cj4g PiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBpZiAoIWJvYXJkKQo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgIGJvYXJkID0gY2xjZGZiX29mX2dldF9ib2FyZChkZXYpOwo+ID4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gPiArICAgaWYgKCFib2FyZCkKPiA+ID4gPiA+ID4gPiArICAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIHJl dCA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoJmRldi0+ZGV2LCBETUFfQklUX01BU0soMzIp KTsKPiA+ID4gPiA+ID4gPiArICAgaWYgKHJldCkKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBn b3RvIG91dDsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIHJldCA9IGFtYmFfcmVx dWVzdF9yZWdpb25zKGRldiwgTlVMTCk7Cj4gPiA+ID4gPiA+ID4gKyAgIGlmIChyZXQpIHsKPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICBwcmludGsoS0VSTl9FUlIgIkNMQ0Q6IHVuYWJsZSB0byBy ZXNlcnZlIHJlZ3MgcmVnaW9uXG4iKTsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBnb3RvIG91 dDsKPiA+ID4gPiA+ID4gPiArICAgfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAg ZmIgPSBremFsbG9jKHNpemVvZigqZmIpLCBHRlBfS0VSTkVMKTsKPiA+ID4gPiA+ID4gPiArICAg aWYgKCFmYikgewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHJldCA9IC1FTk9NRU07Cj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgZ290byBmcmVlX3JlZ2lvbjsKPiA+ID4gPiA+ID4gPiArICAg fQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgZmItPmRldiA9IGRldjsKPiA+ID4g PiA+ID4gPiArICAgZmItPmJvYXJkID0gYm9hcmQ7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiA+ICsgICBkZXZfaW5mbygmZmItPmRldi0+ZGV2LCAiUEwlMDN4IGRlc2lnbmVyICUwMnggcmV2 JXUgYXQgMHglMDhsbHhcbiIsCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgYW1iYV9wYXJ0KGRl diksIGFtYmFfbWFuZihkZXYpLCBhbWJhX3JldihkZXYpLAo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZGV2LT5yZXMuc3RhcnQpOwo+ID4gPiA+ID4gPiA+ICsK PiA+ID4gPiA+ID4gPiArICAgcmV0ID0gZmItPmJvYXJkLT5zZXR1cChmYik7Cj4gPiA+ID4gPiA+ ID4gKyAgIGlmIChyZXQpCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgZ290byBmcmVlX2ZiOwo+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgcmV0ID0gY2xjZGZiX3JlZ2lzdGVyKGZi KTsKPiA+ID4gPiA+ID4gPiArICAgaWYgKHJldCA9PSAwKSB7Cj4gPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgYW1iYV9zZXRfZHJ2ZGF0YShkZXYsIGZiKTsKPiA+ID4gPiA+ID4gPiArICAgICAgICAg ICBnb3RvIG91dDsKPiA+ID4gPiA+ID4gPiArICAgfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiArICAgZmItPmJvYXJkLT5yZW1vdmUoZmIpOwo+ID4gPiA+ID4gPiA+ICsgZnJlZV9mYjoK PiA+ID4gPiA+ID4gPiArICAga2ZyZWUoZmIpOwo+ID4gPiA+ID4gPiA+ICsgZnJlZV9yZWdpb246 Cj4gPiA+ID4gPiA+ID4gKyAgIGFtYmFfcmVsZWFzZV9yZWdpb25zKGRldik7Cj4gPiA+ID4gPiA+ ID4gKyBvdXQ6Cj4gPiA+ID4gPiA+ID4gKyAgIHJldHVybiByZXQ7Cj4gPiA+ID4gPiA+ID4gK30K PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gK3N0YXRpYyBpbnQgY2xjZGZiX3JlbW92ZShz dHJ1Y3QgYW1iYV9kZXZpY2UgKmRldikKPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ICsg ICBzdHJ1Y3QgY2xjZF9mYiAqZmIgPSBhbWJhX2dldF9kcnZkYXRhKGRldik7Cj4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBjbGNkZmJfZGlzYWJsZShmYik7Cj4gPiA+ID4gPiA+ID4g KyAgIHVucmVnaXN0ZXJfZnJhbWVidWZmZXIoJmZiLT5mYik7Cj4gPiA+ID4gPiA+ID4gKyAgIGlm IChmYi0+ZmIuY21hcC5sZW4pCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgZmJfZGVhbGxvY19j bWFwKCZmYi0+ZmIuY21hcCk7Cj4gPiA+ID4gPiA+ID4gKyAgIGlvdW5tYXAoZmItPnJlZ3MpOwo+ ID4gPiA+ID4gPiA+ICsgICBjbGtfdW5wcmVwYXJlKGZiLT5jbGspOwo+ID4gPiA+ID4gPiA+ICsg ICBjbGtfcHV0KGZiLT5jbGspOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgZmIt PmJvYXJkLT5yZW1vdmUoZmIpOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAga2Zy ZWUoZmIpOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgYW1iYV9yZWxlYXNlX3Jl Z2lvbnMoZGV2KTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIHJldHVybiAwOwo+ ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGFtYmFfaWQgY2xjZGZiX2lkX3RhYmxlW10gPSB7Cj4gPiA+ID4gPiA+ID4gKyAg IHsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAuaWQgICAgID0gMHgwMDA0MTExMCwKPiA+ID4g PiA+ID4gPiArICAgICAgICAgICAubWFzayAgID0gMHgwMDBmZmZmZSwKPiA+ID4gPiA+ID4gPiAr ICAgfSwKPiA+ID4gPiA+ID4gPiArICAgeyAwLCAwIH0sCj4gPiA+ID4gPiA+ID4gK307Cj4gPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtNT0RVTEVfREVWSUNFX1RBQkxFKGFtYmEsIGNsY2Rm Yl9pZF90YWJsZSk7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgc3RydWN0 IGFtYmFfZHJpdmVyIGNsY2RfZHJpdmVyID0gewo+ID4gPiA+ID4gPiA+ICsgICAuZHJ2ICAgICAg ICAgICAgPSB7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgLm5hbWUgICA9ICJjbGNkLXBsMTF4 IiwKPiA+ID4gPiA+ID4gPiArICAgfSwKPiA+ID4gPiA+ID4gPiArICAgLnByb2JlICAgICAgICAg ID0gY2xjZGZiX3Byb2JlLAo+ID4gPiA+ID4gPiA+ICsgICAucmVtb3ZlICAgICAgICAgPSBjbGNk ZmJfcmVtb3ZlLAo+ID4gPiA+ID4gPiA+ICsgICAuaWRfdGFibGUgICAgICAgPSBjbGNkZmJfaWRf dGFibGUsCj4gPiA+ID4gPiA+ID4gK307Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtz dGF0aWMgaW50IF9faW5pdCBhbWJhX2NsY2RmYl9pbml0KHZvaWQpCj4gPiA+ID4gPiA+ID4gK3sK PiA+ID4gPiA+ID4gPiArICAgaWYgKGZiX2dldF9vcHRpb25zKCJhbWJhZmIiLCBOVUxMKSkKPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsKPiA+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ID4gKyAgIHJldHVybiBhbWJhX2RyaXZlcl9yZWdpc3RlcigmY2xjZF9kcml2ZXIp Owo+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICttb2R1bGVf aW5pdChhbWJhX2NsY2RmYl9pbml0KTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gK3N0 YXRpYyB2b2lkIF9fZXhpdCBhbWJhX2NsY2RmYl9leGl0KHZvaWQpCj4gPiA+ID4gPiA+ID4gK3sK PiA+ID4gPiA+ID4gPiArICAgYW1iYV9kcml2ZXJfdW5yZWdpc3RlcigmY2xjZF9kcml2ZXIpOwo+ ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICttb2R1bGVfZXhp dChhbWJhX2NsY2RmYl9leGl0KTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gK01PRFVM RV9ERVNDUklQVElPTigiQVJNIFByaW1lQ2VsbCBQTDExMCBDTENEIGNvcmUgZHJpdmVyIik7Cj4g PiA+ID4gPiA+ID4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKPiA+ID4gPiA+ID4gPiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS9saW51eC9hbWJhL2NsY2QtcmVncy5oIGIvaW5jbHVkZS9saW51eC9hbWJh L2NsY2QtcmVncy5oCj4gPiA+ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gPiA+ ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjQyMWIwZmE5MGQ2YQo+ID4gPiA+ID4gPiA+IC0tLSAv ZGV2L251bGwKPiA+ID4gPiA+ID4gPiArKysgYi9pbmNsdWRlL2xpbnV4L2FtYmEvY2xjZC1yZWdz LmgKPiA+ID4gPiA+ID4gPiBAQCAtMCwwICsxLDg3IEBACj4gPiA+ID4gPiA+ID4gKy8qCj4gPiA+ ID4gPiA+ID4gKyAqIERhdmlkIEEgUnVzbGluZwo+ID4gPiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4g PiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMDEgQVJNIExpbWl0ZWQKPiA+ID4gPiA+ID4gPiArICoK PiA+ID4gPiA+ID4gPiArICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBj b25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKPiA+ID4gPiA+ID4gPiArICogTGlj ZW5zZS4gIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlz IGFyY2hpdmUKPiA+ID4gPiA+ID4gPiArICogZm9yIG1vcmUgZGV0YWlscy4KPiA+ID4gPiA+ID4g PiArICovCj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsjaWZuZGVmIEFNQkFfQ0xDRF9S RUdTX0gKPiA+ID4gPiA+ID4gPiArI2RlZmluZSBBTUJBX0NMQ0RfUkVHU19ICj4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiA+ICsvKgo+ID4gPiA+ID4gPiA+ICsgKiBDTENEIENvbnRyb2xsZXIg SW50ZXJuYWwgUmVnaXN0ZXIgYWRkcmVzc2VzCj4gPiA+ID4gPiA+ID4gKyAqLwo+ID4gPiA+ID4g PiA+ICsjZGVmaW5lIENMQ0RfVElNMCAgICAgICAgICAweDAwMDAwMDAwCj4gPiA+ID4gPiA+ID4g KyNkZWZpbmUgQ0xDRF9USU0xICAgICAgICAgIDB4MDAwMDAwMDQKPiA+ID4gPiA+ID4gPiArI2Rl ZmluZSBDTENEX1RJTTIgICAgICAgICAgMHgwMDAwMDAwOAo+ID4gPiA+ID4gPiA+ICsjZGVmaW5l IENMQ0RfVElNMyAgICAgICAgICAweDAwMDAwMDBjCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgQ0xD RF9VQkFTICAgICAgICAgIDB4MDAwMDAwMTAKPiA+ID4gPiA+ID4gPiArI2RlZmluZSBDTENEX0xC QVMgICAgICAgICAgMHgwMDAwMDAxNAo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArI2Rl ZmluZSBDTENEX1BMMTEwX0lFTkIgICAgICAgICAgICAweDAwMDAwMDE4Cj4gPiA+ID4gPiA+ID4g KyNkZWZpbmUgQ0xDRF9QTDExMF9DTlRMICAgICAgICAgICAgMHgwMDAwMDAxYwo+ID4gPiA+ID4g PiA+ICsjZGVmaW5lIENMQ0RfUEwxMTBfU1RBVCAgICAgICAgICAgIDB4MDAwMDAwMjAKPiA+ID4g PiA+ID4gPiArI2RlZmluZSBDTENEX1BMMTEwX0lOVFIgICAgMHgwMDAwMDAyNAo+ID4gPiA+ID4g PiA+ICsjZGVmaW5lIENMQ0RfUEwxMTBfVUNVUiAgICAgICAgICAgIDB4MDAwMDAwMjgKPiA+ID4g PiA+ID4gPiArI2RlZmluZSBDTENEX1BMMTEwX0xDVVIgICAgICAgICAgICAweDAwMDAwMDJDCj4g PiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIENMQ0RfUEwxMTFfQ05UTCAgICAg ICAgICAgIDB4MDAwMDAwMTgKPiA+ID4gPiA+ID4gPiArI2RlZmluZSBDTENEX1BMMTExX0lFTkIg ICAgICAgICAgICAweDAwMDAwMDFjCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgQ0xDRF9QTDExMV9S SVMgICAgICAgICAgICAgMHgwMDAwMDAyMAo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIENMQ0RfUEwx MTFfTUlTICAgICAgICAgICAgIDB4MDAwMDAwMjQKPiA+ID4gPiA+ID4gPiArI2RlZmluZSBDTENE X1BMMTExX0lDUiAgICAgICAgICAgICAweDAwMDAwMDI4Cj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUg Q0xDRF9QTDExMV9VQ1VSICAgICAgICAgICAgMHgwMDAwMDAyYwo+ID4gPiA+ID4gPiA+ICsjZGVm aW5lIENMQ0RfUEwxMTFfTENVUiAgICAgICAgICAgIDB4MDAwMDAwMzAKPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgQ0xDRF9QQUxMICAgICAgICAgIDB4MDAwMDAyMDAKPiA+ ID4gPiA+ID4gPiArI2RlZmluZSBDTENEX1BBTEVUVEUgICAgICAgICAgICAgICAweDAwMDAwMjAw Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIFRJTTJfUENEX0xPX01BU0sg ICBHRU5NQVNLKDQsIDApCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgVElNMl9QQ0RfTE9fQklUUyAg IDUKPiA+ID4gPiA+ID4gPiArI2RlZmluZSBUSU0yX0NMS1NFTCAgICAgICAgICAgICAgICAoMSA8 PCA1KQo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIFRJTTJfQUNCX01BU0sgICAgICAgICAgICAgIEdF Tk1BU0soMTAsIDYpCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgVElNMl9JVlMgICAgICAgICAgICgx IDw8IDExKQo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIFRJTTJfSUhTICAgICAgICAgICAoMSA8PCAx MikKPiA+ID4gPiA+ID4gPiArI2RlZmluZSBUSU0yX0lQQyAgICAgICAgICAgKDEgPDwgMTMpCj4g PiA+ID4gPiA+ID4gKyNkZWZpbmUgVElNMl9JT0UgICAgICAgICAgICgxIDw8IDE0KQo+ID4gPiA+ ID4gPiA+ICsjZGVmaW5lIFRJTTJfQkNEICAgICAgICAgICAoMSA8PCAyNikKPiA+ID4gPiA+ID4g PiArI2RlZmluZSBUSU0yX1BDRF9ISV9NQVNLICAgR0VOTUFTSygzMSwgMjcpCj4gPiA+ID4gPiA+ ID4gKyNkZWZpbmUgVElNMl9QQ0RfSElfQklUUyAgIDUKPiA+ID4gPiA+ID4gPiArI2RlZmluZSBU SU0yX1BDRF9ISV9TSElGVCAgMjcKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyNkZWZp bmUgQ05UTF9MQ0RFTiAgICAgICAgICgxIDw8IDApCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgQ05U TF9MQ0RCUFAxICAgICAgICAgICAgICAgKDAgPDwgMSkKPiA+ID4gPiA+ID4gPiArI2RlZmluZSBD TlRMX0xDREJQUDIgICAgICAgICAgICAgICAoMSA8PCAxKQo+ID4gPiA+ID4gPiA+ICsjZGVmaW5l IENOVExfTENEQlBQNCAgICAgICAgICAgICAgICgyIDw8IDEpCj4gPiA+ID4gPiA+ID4gKyNkZWZp bmUgQ05UTF9MQ0RCUFA4ICAgICAgICAgICAgICAgKDMgPDwgMSkKPiA+ID4gPiA+ID4gPiArI2Rl ZmluZSBDTlRMX0xDREJQUDE2ICAgICAgICAgICAgICAoNCA8PCAxKQo+ID4gPiA+ID4gPiA+ICsj ZGVmaW5lIENOVExfTENEQlBQMTZfNTY1ICAoNiA8PCAxKQo+ID4gPiA+ID4gPiA+ICsjZGVmaW5l IENOVExfTENEQlBQMTZfNDQ0ICAoNyA8PCAxKQo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIENOVExf TENEQlBQMjQgICAgICAgICAgICAgICg1IDw8IDEpCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgQ05U TF9MQ0RCVyAgICAgICAgICgxIDw8IDQpCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgQ05UTF9MQ0RU RlQgICAgICAgICAgICAgICAgKDEgPDwgNSkKPiA+ID4gPiA+ID4gPiArI2RlZmluZSBDTlRMX0xD RE1PTk84ICAgICAgICAgICAgICAoMSA8PCA2KQo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIENOVExf TENERFVBTCAgICAgICAgICAgICAgICgxIDw8IDcpCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgQ05U TF9CR1IgICAgICAgICAgICgxIDw8IDgpCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgQ05UTF9CRUJP ICAgICAgICAgICgxIDw8IDkpCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgQ05UTF9CRVBPICAgICAg ICAgICgxIDw8IDEwKQo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIENOVExfTENEUFdSICAgICAgICAg ICAgICAgICgxIDw8IDExKQo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIENOVExfTENEVkNPTVAoeCkg ICAoKHgpIDw8IDEyKQo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIENOVExfTERNQUZJRk9USU1FICAo MSA8PCAxNSkKPiA+ID4gPiA+ID4gPiArI2RlZmluZSBDTlRMX1dBVEVSTUFSSyAgICAgICAgICAg ICAoMSA8PCAxNikKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKy8qIFNUIE1pY3JvZWxl Y3Ryb25pY3MgdmFyaWFudCBiaXRzICovCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgQ05UTF9TVF8x WEJQUF80NDQgIDB4MAo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIENOVExfU1RfMVhCUFBfNTU1MSAo MSA8PCAxNykKPiA+ID4gPiA+ID4gPiArI2RlZmluZSBDTlRMX1NUXzFYQlBQXzU2NSAgKDEgPDwg MTgpCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgQ05UTF9TVF9DRFdJRF8xMiAgIDB4MAo+ID4gPiA+ ID4gPiA+ICsjZGVmaW5lIENOVExfU1RfQ0RXSURfMTYgICAoMSA8PCAxOSkKPiA+ID4gPiA+ID4g PiArI2RlZmluZSBDTlRMX1NUX0NEV0lEXzE4ICAgKDEgPDwgMjApCj4gPiA+ID4gPiA+ID4gKyNk ZWZpbmUgQ05UTF9TVF9DRFdJRF8yNCAgICgoMSA8PCAxOSl8KDEgPDwgMjApKQo+ID4gPiA+ID4g PiA+ICsjZGVmaW5lIENOVExfU1RfQ0VBRU4gICAgICAgICAgICAgICgxIDw8IDIxKQo+ID4gPiA+ ID4gPiA+ICsjZGVmaW5lIENOVExfU1RfTENEQlBQMjRfUEFDS0VEICAgICg2IDw8IDEpCj4gPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsjZW5kaWYgLyogQU1CQV9DTENEX1JFR1NfSCAqLwo+ ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2FtYmEvY2xjZC5oIGIvaW5j bHVkZS9saW51eC9hbWJhL2NsY2QuaAo+ID4gPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gPiA+ID4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5iNmUwY2JlYWY1MzMKPiA+ID4gPiA+ ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ID4gPiA+ID4gKysrIGIvaW5jbHVkZS9saW51eC9hbWJh L2NsY2QuaAo+ID4gPiA+ID4gPiA+IEBAIC0wLDAgKzEsMjkwIEBACj4gPiA+ID4gPiA+ID4gKy8q Cj4gPiA+ID4gPiA+ID4gKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9oYXJkd2FyZS9hbWJhX2Ns Y2QuaCAtLSBJbnRlZ3JhdG9yIExDRCBwYW5lbC4KPiA+ID4gPiA+ID4gPiArICoKPiA+ID4gPiA+ ID4gPiArICogRGF2aWQgQSBSdXNsaW5nCj4gPiA+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiA+ID4g KyAqIENvcHlyaWdodCAoQykgMjAwMSBBUk0gTGltaXRlZAo+ID4gPiA+ID4gPiA+ICsgKgo+ID4g PiA+ID4gPiA+ICsgKiBUaGlzIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRp dGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwo+ID4gPiA+ID4gPiA+ICsgKiBMaWNlbnNl LiAgU2VlIHRoZSBmaWxlIENPUFlJTkcgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJj aGl2ZQo+ID4gPiA+ID4gPiA+ICsgKiBmb3IgbW9yZSBkZXRhaWxzLgo+ID4gPiA+ID4gPiA+ICsg Ki8KPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2ZiLmg+Cj4gPiA+ID4gPiA+ID4gKyNp bmNsdWRlIDxsaW51eC9hbWJhL2NsY2QtcmVncy5oPgo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiArZW51bSB7Cj4gPiA+ID4gPiA+ID4gKyAgIC8qIGluZGl2aWR1YWwgZm9ybWF0cyAqLwo+ ID4gPiA+ID4gPiA+ICsgICBDTENEX0NBUF9SR0I0NDQgICAgICAgICA9ICgxIDw8IDApLAo+ID4g PiA+ID4gPiA+ICsgICBDTENEX0NBUF9SR0I1NTUxICAgICAgICA9ICgxIDw8IDEpLAo+ID4gPiA+ ID4gPiA+ICsgICBDTENEX0NBUF9SR0I1NjUgICAgICAgICA9ICgxIDw8IDIpLAo+ID4gPiA+ID4g PiA+ICsgICBDTENEX0NBUF9SR0I4ODggICAgICAgICA9ICgxIDw8IDMpLAo+ID4gPiA+ID4gPiA+ ICsgICBDTENEX0NBUF9CR1I0NDQgICAgICAgICA9ICgxIDw8IDQpLAo+ID4gPiA+ID4gPiA+ICsg ICBDTENEX0NBUF9CR1I1NTUxICAgICAgICA9ICgxIDw8IDUpLAo+ID4gPiA+ID4gPiA+ICsgICBD TENEX0NBUF9CR1I1NjUgICAgICAgICA9ICgxIDw8IDYpLAo+ID4gPiA+ID4gPiA+ICsgICBDTENE X0NBUF9CR1I4ODggICAgICAgICA9ICgxIDw8IDcpLAo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiArICAgLyogY29ubmVjdGlvbiBsYXlvdXRzICovCj4gPiA+ID4gPiA+ID4gKyAgIENMQ0Rf Q0FQXzQ0NCAgICAgICAgICAgID0gQ0xDRF9DQVBfUkdCNDQ0IHwgQ0xDRF9DQVBfQkdSNDQ0LAo+ ID4gPiA+ID4gPiA+ICsgICBDTENEX0NBUF81NTUxICAgICAgICAgICA9IENMQ0RfQ0FQX1JHQjU1 NTEgfCBDTENEX0NBUF9CR1I1NTUxLAo+ID4gPiA+ID4gPiA+ICsgICBDTENEX0NBUF81NjUgICAg ICAgICAgICA9IENMQ0RfQ0FQX1JHQjU2NSB8IENMQ0RfQ0FQX0JHUjU2NSwKPiA+ID4gPiA+ID4g PiArICAgQ0xDRF9DQVBfODg4ICAgICAgICAgICAgPSBDTENEX0NBUF9SR0I4ODggfCBDTENEX0NB UF9CR1I4ODgsCj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAvKiByZWQvYmx1ZSBv cmRlcmluZyAqLwo+ID4gPiA+ID4gPiA+ICsgICBDTENEX0NBUF9SR0IgICAgICAgICAgICA9IENM Q0RfQ0FQX1JHQjQ0NCB8IENMQ0RfQ0FQX1JHQjU1NTEgfAo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIENMQ0RfQ0FQX1JHQjU2NSB8IENMQ0RfQ0FQX1JHQjg4OCwK PiA+ID4gPiA+ID4gPiArICAgQ0xDRF9DQVBfQkdSICAgICAgICAgICAgPSBDTENEX0NBUF9CR1I0 NDQgfCBDTENEX0NBUF9CR1I1NTUxIHwKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBDTENEX0NBUF9CR1I1NjUgfCBDTENEX0NBUF9CR1I4ODgsCj4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiA+ICsgICBDTENEX0NBUF9BTEwgICAgICAgICAgICA9IENMQ0RfQ0FQ X0JHUiB8IENMQ0RfQ0FQX1JHQiwKPiA+ID4gPiA+ID4gPiArfTsKPiA+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ID4gK3N0cnVjdCBiYWNrbGlnaHRfZGV2aWNlOwo+ID4gPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ID4gPiArc3RydWN0IGNsY2RfcGFuZWwgewo+ID4gPiA+ID4gPiA+ICsgICBzdHJ1Y3Qg ZmJfdmlkZW9tb2RlICAgICBtb2RlOwo+ID4gPiA+ID4gPiA+ICsgICBzaWduZWQgc2hvcnQgICAg ICAgICAgICB3aWR0aDsgIC8qIHdpZHRoIGluIG1tICovCj4gPiA+ID4gPiA+ID4gKyAgIHNpZ25l ZCBzaG9ydCAgICAgICAgICAgIGhlaWdodDsgLyogaGVpZ2h0IGluIG1tICovCj4gPiA+ID4gPiA+ ID4gKyAgIHUzMiAgICAgICAgICAgICAgICAgICAgIHRpbTI7Cj4gPiA+ID4gPiA+ID4gKyAgIHUz MiAgICAgICAgICAgICAgICAgICAgIHRpbTM7Cj4gPiA+ID4gPiA+ID4gKyAgIHUzMiAgICAgICAg ICAgICAgICAgICAgIGNudGw7Cj4gPiA+ID4gPiA+ID4gKyAgIHUzMiAgICAgICAgICAgICAgICAg ICAgIGNhcHM7Cj4gPiA+ID4gPiA+ID4gKyAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIGJwcDo4 LAo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZHRpbWluZ3M6 MSwKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JheXNjYWxlOjE7 Cj4gPiA+ID4gPiA+ID4gKyAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIGNvbm5lY3RvcjsKPiA+ ID4gPiA+ID4gPiArICAgc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJhY2tsaWdodDsKPiA+ID4g PiA+ID4gPiArICAgLyoKPiA+ID4gPiA+ID4gPiArICAgICogSWYgdGhlIEIvUiBsaW5lcyBhcmUg c3dpdGNoZWQgYmV0d2VlbiB0aGUgQ0xDRAo+ID4gPiA+ID4gPiA+ICsgICAgKiBhbmQgdGhlIHBh bmVsIHdlIG5lZWQgdG8ga25vdyB0aGlzIGFuZCBub3QgdHJ5IHRvCj4gPiA+ID4gPiA+ID4gKyAg ICAqIGNvbXBlbnNhdGUgd2l0aCB0aGUgQkdSIGJpdCBpbiB0aGUgY29udHJvbCByZWdpc3Rlci4K PiA+ID4gPiA+ID4gPiArICAgICovCj4gPiA+ID4gPiA+ID4gKyAgIGJvb2wgICAgICAgICAgICAg ICAgICAgIGJncl9jb25uZWN0aW9uOwo+ID4gPiA+ID4gPiA+ICt9Owo+ID4gPiA+ID4gPiA+ICsK PiA+ID4gPiA+ID4gPiArc3RydWN0IGNsY2RfcmVncyB7Cj4gPiA+ID4gPiA+ID4gKyAgIHUzMiAg ICAgICAgICAgICAgICAgICAgIHRpbTA7Cj4gPiA+ID4gPiA+ID4gKyAgIHUzMiAgICAgICAgICAg ICAgICAgICAgIHRpbTE7Cj4gPiA+ID4gPiA+ID4gKyAgIHUzMiAgICAgICAgICAgICAgICAgICAg IHRpbTI7Cj4gPiA+ID4gPiA+ID4gKyAgIHUzMiAgICAgICAgICAgICAgICAgICAgIHRpbTM7Cj4g PiA+ID4gPiA+ID4gKyAgIHUzMiAgICAgICAgICAgICAgICAgICAgIGNudGw7Cj4gPiA+ID4gPiA+ ID4gKyAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAgIHBpeGNsb2NrOwo+ID4gPiA+ID4gPiA+ICt9 Owo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArc3RydWN0IGNsY2RfZmI7Cj4gPiA+ID4g PiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsvKgo+ID4gPiA+ID4gPiA+ICsgKiB0aGUgYm9hcmQtdHlw ZSBzcGVjaWZpYyByb3V0aW5lcwo+ID4gPiA+ID4gPiA+ICsgKi8KPiA+ID4gPiA+ID4gPiArc3Ry dWN0IGNsY2RfYm9hcmQgewo+ID4gPiA+ID4gPiA+ICsgICBjb25zdCBjaGFyICpuYW1lOwo+ID4g PiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgLyoKPiA+ID4gPiA+ID4gPiArICAgICogT3B0 aW9uYWwuICBIYXJkd2FyZSBjYXBhYmlsaXR5IGZsYWdzLgo+ID4gPiA+ID4gPiA+ICsgICAgKi8K PiA+ID4gPiA+ID4gPiArICAgdTMyICAgICBjYXBzOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiArICAgLyoKPiA+ID4gPiA+ID4gPiArICAgICogT3B0aW9uYWwuICBDaGVjayB3aGV0aGVy IHRoZSB2YXIgc3RydWN0dXJlIGlzIGFjY2VwdGFibGUKPiA+ID4gPiA+ID4gPiArICAgICogZm9y IHRoaXMgZGlzcGxheS4KPiA+ID4gPiA+ID4gPiArICAgICovCj4gPiA+ID4gPiA+ID4gKyAgIGlu dCAgICAgKCpjaGVjaykoc3RydWN0IGNsY2RfZmIgKmZiLCBzdHJ1Y3QgZmJfdmFyX3NjcmVlbmlu Zm8gKnZhcik7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAvKgo+ID4gPiA+ID4g PiA+ICsgICAgKiBDb21wdWxzb3J5LiAgRGVjb2RlIGZiLT5mYi52YXIgaW50byByZWdzLT4qLiAg SW4gdGhlIGNhc2Ugb2YKPiA+ID4gPiA+ID4gPiArICAgICogZml4ZWQgdGltaW5nLCBzZXQgcmVn cy0+KiB0byB0aGUgcmVnaXN0ZXIgdmFsdWVzIHJlcXVpcmVkLgo+ID4gPiA+ID4gPiA+ICsgICAg Ki8KPiA+ID4gPiA+ID4gPiArICAgdm9pZCAgICAoKmRlY29kZSkoc3RydWN0IGNsY2RfZmIgKmZi LCBzdHJ1Y3QgY2xjZF9yZWdzICpyZWdzKTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4g KyAgIC8qCj4gPiA+ID4gPiA+ID4gKyAgICAqIE9wdGlvbmFsLiAgRGlzYWJsZSBhbnkgZXh0cmEg ZGlzcGxheSBoYXJkd2FyZS4KPiA+ID4gPiA+ID4gPiArICAgICovCj4gPiA+ID4gPiA+ID4gKyAg IHZvaWQgICAgKCpkaXNhYmxlKShzdHJ1Y3QgY2xjZF9mYiAqKTsKPiA+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ID4gKyAgIC8qCj4gPiA+ID4gPiA+ID4gKyAgICAqIE9wdGlvbmFsLiAgRW5hYmxl IGFueSBleHRyYSBkaXNwbGF5IGhhcmR3YXJlLgo+ID4gPiA+ID4gPiA+ICsgICAgKi8KPiA+ID4g PiA+ID4gPiArICAgdm9pZCAgICAoKmVuYWJsZSkoc3RydWN0IGNsY2RfZmIgKik7Cj4gPiA+ID4g PiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAvKgo+ID4gPiA+ID4gPiA+ICsgICAgKiBTZXR1cCBw bGF0Zm9ybSBzcGVjaWZpYyBwYXJ0cyBvZiBDTENEIGRyaXZlcgo+ID4gPiA+ID4gPiA+ICsgICAg Ki8KPiA+ID4gPiA+ID4gPiArICAgaW50ICAgICAoKnNldHVwKShzdHJ1Y3QgY2xjZF9mYiAqKTsK PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIC8qCj4gPiA+ID4gPiA+ID4gKyAgICAq IG1tYXAgdGhlIGZyYW1lYnVmZmVyIG1lbW9yeQo+ID4gPiA+ID4gPiA+ICsgICAgKi8KPiA+ID4g PiA+ID4gPiArICAgaW50ICAgICAoKm1tYXApKHN0cnVjdCBjbGNkX2ZiICosIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqKTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIC8qCj4gPiA+ ID4gPiA+ID4gKyAgICAqIFJlbW92ZSBwbGF0Zm9ybSBzcGVjaWZpYyBwYXJ0cyBvZiBDTENEIGRy aXZlcgo+ID4gPiA+ID4gPiA+ICsgICAgKi8KPiA+ID4gPiA+ID4gPiArICAgdm9pZCAgICAoKnJl bW92ZSkoc3RydWN0IGNsY2RfZmIgKik7Cj4gPiA+ID4gPiA+ID4gK307Cj4gPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiA+ICtzdHJ1Y3QgYW1iYV9kZXZpY2U7Cj4gPiA+ID4gPiA+ID4gK3N0cnVj dCBjbGs7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsvKiB0aGlzIGRhdGEgc3RydWN0 dXJlIGRlc2NyaWJlcyBlYWNoIGZyYW1lIGJ1ZmZlciBkZXZpY2Ugd2UgZmluZCAqLwo+ID4gPiA+ ID4gPiA+ICtzdHJ1Y3QgY2xjZF9mYiB7Cj4gPiA+ID4gPiA+ID4gKyAgIHN0cnVjdCBmYl9pbmZv ICAgICAgICAgIGZiOwo+ID4gPiA+ID4gPiA+ICsgICBzdHJ1Y3QgYW1iYV9kZXZpY2UgICAgICAq ZGV2Owo+ID4gPiA+ID4gPiA+ICsgICBzdHJ1Y3QgY2xrICAgICAgICAgICAgICAqY2xrOwo+ID4g PiA+ID4gPiA+ICsgICBzdHJ1Y3QgY2xjZF9wYW5lbCAgICAgICAqcGFuZWw7Cj4gPiA+ID4gPiA+ ID4gKyAgIHN0cnVjdCBjbGNkX2JvYXJkICAgICAgICpib2FyZDsKPiA+ID4gPiA+ID4gPiArICAg dm9pZCAgICAgICAgICAgICAgICAgICAgKmJvYXJkX2RhdGE7Cj4gPiA+ID4gPiA+ID4gKyAgIHZv aWQgX19pb21lbSAgICAgICAgICAgICpyZWdzOwo+ID4gPiA+ID4gPiA+ICsgICB1MTYgICAgICAg ICAgICAgICAgICAgICBvZmZfaWVuYjsKPiA+ID4gPiA+ID4gPiArICAgdTE2ICAgICAgICAgICAg ICAgICAgICAgb2ZmX2NudGw7Cj4gPiA+ID4gPiA+ID4gKyAgIHUzMiAgICAgICAgICAgICAgICAg ICAgIGNsY2RfY250bDsKPiA+ID4gPiA+ID4gPiArICAgdTMyICAgICAgICAgICAgICAgICAgICAg Y21hcFsxNl07Cj4gPiA+ID4gPiA+ID4gKyAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGNsa19l bmFibGVkOwo+ID4gPiA+ID4gPiA+ICt9Owo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiAr c3RhdGljIGlubGluZSB2b2lkIGNsY2RmYl9kZWNvZGUoc3RydWN0IGNsY2RfZmIgKmZiLCBzdHJ1 Y3QgY2xjZF9yZWdzICpyZWdzKQo+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4gKyAgIHN0 cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyID0gJmZiLT5mYi52YXI7Cj4gPiA+ID4gPiA+ID4g KyAgIHUzMiB2YWwsIGNwbDsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIC8qCj4g PiA+ID4gPiA+ID4gKyAgICAqIFByb2dyYW0gdGhlIENMQ0QgY29udHJvbGxlciByZWdpc3RlcnMg YW5kIHN0YXJ0IHRoZSBDTENECj4gPiA+ID4gPiA+ID4gKyAgICAqLwo+ID4gPiA+ID4gPiA+ICsg ICB2YWwgPSAoKHZhci0+eHJlcyAvIDE2KSAtIDEpIDw8IDI7Cj4gPiA+ID4gPiA+ID4gKyAgIHZh bCB8PSAodmFyLT5oc3luY19sZW4gLSAxKSA8PCA4Owo+ID4gPiA+ID4gPiA+ICsgICB2YWwgfD0g KHZhci0+cmlnaHRfbWFyZ2luIC0gMSkgPDwgMTY7Cj4gPiA+ID4gPiA+ID4gKyAgIHZhbCB8PSAo dmFyLT5sZWZ0X21hcmdpbiAtIDEpIDw8IDI0Owo+ID4gPiA+ID4gPiA+ICsgICByZWdzLT50aW0w ID0gdmFsOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgdmFsID0gdmFyLT55cmVz Owo+ID4gPiA+ID4gPiA+ICsgICBpZiAoZmItPnBhbmVsLT5jbnRsICYgQ05UTF9MQ0REVUFMKQo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHZhbCAvPSAyOwo+ID4gPiA+ID4gPiA+ICsgICB2YWwg LT0gMTsKPiA+ID4gPiA+ID4gPiArICAgdmFsIHw9ICh2YXItPnZzeW5jX2xlbiAtIDEpIDw8IDEw Owo+ID4gPiA+ID4gPiA+ICsgICB2YWwgfD0gdmFyLT5sb3dlcl9tYXJnaW4gPDwgMTY7Cj4gPiA+ ID4gPiA+ID4gKyAgIHZhbCB8PSB2YXItPnVwcGVyX21hcmdpbiA8PCAyNDsKPiA+ID4gPiA+ID4g PiArICAgcmVncy0+dGltMSA9IHZhbDsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAg IHZhbCA9IGZiLT5wYW5lbC0+dGltMjsKPiA+ID4gPiA+ID4gPiArICAgdmFsIHw9IHZhci0+c3lu YyAmIEZCX1NZTkNfSE9SX0hJR0hfQUNUICA/IDAgOiBUSU0yX0lIUzsKPiA+ID4gPiA+ID4gPiAr ICAgdmFsIHw9IHZhci0+c3luYyAmIEZCX1NZTkNfVkVSVF9ISUdIX0FDVCA/IDAgOiBUSU0yX0lW UzsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIGNwbCA9IHZhci0+eHJlc192aXJ0 dWFsOwo+ID4gPiA+ID4gPiA+ICsgICBpZiAoZmItPnBhbmVsLT5jbnRsICYgQ05UTF9MQ0RURlQp ICAgICAgICAvKiBURlQgKi8KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAvKiAvIDEgKi87Cj4g PiA+ID4gPiA+ID4gKyAgIGVsc2UgaWYgKCF2YXItPmdyYXlzY2FsZSkgICAgICAgICAgICAgICAg IC8qIFNUTiBjb2xvciAqLwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGNwbCA9IGNwbCAqIDgg LyAzOwo+ID4gPiA+ID4gPiA+ICsgICBlbHNlIGlmIChmYi0+cGFuZWwtPmNudGwgJiBDTlRMX0xD RE1PTk84KSAvKiBTVE4gbW9ub2Nocm9tZSwgOGJpdCAqLwo+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgIGNwbCAvPSA4Owo+ID4gPiA+ID4gPiA+ICsgICBlbHNlICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvKiBTVE4gbW9ub2Nocm9tZSwgNGJpdCAqLwo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgIGNwbCAvPSA0Owo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAg cmVncy0+dGltMiA9IHZhbCB8ICgoY3BsIC0gMSkgPDwgMTYpOwo+ID4gPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ID4gPiArICAgcmVncy0+dGltMyA9IGZiLT5wYW5lbC0+dGltMzsKPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gKyAgIHZhbCA9IGZiLT5wYW5lbC0+Y250bDsKPiA+ID4gPiA+ID4g PiArICAgaWYgKHZhci0+Z3JheXNjYWxlKQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHZhbCB8 PSBDTlRMX0xDREJXOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgaWYgKGZiLT5w YW5lbC0+Y2FwcyAmJiBmYi0+Ym9hcmQtPmNhcHMgJiYgdmFyLT5iaXRzX3Blcl9waXhlbCA+PSAx Nikgewo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIC8qCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICogaWYgYm9hcmQgYW5kIHBhbmVsIHN1cHBseSBjYXBhYmlsaXRpZXMsIHdlIGNhbiBzdXBw b3J0Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICogY2hhbmdpbmcgQkdSL1JHQiBkZXBlbmRp bmcgb24gc3VwcGxpZWQgcGFyYW1ldGVycy4gSGVyZQo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAqIHdlIHN3aXRjaCB0byB3aGF0IHRoZSBmcmFtZWJ1ZmZlciBpcyBwcm92aWRpbmcgaWYgbmVl ZAo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAqIGJlLCBzbyBpZiB0aGUgZnJhbWVidWZmZXIg aXMgQkdSIGJ1dCB0aGUgZGlzcGxheSBjb25uZWN0aW9uCj4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICogaXMgUkdCIChmaXJzdCBjYXNlKSB3ZSBzd2l0Y2ggaXQgYXJvdW5kLiBWaWNlIHZlcnNh IG11dGF0aXMKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgKiBtdXRhbmRpcyBpZiB0aGUgZnJh bWVidWZmZXIgaXMgUkdCIGJ1dCB0aGUgZGlzcGxheSBjb25uZWN0aW9uCj4gPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICogaXMgQkdSLCB3ZSBmbGlwIGl0IGFyb3VuZC4KPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgKi8KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBpZiAodmFyLT5yZWQub2Zm c2V0ID09IDApCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICB2YWwgJj0gfkNOVExf QkdSOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGVsc2UKPiA+ID4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgIHZhbCB8PSBDTlRMX0JHUjsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBp ZiAoZmItPnBhbmVsLT5iZ3JfY29ubmVjdGlvbikKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgIHZhbCBePSBDTlRMX0JHUjsKPiA+ID4gPiA+ID4gPiArICAgfQo+ID4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gPiArICAgc3dpdGNoICh2YXItPmJpdHNfcGVyX3BpeGVsKSB7Cj4gPiA+ ID4gPiA+ID4gKyAgIGNhc2UgMToKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICB2YWwgfD0gQ05U TF9MQ0RCUFAxOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIGJyZWFrOwo+ID4gPiA+ID4gPiA+ ICsgICBjYXNlIDI6Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgdmFsIHw9IENOVExfTENEQlBQ MjsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBicmVhazsKPiA+ID4gPiA+ID4gPiArICAgY2Fz ZSA0Ogo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgIHZhbCB8PSBDTlRMX0xDREJQUDQ7Cj4gPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgYnJlYWs7Cj4gPiA+ID4gPiA+ID4gKyAgIGNhc2UgODoKPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICB2YWwgfD0gQ05UTF9MQ0RCUFA4Owo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgIGJyZWFrOwo+ID4gPiA+ID4gPiA+ICsgICBjYXNlIDE2Ogo+ID4gPiA+ID4g PiA+ICsgICAgICAgICAgIC8qCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICogUEwxMTAgY2Fu bm90IGNob29zZSBiZXR3ZWVuIDU1NTEgYW5kIDU2NSBtb2RlcyBpbiBpdHMKPiA+ID4gPiA+ID4g PiArICAgICAgICAgICAgKiBjb250cm9sIHJlZ2lzdGVyLiAgSXQgaXMgcG9zc2libGUgdG8gdXNl IDU2NSB3aXRoCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICogY3VzdG9tIGV4dGVybmFsIHdp cmluZy4KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgKi8KPiA+ID4gPiA+ID4gPiArICAgICAg ICAgICBpZiAoYW1iYV9wYXJ0KGZiLT5kZXYpID09IDB4MTEwIHx8Cj4gPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgIHZhci0+Z3JlZW4ubGVuZ3RoID09IDUpCj4gPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICB2YWwgfD0gQ05UTF9MQ0RCUFAxNjsKPiA+ID4gPiA+ID4gPiArICAgICAg ICAgICBlbHNlIGlmICh2YXItPmdyZWVuLmxlbmd0aCA9PSA2KQo+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgdmFsIHw9IENOVExfTENEQlBQMTZfNTY1Owo+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgIGVsc2UKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIHZhbCB8PSBD TlRMX0xDREJQUDE2XzQ0NDsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBicmVhazsKPiA+ID4g PiA+ID4gPiArICAgY2FzZSAzMjoKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICB2YWwgfD0gQ05U TF9MQ0RCUFAyNDsKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICBicmVhazsKPiA+ID4gPiA+ID4g PiArICAgfQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgcmVncy0+Y250bCA9IHZh bDsKPiA+ID4gPiA+ID4gPiArICAgcmVncy0+cGl4Y2xvY2sgPSB2YXItPnBpeGNsb2NrOwo+ID4g PiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW5saW5l IGludCBjbGNkZmJfY2hlY2soc3RydWN0IGNsY2RfZmIgKmZiLCBzdHJ1Y3QgZmJfdmFyX3NjcmVl bmluZm8gKnZhcikKPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ICsgICB2YXItPnhyZXNf dmlydHVhbCA9IHZhci0+eHJlcyA9ICh2YXItPnhyZXMgKyAxNSkgJiB+MTU7Cj4gPiA+ID4gPiA+ ID4gKyAgIHZhci0+eXJlc192aXJ0dWFsID0gdmFyLT55cmVzID0gKHZhci0+eXJlcyArIDEpICYg fjE7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIENIRUNLKGUsbCxoKSAo dmFyLT5lIDwgbCB8fCB2YXItPmUgPiBoKQo+ID4gPiA+ID4gPiA+ICsgICBpZiAoQ0hFQ0socmln aHRfbWFyZ2luLCAoNSsxKSwgMjU2KSB8fCAgLyogYmFjayBwb3JjaCAqLwo+ID4gPiA+ID4gPiA+ ICsgICAgICAgQ0hFQ0sobGVmdF9tYXJnaW4sICg1KzEpLCAyNTYpIHx8ICAgLyogZnJvbnQgcG9y Y2ggKi8KPiA+ID4gPiA+ID4gPiArICAgICAgIENIRUNLKGhzeW5jX2xlbiwgKDUrMSksIDI1Nikg fHwKPiA+ID4gPiA+ID4gPiArICAgICAgIHZhci0+eHJlcyA+IDQwOTYgfHwKPiA+ID4gPiA+ID4g PiArICAgICAgIHZhci0+bG93ZXJfbWFyZ2luID4gMjU1IHx8ICAgICAgICAgIC8qIGJhY2sgcG9y Y2ggKi8KPiA+ID4gPiA+ID4gPiArICAgICAgIHZhci0+dXBwZXJfbWFyZ2luID4gMjU1IHx8ICAg ICAgICAgIC8qIGZyb250IHBvcmNoICovCj4gPiA+ID4gPiA+ID4gKyAgICAgICB2YXItPnZzeW5j X2xlbiA+IDMyIHx8Cj4gPiA+ID4gPiA+ID4gKyAgICAgICB2YXItPnlyZXMgPiAxMDI0KQo+ID4g PiA+ID4gPiA+ICsgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiA+ID4gPiA+ICsjdW5k ZWYgQ0hFQ0sKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKyAgIC8qIHNpbmdsZSBwYW5l bCBtb2RlOiBQQ0QgPSBtYXgoUENELCAxKSAqLwo+ID4gPiA+ID4gPiA+ICsgICAvKiBkdWFsIHBh bmVsIG1vZGU6IFBDRCA9IG1heChQQ0QsIDUpICovCj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiA+ICsgICAvKgo+ID4gPiA+ID4gPiA+ICsgICAgKiBZb3UgY2FuJ3QgY2hhbmdlIHRoZSBncmF5 c2NhbGUgc2V0dGluZywgYW5kCj4gPiA+ID4gPiA+ID4gKyAgICAqIHdlIGNhbiBvbmx5IGRvIG5v bi1pbnRlcmxhY2VkIHZpZGVvLgo+ID4gPiA+ID4gPiA+ICsgICAgKi8KPiA+ID4gPiA+ID4gPiAr ICAgaWYgKHZhci0+Z3JheXNjYWxlICE9IGZiLT5mYi52YXIuZ3JheXNjYWxlIHx8Cj4gPiA+ID4g PiA+ID4gKyAgICAgICAodmFyLT52bW9kZSAmIEZCX1ZNT0RFX01BU0spICE9IEZCX1ZNT0RFX05P TklOVEVSTEFDRUQpCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4g PiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIENIRUNLKGUpICh2YXItPmUgIT0g ZmItPmZiLnZhci5lKQo+ID4gPiA+ID4gPiA+ICsgICBpZiAoZmItPnBhbmVsLT5maXhlZHRpbWlu Z3MgJiYKPiA+ID4gPiA+ID4gPiArICAgICAgIChDSEVDSyh4cmVzKSAgICAgICAgICAgICAgICB8 fAo+ID4gPiA+ID4gPiA+ICsgICAgICAgIENIRUNLKHlyZXMpICAgICAgICAgICAgICAgIHx8Cj4g PiA+ID4gPiA+ID4gKyAgICAgICAgQ0hFQ0soYml0c19wZXJfcGl4ZWwpICAgICAgfHwKPiA+ID4g PiA+ID4gPiArICAgICAgICBDSEVDSyhwaXhjbG9jaykgICAgICAgICAgICB8fAo+ID4gPiA+ID4g PiA+ICsgICAgICAgIENIRUNLKGxlZnRfbWFyZ2luKSAgICAgICAgIHx8Cj4gPiA+ID4gPiA+ID4g KyAgICAgICAgQ0hFQ0socmlnaHRfbWFyZ2luKSAgICAgICAgfHwKPiA+ID4gPiA+ID4gPiArICAg ICAgICBDSEVDSyh1cHBlcl9tYXJnaW4pICAgICAgICB8fAo+ID4gPiA+ID4gPiA+ICsgICAgICAg IENIRUNLKGxvd2VyX21hcmdpbikgICAgICAgIHx8Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgQ0hF Q0soaHN5bmNfbGVuKSAgICAgICAgICAgfHwKPiA+ID4gPiA+ID4gPiArICAgICAgICBDSEVDSyh2 c3luY19sZW4pICAgICAgICAgICB8fAo+ID4gPiA+ID4gPiA+ICsgICAgICAgIENIRUNLKHN5bmMp KSkKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiA+ID4g PiArI3VuZGVmIENIRUNLCj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICB2YXItPm5v bnN0ZCA9IDA7Cj4gPiA+ID4gPiA+ID4gKyAgIHZhci0+YWNjZWxfZmxhZ3MgPSAwOwo+ID4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgcmV0dXJuIDA7Cj4gPiA+ID4gPiA+ID4gK30KPiA+ ID4gPiA+ID4gPgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gPiA+ID4gPiBkcmktZGV2ZWwgbWFpbGluZyBs aXN0Cj4gPiA+ID4gPiA+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ID4gPiA+ ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwKPiA+ID4gPiA+Cj4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gRGFuaWVsIFZldHRlcgo+ID4gPiA+ ID4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gPiA+ID4gPiBodHRwOi8v YmxvZy5mZndsbC5jaAo+ID4gPgo+ID4gPiAtLQo+ID4gPiBEYW5pZWwgVmV0dGVyCj4gPiA+IFNv ZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gPiBodHRwOi8vYmxvZy5mZnds bC5jaAo+ID4KPiA+IC0tCj4gPiBEYW5pZWwgVmV0dGVyCj4gPiBTb2Z0d2FyZSBFbmdpbmVlciwg SW50ZWwgQ29ycG9yYXRpb24KPiA+IGh0dHA6Ly9ibG9nLmZmd2xsLmNoCgoKCi0tIApEYW5pZWwg VmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5m ZndsbC5jaAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K bGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtYXJtLWtlcm5lbAo=