From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: Design review request: DRM color manager Date: Mon, 12 May 2014 15:56:49 +0530 Message-ID: <5370A1E9.3020106@intel.com> References: <20140422134757.GO10722@phenom.ffwll.local> <536A41B4.4030800@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: uma.shakar@intel.com, intel-gfx , dri-devel List-Id: intel-gfx@lists.freedesktop.org SGVsbG8gRGFuaWVsLAoKUGxlYXNlIGZpbmQgdGhlIGFjdHVhbCBwcm9ibGVtIHN0YXRlbWVudCBh bmQgZGVzaWduIG92ZXJ2aWV3IDoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gIFRoZXJlIGFyZSBkaWZmZXJlbnQgY29sb3Ig Y29ycmVjdGlvbiBtZXRob2RzLCBzdXBwb3J0ZWQgYnkgdmFyaW91cwogICAgIFNPQ3MsIGFjcm9z cyB2YXJpb3VzIHBsYXRmb3Jtcy4KMi4gIFRoZXNlIHByb3BlcnRpZXMgdmFyeSBwbGF0Zm9ybS1i eS1wbGF0Zm9ybSwgZHJpdmVyLXRvLWRyaXZlci4KICAgICAgRm9yIGV4YW1wbGUsIG9uZSBvZiB0 aGUgSW50ZWwgU09DIHN1cHBvcnQgQ1NDIGNvcnJlY3Rpb24sIEdhbW1hCmNvcnJlY3Rpb24sIEh1 ZSBhbmQgU2F0dXJhdGlvbiBjb3JyZWN0aW9uLCBCcmlnaHRuZXNzIGFuZCBDb250cmFzdCAKY29y cmVjdGlvbi4gT25lIG90aGVyIEludGVsIFNPQyBzdXBwb3J0cyB0d28gb2YgYWJvdmUgbWVudGlv bmVkIApwcm9wZXJ0aWVzLCBhbmQgMiBvdGhlciBwcm9wZXJ0aWVzLiBIYXJkbHkgYW55IG9mIHRo ZXNlIHByb3BlcnRpZXMgYXJlIApleHBvc2VkIHByb3Blcmx5IHRvIHVzZXJzcGFjZSB0byBiZSB1 c2VkIHRvIGl0cyByZWFsIHBvdGVudGlhbCBkdWUgdG8gCmxhY2sgb2YgcHJvcGVyIGludGVyZmFj ZS4KMy4gRXZlbiBpZiB3ZSBnbyBmb3IgYSBkaXJlY3QgRFJNIHByb3BlcnR5IGludGVyZmFjZSBm b3IgZWFjaCBvZiB0aGUKICAgIGNvcnJlY3Rpb24gcG9zc2libGUsIGlmIHNvbWUgaGFyZHdhcmUg c3VwcG9ydHMgMTAgY29sb3IgY29ycmVjdGlvbgpwcm9wZXJ0aWVzLCBhIGRyaXZlciBpcyBzdXBw b3NlZCB0byBjcmVhdGUgMTAgRFJNIHByb3BlcnRpZXMgCmNvcnJlc3BvbmRpbmcgdG8gZWFjaC4g QnV0IG1vc3Qgb2YgdGhlIHRpbWUgd2hhdCB0aGVzZSBjb2xvciBjb3JyZWN0aW9uIApwcm9wZXJ0 aWVzIGRvIGlzLCBhcHBseSBzb21lIGNvcnJlY3Rpb24gdmFsdWVzIG9uIHNvbWUgaGFyZHdhcmUg CnJlZ2lzdGVycywgYW5kIGVuYWJsZSAvIGRpc2FibGUgdGhlIHByb3BlcnR5Lgo0LiBDb2xvciBt YW5hZ2VyIGlzIHRoZSBvbmUgY29tbW9uIGludGVyZmFjZSBmb3IgYWxsIHN1Y2ggcHJvcGVydGll cwogICAgc3VwcG9ydGVkIGJ5IGFsbCB0aGVzZSBkcml2ZXJzLCB3aGljaCBmb2xsb3dzIGEgcGFy dGljdWxhciBwcm90b2NvbCwgCnRvIGV4dHJhY3QgdGhpcyBjb2xvciBjb3JyZWN0aW9uIGluZm9y bWF0aW9uIGZyb20gdGhlIHVzZXJzcGFjZSBjYWxsLCAKY2FsbCB0aGUgZHJpdmVycyBhcHBseSBt ZXRob2Qgd2l0aCBhbGwgdGhlIHJlcXVpcmVkIEluZm9ybWF0aW9uLgoKQmVuZWZpdHMgb2YgdXNp bmcgY29sb3IgbWFuYWdlcjoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gVW5p cXVlIGZyYW1ld29yayBmb3IgYWxsIHRoZSBjb2xvciBjb3JyZWN0aW9uIHByb3BlcnRpZXMsIGFj cm9zcyBhbGwKICAgIERSTSBkcml2ZXJzLCBhY3Jvc3MgdmFyaW91cyBwbGF0Zm9ybXMuCjIuIE9u bHkgb25lIHNldC9nZXQgY2FsbCBmb3IgYWxsIGtpbmQgb2YgcHJvcGVydGllcyB1c2luZyB0aGUg Y29tbW9uIApwcm90b2NvbC4gT25lIGdldCBjYWxsIGNhbiB0ZWxsIHdoYXQgYXJlIHRoZSBjb2xv ciBjb3JyZWN0aW9uIApjYXBhYmlsaXRpZXMgb2YgdGhlIFNPQywgcmVnaXN0ZXJlZCBieSBkcml2 ZXIuCjMuIFRoZSBjb3JyZWN0aW9ucyB2YWx1ZSByYW5nZSB0aGF0IGNhbiBiZSBjb3ZlcmVkIHVz aW5nIHRoaXMgY2FuIGJlCiAgICBzaW5nbGUgdmFsdWVkIHRvIGFueSBuby4gV2UgY2FuIGFwcGx5 IGZyb20gc2luZ2xlIHZhbHVlcyAKYnJpZ2h0bmVzcy9jb250cmFzdCB0byBmdWxsIHJhbmdlIExV VCBvZiBhIGdhbW1hIGNvcnJlY3Rpb24gdXNpbmcgdGhlIApzYW1lIGludGVyZmFjZS4KNC4gSGFy ZHdhcmUgc3BlY2lmaWMgcXVpcmtzIGNhbiBiZSBhcHBsaWVkIG9uIHNwZWNpZmljIGNvcnJlY3Rp b25zLgo1LiBBIGZldyBvZiBjb2xvciBjb3JyZWN0aW9ucyhsaWtlIGdhbW1hIGNvcnJlY3Rpb24p IGRlYWwgd2l0aCBmbG9hdGluZyAKcG9pbnQgdmFsdWVzLCB3aGljaCBpcyBub3QgZWFzeSB0byBo YW5kbGUgaW4gS2VybmVsLiBXZSBjYW4gYWx3YXlzIApkZWxlZ2F0ZSB0aGlzIEZQIGNvbnZlcnNp b24gd29yayB0byBzb21lIHVzZXJzcGFjZSBsaWJyYXJ5LCBhbmQgZ2V0IHRoZSAKZGlyZWN0IHJl Z2lzdGVyIHZhbHVlcyB1c2luZyB0aGUgaW50ZXJmYWNlLiBUaGlzIGtpbmQgb2YgbGlicmFyeSBj YW4gYmUgCmV4cGFuZGVkIGZvciB2YXJpb3VzIGZhY2lsaXRpZXMgdG8gcHJvdmlkZSBjb2xvci1z dXBwb3J0LgoKV2UgaGF2ZSBpbXBsZW1lbnRlZCBjb2xvciBtYW5hZ2VyIGltcGxlbWVudGF0aW9u IGZvciBvbmUgb2YgdGhlIE1DRyBjb2RlIApsaW5lLCBhbmQgbG90IG9mIGNvbW1lcmNpYWwgc29s dXRpb25zIGFyZSB1c2luZyB0aG9zZSBjb2xvciBwcm9wZXJ0aWVzIAp1c2luZyB0aGUgc2ltcGxl IGludGVyZmFjZSBmb3IgQnJpZ2h0bmVzcywgQ1NDIGFuZCBHYW1tYSBjb3JyZWN0aW9uLCBhbmQg CmZpbmUgdHVuaW5nIHRvIHRoZSBiZXN0IGRpc3BsYXkgZXhwZXJpZW5jZSBmb3IgdGhlaXIgcGFu ZWwuIFRoaXMgcGFydCAKd2FzIG5vdCB2ZXJ5IHdlbGwgdXNlZCBkdWUgdG8gbGFjayBvZiBwcm9w ZXIgaW50ZXJmYWNlLgoKSSB0aGluayB0aGlzIGRlc2lnbiB3aWxsIGhlbHAgdXMgdG8gZXhwb3Nl IGNvbG9yIGNvcnJlY3Rpb24gY2FwYWJpbGl0aWVzIApvZiB2YXJpb3VzIFNPQ3MgYW5kIGRyaXZl cnMsIGFuZCB3aWxsIGdpdmUgYW4gY2VudHJhbGx5IGNvbnRyb2xsZWQgCmludGVyZmFjZSBmb3Ig ZWFzZSBvZiBhY2Nlc3MgYWxzby4KClBsZWFzZSBsZXQgbWUga25vdyBpZiB0aGlzIG1ha2VzIGEg cG9pbnQuCgpSZWdhcmRzClNoYXNoYW5rCgpPbiA1LzEyLzIwMTQgMjoyMSBQTSwgRGFuaWVsIFZl dHRlciB3cm90ZToKPiBSZS1hZGRpbmcgZHJpLWRldmVsLCBhbGwgZHJtIGNvcmUgc3R1ZmYgbXVz dCBiZSBkaXNjdXNzZWQgdGhlcmUuCj4KPiBCdXQgb24gdGhlIGFjdHVhbCBpc3N1ZSBhdCBoYW5k IEkgc3RpbGwgZG9uJ3QgdW5kZXJzdGFuZCB3aGF0IHlvdSdyZQo+IHRyeWluZyB0byBzb2x2ZS4g WW91IGFkZCBhIGNvbXBsZXRlIG5ldyBzZXQgb2YgcHJvcGVydGllcywgdXNpbmcgSW50ZWwKPiBu YW1lcyAocGlwZXMsIHBsYW5lcykgZm9yIHNvbWUgYXR0cmlidXRlcyB3aGljaCBhdCBmaXJzdCBz ZWVtcwo+IGNvbXBsZXRlbHkgcmVkdW5kYW50IHRvIGFsbCB0aGUgcHJvcGVydGllcyB3ZSBhbHJl YWR5IGhhdmUuCj4KPiBXaGF0J3MgdGhlIHRlY2huaWNhbCByZWFzb25zIGZvciBhZGRpbmcgdGhp cyBpbnRlcmZhY2U/IFlvdXIgcHJvcG9zYWwKPiBpcyBvbmx5IGRlc2NyaWJpbmcgaG93IGl0IHdv cmtzLCBzbyBpcyBsYWNraW5nIHRoaXMgY3J1Y2lhbAo+IGluZm9ybWF0aW9uLgo+IC1EYW5pZWwK Pgo+IE9uIFdlZCwgTWF5IDcsIDIwMTQgYXQgNDoyMiBQTSwgU2hhcm1hLCBTaGFzaGFuawo+IDxz aGFzaGFuay5zaGFybWFAaW50ZWwuY29tPiB3cm90ZToKPj4gSGVsbG8gYWxsLAo+Pgo+PiBBcyBw ZXIgcHJldmlvdXMgZGlzY3Vzc2lvbnMsIEkgYW0gc2VuZGluZyB0aGUgZHJtLWNvbG9yLW1hbmFn ZXIgZGVzaWduIGZvcgo+PiByZXZpZXcsIGFzIGlubGluZSB0ZXh0LiBQbGVhc2UgaGF2ZSBhIGxv b2sgYW5kIGxldCBtZSBrbm93IHlvdXIgZmVlZGJhY2suCj4+Cj4+IChJIHRyaWVkIGhhcmQgdG8g YWxpZ24gdGhlIGlubGluZSB0ZXh0IGRpYWdyYW0gaW4gbWFpbCwgaG9wZSB5b3UgY2FuIHNlZSB0 aGUKPj4gcHJvcGVyIHBpY3R1cmUgdG9vKQo+Pgo+PiA9PT09PT09PT09PT09PT09PQo+PiBEUk0g Q29sb3IgTWFuYWdlcgo+PiA9PT09PT09PT09PT09PT09PQo+Pgo+PiAtIENvbG9yIG1hbmFnZXIg cHJvdmlkZXMgYSBjb21tb24gaW50ZXJmYWNlIGZvciBhbGwgY29sb3IgY29ycmVjdGlvbiAvCj4+ ICAgIGVuaGFuY2VtZW50IHByb3BlcnRpZXMgc3VwcG9ydGVkIGJ5IHZhcmlvdXMgaGFyZHdhcmVz Lgo+PiAtIENvbG9yIG1hbmFnZXIgd2lsbCBiZSBvbmUgVW1icmVsbGEgRFJNIHByb3BlcnR5IChi bG9iIHR5cGUpCj4+IC0gRHJpdmVyIGNhbiByZWdpc3RlciB0aGUgY29sb3IgY29ycmVjdGlvbiBw cm9wZXJ0aWVzIG9mIGl0cyBIVyBkdXJpbmcKPj4gICAgdGhlIGluaXQgdGltZSwgYW5kIGFsbCB0 aGUgY29ycmVjdGlvbnMgY2FuIGJlIGFwcGxpZWQgdXNpbmcgdGhlIHNhbWUKPj4gICAgaW50ZXJm YWNlLgo+Pgo+PiBIb3cgZG9lcyBhIGRyaXZlciByZWdpc3RlciBjb2xvciBwcm9wZXJ0aWVzIHdp dGggRFJNIGNvbG9yIG1hbmFnZXI6Cj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4KPj4gLSBBIERSTSBkcml2ZXIg d2lsbCBjYWxsIGRybV9yZWdpc3Rlcl9jb2xvcl9tYW5hZ2VyKCkgZnVuY3Rpb24gd2l0aAo+PiBm b2xsb3dpbmcgaW5mb3JtYXRpb246Cj4+ICAgICAgICAgIC5wcm9wX3NldF9oYW5kbGVyCj4+ICAg ICAgICAgIC5wcm9wX2dldF9oYW5sZGVyCj4+ICAgICAgICAgIC5jb2xvcl9wcm9wX2lkZW50aWZp ZXIgc3RydWN0dXJlCj4+ICAgICAgICAgICAgICAgICAge3BvcnBfbmFtZSwgcHJvcF9pZH0KPj4g ICAgICAgICAgICAgICAgICB7cG9ycF9uYW1lLCBwcm9wX2lkfQo+PiAgICAgICAgICAgICAgICAg IHtwb3JwX25hbWUsIHByb3BfaWR9Cj4+Cj4+IEZvciBleGFtcGxlOiBJOTE1IGRyaXZlciBjYW4g cmVnaXN0ZXIgYXM6Cj4+ICAgICAgICAgIC5wcm9wX3NldF9oYW5kbGVyID0gaW50ZWxfY2xybWdy X3NldCgpCj4+ICAgICAgICAgIC5wcm9wX2dldF9oYW5sZGVyID0gaW50ZWxfY2xybWdyX2dldCgp Cj4+ICAgICAgICAgIC5jb2xvcl9wcm9wX2lkZW50aWZpZXIgc3RydWN0dXJlCj4+ICAgICAgICAg ICAgICAgICAge2dhbW1hX2NvcnJlY3Rpb24sIDB9Cj4+ICAgICAgICAgICAgICAgICAge2NzY19j b3JyZWN0aW9uLCAxfQo+PiAgICAgICAgICAgICAgICAgIHtodWVfc2F0dXJhdGlvbiwgMn0KPj4K Pj4KPj4KPj4gSG93IHdpbGwgY29sb3JfbWFuYWdlcl9zZXQvZ2V0KCkgZnVuY3Rpb25zIHdvcms6 Cj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4K Pj4gQ29sb3IgRURJRDoKPj4gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+PiB8fCBwcm9wZXJ0eSAgICAgfHwg RW5hYmxlLyAgICAgIHx8IFBpcGUvUGxhbmUvICB8fCBObyBvZiAgICAgICAgfHwKPj4gfHwgICAg ICBJRCAgICAgIHx8IERpc2FibGUgICAgICB8fCBJZGVudGlmaWVyICAgfHwgRGF0YSBieXRlcyAg IHx8ZGF0YS4uCj4+IHx8IDwxIEJ5dGU+ICAgICB8fCA8MSBCeXRlPiAgICAgfHwgPDEgQnl0ZT4g ICAgIHx8IDwxIEJ5dGU+ICAgICB8fAo+PiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4+Cj4+IC0gQ29sb3IgRURJ RCBpcyBhIHByb3RvY29sIHRvIGV4dHJhY3QgdGhlIGNvbG9yIGNvcnJlY3Rpb24KPj4gICAgY2hh cmFjdGVyaWN0aWNzIGZyb20gYSBibG9iLCBjb21pbmcgZnJvbSBEUk0gbGF5ZXIKPj4gICAgYXMg cHJvcGVydHlfc2V0X2Jsb2IoKSBvciBsb2FkaW5nIGEgYmxvYiBmb3IgcHJvcGVydHlfZ2V0X2Js b2IoKQo+Pgo+PiAtIFVzZXJzcGFjZSB3aWxsIGxvYWQgdGhpcyBibG9iIHdpdGggY29ycmVzcG9u ZGluZyB2YWx1ZXMgYW5kIHVzZSB0aGUKPj4gICAgZHJtX3NldF9ibG9iKGNvbG9yLW1hbmFnZXIp IGludGVyZmFjZS4KPj4gLSBEUk0gbGF5ZXIgb2YgZ2V0L3NldF9jb2xvcl9tYW5hZ2VyKCkgd2ls bCB2YWxpZGF0ZSB0aGUgZW50cnksIGV4dHJhY3QKPj4gICAgdGhlIGZvbGxvd2luZyBpbmZvcm1h dGlvbiBmcm9tIGJsb2IKPj4gICAgICAgICAgLSBwcm9wZXJ0eQo+PiAgICAgICAgICAtIGVuYWJs ZS9kaXNhYmxlCj4+ICAgICAgICAgIC0gaWRlbnRpZmllcgo+PiAgICAgICAgICAtIHB0ciB0byBz dGFydCBvZiByYXcgZGF0YQo+PiAtIFdpdGggdGhpcyBpbmZvcm1hdGlvbiwgZHJtX2dldC9zZXRf Y29sb3JfbWFuYWdlcigpIGxheWVyIHdpbGwgY2FsbAo+PiAgICBkcml2ZXIncyAuZ2V0L3NldF9o YW5kbGVyKCkKPj4gICAgd2hpY2ggd2lsbCBkbyB0aGUgY29ycmVjdGlvbiB1c2luZyB0aG9zZSB2 YWx1ZXMuCj4+IC0gQmFzZWQgb24gdGhlIGRyaXZlcidzIHJlcXVpcmVtZW50LCB1c2VyIHNwYWNl IGNhbiBzZW5kIGFueSB0eXBlIG9mCj4+ICAgIHZhbHVlcyBpbiBieXRlIHN0cmVhbSwgbGlrZQo+ PiAgICBkaXJlY3QgcmVnIHZhbHVlcywgY29ycmVjdGlvbiBjb2VmZmljaWVudHMgb3IgYW55IG90 aGVyIGZvcm0gb2YgZGF0YS4KPj4KPj4gQmVuZWZpdHMgb2YgdGhpcyBjb21tb24gaW50ZXJmYWNl Ogo+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+IC0gU2luZ2xlIGludGVy ZmFjZSBmb3IgYWxsIGNvbG9yIHByb3BlcnRpZXMuIE5vIG5lZWQgdG8gY3JlYXRlIG11bHRpcGxl Cj4+ICAgIHByb3BlcnRpZXMuCj4+IC0gSFcgYWdvbmlzdC4gSXRzIGluIGhhbmRzIG9mIGRyaXZl ciB0byByZWdpc3RlciB0aGUgcHJvcGVydGllcy4KPj4gLSBBbnkgbm8gb2YgcHJvcGVydGllcyBj YW4gYmUgcmVnaXN0ZXJlZC4KPj4gLSBDYW4gYmUgY2x1YmJlZCB3aXRoIG1vZGVzZXQgaW1wbGVt ZW50YXRpb25zLgo+Pgo+Pgo+Pgo+Pgo+PiBSZWdhcmRzCj4+IFNoYXNoYW5rCj4+Cj4+IE9uIDUv Ny8yMDE0IDc6NDEgUE0sIFNoYXJtYSwgU2hhc2hhbmsgd3JvdGU6Cj4+Pgo+Pj4gRllJCj4+Pgo+ Pj4KPj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+PiBGcm9tOiBTaGFybWEsIFNoYXNo YW5rCj4+PiBTZW50OiBUdWVzZGF5LCBBcHJpbCAyMiwgMjAxNCA4OjMyIFBNCj4+PiBUbzogRGFu aWVsIFZldHRlcgo+Pj4gQ2M6IERhdmlkIEhlcnJtYW5uOyBpbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnOyBDbiwgUmFtYWtyaXNobmFuOwo+Pj4gSmluZGFsLCBTb25pa2E7IFNoYW5rYXIs IFVtYQo+Pj4gU3ViamVjdDogUkU6IFtJbnRlbC1nZnhdIERlc2lnbiByZXZpZXcgcmVxdWVzdDog RFJNIGNvbG9yIG1hbmFnZXIKPj4+Cj4+PiBEYXZpZCwKPj4+IE15IGFwb2xvZ2llcyBmb3Igc3Rh cnRpbmcgYSBwcmUtbWF0dXJlIGRlc2lnbiBkaXNjdXNzaW9uLgo+Pj4KPj4+IERhbmllbCwKPj4+ IFRoYW5rcyBmb3IgcG9pbnRpbmcgb3V0IGZpcnN0IHR3byB0aGluZ3MsIEl0IHdhcyBub3Qga25v d24gdG8gbWUsIEkgd2lsbAo+Pj4gdGFrZSBjYXJlIG9mIHRoaXMgaW4gZnV0dXJlLgo+Pj4KPj4+ IEZpcnN0IHRpbWUgSSBwcmVzZW50ZWQgY29sb3ItbWFuYWdlciBkZXNpZ24sIGluIGludGVybmFs IGRpc3BsYXkgZGVzaWduCj4+PiBmb3J1bSwgd2hlcmUgbW9zdCBvZiB0aGUgcmV2aWV3ZXJzIHdl cmUgbm90IHRoZXJlLgo+Pj4gV2UgdG9vayB0aGUgZmVlZGJhY2sgZnJvbSBwZW9wbGUgd2hvIHdl cmUgcHJlc2VudCwgYW5kIGltcGxlbWVudGVkIHRoZQo+Pj4gZGVzaWduLgo+Pj4KPj4+IFdoZW4g d2Ugc2hhcmVkIGNvbG9yIG1hbmFnZXIgaW1wbGVtZW50YXRpb24sIHRoYXQgZGVzaWduIHdhcyBy ZWplY3RlZCBhbmQKPj4+IG9uZSBvZiB0aGUgZmVlZGJhY2tzIHdhcyB0aGF0IGl0IHdvdWxkIGJl IGJldHRlciB0byBkaXNjdXNzIGl0IG9uIGRyaS1kZXZlbAo+Pj4gd2hlcmUgcGVvcGxlIG91dHNp ZGUgSW50ZWwgY2FuIGdpdmUgdGhlaXIgb3BpbmlvbiwgYW5kIHRoYXTigJlzIHRoZSBvbmx5Cj4+ PiByZWFzb24gd2h5IEkgYWRkZWQgZHJpLWRldmVsIGZvciB0aGUgbmV3IGRlc2lnbiAoUGxlYXNl IHNlZSB0aGUgYXR0YWNoZWQKPj4+IG1haWwsIEkgcmVwbGllZCB0byBhbGwgd2hvIHdlcmUgaW4g bGFzdCBjb21tdW5pY2F0aW9uKS4KPj4+IFBsZWFzZSBsZXQgbWUga25vdyBob3cgZG8gd2Ugd2Fu dCB0byBwcm9jZWVkIG5vdy4KPj4+Cj4+Pgo+Pj4gUmVnYXJkcwo+Pj4gU2hhc2hhbmsKPj4+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+PiBGcm9tOiBEYW5pZWwgVmV0dGVyIFttYWlsdG86 ZGFuaWVsLnZldHRlckBmZndsbC5jaF0gT24gQmVoYWxmIE9mIERhbmllbAo+Pj4gVmV0dGVyCj4+ PiBTZW50OiBUdWVzZGF5LCBBcHJpbCAyMiwgMjAxNCA3OjE4IFBNCj4+PiBUbzogU2hhcm1hLCBT aGFzaGFuawo+Pj4gQ2M6IERhdmlkIEhlcnJtYW5uOyBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnOwo+Pj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgVGhpZXJyeSBSZWRp bmc7IENuLCBSYW1ha3Jpc2huYW47IEFsZXgKPj4+IERldWNoZXI7IEppbmRhbCwgU29uaWthOyBT aGFua2FyLCBVbWEKPj4+IFN1YmplY3Q6IFJlOiBbSW50ZWwtZ2Z4XSBEZXNpZ24gcmV2aWV3IHJl cXVlc3Q6IERSTSBjb2xvciBtYW5hZ2VyCj4+Pgo+Pj4gT24gVHVlLCBBcHIgMjIsIDIwMTQgYXQg MTI6MDc6NDFQTSArMDAwMCwgU2hhcm1hLCBTaGFzaGFuayB3cm90ZToKPj4+Pgo+Pj4+IFRoYW5r cyBhZ2FpbiBEYXZpZCwKPj4+PiBDb21tZW50cyBpbmxpbmUuCj4+Pgo+Pj4KPj4+IFRocmVlIHRo aW5nczoKPj4+IC0gUGxlYXNlIGRvbid0IHNlbmQgb3V0IC5wcHR4IGZpbGVzIHRvIHVwc3RyZWFt L3B1YmxpYyBtYWlsaW5nIGxpc3RzLAo+Pj4gICAgIHRoYXQncyBqdXN0IG5vdCBob3cgdGhlIHVw c3RyZWFtIGNvbW11bml0eSB3b3Jrcy4KPj4+Cj4+PiAtIFBsZWFzZSBlaXRoZXIgZml4IHVwIG1z IG91dGxvb2sgdG8gZG8gcHJvcGVyIGluLWxpbmUgcXVvdGluZyBvciBzd2l0Y2gKPj4+ICAgICB0 byBhIHByb3BlciBtYWlsIGNsaWVudCBmb3IgZGlzY3Vzc2lvbnMgb24gZHJpLWRldmVsLiBJJ20g b2sgd2l0aCB0aGlzCj4+PiAgICAgb24gaW50ZWwtZ2Z4IHRvIHNvbWUgZXh0ZW5kIHNpbmNlIHRo YXQncyBvdXIgb3duIHR1cmYsIGJ1dCBvbiBkcmktZGV2ZWwKPj4+ICAgICB0aGUgdXN1YWwgcnVs ZXMgYXBwbHkuCj4+Pgo+Pj4gLSBJIHRoaW5rIHdlIHNob3VsZCBkaXNjdXNzIHRoaXMgaW50ZXJu YWxseSBmaXJzdCBvciBhdCBsZWFzdCBqdXN0IG9uCj4+PiAgICAgaW50ZWwtZ2Z4Lgo+Pj4KPj4+ IERhdmlkLCB0aGFua3MgZm9yIHRha2luZyBhIGxvb2sgYXQgdGhpcyBidXQgaW1vIHRoaXMgc2hv dWxkbid0IGhhdmUKPj4+IGVzY2FwZWQgeWV0IHRvIHRoZSBwdWJsaWMuIE15IGFwb2xvZ2llcyBm b3Igd2FzdGluZyB5b3VyIHRpbWUgdHJ5aW5nIHRvCj4+PiByZXZpZXcgdGhpcyBwcm9wb3NhbC4K Pj4+Cj4+PiBUaGFua3MsIERhbmllbAo+Pj4KPj4+Pgo+Pj4+IFJlZ2FyZHMKPj4+PiBTaGFzaGFu awo+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+Pj4gRnJvbTogRGF2aWQgSGVycm1h bm4gW21haWx0bzpkaC5oZXJybWFubkBnbWFpbC5jb21dCj4+Pj4gU2VudDogVHVlc2RheSwgQXBy aWwgMjIsIDIwMTQgNToxMCBQTQo+Pj4+IFRvOiBTaGFybWEsIFNoYXNoYW5rCj4+Pj4gQ2M6IGlu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmc7Cj4+Pj4gVmlsbGUgU3lyasOkbMOkOyBUaGllcnJ5IFJlZGluZzsgQWxleCBEZXVjaGVy OyBTZWFuIFBhdWw7Cj4+Pj4gcm9iZGNsYXJrQGdtYWlsLmNvbTsgTXVraGVyamVlLCBJbmRyYW5p bDsgSmluZGFsLCBTb25pa2E7IEtvcmphbmksCj4+Pj4gVmlrYXM7IFNoYW5rYXIsIFVtYTsgQ24s IFJhbWFrcmlzaG5hbgo+Pj4+IFN1YmplY3Q6IFJlOiBEZXNpZ24gcmV2aWV3IHJlcXVlc3Q6IERS TSBjb2xvciBtYW5hZ2VyCj4+Pj4KPj4+PiBIaQo+Pj4+Cj4+Pj4gT24gVHVlLCBBcHIgMjIsIDIw MTQgYXQgMTI6MjEgUE0sIFNoYXJtYSwgU2hhc2hhbmsKPj4+PiA8c2hhc2hhbmsuc2hhcm1hQGlu dGVsLmNvbT4gd3JvdGU6Cj4+Pj4+Cj4+Pj4+IDEpIFdoeSBkbyB5b3UgcmVnaXN0ZXIgb25seSBh IHNpbmdsZSBwcm9wZXJ0eT8gV2h5IG5vdCByZWdpc3RlciBhCj4+Pj4+IHNlcGFyYXRlIHByb3Bl cnR5IGZvciBlYWNoIGNvbG9yLWNvcnJlY3Rpb24gdGhhdCBpcyBhdmFpbGFibGU/IFRoaXMgd2F5 IHlvdQo+Pj4+PiBjYW4gZHJvcCB0aGUgcHJvcGVydHktaWQgYW5kIHVzZSB0aGUgaGlnaC1sZXZl bCBEUk0tcHJvcCBJRHMvbmFtZXMuCj4+Pj4+Pj4KPj4+Pj4+PiBUaGF04oCZcyB0aGUgd2hvbGUg aWRlYSBvZiBjb2xvciBtYW5hZ2VyLiBJZiB3ZSBrZWVwIG9uIGNyZWF0aW5nCj4+Pj4+Pj4gcHJv cGVydGllcyBmb3IgZWFjaCBjb2xvciBjb3JyZWN0aW9uLCB0aGVyZSB3b3VsZCBiZSBhIGJpZyBs aXN0IGFuZCBhIGxvdCBvZgo+Pj4+Pj4+IHByb3BlcnRpZXMgd2lsbCBiZSBleHBvc2VkLiBJbnN0 ZWFkIG9uZSBjb21tb24gYmxvYiB3aGljaCBjYW4gcmVwcmVzZW50IGFsbAo+Pj4+Pj4+IHRoZSBw cm9wZXJ0aWVzLCBjb3JyZWN0aW9uIHZhbHVlcyBhbmQgaWRlbnRpZmllcnMuIEl0IHdvdWxkIGJl IGVhc3kgdG8gY2x1Ygo+Pj4+Pj4+IHdpdGggYXRvbWljIG1vZGVzZXQga2luZC1vZiBkZXNpZ25z IGFsc28gSSBiZWxpZXZlLgo+Pj4+Cj4+Pj4KPj4+PiBXaGVyZSBpcyB0aGUgZGlmZmVyZW5jZT8g V2l0aCBvbmUgX3dlbGwtZGVmaW5lZF8gcHJvcGVydHkgZm9yIGVhY2ggdHlwZQo+Pj4+IHdlIHNp bXBseSBtb3ZlIHRoZSBpZGVudGlmaWNhdGlvbiBvbmUgbGV2ZWwgdXAuIFdpdGggeW91ciBhcHBy b2FjaCB5b3UganVzdAo+Pj4+IG1vdmUgdGhlIHR5cGUtaWQgb25lIGxldmVsIGRvd24gaW50byB0 aGUgYmxvYi4KPj4+Pgo+Pj4+IE9yIGluIG90aGVyIHdvcmRzOiBXaGVyZSBpcyB0aGUgZGlmZmVy ZW5jZSBiZXR3ZWVuIGNhbGxpbmcKPj4+PiBTZXRQcm9wZXJ0eSgpIG4tdGltZXMsIG9yIGNhbGxp bmcgaXQgb25jZSBidXQgd2l0aCBhIHBhcmFtZXRlciBkZXNjcmliaW5nCj4+Pj4gbi1wcm9wZXJ0 aWVzPyBXaXRoIGF0b21pYy1tb2Rlc2V0dGluZyB3ZSBjYW4gc2V0IGFzIG1hbnkgcHJvcGVydGll cyBhcyB3ZQo+Pj4+IHdhbnQgYW5kIG1ha2UgdGhlIGtlcm5lbCBhcHBseSB0aGVtIGF0b21pY2Fs bHkuCj4+Pj4KPj4+Pj4+PiBBY3R1YWxseSB3ZSBhbHNvIGRvIG5vdCB3YW50IHRvIHBvcHVsYXRl IHRoZSBwcm9wZXJ0eSBzcGFjZSBhbHNvLCBhcwo+Pj4+Pj4+IGlmIHRoZXJlIGFyZSAxMCBjb2xv ciBjb3JyZWN0aW9uIG1ldGhvZHMgcG9zc2libGUgZm9yIGEgaGFyZHdhcmUsIHdlIG1pZ2h0Cj4+ Pj4+Pj4gZW5kIHVwIGxpc3RpbmcgMTAgcHJvcGVydGllcy4gIEFuZCB0aGVyZSB3b24ndCBiZSBj b21tb24gcHJvcGVydGllcyBhY3Jvc3MKPj4+Pj4+PiBhbGwgdGhlIGhhcmR3YXJlcyBhbHNvLiBG b3IgZXhhbXBsZSwgSGFyZHdhcmUgQSBjYW4gaGF2ZSBwcm9wZXJ0aWVzIFggWSBaCj4+Pj4+Pj4g YnV0IEhhcmR3YXJlIEIgY2FuIGhhdmUgVyBYIGFuZCBaLiBUaGlzIHdpbGwgbWFrZSB0aGUgcHJv cGVydHkgc3BhY2UKPj4+Pj4+PiBpbmNvbnNpc3RlbnQuIEJ1dCBpZiB3ZSBwcm92aWRlIG9uZSBj b21tb24gaW50ZXJmYWNlIHdoaWNoIHdpbGwgY292ZXIgZm9yCj4+Pj4+Pj4gYWxsIHRoZSBwcm9w ZXJ0aWVzLCBmb3IgYWxsIHRoZSBoYXJkd2FyZXMgaW4gYSBzaW5nbGUgYmxvYi4gVGhlIGRyaXZl ciB3aWxsCj4+Pj4+Pj4gZHluYW1pY2FsbHkgcmVnaXN0ZXIgaXRzIHByb3BlcnR5LCBpbiBpdHMg b3duIHByZWZlcnJlZCBuYW1lLiBBIGdldF9wcm9wKCkKPj4+Pj4+PiB3aWxsIGFsd2F5cyBsaXN0 IGRvd24gYWxsIHRoZSBzdXBwb3J0ZWQgY29sb3IgcHJvcGVydHkgYnkgdGhpcyBoYXJkd2FyZSBh bmQKPj4+Pj4+PiBkcml2ZXIuCj4+Pj4KPj4+Pgo+Pj4+PiAyKSBXaGF0IGlzIHRoZSBDUlRDLUlE IGZvcj8gRFJNIHByb3BlcnRpZXMgY2FuIGJlIHNldCBvbiBhIHNwZWNpZmljIENSVEMKPj4+Pj4g YW5kL29yIHBsYW5lLiBJc24ndCB0aGF0IGVub3VnaCBpbmZvcm1hdGlvbiBmb3IgdGhlIGRyaXZl cj8KPj4+Pj4+Pgo+Pj4+Pj4+IFRoaXMgaXMgdG8gbWFrZSBpdCBIVyBhZ29uaXN0LiBBY3R1YWxs eSB0aGF0J3MgQ1JUQyBJRCAvIFBsYW5lIElEIC8KPj4+Pj4+PiBQSVBFIElEIC8gYWxsIHRvZ2V0 aGVyIGFuIGlkZW50aWZpZXIuIEZvciBleGFtcGxlIGlmIEkgd2FudCB0byBzZXQgZ2FtbWEKPj4+ Pj4+PiBjb3JyZWN0aW9uIGZvciBzcHJpdGUgcGxhbmVzIG9ubHksIG5vdCBvbiBwcmltYXJ5IHBs YW5lIG9yIHBpcGUgbGV2ZWwsIG9uCj4+Pj4+Pj4gVkxWLCBpdHMgcG9zc2libGUuIFRoaXMgZ2l2 ZXMgbWUgZmxleGliaWxpdHkgdG8gbWVudGlvbiBmaW5lLXR1bmVkCj4+Pj4+Pj4gY29ycmVjdGlv biBldmVuIGluIGEgQ1JUQy4gIFRoZSBkcml2ZXIncyAuZW5hYmxlIG1ldGhvZCBjYW4gdGFrZSBk ZWNpc2lvbiBvbgo+Pj4+Pj4+IHRoaXMgaWRlbnRpZmllciBiYXNlZCBvbiB0aGUgaGFyZHdhcmUg Y2FwYWJpbGl0aWVzLgo+Pj4+Cj4+Pj4KPj4+PiBZZWFoLCBidXQgSSBtZWFudCB0aGUgZHJtTW9k ZU9iamVjdFNldFByb3BlcnR5KCkgaW9jdGwgYWxyZWFkeSB0YWxlcyBhCj4+Pj4gQ1JUQy9QbGFu ZS9Db25uZWN0b3IgSUQuIFNvIHdoeSBkdXBsaWNhdGUgdGhhdCBpbmZvcm1hdGlvbiBpbiB0aGUK Pj4+PiBibG9iPyBBbmQgbW9yZSBpbXBvcnRhbnRseSwgd2hhdCBoYXBwZW5zIGlmIHlvdSBjYWxs Cj4+Pj4gZHJtTW9kZU9iamVjdFNldFByb3BlcnR5KCkgb24gYSBwbGFuZSBidXQgc3BlY2lmeSBh IENSVEMgSUQgaW4gdGhlIGJsb2I/Cj4+Pj4gU2VlbXMgd2VpcmQgdG8gbWUgdG8gc3VwcG9ydCBz dWNoIHNldHVwcy4KPj4+Pgo+Pj4+Pj4+IFRoZSBkZXNpZ24gaXMgdG8gcmVnaXN0ZXIgY29sb3It bWFuYWdlciBhcyBhIENSVEMgcHJvcGVydHksIHRvIG1ha2UgaXQKPj4+Pj4+PiBjb25zaXN0ZW50 LCBhbmQgdGhlbiBnaXZlIHRoZSBmaW5lIHR1bmluZyB2aWEgdGhpcyBpZGVudGlmaWVyIGJ5dGUu Cj4+Pj4KPj4+PiBFbHNlIHdlIGhhdmUgdG8ga2VlcCB0cmFjayBvZiB0aGlzIGluIHVzZXJzcGFj ZSwgdGhhdCB3aGljaCBwcm9wZXJ0eSBpcwo+Pj4+IHZhbGlkIGZvciB3aGljaCBleHRlbnQuIEZv ciBleGFtcGxlLCBIdWUgYW5kIHNhdHVyYXRpb24gY29ycmVjdGlvbiwgb24gVkxWLAo+Pj4+IGNh biBiZSBhcHBsaWVkIG9uIFNwcml0ZSBwbGFuZXMgb25seShub3Qgb24gcHJpbWFyeSBwbGFuZSku IFNvIHdlIGhhdmUgdG8KPj4+PiBzZW5kIGEgcGxhbmUgYXMgYW4gb2JqZWN0IGhlcmUuCj4+Pj4g UmF0aGVyIGluIGNvbG9yIG1hbmFnZXIgY2FzZSwgd2Ugd2lsbCBhbHdheXMgc2VuZCB0aGUgQ1JU QyBhcyBhbiBvYmplY3QKPj4+PiB0byBJT0NUTCwgYnV0IHdpbGwgc3BlY2lmeSBTUFJJVEVfUExB TkUgYXMgaWRlbnRpZmllci4gRG9lcyB0aGlzIHNvdW5kIGxlc3MKPj4+PiB3ZWlyZCBub3cgIDop ID8KPj4+Pgo+Pj4+PiAzKSBQbGVhc2UgZG9jdW1lbnQgdGhlIHBheWxvYWQgZm9yIGVhY2ggb2Yg dGhlIHByb3BlcnRpZXMgeW91IGRlZmluZS4KPj4+Pj4gSWYgdGhlIHByb3BlcnR5IGlzIGEgYmxv YiwgdGhlcmUgaXMgbm8gcmVhc29uIHRvIG1ha2UgdGhlIHByb3BlcnRpZXMKPj4+Pj4gZ2VuZXJp Yy4gVXNlci1zcGFjZSByZXF1aXJlcyBhIGNvbW1vbiBzeW50YXggYWNyb3NzIGFsbCBkcml2ZXJz LCBvdGhlcndpc2UsCj4+Pj4+IGl0IGNhbm5vdCBtYWtlIHVzZSBvZiBnZW5lcmljIHByb3BlcnRp ZXMgYW5kIHlvdSBzaG91bGQgdXNlIGRyaXZlci1kZXBlbmRlbnQKPj4+Pj4gcHJvcGVydGllcyBp bnN0ZWFkLgo+Pj4+Pj4+Cj4+Pj4+Pj4gQ2FuIHlvdSBwbGVhc2UgZWxhYm9yYXRlIGEgYml0IG1v cmUgPyBJIGJlbGlldmUgdGhhdCBhIGJsb2IgaXMgYQo+Pj4+Pj4+IHN1cGVyc2V0IG9mIHNpbmds ZSBhbmQgbXVsdGktdmFsdWVkIHByb3BlcnRpZXMuIFNvIHdlIGNhbiB1c2UgdGhlIGJ5dGUKPj4+ Pj4+PiBkZWZpbmVkIGZvciA8bm8gb2YgY29ycmVjdGlvbiBieXRlcz4gYW5kIHNwZWNpZnkgYm90 aCBzaW5nbGUgdmFsdWUgYW5kIG11bHRpCj4+Pj4+Pj4gdmFsdWUgY29ycmVjdGlvbiB1c2luZyB0 aGUgc2FtZSBpbnRlcmZhY2UsID4+IG1ldGhvZCBhbmQgcHJvdG9jb2wuICBTbyBhbnkKPj4+Pj4+ PiB1c2Vyc3BhY2UgY2FuIGp1c3QgZm9sbG93IHRoaXMsIGFueSBjYW4gZ2l2ZSBjb21tYW5kcyB0 byBhbnkgZHJpdmVyLgo+Pj4+Cj4+Pj4KPj4+PiBXZWxsLCB5b3VyIGRvY3VtZW50IGRvZXNuJ3Qg ZGVzY3JpYmUgdGhlIHBheWxvYWQgYXQgYWxsLiBJIGp1c3Qgd2FudGVkIGEKPj4+PiBkZXNjcmlw dGlvbiBvZiB3aGF0IGtpbmQgb2YgaW5mb3JtYXRpb24gaXMgZXhwZWN0ZWQuIE51bWJlciBvZiBh cmd1bWVudHMsCj4+Pj4gYXJndW1lbnQgc2l6ZSwgYXJndW1lbnQgdHlwZXMsIGFyZ3VtZW50IGRl c2NyaXB0aW9uLi4gYW5kIHNvIG9uLgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBTdXJlLCBJIHdpbGwgZnVy dGhlciBkb2N1bWVudCBpdCB2ZXJ5IGNsZWFybHkgYWJvdXQgYXJndW1lbnRzIGFuZAo+Pj4+Pj4+ PiBkZXNjcmlwdGlvbnMuIEFjdHVhbGx5IHdlIGhhdmUgZGlzY3Vzc2VkIHRoZSBwcm90b2NvbCBp biB0aGUgY29sb3IgRURJRAo+Pj4+Pj4+PiBzZWN0aW9uLCB3aGljaCB0ZWxscyB1cyBhYm91dCB0 aGUgNCBieXRlIHByb3RvY29sIGFuZCBleHBlY3RhdGlvbiwgYnV0Cj4+Pj4+Pj4+IHRoYXTigJlz IGVsZW1lbnRhcnkuCj4+Pj4KPj4+Pgo+Pj4+PiA0KSBXZSBoYXZlIGEgdHVwbGUtdHlwZSBmb3Ig cHJvcGVydGllcy4gU28gaW4gY2FzZSB5b3Ugb25seSBuZWVkIDMyYml0Cj4+Pj4+IHBheWxvYWRz IGZvciBhIGdpdmVuIHByb3BlcnR5LCB5b3UgY2FuIGNvbWJpbmUgZW5hYmxlL2Rpc2FibGUgYW5k IHZhbHVlIGluIGEKPj4+Pj4gc2luZ2xlIDY0Yml0IHByb3BlcnR5Lgo+Pj4+Pj4+Cj4+Pj4+Pj4g QnV0IHByb3BlcnRpZXMgbGlrZSBDU0MgYW5kIEdhbW1hIGNvcnJlY3Rpb24gbmVlZCBtdWx0aXBs ZSBjb3JyZWN0aW9uCj4+Pj4+Pj4gdmFsdWVzLCB1cCB0byAyNTYgMzItYml0IHZhbHVlcy4gRm9y IHRoaXMgd2UgbmVlZCBtb3JlIG5vIG9mIHZhbHVlcy4gQU0gSQo+Pj4+Pj4+IGdldHRpbmcgaXQg cmlnaHQgPwo+Pj4+Cj4+Pj4gU3VyZS4KPj4+Pgo+Pj4+IFRoYW5rcwo+Pj4+IERhdmlkCj4+Pj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+PiBJbnRl bC1nZnggbWFpbGluZyBsaXN0Cj4+Pj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ Pj4+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngKPj4+Cj4+Pgo+Pj4gLS0KPj4+IERhbmllbCBWZXR0ZXIKPj4+IFNvZnR3YXJlIEVuZ2luZWVy LCBJbnRlbCBDb3Jwb3JhdGlvbgo+Pj4gKzQxICgwKSA3OSAzNjUgNTcgNDggLSBodHRwOi8vYmxv Zy5mZndsbC5jaAo+Pj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiBJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCj4+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngKPgo+Cj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK