From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1B1F3C02188 for ; Sun, 19 Jan 2025 20:15:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=A5WwTxWKJtUGwDNL2YoeTdvbEEWbKsBnipf/z0ky3Hw=; b=hAJar1uXqYNObd sYJGGePV4fV2EomsM1XPEaEZtQ/2WPkp6xdKkizZHUSPehOPf99GzzHIABXUp3fkbuXReZZYxNnSh II75pWql3DzhqnkPJYNptpdixHCdEGW5Eidz04DzArhPL6fmHNWZ2L0oLqTk90qqoGcTme+YI8L0X mMuzNm+PKJ4KUbHO6J+LKcLQYbFjsU8lIOWEha90ZXa2EtTyGoOW1zbtvmYM1txCU1NOO8EnFih4F +FPN4xDIlUJYycyW2nEkkj2Vd4uC+TyLPFWYD+tADzO826VZMDxjfut6t2VwfFUPvxYlT5StqgOEf cMAmilUQll0QcKwNz9/g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tZbh9-00000004J2i-1vWo; Sun, 19 Jan 2025 20:14:55 +0000 Received: from perceval.ideasonboard.com ([213.167.242.64]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tZbh6-00000004J1H-1ugn; Sun, 19 Jan 2025 20:14:53 +0000 Received: from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi [81.175.209.231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 85456928; Sun, 19 Jan 2025 21:13:48 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1737317628; bh=Ur5TiuDT0KV1E3ES7k+/3Zr4hEwwAAPuNmpmijHxcE0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=SS+99s7tpuo+gPcxMER5jdDaof5TicjCpzG4c3b8L9QjuYGIwEIGNxOpvhm9TbJ1K WDQ8UU3Os41Ewzy+4kV7y7CeQXv55XGw/jZbTqWOQI9B6aQfo6jbIU+WwUmbNEjidS k9ILi43LKurT0oL3MNbHe4TD8sUVaA21oTrP0eCY= Date: Sun, 19 Jan 2025 22:14:43 +0200 From: Laurent Pinchart To: Sui Jingfeng Cc: Tomi Valkeinen , Dmitry Baryshkov , Geert Uytterhoeven , Thomas Zimmermann , maarten.lankhorst@linux.intel.com, mripard@kernel.org, airlied@gmail.com, simona@ffwll.ch, dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, freedreno@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, imx@lists.linux.dev, linux-samsung-soc@vger.kernel.org, nouveau@lists.freedesktop.org, virtualization@lists.linux.dev, spice-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-tegra@vger.kernel.org, intel-xe@lists.freedesktop.org, xen-devel@lists.xenproject.org, Andy Yan , Daniel Stone Subject: Re: [PATCH v2 25/25] drm/xlnx: Compute dumb-buffer sizes with drm_mode_size_dumb() Message-ID: <20250119201443.GB2467@pendragon.ideasonboard.com> References: <8234927e-0d12-4655-813d-8ec94179b737@linux.dev> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <8234927e-0d12-4655-813d-8ec94179b737@linux.dev> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250119_121452_655237_91E71544 X-CRM114-Status: GOOD ( 44.52 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org T24gTW9uLCBKYW4gMjAsIDIwMjUgYXQgMTI6MjY6MzBBTSArMDgwMCwgU3VpIEppbmdmZW5nIHdy b3RlOgo+IE9uIDIwMjUvMS8xOSAyMzoyMiwgVG9taSBWYWxrZWluZW4gd3JvdGU6Cj4gPiBPbiAx OS8wMS8yMDI1IDE2OjU5LCBTdWkgSmluZ2Zlbmcgd3JvdGU6Cj4gPgo+ID4+Pj4+IEJ1dCB1c2Vy c3BhY2UgbXVzdCBiZSBhYmxlIHRvIGNvbnRpbnVlIGFsbG9jYXRpbmcgWVVWIGJ1ZmZlcnMgdGhy b3VnaAo+ID4+Pj4+IENSRUFURV9EVU1CLgo+ID4+Pj4KPiA+Pj4+IEkgdGhpbmssIGFsbG9jYXRp bmcgWVVWIGJ1ZmZlcnMgdGhyb3VnaCBDUkVBVEVfRFVNQiBpbnRlcmZhY2UgaXMganVzdAo+ID4+ Pj4gYW4gKmFidXNlKiBhbmQgKm1pc3VzZSogb2YgdGhpcyBBUEkgZm9yIG5vdy4KPiA+Pj4+Cj4g Pj4+PiBUYWtlIHRoZSBOVjEyIGZvcm1hdCBhcyBhbiBleGFtcGxlLCBOVjEyIGlzIFlVVjQyMCBw bGFuYXIgZm9ybWF0LCBoYXZlCj4gPj4+PiB0d28gcGxhbmFyOiB0aGUgWS1wbGFuYXIgYW5kIHRo ZSBVVi1wbGFuYXIuIFRoZSBZLXBsYW5hciBhcHBlYXIgZmlyc3QKPiA+Pj4+IGluIG1lbW9yeSBh cyBhbiBhcnJheSBvZiB1bnNpZ25lZCBjaGFyIHZhbHVlcy4gVGhlIFktcGxhbmFyIGlzIGZvbGxv d2VkCj4gPj4+PiBpbW1lZGlhdGVseSBieSB0aGUgVVYtcGxhbmFyLCB3aGljaCBpcyBhbHNvIGFu IGFycmF5IG9mIHVuc2lnbmVkIGNoYXIKPiA+Pj4+IHZhbHVlcyB0aGF0IGNvbnRhaW5zIHBhY2tl ZCBVIChDYikgYW5kIFYgKENyKSBzYW1wbGVzLgo+ID4+Pj4KPiA+Pj4+IEJ1dCB0aGUgJ2RybV9t b2RlX2NyZWF0ZV9kdW1iJyBzdHJ1Y3R1cmUgaXMgb25seSBpbnRlbmQgdG8gcHJvdmlkZQo+ID4+ Pj4gZGVzY3JpcHRpb25zIGZvciAqb25lKiBwbGFuYXIuCj4gPj4+Pgo+ID4+Pj4gc3RydWN0IGRy bV9tb2RlX2NyZWF0ZV9kdW1iIHsKPiA+Pj4+IMKgwqDCoMKgIF9fdTMyIGhlaWdodDsKPiA+Pj4+ IMKgwqDCoMKgIF9fdTMyIHdpZHRoOwo+ID4+Pj4gwqDCoMKgwqAgX191MzIgYnBwOwo+ID4+Pj4g wqDCoMKgwqAgX191MzIgZmxhZ3M7Cj4gPj4+PiDCoMKgwqDCoCBfX3UzMiBoYW5kbGU7Cj4gPj4+ PiDCoMKgwqDCoCBfX3UzMiBwaXRjaDsKPiA+Pj4+IMKgwqDCoMKgIF9fdTY0IHNpemU7Cj4gPj4+ PiB9Owo+ID4+Pj4KPiA+Pj4+IEFuIHdpZHRoIHggaGVpZ2h0IE5WMTIgaW1hZ2UgdGFrZXMgdXAg d2lkdGgqaGVpZ2h0KigxICsgMS80ICsgMS80KSAKPiA+Pj4+IGJ5dGVzLgo+ID4+Pj4KPiA+Pj4+ IFNvIHdlIGNhbiBhbGxvY2F0ZSBhbiAqZXF1aXZhbGVudCogc2l6ZWQgYnVmZmVyIHRvIHN0b3Jl IHRoZSBOVjEyIAo+ID4+Pj4gcmF3IGRhdGEuCj4gPj4+Pgo+ID4+Pj4gRWl0aGVyICd3aWR0aCAq IChoZWlnaHQgKiAzLzIpJyB3aGVyZSBlYWNoIHBpeGVsIHRha2UgdXAgOCBiaXRzLAo+ID4+Pj4g b3IganVzdCAnd2l0aCAqIGhlaWdodCcgd2hlcmUgZWFjaCBwaXhlbHMgdGFrZSB1cCAxMiBiaXRz Lgo+ID4+Pj4KPiA+Pj4+IEhvd2V2ZXIsIGFsbCB0aG9zZSBtYXRoIGFyZSBqdXN0IGVxdWl2YWxl bnRzIGRlc2NyaXB0aW9uIHRvIHRoZSBvcmlnaW5hbAo+ID4+Pj4gTlYxMiBmb3JtYXQsIG5laXRo ZXIgYXJlIGNvbmNyZXRlIGNvcnJlY3QgcGh5c2ljYWwgZGVzY3JpcHRpb24uCj4gPj4+Cj4gPj4+ IEkgZG9uJ3Qgc2VlIHRoZSBwcm9ibGVtLiBBbGxvY2F0aW5nIGR1bWIgYnVmZmVycywgaWYgd2Ug ZG9uJ3QgaGF2ZSAKPiA+Pj4gYW55IGhldXJpc3RpY3MgcmVsYXRlZCB0byBSR0IgYmVoaW5kIGl0 LCBpcyBlc3NlbnRpYWxseSBqdXN0IAo+ID4+PiBhbGxvY2F0aW5nIGEgc3BlY2lmaWMgYW1vdW50 IG9mIG1lbW9yeSwgZGVmaW5lZCBieSB3aWR0aCwgaGVpZ2h0IGFuZCAKPiA+Pj4gYml0c3BlcnBp eGVsLgo+ID4+Pgo+ID4+IEkgdGhpbmssIHRoZSBwcm9ibGVtIHdpbGwgYmUgdGhhdCB0aGUgJ3dp ZHRoJywgJ2hlaWdodCcgYW5kICdicHAnCj4gPj4gYXJlIG9yaWdpbmFsbHkgdXNlZCB0byBkZXNj cmliZSBvbmUgcGxhbmUuIFRob3NlIHRocmVlIHBhcmFtZXRlcnMKPiA+PiBoYXMgcGVyZmVjdGx5 IGRlZmluZWQgcGh5c2ljYWwgc2VtYW50aWNzLgo+ID4+Cj4gPj4gQnV0IHdpdGggbXVsdGkgcGxh bmFyIGZvcm1hdHMsIHRha2UgTlYxMiBpbWFnZSBhcyBhbiBleGFtcGxlLAo+ID4+IGZvciBhIDLD lzIgc3F1YXJlIG9mIHBpeGVscywgdGhlcmUgYXJlIDQgWSBzYW1wbGVzIGJ1dCBvbmx5IDEgVQo+ ID4+IHNhbXBsZSBhbmQgMSBWIHNhbXBsZS4gVGhpcyBmb3JtYXQgcmVxdWlyZXMgNHg4KzF4OCsx eDg9NDggYml0cwo+ID4+IHRvIHN0b3JlIHRoZSAyeDIgc3F1YXJlLgo+ID4+Cj4gPj4gU28gaXRz IGRlcHRoIGlzIDEyIGJpdHMgcGVyIHBpeGVsICg0OCAvICgyICogMikpLgo+ID4+Cj4gPj4gc28g bXkgcHJvYmxlbSBpcyB0aGF0IHRoZSBtZW50aW9uZWQgMTJicHAgaW4gdGhpcyBleGFtcGxlIG9u bHkKPiA+PiBtYWtlIHNlbnNlIGluIG1hdGhlbWF0aWNzLCBpdCBkb2Vzbid0IGhhcyBhIGdvb2Qg cGh5c2ljYWwKPiA+PiBpbnRlcnByZXQuIERvIHlvdSBhZ3JlZSB3aXRoIG1lIG9uIHRoaXMgdGVj aG5pcXVlIHBvaW50Pwo+ID4+Cj4gPj4+IElmIEkgd2FudCB0byBjcmVhdGUgYW4gTlYxMiBmcmFt ZWJ1ZmZlciwgSSBhbGxvY2F0ZSB0d28gZHVtYiAKPiA+Pj4gYnVmZmVycywgb25lIGZvciBZIGFu ZCBvbmUgZm9yIFVWIHBsYW5lcywgYW5kIHNpemUgdGhlbSBhY2NvcmRpbmdseS4gCj4gPj4+IEFu ZCB0aGVuIGNyZWF0ZSB0aGUgRFJNIGZyYW1lYnVmZmVyIHdpdGggdGhvc2UuCj4gPj4+Cj4gPj4g VGhlbiBob3cgeW91IGZpbGwgdGhlIHZhbHVlIG9mIHRoZSAnd2lkdGgnLCAnaGVpZ2h0JyBhbmQg J2JwcCcgb2YgCj4gPj4gZWFjaCBkdW1iIGJ1ZmZlcnM/Cj4gPgo+ID4gRm9yIDY0MHg0ODAtTlYx MjoKPiA+IHBsYW5lIDA6IHdpZHRoID0gNjQwLCBoZWlnaHQgPSA0ODAsIGJwcCA9IDgKPiA+IHBs YW5lIDE6IHdpZHRoID0gNjQwIC8gMiwgaGVpZ2h0ID0gNDgwIC8gMiwgYnBwID0gMTYKPgo+IEJ1 dCBpIHRoaW5rIHRoaXMgc2hvdWxkIGJlIGhhcmR3YXJlIGRlcGVuZGVudC4gVGhlIGhhcmR3YXJl IEknbSB1c2luZwo+IGxvYWQgTlYxMiAgcmF3IGRhdGEgYXMgYSB3aG9sZS4gSSBvbmx5IG5lZWQg dG8gZmVlZCBncHV2YSBvZiB0aGUgYmFja2luZwo+IG1lbW9yeSB0byB0aGUgaGFyZHdhcmUgcmVn aXN0ZXIgb25jZS4KPiAKPiBOb3QgZmFtaWxpYXIgd2l0aCB5b3VyIGhhcmR3YXJlLCBzbyBJIGNh bid0IHRhbGsgbW9yZSBvbiB0aGlzIHNvZnR3YXJlCj4gZGVzaWduLiBQZXJoYXBzIHNvbWVvbmUg a25vdyBtb3JlIGNvdWxkIGhhdmUgYSBjb21tZW50IG9uIHRoaXMuCgpMYXlvdXQgb2YgcGxhbmVz IGluIG1lbW9yeSBpcyBqdXN0IG9uZSBoYXJkd2FyZSBjb25zdHJhaW50LCB0aGUgc2FtZSB3YXkK d2UgaGF2ZSBjb25zdHJhaW50cyBvbiBhbGlnbm1lbnQgYW5kIHN0cmlkZXMuIFNvbWUgZGV2aWNl cyByZXF1aXJlIHRoZQpwbGFuZXMgdG8gYmUgY29udGlndW91cyAobGlrZWx5IHdpdGggc29tZSBh bGlnbm1lbnQgY29uc3RyYWludHMpLCBzb21lCmNhbiB3b3JrIHdpdGggcGxhbmVzIGJlaW5nIGlu IGRpc2NvbnRpZ3VvdXMgcGllY2VzIG9mIG1lbW9yeSwgYW5kIGV2ZW4KcmVxdWlyZSB0aGVtIHRv IGJlIGRpc2NvbnRpZ3VvdXMgYW5kIGxvY2F0ZWQgaW4gc2VwYXJhdGUgRFJBTSBiYW5rcy4KCj4g Pj4gV2h5IG5vdCBhbGxvY2F0ZSBzdG9yYWdlIGZvciB0aGUgd2hvbGUgb24gb25lIHNob290Pwo+ ID4KPiA+IFlvdSBjYW4sIGlmIHlvdSBhZGp1c3QgdGhlIHBhcmFtZXRlcnMgYWNjb3JkaW5nbHku IEhvd2V2ZXIsIGlmIHRoZSAKPiA+IHN0cmlkZXMgb2YgdGhlIHBsYW5lcyBhcmUgbm90IGVxdWFs LCBJIGd1ZXNzIGl0IG1pZ2h0IGNhdXNlIHByb2JsZW1zIAo+ID4gb24gc29tZSBwbGF0Zm9ybXMu Cj4gPgo+ID4gQnV0IEkgdGhpbmsgaXQncyB1c3VhbGx5IHNpbXBsZXIgdG8gYWxsb2NhdGUgb25l IGJ1ZmZlciBwZXIgcGxhbmUsIGFuZCAKPiA+IHBlcmhhcHMgZXZlbiBiZXR0ZXIgYXMgaXQgZG9l c24ndCByZXF1aXJlIGFzIGxhcmdlIGNvbnRpZ3VvdXMgbWVtb3J5IAo+ID4gYXJlYS4KPiA+Cj4g Pj4gVGhlIG1vZGV0ZXN0IGluIGxpYmRybSBjYW4gYmUgYW4gZ29vZCBleGFtcGxlLCBzZW5kIGl0 WzFdIHRvIHlvdSBhcyAKPiA+PiBhbiByZWZlcmVuY2UuCj4gPgo+ID4gUmlnaHQsIHNvIG1vZGV0 ZXN0IGFscmVhZHkgZG9lcyBpdCBzdWNjZXNzZnVsbHkuIFNvLi4uIFdoYXQgaXMgdGhlIGlzc3Vl Pwo+Cj4gQnV0IHRoZW4sIHRoZSBwcm9ibGVtIHdpbGwgYmVjb21lIHRoYXQgaXQgb3ZlcnJpZGUg dGhlICdoZWlnaHQnIHBhcmFtZXRlci4KPiBXaGF0J3MgdGhlIHBoeXNpY2FsIGludGVycHJldGF0 aW9uIG9mIHRoZSAnaGVpZ2h0JyBwYXJhbWV0ZXIgd2hlbiBjcmVhdGluZwo+IGFuIE5WMTIgaW1h Z2Ugd2l0aCB0aGUgZHVtcCBBUEkgdGhlbj8KCkkgd291bGRuJ3QgYmUgdG9vIGNvbmNlcm5lZCBh Ym91dCBwaHlzaWNhbCBpbnRlcnByZXRhdGlvbnMuIFllcywgdGhlCmhlaWdodCwgd2lkdGggYW5k IGJwcCBwYXJhbWV0ZXJzIHdlcmUgbGlrZWx5IGRlc2lnbmVkIHdpdGggUkdCIGZvcm1hdHMKaW4g bWluZC4gWWVzLCB1c2luZyBEVU1CX0NSRUFURSBmb3IgWVVWIGZvcm1hdHMgaXMgcHJvYmFibHkg c29tZXRoaW5nCnRoYXQgdGhlIG9yaWdpbmFsIGF1dGhvcnMgZGlkbid0IGVudmlzaW9uLiBBbmQg eWVzLCBmcm9tIHRoYXQgcG9pbnQgb2YKdmlldywgaXQgY291bGQgYmUgc2VlbiBieSB0aGUgb3Jp Z2luYWwgYXV0aG9ycyBhcyBhbiBhYnVzZSBvZiB0aGUgQVBJLgpCdXQgSSBkb24ndCB0aGluayB0 aGF0J3MgYSBwcm9ibGVtIGFzIHN1Y2guCgpBbiBBUEkgaXMganVzdCBhbiBBUEkuIFRydWUsIGl0 IHdvdWxkIGJlIG5pY2VyIGlmIHRoZSB1c2FnZSBvZiB0aGUgaW9jdGwKcGFyYW1ldGVycyB3YXMg bW9yZSBpbnR1aXRpdmUgZm9yIFlVViBmb3JtYXRzLCBidXQgSSBiZWxpZXZlIHdlIGNvdWxkCnN0 aWxsIHN0YW5kYXJkaXplIGhvdyB0aGUgZXhpc3RpbmcgcGFyYW1ldGVycyBtYXAgdG8gbGluZWFy IHNjYW5vdXQgWVVWCmZvcm1hdHMgd2l0aG91dCBjYXVzaW5nIHRoZSB3b3JsZCB0byBlbmQuIEFz IGhhcyBiZWVuIHNhaWQgYmVmb3JlLCBsb3RzCm9mIGRyaXZlcnMgYXJlIHVzaW5nIERVTUJfQ1JF QVRFIGZvciB0aGlzIHB1cnBvc2UsIGFuZCB3ZSBjYW4ndCBjaGFuZ2UKdGhhdC4KClRoaXMgZG9l c24ndCBtZWFuIHdlIHNob3VsZG4ndCB3b3JrIG9uIGltcHJvdmluZyBtZW1vcnkgYWxsb2NhdGlv biwgYnV0Ckkgc2VlIHRoYXQgYXMgYSBzZXBhcmF0ZSBpc3N1ZS4KCj4gSSBndWVzcywgc29sdmlu ZyBjb21wbGV4IHByb2JsZW1zIHdpdGggc2ltcGxlIEFQSXMgbWF5IHNlZSB0aGUgbGltaXRhdGlv biwKPiBzb29uZXIgb3IgbGF0ZXIuIEJ1dCBJIG5vdCB2ZXJ5IHN1cmUgYW5kIG1pZ2h0IGJlIHdy b25nLiBTbyBvdGhlciBwZW9wbGVzCj4gY2FuIG92ZXJyaWRlIG1lIHdvcmRzLgo+IAo+ID4gRXZl cnlvbmUgYWdyZWVzIHRoYXQgQ1JFQVRFX0RVTUIgaXMgbm90IHRoZSBiZXN0IGlvY3RsIHRvIGFs bG9jYXRlIAo+ID4gYnVmZmVycywgYW5kIG9uZSBjYW4ndCBjb25zaWRlciBpdCB0byB3b3JrIGlk ZW50aWNhbGx5IGFjcm9zcyB0aGUgCj4gPiBwbGF0Zm9ybXMuIEJ1dCBpdCdzIHdoYXQgd2UgaGF2 ZSBhbmQgd2hhdCBoYXMgYmVlbiB1c2VkIGZvciBhZ2VzLgo+Cj4gWWVhaCwgeW91ciByZXF1ZXN0 IGFyZSBub3QgdW5yZWFzb25hYmxlLiBJdCBjYW4gYmUgc2VlbiBhcyBhIGtpbmQgb2YgcmlnaWQg ZGVtYW5kLgo+IFNpbmNlIEdFTSBETUEgaGVscGVycyBkb2Vzbid0IGV4cG9ydCBhbiBtb3JlIGFk dmFuY2VkIGludGVyZmFjZSB0byB1c2Vyc3BhY2Ugc28gZmFyLgo+IEFzIGEgcmVzdWx0LCBkcml2 ZXJzIHRoYXQgZW1wbG95aW5nIEdFTSBETUEgaGFzIG5vIG90aGVyIGNob2ljZSwgYnV0IHRvIGFi dXNlIHRoZQo+IGR1bWIgYnVmZmVyIEFQSSB0byBkbyBhbGxvY2F0aW9uIGZvciB0aGUgbW9yZSBj b21wbGV4IGZvcm1hdCBidWZmZXJzLgo+IAo+IFRoZSBkdW1iIGJ1ZmZlciBBUEkgZG9lc24ndCBz dXBwb3J0IHRvIHNwZWNpZnkgYnVmZmVyIGZvcm1hdCwgdGlsZSBzdGF0dXMgYW5kCj4gcGxhY2Vt ZW50IGV0Yy4gVGhlIG1vcmUgYWR2YW5jZSBkcml2ZXJzIGhhcyBiZWVuIGV4cG9zZWQgdGhlIHh4 eF9jcmVhdGVfZ2VtKCkKPiB0byB1c2VyLXNwYWNlLiBJdCBzZWVtcyB0aGF0IGEgZmV3IG1vcmUg ZXhwZXJpZW5jZWQgcHJvZ3JhbW1lcnMgaGludCB1cyB0bwo+IGNyZWF0ZSBhbiBuZXcgaW9jdGwg YXQgYWJvdmUgdGhyZWFkLCBzbyB0aGF0IHdlIGNhbiBrZWVwIGVtcGxveWluZyBzaW1wbGUgQVBJ Cj4gdG8gZG8gc2ltcGxlIHRoaW5ncyBhbmQgdG8gc3VpdCBjb21wbGV4IG5lZWRzIHdpdGggdGhl IG1vcmUgYWR2YW5jZWQgQVBJcy4KCkknZCByZWFsbHkgbGlrZSB0byBleHBsb3JlIGFkZGluZyBu ZXcgaW9jdGxzIHRvIGV4cG9zdXJlIG1lbW9yeQphbGxvY2F0aW9uIGNvbnN0cmFpbnRzLCBhbmQg YWxsb2NhdGluZyB0aGUgbWVtb3J5IGl0c2VsZiBmcm9tIERNQSBoZWFwcy4KCi0tIApSZWdhcmRz LAoKTGF1cmVudCBQaW5jaGFydAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1yb2NrY2hpcAo=