From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/3] drm/i915: Use atomic helpers for suspend. Date: Tue, 9 Feb 2016 16:58:34 +0200 Message-ID: <20160209145834.GQ23290@intel.com> References: <20160203163408.GF23290@intel.com> <1455022343-15222-1-git-send-email-maarten.lankhorst@linux.intel.com> <1455022343-15222-2-git-send-email-maarten.lankhorst@linux.intel.com> <20160209133747.GN23290@intel.com> <56B9F23F.9080502@linux.intel.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 ESMTP id 302CA6E42D for ; Tue, 9 Feb 2016 06:58:39 -0800 (PST) Content-Disposition: inline In-Reply-To: <56B9F23F.9080502@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: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBGZWIgMDksIDIwMTYgYXQgMDM6MDU6NTFQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMDktMDItMTYgb20gMTQ6Mzcgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6 Cj4gPiBPbiBUdWUsIEZlYiAwOSwgMjAxNiBhdCAwMTo1MjoyMlBNICswMTAwLCBNYWFydGVuIExh bmtob3JzdCB3cm90ZToKPiA+PiBJbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZSBmdW5jdGlvbmFs aXR5IG5vdyB0aGF0IHdlIG5vIGxvbmdlciBuZWVkCj4gPj4gdG8gcHJlc2VydmUgZHBsbCBzdGF0 ZSB3ZSBjYW4gbW92ZSB0byB1c2luZyB0aGUgdXBzdHJlYW0gc3VzcGVuZCBoZWxwZXIuCj4gPj4K PiA+PiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RA bGludXguaW50ZWwuY29tPgo+ID4+IC0tLQo+ID4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Y19oZWxwZXIuYyAgfCAgIDMgKwo+ID4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j ICAgICAgfCAgIDggLS0tCj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAg ICB8ICAgMSArCj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDEx NyArKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4+ICA0IGZpbGVzIGNoYW5n ZWQsIDQyIGluc2VydGlvbnMoKyksIDg3IGRlbGV0aW9ucygtKQo+ID4+Cj4gPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWNfaGVscGVyLmMKPiA+PiBpbmRleCAyYjQzMGIwNWYzNWQuLmEyZDNiMDk0ZjI3 YyAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gPj4gQEAgLTIx MDIsNiArMjEwMiw5IEBAIGludCBkcm1fYXRvbWljX2hlbHBlcl9yZXN1bWUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiA+PiAgCWVyciA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKPiA+PiAg CWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKPiA+PiAgCj4gPj4gKwlpZiAoZXJyKQo+ID4+ ICsJCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gPj4gKwo+ID4+ICAJcmV0dXJuIGVy cjsKPiA+PiAgfQo+ID4+ICBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX3Jlc3VtZSk7 Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gPj4gaW5kZXggMTFkODQxNGVkYmJlLi5mYzli NTUyYmZjZDEgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu Ywo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiA+PiBAQCAtNjAw LDEzICs2MDAsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJtX3N1c3BlbmQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiA+PiAgCj4gPj4gIAlpbnRlbF9zdXNwZW5kX2d0X3Bvd2Vyc2F2ZShkZXYpOwo+ ID4+ICAKPiA+PiAtCS8qCj4gPj4gLQkgKiBEaXNhYmxlIENSVENzIGRpcmVjdGx5IHNpbmNlIHdl IHdhbnQgdG8gcHJlc2VydmUgc3cgc3RhdGUKPiA+PiAtCSAqIGZvciBfdGhhdy4gQWxzbywgcG93 ZXIgZ2F0ZSB0aGUgQ1JUQyBwb3dlciB3ZWxscy4KPiA+PiAtCSAqLwo+ID4+IC0JZHJtX21vZGVz ZXRfbG9ja19hbGwoZGV2KTsKPiA+PiAgCWludGVsX2Rpc3BsYXlfc3VzcGVuZChkZXYpOwo+ID4+ IC0JZHJtX21vZGVzZXRfdW5sb2NrX2FsbChkZXYpOwo+ID4+ICAKPiA+PiAgCWludGVsX2RwX21z dF9zdXNwZW5kKGRldik7Cj4gPj4gIAo+ID4+IEBAIC03NjEsOSArNzU1LDcgQEAgc3RhdGljIGlu dCBpOTE1X2RybV9yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+PiAgCQlkZXZfcHJp di0+ZGlzcGxheS5ocGRfaXJxX3NldHVwKGRldik7Cj4gPj4gIAlzcGluX3VubG9ja19pcnEoJmRl dl9wcml2LT5pcnFfbG9jayk7Cj4gPj4gIAo+ID4+IC0JZHJtX21vZGVzZXRfbG9ja19hbGwoZGV2 KTsKPiA+PiAgCWludGVsX2Rpc3BsYXlfcmVzdW1lKGRldik7Cj4gPj4gLQlkcm1fbW9kZXNldF91 bmxvY2tfYWxsKGRldik7Cj4gPj4gIAo+ID4+ICAJaW50ZWxfZHBfbXN0X3Jlc3VtZShkZXYpOwo+ ID4+ICAKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+PiBpbmRleCA4MjE2NjY1NDA1ZWIu LmVmMjg5NTE0Yjk3ZSAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4+IEBA IC0xODQ4LDYgKzE4NDgsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gPj4gIAo+ID4+ ICAJZW51bSBtb2Rlc2V0X3Jlc3RvcmUgbW9kZXNldF9yZXN0b3JlOwo+ID4+ICAJc3RydWN0IG11 dGV4IG1vZGVzZXRfcmVzdG9yZV9sb2NrOwo+ID4+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUg Km1vZGVzZXRfcmVzdG9yZV9zdGF0ZTsKPiA+PiAgCj4gPj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIHZt X2xpc3Q7IC8qIEdsb2JhbCBsaXN0IG9mIGFsbCBhZGRyZXNzIHNwYWNlcyAqLwo+ID4+ICAJc3Ry dWN0IGk5MTVfZ3R0IGd0dDsgLyogVk0gcmVwcmVzZW50aW5nIHRoZSBnbG9iYWwgYWRkcmVzcyBz cGFjZSAqLwo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+PiBpbmRleCBl NDk2YzEzMDM2NGQuLjRjOTFmZDFjNTIyMiAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiA+PiBAQCAtNjM5Myw1OCArNjM5MywxOSBAQCBzdGF0aWMgdm9pZCBp bnRlbF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4+ICAg Ki8KPiA+PiAgaW50IGludGVsX2Rpc3BsYXlfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ID4+ICB7Cj4gPj4gLQlzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25maWcgPSAmZGV2LT5t b2RlX2NvbmZpZzsKPiA+PiAtCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4ID0g Y29uZmlnLT5hY3F1aXJlX2N0eDsKPiA+PiAtCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZTsKPiA+PiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiA+PiAtCXVuc2lnbmVkIGNydGNfbWFz ayA9IDA7Cj4gPj4gLQlpbnQgcmV0ID0gMDsKPiA+PiAtCj4gPj4gLQlpZiAoV0FSTl9PTighY3R4 KSkKPiA+PiAtCQlyZXR1cm4gMDsKPiA+PiAtCj4gPj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZj dHgtPnd3X2N0eCk7Cj4gPj4gLQlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsK PiA+PiAtCWlmIChXQVJOX09OKCFzdGF0ZSkpCj4gPj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gPj4g LQo+ID4+IC0Jc3RhdGUtPmFjcXVpcmVfY3R4ID0gY3R4Owo+ID4+IC0Jc3RhdGUtPmFsbG93X21v ZGVzZXQgPSB0cnVlOwo+ID4+IC0KPiA+PiAtCWZvcl9lYWNoX2NydGMoZGV2LCBjcnRjKSB7Cj4g Pj4gLQkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0KPiA+PiAtCQkJZHJtX2F0 b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gPj4gLQo+ID4+IC0JCXJldCA9IFBU Ul9FUlJfT1JfWkVSTyhjcnRjX3N0YXRlKTsKPiA+PiAtCQlpZiAocmV0KQo+ID4+IC0JCQlnb3Rv IGZyZWU7Cj4gPj4gLQo+ID4+IC0JCWlmICghY3J0Y19zdGF0ZS0+YWN0aXZlKQo+ID4+IC0JCQlj b250aW51ZTsKPiA+PiAtCj4gPj4gLQkJY3J0Y19zdGF0ZS0+YWN0aXZlID0gZmFsc2U7Cj4gPj4g LQkJY3J0Y19tYXNrIHw9IDEgPDwgZHJtX2NydGNfaW5kZXgoY3J0Yyk7Cj4gPj4gLQl9Cj4gPj4g LQo+ID4+IC0JaWYgKGNydGNfbWFzaykgewo+ID4+IC0JCXJldCA9IGRybV9hdG9taWNfY29tbWl0 KHN0YXRlKTsKPiA+PiAtCj4gPj4gLQkJaWYgKCFyZXQpIHsKPiA+PiAtCQkJZm9yX2VhY2hfY3J0 YyhkZXYsIGNydGMpCj4gPj4gLQkJCQlpZiAoY3J0Y19tYXNrICYgKDEgPDwgZHJtX2NydGNfaW5k ZXgoY3J0YykpKQo+ID4+IC0JCQkJCWNydGMtPnN0YXRlLT5hY3RpdmUgPSB0cnVlOwo+ID4+IC0K PiA+PiAtCQkJcmV0dXJuIHJldDsKPiA+PiAtCQl9Cj4gPj4gLQl9Cj4gPj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPj4gKwlpbnQgcmV0Owo+ ID4+ICAKPiA+PiAtZnJlZToKPiA+PiAtCWlmIChyZXQpCj4gPj4gKwlkZXZfcHJpdi0+bW9kZXNl dF9yZXN0b3JlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfc3VzcGVuZChkZXYpOwo+ID4+ICsJ cmV0ID0gUFRSX0VSUl9PUl9aRVJPKGRldl9wcml2LT5tb2Rlc2V0X3Jlc3RvcmVfc3RhdGUpOwo+ ID4+ICsJaWYgKHJldCkgewo+ID4+ICAJCURSTV9FUlJPUigiU3VzcGVuZGluZyBjcnRjJ3MgZmFp bGVkIHdpdGggJWlcbiIsIHJldCk7Cj4gPj4gLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUp Owo+ID4+ICsJCWRldl9wcml2LT5tb2Rlc2V0X3Jlc3RvcmVfc3RhdGUgPSBOVUxMOwo+ID4+ICsJ fQo+ID4gSSB3b3VsZCB1c2UgYSBsb2NhbCBzdGF0ZSBwb2ludGVyIGFuZCBvbmx5IGFzc2lnbiBp dCB0bwo+ID4gbW9kZXNldF9yZXN0b3JlX3N0YXRlIG9uY2Ugd2Uga25vdyBpdCdzIGdvb2QuCj4g Pgo+ID4+ICAJcmV0dXJuIHJldDsKPiA+PiAgfQo+ID4+ICAKPiA+PiArCj4gPiBTcHVyaW91cyBu ZXdsaW5lLgo+ID4KPiA+PiAgdm9pZCBpbnRlbF9lbmNvZGVyX2Rlc3Ryb3koc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyKQo+ID4+ICB7Cj4gPj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50 ZWxfZW5jb2RlciA9IHRvX2ludGVsX2VuY29kZXIoZW5jb2Rlcik7Cj4gPj4gQEAgLTE1OTA5LDUx ICsxNTg3MCw0OSBAQCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gPj4gIAo+ID4+ICB2b2lkIGludGVsX2Rpc3BsYXlfcmVzdW1lKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gPj4gIHsKPiA+PiAtCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKPiA+PiAtCXN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm47Cj4gPj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lOwo+ID4+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4+ICsJ c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gZGV2X3ByaXYtPm1vZGVzZXRfcmVzdG9y ZV9zdGF0ZTsKPiA+PiArCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7Cj4gPj4g IAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gPj4gLQlpbnQgcmV0Owo+ID4+ICsJc3RydWN0IGRy bV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ID4+ICsJaW50IHJldCwgaTsKPiA+PiArCj4gPj4g KwlpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKGRldik7Cj4gPiBJc24ndCBzb21ldGhpbmcg aW4gdGhlcmUgZ29pbmcgdG8gc2NyZWFtIGFib3V0IGxvY2tpbmc/Cj4gSSB3YXMgaG9waW5nIHRv IGZpbmQgb3V0IGJ5IHJ1bm5pbmcgaXQgdGhyb3VnaCBDSS4uCj4gCj4gSSBkb24ndCBzZWUgd2hh dCBwb3NzaWJseSBjb3VsZCBzY3JlYW0gaG93ZXZlciwgZnJvbSBhIGdsYW5jZSBpdCBzZWVtcyBu b3RoaW5nIGRlcGVuZHMgb24gaXQuCj4gPj4gKwlpOTE1X3JlZGlzYWJsZV92Z2EoZGV2KTsKPiA+ PiArCWRldl9wcml2LT5tb2Rlc2V0X3Jlc3RvcmVfc3RhdGUgPSBOVUxMOwo+ID4+ICAKPiA+PiAg CWlmICghc3RhdGUpCj4gPj4gIAkJcmV0dXJuOwo+ID4+ICAKPiA+PiAtCXN0YXRlLT5hY3F1aXJl X2N0eCA9IGRldi0+bW9kZV9jb25maWcuYWNxdWlyZV9jdHg7Cj4gPj4gLQo+ID4+IC0JZm9yX2Vh Y2hfY3J0YyhkZXYsIGNydGMpIHsKPiA+PiAtCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNf c3RhdGUgPQo+ID4+IC0JCQlkcm1fYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsK PiA+PiAtCj4gPj4gLQkJcmV0ID0gUFRSX0VSUl9PUl9aRVJPKGNydGNfc3RhdGUpOwo+ID4+IC0J CWlmIChyZXQpCj4gPj4gLQkJCWdvdG8gZXJyOwo+ID4+ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9p bml0KCZjdHgsIDApOwo+ID4+ICsJc3RhdGUtPmFjcXVpcmVfY3R4ID0gJmN0eDsKPiA+PiAgCj4g Pj4gLQkJLyogZm9yY2UgYSByZXN0b3JlICovCj4gPj4gKwlmb3JfZWFjaF9jcnRjX2luX3N0YXRl KHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gPj4gKwkJLyoKPiA+PiArCQkgKiBGb3Jj ZSByZWNhbGN1bGF0aW9uIGV2ZW4gaWYgd2UgcmVzdG9yZQo+ID4+ICsJCSAqIGN1cnJlbnQgc3Rh dGUuIFdpdGggZmFzdCBtb2Rlc2V0IHRoaXMgbWF5IG5vdCByZXN1bHQKPiA+PiArCQkgKiBpbiBh IG1vZGVzZXQgd2hlbiB0aGUgc3RhdGUgaXMgY29tcGF0aWJsZS4KPiA+PiArCQkgKi8KPiA+PiAg CQljcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+ID4+ICAJfQo+ID4gSG1tLiBXaHkg ZG8gd2UgbmVlZCB0byBzZXQgdGhhdCBleGFjdGx5PyBJZiB0aGUgY3VycmVudCBzdGF0ZSBkb2Vz bid0Cj4gPiBtYXRjaCB0aGUgInRvIGJlIHJlc3RvcmVkIiBzdGF0ZSwgc2hvdWxkbid0IHNvbWV0 aGluZyBzb21ld2hlcmUgZmlndXJlCj4gPiBvdXQgdGhhdCB3ZSByZWFsbHkgbmVlZCBhIG1vZGVz ZXQ/Cj4gV2UgaGF2ZSBhIHdob2xlIGJ1bmNoIG9mIGh3IHN0YXRlIGZyb20gc3VzcGVuZCB0aGF0 IG1heSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaHcgcmVhZG91dCBpbiByZXN1bWUuIFRoaXMgaXMg bm90IGhhbmRsZWQgYnkgdGhlIGNvcmUgYmVjYXVzZSBpdCBkb2Vzbid0IGtub3cgYWJvdXQgZHJp dmVyIHNwZWNpZmljIHBsbCdzIGV0Yy4gU28gdGhhdCdzIHdoYXQgdGhlIG1vZGVfY2hhbmdlZCA9 IHRydWUgaXMgZm9yLiBJdCdzIGEgaGludCB0byBpbnRlbF9hdG9taWNfY2hlY2sgdGhhdCBtaWdo dCBnZXQgZG93bmdyYWRlZCB0byB1cGRhdGVfcGlwZSBpZiBpOTE1LmZhc3Rib290IGlzIHRydWUg YW5kIHRoZSBodyByZWFkb3V0IGFuZCByZXN1bWUgc3RhdGVzIGFyZSBjb21wYXRpYmxlLgoKSG1t LiBTbyBpdCdzIGEgYml0IG9mIGEgd29ya2Fyb3VuZCBkdWUgdG8gdGhlIGZhY3QgdGhhdAppbnRl bF9hdG9taWNfY2hlY2soKSBkb2Vzbid0IGFjdHVhbGx5IGNoZWNrL3VwZGF0ZSBldmVyeXRoaW5n LCBhbmQKaW5zdGVhZCB0cmllcyB0byBza2lwIGEgYnVuY2ggb2Ygc3R1ZmYgaWYgdGhlIGNvcmUg ZGlkbid0IGRldGVjdCBhbnkKbWVhbmluZ2Z1bCBjaGFuZ2VzPyBJIGd1ZXNzIHRoYXQgbWFrZXMg c29tZSBzZW5zZSBhcyBhbiBvcHRpbWl6YXRpb24uClRoYXQgaXMsIHRoZXJlJ3Mgbm8gbmVlZCB0 byBjaGVjayBzdHVmZiBpZiBub3RoaW5nIHVzZXIgdmlzaWJsZSAKY2hhbmdlZCBhbnl3YXkgYmVj YXVzZSB3ZSBzaG91bGQgYW55d2F5IGVuZCB1cCB3aXRoIHRoZSBzYW1lIHN0YXRlCnRoYXQgd2Ug aGFkIHNob3VsZCB3ZSBkbyBhIGZ1bGwgcmVjb21wdXRlLgoKLS0gClZpbGxlIFN5cmrDpGzDpApJ bnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==