From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: DRM Atomic property for color-space conversion Date: Thu, 16 Mar 2017 19:36:56 +0200 Message-ID: <20170316173656.GI31595@intel.com> References: <20170131123329.GB24500@e106950-lin.cambridge.arm.com> <20170131151546.GT31595@intel.com> <20170131155541.GF11506@e106950-lin.cambridge.arm.com> <20170316140725.GF31595@intel.com> <0cff6bab-7593-d3d2-f3b5-71dc21669dab@intel.com> <20170316143059.GG31595@intel.com> <20170316143721.GN6268@e110455-lin.cambridge.arm.com> <20170316155501.GA25006@e106950-lin.cambridge.arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 473076EB72 for ; Thu, 16 Mar 2017 17:37:01 +0000 (UTC) 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: "Sharma, Shashank" Cc: Local user for Liviu Dudau , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, mihail.atanassov@arm.com, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBNYXIgMTYsIDIwMTcgYXQgMDc6MDU6MTJQTSArMDIwMCwgU2hhcm1hLCBTaGFzaGFu ayB3cm90ZToKPiBSZWdhcmRzCj4gCj4gU2hhc2hhbmsKPiAKPiAKPiBPbiAzLzE2LzIwMTcgNTo1 NSBQTSwgQnJpYW4gU3RhcmtleSB3cm90ZToKPiA+IEhpLAo+ID4KPiA+IE9uIFRodSwgTWFyIDE2 LCAyMDE3IGF0IDA1OjE0OjA3UE0gKzAyMDAsIFNoYXJtYSBTaGFzaGFuayB3cm90ZToKPiA+PiBS ZWdhcmRzCj4gPj4KPiA+PiBTaGFzaGFuawo+ID4+Cj4gPj4KPiA+PiBPbiAzLzE2LzIwMTcgNDoz NyBQTSwgTG9jYWwgdXNlciBmb3IgTGl2aXUgRHVkYXUgd3JvdGU6Cj4gPj4+IE9uIFRodSwgTWFy IDE2LCAyMDE3IGF0IDA0OjMwOjU5UE0gKzAyMDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+ Pj4+IE9uIFRodSwgTWFyIDE2LCAyMDE3IGF0IDA0OjIwOjI5UE0gKzAyMDAsIFNoYXJtYSwgU2hh c2hhbmsgd3JvdGU6Cj4gPj4+Pj4gUmVnYXJkcwo+ID4+Pj4+Cj4gPj4+Pj4gU2hhc2hhbmsKPiA+ Pj4+Pgo+ID4+Pj4+Cj4gPj4+Pj4gT24gMy8xNi8yMDE3IDQ6MDcgUE0sIFZpbGxlIFN5cmrDpGzD pCB3cm90ZToKPiA+Pj4+Pj4gT24gVHVlLCBKYW4gMzEsIDIwMTcgYXQgMDM6NTU6NDFQTSArMDAw MCwgQnJpYW4gU3RhcmtleSB3cm90ZToKPiA+Pj4+Pj4+IE9uIFR1ZSwgSmFuIDMxLCAyMDE3IGF0 IDA1OjE1OjQ2UE0gKzAyMDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+Pj4+Pj4+PiBPbiBU dWUsIEphbiAzMSwgMjAxNyBhdCAxMjozMzoyOVBNICswMDAwLCBCcmlhbiBTdGFya2V5IHdyb3Rl Ogo+ID4+Pj4+Pj4+PiBIaSwKPiA+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4gT24gTW9uLCBKYW4gMzAs IDIwMTcgYXQgMDM6MzU6MTNQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4+Pj4+ Pj4+Pj4gT24gRnJpLCBKYW4gMjcsIDIwMTcgYXQgMDU6MjM6MjRQTSArMDAwMCwgQnJpYW4gU3Rh cmtleSB3cm90ZToKPiA+Pj4+Pj4+Pj4+PiBIaSwKPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+ IFdlJ3JlIGxvb2tpbmcgdG8gZW5hYmxlIHRoZSBwZXItcGxhbmUgY29sb3IgbWFuYWdlbWVudCAK PiA+Pj4+Pj4+Pj4+PiBoYXJkd2FyZSBpbgo+ID4+Pj4+Pj4+Pj4+IE1hbGktRFAgd2l0aCBhdG9t aWMgcHJvcGVydGllcywgd2hpY2ggaGFzIHNwYXJrZWQgc29tZSAKPiA+Pj4+Pj4+Pj4+PiBjb252 ZXJzYXRpb24KPiA+Pj4+Pj4+Pj4+PiBhcm91bmQgaG93IHRvIGhhbmRsZSBZQ2JDciBmb3JtYXRz Lgo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4gQXMgaXQgc3RhbmRzIHRvZGF5LCBpdCdzIGFz c3VtZWQgdGhhdCBhIGRyaXZlciB3aWxsIAo+ID4+Pj4+Pj4+Pj4+IGltcGxpY2l0bHkgImRvIHRo ZQo+ID4+Pj4+Pj4+Pj4+IHJpZ2h0IHRoaW5nIiB0byBkaXNwbGF5IGEgWUNiQ3IgYnVmZmVyLgo+ ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4gWUNiQ3IgZGF0YSBvZnRlbiB1c2VzIGRpZmZlcmVu dCBnYW1tYSBjdXJ2ZXMgYW5kIHNpZ25hbCAKPiA+Pj4+Pj4+Pj4+PiByYW5nZXMgKGUuZy4KPiA+ Pj4+Pj4+Pj4+PiBCVC42MDksIEJULjcwMSwgQlQuMjAyMCwgc3R1ZGlvIHJhbmdlLCBmdWxsLXJh bmdlKSwgc28gaXRzIAo+ID4+Pj4+Pj4+Pj4+IGRlc2lyYWJsZQo+ID4+Pj4+Pj4+Pj4+IHRvIGJl IGFibGUgdG8gZXhwbGljaXRseSBjb250cm9sIHRoZSBZQ2JDciB0byBSR0IgY29udmVyc2lvbiAK PiA+Pj4+Pj4+Pj4+PiBwcm9jZXNzCj4gPj4+Pj4+Pj4+Pj4gZnJvbSB1c2Vyc3BhY2UuCj4gPj4+ Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+PiBXZSdyZSBwcm9wb3NpbmcgYWRkaW5nIGEgIkNTQyIgKGNv bG9yLXNwYWNlIGNvbnZlcnNpb24pIAo+ID4+Pj4+Pj4+Pj4+IHByb3BlcnR5IHRvCj4gPj4+Pj4+ Pj4+Pj4gY29udHJvbCB0aGlzIC0gcHJpbWFyaWx5IHBlci1wbGFuZSBmb3IgZnJhbWVidWZmZXIt PnBpcGVsaW5lIAo+ID4+Pj4+Pj4+Pj4+IENTQywgYnV0Cj4gPj4+Pj4+Pj4+Pj4gcGVyaGFwcyBv bmUgcGVyIENSVEMgdG9vIGZvciBkZXZpY2VzIHdoaWNoIGhhdmUgYW4gUkdCIAo+ID4+Pj4+Pj4+ Pj4+IHBpcGVsaW5lIGFuZAo+ID4+Pj4+Pj4+Pj4+IHdhbnQgdG8gb3V0cHV0IGluIFlVViB0byB0 aGUgZGlzcGxheToKPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IE5hbWU6ICJDU0MiCj4gPj4+ Pj4+Pj4+Pj4gVHlwZTogRU5VTSB8IEFUT01JQzsKPiA+Pj4+Pj4+Pj4+PiBFbnVtIHZhbHVlcyAo cmVwcmVzZW50YXRpdmUpOgo+ID4+Pj4+Pj4+Pj4+ICJkZWZhdWx0IjoKPiA+Pj4+Pj4+Pj4+PiAg ICAgU2FtZSBiZWhhdmlvdXIgYXMgbm93LiAiU29tZSBraW5kIiBvZiBZQ2JDci0+UkdCIGNvbnZl cnNpb24KPiA+Pj4+Pj4+Pj4+PiAgICAgZm9yIFlDYkNyIGJ1ZmZlcnMsIGJ5cGFzcyBmb3IgUkdC IGJ1ZmZlcnMKPiA+Pj4+Pj4+Pj4+PiAiZGlzYWJsZSI6Cj4gPj4+Pj4+Pj4+Pj4gICAgIEV4cGxp Y2l0bHkgZGlzYWJsZSBhbGwgY29sb3JzcGFjZSBjb252ZXJzaW9uIChpLmUuIHVzZSBhbgo+ID4+ Pj4+Pj4+Pj4+ICAgICBpZGVudGl0eSBtYXRyaXgpLgo+ID4+Pj4+Pj4+Pj4+ICJZQ2JDciB0byBS R0I6IEJULjcwOSI6Cj4gPj4+Pj4+Pj4+Pj4gICAgIE9ubHkgdmFsaWQgZm9yIFlDYkNyIGZvcm1h dHMuIENTQyBpbiBhY2NvcmRhbmNlIHdpdGggQlQuNzA5Cj4gPj4+Pj4+Pj4+Pj4gICAgIHVzaW5n IFsxNi4uMjM1XSBmb3IgKDgtYml0KSBsdW1hIHZhbHVlcywgYW5kIFsxNi4uMjQwXSBmb3IKPiA+ Pj4+Pj4+Pj4+PiAgICAgOC1iaXQgY2hyb21hIHZhbHVlcy4gRm9yIDEwLWJpdCBmb3JtYXRzLCB0 aGUgcmFuZ2UgCj4gPj4+Pj4+Pj4+Pj4gbGltaXRzIGFyZQo+ID4+Pj4+Pj4+Pj4+ICAgICBtdWx0 aXBsaWVkIGJ5IDQuCj4gPj4+Pj4+Pj4+Pj4gIllDYkNyIHRvIFJHQjogQlQuNzA5IGZ1bGwtc3dp bmciOgo+ID4+Pj4+Pj4+Pj4+ICAgICBPbmx5IHZhbGlkIGZvciBZQ2JDciBmb3JtYXRzLiBDU0Mg aW4gYWNjb3JkYW5jZSB3aXRoIAo+ID4+Pj4+Pj4+Pj4+IEJULjcwOSwKPiA+Pj4+Pj4+Pj4+PiAg ICAgYnV0IHVzaW5nIHRoZSBmdWxsIHJhbmdlIG9mIGVhY2ggY2hhbm5lbC4KPiA+Pj4+Pj4+Pj4+ PiAiWUNiQ3IgdG8gUkdCOiBVc2UgQ1RNIjoqCj4gPj4+Pj4+Pj4+Pj4gICAgIE9ubHkgdmFsaWQg Zm9yIFlDYkNyIGZvcm1hdHMuIFVzZSB0aGUgbWF0cml4IGFwcGxpZWQgdmlhIAo+ID4+Pj4+Pj4+ Pj4+IHRoZQo+ID4+Pj4+Pj4+Pj4+ICAgICBwbGFuZSdzIENUTSBwcm9wZXJ0eQo+ID4+Pj4+Pj4+ Pj4+ICJSR0IgdG8gUkdCOiBVc2UgQ1RNIjoqCj4gPj4+Pj4+Pj4+Pj4gICAgIE9ubHkgdmFsaWQg Zm9yIFJHQiBmb3JtYXRzLiBVc2UgdGhlIG1hdHJpeCBhcHBsaWVkIHZpYSB0aGUKPiA+Pj4+Pj4+ Pj4+PiAgICAgcGxhbmUncyBDVE0gcHJvcGVydHkKPiA+Pj4+Pj4+Pj4+PiAiVXNlIENUTSI6Kgo+ ID4+Pj4+Pj4+Pj4+ICAgICBWYWxpZCBmb3IgYW55IGZvcm1hdC4gVXNlIHRoZSBtYXRyaXggYXBw bGllZCB2aWEgdGhlIAo+ID4+Pj4+Pj4+Pj4+IHBsYW5lJ3MKPiA+Pj4+Pj4+Pj4+PiAgICAgQ1RN IHByb3BlcnR5Cj4gPj4+Pj4+Pj4+Pj4gLi4uIGFueSBvdGhlciB2YWx1ZXMgZm9yIEJULjYwMSwg QlQuMjAyMCwgUkdCIHRvIFlDYkNyIGV0Yy4gCj4gPj4+Pj4+Pj4+Pj4gZXRjLiBhcwo+ID4+Pj4+ Pj4+Pj4+IHRoZXkgYXJlIHJlcXVpcmVkLgo+ID4+Pj4+Pj4+Pj4gSGF2aW5nIHNvbWUgUkdCMlJH QiBhbmQgWUNCQ1IyUkdCIHRoaW5ncyBpbiB0aGUgc2FtZSBwcm9wZXJ0eSAKPiA+Pj4+Pj4+Pj4+ IHNlZW1zCj4gPj4+Pj4+Pj4+PiB3ZWlyZC4gSSB3b3VsZCBqdXN0IGdvIHdpdGggc29tZXRoaW5n IHZlcnkgc2ltcGxlIGxpa2U6Cj4gPj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4gWUNCQ1JfVE9fUkdC X0NTQzoKPiA+Pj4+Pj4+Pj4+ICogQlQuNjAxCj4gPj4+Pj4+Pj4+PiAqIEJULjcwOQo+ID4+Pj4+ Pj4+Pj4gKiBjdXN0b20gbWF0cml4Cj4gPj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiBJIHRoaW5rIHdl J3ZlIGFncmVlZCBpbiAjZHJpLWRldmVsIHRoYXQgdGhpcyBDU0MgcHJvcGVydHkKPiA+Pj4+Pj4+ Pj4gY2FuJ3Qvc2hvdWxkbid0IGJlIG1hcHBlZCBvbi10byB0aGUgZXhpc3RpbmcgKGhhcmR3YXJl IAo+ID4+Pj4+Pj4+PiBpbXBsZW1lbnRpbmcKPiA+Pj4+Pj4+Pj4gdGhlKSBDVE0gcHJvcGVydHkg LSBldmVuIGluIHRoZSBjYXNlIG9mIHBlci1wbGFuZSBjb2xvciAKPiA+Pj4+Pj4+Pj4gbWFuYWdl bWVudCAtCj4gPj4+Pj4+Pj4+IGJlY2F1c2UgQ1NDIG5lZWRzIHRvIGJlIGRvbmUgYmVmb3JlIERF R0FNTUEuCj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IFNvLCBJJ20gaW4gZmF2b3VyIG9mIGdvaW5n IHdpdGggd2hhdCB5b3Ugc3VnZ2VzdGVkIGluIHRoZSAKPiA+Pj4+Pj4+Pj4gZmlyc3QgcGxhY2U6 Cj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IEEgbmV3IFlDQkNSX1RPX1JHQl9DU0MgcHJvcGVydHks IGVudW0gdHlwZSwgd2l0aCBhIGxpc3Qgb2YgZml4ZWQKPiA+Pj4+Pj4+Pj4gY29udmVyc2lvbnMu IEknZCBkcm9wIHRoZSBjdXN0b20gbWF0cml4IGZvciBub3csIGFzIHdlJ2QgbmVlZCAKPiA+Pj4+ Pj4+Pj4gdG8gYWRkCj4gPj4+Pj4+Pj4+IGFub3RoZXIgcHJvcGVydHkgdG8gYXR0YWNoIHRoZSBj dXN0b20gbWF0cml4IGJsb2IgdG9vLgo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiBJIHN0aWxsIHRo aW5rIHdlIG5lZWQgYSB3YXkgdG8gc3BlY2lmeSB3aGV0aGVyIHRoZSBzb3VyY2UgZGF0YSAKPiA+ Pj4+Pj4+Pj4gcmFuZ2UKPiA+Pj4+Pj4+Pj4gaXMgYnJvYWRjYXN0L2Z1bGwtcmFuZ2UsIHNvIHBl cmhhcHMgdGhlIGVudW0gbGlzdCBzaG91bGQgYmUgCj4gPj4+Pj4+Pj4+IGV4cGFuZGVkCj4gPj4+ Pj4+Pj4+IHRvIGFsbCBjb21iaW5hdGlvbnMgb2YgQlQuNjAxL0JULjcwOSArIGJyb2FkY2FzdC9m dWxsLXJhbmdlLgo+ID4+Pj4+Pj4+IFNvdW5kcyByZWFzb25hYmxlLiBOb3QgdGhhdCBtdWNoIGZ1 bGwgcmFuZ2UgWUNiQ3Igc3R1ZmYgb3V0IHRoZXJlCj4gPj4+Pj4+Pj4gcGVyaGFwcy4gV2VsbCwg YXBhcnQgZnJvbSBqcGVncyBJIHN1cHBvc2UuIEJ1dCBubyBoYXJtIGluIGJlaW5nIAo+ID4+Pj4+ Pj4+IGFibGUKPiA+Pj4+Pj4+PiB0byBkZWFsIHdpdGggaXQuCj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+ Pj4gKEknbSBub3Qgc3VyZSB3aGF0IHRoZSBjYW5vbmljYWwgbmFtaW5nIGZvciAKPiA+Pj4+Pj4+ Pj4gYnJvYWRjYXN0L2Z1bGwtcmFuZ2UgaXMsCj4gPj4+Pj4+Pj4+IHdlIGNhbGwgdGhlbSBuYXJy b3cgYW5kIHdpZGUpCj4gPj4+Pj4+Pj4gV2UgdGVuZCB0byBjYWxsIHRoZW0gZnVsbCB2cy4gbGlt aXRlZCByYW5nZS4gVGhhdCdzIGhvdyBvdXIKPiA+Pj4+Pj4+PiAiQnJvYWRjYXN0IFJHQiIgcHJv cGVydHkgaXMgZGVmaW5lZCBhcyB3ZWxsLgo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+PiBPSywgdXNpbmcg dGhlIHNhbWUgb25lcyBzb3VuZHMgc2Vuc2libGUuCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4gQW5k IHRyeWluZyB0byB1c2UgdGhlIHNhbWUgdGhpbmcgZm9yIHRoZSBjcnRjIHN0dWZmIGlzIAo+ID4+ Pj4+Pj4+Pj4gcHJvYmFibHkgbm90Cj4gPj4+Pj4+Pj4+PiBnb2luZyB0byBlbmQgd2VsbC4gTGlr ZSBEYW5pZWwgc2FpZCB3ZSBhbHJlYWR5IGhhdmUgdGhlCj4gPj4+Pj4+Pj4+PiAnQnJvYWRjYXN0 IFJHQicgcHJvcGVydHkgbXVkZHlpbmcgdGhlIHdhdGVycyB0aGVyZSwgYW5kIHRoYXQgCj4gPj4+ Pj4+Pj4+PiBzdHVmZgo+ID4+Pj4+Pj4+Pj4gYWxzbyB0aWVzIGluIHdpdGggd2hhdCBjb2xvcnNw YWNlIHdlIHNpZ25hbCB0byB0aGUgc2luayB2aWEKPiA+Pj4+Pj4+Pj4+IGluZm9mcmFtZXMvd2hh dGV2ZXIgdGhlIERQIHRoaW5nIHdhcyBjYWxsZWQuIFNvIG15IGd1dCAKPiA+Pj4+Pj4+Pj4+IGZl ZWxpbmcgaXMKPiA+Pj4+Pj4+Pj4+IHRoYXQgdHJ5aW5nIHRvIHVzZSB0aGUgc2FtZSBwcm9wZXJ0 eSBldmVyeXdoZXJlIHdpbGwganVzdCBlbmQgdXAKPiA+Pj4+Pj4+Pj4+IG1lc3N5Lgo+ID4+Pj4+ Pj4+PiBZZWFoLCBhZ3JlZWQuIElmL3doZW4gc29tZW9uZSB3YW50cyB0byBhZGQgQ1NDIG9uIHRo ZSBvdXRwdXQgCj4gPj4+Pj4+Pj4+IG9mIGEgQ1JUQwo+ID4+Pj4+Pj4+PiAoYWZ0ZXIgR0FNTUEp LCB3ZSBjYW4gYWRkIGEgbmV3IHByb3BlcnR5Lgo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiBUaGF0 IG1ha2VzIG1lIHdvbmRlciBhYm91dCBjYWxsaW5nIHRoaXMgb25lIAo+ID4+Pj4+Pj4+PiBTT1VS Q0VfWUNCQ1JfVE9fUkdCX0NTQyB0bwo+ID4+Pj4+Pj4+PiBiZSBleHBsaWNpdCB0aGF0IGl0IGRl c2NyaWJlcyB0aGUgc291cmNlIGRhdGEuIFRoZW4gd2UgY2FuIAo+ID4+Pj4+Pj4+PiBsYXRlciBh ZGQKPiA+Pj4+Pj4+Pj4gU0lOS19SR0JfVE9fWUNCQ1JfQ1NDLCBhbmQgaXQgd2lsbCBiZSByZWFz b25hYmx5IG9idmlvdXMgdGhhdCBpdHMKPiA+Pj4+Pj4+Pj4gdmFsdWUgZGVzY3JpYmVzIHRoZSBv dXRwdXQgZGF0YSByYXRoZXIgdGhhbiB0aGUgaW5wdXQgZGF0YS4KPiA+Pj4+Pj4+PiBTb3VyY2Ug YW5kIHNpbmsgaGF2ZSBhIHNsaWdodCBjb25ub3RhdGlvbiBpbiBteSBtaW5kIHdydC4gdGhlIAo+ ID4+Pj4+Pj4+IGJveCB0aGF0Cj4gPj4+Pj4+Pj4gcHJvZHVjZXMgdGhlIGRpc3BsYXkgc2lnbmFs IGFuZCB0aGUgYm94IHRoYXQgZWF0cyB0aGUgc2lnbmFsLiAKPiA+Pj4+Pj4+PiBTbyB0cnlpbmcK PiA+Pj4+Pj4+PiB0byB1c2UgdGhlIHNhbWUgdGVybXMgdG8gZGVzY3JpYmUgdGhlIGludGVybmFs cyBvZiB0aGUgcGlwZWxpbmUgCj4gPj4+Pj4+Pj4gaW5zaWRlCj4gPj4+Pj4+Pj4gdGhlICJzb3Vy Y2UgYm94IiBtaWd0aCBsZWFkIHRvIHNvbWUgY29uZnVzaW9uLiBCdXQgd2UgZG8gCj4gPj4+Pj4+ Pj4gcHJvYmFibHkgbmVlZAo+ID4+Pj4+Pj4+IHNvbWUgZGVjZW50IG5hbWVzIGZvciB0aGVzZSB0 byBtYWtlIHRoZSBsYXlvdXQgb2YgdGhlIHBpcGVsaW5lIAo+ID4+Pj4+Pj4+IGNsZWFyLgo+ID4+ Pj4+Pj4+IElucHV0L291dHB1dCBhcmUgdGhlIG90aGVyIG5hbWVzIHRoYXQgcG9wcGVkIHRvIG15 IG1pbmQgYnV0IAo+ID4+Pj4+Pj4+IHRob3NlIGFyZW4ndAo+ID4+Pj4+Pj4+IG5lY2Vzc2FyaWx5 IGFueSBiZXR0ZXIuIEJ1dCBpbiB0aGUgZW5kIEkgdGhpbmsgSSBjb3VsZCBsaXZlIAo+ID4+Pj4+ Pj4+IHdpdGggd2hhdGV2ZXIKPiA+Pj4+Pj4+PiBuYW1lcyB3ZSBoYXBwZW4gdG8gcGljaywgYXMg bG9uZyBhcyB3ZSBkb2N1bWVudCB0aGUgcGlwZWxpbmUgCj4gPj4+Pj4+Pj4gY2xlYXJseS4KPiA+ Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IExvbmcgYWdvIEkgZGlkIHdvbmRlciBpZiB3ZSBzaG91bGQganVz dCBzdGFydCBpbmRleGluZyB0aGVzZSAKPiA+Pj4+Pj4+PiB0aGluZ3MKPiA+Pj4+Pj4+PiBzb21l aG93LCBhbmQgdGhlbiBqdXN0IGxvb2tpbmcgYXQgdGhlIGluZGV4IHNob3VsZCB0ZWxsIHlvdSB0 aGUgCj4gPj4+Pj4+Pj4gb3JkZXIKPiA+Pj4+Pj4+PiBvZiB0aGUgb3BlcmF0aW9ucy4gQnV0IHdl IGFscmVhZHkgaGF2ZSB0aGUgY3RtL2dhbW1hIHcvbyBhbnkgCj4gPj4+Pj4+Pj4gaW5kZXhlcyBz bwo+ID4+Pj4+Pj4+IHRoYXQgaWRlYSBwcm9iYWJseSBpc24ndCBzbyBncmVhdCBhbnltb3JlLgo+ ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IEkgd2FudCB0byBhdm9pZCBjb25mdXNpb24gY2F1c2VkIGJ5 IGVuZGluZyB1cCB3aXRoIHR3bwo+ID4+Pj4+Pj4+PiB7Q1N9X1RPX3tDU31fQ1NDIHByb3BlcnRp ZXMsIHdoZXJlIG9uZSBpcyBkZXNjcmliaW5nIHRoZSBkYXRhIAo+ID4+Pj4+Pj4+PiB0byB0aGUK PiA+Pj4+Pj4+Pj4gbGVmdCBvZiBpdCwgYW5kIHRoZSBvdGhlciBkZXNjcmliaW5nIHRoZSBkYXRh IHRvIHRoZSByaWdodCBvZiAKPiA+Pj4+Pj4+Pj4gaXQsIHdpdGgKPiA+Pj4+Pj4+Pj4gbm8gcmVh bCB3YXkgb2YgdGVsbGluZyB3aGljaCB3YXkgYXJvdW5kIGl0IGlzLgo+ID4+Pj4+Pj4+IE5vdCBy ZWFsbHkgc3VyZSB3aGF0IHlvdSBtZWFuLiBJdCBzaG91bGQgYWx3YXlzIGJlCj4gPj4+Pj4+Pj4g PGxlZnQ+X3RvXzxyaWdodD5fY3NjLgo+ID4+Pj4+Pj4gQWdyZWVkLCBsZWZ0LXRvLXJpZ2h0LiBC dXQgZm9yIGluc3RhbmNlIG9uIGEgQ1NDIHByb3BlcnR5IAo+ID4+Pj4+Pj4gcmVwcmVzZW50aW5n Cj4gPj4+Pj4+PiBhIENSVEMgb3V0cHV0IENTQyAoanVzdCBiZWZvcmUgaGl0dGluZyB0aGUgY29u bmVjdG9yKSwgd2hpY2ggCj4gPj4+Pj4+PiBoYXBwZW5zCj4gPj4+Pj4+PiB0byBiZSBjb252ZXJ0 aW5nIFJHQiB0byBZQ2JDcjoKPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBDUlRDIC0+IEdBTU1BIC0+IFJH Ql9UT19ZQ0JDUl9DU0MKPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiAuLi50aGUgZW51bSB2YWx1ZSAiQlQu NjAxIExpbWl0ZWQiIG1lYW5zIHRoYXQgdGhlIGRhdGEgb24gdGhlIAo+ID4+Pj4+Pj4gKnJpZ2h0 Kgo+ID4+Pj4+Pj4gb2YgUkdCX1RPX1lDQkNSX0NTQyBpcyAiQlQuNjAxIExpbWl0ZWQiCj4gPj4+ Pj4+Pgo+ID4+Pj4+Pj4gT24gdGhlIG90aGVyIGhhbmQgZm9yIGEgQ1NDIG9uIHRoZSBpbnB1dCBv ZiBhIHBsYW5lLCB3aGljaCAKPiA+Pj4+Pj4+IGhhcHBlbnMgdG8KPiA+Pj4+Pj4+IGJlIGNvbnZl cnRpbmcgWUNiQ3IgdG8gUkdCOgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IFJBTSAtPiBZQ0JDUl9UT19S R0JfQ1NDIC0+IERFR0FNTUEKPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiAuLi50aGUgZW51bSB2YWx1ZSAi QlQuNjAxIExpbWl0ZWQiIG1lYW5zIHRoYXQgdGhlIGRhdGEgb24gdGhlIAo+ID4+Pj4+Pj4gKmxl ZnQqCj4gPj4+Pj4+PiBvZiBZQ0JDUl9UT19SR0JfQ1NDIGlzICJCVC42MDEgTGltaXRlZCIuCj4g Pj4+Pj4+Pgo+ID4+Pj4+Pj4gSW5kaWNhdGluZyBpbiB0aGUgcHJvcGVydHkgbmFtZSB3aGV0aGVy IGl0cyB2YWx1ZSBpcyBkZXNjcmliaW5nIHRoZQo+ID4+Pj4+Pj4gZGF0YSBvbiB0aGUgbGVmdCBv ciB0aGUgcmlnaHQgaXMgbmVlZGVkIChhbmQgSSBkb24ndCB0aGluayAKPiA+Pj4+Pj4+IGluZmVy cmluZwo+ID4+Pj4+Pj4gdGhhdCAiaXQncyBhbHdheXMgdGhlIFlDQkNSIG9uZSIgaXMgdGhlIGNv cnJlY3QgYXBwcm9hY2gpLgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IEluIG15IGV4YW1wbGUgYWJvdmUs ICJTT1VSQ0VfeHh4IiB3b3VsZCBtZWFuIHRoZSBlbnVtIHZhbHVlIGlzCj4gPj4+Pj4+PiBkZXNj cmliaW5nIHRoZSAic291cmNlIiBkYXRhIChpLmUuIHRoZSBkYXRhIG9uIHRoZSBsZWZ0KSBhbmQK PiA+Pj4+Pj4+ICJTSU5LX3h4eCIgd291bGQgbWVhbiB0aGUgZW51bSB2YWx1ZSBpcyBkZXNjcmli aW5nIHRoZSAic2luayIgZGF0YQo+ID4+Pj4+Pj4gKGkuZS4gdGhlIGRhdGEgb24gdGhlIHJpZ2h0 KS4gVGhpcyBkb2Vzbid0IG5lY2Vzc2FyaWx5IG5lZWQgdG8gCj4gPj4+Pj4+PiBpbmZlciBhCj4g Pj4+Pj4+PiBwYXJ0aWN1bGFyIHBvaW50IGluIHRoZSBwaXBlbGluZS4KPiA+Pj4+Pj4gUmlnaHQs IHNvIEkgZ3Vlc3MgeW91IHdhbnQgdGhlIHZhbHVlcyB0byBiZSBuYW1lZCAiPGE+IHRvIDxiPiIg YXMgCj4gPj4+Pj4+IHdlbGw/Cj4gPj4+Pj4+IFllcywgSSB0aGluayB3ZSdsbCBiZSB3YW50aW5n IHRoYXQgYXMgd2VsbC4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gU28gd2hhdCB3ZSBtaWdodCBuZWVkIGlz IHNvbWV0aGluZyBsaWtlOgo+ID4+Pj4+PiBlbnVtIFlDQkNSX1RPX1JHQl9DU0MKPiA+Pj4+Pj4g ICAqIFlDYkNyIEJULjYwMSBsaW1pdGVkIHRvIFJHQiBCVC43MDkgZnVsbAo+ID4+Pj4+PiAgICog WUNiQ3IgQlQuNzA5IGxpbWl0ZWQgdG8gUkdCIEJULjcwOSBmdWxsIDx0aGlzIHdvdWxkIGJlIHRo ZSAKPiA+Pj4+Pj4gbGlrZWx5IGRlZmF1bHQgdmFsdWUgSU1PPgo+ID4+Pj4+PiAgICogWUNiQ3Ig QlQuNjAxIGxpbWl0ZWQgdG8gUkdCIEJULjIwMjAgZnVsbAo+ID4+Pj4+PiAgICogWUNiQ3IgQlQu NzA5IGxpbWl0ZWQgdG8gUkdCIEJULjIwMjAgZnVsbAo+ID4+Pj4+PiAgICogWUNiQ3IgQlQuMjAy MCBsaW1pdGVkIHRvIFJHQiBCVC4yMDIwIGZ1bGwKPiA+Pj4+Pj4KPiA+Pj4+Pj4gQW5kIHRoYW5r cyB0byBCVC4yMDIwIHdlJ2xsIG5lZWQgYSBSR0ItPlJHQiBDU0MgcHJvcGVydHkgYXMgd2VsbC4g Cj4gPj4+Pj4+IEVnOgo+ID4+Pj4+PiBlbnVtIFJHQl9UT19SR0JfQ1NDCj4gPj4+Pj4+ICAgKiBi eXBhc3MgKG9yIHNlcGFyYXRlIDcwOS0+NzA5LCAyMDIwLT4yMDIwPykgPHRoaXMgd291bGQgYmUg dGhlIAo+ID4+Pj4+PiBkZWZhdWx0Pgo+ID4+Pj4+PiAgICogUkdCIEJULjcwOSBmdWxsIHRvIFJH QiBCVC4yMDIwIGZ1bGwKPiA+Cj4gPiBJIGxpa2UgdGhpcyBhcHByb2FjaCwgZnJvbSBhIHBvaW50 IG9mIHZpZXcgb2YgYmVpbmcgZXhwbGljaXQgYW5kCj4gPiBkaXNjb3ZlcmFibGUgYnkgdXNlcnNw YWNlLiBJdCBhbHNvIGhhcHBlbnMgdG8gbWFwIHF1aXRlIG5pY2VseSB0byBvdXIKPiA+IGhhcmR3 YXJlLi4uIHdlIGhhdmUgYSBtYXRyaXggYmVmb3JlIGRlZ2FtbWEsIHNvIHdlIGNvdWxkIGRvIGEK PiA+IENTQyArIEdhbXV0IGNvbnZlcnNpb24gdGhlcmUgaW4gb25lIGdvLCB3aGljaCBpcyBhcHBh cmVudGx5IG5vdCAxMDAlCj4gPiBtYXRoZW1hdGljYWxseSBjb3JyZWN0LCBidXQgaW4gZ2VuZXJh bCBpcyBnb29kIGVub3VnaC4KPiA+Cj4gPiAuLi4gaG93ZXZlciBoYXZpbmcgdGFsa2VkIHRoaXMg b3ZlciBhIGJpdCB3aXRoIHNvbWVvbmUgd2hvIHVuZGVyc3RhbmRzCj4gPiB0aGUgZGV0YWlsIGEg bG90IGJldHRlciB0aGFuIG1lLCBpdCBzb3VuZHMgbGlrZSB0aGUgImNvcnJlY3QiIHRoaW5nIHRv Cj4gPiBkbyBhcyBwZXIgdGhlIHNwZWMgaXM6Cj4gPgo+ID4gQ1NDIC0+IERFR0FNTUEgLT4gR0FN VVQKPiA+Cj4gPiBlLmcuCj4gPgo+ID4gWUNiQ3IgYnQuNjAxIGxpbWl0ZWQgdG8gUkdCIGJ0LjYw MSBmdWxsIC0+IGRlZ2FtbWEgLT4KPiA+ICAgICBSR0IgYnQuNjAxIGZ1bGwgdG8gUkdCIGJ0Ljcw OSBmdWxsCj4gPgo+ID4gU28gdGhhdCBzb3VuZHMgbGlrZSB3aGF0IHdlIG5lZWQgdG8gc3VwcG9y dCBpbiB0aGUgQVBJLCBhbmQgYWxzbwo+ID4gc291bmRzIG1vcmUgbGlrZSB0aGUgInNlcGFyYXRl IHByb3BlcnRpZXMiIGFwcHJvYWNoLgo+IEkgYWdyZWUuCj4gPgo+ID4+Pj4+Pgo+ID4+Pj4+PiBB bHRlcm5hdGl2ZXMgd291bGQgaW52b2x2ZSB0d28gcHJvcGVydGllcyB0byBkZWZpbmUgdGhlIGlu cHV0IGFuZCAKPiA+Pj4+Pj4gb3V0cHV0Cj4gPj4+Pj4+IGZyb20gdGhlIENTQyBzZXBhcmF0ZWx5 LCBidXQgdGhlbiB5b3UgbG9zZSB0aGUgY2FwYWJpbGl0eSB0byBzZWUgCj4gPj4+Pj4+IHdoaWNo Cj4gPj4+Pj4+IGNvbWJpbmF0aW9ucyBhcmUgYWN0dWFsbHkgc3Vwb29ydGVkLgo+ID4+Pj4+IEkg d2FzIHRoaW5raW5nIGFib3V0IHRoaXMgdG9vLCBvciB3b3VsZCBpdCBtYWtlIG1vcmUgc2Vuc2Ug dG8gCj4gPj4+Pj4gY3JlYXRlIHR3bwo+ID4+Pj4+IHByb3BlcnRpZXM6Cj4gPj4+Pj4gLSBvbmUg Zm9yIGdhbXV0IG1hcHBpbmcgKGNhc2VzIGxpa2UgUkdCNzA5LT5SR0IyMDIwKQo+ID4+Pj4+IC0g b3RoZXIgb25lIGZvciBDb2xvciBzcGFjZSBjb252ZXJzaW9uIChjYXNlcyBsaWxlIFlVViA3MDkg LT4gUkdCIAo+ID4+Pj4+IDcwOSkKPiA+Pj4+Pgo+ID4+Pj4+IEdhbXV0IG1hcHBpbmcgY2FuIHJl cHJlc2VudCBhbnkgb2YgdGhlIGZpeCBmdW5jdGlvbiBtYXBwaW5nLCAKPiA+Pj4+PiB3ZXJlYXMg Q1NDCj4gPj4+Pj4gY2FuIGJyaW5nIHVwIGFueSBwcm9ncmFtbWFibGUgbWF0cml4Cj4gPj4+Pj4K PiA+Pj4+PiBJbnRlcm5hbGx5IHRoZXNlIHByb3BlcnRpZXMgY2FuIHVzZSB0aGUgc2FtZSBIVyB1 bml0IG9yIGV2ZW4gc2FtZSAKPiA+Pj4+PiBmdW5jdGlvbi4KPiA+Pj4+PiBEb2VzIGl0IHNvdW5k IGFueSBnb29kID8KPiA+Cj4gPiBJdCBzZWVtcyB0byBtZSB0aGF0IGFjdHVhbGx5IHRoZSB0d28g YXBwcm9hY2hlcyBjYW4gYmUgY29tYmluZWQgaW50bwo+ID4gdGhlIHNhbWUgdGhpbmc6Cj4gPiAg KiBXZSBkZWZpbml0ZWx5IG5lZWQgYSBZQ2JDci10by1SR0IgY29udmVyc2lvbiBiZWZvcmUgZGVn YW1tYQo+ID4gICAgKGZvciBjb252ZXJ0aW5nIFlVViBkYXRhIHRvIFJHQiwgaW4gc29tZSBmbGF2 b3VyKQo+ID4gICogV2UgZGVmaW5pdGVseSBuZWVkIGFuIFJHQi10by1SR0IgY29udmVyc2lvbiBh ZnRlciBnYW1tYSB0byBoYW5kbGUKPiA+ICAgIDcwOSBsYXllcnMgYmxlbmRlZCB3aXRoIFJlYy4y MDIwLgo+ID4gVGhlIGV4YWN0IGNvbnZlcnNpb24gZWFjaCBvZiB0aG9zZSBwcm9wZXJ0aWVzIHJl cHJlc2VudHMgKENTQyArIGdhbXV0LAo+ID4gQ1NDIG9ubHksIGdhbXV0IG9ubHkpIGNhbiBiZSBp bXBsaWNpdCBpbiB0aGUgZW51bSBuYW1lLgo+ID4KPiA+IEZvciBoYXJkd2FyZSB3aGljaCBoYXMg YSBmaXhlZC1mdW5jdGlvbiBDU0MgYmVmb3JlIERFR0FNTUEgd2l0aCBhCj4gPiBtYXRyaXggYWZ0 ZXIgREVHQU1NQSwgSSdkIGV4cGVjdCB0byBzZWUgc29tZXRoaW5nIGxpa2UgYmVsb3cuIE5vbmUg b2YKPiA+IHRoZSBZQ0JDUl9UT19SR0JfQ1NDIHZhbHVlcyBpbmNsdWRlIGEgZ2FtdXQgY29udmVy c2lvbiwgYmVjYXVzZSB0aGF0Cj4gPiBpcyBpbnN0ZWFkIGV4cG9zZWQgd2l0aCB0aGUgUkdCX1RP X1JHQl9DU0MgcHJvcGVydHkgKHdoaWNoIHJlcHJlc2VudHMKPiA+IHRoZSBoYXJkd2FyZSBtYXRy aXgpCj4gPgo+ID4gWUNCQ1JfVE9fUkdCX0NTQyAoYmVmb3JlIERFR0FNTUEpOgo+ID4gICAgIFlD YkNyIEJULjYwMSBsaW1pdGVkIHRvIFJHQiBCVC42MDEgZnVsbAo+ID4gICAgIFlDYkNyIEJULjcw OSBsaW1pdGVkIHRvIFJHQiBCVC43MDkgZnVsbAo+ID4gICAgIFlDYkNyIEJULjIwMjAgbGltaXRl ZCB0byBSR0IgQlQuMjAyMCBmdWxsCj4gPgo+ID4gUkdCX1RPX1JHQl9DU0MgKGFmdGVyIERFR0FN TUEpOgo+ID4gICAgIFJHQiBCVC42MDEgZnVsbCB0byBSR0IgQlQuNzA5IGZ1bGwKPiA+ICAgICBS R0IgQlQuNzA5IGZ1bGwgdG8gUkdCIEJULjIwMjAgZnVsbAo+ID4KPiA+Cj4gPiBPbiB0aGUgb3Ro ZXIgaGFuZCwgb24gaGFyZHdhcmUgd2hpY2ggZG9lcyBhIENTQyArIEdhbXV0IGNvbnZlcnNpb24g aW4KPiA+IG9uZSBnbywgYmVmb3JlIERFR0FNTUEgKGxpa2Ugb3VycyksIHlvdSBtaWdodCBoYXZl Ogo+ID4KPiA+IFlDQkNSX1RPX1JHQl9DU0MgKGJlZm9yZSBERUdBTU1BKToKPiA+ICAgICBZQ2JD ciBCVC42MDEgbGltaXRlZCB0byBSR0IgQlQuNjAxIGZ1bGwKPiA+ICAgICBZQ2JDciBCVC42MDEg bGltaXRlZCB0byBSR0IgQlQuNzA5IGZ1bGwKPiA+ICAgICBZQ2JDciBCVC43MDkgbGltaXRlZCB0 byBSR0IgQlQuNzA5IGZ1bGwKPiA+ICAgICBZQ2JDciBCVC4yMDIwIGxpbWl0ZWQgdG8gUkdCIEJU LjIwMjAgZnVsbAo+ID4KPiA+IFJHQl9UT19SR0JfQ1NDIChhZnRlciBERUdBTU1BKToKPiA+ICAg ICBOb3Qgc3VwcG9ydGVkCj4gPgo+ID4gVXNlcnNwYWNlIGNhbiBwYXJzZSB0aGUgdHdvIHByb3Bl cnRpZXMgdG8gZmlndXJlIG91dCBpdHMgb3B0aW9ucyB0bwo+ID4gZ2V0IGZyb20gZGVzaXJlZCBp bnB1dCAtPiBkZXNpcmVkIG91dHB1dC4gSXQgaXMgcGVyaGFwcyBhIGxpdHRsZQo+ID4gdmVyYm9z ZSwgYnV0IGl0J3MgZGVzY3JpcHRpdmUgYW5kIGZsZXhpYmxlLgo+ID4KPiBTZWVtcyB0byBiZSBh IGdvb2QgaWRlYSwgVmlsbGUgPwoKTG9va3MgcHJldHR5IHNhbmUgdG8gbWUuCgpUaG91Z2ggaG93 IHdlJ2xsIGRvIHRoZSBkZWdhbW1hL2dhbW1hIGlzIHJhdGhlciB1bmNsZWFyIHN0aWxsLgoKSSB0 aGluayB3ZSBtaWdodCBiZSBsb29raW5nIGF0IHR3byB2YXJpYW50cyBvZiBoYXJkd2FyZToKLSBB IGZ1bGx5IHByb2dyYW1tYWJsZSBvbmUgd2l0aCBzZXBhcmF0ZSBzdGFnZXM6CiAgY3NjIC0+IGRl Z2FtbWEgLT4gZ2FtdXQgLT4gZ2FtbWEKLSBBIHRvdGFsbHkgZml4ZWQgb25lIHdpdGgganVzdCBh IGZldyBkaWZmZXJlbnQgdmFyaWFudHMKICBvZiB0aGUgcGlwZWxpbmUgYmFrZWQgaW50byB0aGUg aGFyZHdhcmUgCgpJZiB3ZSB3YW50IHRvIGV4cG9zZSB0aGUgZ2FtbWEvZGVnYW1tYSB0byB0aGUg dXNlciwgaG93IGV4YWN0bHkgYXJlIHdlCmdvaW5nIHRvIGRvIHRoYXQgd2l0aCB0aGUgbGF0dGVy IGZvcm0gb3IgaGFyZHdhcmUuIEkgZ3Vlc3Mgd2UgY291bGQKc3BlY2lmeSB0aGF0IGlmIHRoZSBk ZWdhbW1hIHByb3BlcnR5IGlzIG5vdCBleHBvc2VkLCB0aGVyZSB3aWxsIGJlIGFuCmltcGxpY2l0 IGRlZ2FtbWEgc3RhZ2UgYmV0d2VlbiB0aGUgdHdvIGNzYyBhbmQgZ2FtdXQuIEFuZCBpZiBpdCBp cwpleHBvc2VkIHRoZSBvdXRwdXQgZnJvbSB0aGUgZmlyc3QgY3NjIGlzIG5vbi1saW5lYXIgYW5k IHRodXMgbmVlZHMKdGhlIGRlZ2FtbWEgcHJvZ3JhbW1lZCB0byBtYWtlIGl0IHNvIGJlZm9yZSB0 aGUgZ2FtdXQgbWFwcGluZy4KCkFuZCBwZXJoYXBzIGEgc2ltaWxhciBydWxlIGNvdWxkIHdvcmsg Zm9yIHRoZSBnYW1tYTsgSWYgaXQncyBwcmVzZW50CnRoZSBvdXRwdXQgZnJvbSB0aGUgZ2FtdXQg bWFwcGluZyBpcyBleHBlY3RlZCB0byBiZSBsaW5lYXIsIGFuZApvdGhlcndpc2Ugbm9uLWxpbmVh ci4gTm90IHF1aXRlIHN1cmUgYWJvdXQgdGhpcy4gSW4gZmFjdCBJIGRvbid0IHlldAprbm93IHdo YXQgb3VyIGhhcmR3YXJlIHdvdWxkIG91dHB1dCBmcm9tIHRoZSBlbmQgb2YgdGhlIGZpeGVkIHBp cGVsaW5lLgoKPiAKPiAtIFNoYXNoYW5rCj4gPj4+PiBJdCdzIGNlcnRhaW5seSBwb3NzaWJsZS4g T25lIHByb2JsZW0gaXMgdGhhdCB3ZSBjYW4ndCBpbmZvcm0gdXNlcnNwYWNlCj4gPj4+PiB1cGZy b250IHdoaWNoIGNvbWJpbmF0aW9ucyBhcmUgc3VwcG9ydGVkLiBXaGV0aGVyIHRoYXQncyBhIHJl YWwgCj4gPj4+PiBwcm9ibGVtCj4gPj4+PiBJJ20gbm90IHN1cmUuIFdpdGggYXRvbWljIHVzZXJz cGFjZSBjYW4gb2YgY291cnNlIGNoZWNrIHVwZnJvbnQgaWYKPiA+Pj4+IHNvbWV0aGluZyBjYW4g YmUgZG9uZSBvciBub3QsIGJ1dCB0aGUgbWFpbiBwcm9ibGVtIGlzIHRoZW4gY29taW5nIHVwCj4g Pj4+PiB3aXRoIGEgZmFsbGJhY2sgc3RyYXRlZ3kgdGhhdCBkb2Vzbid0IHN1Y2sgdG9vIGJhZGx5 Lgo+ID4+Pj4KPiA+Cj4gPiBUaGUgYXBwcm9hY2ggYWJvdmUgaGVscHMgbGltaXQgdGhlIHNldCBl eHBvc2VkIHRvIHVzZXJzcGFjZSB0byBiZSBvbmx5Cj4gPiB0aG9zZSB3aGljaCBhcmUgc3VwcG9y dGVkIC0gYmVjYXVzZSBkZXZpY2VzIHdoaWNoIGRvbid0IGhhdmUgc2VwYXJhdGUKPiA+IGhhcmR3 YXJlIGZvciB0aGUgdHdvIHN0YWdlcyB3b24ndCBleHBvc2UgdmFsdWVzIGZvciBib3RoLgo+ID4K PiA+Pj4+IEFueXdheXMsIEkgZG9uJ3QgdGhpbmsgSSBoYXZlIGFueSBzdHJvbmcgZmF2b3JpdGVz IGhlcmUuIFdvdWxkIGJlIG5pY2UKPiA+Pj4+IHRvIGhlYXIgd2hhdCBldmVyeW9uZSBlbHNlIHRo aW5rcy4KPiA+Pj4gSSBjb25mZXNzIHRvIGEgbGFjayBvZiBleHBlcmllbmNlIGluIHRoZSBzdWJq ZWN0IGhlcmUsIGJ1dCB3aGF0IGlzIAo+ID4+PiB0aGUgbW9yZSBjb21tb24KPiA+Pj4gcmVxdWVz dCBjb21pbmcgZnJvbSB1c2Vyc3BhY2U6IGNvbnZlcnRpbmcgWVVWIDwtPiBSR0IgYnV0IGtlZXBp bmcgCj4gPj4+IHRoZSBnYW1tdXQgbWFwcGluZwo+ID4+PiBzZXBhcmF0ZSwgb3IgWVVWIChnYW1t dXQgeCkgPC0+IFJHQiAoZ2FtbXV0IHkpID8gSW4gb3RoZXIgd29yZHM6IEkgCj4gPj4+IGNhbiBz ZWUgdGhlIHVzZWZ1bG5lc3MKPiA+Pj4gb2YgaGF2aW5nIGFuIGV4cGxpY2l0IHdheSBvZiBkZWNv bXBvc2luZyB0aGUgY29sb3IgbWFwcGluZyBwcm9jZXNzIAo+ID4+PiBhbmQgY29udHJvbCB0aGUK PiA+Pj4gcGFyYW1ldGVycywgYnV0IGhvdyBvZnRlbiBkbyBhcHBzIG9yIGNvbXBvc2l0b3JzIGdv IHRocm91Z2ggdGhlIAo+ID4+PiB3aG9sZSBjaGFpbj8KPiA+PiBSaWdodCBub3csIG1vcmUgb3Ig bGVzcyB0aGUgaW50ZXJlc3QgaXMgb24gdGhlIFJHQi0+WVVWIGNvbnZlcnNpb24gCj4gPj4gc2lk ZSwgY296IHRpbGwgbm93IEJUIDIwMjAgZ2FtdXQgd2FzIG5vdCBpbgo+ID4+IHBpY3R1cmUuIFJF QyA2MDEgYW5kIDcwOSBoYXZlIHZlcnkgY2xvc2UgZ2FtdXRzLCBzbyBpdCB3YXMgb2sgdG8gCj4g Pj4gYmxlbmQgZnJhbWVzIG1vc3RseSB3aXRob3V0IGJvdGhlcmluZyBhYm91dAo+ID4+IGdhbXV0 LCBidXQgZ29pbmcgZndkLCBvbmVzIFJFQyAyMDIwIGNvbWVzIGludG8gcGljdHVyZSwgd2UgbmVl ZCB0byAKPiA+PiBib3RoZXIgYWJvdXQgbWFwcGluZyBnYW11dHMgdG9vLCBlbHNlCj4gPj4gYmxl bmRpbmcgUmVjNzA5IGJ1ZmZlcnMgYW5kIFJlYzIwMjAgYnVmZmVycyB0b2dldGhlciB3b3VsZCBj YXVzZSB2ZXJ5IAo+ID4+IHZpc2libGUgZ2FtdXQgbWlzbWF0Y2guCj4gPj4KPiA+PiBTbyBjb25z aWRlcmluZyBmdXR1cmlzdGljIGRldmVsb3BtZW50cywgaXQgbWlnaHQgYmUgb2sgdG8gY29uc2lk ZXIgCj4gPj4gYm90aC4gU3RpbGwsIGFzIFZpbGxlIG1lbnRpb25lZCwgaXQgd291bGQgYmUgZ29v ZAo+ID4+IHRvIGhlYXIgZnJvbSBvdGhlciB0b28uCj4gPj4KPiA+Cj4gPiBZZWFoIEkgYWdyZWUg dGhhdCB3ZSBkZWZpbml0ZWx5IG5lZWQgdG8gY29uc2lkZXIgYm90aCBmb3IgYW55dGhpbmcgd2UK PiA+IGNvbWUgdXAgd2l0aCBub3cuCj4gPgo+ID4gQ2hlZXJzLAo+ID4gQnJpYW4KPiA+Cj4gPj4g LSBTaGFzaGFuawo+ID4+Pgo+ID4+PiBCZXN0IHJlZ2FyZHMsCj4gPj4+IExpdml1Cj4gPj4+Cj4g Pj4+PiAtLSAKPiA+Pj4+IFZpbGxlIFN5cmrDpGzDpAo+ID4+Pj4gSW50ZWwgT1RDCj4gPj4KCi0t IApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAo=