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=-9.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2BB56C4727E for ; Tue, 22 Sep 2020 21:30:59 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 C241420738 for ; Tue, 22 Sep 2020 21:30:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Pj5qOVxM" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C241420738 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5820E6E342; Tue, 22 Sep 2020 21:30:57 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 604B36E342 for ; Tue, 22 Sep 2020 21:30:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1600810248; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wMcbdg3OL7L4nWZgtpOymh/0pK9VUsln15fyBfQ/GWI=; b=Pj5qOVxMfuBr76rBPOC3afb9Wz/9yz2SKmu99diIEuxlqqA+4hozTUouJ8OXO7ZEi49x3P utW87vYdOcYDjJamz2m+bOw2QI3AxLld5a9pev9SC7gz6zt0oS80L/ddEja8cvodK/AJ7I UMaFCug1uAQm8pQBpwhqD6FoYo0L0O0= Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-95-3BR7m185PSaXDyhUhu8a8A-1; Tue, 22 Sep 2020 17:30:42 -0400 X-MC-Unique: 3BR7m185PSaXDyhUhu8a8A-1 Received: by mail-qk1-f200.google.com with SMTP id a2so14912946qkg.19 for ; Tue, 22 Sep 2020 14:30:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:organization:user-agent:mime-version :content-transfer-encoding; bh=wMcbdg3OL7L4nWZgtpOymh/0pK9VUsln15fyBfQ/GWI=; b=RNmNNYZZcjgZhYRt6jTNSkt+REI60XUu9Apk2bxdalUO0sI9SyEYtrjzztvNQYFtAB xe2flEPaqKgmWin3l/7SiprnrI2Rt2yPGwFgBfqi11J9MgEXMYEksV5YJ2ld1WwN0shD 00B7SpszLrVH/ysNLMQrKFvZajjtOIQKTERlEEjvpBfaOzsQ2ZA9Y+2KEIyz4UZsw8Kn iyO7p5cG3PkysJzOD74SvHS8FT7U5oVUOxAQqKPcUjCNR0tBg616ZuaT9d/gSb1YjWf2 0yvs5jWsUKVsAjAxWq9nX6bdeAwgpcbETlOJTPddkVMmMiCgNrUChEryAl09wGPDLmIu yxiA== X-Gm-Message-State: AOAM530PBOKhl/ntdjIyBv2W9n8xVJuN9JQKkb/XxKDQGQANvMPJFROJ ObSBGR6j0V0jmhmxpX8GipIIWP9IpqqcjTZhbLQoUaLj4A9w8lm4u14Spau8yhDS0Ctw6LUUURp PYxccYxiu4dFRKN0yCS0czjZJwF3t X-Received: by 2002:a37:6610:: with SMTP id a16mr6662247qkc.134.1600810241136; Tue, 22 Sep 2020 14:30:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxadCWQymNw7jDGAAG/XN93DJ3APDI9Zl3oX2US1BhpCsSEN+8GYZy3nYMIjQkNybAU65+0dA== X-Received: by 2002:a37:6610:: with SMTP id a16mr6662199qkc.134.1600810240530; Tue, 22 Sep 2020 14:30:40 -0700 (PDT) Received: from Ruby.lyude.net (pool-108-49-102-102.bstnma.fios.verizon.net. [108.49.102.102]) by smtp.gmail.com with ESMTPSA id k22sm12228360qkk.13.2020.09.22.14.30.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Sep 2020 14:30:38 -0700 (PDT) Message-ID: Subject: Re: [Intel-gfx] [PATCH] i915: Introduce quirk for shifting eDP brightness. From: Lyude Paul To: Puthikorn Voravootivat , Kevin Chowski Date: Tue, 22 Sep 2020 17:30:36 -0400 In-Reply-To: References: <20200917110838.1.I63d52f5b96d7e81e1e2dc2a72c4bf5fd84d3d3d0@changeid> <87o8m4uxcn.fsf@intel.com> <20200917182535.GC6112@intel.com> <20200917201102.GD6112@intel.com> Organization: Red Hat User-Agent: Evolution 3.36.5 (3.36.5-1.fc32) MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lyude@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: David Airlie , intel-gfx , LKML , dri-devel@lists.freedesktop.org, Wambui Karuga Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" SGkhIFNpbmNlIEkgZ290IGRyb3BwZWQgZnJvbSB0aGUgdGhyZWFkLCBtYW55IHJlc3BvbnNlcyBp bmxpbmUKCk9uIFR1ZSwgMjAyMC0wOS0yMiBhdCAxMjo1OCAtMDcwMCwgUHV0aGlrb3JuIFZvcmF2 b290aXZhdCB3cm90ZToKPiArTHl1ZGUKPiBJIG5vdGljZSB0aGF0IEx5dWRlIGVtYWlsIHdhcyBz b21laG93IGRyb3BwZWQgZnJvbSB0aGUgdGhyZWFkLgo+IEx5dWRlIHdhcyB0aGUgcGVyc29uIHdo byBzdWJtaXR0ZWQgdGhlIHBhdGNoIGZvciBUaGlua3BhZCBhbmQgc2hvdWxkCj4ga25vdyB0aGUg T1VJIG9mIHRoZSBwYW5lbC4KCm5vIG5lZWQgLSBjdXJyZW50bHkgYmVjYXVzZSBvZiBzb21lIGNv bmZ1c2lvbiB0aGF0IGdvdCBjYXVzZWQgYnkgdGhlIEludGVsIEhEUgpiYWNrbGlnaHQgaW50ZXJm YWNlIGJlaW5nIHRoZSBvbmx5IGJhY2tsaWdodCBpbnRlcmZhY2UgdGhhdCB3b3JrcyBwcm9wZXJs eSBvbgphIGxvdCBvZiBwYW5lbHMgKG1hbnkgcGFuZWxzIHdpbGwgYWR2ZXJ0aXNlIGJvdGggaW50 ZXJmYWNlcywgYnV0IG1pZ2h0IG9ubHkKd29yayB3aXRoIHRoZSBJbnRlbCBvbmUpLCB3ZSBhY3R1 YWxseSByZWx5IG9uIGEgc21hbGwgYWxsb3dsaXN0IG9mICJhcHByb3ZlZCIKcGFuZWxzIGZvciBl bmFibGluZyBEUENEIGJhY2tsaWdodCBjb250cm9sLgoK4oCmaG93ZXZlciwgbWFueSBvZiB0aGVz ZSBwYW5lbHMgYXJlIGFubm95aW5nIGFuZCBkb24ndCBhY3R1YWxseSBwcm92aWRlIGEKcmVsaWFi bGUgZW5vdWdoIE9VSUQgdG8gdXNlIGZvciBxdWlyayBkZXRlY3Rpb24sIHdoaWNoIGlzIHdoeSB3 ZSBoYWQgdG8gYWRkCkVESUQgcXVpcmsgZGV0ZWN0aW9uIGFzIGEgdGVtcG9yYXJ5IHdvcmthcm91 bmQgZm9yIHRoaXMuIFRoZSBjdXJyZW50IGxpc3Qgb2YKcGFuZWxzIGxpdmVzIGluIGRybV9kcF9o ZWxwZXIuYzoKCi8qCiAqIFNvbWUgZGV2aWNlcyBoYXZlIHVucmVsaWFibGUgT1VJRHMgd2hlcmUg dGhleSBkb24ndCBzZXQgdGhlIGRldmljZSBJRAogKiBjb3JyZWN0bHksIGFuZCBhcyBhIHJlc3Vs dCB3ZSBuZWVkIHRvIHVzZSB0aGUgRURJRCBmb3IgZmluZGluZyBhZGRpdGlvbmFsCiAqIERQIHF1 aXJrcyBpbiBzdWNoIGNhc2VzLgogKi8Kc3RhdGljIGNvbnN0IHN0cnVjdCBlZGlkX3F1aXJrIGVk aWRfcXVpcmtfbGlzdFtdID0gewoJLyogT3B0aW9uYWwgNEsgQU1PTEVEIHBhbmVsIGluIHRoZSBU aGlua1BhZCBYMSBFeHRyZW1lIDJuZCBHZW5lcmF0aW9uCgkgKiBvbmx5IHN1cHBvcnRzIERQQ0Qg YmFja2xpZ2h0IGNvbnRyb2xzCgkgKi8KCXsgTUZHKDB4NGMsIDB4ODMpLCBQUk9EX0lEKDB4NDEs IDB4NDEpLCBCSVQoRFBfUVVJUktfRk9SQ0VfRFBDRF9CQUNLTElHSFQpIH0sCgkvKgoJICogU29t ZSBEZWxsIENNTCAyMDIwIHN5c3RlbXMgaGF2ZSBwYW5lbHMgc3VwcG9ydCBib3RoIEFVWCBhbmQg UFdNCgkgKiBiYWNrbGlnaHQgY29udHJvbCwgYW5kIHNvbWUgb25seSBzdXBwb3J0IEFVWCBiYWNr bGlnaHQgY29udHJvbC4gQWxsCgkgKiBzYWlkIHBhbmVscyBzdGFydCB1cCBpbiBBVVggbW9kZSBi eSBkZWZhdWx0LCBhbmQgd2UgZG9uJ3QgaGF2ZSBhbnkKCSAqIHN1cHBvcnQgZm9yIGRpc2FibGlu ZyBIRFIgbW9kZSBvbiB0aGVzZSBwYW5lbHMgd2hpY2ggd291bGQgYmUKCSAqIHJlcXVpcmVkIHRv IHN3aXRjaCB0byBQV00gYmFja2xpZ2h0IGNvbnRyb2wgbW9kZSAocGx1cywgSSdtIG5vdAoJICog ZXZlbiBzdXJlIHdlIHdhbnQgUFdNIGJhY2tsaWdodCBjb250cm9scyBvdmVyIERQQ0QgYmFja2xp Z2h0CgkgKiBjb250cm9scyBhbnl3YXkuLi4pLiBVbnRpbCB3ZSBoYXZlIGEgYmV0dGVyIHdheSBv ZiBkZXRlY3RpbmcgdGhlc2UsCgkgKiBmb3JjZSBEUENEIGJhY2tsaWdodCBtb2RlIG9uIGFsbCBv ZiB0aGVtLgoJICovCgl7IE1GRygweDA2LCAweGFmKSwgUFJPRF9JRCgweDliLCAweDMyKSwgQklU KERQX1FVSVJLX0ZPUkNFX0RQQ0RfQkFDS0xJR0hUKSB9LAoJeyBNRkcoMHgwNiwgMHhhZiksIFBS T0RfSUQoMHhlYiwgMHg0MSksIEJJVChEUF9RVUlSS19GT1JDRV9EUENEX0JBQ0tMSUdIVCkgfSwK CXsgTUZHKDB4NGQsIDB4MTApLCBQUk9EX0lEKDB4YzcsIDB4MTQpLCBCSVQoRFBfUVVJUktfRk9S Q0VfRFBDRF9CQUNLTElHSFQpIH0sCgl7IE1GRygweDRkLCAweDEwKSwgUFJPRF9JRCgweGU2LCAw eDE0KSwgQklUKERQX1FVSVJLX0ZPUkNFX0RQQ0RfQkFDS0xJR0hUKSB9LAoJeyBNRkcoMHg0Yywg MHg4MyksIFBST0RfSUQoMHg0NywgMHg0MSksIEJJVChEUF9RVUlSS19GT1JDRV9EUENEX0JBQ0tM SUdIVCkgfSwKfTsKCkFsc28gbm90ZSB0aGF0IEkgdGhpbmsganVzdCBhYm91dCBldmVyeSBwYW5l bCBvbiB0aGF0IGxpc3Qgc3VwcG9ydHMgdGhlIEludGVsCkhEUiBiYWNrbGlnaHQgaW50ZXJmYWNl LCBzbyBpdCdzIC1wb3NzaWJsZS0gdGhhdCB0aGUgVkVTQSBpbnRlcmZhY2UgY291bGQgYmUKYnJv a2VuIG9uIHRoZXNlIHBhbmVscy4gQnV0LCB0aGF0IHdvdWxkIGJlIGEgbG90IG9mIGRpZmZlcmVu dCBwYW5lbHMgZnJvbQpkaWZmZXJlbnQgdmVuZG9ycyB0byBhbGwgYmUgYnJva2VuIGluIHRoZSBz YW1lIHdheS4KCj4gCj4gT24gVHVlLCBTZXAgMjIsIDIwMjAgYXQgMTE6NDcgQU0gS2V2aW4gQ2hv d3NraSA8Y2hvd3NraUBjaHJvbWl1bS5vcmc+IHdyb3RlOgo+ID4gQWxyaWdodHksIEknbGwgdGFr ZSBldmVyeW9uZSBlbHNlJ3Mgc2lsZW5jZSBhcyB0YWNpdCBhcHByb3ZhbCBvZgo+ID4gVmlsbGUn cyBvcGluaW9ucy4gKEkgZGlkbid0IHJlY2VpdmUgYW55IGVtYWlsIGJvdW5jZXMgdGhpcyB0aW1l LCBzbyBJCj4gPiB0aGluayBteSBpc3N1ZSB3YXMgdHJhbnNpZW50LikgSSB3aWxsIHN0YXJ0IG9u IGludmVydGluZyB0aGUgcXVpcmsgYW5kCj4gPiBtYWtpbmcgdGhlIG1vc3Qtc2lnbmlmaWNhbnQt YWxpZ25tZW50IG1hdHRlciBmb3IgdGhlc2UgcmVnaXN0ZXJzIGJ5Cj4gPiBkZWZhdWx0Lgo+ID4g Cj4gPiBXaG8gY2FuIGhlbHAgbWUgZ2F0aGVyIGEgbGlzdCBvZiBPVUlzIHRoYXQgd2UgbmVlZCB0 byBhZGQgdG8gdGhlCj4gPiBxdWlyaz8gSSBjYW4gZm9sbG93IHVwIHdpdGggUHV0aGlrb3JuIGFi b3V0IHRoZSByZWxldmFudCBDaHJvbWVib29rcywKPiA+IGJ1dCBJIGRvbid0IGtub3cgd2hhdCBv dGhlciB0eXBlcyBvZiBsYXB0b3BzIGFyZSB1c2luZyB0aGlzIGRyaXZlci4KPiA+IAo+ID4gVGhh bmtzIGZvciB5b3VyIHRpbWUsCj4gPiBLZXZpbiBDaG93c2tpCj4gPiAKPiA+IAo+ID4gT24gRnJp LCBTZXAgMTgsIDIwMjAgYXQgMTI6MTYgUE0gUHV0aGlrb3JuIFZvcmF2b290aXZhdAo+ID4gPHB1 dGhpa0BjaHJvbWl1bS5vcmc+IHdyb3RlOgo+ID4gPiBJJ2xsIGRlZmVyIHRvIFZpbGxlICYgTHl1 ZGUuCj4gPiA+IAo+ID4gPiBJIGR1ZyB1cCBtb3JlIG9uIHRoZSBidWcgcmVwb3J0IGFuZCBmb3Vu ZCB0aGF0IGJvdGggVGhpbmtwYWQgYW5kCj4gPiA+IEdhbGF4eSBDaHJvbWVib29rIHVzZSB0aGUg c2FtZSBTYW1zdW5nIE9MRUQuCj4gPiA+IFNvIG15IDIgdnMgMSBhcmd1bWVudCBpcyBhY3R1YWxs eSBub3QgdmFsaWQuCj4gPiA+IAo+ID4gPiBPbiBGcmksIFNlcCAxOCwgMjAyMCBhdCAxMDo1OSBB TSBLZXZpbiBDaG93c2tpIDxjaG93c2tpQGNocm9taXVtLm9yZz4KPiA+ID4gd3JvdGU6Cj4gPiA+ ID4gQXBvbG9naWVzIG9uY2UgYWdhaW4sIHNvbWUgb2YgbXkgZW1haWxzIHdlcmUgYm91bmNpbmcg Zm9yIHNvbWUKPiA+ID4gPiBhZGRyZXNzZXMgeWVzdGVyZGF5LiBIb3BlZnVsbHkgaXQgd2FzIGEg dGVtcG9yYXJ5IGNvbmRpdGlvbjsgSSdsbAo+ID4gPiA+IGNvbnRpbnVlIHRyeWluZyB0byBkaWcg aW50byBpdCBvbiBteSBlbmQgaWYgaXQgaGFwcGVucyBhZ2FpbiBmb3IgdGhpcwo+ID4gPiA+IGVt YWlsLgo+ID4gPiA+IAo+ID4gPiA+IFNpbmNlIHRoZXJlJ3MgZXZpZGVuY2UgdGhhdCBzb21lIG1v ZGVscyB3YW50IGxzYiBhbmQgc29tZSAod2VsbCwgYXQKPiA+ID4gPiBsZWFzdCBvbmUpIHdhbnQg bXNiLCBteSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgd2UnbGwgbmVlZCBhIHF1aXJrIG9uZQo+ID4g PiA+IHdheSBvciB0aGUgb3RoZXIgKHBsZWFzZSBjb3JyZWN0IGlmIEknbSBtaXN0YWtlbikuIEkg dW5mb3J0dW5hdGVseQo+ID4gPiA+IGRvbid0IGhhdmUgdGhlIGFiaWxpdHkgdG8gdGVzdCBhbnl0 aGluZyBvdGhlciB0aGFuIHRoZSBQaXhlbGJvb2ssIHNvCj4gPiA+ID4gaWYgd2UgZGVjaWRlIHRo ZSBtc2IgaXMgdGhlICJyaWdodCIgd2F5LCB0aGVuIEkgd2lsbCBoYXZlIHRvIHJlbHkgb24KPiA+ ID4gPiBvdGhlcnMgdG8gdGVzdCAoYW5kIGZpbmQgdGhlIE9VSSBvZikgb3RoZXIgbW9kZWxzIHdo aWNoIHJlcXVpcmUgbHNiLgo+ID4gPiA+IAo+ID4gPiA+IEkgYW0gaGFwcHkgdG8gbWFrZSBhbnkg Y2hhbmdlcyByZXF1ZXN0ZWQsIGJ1dCBJIGRvIG5vdCBhdCBhbGwgaGF2ZQo+ID4gPiA+IGVub3Vn aCBiYWNrZ3JvdW5kIGhlcmUgdG8gbWFrZSB0aGUgZGVjaXNpb24gb24gd2hldGhlciB0aGUgbXNi Cj4gPiA+ID4gZnVuY3Rpb25hbGl0eSBkZXNlcnZlcyB0aGUgcXVpcmsgb3IgaWYgdGhlIGxzYiBv bmUgZG9lcy4gSG93IGNhbiBJCj4gPiA+ID4gaGVscCB5b3UgYWxsIGNvbWUgdG8gYW4gYWdyZWVt ZW50IGhlcmU/Cj4gPiA+ID4gCj4gPiA+ID4gKiBJdCBzZWVtcyBsaWtlIFZpbGxlIGZlZWxzIHN0 cm9uZ2x5IGFib3V0IHRoZSBtc2IgYmVpbmcgdGhlIGNvcnJlY3QKPiA+ID4gPiBpbnRlcnByZXRh dGlvbiBvZiB0aGUgc3BlYy4KPiA+ID4gPiAqIEl0J3MgdW5jbGVhciB0byBtZSBvbiB3aGljaCBz aWRlIG9mIHRoZSBmZW5jZSBMeXVkZSBmYWxscywgSQo+ID4gPiA+IGNvdWxkbid0IHBpY2sgdXAg YSBzdHJvbmcgb3BpbmlvbiBpbiBoZXIgY2xhcmlmeWluZyBxdWVzdGlvbi4KPiA+ID4gPiAqIFB1 dGhpa29ybiBzZWVtcyB0byBiZSBvbiB0aGUgc2lkZSBvZiBsc2IgYmVpbmcgY29ycmVjdCwgYnV0 IG1heWJlCj4gPiA+ID4gd2FzIHN3YXllZCBieSBWaWxsZSdzIGFyZ3VtZW50LgoKSG9uZXN0bHkg SSdtIG5vdCBoYXJkIHRvIGNvbnZpbmNlIDpQLCBpZiBpdCBsb29rcyBsaWtlIHdlIGdvdCB0aGUg Yml0IHNoaWZ0Cndyb25nIGZvciB0aGUgbWFqb3JpdHkgb2YgZGV2aWNlcyBhbmQgZXZlcnlvbmUg ZWxzZSBhZ3JlZXMgdGhlbiBJJ20gZmluZSB3aXRoCmFzc3VtaW5nIHRoYXQncyB0aGUgY2FzZS4g SSdtIGp1c3QgcXVpdGUgc3VycHJpc2VkLCBzZWVpbmcgYXMgd2UndmUgdGVzdGVkCm1hbnkgZGlm ZmVyZW50IHBhbmVscyBmcm9tIGEgZmV3IHZlbmRvcnMgYW5kIGhhdmVuJ3QgcnVuIGludG8gYW55 IGlzc3VlcyB3aXRoCnRoaXMgYmVmb3JlLgoKSG9uZXN0bHkgLSBpZiB0aGVyZSdzIHRoaXMgbXVj aCB1bmNlcnRhaW50eSBhYm91dCBpdCwgbWF5YmUgd2Ugc2hvdWxkIGp1c3QgYXNrClZFU0EgZGly ZWN0bHkgd2hhdCB0aGUgY29ycmVjdCBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIGlzPyBOb3RlIEkn bSBub3Qgb24gdGhlClZFU0EgYm9hcmQgKEkgZ2V0IGFjY2VzcyB0byBEUC9lRFAgc3BlY3MgdGhy b3VnaCBYLm9yZykgc28gdW5sZXNzIHRoZSBjb250YWN0cwpJJ3ZlIGdvdCBmcm9tIFZFU0Egd291 bGQgd29yayAoQmlsbCBMZW1wZXNpcyBiaWxsIGF0IHZlc2EgZG90IG9yZykgZm9yIHRoYXQgaXQK bWlnaHQgYmUgYSBiZXR0ZXIgaWRlYSBmb3Igc29tZW9uZSBmcm9tIEdvb2dsZSBvciBJbnRlbCB0 byBhc2suCgo+ID4gPiA+IAo+ID4gPiA+IElmIG5vIG9uZSBmZWVscyB0aGF0IFZpbGxlJ3MgYXJn dW1lbnQgaXMgbm90IHN0cm9uZyBpbiBzb21lIHdheSwgYW5kCj4gPiA+ID4gd2UgZ28gd2l0aCB0 aGF0LCBJIHdpbGwgZ2V0IHRvIHdvcmsgb24gdGhlIHJlcXVlc3RlZCBjaGFuZ2VzLiBJIGFtCj4g PiA+ID4gY29uY2VybmVkLCB0aG91Z2gsIGFib3V0IGNoYW5naW5nIHRoZSBkZWZhdWx0IGZ1bmN0 aW9uYWxpdHkgd2l0aG91dAo+ID4gPiA+IHRlc3RpbmcgaXQgd2lkZWx5IHRvIGZpbmQgdGhlIHNl dCBvZiBsYXB0b3BzIHdoaWNoIHJlcXVpcmUgdGhlIGxzYgo+ID4gPiA+IHF1aXJrLiBJJ2QgYXBw cmVjaWF0ZSBhbnkgYWR2aWNlIHBlb3BsZSBtaWdodCBoYXZlIGFib3V0IG1ha2luZyB0aGlzCj4g PiA+ID4gY2hhbmdlIHNhZmVseS4KClVzdWFsbHksIEkganVzdCB0cnkgdG8gc3RpY2sgd2l0aCB3 aGF0IHRoZSBtYWpvcml0eSBvZiBtYWNoaW5lcyBuZWVkIHRvIGRvLiBJCnN0aWxsIHRoaW5rIGl0 J2QgYmUgYSBnb29kIGlkZWEgZm9yIHVzIHRvIHZlcmlmeSB0aGlzIHdpdGggVkVTQSBpZiB0aGVy ZSdzCnRoYXQgbXVjaCBjb25mdXNpb24gdGhvdWdoCgo+ID4gPiA+IAo+ID4gPiA+IFRoYW5rIHlv dSBmb3IgeW91ciB0aW1lLAo+ID4gPiA+IEtldmluCj4gPiA+ID4gCj4gPiA+ID4gT24gVGh1LCBT ZXAgMTcsIDIwMjAgYXQgMjoxMSBQTSBWaWxsZSBTeXJqw6Rsw6QKPiA+ID4gPiA8dmlsbGUuc3ly amFsYUBsaW51eC5pbnRlbC5jb20+IHdyb3RlOgo+ID4gPiA+ID4gT24gVGh1LCBTZXAgMTcsIDIw MjAgYXQgMDk6MjU6MzVQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gPiA+ID4g PiBPbiBUaHUsIFNlcCAxNywgMjAyMCBhdCAxMToxNDo0M0FNIC0wNzAwLCBQdXRoaWtvcm4gVm9y YXZvb3RpdmF0Cj4gPiA+ID4gPiA+IHdyb3RlOgo+ID4gPiA+ID4gPiA+IFRoZSBMeXVkZSBmZGU3 MjY2ZmIyZjYgY2hhbmdlIGlzIGFjdHVhbGx5IGJhc2VkIG9uIENocm9taXVtCj4gPiA+ID4gPiA+ ID4gY2hhbmdlCj4gPiA+ID4gPiA+ID4gKGh0dHBzOi8vY3JyZXYuY29tL2MvMTY1MDMyNSkgdGhh dCBmaXhlcyB0aGUgYnJpZ2h0bmVzcyBmb3IKPiA+ID4gPiA+ID4gPiBTYW1zdW5nCj4gPiA+ID4g PiA+ID4gR2FsYXh5IENocm9tZWJvb2suIFNvIGN1cnJlbnRseSB3ZSBoYXZlIDIgZXhhbXBsZXMg dGhhdCB1c2UgTFNCCj4gPiA+ID4gPiA+ID4gaW50ZXJwcmV0YXRpb24gYW5kIDEgdGhhdCB1c2Ug TVNCLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gIklmIGZpZWxkIDQ6MCBvZiB0aGUgRURQX1BX TUdFTl9CSVRfQ09VTlQgcmVnaXN0ZXIgcmVwcmVzZW50cyBhCj4gPiA+ID4gPiA+IHZhbHVlCj4g PiA+ID4gPiA+IG9mIGdyZWF0ZXIgdGhhbiA4IGFuZCB0aGUgQkFDS0xJR0hUX0JSSUdIVE5FU1Nf QllURV9DT1VOVCBiaXQKPiA+ID4gPiA+ID4gaXMgY2xlYXJlZCB0byAwLCBvbmx5IHRoZSA4IE1T QiBvZiB0aGUgYnJpZ2h0bmVzcyBjb250cm9sIHZhbHVlCj4gPiA+ID4gPiA+IGNhbiBiZQo+ID4g PiA+ID4gPiBjb250cm9sbGVkLgo+ID4gPiA+ID4gPiAoU2VlIE5vdGUgYmVsb3cuKQo+ID4gPiA+ ID4gPiBBc3NpZ25lZCBiaXRzIGFyZSBhbGxvY2F0ZWQgdG8gdGhlIE1TQiBvZiB0aGUgZW5hYmxl ZCByZWdpc3Rlcgo+ID4gPiA+ID4gPiBjb21iaW5hdGlvbi4iCj4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiBJIHRoaW5rIHRoYXQncyBwcmV0dHkgY2xlYXIgdGhlIGFzc2lnbmVkIGJpdHMgYXJlIHN1 cHBvc2VkIHRvIGJlCj4gPiA+ID4gPiA+IG1zYiBhbGlnbmVkLgo+ID4gPiA+ID4gCj4gPiA+ID4g PiBJIGd1ZXNzIHRoZXJlJ3Mgc29tZSBlbWFpbCBpc3N1ZXMgaGFwcGVuaW5nLCBidXQganVzdCB0 byBjbGFyaWZ5Ogo+ID4gPiA+ID4gCj4gPiA+ID4gPiBXaGVuIHRoZSBzcGVjIHNheXMgTVNCIGlu IGNhcHMgaGVyZSBpdCBjbGVhcmx5IG1lYW5zCj4gPiA+ID4gPiAibW9zdCBzaWduaWZpY2FudC1i aXQocykiIHNpbmNlIG90aGVyd2lzZSAiOCBNU0IiIHdvdWxkIG5vdCBtYWtlCj4gPiA+ID4gPiBh bnkgc2Vuc2UgaW4gdGhlIGNvbnRleHQgb2YgYSAyIGJ5dGUgdmFsdWUuCj4gPiA+ID4gPiAKPiA+ ID4gPiA+IEdyYW50ZWQgdGhlIHNwZWMgaXMgY3JhcCBoZXJlIHNpbmNlICJUYWJsZSAxLTE6IEFj cm9ueW1zIGFuZAo+ID4gPiA+ID4gSW5pdGlhbGlzbSIgZG9lcyBjbGFpbSAiTVNCIiBzaG91bGQg YmUgYnl0ZShzKSBhbmQgIm1zYiIgYml0KHMpLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBBbHNvIEkg Y2FuJ3QgaW1hZ2luZSBhbnlvbmUgd291bGQgYWxsb2NhdGUgdGhlIGJpdHMgc3RhcnRpbmcKPiA+ ID4gPiA+IGZyb20gdGhlIGxzYiB3aGVuIHRoZSB3aG9sZSB0aGluZyBpcyBjbGVhcmx5IHN1cHBv c2VkIHRvIGJlIGEKPiA+ID4gPiA+IDE2Yml0IGJpZyBlbmRpYW4gaW50ZWdlci4gU28gd2l0aCA+ OCBhc3NpZ25lZCBiaXRzIHlvdSdkIGVuZAo+ID4gPiA+ID4gdXAgd2l0aCBjcmF6eSBzdHVmZiBs aWtlIHRoaXM6Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IFsgNyAuLi4gMCBdWzcgICAuLi4gICAwXQo+ ID4gPiA+ID4gWyA4IE1TQiAgIF1bWFhYWF1bTiBMU0JdCj4gPiA+ID4gPiAKPiA+ID4gPiA+IHNv IHlvdSBjb3VsZG4ndCBldmVuIHRyZWF0IHRoZSB2YWx1ZSBhcyBhIHJlZ3VsYXIgYmlnIGVuZGlh bgo+ID4gPiA+ID4gdGhpbmcuIEluc3RlYWQsIGlmIHlvdSBzcXVpbnQgYSBiaXQsIGl0IG5vdyBs b29rcyBsaWtlIGEgZnVua3kKPiA+ID4gPiA+IGxpdHRsZSBlbmRpYW4gdmFsdWUuIFNvIHdlJ3Jl IGRlZXAgaW50byBzb21lIG1peGVkIGVuZGlhbiBsYW5kCj4gPiA+ID4gPiB3aGVyZSBub3RoaW5n IG1ha2VzIHNlbnNlIGFueW1vcmUuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEFueXdheXMgSSB0aGlu ayB0aGUgY29kZSBzaG91bGQgc2ltcGx5IGRvIHRoaXMgdG8gbWF0Y2ggdGhlIHNwZWM6Cj4gPiA+ ID4gPiB1MTYgdmFsdWUgPSBicmlnaHRuZXNzIDw8ICgxNiAtIG51bV9hc3NpZ25lZF9iaXRzKTsK PiA+ID4gPiA+IHZhbFswXSA9IHZhbHVlID4+IDg7Cj4gPiA+ID4gPiB2YWxbMV0gPSB2YWx1ZSAm IDB4ZmY7Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ IE9uIFRodSwgU2VwIDE3LCAyMDIwIGF0IDEwOjU1IEFNIEtldmluIENob3dza2kgPAo+ID4gPiA+ ID4gPiA+IGNob3dza2lAY2hyb21pdW0ub3JnPiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+IEFwb2xv Z2llcyBmb3IgYmVpbmcgdG9vIHZhZ3VlLiBUbyBiZSBhcyBwcmVjaXNlIEkgY2FuIGJlLCBoZXJl Cj4gPiA+ID4gPiA+ID4gPiBpcyB0aGUKPiA+ID4gPiA+ID4gPiA+IHNwZWNpZmljIGNvZGUgZGVs dGEgSSB0ZXN0ZWQ6IGh0dHBzOi8vY3JyZXYuY29tL2MvMjQwNjYxNiAuIFRvCj4gPiA+ID4gPiA+ ID4gPiBhbnN3ZXIKPiA+ID4gPiA+ID4gPiA+IHlvdXIgb3RoZXIgcXVlc3Rpb24sIHRoZSBjb2Rl IEkgdGVzdGVkIGFnYWluc3QgaXMgaW5kZWVkCj4gPiA+ID4gPiA+ID4gPiBpbmNsdWRpbmcgdGhl Cj4gPiA+ID4gPiA+ID4gPiBmZGU3MjY2ZmIyZjYgKGRlc3BpdGUgb3N0ZW5zaWJseSBiZWluZyBj YWxsZWQgNS40IGluIG15IGNvbW1pdAo+ID4gPiA+ID4gPiA+ID4gbWVzc2FnZSk6IG91ciBjdXJy ZW50IHRvcC1vZi10cmVlIGZvciBvdXIgNS40IGJyYW5jaCBpbmNsdWRlcwo+ID4gPiA+ID4gPiA+ ID4gdGhlCj4gPiA+ID4gPiA+ID4gPiBpbnRlbF9kcF9hdXhfY2FsY19tYXhfYmFja2xpZ2h0IGxv Z2ljLiBGdXJ0aGVyLCBJJ2xsIG5vdGUgdGhhdAo+ID4gPiA+ID4gPiA+ID4gY2hhbmdlCj4gPiA+ ID4gPiA+ID4gPiBpcyBleGFjdGx5IHRoZSBjaGFuZ2Ugd2hpY2ggYnJlYWtzIG15IFBpeGVsYm9v ayBtb2RlbDogcHJpb3IKPiA+ID4gPiA+ID4gPiA+IHRvIHRoZQo+ID4gPiA+ID4gPiA+ID4gY2hh bmdlLCB0aGUgbWF4X2JyaWdodG5lc3Mgd2FzIGhhcmQtY29kZWQgdG8gMHhGRkZGIGFuZCB0aGUK PiA+ID4gPiA+ID4gPiA+IG1hdGgKPiA+ID4gPiA+ID4gPiA+IHdvcmtlZCBvdXQgdGhhdCBpdCBk aWRuJ3QgbWF0dGVyIHRoYXQgdGhlIGhhcmR3YXJlIGNhcmVkIGFib3V0Cj4gPiA+ID4gPiA+ID4g PiB0aGUgTVNCCj4gPiA+ID4gPiA+ID4gPiBkZXNwaXRlIHRoZSBkcml2ZXIgY29kZSBjYXJpbmcg YWJvdXQgdGhlIExTQi4KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gVG8gYW5zd2Vy IFZpbGxlJ3MgcXVlc3Rpb246IHRoZSBmZGU3MjY2ZmIyZjYgY2hhbmdlIHdoaWNoCj4gPiA+ID4g PiA+ID4gPiBmaXhlcyBvbmUKPiA+ID4gPiA+ID4gPiA+IGxhcHRvcCAoSSBiZWxpZXZlIFRoaW5r cGFkIFgxIGV4dHJlbWUgR2VuIDIsIGZyb20gc29tZSBidWcKPiA+ID4gPiA+ID4gPiA+IHJlcG9y dHMgSQo+ID4gPiA+ID4gPiA+ID4gZHVnIHVwKSBhbmQgYnJlYWtzIGFub3RoZXIgKFBpeGVsYm9v ayk7IHNvIHVuZm9ydHVuYXRlbHkgSQo+ID4gPiA+ID4gPiA+ID4gYmVsaWV2ZSB3ZQo+ID4gPiA+ ID4gPiA+ID4gbmVlZCBhIHF1aXJrIGF0IGxlYXN0IGZvciBzb21lIGxhcHRvcC4gUmVhZGluZyB0 aHJvdWdoIHRoZQo+ID4gPiA+ID4gPiA+ID4gY29weSBvZiB0aGUKPiA+ID4gPiA+ID4gPiA+IGRh dGFzaGVldCBJIGhhdmUsIGl0IHdhc24ndCBjbGVhciB0byBtZSB3aGljaCB3YXMgdGhlIGNvcnJl Y3QKPiA+ID4gPiA+ID4gPiA+IGludGVycHJldGF0aW9uLiBJJ20gY2MnaW5nIHB1dGhpa0AsIHdo byB3YXMgbGVhbmluZyB0b3dhcmQgdGhlCj4gPiA+ID4gPiA+ID4gPiBjdXJyZW50Cj4gPiA+ID4g PiA+ID4gPiBrZXJuZWwgY29kZSAoY2FyaW5nIGFib3V0IExTQikgYmVpbmcgdGhlIGNvcnJlY3QK PiA+ID4gPiA+ID4gPiA+IGludGVycHJldGF0aW9uLiBJCj4gPiA+ID4gPiA+ID4gPiBiZWxpZXZl IHdlIGhhdmUgb3RoZXIgY2hyb21lYm9va3Mgd2hpY2ggZG8gcmVseSBvbiBMU0IKPiA+ID4gPiA+ ID4gPiA+IGZ1bmN0aW9uYWxpdHksCj4gPiA+ID4gPiA+ID4gPiBzbyB1bmxlc3Mgd2UgY2FuIGZp bmQgbW9yZSBleGFtcGxlcyBvZiBsYXB0b3BzIHdhbnRpbmcgTVNCIGl0Cj4gPiA+ID4gPiA+ID4g PiBjdXJyZW50bHkgbG9va3MgbGlrZSBQaXhlbGJvb2sgaXMgdGhlIG91dGxpZXIuCj4gPiA+ID4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IE9uIFRodSwgU2VwIDE3LCAyMDIwIGF0IDExOjI4IEFN IEphbmkgTmlrdWxhCj4gPiA+ID4gPiA+ID4gPiA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29t PiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+ID4gT24gVGh1LCAxNyBTZXAgMjAyMCwgS2V2aW4gQ2hv d3NraSA8Y2hvd3NraUBjaHJvbWl1bS5vcmc+Cj4gPiA+ID4gPiA+ID4gPiA+IHdyb3RlOgo+ID4g PiA+ID4gPiA+ID4gPiA+IFdlIGhhdmUgb2JzZXJ2ZWQgdGhhdCBHb29nbGUgUGl4ZWxib29rJ3Mg YmFja2xpZ2h0Cj4gPiA+ID4gPiA+ID4gPiA+ID4gaGFyZHdhcmUgaXMKPiA+ID4gPiA+ID4gPiA+ ID4gPiBpbnRlcnByZXR0aW5nIHRoZXNlIGJhY2tsaWdodCBiaXRzIGZyb20gdGhlIG1vc3QtCj4g PiA+ID4gPiA+ID4gPiA+ID4gc2lnbmlmaWNhbnQgc2lkZSBvZiB0aGUKPiA+ID4gPiA+ID4gPiA+ ID4gPiAxNiBiaXQgd29yZCAoaWYgRFBfRURQX1BXTUdFTl9CSVRfQ09VTlQgPCAxNiksIHdoZXJl YXMgdGhlCj4gPiA+ID4gPiA+ID4gPiA+ID4gZHJpdmVyIGNvZGUKPiA+ID4gPiA+ID4gPiA+ID4g PiBhc3N1bWVzIHRoZSBwZXJpcGhlcmFsIGNhcmVzIGFib3V0IHRoZSBsZWFzdC1zaWduaWZpY2Fu dAo+ID4gPiA+ID4gPiA+ID4gPiA+IGJpdHMuCj4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4g PiA+ID4gPiA+ID4gVGVzdGluZyB3YXMgZG9uZSBmcm9tIHdpdGhpbiBDaHJvbWUgT1MncyBidWls ZCBlbnZpcm9ubWVudAo+ID4gPiA+ID4gPiA+ID4gPiA+IHdoZW4gdGhlCj4gPiA+ID4gPiA+ID4g PiA+ID4gcGF0Y2ggaXMgYmFja3BvcnRlZCB0byA1LjQgKHRoZSB2ZXJzaW9uIHdlIGFyZSBuZXds eQo+ID4gPiA+ID4gPiA+ID4gPiA+IHRhcmdldGluZyBmb3IgdGhlCj4gPiA+ID4gPiA+ID4gPiA+ ID4gUGl4ZWxib29rKTsgZm9yIHRoZSByZWNvcmQ6Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgJCBl bWVyZ2UtZXZlLWtlcm5lbG5leHQgc3lzLWtlcm5lbC9jaHJvbWVvcy1rZXJuZWwtNV80Cj4gPiA+ ID4gPiA+ID4gPiA+ID4gJiYgXAo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIC4vdXBkYXRlX2tl cm5lbC5zaCAtLXJlbW90ZT0kSVAKPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ ID4gPiBJIHVzZWQgYC9zeXMva2VybmVsL2RlYnVnL2RyaS8wL2VEUC0xL2k5MTVfZHBjZGAgb24g bXkKPiA+ID4gPiA+ID4gPiA+ID4gPiBsYXB0b3AgdG8gdmVyaWZ5Cj4gPiA+ID4gPiA+ID4gPiA+ ID4gdGhhdCB0aGUgcmVnaXN0ZXJzIHdlcmUgYmVpbmcgc2V0IGFjY29yZGluZyB0byB3aGF0IHRo ZQo+ID4gPiA+ID4gPiA+ID4gPiA+IGFjdHVhbCBoYXJkd2FyZQo+ID4gPiA+ID4gPiA+ID4gPiA+ IGV4cGVjdHM7IEkgYWxzbyBvYnNlcnZlIHRoYXQgdGhlIGJhY2tsaWdodCBpcyBub3RpY2VhYmx5 Cj4gPiA+ID4gPiA+ID4gPiA+ID4gYnJpZ2h0ZXIgd2l0aAo+ID4gPiA+ID4gPiA+ID4gPiA+IHRo aXMgcGF0Y2guCj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiBJdCdzIHVuY2xl YXIgdG8gbWUgd2hhdCBrZXJuZWwgdmVyc2lvbiB0aGlzIGlzIGFnYWluc3QsIGFuZAo+ID4gPiA+ ID4gPiA+ID4gPiB3aGF0IHlvdSd2ZQo+ID4gPiA+ID4gPiA+ID4gPiBhY3R1YWxseSB0ZXN0ZWQu Cj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiBIYXZlIHlvdSB0cmllZCB2NS43 IGtlcm5lbCB3aXRoIEx5dWRlJ3MgZmRlNzI2NmZiMmY2Cj4gPiA+ID4gPiA+ID4gPiA+ICgiZHJt L2k5MTU6IEZpeCBlRFAKPiA+ID4gPiA+ID4gPiA+ID4gRFBDRCBhdXggbWF4IGJhY2tsaWdodCBj YWxjdWxhdGlvbnMiKT8KPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+IEkganVz dCB3YW50IHRvIG1ha2Ugc3VyZSB5b3UndmUgdGVzdGVkIHdpdGggYWxsIHRoZSByZWxldmFudAo+ ID4gPiA+ID4gPiA+ID4gPiBmaXhlcwo+ID4gPiA+ID4gPiA+ID4gPiBiZWZvcmUgYWRkaW5nIHF1 aXJrcy4KPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+IEJSLAo+ID4gPiA+ID4g PiA+ID4gPiBKYW5pLgo+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiBTaWdu ZWQtb2ZmLWJ5OiBLZXZpbiBDaG93c2tpIDxjaG93c2tpQGNocm9taXVtLm9yZz4KPiA+ID4gPiA+ ID4gPiA+ID4gPiAtLS0KPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiAg Li4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5jIHwgMzQKPiA+ID4g PiA+ID4gPiA+ID4gPiArKysrKysrKysrKysrKysrKysrCj4gPiA+ID4gPiA+ID4gPiA+ID4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcXVpcmtzLmMgICB8IDEzCj4gPiA+ID4g PiA+ID4gPiA+ID4gKysrKysrKwo+ID4gPiA+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgMSArCj4gPiA+ID4gPiA+ID4gPiA+ID4g IDMgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKQo+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQKPiA+ID4gPiA+ID4gPiA+ID4gPiBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5jCj4gPiA+ID4g PiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX2F1eF9i YWNrbGlnaHQuYwo+ID4gPiA+ID4gPiA+ID4gPiA+IGluZGV4IGFjYmQ3ZWI2NmNiZTMuLjk5Yzk4 ZjIxNzM1NmQgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gPiA+ ID4gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX2F1eF9iYWNrbGlnaHQu Ywo+ID4gPiA+ID4gPiA+ID4gPiA+ICsrKwo+ID4gPiA+ID4gPiA+ID4gPiA+IGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF9hdXhfYmFja2xpZ2h0LmMKPiA+ID4gPiA+ID4g PiA+ID4gPiBAQCAtOTEsNiArOTEsMjMgQEAgc3RhdGljIHUzMgo+ID4gPiA+ID4gPiA+ID4gPiA+ IGludGVsX2RwX2F1eF9nZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IKPiA+ID4g PiA+ID4gPiA+ID4gPiAqY29ubmVjdG9yKQo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIGlmIChp bnRlbF9kcC0+ZWRwX2RwY2RbMl0gJgo+ID4gPiA+ID4gPiA+ID4gPiA+IERQX0VEUF9CQUNLTElH SFRfQlJJR0hUTkVTU19CWVRFX0NPVU5UKQo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgICAg ICAgbGV2ZWwgPSAocmVhZF92YWxbMF0gPDwgOCB8IHJlYWRfdmFsWzFdKTsKPiA+ID4gPiA+ID4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICBpZiAoaTkxNS0+cXVpcmtzICYKPiA+ ID4gPiA+ID4gPiA+ID4gPiBRVUlSS19TSElGVF9FRFBfQkFDS0xJR0hUX0JSSUdIVE5FU1MpIHsK PiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgIGlmICghZHJtX2RwX2RwY2RfcmVhZGIo JmludGVsX2RwLT5hdXgsCj4gPiA+ID4gPiA+ID4gPiA+ID4gRFBfRURQX1BXTUdFTl9CSVRfQ09V TlQsCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZyZWFkX3ZhbFswXQo+ID4gPiA+ID4gPiA+ID4gPiA+ICkpIHsKPiA+ID4g PiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiRmFpbGVk IHRvIHJlYWQgRFBDRAo+ID4gPiA+ID4gPiA+ID4gPiA+IHJlZ2lzdGVyIDB4JXhcbiIsCj4gPiA+ ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUF9F RFBfUFdNR0VOX0JJVF9DTwo+ID4gPiA+ID4gPiA+ID4gPiA+IFVOVCk7Cj4gPiA+ID4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ID4gPiA+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgLy8gT25s eSBiaXRzIDQ6MCBhcmUgdXNlZCwgNzo1IGFyZSByZXNlcnZlZC4KPiA+ID4gPiA+ID4gPiA+ID4g PiArICAgICAgICAgICAgIHJlYWRfdmFsWzBdID0gcmVhZF92YWxbMF0gJiAweDFGOwo+ID4gPiA+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgaWYgKHJlYWRfdmFsWzBdID4gMTYpIHsKPiA+ID4g PiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiSW52YWxp ZAo+ID4gPiA+ID4gPiA+ID4gPiA+IERQX0VEUF9QV05HRU5fQklUX0NPVU5UIDB4JVgsIGV4cGVj dGVkIGF0IG1vc3QgMTZcbiIsCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdmFsWzBdKQo+ID4gPiA+ID4gPiA+ID4g PiA+IDsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7 Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICB9Cj4gPiA+ID4gPiA+ID4gPiA+ID4g KyAgICAgICAgICAgICBsZXZlbCA+Pj0gMTYgLSByZWFkX3ZhbFswXTsKPiA+ID4gPiA+ID4gPiA+ ID4gPiArICAgICB9Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiA+ICAg ICAgIHJldHVybiBsZXZlbDsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4g PiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+IEBAIC0xMDYsNiArMTIzLDIzIEBAIGludGVsX2RwX2F1 eF9zZXRfYmFja2xpZ2h0KGNvbnN0Cj4gPiA+ID4gPiA+ID4gPiA+ID4gc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsIHUzMiBsZXYKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAg ICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9Cj4gPiA+ID4gPiA+ID4gPiA+ID4gZHBf dG9faTkxNShpbnRlbF9kcCk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgdTggdmFsc1syXSA9 IHsgMHgwIH07Cj4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAg aWYgKGk5MTUtPnF1aXJrcyAmCj4gPiA+ID4gPiA+ID4gPiA+ID4gUVVJUktfU0hJRlRfRURQX0JB Q0tMSUdIVF9CUklHSFRORVNTKSB7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBp ZiAoIWRybV9kcF9kcGNkX3JlYWRiKCZpbnRlbF9kcC0+YXV4LAo+ID4gPiA+ID4gPiA+ID4gPiA+ IERQX0VEUF9QV01HRU5fQklUX0NPVU5ULAo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsc1swXSkpIHsKPiA+ID4gPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRv IHdyaXRlIGF1eAo+ID4gPiA+ID4gPiA+ID4gPiA+IGJhY2tsaWdodCBsZXZlbDogRmFpbGVkIHRv IHJlYWQgRFBDRCByZWdpc3RlciAweCV4XG4iLAo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUF9FRFBfUFdNR0VOX0JJVF8KPiA+ID4g PiA+ID4gPiA+ID4gPiBDT1VOVCk7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIHJldHVybjsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgIH0KPiA+ID4g PiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgIC8vIE9ubHkgYml0cyA0OjAgYXJlIHVzZWQsIDc6 NSBhcmUgcmVzZXJ2ZWQuCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICB2YWxzWzBd ID0gdmFsc1swXSAmIDB4MUY7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICBpZiAo dmFsc1swXSA+IDE2KSB7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg IERSTV9ERUJVR19LTVMoIkZhaWxlZCB0byB3cml0ZSBhdXgKPiA+ID4gPiA+ID4gPiA+ID4gPiBi YWNrbGlnaHQgbGV2ZWw6IEludmFsaWQgRFBfRURQX1BXTkdFTl9CSVRfQ09VTlQgMHglWCwKPiA+ ID4gPiA+ID4gPiA+ID4gPiBleHBlY3RlZCBhdCBtb3N0IDE2XG4iLAo+ID4gPiA+ID4gPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxzWzBd KTsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4g PiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgbGV2ZWwgPDw9ICgxNiAtIHZhbHNbMF0pICYgMHhGRkZGOwo+ID4gPiA+ID4gPiA+ ID4gPiA+ICsgICAgIH0KPiA+ID4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiA+ID4g ICAgICAgdmFsc1swXSA9IGxldmVsOwo+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ ID4gPiA+ICAgICAgIC8qIFdyaXRlIHRoZSBNU0IgYW5kL29yIExTQiAqLwo+ID4gPiA+ID4gPiA+ ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3F1 aXJrcy5jCj4gPiA+ID4gPiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX3F1aXJrcy5jCj4gPiA+ID4gPiA+ID4gPiA+ID4gaW5kZXggNDZiZWIxNTVkODM1Zi4u NjNiMjdkNDliMjg2NCAxMDA2NDQKPiA+ID4gPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3F1aXJrcy5jCj4gPiA+ID4gPiA+ID4gPiA+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9xdWlya3MuYwo+ID4gPiA+ID4g PiA+ID4gPiA+IEBAIC01Myw2ICs1MywxNiBAQCBzdGF0aWMgdm9pZAo+ID4gPiA+ID4gPiA+ID4g PiA+IHF1aXJrX2luY3JlYXNlX2RkaV9kaXNhYmxlZF90aW1lKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlCj4gPiA+ID4gPiA+ID4gPiA+ID4gKmk5MTUpCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAg ZHJtX2luZm8oJmk5MTUtPmRybSwgIkFwcGx5aW5nIEluY3JlYXNlIERESSBEaXNhYmxlZAo+ID4g PiA+ID4gPiA+ID4gPiA+IHF1aXJrXG4iKTsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ICsvKgo+ID4gPiA+ID4gPiA+ID4gPiA+ ICsgKiBTb21lIGVEUCBiYWNrbGlnaHQgaGFyZHdhcmUgdXNlcyB0aGUgbW9zdC1zaWduaWZpY2Fu dAo+ID4gPiA+ID4gPiA+ID4gPiA+IGJpdHMgb2YgdGhlIGJyaWdodG5lc3MKPiA+ID4gPiA+ID4g PiA+ID4gPiArICogcmVnaXN0ZXIsIHNvIGJyaWdodG5lc3MgdmFsdWVzIG11c3QgYmUgc2hpZnRl ZCBmaXJzdC4KPiA+ID4gPiA+ID4gPiA+ID4gPiArICovCj4gPiA+ID4gPiA+ID4gPiA+ID4gK3N0 YXRpYyB2b2lkIHF1aXJrX3NoaWZ0X2VkcF9iYWNrbGlnaHRfYnJpZ2h0bmVzcyhzdHJ1Y3QKPiA+ ID4gPiA+ID4gPiA+ID4gPiBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ID4gPiA+ID4gPiA+ID4g PiA+ICt7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgaTkxNS0+cXVpcmtzIHw9Cj4gPiA+ID4g PiA+ID4gPiA+ID4gUVVJUktfU0hJRlRfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTOwo+ID4gPiA+ ID4gPiA+ID4gPiA+ICsgICAgIERSTV9JTkZPKCJBcHBseWluZyBzaGlmdCBlRFAgYmFja2xpZ2h0 IGJyaWdodG5lc3MKPiA+ID4gPiA+ID4gPiA+ID4gPiBxdWlya1xuIik7Cj4gPiA+ID4gPiA+ID4g PiA+ID4gK30KPiA+ID4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiA+ID4gIHN0cnVj dCBpbnRlbF9xdWlyayB7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgaW50IGRldmljZTsKPiA+ ID4gPiA+ID4gPiA+ID4gPiAgICAgICBpbnQgc3Vic3lzdGVtX3ZlbmRvcjsKPiA+ID4gPiA+ID4g PiA+ID4gPiBAQCAtMTU2LDYgKzE2Niw5IEBAIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfcXVpcmsKPiA+ ID4gPiA+ID4gPiA+ID4gPiBpbnRlbF9xdWlya3NbXSA9IHsKPiA+ID4gPiA+ID4gPiA+ID4gPiAg ICAgICAvKiBBU1JvY2sgSVRYKi8KPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICB7IDB4MzE4NSwg MHgxODQ5LCAweDIyMTIsCj4gPiA+ID4gPiA+ID4gPiA+ID4gcXVpcmtfaW5jcmVhc2VfZGRpX2Rp c2FibGVkX3RpbWUgfSwKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICB7IDB4MzE4NCwgMHgxODQ5 LCAweDIyMTIsCj4gPiA+ID4gPiA+ID4gPiA+ID4gcXVpcmtfaW5jcmVhc2VfZGRpX2Rpc2FibGVk X3RpbWUgfSwKPiA+ID4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAg LyogR29vZ2xlIFBpeGVsYm9vayAqLwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgIHsgMHg1OTFF LCAweDgwODYsIDB4MjIxMiwKPiA+ID4gPiA+ID4gPiA+ID4gPiBxdWlya19zaGlmdF9lZHBfYmFj a2xpZ2h0X2JyaWdodG5lc3MgfSwKPiA+ID4gPiA+ID4gPiA+ID4gPiAgfTsKPiA+ID4gPiA+ID4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiAgdm9pZCBpbnRlbF9pbml0X3F1aXJrcyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiA+ID4gPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiA+ID4gPiA+ID4gPiA+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiA+ID4gPiA+ID4gPiA+IGluZGV4 IGU0ZjdmNjUxODk0NWIuLmNjOTNiZWRlNGZhYjggMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gPiA+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiA+ID4gPiA+ID4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gPiA+ID4gPiA+ID4g PiBAQCAtNTI1LDYgKzUyNSw3IEBAIHN0cnVjdCBpOTE1X3BzciB7Cj4gPiA+ID4gPiA+ID4gPiA+ ID4gICNkZWZpbmUgUVVJUktfUElOX1NXSVpaTEVEX1BBR0VTICgxPDw1KQo+ID4gPiA+ID4gPiA+ ID4gPiA+ICAjZGVmaW5lIFFVSVJLX0lOQ1JFQVNFX1QxMl9ERUxBWSAoMTw8NikKPiA+ID4gPiA+ ID4gPiA+ID4gPiAgI2RlZmluZSBRVUlSS19JTkNSRUFTRV9ERElfRElTQUJMRURfVElNRSAoMTw8 NykKPiA+ID4gPiA+ID4gPiA+ID4gPiArI2RlZmluZSBRVUlSS19TSElGVF9FRFBfQkFDS0xJR0hU X0JSSUdIVE5FU1MgKDE8PDgpCj4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ ID4gIHN0cnVjdCBpbnRlbF9mYmRldjsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgc3RydWN0IGludGVs X2ZiY193b3JrOwo+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gLS0KPiA+ID4g PiA+ID4gPiA+ID4gSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIEdyYXBoaWNzIENlbnRl cgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gLS0KPiA+ID4gPiA+ID4gVmlsbGUgU3lyasOkbMOk Cj4gPiA+ID4gPiA+IEludGVsCj4gPiA+ID4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCj4gPiA+ID4gPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QK PiA+ID4gPiA+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gPiA+ID4gPiBo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+ ID4gPiA+ID4gCj4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gVmlsbGUgU3lyasOkbMOkCj4gPiA+ID4g PiBJbnRlbAotLSAKQ2hlZXJzLAoJTHl1ZGUgUGF1bCAoc2hlL2hlcikKCVNvZnR3YXJlIEVuZ2lu ZWVyIGF0IFJlZCBIYXQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=