From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v4] drm/i915/guc: Clean up locks in GuC Date: Tue, 26 Jan 2016 11:53:45 +0000 Message-ID: <56A75E49.6020805@linux.intel.com> References: <1448319778-29282-1-git-send-email-yu.dai@intel.com> <1449104189-27591-1-git-send-email-yu.dai@intel.com> <56A20A72.6060202@linux.intel.com> <20160125160134.GP11240@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 65C9A6E590 for ; Tue, 26 Jan 2016 03:53:47 -0800 (PST) In-Reply-To: <20160125160134.GP11240@phenom.ffwll.local> 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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDI1LzAxLzE2IDE2OjAxLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+IE9uIEZyaSwgSmFuIDIy LCAyMDE2IGF0IDEwOjU0OjQyQU0gKzAwMDAsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Pgo+PiBP biAwMy8xMi8xNSAwMDo1NiwgeXUuZGFpQGludGVsLmNvbSB3cm90ZToKPj4+IEZyb206IEFsZXgg RGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+Pj4KPj4+IEZvciBub3csIHJlbW92ZSB0aGUgc3Bpbmxv Y2tzIHRoYXQgcHJvdGVjdGVkIHRoZSBHdUMncwo+Pj4gc3RhdGlzdGljcyBibG9jayBhbmQgd29y ayBxdWV1ZTsgdGhleSBhcmUgb25seSBhY2Nlc3NlZAo+Pj4gYnkgY29kZSB0aGF0IGFscmVhZHkg aG9sZHMgdGhlIGdsb2JhbCBzdHJ1Y3RfbXV0ZXgsIGFuZAo+Pj4gc28gYXJlIHJlZHVuZGFudCAo dW50aWwgdGhlIGJpZyBzdHJ1Y3RfbXV0ZXggcmV3cml0ZSEpLgo+Pj4KPj4+IFRoZSBzcGVjaWZp YyBwcm9ibGVtIHRoYXQgdGhlIHNwaW5sb2NrcyBjYXVzZWQgd2FzIHRoYXQKPj4+IGlmIHRoZSB3 b3JrIHF1ZXVlIHdhcyBmdWxsLCB0aGUgZHJpdmVyIHdvdWxkIHRyeSB0bwo+Pj4gc3BpbndhaXQg Zm9yIG9uZSBqaWZmeSwgYnV0IHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZCB0aGUKPj4+IGppZmZ5 IGNvdW50IHdvdWxkIG5vdCBhZHZhbmNlLCBsZWFkaW5nIHRvIGEgc3lzdGVtIGhhbmcuCj4+PiBU aGUgaXNzdWUgd2FzIGZvdW5kIHVzaW5nIHRlc3QgY2FzZSBpZ3QvZ2VtX2Nsb3NlX3JhY2UuCj4+ Pgo+Pj4gVGhlIG5ldyB2ZXJzaW9uIHdpbGwgdXNsZWVwKCkgaW5zdGVhZCwgc3RpbGwgaG9sZGlu Zwo+Pj4gdGhlIHN0cnVjdF9tdXRleCBidXQgd2l0aG91dCBhbnkgc3BpbmxvY2tzLgo+Pj4KPj4+ IHY0OiBSZW9yZ2FuaXplIGNvbW1pdCBtZXNzYWdlIChEYXZlIEdvcmRvbikKPj4+IHYzOiBSZW1v dmUgdW5uZWNlc3Nhcnkgd2hpdGVzcGFjZSBjaHVybgo+Pj4gdjI6IENsZWFuIHVwIHdxX2xvY2sg dG9vCj4+PiB2MTogQ2xlYW4gdXAgaG9zdDJndWMgbG9jayBhcyB3ZWxsCj4+Pgo+Pj4gU2lnbmVk LW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+Cj4+PiAtLS0KPj4+ICAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICB8IDEyICsrKysrKy0tLS0tLQo+ Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIHwgMzEgKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWMuaCAgICAgICAgICAgfCAgNCAtLS0tCj4+PiAgICAzIGZpbGVzIGNoYW5nZWQsIDEy IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4+PiBpbmRleCBhNzI4ZmYxLi5kNmI3ODE3IDEwMDY0NAo+Pj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+PiBAQCAtMjQ3MywxNSArMjQ3MywxNSBAQCBzdGF0 aWMgaW50IGk5MTVfZ3VjX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+Pj4g ICAgCWlmICghSEFTX0dVQ19TQ0hFRChkZXZfcHJpdi0+ZGV2KSkKPj4+ICAgIAkJcmV0dXJuIDA7 Cj4+Pgo+Pj4gKwlpZiAobXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYtPnN0cnVjdF9tdXRl eCkpCj4+PiArCQlyZXR1cm4gMDsKPj4+ICsKPj4+ICAgIAkvKiBUYWtlIGEgbG9jYWwgY29weSBv ZiB0aGUgR3VDIGRhdGEsIHNvIHdlIGNhbiBkdW1wIGl0IGF0IGxlaXN1cmUgKi8KPj4+IC0Jc3Bp bl9sb2NrKCZkZXZfcHJpdi0+Z3VjLmhvc3QyZ3VjX2xvY2spOwo+Pj4gICAgCWd1YyA9IGRldl9w cml2LT5ndWM7Cj4+PiAtCWlmIChndWMuZXhlY2J1Zl9jbGllbnQpIHsKPj4+IC0JCXNwaW5fbG9j aygmZ3VjLmV4ZWNidWZfY2xpZW50LT53cV9sb2NrKTsKPj4+ICsJaWYgKGd1Yy5leGVjYnVmX2Ns aWVudCkKPj4+ICAgIAkJY2xpZW50ID0gKmd1Yy5leGVjYnVmX2NsaWVudDsKPj4+IC0JCXNwaW5f dW5sb2NrKCZndWMuZXhlY2J1Zl9jbGllbnQtPndxX2xvY2spOwo+Pj4gLQl9Cj4+PiAtCXNwaW5f dW5sb2NrKCZkZXZfcHJpdi0+Z3VjLmhvc3QyZ3VjX2xvY2spOwo+Pj4gKwo+Pj4gKwltdXRleF91 bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPj4+Cj4+PiAgICAJc2VxX3ByaW50ZihtLCAiR3VD IHRvdGFsIGFjdGlvbiBjb3VudDogJWxsdVxuIiwgZ3VjLmFjdGlvbl9jb3VudCk7Cj4+PiAgICAJ c2VxX3ByaW50ZihtLCAiR3VDIGFjdGlvbiBmYWlsdXJlIGNvdW50OiAldVxuIiwgZ3VjLmFjdGlv bl9mYWlsKTsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19z dWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMK Pj4+IGluZGV4IGVkOWYxMDAuLmE3Zjk3ODUgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+Pj4gQEAgLTg2LDcgKzg2LDYgQEAgc3RhdGljIGlu dCBob3N0Mmd1Y19hY3Rpb24oc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgKmRhdGEsIHUzMiBs ZW4pCj4+PiAgICAJCXJldHVybiAtRUlOVkFMOwo+Pj4KPj4+ICAgIAlpbnRlbF91bmNvcmVfZm9y Y2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4+PiAtCXNwaW5fbG9jaygmZGV2 X3ByaXYtPmd1Yy5ob3N0Mmd1Y19sb2NrKTsKPj4+Cj4+PiAgICAJZGV2X3ByaXYtPmd1Yy5hY3Rp b25fY291bnQgKz0gMTsKPj4+ICAgIAlkZXZfcHJpdi0+Z3VjLmFjdGlvbl9jbWQgPSBkYXRhWzBd Owo+Pj4gQEAgLTExOSw3ICsxMTgsNiBAQCBzdGF0aWMgaW50IGhvc3QyZ3VjX2FjdGlvbihzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiAqZGF0YSwgdTMyIGxlbikKPj4+ICAgIAl9Cj4+PiAgICAJ ZGV2X3ByaXYtPmd1Yy5hY3Rpb25fc3RhdHVzID0gc3RhdHVzOwo+Pj4KPj4+IC0Jc3Bpbl91bmxv Y2soJmRldl9wcml2LT5ndWMuaG9zdDJndWNfbG9jayk7Cj4+PiAgICAJaW50ZWxfdW5jb3JlX2Zv cmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+Pj4KPj4+ICAgIAlyZXR1cm4g cmV0Owo+Pj4gQEAgLTI5MiwxNiArMjkwLDEyIEBAIHN0YXRpYyB1aW50MzJfdCBzZWxlY3RfZG9v cmJlbGxfY2FjaGVsaW5lKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPj4+ICAgIAljb25zdCB1aW50 MzJfdCBjYWNoZWxpbmVfc2l6ZSA9IGNhY2hlX2xpbmVfc2l6ZSgpOwo+Pj4gICAgCXVpbnQzMl90 IG9mZnNldDsKPj4+Cj4+PiAtCXNwaW5fbG9jaygmZ3VjLT5ob3N0Mmd1Y19sb2NrKTsKPj4+IC0K Pj4+ICAgIAkvKiBEb29yYmVsbCB1c2VzIGEgc2luZ2xlIGNhY2hlIGxpbmUgd2l0aGluIGEgcGFn ZSAqLwo+Pj4gICAgCW9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGd1Yy0+ZGJfY2FjaGVsaW5lKTsK Pj4+Cj4+PiAgICAJLyogTW92aW5nIHRvIG5leHQgY2FjaGUgbGluZSB0byByZWR1Y2UgY29udGVu dGlvbiAqLwo+Pj4gICAgCWd1Yy0+ZGJfY2FjaGVsaW5lICs9IGNhY2hlbGluZV9zaXplOwo+Pj4K Pj4+IC0Jc3Bpbl91bmxvY2soJmd1Yy0+aG9zdDJndWNfbG9jayk7Cj4+PiAtCj4+PiAgICAJRFJN X0RFQlVHX0RSSVZFUigic2VsZWN0ZWQgZG9vcmJlbGwgY2FjaGVsaW5lIDB4JXgsIG5leHQgMHgl eCwgbGluZXNpemUgJXVcbiIsCj4+PiAgICAJCQlvZmZzZXQsIGd1Yy0+ZGJfY2FjaGVsaW5lLCBj YWNoZWxpbmVfc2l6ZSk7Cj4+Pgo+Pj4gQEAgLTMyMiwxMyArMzE2LDExIEBAIHN0YXRpYyB1aW50 MTZfdCBhc3NpZ25fZG9vcmJlbGwoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1aW50MzJfdCBwcmlv cml0eSkKPj4+ICAgIAljb25zdCB1aW50MTZfdCBlbmQgPSBzdGFydCArIGhhbGY7Cj4+PiAgICAJ dWludDE2X3QgaWQ7Cj4+Pgo+Pj4gLQlzcGluX2xvY2soJmd1Yy0+aG9zdDJndWNfbG9jayk7Cj4+ PiAgICAJaWQgPSBmaW5kX25leHRfemVyb19iaXQoZ3VjLT5kb29yYmVsbF9iaXRtYXAsIGVuZCwg c3RhcnQpOwo+Pj4gICAgCWlmIChpZCA9PSBlbmQpCj4+PiAgICAJCWlkID0gR1VDX0lOVkFMSURf RE9PUkJFTExfSUQ7Cj4+PiAgICAJZWxzZQo+Pj4gICAgCQliaXRtYXBfc2V0KGd1Yy0+ZG9vcmJl bGxfYml0bWFwLCBpZCwgMSk7Cj4+PiAtCXNwaW5fdW5sb2NrKCZndWMtPmhvc3QyZ3VjX2xvY2sp Owo+Pj4KPj4+ICAgIAlEUk1fREVCVUdfRFJJVkVSKCJhc3NpZ25lZCAlcyBwcmlvcml0eSBkb29y YmVsbCBpZCAweCV4XG4iLAo+Pj4gICAgCQkJaGlfcHJpID8gImhpZ2giIDogIm5vcm1hbCIsIGlk KTsKPj4+IEBAIC0zMzgsOSArMzMwLDcgQEAgc3RhdGljIHVpbnQxNl90IGFzc2lnbl9kb29yYmVs bChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHVpbnQzMl90IHByaW9yaXR5KQo+Pj4KPj4+ICAgIHN0 YXRpYyB2b2lkIHJlbGVhc2VfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1aW50MTZf dCBpZCkKPj4+ICAgIHsKPj4+IC0Jc3Bpbl9sb2NrKCZndWMtPmhvc3QyZ3VjX2xvY2spOwo+Pj4g ICAgCWJpdG1hcF9jbGVhcihndWMtPmRvb3JiZWxsX2JpdG1hcCwgaWQsIDEpOwo+Pj4gLQlzcGlu X3VubG9jaygmZ3VjLT5ob3N0Mmd1Y19sb2NrKTsKPj4+ICAgIH0KPj4+Cj4+PiAgICAvKgo+Pj4g QEAgLTQ4NywxNiArNDc3LDEzIEBAIHN0YXRpYyBpbnQgZ3VjX2dldF93b3JrcXVldWVfc3BhY2Uo c3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqZ2MsIHUzMiAqb2Zmc2V0KQo+Pj4gICAgCXN0cnVjdCBn dWNfcHJvY2Vzc19kZXNjICpkZXNjOwo+Pj4gICAgCXZvaWQgKmJhc2U7Cj4+PiAgICAJdTMyIHNp emUgPSBzaXplb2Yoc3RydWN0IGd1Y193cV9pdGVtKTsKPj4+IC0JaW50IHJldCA9IDAsIHRpbWVv dXRfY291bnRlciA9IDIwMDsKPj4+ICsJaW50IHJldCA9IC1FVElNRURPVVQsIHRpbWVvdXRfY291 bnRlciA9IDIwMDsKPj4+Cj4+PiAgICAJYmFzZSA9IGttYXBfYXRvbWljKGk5MTVfZ2VtX29iamVj dF9nZXRfcGFnZShnYy0+Y2xpZW50X29iaiwgMCkpOwo+Pj4gICAgCWRlc2MgPSBiYXNlICsgZ2Mt PnByb2NfZGVzY19vZmZzZXQ7Cj4+Pgo+Pj4gICAgCXdoaWxlICh0aW1lb3V0X2NvdW50ZXItLSA+ IDApIHsKPj4+IC0JCXJldCA9IHdhaXRfZm9yX2F0b21pYyhDSVJDX1NQQUNFKGdjLT53cV90YWls LCBkZXNjLT5oZWFkLAo+Pj4gLQkJCQlnYy0+d3Ffc2l6ZSkgPj0gc2l6ZSwgMSk7Cj4+PiAtCj4+ PiAtCQlpZiAoIXJldCkgewo+Pj4gKwkJaWYgKENJUkNfU1BBQ0UoZ2MtPndxX3RhaWwsIGRlc2Mt PmhlYWQsIGdjLT53cV9zaXplKSA+PSBzaXplKSB7Cj4+PiAgICAJCQkqb2Zmc2V0ID0gZ2MtPndx X3RhaWw7Cj4+Pgo+Pj4gICAgCQkJLyogYWR2YW5jZSB0aGUgdGFpbCBmb3IgbmV4dCB3b3JrcXVl dWUgaXRlbSAqLwo+Pj4gQEAgLTUwNSw3ICs0OTIsMTEgQEAgc3RhdGljIGludCBndWNfZ2V0X3dv cmtxdWV1ZV9zcGFjZShzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpnYywgdTMyICpvZmZzZXQpCj4+ Pgo+Pj4gICAgCQkJLyogdGhpcyB3aWxsIGJyZWFrIHRoZSBsb29wICovCj4+PiAgICAJCQl0aW1l b3V0X2NvdW50ZXIgPSAwOwo+Pj4gKwkJCXJldCA9IDA7Cj4+PiAgICAJCX0KPj4+ICsKPj4+ICsJ CWlmICh0aW1lb3V0X2NvdW50ZXIpCj4+PiArCQkJdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOwo+ Pgo+PiBTbGVlcGluZyBpcyBpbGxlZ2FsIHdoaWxlIGhvbGRpbmcga21hcF9hdG9taWMgbWFwcGlu ZzoKPj4KPj4gWyAgIDM0LjA5ODc5OF0gQlVHOiBzY2hlZHVsaW5nIHdoaWxlIGF0b21pYzogZ2Vt X2Nsb3NlX3JhY2UvMTk0MS8weDAwMDAwMDAyCj4+IFsgICAzNC4wOTg4MjJdIE1vZHVsZXMgbGlu a2VkIGluOiBoaWRfZ2VuZXJpYyB1c2JoaWQgaTkxNSBhc2l4IHVzYm5ldCBsaWJwaHkgbWlpIGky Y19hbGdvX2JpdCBkcm1fa21zX2hlbHBlciBjZmJmaWxscmVjdCBzeXNjb3B5YXJlYSBjZmJpbWdi bHQgc3lzZmlsbHJlY3Qgc3lzaW1nYmx0IGZiX3N5c19mb3BzIGNmYmNvcHlhcmVhIGRybSBjb3Jl dGVtcCBpMmNfaGlkIGhpZCB2aWRlbyBwaW5jdHJsX3N1bnJpc2Vwb2ludCBwaW5jdHJsX2ludGVs IGFjcGlfcGFkIG5sc19pc284ODU5XzEgZTEwMDBlIHB0cCBwc21vdXNlIHBwc19jb3JlIGFoY2kg bGliYWhjaQo+PiBbICAgMzQuMDk4ODI0XSBDUFU6IDAgUElEOiAxOTQxIENvbW06IGdlbV9jbG9z ZV9yYWNlIFRhaW50ZWQ6IEcgICAgIFUgICAgICAgICAgNC40LjAtMTYwMTIxKyAjMTIzCj4+IFsg ICAzNC4wOTg4MjRdIEhhcmR3YXJlIG5hbWU6IEludGVsIENvcnBvcmF0aW9uIFNreWxha2UgQ2xp ZW50IHBsYXRmb3JtL1NreWxha2UgQUlPIEREUjNMIFJWUDEwLCBCSU9TIFNLTFNFMlIxLlIwMC5Y MTAwLkIwMS4xNTA5MjIwNTUxIDA5LzIyLzIwMTUKPj4gWyAgIDM0LjA5ODgyNV0gIDAwMDAwMDAw MDAwMTNlNDAgZmZmZjg4MDE2NmMyN2E3OCBmZmZmZmZmZjgxMjgwZDAyIGZmZmY4ODAxNzJjMTNl NDAKPj4gWyAgIDM0LjA5ODgyNl0gIGZmZmY4ODAxNjZjMjdhODggZmZmZmZmZmY4MTBjMjAzYSBm ZmZmODgwMTY2YzI3YWM4IGZmZmZmZmZmODE0ZWM4MDgKPj4gWyAgIDM0LjA5ODgyN10gIGZmZmY4 ODAxNmI3YzYwMDAgZmZmZjg4MDE2NmMyODAwMCAwMDAwMDAwMDAwMGY0MjQwIDAwMDAwMDAwMDAw MDAwMDEKPj4gWyAgIDM0LjA5ODgyN10gQ2FsbCBUcmFjZToKPj4gWyAgIDM0LjA5ODgzMV0gIFs8 ZmZmZmZmZmY4MTI4MGQwMj5dIGR1bXBfc3RhY2srMHg0Yi8weDc5Cj4+IFsgICAzNC4wOTg4MzNd ICBbPGZmZmZmZmZmODEwYzIwM2E+XSBfX3NjaGVkdWxlX2J1ZysweDQxLzB4NGYKPj4gWyAgIDM0 LjA5ODgzNF0gIFs8ZmZmZmZmZmY4MTRlYzgwOD5dIF9fc2NoZWR1bGUrMHg1YTgvMHg2OTAKPj4g WyAgIDM0LjA5ODgzNV0gIFs8ZmZmZmZmZmY4MTRlYzkyNz5dIHNjaGVkdWxlKzB4MzcvMHg4MAo+ PiBbICAgMzQuMDk4ODM2XSAgWzxmZmZmZmZmZjgxNGVmM2ZkPl0gc2NoZWR1bGVfaHJ0aW1lb3V0 X3JhbmdlX2Nsb2NrKzB4YWQvMHgxMzAKPj4gWyAgIDM0LjA5ODgzN10gIFs8ZmZmZmZmZmY4MTA5 MGJlMD5dID8gaHJ0aW1lcl9pbml0KzB4MTAvMHgxMAo+PiBbICAgMzQuMDk4ODM4XSAgWzxmZmZm ZmZmZjgxNGVmM2YxPl0gPyBzY2hlZHVsZV9ocnRpbWVvdXRfcmFuZ2VfY2xvY2srMHhhMS8weDEz MAo+PiBbICAgMzQuMDk4ODM5XSAgWzxmZmZmZmZmZjgxNGVmNDhlPl0gc2NoZWR1bGVfaHJ0aW1l b3V0X3JhbmdlKzB4ZS8weDEwCj4+IFsgICAzNC4wOTg4NDBdICBbPGZmZmZmZmZmODE0ZWVmOWI+ XSB1c2xlZXBfcmFuZ2UrMHgzYi8weDQwCj4+IFsgICAzNC4wOTg4NTNdICBbPGZmZmZmZmZmYTAx ZWMxMDk+XSBpOTE1X2d1Y193cV9jaGVja19zcGFjZSsweDExOS8weDIxMCBbaTkxNV0KPj4gWyAg IDM0LjA5ODg2MV0gIFs8ZmZmZmZmZmZhMDFkYTQ3Yz5dIGludGVsX2xvZ2ljYWxfcmluZ19hbGxv Y19yZXF1ZXN0X2V4dHJhcysweDVjLzB4NzAgW2k5MTVdCj4+IFsgICAzNC4wOTg4NjldICBbPGZm ZmZmZmZmYTAxY2RiZjE+XSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKzB4OTEvMHgxNzAgW2k5MTVd Cj4+IFsgICAzNC4wOTg4NzVdICBbPGZmZmZmZmZmYTAxYzFjMDc+XSBpOTE1X2dlbV9kb19leGVj YnVmZmVyLmlzcmEuMjUrMHhiYzcvMHgxMmEwIFtpOTE1XQo+PiBbICAgMzQuMDk4ODgyXSAgWzxm ZmZmZmZmZmEwMWNiNzg1Pl0gPyBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2d0dCsweDIyNS8w eDNjMCBbaTkxNV0KPj4gWyAgIDM0LjA5ODg4OV0gIFs8ZmZmZmZmZmZhMDFkMWZiNj5dID8gaTkx NV9nZW1fcHdyaXRlX2lvY3RsKzB4ZDYvMHg5ZjAgW2k5MTVdCj4+IFsgICAzNC4wOTg4OTVdICBb PGZmZmZmZmZmYTAxYzJlNjg+XSBpOTE1X2dlbV9leGVjYnVmZmVyMisweGE4LzB4MjUwIFtpOTE1 XQo+PiBbICAgMzQuMDk4OTAwXSAgWzxmZmZmZmZmZmEwMGY2NWQ4Pl0gZHJtX2lvY3RsKzB4MjU4 LzB4NGYwIFtkcm1dCj4+IFsgICAzNC4wOTg5MDZdICBbPGZmZmZmZmZmYTAxYzJkYzA+XSA/IGk5 MTVfZ2VtX2V4ZWNidWZmZXIrMHgzNDAvMHgzNDAgW2k5MTVdCj4+IFsgICAzNC4wOTg5MDhdICBb PGZmZmZmZmZmODExMTU5MGQ+XSBkb192ZnNfaW9jdGwrMHgyY2QvMHg0YTAKPj4gWyAgIDM0LjA5 ODkwOV0gIFs8ZmZmZmZmZmY4MTExZWFjMj5dID8gX19mZ2V0KzB4NzIvMHhiMAo+PiBbICAgMzQu MDk4OTEwXSAgWzxmZmZmZmZmZjgxMTE1YjFjPl0gU3lTX2lvY3RsKzB4M2MvMHg3MAo+PiBbICAg MzQuMDk4OTExXSAgWzxmZmZmZmZmZjgxNGVmZmQ3Pl0gZW50cnlfU1lTQ0FMTF82NF9mYXN0cGF0 aCsweDEyLzB4NmEKPj4gWyAgIDM0LjEwMDIwOF0gLS0tLS0tLS0tLS0tWyBjdXQgaGVyZSBdLS0t LS0tLS0tLS0tCj4+Cj4+IEkgZG9uJ3Qga25vdyB0aGUgY29kZSB3ZWxsIGVub3VnaCB0byBzdWdn ZXN0IGEgc3VpdGFibGUgZml4Lgo+Cj4gQ29kZSByZWFsbHksIHJlYWxseSwgcmVhbGx5IHNob3Vs ZCBiZSBydW4gd2l0aCBmdWxsIGRlYnVnIHRvb2xpbmcgKGFuZCB0aGUKPiBhYm92ZSBpcyBvbmUg b2YgdGhlIG1vc3QgYmFzaWMgb25lcykgZW5hYmxlZC4KPgo+IEkgdGhpbmsgdGhlIGJlc3QgYXBw cm9hY2ggd291bGQgYmUgdG86Cj4gLSBpbnN0YWxsIEd1QyBmaXJtd2FyZSBvbiBhbGwgQ0kgbWFj aGluZXMuIFBsZWFzZSBjb29yZGluYXRlIHdpdGgKPiAgICBEYW5pZWxhJlRvbWkgb24gdGhpcywg YW5kIGNjOiBpbnRlbC1nZngtY2lAZWNsaXN0cy5pbnRlbC5jb20gb24gYW55IHN1Y2gKPiAgICBt YWlscy4KPgo+IC0gRXZlcnkgcGF0Y2ggc2VyaWVzIHRoYXQgdG91Y2hlcyBzdGlsbCBkaXNhYmxl ZCBjb2RlIG5lZWRzIHRvIGluY2x1ZGUgYQo+ICAgIHBhdGNoIHRvIGVuYWJsZSBHdUMgKG9yIHdo YXRldmVyIGl0IGlzKSBieSBkZWZhdWx0LiBPZiBjb3Vyc2UgdGhhdCBwYXRjaAo+ICAgIG11c3Qg aGF2ZSBhIERPTlRNRVJHRSBvciBzaW1pbGFyIHRhZywgaWYgdGhlIGZlYXR1cmUgaXNuJ3QgMTAw JSByZWFkeQo+ICAgIGZvciBwcmltZSB0aW1lIHlldC4gVGhpcyB3YXkgd2UgY2FuIGVubGlzdCBD SSB0byBodW50IGZvciBzdHVmZiBsaWtlIHRoZQo+ICAgIGFib3ZlLCBhbmQgaXQncyBfcmVhbGx5 XyBnb29kIGF0IHRoYXQuCj4KPiBBbGV4JlR2cnRrbywgY2FuIHlvdSBwbGVhc2UgdGFrZSBjYXJl IG9mIHRoaXM/CgpDaHJpcyBIYXJyaXMgaGFzIGxpYWlzZWQgd2l0aCBUb21pIGFuZCBhcHBhcmVu dGx5IEd1QyBmaXJtd2FyZSBpcyAKYWxyZWFkeSBvbiB0aGUgbGFiIFNLTHMgZnJvbSB+dHdvIHdl ZWtzIGFnby4KClNpbmNlIHRoZSBmaXJtd2FyZSBpcyBvbiBhbGwgbWFjaGluZXMsIHByZXN1bWFi bHkgd2Ugd291bGQgYWxzbyB3YW50IHRvIApoYXZlIENJIHJ1bnMgd2l0aG91dCB0aGUgR3VDIGVu YWJsZWQgdG8gZW5zdXJlIHBhdGNoZXMgYXJlIG5vdCBicmVha2luZyAKdGhlIGV4ZWNsaXN0cyBt b2RlPwoKSG93IHdvdWxkIHlvdSBnbyBhYm91dCB0aGF0PyBTdWJtaXQgcGF0Y2ggc2VyaWVzIHR3 aWNlPyBPbmNlIHdpdGggdGhlIApmaW5hbCAiZW5hYmxlIEd1QyIgcGF0Y2ggYW5kIG9uZSB3aXRo b3V0PwoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=