From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v3 1/8] drm/i915: Introduce a PV INFO page structure for Intel GVT-g. Date: Tue, 16 Dec 2014 13:19:48 +0000 Message-ID: <54903174.9080102@linux.intel.com> References: <1415880169-7656-1-git-send-email-yu.c.zhang@linux.intel.com> <1415880169-7656-2-git-send-email-yu.c.zhang@linux.intel.com> <5489D54C.5050605@linux.intel.com> <54902ACC.6020203@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id A2AD66E1C0 for ; Tue, 16 Dec 2014 05:21:44 -0800 (PST) In-Reply-To: <54902ACC.6020203@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Yu, Zhang" , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDEyLzE2LzIwMTQgMTI6NTEgUE0sIFl1LCBaaGFuZyB3cm90ZToKPiBUaGFuayB5b3UgdmVy eSBtdWNoIGZvciB5b3VyIHRob3JvdWdoIHJldmlldywgVHZydGtvLiA6KQo+Cj4gT24gMTIvMTIv MjAxNCAxOjMzIEFNLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPj4KPj4gT24gMTEvMTMvMjAxNCAx MjowMiBQTSwgWXUgWmhhbmcgd3JvdGU6Cj4+PiBJbnRyb2R1Y2UgYSBQViBJTkZPIHN0cnVjdHVy ZSwgdG8gZmFjaWxpdGF0ZSB0aGUgSW50ZWwgR1ZULWcKPj4+IHRlY2hub2xvZ3ksIHdoaWNoIGlz IGEgR1BVIHZpcnR1YWxpemF0aW9uIHNvbHV0aW9uIHdpdGggbWVkaWF0ZWQKPj4+IHBhc3MtdGhy b3VnaC4gVGhpcyBwYWdlIGNvbnRhaW5zIHRoZSBzaGFyZWQgaW5mb3JtYXRpb24gYmV0d2Vlbgo+ Pj4gaTkxNSBkcml2ZXIgYW5kIHRoZSBob3N0IGVtdWxhdG9yLiBGb3Igbm93LCB0aGlzIHN0cnVj dHVyZSB1dGlsaXplcwo+Pj4gYW4gYXJlYSBvZiA0SyBieXBlcyBvbiBIU1cgR1BVJ3MgdW51c2Vk IE1NSU8gc3BhY2UgdG8gc3VwcG9ydAo+Pgo+PiBieXRlcwo+IEdvdCBpdC4gVGhhbmtzLgo+Pgo+ Pj4gZXhpc3RpbmcgcHJvZHVjdGlvbi4gRnV0dXJlIGhhcmR3YXJlIHdpbGwgaGF2ZSB0aGUgcmVz ZXJ2ZWQgd2luZG93Cj4+Cj4+IEl0IGlzIHNsaWdodGx5IHVuY2xlYXIgdG8gbWUgd2hhdCAiZXhp c3RpbmcgcHJvZHVjdGlvbiIgbWVhbnM/Cj4gT3VyIGN1cnJlbnQgZ3B1IHZpcnR1YWxpemF0aW9u IGltcGxlbWVudGF0aW9uIGZvciBIU1cuIEl0J3MgY29tcGFyZWQKPiB3aXRoIGZ1dHVyZSBpbXBs ZW1hdGF0aW9ucyBmb3IgQkRXIGV0Yy4KClNvIG1heWJlIGluc3RlYWQgb2YgImV4aXN0aW5nIHBy b2R1Y3Rpb24iIHNheSAiY3VycmVudGx5IHN1cHBvcnRlZCAKaGFyZHdhcmUiIG9yIHNpbWlsYXI/ Cgo+Pj4gYXJjaGl0ZWN0dXJhbGx5IGRlZmluZWQsIGFuZCBsYXlvdXQgb2YgdGhlIHBhZ2Ugd2ls bCBiZSBhZGRlZCBpbgo+Pj4gZnV0dXJlIEJTcGVjLgo+Pj4KPj4+IFRoZSBpOTE1IGRyaXZlciBs b2FkIHJvdXRpbmUgZGV0ZWN0cyBpZiBpdCBpcyBydW5uaW5nIGluIGEgVk0gYnkKPj4+IHJlYWRp bmcgdGhlIGNvbnRlbnRzIG9mIHRoaXMgUFYgSU5GTyBwYWdlLiBUaGVyZWFmdGVyIGEgZmxhZywK Pj4+IHZncHUuYWN0aXZlIGlzIHNldCwgYW5kIGludGVsX3ZncHVfYWN0aXZlKCkgaXMgdXNlZCBi eSBjaGVja2luZwo+Pj4gdGhpcyBmbGFnIHRvIGNvbmNsdWRlIGlmIEdQVSBpcyB2aXJ0dWFsaXpl ZCB3aXRoIEludGVsIEdWVC1nLiBCeQo+Pj4gbm93LCBpbnRlbF92Z3B1X2FjdGl2ZSgpIHdpbGwg cmV0dXJuIHRydWUsIG9ubHkgd2hlbiB0aGUgZHJpdmVyCj4+PiBpcyBydW5uaW5nIGFzIGEgZ3Vl c3QgaW4gdGhlIEludGVsIEdWVC1nIGVuaGFuY2VkIGVudmlyb25tZW50IG9uCj4+PiBIU1cgcGxh dGZvcm0uCj4+Pgo+Pj4gdjI6Cj4+PiB0YWtlIENocmlzJyBjb21tZW50czoKPj4+ICAgICAtIGNh bGwgdGhlIGk5MTVfY2hlY2tfdmdwdSgpIGluIGludGVsX3VuY29yZV9pbml0KCkKPj4+ICAgICAt IHNhbml0aXplIGk5MTVfY2hlY2tfdmdwdSgpIGJ5IGFkZGluZyBCVUlMRF9CVUdfT04oKSBhbmQg ZGVidWcgaW5mbwo+Pj4gdGFrZSBEYW5pZWwncyBjb21tZW50czoKPj4+ICAgICAtIHB1dCB0aGUg ZGVmaW5pdGlvbiBvZiBQViBJTkZPIGludG8gYSBuZXcgaGVhZGVyIC0gaTkxNV92Z3RfaWYuaAo+ Pj4gb3RoZXIgY2hhbmdlczoKPj4+ICAgICAtIGFjY2VzcyBtbWlvIHJlZ3MgYnkgcmVhZHEvcmVh ZHcgaW4gaTkxNV9jaGVja192Z3B1KCkKPj4+Cj4+PiB2MzoKPj4+IHRha2UgRGFuaWVsJ3MgY29t bWVudHM6Cj4+PiAgICAgLSBtb3ZlIHRoZSBpOTE1L3ZndCBpbnRlcmZhY2VzIGludG8gYSBuZXcg aTkxNV92Z3B1LmMKPj4+ICAgICAtIHVwZGF0ZSBtYWtlZmlsZQo+Pj4gICAgIC0gYWRkIGtlcm5l bGRvYyB0byBmdW5jdGlvbnMgd2hpY2ggYXJlIG5vbi1zdGF0aWMKPj4+ICAgICAtIGFkZCBhIERP Qzogc2VjdGlvbiBkZXNjcmliaW5nIHNvbWUgb2YgdGhlIGhpZ2gtbGV2ZWwgZGVzaWduCj4+PiAg ICAgLSB1cGRhdGUgZHJtIGRvY2Jvb2sKPj4+IG90aGVyIGNoYW5nZXM6Cj4+PiAgICAgLSByZW5h bWUgaTkxNV92Z3RfaWYuaCB0byBpOTE1X3ZncHUuaAo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IFl1 IFpoYW5nIDx5dS5jLnpoYW5nQGxpbnV4LmludGVsLmNvbT4KPj4+IFNpZ25lZC1vZmYtYnk6IEpp a2UgU29uZyA8amlrZS5zb25nQGludGVsLmNvbT4KPj4+IFNpZ25lZC1vZmYtYnk6IEVkZGllIERv bmcgPGVkZGllLmRvbmdAaW50ZWwuY29tPgo+Pj4gLS0tCj4+PiAgIERvY3VtZW50YXRpb24vRG9j Qm9vay9kcm0udG1wbCAgICAgIHwgIDUgKysrCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlICAgICAgIHwgIDMgKysKPj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCAgICAgfCAxMSArKysrKwo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYyAg ICB8IDg1Cj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+PiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oICAgIHwgODUKPj4+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dW5jb3JlLmMgfCAgMyArKwo+Pj4gICA2IGZpbGVzIGNoYW5nZWQsIDE5MiBpbnNlcnRpb25zKCsp Cj4+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUu Ywo+Pj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1 LmgKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsCj4+ PiBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9kcm0udG1wbAo+Pj4gaW5kZXggNjRkOWMxZS4uZTRk YjRjZiAxMDA2NDQKPj4+IC0tLSBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9kcm0udG1wbAo+Pj4g KysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsCj4+PiBAQCAtMzgzMiw2ICszODMy LDExIEBAIGludCBudW1faW9jdGxzOzwvc3lub3BzaXM+Cj4+PiAgICFGZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYyBpbnRlbF9ydW50aW1lX3BtX2Rpc2FibGVfaW50ZXJydXB0cwo+Pj4g ICAhRmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgaW50ZWxfcnVudGltZV9wbV9lbmFi bGVfaW50ZXJydXB0cwo+Pj4gICAgICAgICA8L3NlY3QyPgo+Pj4gKyAgICAgIDxzZWN0Mj4KPj4+ ICsgICAgICAgIDx0aXRsZT5JbnRlbCBHVlQtZyBHdWVzdCBTdXBwb3J0KHZHUFUpPC90aXRsZT4K Pj4+ICshUGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jIEludGVsIEdWVC1nIGd1ZXN0 IHN1cHBvcnQKPj4+ICshSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jCj4+PiArICAg ICAgPC9zZWN0Mj4KPj4+ICAgICAgIDwvc2VjdDE+Cj4+PiAgICAgICA8c2VjdDE+Cj4+PiAgICAg ICAgIDx0aXRsZT5EaXNwbGF5IEhhcmR3YXJlIEhhbmRsaW5nPC90aXRsZT4KPj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZQo+Pj4gaW5kZXggODkxZTU4NC4uZDlhYTVjYSAxMDA2NDQKPj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZQo+Pj4gQEAgLTc5LDYgKzc5LDkgQEAgaTkxNS15ICs9IGR2b19jaDcwMTcu byBcCj4+PiAgICAgICAgIGludGVsX3Nkdm8ubyBcCj4+PiAgICAgICAgIGludGVsX3R2Lm8KPj4+ Cj4+PiArIyB2aXJ0dWFsIGdwdSBjb2RlCj4+PiAraTkxNS15ICs9IGk5MTVfdmdwdS5vCj4+PiAr Cj4+PiAgICMgbGVnYWN5IGhvcnJvcnMKPj4+ICAgaTkxNS15ICs9IGk5MTVfZG1hLm8gXAo+Pj4g ICAgICAgICBpOTE1X3Vtcy5vCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+PiBpbmRl eCA1NDY5MWJjLi5lMWUyMjFlIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4g QEAgLTE0NzAsNiArMTQ3MCwxMCBAQCBzdHJ1Y3QgaTkxNV93b3JrYXJvdW5kcyB7Cj4+PiAgICAg ICB1MzIgY291bnQ7Cj4+PiAgIH07Cj4+Pgo+Pj4gK3N0cnVjdCBpOTE1X3ZpcnR1YWxfZ3B1IHsK Pj4+ICsgICAgYm9vbCBhY3RpdmU7Cj4+PiArfTsKPj4+ICsKPj4+ICAgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgewo+Pj4gICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldjsKPj4+ICAgICAgIHN0 cnVjdCBrbWVtX2NhY2hlICpzbGFiOwo+Pj4gQEAgLTE0ODIsNiArMTQ4Niw4IEBAIHN0cnVjdCBk cm1faTkxNV9wcml2YXRlIHsKPj4+Cj4+PiAgICAgICBzdHJ1Y3QgaW50ZWxfdW5jb3JlIHVuY29y ZTsKPj4+Cj4+PiArICAgIHN0cnVjdCBpOTE1X3ZpcnR1YWxfZ3B1IHZncHU7Cj4+PiArCj4+PiAg ICAgICBzdHJ1Y3QgaW50ZWxfZ21idXMgZ21idXNbR01CVVNfTlVNX1BPUlRTXTsKPj4+Cj4+Pgo+ Pj4gQEAgLTIzMTEsNiArMjMxNywxMSBAQCBleHRlcm4gdm9pZCBpbnRlbF91bmNvcmVfY2hlY2tf ZXJyb3JzKHN0cnVjdAo+Pj4gZHJtX2RldmljZSAqZGV2KTsKPj4+ICAgZXh0ZXJuIHZvaWQgaW50 ZWxfdW5jb3JlX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4+PiAgIGV4dGVybiB2b2lk IGludGVsX3VuY29yZV9mb3JjZXdha2VfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+ IGJvb2wgcmVzdG9yZSk7Cj4+Pgo+Pj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF92Z3B1X2Fj dGl2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+Pj4gK3sKPj4+ICsgICAgcmV0dXJuIHRvX2k5 MTUoZGV2KS0+dmdwdS5hY3RpdmU7Cj4+PiArfQo+Pj4gKwo+Pj4gICB2b2lkCj4+PiAgIGk5MTVf ZW5hYmxlX3BpcGVzdGF0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBw aXBlCj4+PiBwaXBlLAo+Pj4gICAgICAgICAgICAgICAgdTMyIHN0YXR1c19tYXNrKTsKPj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYwo+Pj4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYwo+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+IGlu ZGV4IDAwMDAwMDAuLjNmNmI3OTcKPj4+IC0tLSAvZGV2L251bGwKPj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jCj4+PiBAQCAtMCwwICsxLDg1IEBACj4+PiArLyoKPj4+ ICsgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE0IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLgo+Pj4gKyAqCj4+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KPj4+IG9idGFpbmluZyBhCj4+PiArICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZQo+Pj4gIlNvZnR3YXJlIiksCj4+PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQKPj4+IGxpbWl0YXRpb24KPj4+ICsgKiB0 aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0 ZSwKPj4+IHN1YmxpY2Vuc2UsCj4+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20KPj4+IHRoZQo+Pj4gKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6Cj4+PiArICoKPj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nCj4+PiB0aGUgbmV4dAo+Pj4gKyAqIHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucwo+Pj4gb2YgdGhlCj4+PiArICogU29mdHdhcmUuCj4+PiArICoKPj4+ICsgKiBUSEUgU09G VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwK Pj4+IEVYUFJFU1MgT1IKPj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GCj4+PiBNRVJDSEFOVEFCSUxJVFksCj4+PiArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVW RU5UCj4+PiBTSEFMTAo+Pj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTCj4+PiBPUiBPVEhFUgo+Pj4gKyAqIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LAo+Pj4gQVJJU0lORyBGUk9NLAo+Pj4gKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKPj4+IERFQUxJTkdTIElOIFRIRQo+Pj4g KyAqIFNPRlRXQVJFLgo+Pj4gKyAqLwo+Pj4gKwo+Pj4gKyNpbmNsdWRlICJpbnRlbF9kcnYuaCIK Pj4+ICsjaW5jbHVkZSAiaTkxNV92Z3B1LmgiCj4+PiArCj4+PiArCj4+PiArLyoqCj4+PiArICog RE9DOiBJbnRlbCBHVlQtZyBndWVzdCBzdXBwb3J0Cj4+PiArICoKPj4+ICsgKiBJbnRlbCBHVlQt ZyBpcyBhIGdyYXBoaWNzIHZpcnR1YWxpemF0aW9uIHRlY2hub2xvZ3kgd2hpY2ggc2hhcmVzIHRo ZQo+Pj4gKyAqIEdQVSBhbW9uZyBtdWx0aXBsZSB2aXJ0dWFsIG1hY2hpbmVzIG9uIGEgdGltZS1z aGFyaW5nIGJhc2lzLiBFYWNoCj4+PiArICogdmlydHVhbCBtYWNoaW5lIGlzIHByZXNlbnRlZCBh IHZpcnR1YWwgR1BVICh2R1BVKSwgd2hpY2ggaGFzCj4+PiBlcXVpdmFsZW50Cj4+PiArICogZmVh dHVyZXMgYXMgdGhlIHVuZGVybHlpbmcgcGh5c2ljYWwgR1BVIChwR1BVKSwgc28gaTkxNSBkcml2 ZXIgY2FuCj4+PiBydW4KPj4+ICsgKiBzZWFtbGVzc2x5IGluIGEgdmlydHVhbCBtYWNoaW5lLiBU aGlzIGZpbGUgcHJvdmlkZXMgdkdQVSBzcGVjaWZpYwo+Pj4gKyAqIG9wdGltaXphdGlvbnMgd2hl biBydW5uaW5nIGluIGEgdmlydHVhbCBtYWNoaW5lLCB0byByZWR1Y2UgdGhlCj4+PiBjb21wbGV4 aXR5Cj4+PiArICogb2YgdkdQVSBlbXVsYXRpb24gYW5kIHRvIGltcHJvdmUgdGhlIG92ZXJhbGwg cGVyZm9ybWFuY2UuCj4+PiArICoKPj4+ICsgKiBBIHByaW1hcnkgZnVuY3Rpb24gaW50cm9kdWNl ZCBoZXJlIGlzIHNvLWNhbGxlZCAiYWRkcmVzcyBzcGFjZQo+Pj4gYmFsbG9vbmluZyIKPj4+ICsg KiB0ZWNobmlxdWUuIEludGVsIEdWVC1nIHBhcnRpdGlvbnMgZ2xvYmFsIGdyYXBoaWNzIG1lbW9y eSBhbW9uZwo+Pj4gbXVsdGlwbGUgVk1zLAo+Pj4gKyAqIHNvIGVhY2ggVk0gY2FuIGRpcmVjdGx5 IGFjY2VzcyBhIHBvcnRpb24gb2YgdGhlIG1lbW9yeSB3L28KPj4+IGh5cGVydmlzb3Incwo+Pj4g KyAqIGludGVydmVudGlvbiwgZS5nLiBmaWxsaW5nIHRleHR1cmVzIG9yIHF1ZXVpbmcgY29tbWFu ZHMuIEhvd2V2ZXIKPj4+IHcvIHRoZQo+Pgo+PiBQZXJzb25hbCBwcmVmZXJlbmNlLCBidXQgSXQg bWF5IGJlIG5pY2VyIHRvIGF2b2lkICJ3L28iIGFuZCBzaW1pbGFyCj4+IHNob3J0aGFuZCBpbiBk b2N1bWVudGF0aW9uLgo+IE9LLiBXaWxsIGZpeCBpdC4gOikKPj4KPj4+ICsgKiBwYXJ0aXRpb25p bmcgYW4gdW5tb2RpZmllZCBpOTE1IGRyaXZlciB3b3VsZCBhc3N1bWUgYSBzbWFsbGVyCj4+PiBn cmFwaGljcwo+Pj4gKyAqIG1lbW9yeSBzdGFydGluZyBmcm9tIGFkZHJlc3MgWkVSTywgdGhlbiBy ZXF1aXJlcyB2R1BVIGVtdWxhdGlvbgo+Pj4gbW9kdWxlIHRvCj4+PiArICogdHJhbnNsYXRlIHRo ZSBncmFwaGljcyBhZGRyZXNzIGJldHdlZW4gJ2d1ZXN0IHZpZXcnIGFuZCAnaG9zdAo+Pj4gdmll dycsIGZvcgo+Pj4gKyAqIGFsbCByZWdpc3RlcnMgYW5kIGNvbW1hbmQgb3Bjb2RlcyB3aGljaCBj b250YWluIGEgZ3JhcGhpY3MgbWVtb3J5Cj4+PiBhZGRyZXNzLgo+Pj4gKyAqIFRvIHJlZHVjZSB0 aGUgY29tcGxleGl0eSwgSW50ZWwgR1ZULWcgaW50cm9kdWNlcyAiYWRkcmVzcyBzcGFjZQo+Pj4g YmFsbG9vbmluZyIsCj4+PiArICogYnkgdGVsbGluZyB0aGUgZXhhY3QgcGFydGl0aW9uaW5nIGtu b3dsZWRnZSB0byBlYWNoIGd1ZXN0IGk5MTUKPj4+IGRyaXZlciwgd2hpY2gKPj4+ICsgKiB0aGVu IHJlc2VydmVzIGFuZCBwcmV2ZW50cyBub24tYWxsb2NhdGVkIHBvcnRpb25zIGZyb20gYWxsb2Nh dGlvbi4KPj4+IFRodXMgdkdQVQo+Pj4gKyAqIGVtdWxhdGlvbiBtb2R1bGUgbW9kdWxlIG9ubHkg bmVlZHMgdG8gc2NhbiBhbmQgdmFsaWRhdGUgZ3JhcGhpY3MKPj4+IGFkZHJlc3Nlcwo+Pj4gKyAq IHcvbyBjb21wbGV4aXR5IG9mIGFkZHJlc3MgdHJhbnNsYXRpb24uCj4+PiArICoKPj4+ICsgKi8K Pj4+ICsKPj4+ICsvKioKPj4+ICsgKiBpOTE1X2NoZWNrX3ZncHUgLSBkZXRlY3QgdmlydHVhbCBH UFUKPj4+ICsgKiBAZGV2OiBkcm0gZGV2aWNlICoKPj4+ICsgKgo+Pj4gKyAqIFRoaXMgZnVuY3Rp b24gaXMgY2FsbGVkIGF0IHRoZSBpbml0aWFsaXphdGlvbiBzdGFnZSwgdG8gZGV0ZWN0Cj4+PiB3 aGV0aGVyCj4+PiArICogcnVubmluZyBvbiBhIHZHUFUuCj4+PiArICovCj4+PiArdm9pZCBpOTE1 X2NoZWNrX3ZncHUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4+ICt7Cj4+PiArICAgIHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPj4+ICsgICAgdWlu dDY0X3QgbWFnaWM7Cj4+PiArICAgIHVpbnQzMl90IHZlcnNpb247Cj4+PiArCj4+PiArICAgIEJV SUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHZndF9pZikgIT0gVkdUX1BWSU5GT19TSVpFKTsKPj4+ ICsKPj4+ICsgICAgaWYgKCFJU19IQVNXRUxMKGRldikpCj4+PiArICAgICAgICByZXR1cm47Cj4+ PiArCj4+PiArICAgIG1hZ2ljID0gcmVhZHEoZGV2X3ByaXYtPnJlZ3MgKyB2Z3RpZl9yZWcobWFn aWMpKTsKPj4+ICsgICAgaWYgKG1hZ2ljICE9IFZHVF9NQUdJQykKPj4+ICsgICAgICAgIHJldHVy bjsKPj4+ICsKPj4+ICsgICAgdmVyc2lvbiA9IElOVEVMX1ZHVF9JRl9WRVJTSU9OX0VOQ09ERSgK Pj4+ICsgICAgICAgIHJlYWR3KGRldl9wcml2LT5yZWdzICsgdmd0aWZfcmVnKHZlcnNpb25fbWFq b3IpKSwKPj4+ICsgICAgICAgIHJlYWR3KGRldl9wcml2LT5yZWdzICsgdmd0aWZfcmVnKHZlcnNp b25fbWlub3IpKSk7Cj4+PiArICAgIGlmICh2ZXJzaW9uICE9IElOVEVMX1ZHVF9JRl9WRVJTSU9O KQo+Pj4gKyAgICAgICAgcmV0dXJuOwo+Pgo+PiBXb3VsZCBpdCBiZSB1c2VmdWwgdG8gc29tZXRo aW5nIG9uIHZlcnNpb24gbWlzbWF0Y2g/Cj4gV2VsbC4gVGhhbmtzIGZvciB5b3VyIG5vdGlmaWNh dGlvbi4gOikKPiBJbiBmYWN0LCB0aGlzIHZlcnNpb24ganVkZ2VtZW50IGlzIGp1c3QgZm9yIGZ1 dHVyZSB1c2FnZXMuIEJ5IG5vdywgd2UKPiBoYXZlIG9ubHkgb25lIHZndCBpbnRlcmZhY2UgdmVy c2lvbiwgMHgxMDAwMC4gQnV0IHlvdSBhcmUgcmlnaHQsIHVubGlrZQo+IHRoZSBqdWRnZW1lbnQg Zm9yICdtYWdpYycsIHdoaWNoIHNwZWNpZmllcyB0aGUgSW50ZWwgR1ZULWcgZmVhdHVyZSwgYW5k Cj4gY2FuIGJlIHJldHVybmVkIGRpcmVjdGx5IHdoZW4gZmFsc2UsIGZhaWx1cmUgZm9yIHRoZSAn dmVyc2lvbicgbWF5Cj4gc2hvdWxkIHRyaWdnZXIgc29tZXRoaW5nIGxpa2UgdW5sb2FkIHRoZSBk cml2ZXIuIEhvd2V2ZXIsIGlmIHNvLCB0aGlzCj4gbWVhbnMgd2UgbWF5IG5lZWQgdG86Cj4gMT4g cmV0dXJuIHNvbWV0aGluZyBpbiBpOTE1X2NoZWNrX3ZncHUoKTsKPiAyPiBjaGFuZ2UgdGhlIHBy b3RvdHlwZSBvZiBpOTE1X2NoZWNrX3ZncHUoKSBhbmQgaXRzIGNhbGxlcgo+IGludGVsX3VuY29y ZV9pbml0KCk7Cj4gMz4gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBpbnRlbF91bmNvcmVfaW5p dCgpIGluIGk5MTVfZHJpdmVyX2xvYWQoKQo+IElzIHRoaXMgYXBwcm9hY2ggYWNjZXB0YWJsZT8K Ckkgd291bGQgbGVhdmUgdGhpcyBmb3IgdGhlIGZ1dHVyZSB2ZXJzaW9uLiBJIHdhcyBzaW1wbHkg c3VnZ2VzdGluZyAKbG9nZ2luZyBzb21ldGhpbmcgb24gdmVyc2lvbiBtaXNtYXRjaC4gSnVzdCBi ZWNhdXNlIGl0IGlzIHVuZXhwZWN0ZWQgc28gCnRoZXJlIGlzIGEgdHJhY2UgaW4gdGhlIGxvZ3Mg d2h5IGZlYXR1cmUgaXMgbm90IGF2YWlsYWJsZS4gSXQncyB1cCB0byB5b3UuCgo+Pgo+Pj4gKyAg ICBkZXZfcHJpdi0+dmdwdS5hY3RpdmUgPSB0cnVlOwo+Pj4gKyAgICBEUk1fSU5GTygiVmlydHVh bCBHUFUgZm9yIEludGVsIEdWVC1nIGRldGVjdGVkLlxuIik7Cj4+PiArfQo+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oCj4+PiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfdmdwdS5oCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAw MDAwMC4uNWY0MWQwMWMKPj4+IC0tLSAvZGV2L251bGwKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfdmdwdS5oCj4+PiBAQCAtMCwwICsxLDg1IEBACj4+PiArLyoKPj4+ICsgKiBD b3B5cmlnaHQoYykgMjAxMS0yMDE0IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLgo+Pj4gKyAqCj4+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KPj4+IG9idGFpbmluZyBhCj4+PiArICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+Pj4g IlNvZnR3YXJlIiksCj4+PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQKPj4+IGxpbWl0YXRpb24KPj4+ICsgKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwKPj4+ IHN1YmxpY2Vuc2UsCj4+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20KPj4+IHRoZQo+Pj4gKyAqIFNvZnR3YXJlIGlz IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6 Cj4+PiArICoKPj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nCj4+PiB0aGUgbmV4dAo+Pj4gKyAqIHBhcmFncmFwaCkg c2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucwo+ Pj4gb2YgdGhlCj4+PiArICogU29mdHdhcmUuCj4+PiArICoKPj4+ICsgKiBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKPj4+IEVY UFJFU1MgT1IKPj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GCj4+PiBNRVJDSEFOVEFCSUxJVFksCj4+PiArICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UCj4+ PiBTSEFMTAo+Pj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTCj4+PiBPUiBPVEhFUgo+Pj4gKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+Pj4g QVJJU0lORyBGUk9NLAo+Pj4gKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKPj4+IERFQUxJTkdTIElOIFRIRQo+Pj4gKyAqIFNP RlRXQVJFLgo+Pj4gKyAqLwo+Pj4gKwo+Pj4gKyNpZm5kZWYgX0k5MTVfVkdQVV9IXwo+Pj4gKyNk ZWZpbmUgX0k5MTVfVkdQVV9IXwo+Pj4gKwo+Pj4gKy8qIFRoZSBNTUlPIG9mZnNldCBvZiB0aGUg c2hhcmVkIGluZm8gYmV0d2VlbiBndWVzdCBhbmQgaG9zdAo+Pj4gZW11bGF0b3IgKi8KPj4+ICsj ZGVmaW5lIFZHVF9QVklORk9fUEFHRSAgICAweDc4MDAwCj4+PiArI2RlZmluZSBWR1RfUFZJTkZP X1NJWkUgICAgMHgxMDAwCj4+PiArCj4+PiArLyoKPj4+ICsgKiBUaGUgZm9sbG93aW5nIHN0cnVj dHVyZSBwYWdlcyBhcmUgZGVmaW5lZCBpbiBHRU4gTU1JTyBzcGFjZQo+Pj4gKyAqIGZvciB2aXJ0 dWFsaXphdGlvbi4gKE9uZSBwYWdlIGZvciBub3cpCj4+PiArICovCj4+PiArI2RlZmluZSBWR1Rf TUFHSUMgICAgICAgICAweDQ3NzY1NDQ3NzY1NDQ3NzYgICAgLyogJ3ZHVHZHVHZHJyAqLwo+Pj4g KyNkZWZpbmUgVkdUX1ZFUlNJT05fTUFKT1IgMQo+Pj4gKyNkZWZpbmUgVkdUX1ZFUlNJT05fTUlO T1IgMAo+Pj4gKwo+Pj4gKyNkZWZpbmUgSU5URUxfVkdUX0lGX1ZFUlNJT05fRU5DT0RFKG1ham9y LCBtaW5vcikgKChtYWpvcikgPDwgMTYgfAo+Pj4gKG1pbm9yKSkKPj4+ICsjZGVmaW5lIElOVEVM X1ZHVF9JRl9WRVJTSU9OIFwKPj4+ICsgICAgSU5URUxfVkdUX0lGX1ZFUlNJT05fRU5DT0RFKFZH VF9WRVJTSU9OX01BSk9SLCBWR1RfVkVSU0lPTl9NSU5PUikKPj4+ICsKPj4+ICtzdHJ1Y3Qgdmd0 X2lmIHsKPj4+ICsgICAgdWludDY0X3QgbWFnaWM7ICAgICAgICAvKiBWR1RfTUFHSUMgKi8KPj4+ ICsgICAgdWludDE2X3QgdmVyc2lvbl9tYWpvcjsKPj4+ICsgICAgdWludDE2X3QgdmVyc2lvbl9t aW5vcjsKPj4+ICsgICAgdWludDMyX3Qgdmd0X2lkOyAgICAvKiBJRCBvZiB2R1QgaW5zdGFuY2Ug Ki8KPj4+ICsgICAgdWludDMyX3QgcnN2MVsxMl07ICAgIC8qIHBhZCB0byBvZmZzZXQgMHg0MCAq Lwo+Pgo+PiBJbiBnZW5lcmFsIEkgdGhvdWdodCBzdGRpbnQgdHlwZXMgc2hvdWxkIGJlIGF2b2lk ZWQgaW4gdGhlIGtlcm5lbCBpbgo+PiBmYXZvdXIgb2YgdTMyIGFuZCBjb21wYW55LiBCdXQgSSBz ZWUgaTkxNSBpcyBmdWxsIG9mIHRoZW0gYWxyZWFkeSBzbwo+PiBtYXliZSBteSBpbmZvcm1hdGlv biBpcyBvdXRkYXRlZC4KPj4KPiBMZXQncyBrZWVwIHRoZSBfdCB0eXBlcywgbGlrZSBleHBsYW5h dGlvbnMgaW4gRGFuaWVsJ3MgbWFpbC4gSXMgdGhpcyBPSz8KClllcy4KCj4+PiArICAgIC8qCj4+ PiArICAgICAqICBEYXRhIHN0cnVjdHVyZSB0byBkZXNjcmliZSB0aGUgYmFsb29uaW5nIGluZm8g b2YgcmVzb3VyY2VzLgo+Pj4gKyAgICAgKiAgRWFjaCBWTSBjYW4gb25seSBoYXZlIG9uZSBwb3J0 aW9uIG9mIGNvbnRpbnVvdXMgYXJlYSBmb3Igbm93Lgo+Pj4gKyAgICAgKiAgKE1heSBzdXBwb3J0 IHNjYXR0ZXJlZCByZXNvdXJjZSBpbiBmdXR1cmUpCj4+PiArICAgICAqICAoc3RhcnRpbmcgZnJv bSBvZmZzZXQgMHg0MCkKPj4+ICsgICAgICovCj4+PiArICAgIHN0cnVjdCB7Cj4+PiArICAgICAg ICAvKiBBcGVydHVyZSByZWdpc3RlciBiYWxvb25pbmcgKi8KPj4+ICsgICAgICAgIHN0cnVjdCB7 Cj4+PiArICAgICAgICAgICAgdWludDMyX3QgbXlfYmFzZTsKPj4+ICsgICAgICAgICAgICB1aW50 MzJfdCBteV9zaXplOwo+Pj4gKyAgICAgICAgfSBsb3dfZ21hZHI7ICAgIC8qIGFwZXJ0dXJlICov Cj4+PiArICAgICAgICAvKiBHTUFEUiByZWdpc3RlciBiYWxvb25pbmcgKi8KPj4+ICsgICAgICAg IHN0cnVjdCB7Cj4+PiArICAgICAgICAgICAgdWludDMyX3QgbXlfYmFzZTsKPj4+ICsgICAgICAg ICAgICB1aW50MzJfdCBteV9zaXplOwo+Pj4gKyAgICAgICAgfSBoaWdoX2dtYWRyOyAgICAvKiBu b24gYXBlcnR1cmUgKi8KPj4+ICsgICAgICAgIC8qIGFsbG93ZWQgZmVuY2UgcmVnaXN0ZXJzICov Cj4+PiArICAgICAgICB1aW50MzJfdCBmZW5jZV9udW07Cj4+PiArICAgICAgICB1aW50MzJfdCBy c3YyWzNdOwo+Pj4gKyAgICB9IGF2YWlsX3JzOyAgICAgICAgLyogYXZhaWxhYmxlL2Fzc2lnbmVk IHJlc291cmNlICovCj4+Cj4+IEkgZGlkbid0IGZpZ3VyZSBvdXQgeWV0IHdoeSB0aGUgY29uY2Vw dCBpcyB0byBwYXNzIGluIHR3byByYW5nZXMgdG8gbWFyawo+PiBhcyByZXNlcnZlZCwgaW5zdGVh ZCBvZiBvbmUgdXNhYmxlL2FsbG93ZWQgcmFuZ2UgYW5kIHRoZW4gaW1wbGljaXRseSBhbGwKPj4g dGhlIHJlc3QgYXMgcmVzZXJ2ZWQ/Cj4+Cj4gTGlrZSB5b3Ugc2FpZCBpbiAyLzMgY29tbWVudHMs IHRoaXMgMiBwYXJ0IGlzIGZvciBtYXBwYWJsZSBhbmQKPiBub24tbWFwcGxhYmxlIHJlc3BlY3Rp dmVseS4gOikKCkFyZSBoaWdoIGFuZCBsb3cgbWVtb3J5IGFzIHRlcm1zIGtub3duIGluIHRoZSBp OTE1IHNwYWNlIHNvIGZhciBhcyAKc3lub255bXMgZm9yIG1hcHBhYmxlIGFuZCBub24tbWFwcGFi bGU/Cgo+Pj4gKyAgICB1aW50MzJfdCByc3YzWzB4MjAwIC0gMjRdOyAgICAvKiBwYWQgdG8gaGFs ZiBwYWdlICovCj4+PiArICAgIC8qCj4+PiArICAgICAqIFRoZSBib3R0b20gaGFsZiBwYWdlIGlz IGZvciByZXNwb25zZSBmcm9tIEdmeCBkcml2ZXIgdG8KPj4+IGh5cGVydmlzb3IuCj4+PiArICAg ICAqIFNldCB0byByZXNlcnZlZCBmaWVsZHMgdGVtcG9yYXJpbHkgYnkgbm93Lgo+Pj4gKyAgICAg Ki8KPj4+ICsgICAgdWludDMyX3QgcnN2NDsKPj4+ICsgICAgdWludDMyX3QgZGlzcGxheV9yZWFk eTsgICAgLyogcmVhZHkgZm9yIGRpc3BsYXkgb3duZXIgc3dpdGNoICovCj4+PiArICAgIHVpbnQz Ml90IHJzdjVbMHgyMDAgLSAyXTsgICAgLyogcGFkIHRvIG9uZSBwYWdlICovCj4+PiArfSBfX3Bh Y2tlZDsKPj4KPj4gWW91IHByb2JhYmx5IGRvbid0IG5lZWQgX19wYWNrZWQgc2luY2UgeW91IGhh dmUgQlVJTERfQlVHX09OIG9uIHNpemUKPj4gbWlzbWF0Y2ggYW5kIHBhZCB0byBmdWxsIHNpemUg d2l0aCByZXNlcnZlZCBmaWVsZHMuIEkgZG9uJ3QgdGhpbmsgaXQKPj4gbWF0dGVycyB0aG91Z2gu Cj4+Cj4gV2VsbCwgSUlSQywgdGhpcyBfX3BhY2tlZCBpcyBhZGRlZCB0byBmb2xsb3cgQ2hyaXMn cyBjb21tZW50cy4gSG93IGFib3V0Cj4gd2Uga2VlcCBpdD8gT3Igd2lsbCBpdCBodXJ0IGFueSBw bGFjZT8gOikKClRoZSBvbmx5IHB1cnBvc2UgZm9yIHBhY2tlZCBoZXJlIEkgY2FuIHNlZSBpcyBh IGRvdWJsZSBndWFyZCBhbG9uZyB0aGUgCkJVSUxEX0JVR19PTi4gQXMgSSBzYWlkIEkgZG9uJ3Qg dGhpbmsgaXQgbWFrZXMgYW55IGRpZmZlcmVuY2Ugc28geW91IGNhbiAKbGVhdmUgaXQgaW4uCgpS ZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==