From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 15/15] drm/i915/guc: Split hw submission for replay after GPU reset Date: Mon, 28 Nov 2016 14:02:33 +0000 Message-ID: <6e853f97-2596-b2b3-3e36-ff13fbb58d75@linux.intel.com> References: <20161125093057.18491-1-chris@chris-wilson.co.uk> <20161125093057.18491-16-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 26FB189B65 for ; Mon, 28 Nov 2016 14:02:36 +0000 (UTC) In-Reply-To: <20161125093057.18491-16-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDI1LzExLzIwMTYgMDk6MzAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBTb21ldGhpbmcgSSBt aXNzZWQgYmVmb3JlIHNlbmRpbmcgb2ZmIHRoZSBwYXJ0aWFsIHNlcmllcyB3YXMgdGhhdCB0aGUK PiBub24tc2NoZWR1bGVyIGd1YyByZXNldCBwYXRoIHdhcyBicm9rZW4gKGluIHRoZSBmdWxsIHNl cmllcywgdGhpcyBpcwo+IHB1c2hlZCB0byB0aGUgZXhlY2xpc3RzIHJlc2V0IGhhbmRsZXIpLiBU aGUgaXNzdWUgaXMgdGhhdCBhZnRlciBhIHJlc2V0LAo+IHdlIGhhdmUgdG8gcmVmaWxsIHRoZSBH dUMgd29ya3F1ZXVlcywgd2hpY2ggd2UgZG8gYnkgcmVzdWJtaXR0aW5nIHRoZQo+IHJlcXVlc3Rz LiBIb3dldmVyLCBpZiB3ZSBhbHJlYWR5IGhhdmUgc3VibWl0dGVkIHRoZW0sIHRoZSBmZW5jZXMg d2l0aGluCj4gdGhlbSBoYXZlIGFscmVhZHkgYmVlbiB1c2VkIGFuZCB0cmlnZ2VyaW5nIHRoZW0g YWdhaW4gaXMgYW4gZXJyb3IuCj4gSW5zdGVhZCwganVzdCByZXBvcHVsYXRlIHRoZSBndWMgd29y a3F1ZXVlLgo+Cj4gWyAgMTE1Ljg1ODU2MF0gW0lHVF0gZ2VtX2J1c3k6IHN0YXJ0aW5nIHN1YnRl c3QgaGFuZy1yZW5kZXIKPiBbICAxMzUuODM5ODY3XSBbZHJtXSBHUFUgSEFORzogZWNvZGUgOTow OjB4ZTc1N2ZlZmUsIGluIGdlbV9idXN5IFsxNzE2XSwgcmVhc29uOiBIYW5nIG9uIHJlbmRlciBy aW5nLCBhY3Rpb246IHJlc2V0Cj4gWyAgMTM1LjgzOTkwMl0gZHJtL2k5MTU6IFJlc2V0dGluZyBj aGlwIGFmdGVyIGdwdSBoYW5nCj4gWyAgMTM1LjgzOTk1N10gW2RybV0gUkM2IG9uCj4gWyAgMTM1 Ljg1ODM1MV0gLS0tLS0tLS0tLS0tWyBjdXQgaGVyZSBdLS0tLS0tLS0tLS0tCj4gWyAgMTM1Ljg1 ODM1N10gV0FSTklORzogQ1BVOiAyIFBJRDogNDUgYXQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9zd19mZW5jZS5jOjEwOCBpOTE1X3N3X2ZlbmNlX2NvbXBsZXRlKzB4MjUvMHgzMAo+IFsgIDEz NS44NTgzNTddIE1vZHVsZXMgbGlua2VkIGluOiByZmNvbW0gYm5lcCBiaW5mbXRfbWlzYyBubHNf aXNvODg1OV8xIGlucHV0X2xlZHMgc25kX2hkYV9jb2RlY19oZG1pIHNuZF9oZGFfY29kZWNfcmVh bHRlayBzbmRfaGRhX2NvZGVjX2dlbmVyaWMgc25kX2hkYV9pbnRlbCBzbmRfaGRhX2NvZGVjIHNu ZF9oZGFfY29yZSBidHVzYiBidHJ0bCBzbmRfaHdkZXAgc25kX3BjbSA4MjUwX2R3IHNuZF9zZXFf bWlkaSBoaWRfbGVub3ZvIHNuZF9zZXFfbWlkaV9ldmVudCBzbmRfcmF3bWlkaSBpd2x3aWZpIHg4 Nl9wa2dfdGVtcF90aGVybWFsIGNvcmV0ZW1wIHNuZF9zZXEgY3JjdDEwZGlmX3BjbG11bCBzbmRf c2VxX2RldmljZSBoY2lfdWFydCBzbmRfdGltZXIgY3JjMzJfcGNsbXVsIGdoYXNoX2NsbXVsbmlf aW50ZWwgaWRtYTY0IGFlc25pX2ludGVsIHZpcnRfZG1hIGJ0YmNtIHNuZCBidHFjYSBhZXNfeDg2 XzY0IGJ0aW50ZWwgbHJ3IGNmZzgwMjExIGJsdWV0b290aCBnZjEyOG11bCBnbHVlX2hlbHBlciBh YmxrX2hlbHBlciBjcnlwdGQgc291bmRjb3JlIGludGVsX2xwc3NfcGNpIGludGVsX3BjaF90aGVy bWFsIGludGVsX2xwc3NfYWNwaSBpbnRlbF9scHNzIGFjcGlfYWxzIG1mZF9jb3JlIGtmaWZvX2J1 ZiBhY3BpX3BhZCBpbmR1c3RyaWFsaW8gYXV0b2ZzNCBoaWRfcGxhbnRyb25pY3MgdXNiaGlkIGRt X21pcnJvciBkbV9yZWdpb25faGFzaCBkbV9sb2cgc2RoY2lfcGNpIGFoY2kgc2RoY2kgbGliYWhj aSBpMmNfaGlkIGhpZAo+IFsgIDEzNS44NTgzODldIENQVTogMiBQSUQ6IDQ1IENvbW06IGt3b3Jr ZXIvMjoxIFRhaW50ZWQ6IEcgICAgICAgIFcgICAgICAgNC45LjAtcmM0KyAjMjM4Cj4gWyAgMTM1 Ljg1ODM4OV0gSGFyZHdhcmUgbmFtZTogICAgICAgICAgICAgICAgICAvTlVDNmkzU1lCLCBCSU9T IFNZU0tMaTM1Ljg2QS4wMDI0LjIwMTUuMTAyNy4yMTQyIDEwLzI3LzIwMTUKPiBbICAxMzUuODU4 MzkyXSBXb3JrcXVldWU6IGV2ZW50c19sb25nIGk5MTVfaGFuZ2NoZWNrX2VsYXBzZWQKPiBbICAx MzUuODU4Mzk0XSAgZmZmZmM5MDAwMDFiZjliOCBmZmZmZmZmZjgxMmJiMjM4IDAwMDAwMDAwMDAw MDAwMDAgMDAwMDAwMDAwMDAwMDAwMAo+IFsgIDEzNS44NTgzOTZdICBmZmZmYzkwMDAwMWJmOWY4 IGZmZmZmZmZmODEwNGY2MjEgMDAwMDAwNmMwMDAwMDAwMCBmZmZmODgwODI5NjEzN2Y4Cj4gWyAg MTM1Ljg1ODM5OF0gIDAwMDAwMDAwMDAwMDBhMDAgZmZmZjg4MDg0NTdhMDAwMCBmZmZmODgwODQ1 NzY0ZTYwIGZmZmY4ODA4NDU3NjAwMDAKPiBbICAxMzUuODU4Mzk5XSBDYWxsIFRyYWNlOgo+IFsg IDEzNS44NTg0MDNdICBbPGZmZmZmZmZmODEyYmIyMzg+XSBkdW1wX3N0YWNrKzB4NGQvMHg2NQo+ IFsgIDEzNS44NTg0MDVdICBbPGZmZmZmZmZmODEwNGY2MjE+XSBfX3dhcm4rMHhjMS8weGUwCj4g WyAgMTM1Ljg1ODQwNl0gIFs8ZmZmZmZmZmY4MTA0Zjc0OD5dIHdhcm5fc2xvd3BhdGhfbnVsbCsw eDE4LzB4MjAKPiBbICAxMzUuODU4NDA4XSAgWzxmZmZmZmZmZjgxM2Y4YzE1Pl0gaTkxNV9zd19m ZW5jZV9jb21wbGV0ZSsweDI1LzB4MzAKPiBbICAxMzUuODU4NDEwXSAgWzxmZmZmZmZmZjgxM2Y4 ZmFkPl0gaTkxNV9zd19mZW5jZV9jb21taXQrMHhkLzB4MzAKPiBbICAxMzUuODU4NDEyXSAgWzxm ZmZmZmZmZjgxNDJlNTkxPl0gX19pOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdCsweGUxLzB4ZjAKPiBb ICAxMzUuODU4NDEzXSAgWzxmZmZmZmZmZjgxNDJlNWM4Pl0gaTkxNV9nZW1fcmVxdWVzdF9zdWJt aXQrMHgyOC8weDQwCj4gWyAgMTM1Ljg1ODQxNV0gIFs8ZmZmZmZmZmY4MTQ0MzNlNz5dIGk5MTVf Z3VjX3N1Ym1pdCsweDQ3LzB4MjEwCj4gWyAgMTM1Ljg1ODQxN10gIFs8ZmZmZmZmZmY4MTQ0M2U5 OD5dIGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKzB4NDY4LzB4NTQwCj4gWyAgMTM1Ljg1ODQx OV0gIFs8ZmZmZmZmZmY4MTQ0MjQ5NT5dIGludGVsX2d1Y19zZXR1cCsweDcxNS8weDgxMAo+IFsg IDEzNS44NTg0MjFdICBbPGZmZmZmZmZmODE0MmI2YjQ+XSBpOTE1X2dlbV9pbml0X2h3KzB4MTE0 LzB4MmEwCj4gWyAgMTM1Ljg1ODQyM10gIFs8ZmZmZmZmZmY4MTNlZWFhOD5dIGk5MTVfcmVzZXQr MHhlOC8weDEyMAo+IFsgIDEzNS44NTg0MjRdICBbPGZmZmZmZmZmODEzZjM5Mzc+XSBpOTE1X3Jl c2V0X2FuZF93YWtldXArMHgxNTcvMHgxODAKPiBbICAxMzUuODU4NDI2XSAgWzxmZmZmZmZmZjgx M2Y3OWRiPl0gaTkxNV9oYW5kbGVfZXJyb3IrMHgxYWIvMHgyMzAKPiBbICAxMzUuODU4NDI4XSAg WzxmZmZmZmZmZjgxMmM3NjBkPl0gPyBzY25wcmludGYrMHg0ZC8weDkwCj4gWyAgMTM1Ljg1ODQz MF0gIFs8ZmZmZmZmZmY4MTQzNTk4NT5dIGk5MTVfaGFuZ2NoZWNrX2VsYXBzZWQrMHgyNzUvMHgz ZDAKPiBbICAxMzUuODU4NDMyXSAgWzxmZmZmZmZmZjgxMDY2OGNmPl0gcHJvY2Vzc19vbmVfd29y aysweDEyZi8weDQxMAo+IFsgIDEzNS44NTg0MzNdICBbPGZmZmZmZmZmODEwNjZiZjM+XSB3b3Jr ZXJfdGhyZWFkKzB4NDMvMHg0ZDAKPiBbICAxMzUuODU4NDM1XSAgWzxmZmZmZmZmZjgxMDY2YmIw Pl0gPyBwcm9jZXNzX29uZV93b3JrKzB4NDEwLzB4NDEwCj4gWyAgMTM1Ljg1ODQzNl0gIFs8ZmZm ZmZmZmY4MTA2NmJiMD5dID8gcHJvY2Vzc19vbmVfd29yaysweDQxMC8weDQxMAo+IFsgIDEzNS44 NTg0MzhdICBbPGZmZmZmZmZmODEwNmJiYjQ+XSBrdGhyZWFkKzB4ZDQvMHhmMAo+IFsgIDEzNS44 NTg0NDBdICBbPGZmZmZmZmZmODEwNmJhZTA+XSA/IGt0aHJlYWRfcGFyaysweDYwLzB4NjAKPgo+ IHYyOiBPbmx5IHJlc3VibWl0IHN1Ym1pdHRlZCByZXF1ZXN0cwo+IHYzOiBEb24ndCBmb3JnZXQg dGhlIHBlbmRpbmcgcmVxdWVzdHMgaGF2ZSByZXNlcnZlZCBzcGFjZS4KPgo+IEZpeGVzOiBkNTVh YzViZjk3YzYgKCJkcm0vaTkxNTogRGVmZXIgdHJhbnNmZXIgb250byBleGVjdXRpb24gdGltZWxp bmUgdG8gYWN0dWFsIGh3IHN1Ym1pc3Npb24iKQo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNv biA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtv LnVyc3VsaW5AaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1 Y19zdWJtaXNzaW9uLmMgfCAzNyArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KPiAgMSBm aWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IGluZGV4IDAwYjVmYTg3MTY0 NC4uZTEyZmY4ODFkMzhkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3VjX3N1Ym1pc3Npb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1 Ym1pc3Npb24uYwo+IEBAIC02MDIsMTIgKzYwMiw5IEBAIHN0YXRpYyBpbnQgZ3VjX3JpbmdfZG9v cmJlbGwoc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqZ2MpCj4gIH0KPgo+ICAvKioKPiAtICogaTkx NV9ndWNfc3VibWl0KCkgLSBTdWJtaXQgY29tbWFuZHMgdGhyb3VnaCBHdUMKPiArICogX19pOTE1 X2d1Y19zdWJtaXQoKSAtIFN1Ym1pdCBjb21tYW5kcyB0aHJvdWdoIEd1Qwo+ICAgKiBAcnE6CQly ZXF1ZXN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tbWFuZHMKPiAgICoKPiAtICogUmV0dXJuOgkw IG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSBhbiBlcnJuby4KPiAtICogCQkoTm90ZTogbm9uemVybyBy ZWFsbHkgc2hvdWxkbid0IGhhcHBlbiEpCj4gLSAqCj4gICAqIFRoZSBjYWxsZXIgbXVzdCBoYXZl IGFscmVhZHkgY2FsbGVkIGk5MTVfZ3VjX3dxX3Jlc2VydmUoKSBhYm92ZSB3aXRoCj4gICAqIGEg cmVzdWx0IG9mIDAgKHN1Y2Nlc3MpLCBndWFyYW50ZWVpbmcgdGhhdCB0aGVyZSBpcyBzcGFjZSBp biB0aGUgd29yawo+ICAgKiBxdWV1ZSBmb3IgdGhlIG5ldyByZXF1ZXN0LCBzbyBlbnF1ZXVpbmcg dGhlIGl0ZW0gY2Fubm90IGZhaWwuCj4gQEAgLTYxOSw3ICs2MTYsNyBAQCBzdGF0aWMgaW50IGd1 Y19yaW5nX2Rvb3JiZWxsKHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmdjKQo+ICAgKiBUaGUgb25s eSBlcnJvciBoZXJlIGFyaXNlcyBpZiB0aGUgZG9vcmJlbGwgaGFyZHdhcmUgaXNuJ3QgZnVuY3Rp b25pbmcKPiAgICogYXMgZXhwZWN0ZWQsIHdoaWNoIHJlYWxseSBzaG91bG4ndCBoYXBwZW4uCj4g ICAqLwo+IC1zdGF0aWMgdm9pZCBpOTE1X2d1Y19zdWJtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpycSkKPiArc3RhdGljIHZvaWQgX19pOTE1X2d1Y19zdWJtaXQoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpycSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gcnEtPmk5MTU7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBy cS0+ZW5naW5lOwo+IEBAIC02MjgsMTcgKzYyNSw2IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ3VjX3N1 Ym1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+ICAJc3RydWN0IGk5MTVfZ3Vj X2NsaWVudCAqY2xpZW50ID0gZ3VjLT5leGVjYnVmX2NsaWVudDsKPiAgCWludCBiX3JldDsKPgo+ IC0JLyogV2Uga2VlcCB0aGUgcHJldmlvdXMgY29udGV4dCBhbGl2ZSB1bnRpbCB3ZSByZXRpcmUg dGhlIGZvbGxvd2luZwo+IC0JICogcmVxdWVzdC4gVGhpcyBlbnN1cmVzIHRoYXQgYW55IHRoZSBj b250ZXh0IG9iamVjdCBpcyBzdGlsbCBwaW5uZWQKPiAtCSAqIGZvciBhbnkgcmVzaWR1YWwgd3Jp dGVzIHRoZSBIVyBtYWtlcyBpbnRvIGl0IG9uIHRoZSBjb250ZXh0IHN3aXRjaAo+IC0JICogaW50 byB0aGUgbmV4dCBvYmplY3QgZm9sbG93aW5nIHRoZSBicmVhZGNydW1iLiBPdGhlcndpc2UsIHdl IG1heQo+IC0JICogcmV0aXJlIHRoZSBjb250ZXh0IHRvbyBlYXJseS4KPiAtCSAqLwo+IC0JcnEt PnByZXZpb3VzX2NvbnRleHQgPSBlbmdpbmUtPmxhc3RfY29udGV4dDsKPiAtCWVuZ2luZS0+bGFz dF9jb250ZXh0ID0gcnEtPmN0eDsKPiAtCj4gLQlpOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdChycSk7 Cj4gLQo+ICAJc3Bpbl9sb2NrKCZjbGllbnQtPndxX2xvY2spOwo+ICAJZ3VjX3dxX2l0ZW1fYXBw ZW5kKGNsaWVudCwgcnEpOwo+Cj4gQEAgLTY1OCw2ICs2NDQsMjMgQEAgc3RhdGljIHZvaWQgaTkx NV9ndWNfc3VibWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCj4gIAlzcGluX3Vu bG9jaygmY2xpZW50LT53cV9sb2NrKTsKPiAgfQo+Cj4gK3N0YXRpYyB2b2lkIGk5MTVfZ3VjX3N1 Ym1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUgPSBycS0+ZW5naW5lOwo+ICsKPiArCS8qIFdlIGtlZXAgdGhl IHByZXZpb3VzIGNvbnRleHQgYWxpdmUgdW50aWwgd2UgcmV0aXJlIHRoZSBmb2xsb3dpbmcKPiAr CSAqIHJlcXVlc3QuIFRoaXMgZW5zdXJlcyB0aGF0IGFueSB0aGUgY29udGV4dCBvYmplY3QgaXMg c3RpbGwgcGlubmVkCj4gKwkgKiBmb3IgYW55IHJlc2lkdWFsIHdyaXRlcyB0aGUgSFcgbWFrZXMg aW50byBpdCBvbiB0aGUgY29udGV4dCBzd2l0Y2gKPiArCSAqIGludG8gdGhlIG5leHQgb2JqZWN0 IGZvbGxvd2luZyB0aGUgYnJlYWRjcnVtYi4gT3RoZXJ3aXNlLCB3ZSBtYXkKPiArCSAqIHJldGly ZSB0aGUgY29udGV4dCB0b28gZWFybHkuCj4gKwkgKi8KPiArCXJxLT5wcmV2aW91c19jb250ZXh0 ID0gZW5naW5lLT5sYXN0X2NvbnRleHQ7Cj4gKwllbmdpbmUtPmxhc3RfY29udGV4dCA9IHJxLT5j dHg7Cj4gKwo+ICsJaTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQocnEpOwo+ICsJX19pOTE1X2d1Y19z dWJtaXQocnEpOwo+ICt9Cj4gKwo+ICAvKgo+ICAgKiBFdmVyeXRoaW5nIGJlbG93IGhlcmUgaXMg Y29uY2VybmVkIHdpdGggc2V0dXAgJiB0ZWFyZG93biwgYW5kIGlzCj4gICAqIHRoZXJlZm9yZSBu b3QgcGFydCBvZiB0aGUgc29tZXdoYXQgdGltZS1jcml0aWNhbCBiYXRjaC1zdWJtaXNzaW9uCj4g QEAgLTE1NTYsNyArMTU1OSw3IEBAIGludCBpOTE1X2d1Y19zdWJtaXNzaW9uX2VuYWJsZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJLyogUmVwbGF5IHRoZSBjdXJyZW50 IHNldCBvZiBwcmV2aW91c2x5IHN1Ym1pdHRlZCByZXF1ZXN0cyAqLwo+ICAJCWxpc3RfZm9yX2Vh Y2hfZW50cnkocnEsICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykgewo+ICAJCQlj bGllbnQtPndxX3JzdmQgKz0gc2l6ZW9mKHN0cnVjdCBndWNfd3FfaXRlbSk7Cj4gLQkJCWk5MTVf Z3VjX3N1Ym1pdChycSk7Cj4gKwkJCV9faTkxNV9ndWNfc3VibWl0KHJxKTsKPiAgCQl9Cj4gIAl9 Cj4KPgoKVGhlIG9ubHkgdGhpbmcgYm90aGVyaW5nIG1lIGhlcmUgaXMgaG93IHRoaXMgaW50ZXJh Y3RzIHdpdGggdGhlIGNvbW1vbiwgCm9yICJleGVjbGlzdCIgcGFydCBvZiB0aGUgcmVzZXQuCgpD b3B5aW5nIE1pa2EgaW4gaG9wZSBoZSBjYW4gaGVscCBoZXJlLiA6KQoKSSBzZWUgdGhhdCBpOTE1 X2dlbV9yZXNldF9lbmdpbmUgcnVucyBiZWZvcmUgdGhpcyBHdUMgd3EgcmVmaWxsIGFuZCBkb2Vz IApzb21lIG1hZ2ljIHdpdGggdGhlIHJlcXVlc3RzIG9uIHRoZSBlbmdpbmUtPnRpbWVsaW5lLT5y ZXF1ZXN0cyBsaXN0cy4KCldvdWxkIGl0IGJlIHBvc3NpYmxlIHRvIHNvbWVob3cgYmV0dGVyIGlu dGVncmF0ZSB0aGUgdHdvIHRoaW5ncz8KClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==