From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [CI 10/21] drm/i915: Mark up all locked waiters Date: Tue, 13 Sep 2016 15:21:48 +0300 Message-ID: <87k2eg6lcz.fsf@gaia.fi.intel.com> References: <20160909131201.16673-1-chris@chris-wilson.co.uk> <20160909131201.16673-10-chris@chris-wilson.co.uk> <1473707859.2435.56.camel@intel.com> <87mvjc6p5n.fsf@gaia.fi.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 59CDB6E03D for ; Tue, 13 Sep 2016 12:22:54 +0000 (UTC) In-Reply-To: <87mvjc6p5n.fsf@gaia.fi.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Zanoni, Paulo R" , "intel-gfx@lists.freedesktop.org" , "chris@chris-wilson.co.uk" List-Id: intel-gfx@lists.freedesktop.org TWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+IHdyaXRlczoKCj4g Ilphbm9uaSwgUGF1bG8gUiIgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4gd3JpdGVzOgo+Cj4+ IEhpCj4+Cj4+IEVtIFNleCwgMjAxNi0wOS0wOSDDoHMgMTQ6MTEgKzAxMDAsIENocmlzIFdpbHNv biBlc2NyZXZldToKPj4+IEluIHRoZSBuZXh0IHBhdGNoIHdlIHdhbnQgdG8gaGFuZGxlIHJlc2V0 IGRpcmVjdGx5IGJ5IGEgbG9ja2VkIHdhaXRlcgo+Pj4gaW4KPj4+IG9yZGVyIHRvIGF2b2lkIGlz c3VlcyB3aXRoIHJldHVybmluZyBiZWZvcmUgdGhlIHJlc2V0IGlzIGhhbmRsZWQuIFRvCj4+PiBo YW5kbGUgdGhlIHJlc2V0LCB3ZSBtdXN0IGZpcnN0IGtub3cgd2hldGhlciB3ZSBob2xkIHRoZQo+ Pj4gc3RydWN0X211dGV4Lgo+Pj4gSWYgd2UgZG8gbm90IGhvbGQgdGhlIHN0cnVjdF9tdHVleCB3 ZSBjYW4gbm90IHBlcmZvcm0gdGhlIHJlc2V0LCBidXQKPj4+IHdlIGRvCj4+PiBub3QgYmxvY2sg dGhlIHJlc2V0IHdvcmtlciBlaXRoZXIgKGFuZCBzbyB3ZSBjYW4ganVzdCBjb250aW51ZSB0bwo+ Pj4gd2FpdCBmb3IKPj4+IHJlcXVlc3QgY29tcGxldGlvbikgLSBvdGhlcndpc2Ugd2UgbXVzdCBy ZWxpbnF1aXNoIHRoZSBtdXRleC4KPj4+IAo+Pj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29u IDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4+PiBSZXZpZXdlZC1ieTogTWlrYSBLdW9wcGFs YSA8bWlrYS5rdW9wcGFsYUBpbnRlbC5jb20+Cj4+PiAtLS0KPj4+IMKgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmPCoMKgwqDCoMKgwqB8wqDCoDQgKysrLQo+Pj4gwqBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDcgKysrKyst LQo+Pj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jwqDCoMKgwqB8wqDC oDggKysrKysrLS0KPj4+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmPCoMKg wqDCoMKgwqB8wqDCoDIgKy0KPj4+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVx dWVzdC5jwqDCoHwgMTUgKysrKysrKysrKysrLS0tCj4+PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3JlcXVlc3QuaMKgwqB8IDExICsrKysrKysrLS0tCj4+PiDCoGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMgfMKgwqAyICstCj4+PiDCoGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuY8KgwqB8wqDCoDMgKystCj4+PiDCoDggZmlsZXMg Y2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCj4+PiAKPj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+Pj4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+Pj4gaW5kZXggNjIwZTdkYWExMzNiLi42NDcw MmNjNjhlM2EgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4+IEBA IC00ODAzLDcgKzQ4MDMsOSBAQCBpOTE1X2Ryb3BfY2FjaGVzX3NldCh2b2lkICpkYXRhLCB1NjQg dmFsKQo+Pj4gwqAJCXJldHVybiByZXQ7Cj4+PiDCoAo+Pj4gwqAJaWYgKHZhbCAmIERST1BfQUNU SVZFKSB7Cj4+PiAtCQlyZXQgPSBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGRldl9wcml2LAo+Pj4g STkxNV9XQUlUX0lOVEVSUlVQVElCTEUpOwo+Pj4gKwkJcmV0ID0gaTkxNV9nZW1fd2FpdF9mb3Jf aWRsZShkZXZfcHJpdiwKPj4+ICsJCQkJCcKgwqDCoMKgwqBJOTE1X1dBSVRfSU5URVJSVVBUSUJM RQo+Pj4gfAo+Pj4gKwkJCQkJwqDCoMKgwqDCoEk5MTVfV0FJVF9MT0NLRUQpOwo+Pj4gwqAJCWlm IChyZXQpCj4+PiDCoAkJCWdvdG8gdW5sb2NrOwo+Pj4gwqAJfQo+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYwo+Pj4gaW5kZXggNDYxNzI1MGMzMDAwLi4yMzA2OWEyZDI4NTAgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+PiBAQCAtMjgwMiw3ICsyODAyLDggQEAgX19pOTE1 X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3QKPj4+IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp0bywKPj4+ IMKgCj4+PiDCoAlpZiAoIWk5MTUuc2VtYXBob3Jlcykgewo+Pj4gwqAJCXJldCA9IGk5MTVfd2Fp dF9yZXF1ZXN0KGZyb20sCj4+PiAtCQkJCQlmcm9tLT5pOTE1LQo+Pj4gPm1tLmludGVycnVwdGli bGUsCj4+PiArCQkJCQlmcm9tLT5pOTE1LT5tbS5pbnRlcnJ1cHRpYmxlIAo+Pj4gfAo+Pj4gKwkJ CQkJSTkxNV9XQUlUX0xPQ0tFRCwKPj4+IMKgCQkJCQlOVUxMLAo+Pj4gwqAJCQkJCU5PX1dBSVRC T09TVCk7Cj4+PiDCoAkJaWYgKHJldCkKPj4+IEBAIC00MzA0LDcgKzQzMDUsOSBAQCBpbnQgaTkx NV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+Pj4gwqAJaWYgKHJldCkKPj4+ IMKgCQlnb3RvIGVycjsKPj4+IMKgCj4+PiAtCXJldCA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUo ZGV2X3ByaXYsCj4+PiBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSk7Cj4+PiArCXJldCA9IGk5MTVf Z2VtX3dhaXRfZm9yX2lkbGUoZGV2X3ByaXYsCj4+PiArCQkJCcKgwqDCoMKgwqBJOTE1X1dBSVRf SU5URVJSVVBUSUJMRSB8Cj4+PiArCQkJCcKgwqDCoMKgwqBJOTE1X1dBSVRfTE9DS0VEKTsKPj4+ IMKgCWlmIChyZXQpCj4+PiDCoAkJZ290byBlcnI7Cj4+PiDCoAo+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMKPj4+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXZpY3QuYwo+Pj4gaW5kZXggMTAzMDg1MjQ2OTc1Li41YjZmODFjMWRi Y2EgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5j Cj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jCj4+PiBAQCAt MTcwLDcgKzE3MCw5IEBAIHNlYXJjaF9hZ2FpbjoKPj4+IMKgCWlmIChyZXQpCj4+PiDCoAkJcmV0 dXJuIHJldDsKPj4+IMKgCj4+PiAtCXJldCA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoZGV2X3By aXYsCj4+PiBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSk7Cj4+PiArCXJldCA9IGk5MTVfZ2VtX3dh aXRfZm9yX2lkbGUoZGV2X3ByaXYsCj4+PiArCQkJCcKgwqDCoMKgwqBJOTE1X1dBSVRfSU5URVJS VVBUSUJMRSB8Cj4+PiArCQkJCcKgwqDCoMKgwqBJOTE1X1dBSVRfTE9DS0VEKTsKPj4+IMKgCWlm IChyZXQpCj4+PiDCoAkJcmV0dXJuIHJldDsKPj4+IMKgCj4+PiBAQCAtMjc1LDcgKzI3Nyw5IEBA IGludCBpOTE1X2dlbV9ldmljdF92bShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlCj4+PiAqdm0s IGJvb2wgZG9faWRsZSkKPj4+IMKgCQkJCXJldHVybiByZXQ7Cj4+PiDCoAkJfQo+Pj4gwqAKPj4+ IC0JCXJldCA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoZGV2X3ByaXYsCj4+PiBJOTE1X1dBSVRf SU5URVJSVVBUSUJMRSk7Cj4+PiArCQlyZXQgPSBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGRldl9w cml2LAo+Pj4gKwkJCQkJwqDCoMKgwqDCoEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFCj4+PiB8Cj4+ PiArCQkJCQnCoMKgwqDCoMKgSTkxNV9XQUlUX0xPQ0tFRCk7Cj4+PiDCoAkJaWYgKHJldCkKPj4+ IMKgCQkJcmV0dXJuIHJldDsKPj4+IMKgCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMKPj4+IGluZGV4IDliY2FjNTJiODI2OC4uZjNjNjg3NmRhNTIxIDEwMDY0NAo+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4+PiBAQCAtMjY4Myw3ICsyNjgzLDcgQEAgdm9p ZCBpOTE1X2dlbV9ndHRfZmluaXNoX29iamVjdChzdHJ1Y3QKPj4+IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKPj4+IMKgCXN0cnVjdCBpOTE1X2dndHQgKmdndHQgPSAmZGV2X3ByaXYtPmdndHQ7 Cj4+PiDCoAo+Pj4gwqAJaWYgKHVubGlrZWx5KGdndHQtPmRvX2lkbGVfbWFwcykpIHsKPj4+IC0J CWlmIChpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGRldl9wcml2LCAwKSkgewo+Pj4gKwkJaWYgKGk5 MTVfZ2VtX3dhaXRfZm9yX2lkbGUoZGV2X3ByaXYsCj4+PiBJOTE1X1dBSVRfTE9DS0VEKSkgewo+ Pj4gwqAJCQlEUk1fRVJST1IoIkZhaWxlZCB0byB3YWl0IGZvciBpZGxlOyBWVCdkIG1heQo+Pj4g aGFuZy5cbiIpOwo+Pj4gwqAJCQkvKiBXYWl0IGEgYml0LCBpbiBob3BlcyBpdCBhdm9pZHMgdGhl IGhhbmcKPj4+ICovCj4+PiDCoAkJCXVkZWxheSgxMCk7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+Pj4gaW5kZXggZjRjMTVmMzE5ZDA4Li41Zjg5ODAxZTZh MTYgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0 LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+Pj4g QEAgLTI2MCw3ICsyNjAsOSBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX2luaXRfc2Vxbm8oc3RydWN0 Cj4+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHNlcW5vKQo+Pj4gwqAKPj4+IMKg CS8qIENhcmVmdWxseSByZXRpcmUgYWxsIHJlcXVlc3RzIHdpdGhvdXQgd3JpdGluZyB0byB0aGUK Pj4+IHJpbmdzICovCj4+PiDCoAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdikgewo+ Pj4gLQkJcmV0ID0gaW50ZWxfZW5naW5lX2lkbGUoZW5naW5lLAo+Pj4gSTkxNV9XQUlUX0lOVEVS UlVQVElCTEUpOwo+Pj4gKwkJcmV0ID0gaW50ZWxfZW5naW5lX2lkbGUoZW5naW5lLAo+Pj4gKwkJ CQkJSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgfAo+Pj4gKwkJCQkJSTkxNV9XQUlUX0xPQ0tFRCk7 Cj4+PiDCoAkJaWYgKHJldCkKPj4+IMKgCQkJcmV0dXJuIHJldDsKPj4+IMKgCX0KPj4+IEBAIC02 MjUsNiArNjI3LDEwIEBAIGludCBpOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QKPj4+IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCj4+PiDCoAlpbnQgcmV0ID0gMDsKPj4+IMKgCj4+PiDCoAltaWdo dF9zbGVlcCgpOwo+Pj4gKyNpZiBJU19FTkFCTEVEKENPTkZJR19MT0NLREVQKQo+Pj4gKwlHRU1f QlVHX09OKCEhbG9ja2RlcF9pc19oZWxkKCZyZXEtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpCj4+ PiAhPQo+Pj4gKwkJwqDCoMKgISEoZmxhZ3MgJiBJOTE1X1dBSVRfTE9DS0VEKSk7Cj4+PiArI2Vu ZGlmCj4+Cj4+IEknbSBoaXR0aW5nIHRoaXMgb24gbXkgU0tMLiBJdCB1c3VhbGx5IGhhcHBlbnMg cmlnaHQgYWZ0ZXIgdGhlIGxvZ2luLAo+PiB3aGVuIEkgY2xpY2sgdGhlIHRlcm1pbmFsIGljb24g b24gdGhlIHRvb2xiYXIgaW4gb3JkZXIgdG8gb3BlbiBpdCAob24KPj4gQ2lubmFtb24pLiBXaGVu IGl0IGRvZXNuJ3QgaGFwcGVuIGF0IHRoYXQgdGltZSwgSSBqdXN0IG9wZW4gYSBicm93c2VyCj4+ IGFuZCBicm93c2UgZm9yIGxpa2UgMzAgc2Vjb25kcyB1bnRpbCBpdCBoYXBwZW5zLgo+Pgo+PiBJ IGRpZCBtYW51YWwgcmV2ZXJ0cyBvZiB0aGlzIHNlcmllcyB1cCB0byB0aGlzIHBhdGNoIGFuZCBv YnZpb3VzbHkgdGhlCj4+IHByb2JsZW0gZ29lcyBhd2F5IChubyBtb3JlIEdFTV9CVUdfT04gdG8g aGl0KS4gSSBkaWRuJ3QgdHJ5IHRvIGRvIGEKPj4gcmVhbCBiaXNlY3QgdG8gY2hlY2sgaWYgdGhp cyBpcyB0aGUgZmlyc3QgYmFkIGNvbW1pdCBvciBpZiBpdCdzCj4+IHNvbWV0aGluZyBsYXRlciBv biB0aGUgc2VyaWVzLiBJdCBjb3VsZCBldmVuIGJlIGFuIG9sZGVyIHByb2JsZW0gdGhhdAo+PiBq dXN0IGdvdCBleHBvc2VkIGJ5IHRoZSBuZXcgQlVHKCkuIEknbSBhdmFpbGFibGUgdG8gdGVzdCBw YXRjaGVzLCBqdXN0Cj4+IHNlbmQgdGhlbSB0byBtZS4KPgo+IE5vIHBhdGNoZXMgeWV0IGJ1dCB0 aGVyZSBpcyBhIGNvbW1lbnQgb24gCj4gaW50ZWxfcHJlcGFyZV9wbGFuZV9mYigpIHRoYXQgc2F5 cyB0aGF0IGl0IG11c3QgYmUgY2FsbGVkIHdpdGggbXV0ZXgKPiBoZWxkLgo+Cj4gUXVpdGUgbGlr ZWx5IHRoZSBuZXcgR0VNX0JVR19PTiBjYXRjaGVzIHRoaXMgbm90IGJlaW5nIHRydWUuCj4KCkFz IENocmlzIHBvaW50ZWQgb3V0IGluIGlyYywgaXRzIGFib3V0IHRoZSByZXZlcnNlLiBXYWl0aW5n CndpdGggbXV0ZXggd2hlbiB5b3Ugc2hvdWxkbid0LgoKLU1pa2EKCgo+IC1NaWthCj4KPj4KPj4g SGVyZSdzIHRoZSBiYWNrdHJhY2U6Cj4+Cj4+IFvCoMKgwqA3MS4zNDEyNzJdIC0tLS0tLS0tLS0t LVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLQo+PiBbwqDCoMKgNzEuMzQxMzA1XSBrZXJuZWwgQlVH IGF0Cj4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYzo3NjMhCj4+IFvC oMKgwqA3MS4zNDEzMzFdIGludmFsaWQgb3Bjb2RlOiAwMDAwIFsjMV0gU01QCj4+IFvCoMKgwqA3 MS4zNDEzNDhdIE1vZHVsZXMgbGlua2VkIGluOiBzbmRfaGRhX2NvZGVjX2hkbWkKPj4gc25kX2hk YV9jb2RlY19yZWFsdGVrIHNuZF9oZGFfY29kZWNfZ2VuZXJpYyBzbmRfc29jX3NrbCBzbmRfc29j X3NrbF9pcGMKPj4gc25kX3NvY19zc3RfbWF0Y2ggc25kX2hkYV9leHRfY29yZSBzbmRfc29jX3Nz dF9kc3Agc25kX3NvY19zc3RfaXBjCj4+IG5sc191dGY4IG5sc19jcDQzNyB2ZmF0IGZhdCBlZmlf cHN0b3JlIGVmaXZhcnMgaXdsbXZtIHNnIHNuZF9oZGFfaW50ZWwKPj4gaTkxNSBpd2x3aWZpIHNu ZF9oZGFfY29kZWMgc25kX2h3ZGVwIHNuZF9oZGFfY29yZSBkcm1fa21zX2hlbHBlciBpZG1hNjQK Pj4gdmlydF9kbWEgc3lzY29weWFyZWEgc3lzZmlsbHJlY3Qgc3lzaW1nYmx0IGZiX3N5c19mb3Bz IGRybQo+PiBpbnRlbF9scHNzX3BjaSBpbnRlbF9wY2hfdGhlcm1hbCB3bWkgaW50ZWxfbHBzc19h Y3BpIGludGVsX2xwc3MKPj4gaW50ZWxfaGlkIGFjcGlfcGFkIHNwYXJzZV9rZXltYXAgc2RoY2lf cGNpIHBpbmN0cmxfc3VucmlzZXBvaW50Cj4+IHBpbmN0cmxfaW50ZWwKPj4gW8KgwqDCoDcxLjM0 MTYwOF0gQ1BVOiAzIFBJRDogMzAyNSBDb21tOiBYb3JnIFRhaW50ZWQ6Cj4+IEfCoMKgwqDCoMKg VcKgwqDCoMKgwqDCoMKgwqDCoMKgNC44LjAtcmM1cHorICM1Mgo+PiBbwqDCoMKgNzEuMzQxNjM3 XSBIYXJkd2FyZSBuYW1lOiBJbnRlbCBDb3Jwb3JhdGlvbiBTa3lsYWtlIENsaWVudAo+PiBwbGF0 Zm9ybS9Ta3lsYWtlIFkgTFBERFIzIFJWUDMsIEJJT1MgU0tMU0UyUjEuODZDLkIwNzQuUjAwLjE1 MDIyNDA2MDcKPj4gMDIvMjQvMjAxNQo+PiBbwqDCoMKgNzEuMzQxNjg0XSB0YXNrOiBmZmZmODgw MTY1MDA2MTQwIHRhc2suc3RhY2s6IGZmZmY4ODAxNjQzOTQwMDAKPj4gW8KgwqDCoDcxLjM0MTcw OF0gUklQOiAwMDEwOls8ZmZmZmZmZmZhMDFkMDM3Nz5dwqDCoFs8ZmZmZmZmZmZhMDFkMDM3Nz5d Cj4+IGk5MTVfd2FpdF9yZXF1ZXN0KzB4NDE3LzB4OGUwIFtpOTE1XQo+PiBbwqDCoMKgNzEuMzQx Nzc1XSBSU1A6IDAwMTg6ZmZmZjg4MDE2NDM5NzkyOMKgwqBFRkxBR1M6IDAwMDEwMjAyCj4+IFvC oMKgwqA3MS4zNDE3OTVdIFJBWDogMDAwMDAwMDAwMDAwMDAwMCBSQlg6IDAwMDAwMDAwMDAwMDAw MDAgUkNYOgo+PiBmZmZmZmZmZmZmZmZmZmZmCj4+IFvCoMKgwqA3MS4zNDE4MjFdIFJEWDogMDAw MDAwMDAwMDAwMDQwMSBSU0k6IGZmZmY4ODAxNjU4OTAwZDAgUkRJOgo+PiBmZmZmODgwMTY1MDA2 OGQ4Cj4+IFvCoMKgwqA3MS4zNDE4NDldIFJCUDogZmZmZjg4MDE2NDM5NzlkOCBSMDg6IDAwMDAw MDAwMDAwMDAwMDMgUjA5Ogo+PiAwMDAwMDAwMDAwMDAwMDAwCj4+IFvCoMKgwqA3MS4zNDE4NzVd IFIxMDogMDAwMDAwMDAwMDAwMDAwMSBSMTE6IDAwMDAwMDAwMDAwMDAwMDAgUjEyOgo+PiAwMDAw MDAwMDAwMDAwMDAxCj4+IFvCoMKgwqA3MS4zNDE5MTNdIFIxMzogMDAwMDAwMDAwMDAwMDAwMCBS MTQ6IDAwMDAwMDAwMDAwMDAwMDEgUjE1Ogo+PiBmZmZmODgwMTU5YjEyNWMwCj4+IFvCoMKgwqA3 MS4zNDE5NDBdIEZTOsKgwqAwMDAwN2ZhNDkyMmVjYTQwKDAwMDApIEdTOmZmZmY4ODAxNmQ0YzAw MDAoMDAwMCkKPj4ga25sR1M6MDAwMDAwMDAwMDAwMDAwMAo+PiBbwqDCoMKgNzEuMzQxOTcwXSBD UzrCoMKgMDAxMCBEUzogMDAwMCBFUzogMDAwMCBDUjA6IDAwMDAwMDAwODAwNTAwMzMKPj4gW8Kg wqDCoDcxLjM0MTk5Ml0gQ1IyOiAwMDAwNTYwYjk5YTA3MDAwIENSMzogMDAwMDAwMDE2NDFlYjAw MCBDUjQ6Cj4+IDAwMDAwMDAwMDAzNDA2ZTAKPj4gW8KgwqDCoDcxLjM0MjAxOV0gRFIwOiAwMDAw MDAwMDAwMDAwMDAwIERSMTogMDAwMDAwMDAwMDAwMDAwMCBEUjI6Cj4+IDAwMDAwMDAwMDAwMDAw MDAKPj4gW8KgwqDCoDcxLjM0MjA0Nl0gRFIzOiAwMDAwMDAwMDAwMDAwMDAwIERSNjogMDAwMDAw MDBmZmZlMGZmMCBEUjc6Cj4+IDAwMDAwMDAwMDAwMDA0MDAKPj4gW8KgwqDCoDcxLjM0MjA3M10g U3RhY2s6Cj4+IFvCoMKgwqA3MS4zNDIwODNdwqDCoDAwMDAwMDAwMDAwMDAwNDYgMDAwMDAwMDAw MDAwMDAwNCBmZmZmODgwMTAwMDAwMDIwCj4+IGZmZmZmZmZmODI3YjQwZTAKPj4gW8KgwqDCoDcx LjM0MjEyMl3CoMKgZmZmZmZmZmZmZmZmZmZmZiBmZmZmODgwMTY1MDA2ODg4IDAwMDAwMDAwMDAw MDAwMDEKPj4gMDAwMDAwMDAwMDAwMDAwMAo+PiBbwqDCoMKgNzEuMzQyMTU2XcKgwqBmZmZmODgw MTY1MDA2MTQwIGZmZmZmZmZmODEwZDU1NjAgZmZmZjg4MDE2NDM5Nzk3OAo+PiBmZmZmODgwMTY0 Mzk3OTc4Cj4+IFvCoMKgwqA3MS4zNDIxOTBdIENhbGwgVHJhY2U6Cj4+IFvCoMKgwqA3MS4zNDIy MDVdwqDCoFs8ZmZmZmZmZmY4MTBkNTU2MD5dID8gcHJlcGFyZV90b193YWl0X2V2ZW50KzB4ZjAv MHhmMAo+PiBbwqDCoMKgNzEuMzQyMjY3XcKgwqBbPGZmZmZmZmZmYTAxZDA4OTg+XSBpOTE1X2Zl bmNlX3dhaXQrMHg1OC8weGIwIFtpOTE1XQo+PiBbwqDCoMKgNzEuMzQyMjk0XcKgwqBbPGZmZmZm ZmZmODE1NWU2Y2Y+XSBmZW5jZV93YWl0X3RpbWVvdXQrMHg4Zi8weDJhMAo+PiBbwqDCoMKgNzEu MzQyMzE3XcKgwqBbPGZmZmZmZmZmODE1NjAxY2M+XQo+PiByZXNlcnZhdGlvbl9vYmplY3Rfd2Fp dF90aW1lb3V0X3JjdSsweDFiYy8weDU3MAo+PiBbwqDCoMKgNzEuMzQyMzQ2XcKgwqBbPGZmZmZm ZmZmODE1NjAwYWY+XSA/Cj4+IHJlc2VydmF0aW9uX29iamVjdF93YWl0X3RpbWVvdXRfcmN1KzB4 OWYvMHg1NzAKPj4gW8KgwqDCoDcxLjM0MjM5OV3CoMKgWzxmZmZmZmZmZmEwMjE4ZmNhPl0gaW50 ZWxfcHJlcGFyZV9wbGFuZV9mYisweGNhLzB4MmYwCj4+IFtpOTE1XQo+PiBbwqDCoMKgNzEuMzQy NDI2XcKgwqBbPGZmZmZmZmZmODExMjEyNDc+XSA/IF9fbW9kdWxlX2FkZHJlc3MrMHgyNy8weGYw Cj4+IFvCoMKgwqA3MS4zNDI0NTVdwqDCoFs8ZmZmZmZmZmZhMDBlMzUyMT5dCj4+IGRybV9hdG9t aWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKzB4NjEvMHhmMCBbZHJtX2ttc19oZWxwZXJdCj4+IFvC oMKgwqA3MS4zNDI1MTBdwqDCoFs8ZmZmZmZmZmZhMDIxMTVhZT5dIGludGVsX2F0b21pY19jb21t aXQrMHgyNWUvMHg0ZTAKPj4gW2k5MTVdCj4+IFvCoMKgwqA3MS4zNDI1NDldwqDCoFs8ZmZmZmZm ZmZhMDA5MjlkMj5dIGRybV9hdG9taWNfY29tbWl0KzB4NTIvMHg2MCBbZHJtXQo+PiBbwqDCoMKg NzEuMzQyNTkyXcKgwqBbPGZmZmZmZmZmYTAwZTQ0ODc+XQo+PiBkcm1fYXRvbWljX2hlbHBlcl91 cGRhdGVfcGxhbmUrMHhlNy8weDEzMCBbZHJtX2ttc19oZWxwZXJdCj4+IFvCoMKgwqA3MS4zNDI2 MzNdwqDCoFs8ZmZmZmZmZmZhMDA4NGUxOT5dIF9fc2V0cGxhbmVfaW50ZXJuYWwrMHgxYjkvMHgy YTAKPj4gW2RybV0KPj4gW8KgwqDCoDcxLjM0MjY2N13CoMKgWzxmZmZmZmZmZmEwMDg1MDE3Pl0K Pj4gZHJtX21vZGVfY3Vyc29yX3VuaXZlcnNhbCsweDExNy8weDIwMCBbZHJtXQo+PiBbwqDCoMKg NzEuMzQyNzAzXcKgwqBbPGZmZmZmZmZmYTAwODUxODQ+XSBkcm1fbW9kZV9jdXJzb3JfY29tbW9u KzB4ODQvMHgxODAKPj4gW2RybV0KPj4gW8KgwqDCoDcxLjM0MjczOF3CoMKgWzxmZmZmZmZmZmEw MDg2YTk5Pl0gZHJtX21vZGVfY3Vyc29yMl9pb2N0bCsweDkvMHgxMAo+PiBbZHJtXQo+PiBbwqDC oMKgNzEuMzQyNzkzXcKgwqBbPGZmZmZmZmZmYTAwN2JlNDk+XSBkcm1faW9jdGwrMHgzODkvMHg0 ZTAgW2RybV0KPj4gW8KgwqDCoDcxLjM0MjgyM13CoMKgWzxmZmZmZmZmZmEwMDg2YTkwPl0gPyBk cm1fbW9kZV9jdXJzb3JfaW9jdGwrMHg0MC8weDQwCj4+IFtkcm1dCj4+IFvCoMKgwqA3MS4zNDI4 NTBdwqDCoFs8ZmZmZmZmZmY4MTI0ZWE0OT5dID8gbW50cHV0X25vX2V4cGlyZSsweDg5LzB4M2Mw Cj4+IFvCoMKgwqA3MS4zNDI4NzNdwqDCoFs8ZmZmZmZmZmY4MTI0ZTljMD5dID8gbW50X2dldF9j b3VudCsweDYwLzB4NjAKPj4gW8KgwqDCoDcxLjM0Mjg5Nl3CoMKgWzxmZmZmZmZmZjgxMjNlODFm Pl0gZG9fdmZzX2lvY3RsKzB4OGYvMHg2OTAKPj4gW8KgwqDCoDcxLjM0MjkyNl3CoMKgWzxmZmZm ZmZmZjgxMGFkNzg0Pl0gPyB0YXNrX3dvcmtfcnVuKzB4OTQvMHhiMAo+PiBbwqDCoMKgNzEuMzQy OTQ4XcKgwqBbPGZmZmZmZmZmODEwZGYyNGQ+XSA/Cj4+IHRyYWNlX2hhcmRpcnFzX29uX2NhbGxl cisweGVkLzB4MWIwCj4+IFvCoMKgwqA3MS4zNDI5NzRdwqDCoFs8ZmZmZmZmZmY4MTIzZWU5ND5d IFN5U19pb2N0bCsweDc0LzB4ODAKPj4gW8KgwqDCoDcxLjM0Mjk5NV3CoMKgWzxmZmZmZmZmZjgx OTNmOGU1Pl0KPj4gZW50cnlfU1lTQ0FMTF82NF9mYXN0cGF0aCsweDE4LzB4YTgKPj4gW8KgwqDC oDcxLjM0MzAxOV0gQ29kZTogZjAgZTAgNDggODUgZGIgNzQgMTggNDggOGIgMDMgNDggOGIgN2Ig MDggNDggODMgYzMKPj4gMTggNGMgODkgZmUgZmYgZDAgNDggOGIgMDMgNDggODUgYzAgNzUgZWIg NjUgZmYgMGQgNWUgYzEgZTMgNWYgZTkgM2EgZmUKPj4gZmYgZmYgPDBmPiAwYiA2NSA0OCA4YiAw NCAyNSA0MCBjNSAwMCAwMCA0OCBjNyA4MCBhOCAxMSAwMCAwMCA3OSAwMyAxZMKgCj4+IFvCoMKg wqA3MS4zNDMxOTVdIFJJUMKgwqBbPGZmZmZmZmZmYTAxZDAzNzc+XSBpOTE1X3dhaXRfcmVxdWVz dCsweDQxNy8weDhlMAo+PiBbaTkxNV0KPj4gW8KgwqDCoDcxLjM0MzI0Nl3CoMKgUlNQIDxmZmZm ODgwMTY0Mzk3OTI4Pgo+PiBbwqDCoMKgNzEuMzY2Nzg2XSAtLS1bIGVuZCB0cmFjZSA3MTVkYmFl NzE3ZDIxODdmIF0tLS0KPj4KPj4gUmVtZW1iZXIgdGhhdCB0aGlzIG1ha2VzIHRoZSBkZXNrdG9w IDEwMCUgdW51c2FibGUuCj4+Cj4+IFRoYW5rcywKPj4gUGF1bG8KPj4KPj4+IMKgCj4+PiDCoAlp ZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKSkKPj4+IMKgCQlyZXR1cm4gMDsKPj4+ IEBAIC02NjcsNyArNjczLDggQEAgaW50IGk5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdAo+Pj4gKnJlcSwKPj4+IMKgCQlnb3RvIGNvbXBsZXRlOwo+Pj4gwqAKPj4+ IMKgCXNldF9jdXJyZW50X3N0YXRlKHN0YXRlKTsKPj4+IC0JYWRkX3dhaXRfcXVldWUoJnJlcS0+ aTkxNS0+Z3B1X2Vycm9yLndhaXRfcXVldWUsICZyZXNldCk7Cj4+PiArCWlmIChmbGFncyAmIEk5 MTVfV0FJVF9MT0NLRUQpCj4+PiArCQlhZGRfd2FpdF9xdWV1ZSgmcmVxLT5pOTE1LT5ncHVfZXJy b3Iud2FpdF9xdWV1ZSwKPj4+ICZyZXNldCk7Cj4+PiDCoAo+Pj4gwqAJaW50ZWxfd2FpdF9pbml0 KCZ3YWl0LCByZXEtPmZlbmNlLnNlcW5vKTsKPj4+IMKgCWlmIChpbnRlbF9lbmdpbmVfYWRkX3dh aXQocmVxLT5lbmdpbmUsICZ3YWl0KSkKPj4+IEBAIC03MDcsMTAgKzcxNCwxMiBAQCB3YWtldXA6 Cj4+PiDCoAkJaWYgKGk5MTVfc3Bpbl9yZXF1ZXN0KHJlcSwgc3RhdGUsIDIpKQo+Pj4gwqAJCQli cmVhazsKPj4+IMKgCX0KPj4+IC0JcmVtb3ZlX3dhaXRfcXVldWUoJnJlcS0+aTkxNS0+Z3B1X2Vy cm9yLndhaXRfcXVldWUsICZyZXNldCk7Cj4+PiDCoAo+Pj4gwqAJaW50ZWxfZW5naW5lX3JlbW92 ZV93YWl0KHJlcS0+ZW5naW5lLCAmd2FpdCk7Cj4+PiArCWlmIChmbGFncyAmIEk5MTVfV0FJVF9M T0NLRUQpCj4+PiArCQlyZW1vdmVfd2FpdF9xdWV1ZSgmcmVxLT5pOTE1LT5ncHVfZXJyb3Iud2Fp dF9xdWV1ZSwKPj4+ICZyZXNldCk7Cj4+PiDCoAlfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVO TklORyk7Cj4+PiArCj4+PiDCoGNvbXBsZXRlOgo+Pj4gwqAJdHJhY2VfaTkxNV9nZW1fcmVxdWVz dF93YWl0X2VuZChyZXEpOwo+Pj4gwqAKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fcmVxdWVzdC5oCj4+PiBpbmRleCA0Nzk4OTZlZjc5MWUuLmRlZjM1NzIxZTllZCAxMDA2NDQK Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAo+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oCj4+PiBAQCAtMjIyLDcg KzIyMiw4IEBAIGludCBpOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QKPj4+ICpyZXEsCj4+PiDCoAkJwqDCoMKgwqDCoMKgczY0ICp0aW1lb3V0LAo+Pj4gwqAJCcKg wqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9ycHNfY2xpZW50ICpycHMpCj4+PiDCoAlfX2F0dHJpYnV0 ZV9fKChub25udWxsKDEpKSk7Cj4+PiAtI2RlZmluZSBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSBC SVQoMCkKPj4+ICsjZGVmaW5lIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFCUJJVCgwKQo+Pj4gKyNk ZWZpbmUgSTkxNV9XQUlUX0xPQ0tFRAlCSVQoMSkgLyogc3RydWN0X211dGV4IGhlbGQsIGhhbmRs ZQo+Pj4gR1BVIHJlc2V0ICovCj4+PiDCoAo+Pj4gwqBzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9l bmdpbmVfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MKPj4+ICplbmdpbmUpOwo+Pj4g wqAKPj4+IEBAIC01NzYsNyArNTc3LDkgQEAgaTkxNV9nZW1fYWN0aXZlX3dhaXQoY29uc3Qgc3Ry dWN0IGk5MTVfZ2VtX2FjdGl2ZQo+Pj4gKmFjdGl2ZSwgc3RydWN0IG11dGV4ICptdXRleCkKPj4+ IMKgCWlmICghcmVxdWVzdCkKPj4+IMKgCQlyZXR1cm4gMDsKPj4+IMKgCj4+PiAtCXJldHVybiBp OTE1X3dhaXRfcmVxdWVzdChyZXF1ZXN0LCBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSwKPj4+IE5V TEwsIE5VTEwpOwo+Pj4gKwlyZXR1cm4gaTkxNV93YWl0X3JlcXVlc3QocmVxdWVzdCwKPj4+ICsJ CQkJwqBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8Cj4+PiBJOTE1X1dBSVRfTE9DS0VELAo+Pj4g KwkJCQnCoE5VTEwsIE5VTEwpOwo+Pj4gwqB9Cj4+PiDCoAo+Pj4gwqAvKioKPj4+IEBAIC02Mzks NyArNjQyLDkgQEAgaTkxNV9nZW1fYWN0aXZlX3JldGlyZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZl Cj4+PiAqYWN0aXZlLAo+Pj4gwqAJaWYgKCFyZXF1ZXN0KQo+Pj4gwqAJCXJldHVybiAwOwo+Pj4g wqAKPj4+IC0JcmV0ID0gaTkxNV93YWl0X3JlcXVlc3QocmVxdWVzdCwgSTkxNV9XQUlUX0lOVEVS UlVQVElCTEUsCj4+PiBOVUxMLCBOVUxMKTsKPj4+ICsJcmV0ID0gaTkxNV93YWl0X3JlcXVlc3Qo cmVxdWVzdCwKPj4+ICsJCQkJSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgfAo+Pj4gSTkxNV9XQUlU X0xPQ0tFRCwKPj4+ICsJCQkJTlVMTCwgTlVMTCk7Cj4+PiDCoAlpZiAocmV0KQo+Pj4gwqAJCXJl dHVybiByZXQ7Cj4+PiDCoAo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3Nocmlua2VyLmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hy aW5rZXIuYwo+Pj4gaW5kZXggMzVhMDVmNGM1MWMxLi4xYzIzN2QwMmYzMGIgMTAwNjQ0Cj4+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCj4+PiBAQCAtNDE0LDcgKzQx NCw3IEBAIGk5MTVfZ2VtX3Nocmlua2VyX3ZtYXAoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwK Pj4+IHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cgo+Pj4gwqAJCXJldHVybiBOT1RJRllf RE9ORTsKPj4+IMKgCj4+PiDCoAkvKiBGb3JjZSBldmVyeXRoaW5nIG9udG8gdGhlIGluYWN0aXZl IGxpc3RzICovCj4+PiAtCXJldCA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoZGV2X3ByaXYsIDAp Owo+Pj4gKwlyZXQgPSBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGRldl9wcml2LCBJOTE1X1dBSVRf TE9DS0VEKTsKPj4+IMKgCWlmIChyZXQpCj4+PiDCoAkJZ290byBvdXQ7Cj4+PiDCoAo+Pj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+Pj4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPj4+IGluZGV4IGE1YmYxODg3 NzA2OC4uODY4N2E4NGE3ZmYzIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmMKPj4+IEBAIC0yMjIzLDcgKzIyMjMsOCBAQCBzdGF0aWMgaW50IHdhaXRfZm9y X3NwYWNlKHN0cnVjdAo+Pj4gZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IGJ5dGVzKQo+ Pj4gwqAJaWYgKFdBUk5fT04oJnRhcmdldC0+cmluZ19saW5rID09ICZyaW5nLT5yZXF1ZXN0X2xp c3QpKQo+Pj4gwqAJCXJldHVybiAtRU5PU1BDOwo+Pj4gwqAKPj4+IC0JcmV0ID0gaTkxNV93YWl0 X3JlcXVlc3QodGFyZ2V0LCBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSwKPj4+ICsJcmV0ID0gaTkx NV93YWl0X3JlcXVlc3QodGFyZ2V0LAo+Pj4gKwkJCQlJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8 Cj4+PiBJOTE1X1dBSVRfTE9DS0VELAo+Pj4gwqAJCQkJTlVMTCwgTk9fV0FJVEJPT1NUKTsKPj4+ IMKgCWlmIChyZXQpCj4+PiDCoAkJcmV0dXJuIHJldDsKPj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiBJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=