From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC] drm: add support for tiled/compressed/etc modifier in addfb2 Date: Fri, 12 Dec 2014 17:30:45 +0200 Message-ID: <20141212153045.GT10649@intel.com> References: <1418231871-31088-1-git-send-email-robdclark@gmail.com> <20141212145635.GS10649@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 96BD46E96D for ; Fri, 12 Dec 2014 07:30:50 -0800 (PST) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Stone Cc: Laurent Pinchart , dri-devel List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBEZWMgMTIsIDIwMTQgYXQgMDM6MTE6MDJQTSArMDAwMCwgRGFuaWVsIFN0b25lIHdy b3RlOgo+IEhpLAo+IAo+IE9uIDEyIERlY2VtYmVyIDIwMTQgYXQgMTQ6NTYsIFZpbGxlIFN5cmrD pGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gd3JvdGU6Cj4gPgo+ID4gT24g RnJpLCBEZWMgMTIsIDIwMTQgYXQgMDg6NTA6MThBTSAtMDUwMCwgUm9iIENsYXJrIHdyb3RlOgo+ ID4KPiA+IEl0IGRvZXMgbWFrZSBtZSBicmllZmx5IHRoaW5rIG9mIGp1c3QgbGV0dGluZyB1cyBz ZXQgcHJvcGVydGllcyBvbiBmYgo+ID4KPiA+IG9iamVjdHMgOi1QIChidXQgbWF5YmUgdGhhdCBp cyBhIGJpdCBvdmVya2lsbCkKPiA+Cj4gPiBZZWFoIEkgaGFkIHRoZSBzYW1lIGlkZWEgYXQgc29t ZSBwb2ludC4gQnV0IHRoZW4gSSBkZWNpZGVkIHRoYXQgd2UgY291bGQKPiA+IGp1c3QgaGF2ZSB0 aGVzZSBhcyBwcm9wZXJ0aWVzIG9uIHRoZSBwbGFuZS4KPiAKPiAKPiBNbSwgaXQgZG9lcyBzZWVt IGEgYml0IHdlaXJkLiBZZXMsIHRoZXkgYXJlIHJlbGF0aXZlIHRvIGhvdyB0aGUgcGxhbmUKPiBp bnRlcnByZXRzIHRoaW5ncywgYnV0IHRoZW4gYWdhaW4gc28gaXMgdGhlIGZvcm1hdCBzdXJlbHku IE5vdCB0byBtZW50aW9uCj4gYW5vdGhlciB0aGluZyB0byBnbyB3cm9uZywgaWYgc29tZW9uZSBm b3JnZXRzIHRvIHNldCBhbmQvb3IgY2xlYXIgaXQgd2hlbgo+IGNoYW5naW5nIHRoZSBwbGFuZS4g S2VlcGluZyBpdCBpbiB0aGUgZmIgZWxpbWluYXRlcyB0aGF0IHBvc3NpYmlsaXR5Lgo+IAo+IAo+ ID4gPiBJIHN1cHBvc2UgdGhlIHNlbWktY3VzdG9tIHBsYW5lIHByb3BlcnR5IGFwcHJvYWNoIGlz IGEgYml0IGVhc2llciB0bwo+ID4gPiBleHRlbmQtYXMtd2UtZ28sIGFuZCB3ZSBhbHJlYWR5IGhh dmUgYSBtZWNoYW5pc20gc28gdXNlcnNwYWNlIGNhbgo+ID4gPiBxdWVyeSBhYm91dCB3aGF0IGlz IGFjdHVhbGx5IHN1cHBvcnRlZC4gIEJ1dCB0aGlzIGRvZXMgZmVlbCBhIGJpdCBtb3JlCj4gPiA+ IGxpa2UgYXR0cmlidXRlcyBvZiB0aGUgZmIuICBJJ20gaW50ZXJlc3RlZCBpZiBhbnlvbmUgaGFz IHBhcnRpY3VsYXJseQo+ID4gPiBnb29kIGFyZ3VtZW50cyBvbmUgd2F5IG9yIGFub3RoZXIuCj4g Pgo+ID4gSSBndWVzcyB3ZSBjb3VsZCBoYXZlIGp1c3Qgc3BlY2lmaWVkIG9mZnNldC9zaXplL3N0 cmlkZSBhcyBwYXJ0IG9mIHRoZQo+ID4gZmIgYW5kIGxldCBwaXhlbCBmb3JtYXQgYW5kIHN1Y2gg YXMgcHJvcGVydGllcy4gVGhhdCB3b3VsZCBiZSBhIGZhaXJseQo+ID4gbmF0dXJhbCBsaW5lIElN TyBzaW5jZSBpdCB3b3VsZCBiZSBlbm91Z2ggZGF0YSB0byBkbyBhIGJsaXQsIGJ1dCBub3QKPiA+ IGVub3VnaCB0byBhY3R1YWxseSBpbnRlcnByZXQgdGhlIHBpeGVsIGRhdGEuIEJ1dCB3ZSBhbHJl YWR5IHdlbnQgYmV5b25kCj4gPiB0aGF0IHdpdGggcGl4ZWwgZm9ybWF0cy4gU28gSSdtIG5vdCBz dXJlIGhvdyBmYXIgd2Ugd2FudCB0byBnby4KPiA+Cj4gPiBBbHNvIGFsbCB0aGlzIGNocm9tYSBz aXRpbmcgYW5kIGNvbG9yc3BhY2Ugc3R1ZmYgZGVmaW5pdGVseSBydW5zIGludG8KPiA+IGhhcmR3 YXJlIHNwZWNpZmljIGxpbWl0YXRpb25zIHNvIGhhdmluZyBzb21lIHdheSB0byB0ZWxsIHVzZXJz cGFjZSB3aGF0Cj4gPiBpcyBwb3NzaWJsZSB3b3VsZCBiZSBuaWNlIGFzIHlvdSBzYWlkLiBQcm9w ZXJ0aWVzIHNlZW0gYSBkZWNlbnQgbWF0Y2ggZm9yCj4gPiB0aGF0Lgo+IAo+IAo+IFllYWgsIHRo YXQncyBhIGdvb2QgaWRlYSBhY3R1YWxseSwgZXNwZWNpYWxseSBzaW5jZSBkaWZmZXJlbnQgcGxh bmVzIGRvCj4gaGF2ZSBkaWZmZXJlbnQgY2FwYWJpbGl0aWVzLgo+IAo+IAo+ID4gPiA+IEl0IG1p Z2h0IGJlIHVzZWZ1bCB0byBtYWtlIHRoZSBpbnRlcnByZXRhdGlvbiBtb2RpZmllcnMgYml0bWFz a2FibGUsCj4gPiBzbyB0aGV5Cj4gPiA+ID4gY2FuIGJlIGNvbWJpbmVkIChlLmcuIHdpZGUtcmFu Z2UvdW5jbGFtcGVkIFlVViB8IHdoYXRldmVyIGNocm9tYQo+ID4gc2l0aW5nKSwKPiA+ID4gPiBi dXQgSSBjYW4ndCB0aGluayBvZiBhIHVzZWNhc2UgZm9yIGNvbWJpbmluZyBtdWx0aXBsZSBsYXlv dXQgbW9kaWZpZXJzCj4gPiAoZS5nLgo+ID4gPiA+IHRoaXMgdGlsaW5nIHwgdGhhdCBjb21wcmVz c2lvbikuCj4gPiA+Cj4gPiA+IFllYWgsIEkgdGhpbmsgdGhlIHZlbmRvci1yYW5nZSBwYXJ0IG9m IHRoZSB0b2tlbiwgdGhlIHZlbmRvciB3b3VsZAo+ID4gPiBwcm9iYWJseSB3YW50IHRvIGRlZmlu ZSBhcyBhIGJpdG1hc2sgb3Igc2V0IG9mIGJpdGZpZWxkcyBzbyB0aGF0IHRoZXkKPiA+ID4gY291 bGQgaGF2ZSB0aGluZ3MgbGlrZSB0aWxlZCtjb21wcmVzc2VkCj4gPiA+Cj4gPiA+IChvdG9oLCBp ZiB5b3UgdHJ5IHRvIG9yZ2FuaXplIGl0IHRvbyBuaWNlbHkgbm93LCBldmVudHVhbGx5IGVub3Vn aCBodwo+ID4gPiBnZW5lcmF0aW9ucyBpbiB0aGUgZnV0dXJlIHRoYXQgc2NoZW1lIHdpbGwgYnJl YWsgZG93bi4uIHNvIG1heWJlIGEgYmlnCj4gPiA+IHN3aXRjaCBvZiAjZGVmaW5lIGNhc2VzIGlz IGJldHRlciB0aGFuIHRyeWluZyB0byBpbnRlcnByZXQgdGhlCj4gPiA+IG1vZGlmaWVyIHRva2Vu KQo+ID4KPiAKPiBIYXZpbmcgdGhlbSBzZXBhcmF0ZWQgaXMgc3RpbGwga2luZGEgbmljZSB0aG91 Z2gsIGZvciB0aGUgc2FtZSByYXRpb25hbGUgYXMKPiB0aGUgRUdMSW1hZ2UgaW1wb3J0IGV4dGVu c2lvbiBoYXZpbmcgdGhlbSBhcyBoaW50cy4gSWYgeW91ciBoYXJkd2FyZQo+IGRvZXNuJ3Qgc3Vw cG9ydCB0aGUgdGlsaW5nL2NvbXByZXNzaW9uIGZvcm1hdCB5b3UgdXNlLCB0aGVuIHlvdSdyZSBn b2luZyB0bwo+IGJlIHNob3dpbmcgYWJzb2x1dGUgZ2FyYmFnZS4gQnV0IGlmIGl0IGRvZXNuJ3Qg c3VwcG9ydCB5b3VyIGV4YWN0Cj4gY2hyb21hLXNpdGluZyBvciBZVVYgcmFuZ2UgcmVxdWVzdCwg aXQnbGwgc3RpbGwgYmUgdG90YWxseSB2aWV3YWJsZSwganVzdAo+IG5vdCBlbnRpcmVseSBwZXJm ZWN0LiBTbyBJIGRvbid0IHNlZSB0aGUgbG9naWMgaW4gZmFpbGluZyB0aGVzZS4KCldlbGwsIGl0 IHdpbGwgbG9vayBuYXN0eSB3aGVuIHN3aXRjaGluZyBiZXR3ZWVuIEdMIGFuZCBkaXNwbGF5CmNv bXBvc2l0aW9uIHRoZSBHTCBwYXRoIGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGFuIGRpc3BsYXkgcGF0 aCBkb2Vzbid0LwpBbmQgd2UgYWxyZWFkeSBoYXZlIHRoYXQgcHJvYmxlbSB3aXRoIHRoZSBmdXp6 eSBhbGlnbm1lbnQvc2NhbGluZwpyZXN0cmljdGlvbiBzdHVmZi4gU28gSSB0aGluayB3ZSB3aWxs IHdhbnQgc29tZSBraW5kIG9mIHN0cmljdCBmbGFnCnNvbWV3aGVyZSB0byBhbGxvdyB0aGUgdXNl ciB0byBzcGVjaWZ5IHRoYXQgdGhleSdkIHJhdGhlciBmYWlsIHRoZSB3aG9sZQp0aGluZyBhbmQg ZmFsbCBiYWNrIHRvIEdMIHJhdGhlciB0aGFuIGFubm95IHRoZSB1c2VyLgoKQnV0IGZvciBzb21l IHNpbXBsZXIgY2FzZXMgbGlrZSBYdiBpdCB3b3VsZCBzZWVtIHBlcmZlY3RseSBPSyB0byB1c2Ug dGhlCmxlc3Mgc3RyaWN0IHJ1bGVzLiBXZWxsLCB1bmxlc3Mgc29tZW9uZSBpbXBsZW1lbnRzIFh2 IGluIGEgd2F5IHRoYXQgY2FuCmFsc28gdHJhbnNwYXJlbnRseSBzd2l0Y2ggYmV0d2VlbiBkaXNw bGF5IHBsYW5lcyBhbmQgR0wvc29mdHdhcmUgcmVuZGVyaW5nLgoKPiAKPiAKPiA+ID4gPj4gVE9E TyBob3cgYmVzdCB0byBkZWFsIHdpdGggYXNzaWdubWVudCBvZiBtb2RpZmllciB0b2tlbiB2YWx1 ZXM/ICBUaGUKPiA+ID4gPj4gcm91Z2ggaWRlYSB3YXMgdG8gbmFtZXNwYWNlIHRoaW5ncyB3aXRo IGFuIDhiaXQgdmVuZG9yLWlkLCBhbmQgdGhlbgo+ID4gPiA+PiBiZXlvbmQgdGhhdCBpdCBpcyB0 cmVhdGVkIGFzIGFuIG9wYXF1ZSB2YWx1ZS4gIEJ1dCB0aGF0IHdhcyBhCj4gPiByZWxhdGl2ZWx5 Cj4gPiA+ID4+IGFyYml0cmFyeSBjaG9pY2UuICBUaGVyZSBhcmUgY2FzZXMgd2hlcmUgc2FtZSB0 aWxpbmcgcGF0dGVybiBhbmQvb3IKPiA+ID4gPj4gY29tcHJlc3Npb24gaXMgc3VwcG9ydGVkIGJ5 IHZhcmlvdXMgZGlmZmVyZW50IHZlbmRvcnMuICBTbyB3ZSBzaG91bGQKPiA+ID4gPj4gc3RhbmRh cmRpemUgdG8gdXNlIHRoZSB2ZW5kb3ItaWQgYW5kIHZhbHVlIG9mIHRoZSBmaXJzdCBvbmUgd2hv Cj4gPiA+ID4+IGRvY3VtZW50cyB0aGUgZm9ybWF0Pwo+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiBZ ZWFoLCBJJ2Qgc2Vjb25kIGFsbCBvZiBkYW52ZXQncyBjb21tZW50cyBoZXJlLCBhcyB3ZWxsIGFz IGFkZGluZyBhIG5ldwo+ID4gPiA+IEFEREZCMl9NT0RJRklFUlMgY2FwICsgcXVlcnkgZm9yIHN1 cHBvcnRlZCBtb2RpZmllcnMuIE1ha2VzIGxpZmUgbXVjaAo+ID4gZWFzaWVyCj4gPiA+ID4gZm9y IGdlbmVyaWMgdXNlcnNwYWNlLgo+ID4gPgo+ID4gPiBJJ3ZlIGxvY2FsbHkgbWFkZSBhIGZldyB0 d2Vha3MgKDY0YiBhbmQgbW92ZSBzb21lIHN0dWZmIHRvCj4gPiBkcm1fZm91cmNjLmgpLi4KPiA+ ID4KPiA+ID4gSSB3YXMga2lja2luZyBhcm91bmQgdGhlIGlkZWEgb2YgbGV0dGluZyBwbGFuZSBz cGVjaWZ5IGFuIGFycmF5IG9mCj4gPiA+IHN1cHBvcnRlZCBmb3JtYXQgbW9kaWZpZXJzLCBhbmQg YWRkaW5nIHRoaXMgdG8gZ2V0cGxhbmUgaW9jdGwsIGFzIGFuCj4gPiA+IGFsdGVybmF0aXZlIHRv IGEgY2FwLiAgVGhhdCBwbHVzIHdpcmluZyB1cCBzb21lIGNoZWNraW5nIHRvIGRpc2FsbG93Cj4g PiA+IGFkZGZiMiBmb3IgYSBmb3JtYXQgKyBtb2RpZmllcnMgbm90IHN1cHBvcnRlZCBieSBhdCBs ZWFzdCBvbmUgcGxhbmUuCj4gPiA+IEFsdGhvdWdoIHNvbWUgaHcgY291bGQgb25seSBzdXBwb3J0 IGNlcnRhaW4gdGlsaW5nIHBhdHRlcm5zIGZvcgo+ID4gPiBjZXJ0YWluIGxheWVycyBvZiBhbiBm YiAoaWUuIGx1bWEgdnMgY2hyb21hKS4gIFNvIEkgbWF5IHNjcmFwIHRoYXQKPiA+ID4gaWRlYSBh bmQganVzdCBnbyBiYWNrIHRvIGNhcC4KPiA+Cj4gPiBJbmRlZWQgdGhlIGZvcm1hdCBzcGVjaWZp YyBsaW1pdGF0aW9ucyBhcmUgcHJvYmxlbS4gUHJvcGVydGllcyBjYW4ndAo+ID4gaGFuZGxlIHRo YXQuIFdlJ2QgbmVlZCB0byBoYXZlIHNvbWUga2luZCBvZiBjYXBzIGZvciBlYWNoIHBsYW5lK2Zv cm1hdAo+ID4gY29tYmluYXRpb24gaWYgd2Ugd2FudCB0byBkZWFsIHdpdGggdGhhdC4gQnV0IEkg ZG9uJ3QgdGhpbmsgd2UgY2FuCj4gPiBzdGlsbCBtYWtlIGl0IGhhbmRsZSBhbGwgdGhlIGh3IGxp bWl0YXRpb25zLCBzbyBJJ20gbm90IHN1cmUgaXQncyB3b3J0aAo+ID4gZ29pbmcgZG93biB0aGlz IHBhdGguCj4gCj4gCj4gV2VsbCwgeW91IGRvbid0IGhhdmUgdG8gc29sdmUgbGl0ZXJhbGx5IGV2 ZXJ5dGhpbmcgYXQgb25jZS4gSnVzdCBoYXZpbmcgYQo+IGxpc3Qgb2YgZm9ybWF0cyB3aGljaCBj b3VsZCBwb3NzaWJseSBiZSBzdXBwb3J0ZWQgaWYgeW91IGRpZCB0aGUgcmlnaHQKPiB0aGluZywg d291bGQgYmUgYSBoZWxsIG9mIGEgbG90IGJldHRlciB0aGFuIHB1bnRpbmcgdG8gdXNlcnNwYWNl LCB3aGljaAo+IGVpdGhlciBhKSBoYXMgdG8gaGF2ZSBoYXJkd2FyZS1zcGVjaWZpYyBrbm93bGVk Z2UgaW4gZXZlcnkgY29tcG9uZW50Cj4gKGNvbXBvc2l0b3IsIG1lZGlhIGxpYnJhcnksIGV0YyBl dGMpLCBvciBiKSBicnV0ZS1mb3JjZSBpdC4gVGhlIGxhY2sgb2YgYW55Cj4gZm9ybWF0IHF1ZXJ5 IGluIEVHTEltYWdlIGRtYWJ1ZiBpbXBvcnQgaXMgYSBzZXJpb3VzLCBzZXJpb3VzLCBzZXJpb3Vz LCBwYWluCj4gd2hlbiB0cnlpbmcgdG8gZG8gZ2VuZXJpYyB1c2Vyc3BhY2UgKGUuZy4gY29tcG9z aXRvciBmZWVkcyBHU3RyZWFtZXIgYSBsaXN0Cj4gb2YgZm9ybWF0cyB3aGljaCBhcmUgc3VwcG9y dGVkIGJ5IHRoZSBoYXJkd2FyZSkuIEkgZ2V0IHRoYXQgdGhlcmUgYXJlCj4gY29tYmluYXRpb25z IHRoYXQgY291bGQgZmFpbCwgYnV0IHRoYXQncyB0cnVlIG9mIGV2ZXJ5dGhpbmcuIEF0IGxlYXN0 Cj4gbmFycm93aW5nIGRvd24gdGhlIHByb2JsZW0gc3BhY2UgYSBiaXQgaXMgYW4gZW5vcm1vdXMg aGVscC4KCldlIGFscmVkeSBoYXZlIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZm9ybWF0cy4gVGhlIHBy b2JsZW0gaXMgd2hlbiBzcGVjaWZpYwpmb3JtYXRzIGltcG9zZSBhZGRpdG9uYWwgY29uc3RyYWlu dHMgKGVnLiBtb3JlIHJlc3RyaWN0ZWQgc2NhbGluZyBmYWN0b3IKbGltaXRzKS4KCj4gCj4gQ2hl ZXJzLAo+IERhbmllbAo+IAo+IE9uIDEyIERlY2VtYmVyIDIwMTQgYXQgMTQ6NTYsIFZpbGxlIFN5 cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gd3JvdGU6Cj4gPgo+ID4g T24gRnJpLCBEZWMgMTIsIDIwMTQgYXQgMDg6NTA6MThBTSAtMDUwMCwgUm9iIENsYXJrIHdyb3Rl Ogo+ID4gPiBPbiBGcmksIERlYyAxMiwgMjAxNCBhdCA2OjI3IEFNLCBEYW5pZWwgU3RvbmUgPGRh bmllbEBmb29pc2hiYXIub3JnPgo+ID4gd3JvdGU6Cj4gPiA+ID4gSGV5LAo+ID4gPiA+Cj4gPiA+ ID4gT24gMTAgRGVjZW1iZXIgMjAxNCBhdCAxNzoxNywgUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21h aWwuY29tPiB3cm90ZToKPiA+ID4gPj4KPiA+ID4gPj4gSW4gRFJNL0tNUyB3ZSBhcmUgbGFja2lu ZyBhIGdvb2Qgd2F5IHRvIGRlYWwgd2l0aCB0aWxlZC9jb21wcmVzc2VkCj4gPiA+ID4+IGZvcm1h dHMuICBFc3BlY2lhbGx5IGluIHRoZSBjYXNlIG9mIGRtYWJ1Zi9wcmltZSBidWZmZXIgc2hhcmlu Zywgd2hlcmUKPiA+ID4gPj4gd2UgY2Fubm90IGFsd2F5cyByZWx5IG9uIHVuZGVyLXRoZS1ob29k IGZsYWdzIHBhc3NlZCB0byBkcml2ZXIKPiA+IHNwZWNpZmljCj4gPiA+ID4+IGdlbS1jcmVhdGUg aW9jdGwgdG8gcGFzcyBhcm91bmQgdGhlc2UgZXh0cmEgZmxhZ3MuCj4gPiA+ID4+Cj4gPiA+ID4+ IFRoZSBwcm9wb3NhbCBpcyB0byBhZGQgYSBwZXItcGxhbmUgZm9ybWF0IG1vZGlmaWVyLiAgVGhp cyBhbGxvd3MgdG8sCj4gPiBpZgo+ID4gPiA+PiBuZWNlc3NhcnksIHVzZSBkaWZmZXJlbnQgdGls aW5nIHBhdHRlcnMgZm9yIHN1Yi1zYW1wbGVkIHBsYW5lcywgZXRjLgo+ID4gPiA+PiBUaGUgZm9y bWF0IG1vZGlmaWVycyBhcmUgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgaW9jdGwgc3RydWN0LCBz byBmb3IKPiA+ID4gPj4gbGVnYWN5IHVzZXJzcGFjZSBpdCB3aWxsIGJlIHplcm8gcGFkZGVkLgo+ ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiBDb29sLCB0aGFua3MgYSBsb3QgZm9yIGxvb2tpbmcgYXQg dGhpcyEgTXkgb25lIGNvbW1lbnQgaXMgdGhhdCB3ZSBjb3VsZAo+ID4gPiA+IG1heWJlIGdvIGV2 ZW4gZnVydGhlcjoga2VlcCB0aGUgY3VycmVudCBtb2RpZmllciBhcyBhIHN0cmljdAo+ID4gcGl4 ZWwtbGF5b3V0Cj4gPiA+ID4gbW9kaWZpZXIgKGUuZy4gdGlsZWQsIGNvbXByZXNzZWQgLSBhbnl0 aGluZyB0aGF0IGFmZmVjdHMgaG93IHlvdQo+ID4gYWN0dWFsbHkKPiA+ID4gPiBkZXRlcm1pbmUg cGl4ZWwgbG9jYXRpb24pLCBhbmQgdGhlbiBzdXBwb3J0IGFuIGV4dHJhIChwZXJoYXBzCj4gPiA+ ID4gbm9uLXZlbmRvci1uYW1lc3BhY2VkKSBhcmd1bWVudCBmb3Igb3B0aW9uYWwgcGl4ZWwgX2lu dGVycHJldGF0aW9uXwo+ID4gPiA+IG1vZGlmaWVycywgZS5nLiB0aGUgaGludHMgaW4gRUdMX0VY VF9pbWFnZV9kbWFfYnVmX2ltcG9ydC4gVjRMMiBpcwo+ID4gc3RhcnRpbmcKPiA+ID4gPiB0byBw cm9wZXJseSBhdHRhY2sgdGhpbmdzIGxpa2UgY2hyb21hIHNpdGluZywgYW5kIGJlaW5nIGFibGUg dG8gc3BlY2lmeQo+ID4gPiA+IG5hcnJvdy93aWRlIFlVViByYW5nZSBpcyBwcmV0dHkgaW1wb3J0 YW50IGZvciBTVEIvRFRWIGluIHBhcnRpY3VsYXIuCj4gPiBBbmQKPiA+ID4gPiB0aGV5J3JlIGFj dHVhbGx5IHN0YXJ0aW5nIHRvIG1vdmUgdG8gS01TLCB0b28gLi4uCj4gPiA+Cj4gPiA+IFVwIHVu dGlsIG5vdyBJIGhhZCBzb3J0IG9mIHRob3VnaHQgb2YgdGhpbmdzIGxpa2UgWVVWIHJhbmdlIGFz IHBsYW5lCj4gPiA+IHByb3BlcnRpZXMgd2hpY2ggY291bGQgYmUgdXBkYXRlZCAocG90ZW50aWFs bHkgb24gZmxpcCBhcyBwYXJ0IG9mCj4gPiA+IGF0b21pYyBpb2N0bCkuICBCdXQgdGhleSBhcmUg YWxzbyBhZGRpdGlvbmFsIG1ldGFkYXRhIGFib3V0IGhvdyB0bwo+ID4gPiBwcm9wZXJseSBpbnRl cnByZXQgdGhlIHBpeGVsIGRhdGEgY29udGFpbmVkIGluIHRoZSBidWZmZXIuCj4gPiA+Cj4gPiA+ IEkgZ3Vlc3MgY2hyb21hIHNpdGluZyBhbmQgWVVWIHJhbmdlIHdvdWxkIGF0IGxlYXN0IGJlIG9u ZSB2YWx1ZSB0aGF0Cj4gPiA+IGFwcGxpZXMgYWNyb3NzIGFsbCB0aGUgYm9zL3BsYW5lcyBvZiB0 aGUgZmIsIHJhdGhlciB0aGFuIHBlciBwbGFuZT8KPiA+Cj4gPiBUaGVyZSBpcyB0aGUgRFYgY2Fz ZSB3aGVyZSB0aGUgY2hyb21hIGlzIHNhbXBsZWQgYXQgZGlmZmVyZW50IHBvaW50cyBmb3IKPiA+ IENiIGFuZCBDci4gU28gd2UgY291bGQgaW4gdGhlb3J5IHNwZWNpZnkgY2hyb21hIHNpdGluZyBw ZXItcGxhbmUuIEJ1dCBpdAo+ID4gc2VlbXMgdG8gbWUgdGhhdCBpdCdkIGJlIGVub3VnaCB0byBo YXZlIGl0IGZvciB0aGUgZW50aXJlIGZiLiBJIGhhZCBzb21lCj4gPiBpZGVhcyBwb3N0ZWQgeWVh cnMgYWdvLiBIZXJlJ3MgWzFdIG9uZSBhdCBsZWFzdC4KPiA+Cj4gPiBbMV0KPiA+IGh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvZHJpLWRldmVsLzIwMTEtTm92ZW1iZXIvMDE2 Mzc5Lmh0bWwKPiA+Cj4gPiA+Cj4gPiA+IEl0IGRvZXMgbWFrZSBtZSBicmllZmx5IHRoaW5rIG9m IGp1c3QgbGV0dGluZyB1cyBzZXQgcHJvcGVydGllcyBvbiBmYgo+ID4gPiBvYmplY3RzIDotUCAo YnV0IG1heWJlIHRoYXQgaXMgYSBiaXQgb3ZlcmtpbGwpCj4gPgo+ID4gWWVhaCBJIGhhZCB0aGUg c2FtZSBpZGVhIGF0IHNvbWUgcG9pbnQuIEJ1dCB0aGVuIEkgZGVjaWRlZCB0aGF0IHdlIGNvdWxk Cj4gPiBqdXN0IGhhdmUgdGhlc2UgYXMgcHJvcGVydGllcyBvbiB0aGUgcGxhbmUuCj4gPgo+ID4g Pgo+ID4gPiBJIHN1cHBvc2UgdGhlIHNlbWktY3VzdG9tIHBsYW5lIHByb3BlcnR5IGFwcHJvYWNo IGlzIGEgYml0IGVhc2llciB0bwo+ID4gPiBleHRlbmQtYXMtd2UtZ28sIGFuZCB3ZSBhbHJlYWR5 IGhhdmUgYSBtZWNoYW5pc20gc28gdXNlcnNwYWNlIGNhbgo+ID4gPiBxdWVyeSBhYm91dCB3aGF0 IGlzIGFjdHVhbGx5IHN1cHBvcnRlZC4gIEJ1dCB0aGlzIGRvZXMgZmVlbCBhIGJpdCBtb3JlCj4g PiA+IGxpa2UgYXR0cmlidXRlcyBvZiB0aGUgZmIuICBJJ20gaW50ZXJlc3RlZCBpZiBhbnlvbmUg aGFzIHBhcnRpY3VsYXJseQo+ID4gPiBnb29kIGFyZ3VtZW50cyBvbmUgd2F5IG9yIGFub3RoZXIu Cj4gPgo+ID4gSSBndWVzcyB3ZSBjb3VsZCBoYXZlIGp1c3Qgc3BlY2lmaWVkIG9mZnNldC9zaXpl L3N0cmlkZSBhcyBwYXJ0IG9mIHRoZQo+ID4gZmIgYW5kIGxldCBwaXhlbCBmb3JtYXQgYW5kIHN1 Y2ggYXMgcHJvcGVydGllcy4gVGhhdCB3b3VsZCBiZSBhIGZhaXJseQo+ID4gbmF0dXJhbCBsaW5l IElNTyBzaW5jZSBpdCB3b3VsZCBiZSBlbm91Z2ggZGF0YSB0byBkbyBhIGJsaXQsIGJ1dCBub3QK PiA+IGVub3VnaCB0byBhY3R1YWxseSBpbnRlcnByZXQgdGhlIHBpeGVsIGRhdGEuIEJ1dCB3ZSBh bHJlYWR5IHdlbnQgYmV5b25kCj4gPiB0aGF0IHdpdGggcGl4ZWwgZm9ybWF0cy4gU28gSSdtIG5v dCBzdXJlIGhvdyBmYXIgd2Ugd2FudCB0byBnby4KPiA+Cj4gPiBBbHNvIGFsbCB0aGlzIGNocm9t YSBzaXRpbmcgYW5kIGNvbG9yc3BhY2Ugc3R1ZmYgZGVmaW5pdGVseSBydW5zIGludG8KPiA+IGhh cmR3YXJlIHNwZWNpZmljIGxpbWl0YXRpb25zIHNvIGhhdmluZyBzb21lIHdheSB0byB0ZWxsIHVz ZXJzcGFjZSB3aGF0Cj4gPiBpcyBwb3NzaWJsZSB3b3VsZCBiZSBuaWNlIGFzIHlvdSBzYWlkLiBQ cm9wZXJ0aWVzIHNlZW0gYSBkZWNlbnQgbWF0Y2ggZm9yCj4gPiB0aGF0Lgo+ID4KPiA+ID4KPiA+ ID4gPiBJdCBtaWdodCBiZSB1c2VmdWwgdG8gbWFrZSB0aGUgaW50ZXJwcmV0YXRpb24gbW9kaWZp ZXJzIGJpdG1hc2thYmxlLAo+ID4gc28gdGhleQo+ID4gPiA+IGNhbiBiZSBjb21iaW5lZCAoZS5n LiB3aWRlLXJhbmdlL3VuY2xhbXBlZCBZVVYgfCB3aGF0ZXZlciBjaHJvbWEKPiA+IHNpdGluZyks Cj4gPiA+ID4gYnV0IEkgY2FuJ3QgdGhpbmsgb2YgYSB1c2VjYXNlIGZvciBjb21iaW5pbmcgbXVs dGlwbGUgbGF5b3V0IG1vZGlmaWVycwo+ID4gKGUuZy4KPiA+ID4gPiB0aGlzIHRpbGluZyB8IHRo YXQgY29tcHJlc3Npb24pLgo+ID4gPiA+Cj4gPiA+Cj4gPiA+IFllYWgsIEkgdGhpbmsgdGhlIHZl bmRvci1yYW5nZSBwYXJ0IG9mIHRoZSB0b2tlbiwgdGhlIHZlbmRvciB3b3VsZAo+ID4gPiBwcm9i YWJseSB3YW50IHRvIGRlZmluZSBhcyBhIGJpdG1hc2sgb3Igc2V0IG9mIGJpdGZpZWxkcyBzbyB0 aGF0IHRoZXkKPiA+ID4gY291bGQgaGF2ZSB0aGluZ3MgbGlrZSB0aWxlZCtjb21wcmVzc2VkCj4g PiA+Cj4gPiA+IChvdG9oLCBpZiB5b3UgdHJ5IHRvIG9yZ2FuaXplIGl0IHRvbyBuaWNlbHkgbm93 LCBldmVudHVhbGx5IGVub3VnaCBodwo+ID4gPiBnZW5lcmF0aW9ucyBpbiB0aGUgZnV0dXJlIHRo YXQgc2NoZW1lIHdpbGwgYnJlYWsgZG93bi4uIHNvIG1heWJlIGEgYmlnCj4gPiA+IHN3aXRjaCBv ZiAjZGVmaW5lIGNhc2VzIGlzIGJldHRlciB0aGFuIHRyeWluZyB0byBpbnRlcnByZXQgdGhlCj4g PiA+IG1vZGlmaWVyIHRva2VuKQo+ID4gPgo+ID4gPiA+Pgo+ID4gPiA+PiBUT0RPIGhvdyBiZXN0 IHRvIGRlYWwgd2l0aCBhc3NpZ25tZW50IG9mIG1vZGlmaWVyIHRva2VuIHZhbHVlcz8gIFRoZQo+ ID4gPiA+PiByb3VnaCBpZGVhIHdhcyB0byBuYW1lc3BhY2UgdGhpbmdzIHdpdGggYW4gOGJpdCB2 ZW5kb3ItaWQsIGFuZCB0aGVuCj4gPiA+ID4+IGJleW9uZCB0aGF0IGl0IGlzIHRyZWF0ZWQgYXMg YW4gb3BhcXVlIHZhbHVlLiAgQnV0IHRoYXQgd2FzIGEKPiA+IHJlbGF0aXZlbHkKPiA+ID4gPj4g YXJiaXRyYXJ5IGNob2ljZS4gIFRoZXJlIGFyZSBjYXNlcyB3aGVyZSBzYW1lIHRpbGluZyBwYXR0 ZXJuIGFuZC9vcgo+ID4gPiA+PiBjb21wcmVzc2lvbiBpcyBzdXBwb3J0ZWQgYnkgdmFyaW91cyBk aWZmZXJlbnQgdmVuZG9ycy4gIFNvIHdlIHNob3VsZAo+ID4gPiA+PiBzdGFuZGFyZGl6ZSB0byB1 c2UgdGhlIHZlbmRvci1pZCBhbmQgdmFsdWUgb2YgdGhlIGZpcnN0IG9uZSB3aG8KPiA+ID4gPj4g ZG9jdW1lbnRzIHRoZSBmb3JtYXQ/Cj4gPiA+ID4KPiA+ID4gPgo+ID4gPiA+IFllYWgsIEknZCBz ZWNvbmQgYWxsIG9mIGRhbnZldCdzIGNvbW1lbnRzIGhlcmUsIGFzIHdlbGwgYXMgYWRkaW5nIGEg bmV3Cj4gPiA+ID4gQURERkIyX01PRElGSUVSUyBjYXAgKyBxdWVyeSBmb3Igc3VwcG9ydGVkIG1v ZGlmaWVycy4gTWFrZXMgbGlmZSBtdWNoCj4gPiBlYXNpZXIKPiA+ID4gPiBmb3IgZ2VuZXJpYyB1 c2Vyc3BhY2UuCj4gPiA+Cj4gPiA+IEkndmUgbG9jYWxseSBtYWRlIGEgZmV3IHR3ZWFrcyAoNjRi IGFuZCBtb3ZlIHNvbWUgc3R1ZmYgdG8KPiA+IGRybV9mb3VyY2MuaCkuLgo+ID4gPgo+ID4gPiBJ IHdhcyBraWNraW5nIGFyb3VuZCB0aGUgaWRlYSBvZiBsZXR0aW5nIHBsYW5lIHNwZWNpZnkgYW4g YXJyYXkgb2YKPiA+ID4gc3VwcG9ydGVkIGZvcm1hdCBtb2RpZmllcnMsIGFuZCBhZGRpbmcgdGhp cyB0byBnZXRwbGFuZSBpb2N0bCwgYXMgYW4KPiA+ID4gYWx0ZXJuYXRpdmUgdG8gYSBjYXAuICBU aGF0IHBsdXMgd2lyaW5nIHVwIHNvbWUgY2hlY2tpbmcgdG8gZGlzYWxsb3cKPiA+ID4gYWRkZmIy IGZvciBhIGZvcm1hdCArIG1vZGlmaWVycyBub3Qgc3VwcG9ydGVkIGJ5IGF0IGxlYXN0IG9uZSBw bGFuZS4KPiA+ID4gQWx0aG91Z2ggc29tZSBodyBjb3VsZCBvbmx5IHN1cHBvcnQgY2VydGFpbiB0 aWxpbmcgcGF0dGVybnMgZm9yCj4gPiA+IGNlcnRhaW4gbGF5ZXJzIG9mIGFuIGZiIChpZS4gbHVt YSB2cyBjaHJvbWEpLiAgU28gSSBtYXkgc2NyYXAgdGhhdAo+ID4gPiBpZGVhIGFuZCBqdXN0IGdv IGJhY2sgdG8gY2FwLgo+ID4KPiA+IEluZGVlZCB0aGUgZm9ybWF0IHNwZWNpZmljIGxpbWl0YXRp b25zIGFyZSBwcm9ibGVtLiBQcm9wZXJ0aWVzIGNhbid0Cj4gPiBoYW5kbGUgdGhhdC4gV2UnZCBu ZWVkIHRvIGhhdmUgc29tZSBraW5kIG9mIGNhcHMgZm9yIGVhY2ggcGxhbmUrZm9ybWF0Cj4gPiBj b21iaW5hdGlvbiBpZiB3ZSB3YW50IHRvIGRlYWwgd2l0aCB0aGF0LiBCdXQgSSBkb24ndCB0aGlu ayB3ZSBjYW4KPiA+IHN0aWxsIG1ha2UgaXQgaGFuZGxlIGFsbCB0aGUgaHcgbGltaXRhdGlvbnMs IHNvIEknbSBub3Qgc3VyZSBpdCdzIHdvcnRoCj4gPiBnb2luZyBkb3duIHRoaXMgcGF0aC4KPiA+ Cj4gPiAtLQo+ID4gVmlsbGUgU3lyasOkbMOkCj4gPiBJbnRlbCBPVEMKPiA+CgotLSAKVmlsbGUg U3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo=