From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: References: <20190508100958.32637-1-chris@chris-wilson.co.uk> <20190508100958.32637-7-chris@chris-wilson.co.uk> From: Tvrtko Ursulin Message-ID: <13e9421f-7f34-aaa8-4ecb-5e3a693e5900@linux.intel.com> Date: Tue, 14 May 2019 13:41:13 +0100 MIME-Version: 1.0 In-Reply-To: <20190508100958.32637-7-chris@chris-wilson.co.uk> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t 07/16] i915: Add gem_ctx_clone List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-ID: Ck9uIDA4LzA1LzIwMTkgMTE6MDksIENocmlzIFdpbHNvbiB3cm90ZToKPiBFeGVyY2lzZSBjbG9u aW5nIGNvbnRleHRzLCBhbiBleHRlbnNpb24gb2YgbWVyZWx5IGNyZWF0aW5nIG9uZS4KPiAKPiBT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAt LS0KPiAgIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgICAgIHwgICAxICsKPiAgIHRlc3RzL2k5MTUv Z2VtX2N0eF9jbG9uZS5jIHwgNDYwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPiAgIHRlc3RzL21lc29uLmJ1aWxkICAgICAgICAgIHwgICAxICsKPiAgIDMgZmlsZXMgY2hh bmdlZCwgNDYyIGluc2VydGlvbnMoKykKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1 L2dlbV9jdHhfY2xvbmUuYwo+IAo+IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2Vz IGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+IGluZGV4IDFhNTQxZDIwNi4uZTFiN2ZlZWIyIDEw MDY0NAo+IC0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiArKysgYi90ZXN0cy9NYWtlZmls ZS5zb3VyY2VzCj4gQEAgLTIxLDYgKzIxLDcgQEAgVEVTVFNfcHJvZ3MgPSBcCj4gICAJZHJtX2lt cG9ydF9leHBvcnQgXAo+ICAgCWRybV9tbSBcCj4gICAJZHJtX3JlYWQgXAo+ICsJaTkxNS9nZW1f Y3R4X2Nsb25lIFwKPiAgIAlpOTE1L2dlbV92bV9jcmVhdGUgXAo+ICAgCWttc18zZCBcCj4gICAJ a21zX2FkZGZiX2Jhc2ljIFwKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fY3R4X2Nsb25l LmMgYi90ZXN0cy9pOTE1L2dlbV9jdHhfY2xvbmUuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMDAwLi5jZGM1YmY0MTMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdGVzdHMv aTkxNS9nZW1fY3R4X2Nsb25lLmMKPiBAQCAtMCwwICsxLDQ2MCBAQAo+ICsvKgo+ICsgKiBDb3B5 cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoK PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVk IGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3 YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO VC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJF Lgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJpZ3QuaCIKPiArI2luY2x1ZGUgImlndF9ndC5oIgo+ ICsjaW5jbHVkZSAiaTkxNS9nZW1fdm0uaCIKPiArI2luY2x1ZGUgImk5MTVfZHJtLmgiCj4gKwo+ ICtzdGF0aWMgaW50IGN0eF9jcmVhdGVfaW9jdGwoaW50IGk5MTUsIHN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9jcmVhdGVfZXh0ICphcmcpCj4gK3sKPiArCWludCBlcnI7Cj4gKwo+ICsJZXJy ID0gMDsKPiArCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5MTVfR0VNX0NPTlRFWFRf Q1JFQVRFX0VYVCwgYXJnKSkgewo+ICsJCWVyciA9IC1lcnJubzsKPiArCQlpZ3RfYXNzdW1lKGVy cik7Cj4gKwl9Cj4gKwo+ICsJZXJybm8gPSAwOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiAr c3RhdGljIGJvb2wgaGFzX2N0eF9jbG9uZShpbnQgaTkxNSkKPiArewo+ICsJc3RydWN0IGRybV9p OTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRfY2xvbmUgZXh0ID0gewo+ICsJCXsgLm5hbWUgPSBJ OTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9DTE9ORSB9LAo+ICsJCS5jbG9uZV9pZCA9IC0xLAo+ICsJ fTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0IGNyZWF0ZSA9IHsK PiArCQkuZmxhZ3MgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1VTRV9FWFRFTlNJT05TLAo+ ICsJCS5leHRlbnNpb25zID0gdG9fdXNlcl9wb2ludGVyKCZleHQpLAo+ICsJfTsKPiArCXJldHVy biBjdHhfY3JlYXRlX2lvY3RsKGk5MTUsICZjcmVhdGUpID09IC1FTk9FTlQ7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIGludmFsaWRfY2xvbmUoaW50IGk5MTUpCj4gK3sKPiArCXN0cnVjdCBkcm1f aTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0X2Nsb25lIGV4dCA9IHsKPiArCQl7IC5uYW1lID0g STkxNV9DT05URVhUX0NSRUFURV9FWFRfQ0xPTkUgfSwKPiArCX07Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dCBjcmVhdGUgPSB7Cj4gKwkJLmZsYWdzID0gSTkxNV9D T05URVhUX0NSRUFURV9GTEFHU19VU0VfRVhURU5TSU9OUywKPiArCQkuZXh0ZW5zaW9ucyA9IHRv X3VzZXJfcG9pbnRlcigmZXh0KSwKPiArCX07Cj4gKwo+ICsJaWd0X2Fzc2VydF9lcShjdHhfY3Jl YXRlX2lvY3RsKGk5MTUsICZjcmVhdGUpLCAwKTsKPiArCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkx NSwgY3JlYXRlLmN0eF9pZCk7Cj4gKwo+ICsJZXh0LmZsYWdzID0gLTE7IC8qIEhvcGVmdWxseSB3 ZSB3b24ndCBydW4gb3V0IG9mIGZsYWdzICovCj4gKwlpZ3RfYXNzZXJ0X2VxKGN0eF9jcmVhdGVf aW9jdGwoaTkxNSwgJmNyZWF0ZSksIC1FSU5WQUwpOwo+ICsJZXh0LmZsYWdzID0gMDsKPiArCj4g KwlleHQuYmFzZS5uZXh0X2V4dGVuc2lvbiA9IC0xOwo+ICsJaWd0X2Fzc2VydF9lcShjdHhfY3Jl YXRlX2lvY3RsKGk5MTUsICZjcmVhdGUpLCAtRUZBVUxUKTsKPiArCWV4dC5iYXNlLm5leHRfZXh0 ZW5zaW9uID0gdG9fdXNlcl9wb2ludGVyKCZleHQpOwo+ICsJaWd0X2Fzc2VydF9lcShjdHhfY3Jl YXRlX2lvY3RsKGk5MTUsICZjcmVhdGUpLCAtRTJCSUcpOwo+ICsJZXh0LmJhc2UubmV4dF9leHRl bnNpb24gPSAwOwo+ICsKPiArCWV4dC5jbG9uZV9pZCA9IC0xOwo+ICsJaWd0X2Fzc2VydF9lcShj dHhfY3JlYXRlX2lvY3RsKGk5MTUsICZjcmVhdGUpLCAtRU5PRU5UKTsKPiArCWV4dC5jbG9uZV9p ZCA9IDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGNsb25lX2ZsYWdzKGludCBpOTE1KQo+ICt7 Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSBzZXQg PSB7Cj4gKwkJeyAubmFtZSA9IEk5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNIH0sCj4g KwkJeyAucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fUkVDT1ZFUkFCTEUgfSwKPiArCX07Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9jbG9uZSBleHQgPSB7Cj4g KwkJeyAubmFtZSA9IEk5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX0NMT05FIH0sCj4gKwkJLmZsYWdz ID0gSTkxNV9DT05URVhUX0NMT05FX0ZMQUdTLAo+ICsJfTsKPiArCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9jcmVhdGVfZXh0IGNyZWF0ZSA9IHsKPiArCQkuZmxhZ3MgPSBJOTE1X0NPTlRF WFRfQ1JFQVRFX0ZMQUdTX1VTRV9FWFRFTlNJT05TLAo+ICsJCS5leHRlbnNpb25zID0gdG9fdXNl cl9wb2ludGVyKCZleHQpLAo+ICsJfTsKPiArCWludCBleHBlY3RlZDsKPiArCj4gKwlzZXQucGFy YW0udmFsdWUgPSAxOyAvKiBkZWZhdWx0IGlzIHJlY292ZXJhYmxlICovCj4gKwlpZ3RfcmVxdWly ZShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKSA9PSAwKTsKPiArCj4g Kwlmb3IgKGludCBwYXNzID0gMDsgcGFzcyA8IDI7IHBhc3MrKykgeyAvKiBjbG9uaW5nIGRlZmF1 bHQsIHRoZW4gY2hpbGQgKi8KPiArCQlpZ3RfZGVidWcoIkNsb25pbmcgJWRcbiIsIGV4dC5jbG9u ZV9pZCk7Cj4gKwkJaWd0X2Fzc2VydF9lcShjdHhfY3JlYXRlX2lvY3RsKGk5MTUsICZjcmVhdGUp LCAwKTsKPiArCj4gKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGV4dC5jbG9uZV9pZDsKPiArCQlnZW1f Y29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJnNldC5wYXJhbSk7ID4gKwkJZXhwZWN0ZWQgPSBzZXQu cGFyYW0udmFsdWU7Cj4gKwo+ICsJCXNldC5wYXJhbS5jdHhfaWQgPSBjcmVhdGUuY3R4X2lkOwo+ ICsJCWdlbV9jb250ZXh0X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKPiArCj4gKwkJaWd0 X2Fzc2VydF9lcV91NjQoc2V0LnBhcmFtLnBhcmFtLAo+ICsJCQkJICBJOTE1X0NPTlRFWFRfUEFS QU1fUkVDT1ZFUkFCTEUpOwo+ICsJCWlndF9hc3NlcnRfZXEoKGludClzZXQucGFyYW0udmFsdWUs IGV4cGVjdGVkKTsKPiArCj4gKwkJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBjcmVhdGUuY3R4 X2lkKTsKPiArCj4gKwkJZXhwZWN0ZWQgPSBzZXQucGFyYW0udmFsdWUgPSAwOwo+ICsJCXNldC5w YXJhbS5jdHhfaWQgPSBleHQuY2xvbmVfaWQ7Cj4gKwkJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5 MTUsICZzZXQucGFyYW0pOwo+ICsKPiArCQlpZ3RfYXNzZXJ0X2VxKGN0eF9jcmVhdGVfaW9jdGwo aTkxNSwgJmNyZWF0ZSksIDApOwo+ICsKPiArCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0 eF9pZDsKPiArCQlnZW1fY29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJnNldC5wYXJhbSk7Cj4gKwo+ ICsJCWlndF9hc3NlcnRfZXFfdTY0KHNldC5wYXJhbS5wYXJhbSwKPiArCQkJCSAgSTkxNV9DT05U RVhUX1BBUkFNX1JFQ09WRVJBQkxFKTsKPiArCQlpZ3RfYXNzZXJ0X2VxKChpbnQpc2V0LnBhcmFt LnZhbHVlLCBleHBlY3RlZCk7Cj4gKwo+ICsJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3Jl YXRlLmN0eF9pZCk7Cj4gKwo+ICsJCS8qIGNsb25lIGJ1dCB0aGVuIHJlc2V0IHByaW9yaXR5IHRv IGRlZmF1bHQuLi4gKi8KCkp1c3QgY29ycmVjdCBwcmlvcml0eS9wcmlvIGhlcmUgYW5kIGJlbG93 LgoKPiArCQlzZXQucGFyYW0uY3R4X2lkID0gMDsKPiArCQlzZXQucGFyYW0udmFsdWUgPSAxOwo+ ICsJCWV4dC5iYXNlLm5leHRfZXh0ZW5zaW9uID0gdG9fdXNlcl9wb2ludGVyKCZzZXQpOwo+ICsJ CWlndF9hc3NlcnRfZXEoY3R4X2NyZWF0ZV9pb2N0bChpOTE1LCAmY3JlYXRlKSwgMCk7Cj4gKwkJ ZXh0LmJhc2UubmV4dF9leHRlbnNpb24gPSAwOwo+ICsKPiArCQkvKiBuZXcgY29udGV4dCBzaG91 bGQgaGF2ZSB1cGRhdGVkIHByaW8uLi4gKi8KPiArCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRl LmN0eF9pZDsKPiArCQlnZW1fY29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJnNldC5wYXJhbSk7Cj4g KwkJaWd0X2Fzc2VydF9lcV91NjQoc2V0LnBhcmFtLnZhbHVlLCAxKTsKPiArCj4gKwkJLyogYnV0 IG9yaWdpbmFsIGNvbnRleHQgc2hvdWxkIGhhdmUgZGVmYXVsdCBwcmlvICovCj4gKwkJc2V0LnBh cmFtLmN0eF9pZCA9IGV4dC5jbG9uZV9pZDsKPiArCQlnZW1fY29udGV4dF9nZXRfcGFyYW0oaTkx NSwgJnNldC5wYXJhbSk7Cj4gKwkJaWd0X2Fzc2VydF9lcV91NjQoc2V0LnBhcmFtLnZhbHVlLCAw KTsKPiArCj4gKwkJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBjcmVhdGUuY3R4X2lkKTsKPiAr CQlleHQuY2xvbmVfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoaTkxNSk7Cj4gKwl9Cj4gKwo+ICsJ Z2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBleHQuY2xvbmVfaWQpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBjbG9uZV9lbmdpbmVzKGludCBpOTE1KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSBzZXQgPSB7Cj4gKwkJeyAubmFtZSA9IEk5 MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNIH0sCj4gKwkJeyAucGFyYW0gPSBJOTE1X0NP TlRFWFRfUEFSQU1fRU5HSU5FUyB9LAo+ICsJfTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9jcmVhdGVfZXh0X2Nsb25lIGV4dCA9IHsKPiArCQl7IC5uYW1lID0gSTkxNV9DT05URVhU X0NSRUFURV9FWFRfQ0xPTkUgfSwKPiArCQkuZmxhZ3MgPSBJOTE1X0NPTlRFWFRfQ0xPTkVfRU5H SU5FUywKPiArCX07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dCBj cmVhdGUgPSB7Cj4gKwkJLmZsYWdzID0gSTkxNV9DT05URVhUX0NSRUFURV9GTEFHU19VU0VfRVhU RU5TSU9OUywKPiArCQkuZXh0ZW5zaW9ucyA9IHRvX3VzZXJfcG9pbnRlcigmZXh0KSwKPiArCX07 Cj4gKwlJOTE1X0RFRklORV9DT05URVhUX1BBUkFNX0VOR0lORVMoZXhwZWN0ZWQsIDY0KTsKPiAr CUk5MTVfREVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhlbmdpbmVzLCA2NCk7Cj4gKwl1aW50 NjRfdCBleF9zaXplOwo+ICsKPiArCW1lbXNldCgmZXhwZWN0ZWQsIDAsIHNpemVvZihleHBlY3Rl ZCkpOwo+ICsJbWVtc2V0KCZlbmdpbmVzLCAwLCBzaXplb2YoZW5naW5lcykpOwo+ICsKPiArCWln dF9yZXF1aXJlKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pID09IDAp Owo+ICsKPiArCWZvciAoaW50IHBhc3MgPSAwOyBwYXNzIDwgMjsgcGFzcysrKSB7IC8qIGNsb25p bmcgZGVmYXVsdCwgdGhlbiBjaGlsZCAqLwo+ICsJCWlndF9kZWJ1ZygiQ2xvbmluZyAlZFxuIiwg ZXh0LmNsb25lX2lkKTsKPiArCQlpZ3RfYXNzZXJ0X2VxKGN0eF9jcmVhdGVfaW9jdGwoaTkxNSwg JmNyZWF0ZSksIDApOwo+ICsKPiArCQlzZXQucGFyYW0uY3R4X2lkID0gZXh0LmNsb25lX2lkOwo+ ICsJCXNldC5wYXJhbS5zaXplID0gc2l6ZW9mKGV4cGVjdGVkKTsKPiArCQlzZXQucGFyYW0udmFs dWUgPSB0b191c2VyX3BvaW50ZXIoJmV4cGVjdGVkKTsKPiArCQlnZW1fY29udGV4dF9nZXRfcGFy YW0oaTkxNSwgJnNldC5wYXJhbSk7Cj4gKwkJZXhfc2l6ZSA9IHNldC5wYXJhbS5zaXplOwo+ICsK PiArCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0eF9pZDsKPiArCQlzZXQucGFyYW0uc2l6 ZSA9IHNpemVvZihlbmdpbmVzKTsKPiArCQlzZXQucGFyYW0udmFsdWUgPSB0b191c2VyX3BvaW50 ZXIoJmVuZ2luZXMpOwo+ICsJCWdlbV9jb250ZXh0X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFt KTsKPiArCj4gKwkJaWd0X2Fzc2VydF9lcV91NjQoc2V0LnBhcmFtLnBhcmFtLCBJOTE1X0NPTlRF WFRfUEFSQU1fRU5HSU5FUyk7Cj4gKwkJaWd0X2Fzc2VydF9lcV91NjQoc2V0LnBhcmFtLnNpemUs IGV4X3NpemUpOwo+ICsJCWlndF9hc3NlcnQoIW1lbWNtcCgmZW5naW5lcywgJmV4cGVjdGVkLCBl eF9zaXplKSk7Cj4gKwo+ICsJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9p ZCk7Cj4gKwo+ICsJCWV4cGVjdGVkLmVuZ2luZXNbMF0uZW5naW5lX2NsYXNzID0KPiArCQkJSTkx NV9FTkdJTkVfQ0xBU1NfSU5WQUxJRDsKPiArCQlleHBlY3RlZC5lbmdpbmVzWzBdLmVuZ2luZV9p bnN0YW5jZSA9Cj4gKwkJCUk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSURfTk9ORTsKPiArCQlleF9z aXplID0gKHNpemVvZihzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMpICsKPiArCQkJ ICAgc2l6ZW9mKGV4cGVjdGVkLmVuZ2luZXNbMF0pKTsKPiArCj4gKwkJc2V0LnBhcmFtLmN0eF9p ZCA9IGV4dC5jbG9uZV9pZDsKPiArCQlzZXQucGFyYW0uc2l6ZSA9IGV4X3NpemU7Cj4gKwkJc2V0 LnBhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZleHBlY3RlZCk7Cj4gKwkJZ2VtX2NvbnRl eHRfc2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOwo+ICsKPiArCQlpZ3RfYXNzZXJ0X2VxKGN0 eF9jcmVhdGVfaW9jdGwoaTkxNSwgJmNyZWF0ZSksIDApOwo+ICsKPiArCQlzZXQucGFyYW0uY3R4 X2lkID0gY3JlYXRlLmN0eF9pZDsKPiArCQlzZXQucGFyYW0uc2l6ZSA9IHNpemVvZihlbmdpbmVz KTsKPiArCQlzZXQucGFyYW0udmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJmVuZ2luZXMpOwo+ICsJ CWdlbV9jb250ZXh0X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKPiArCj4gKwkJaWd0X2Fz c2VydF9lcV91NjQoc2V0LnBhcmFtLnNpemUsIGV4X3NpemUpOwo+ICsJCWlndF9hc3NlcnQoIW1l bWNtcCgmZW5naW5lcywgJmV4cGVjdGVkLCBleF9zaXplKSk7Cj4gKwo+ICsJCWdlbV9jb250ZXh0 X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9pZCk7Cj4gKwo+ICsJCS8qIGNsb25lIGJ1dCB0aGVu IHJlc2V0IGVuZ2luZXMgdG8gZGVmYXVsdCAqLwo+ICsJCXNldC5wYXJhbS5jdHhfaWQgPSAwOwo+ ICsJCXNldC5wYXJhbS5zaXplID0gMDsKPiArCQlzZXQucGFyYW0udmFsdWUgPSAwOwo+ICsJCWV4 dC5iYXNlLm5leHRfZXh0ZW5zaW9uID0gdG9fdXNlcl9wb2ludGVyKCZzZXQpOwo+ICsKPiArCQlp Z3RfYXNzZXJ0X2VxKGN0eF9jcmVhdGVfaW9jdGwoaTkxNSwgJmNyZWF0ZSksIDApOwo+ICsJCWV4 dC5iYXNlLm5leHRfZXh0ZW5zaW9uID0gMDsKPiArCj4gKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGNy ZWF0ZS5jdHhfaWQ7Cj4gKwkJc2V0LnBhcmFtLnNpemUgPSBzaXplb2YoZW5naW5lcyk7Cj4gKwkJ c2V0LnBhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZlbmdpbmVzKTsKPiArCQlnZW1fY29u dGV4dF9nZXRfcGFyYW0oaTkxNSwgJnNldC5wYXJhbSk7Cj4gKwkJaWd0X2Fzc2VydF9lcV91NjQo c2V0LnBhcmFtLnNpemUsIDApOwo+ICsKPiArCQlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGNy ZWF0ZS5jdHhfaWQpOwo+ICsKPiArCQkvKiBBbmQgY2hlY2sgd2UgaWdub3JlIHRoZSBmbGFnICov Cj4gKwkJZXh0LmZsYWdzID0gMDsKPiArCQlpZ3RfYXNzZXJ0X2VxKGN0eF9jcmVhdGVfaW9jdGwo aTkxNSwgJmNyZWF0ZSksIDApOwo+ICsJCWV4dC5mbGFncyA9IEk5MTVfQ09OVEVYVF9DTE9ORV9F TkdJTkVTOwo+ICsKPiArCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0eF9pZDsKPiArCQlz ZXQucGFyYW0uc2l6ZSA9IHNpemVvZihlbmdpbmVzKTsKPiArCQlzZXQucGFyYW0udmFsdWUgPSB0 b191c2VyX3BvaW50ZXIoJmVuZ2luZXMpOwo+ICsJCWdlbV9jb250ZXh0X2dldF9wYXJhbShpOTE1 LCAmc2V0LnBhcmFtKTsKPiArCQlpZ3RfYXNzZXJ0X2VxX3U2NChzZXQucGFyYW0uc2l6ZSwgMCk7 CgpJdCBpcyBxdWl0ZSBoYXJkIHRvIHJldmlldy9mb2xsb3cgYWxsIHRoZXNlIHRlc3RzIChhbmQg c28gZ2F1Z2UgdGhlIApjb3ZlcmFnZSkuIEl0IGlzIGEgdmVyeSBzdGF0ZWZ1bCBmbG93IGFuZCBm b3IgZWFjaCBzdGVwIG9uZSBoYXMgdG8gCnJlbWVtYmVyL2JhY2stcmVmZXJlbmNlIHdoYXQgaXMg dGhlIGN1cnJlbnRseSBhY3RpdmUgY2hhaW4gb2YgCmV4dGVuc2lvbnMsIGFuZCB3aGF0IGlzIHRo ZSBhY3RpdmUgc3RhdGUgb2YgY29udGV4dHMgYW5kIHVzZWQgY29udGV4dCBpZHMuCgpBbm5veWlu Z2x5IEkgZG9uJ3QgaGF2ZSBhbnkgZ29vZCBpZGVhcyBvbiBob3cgdG8gZWFzaWx5IGFuZCByZWFz b25hYmx5IApleHByZXNzIHRoaXMuIFBlcmhhcHMgbGVzcyByZXVzZSBvZiB0aGUgc2FtZSBzdGFj ayBvYmplY3RzIGluIGZhdm91ciBvZiAKZGVkaWNhdGVkIGhlbHBlcnMgZm9yIHF1ZXJ5aW5nIHdv dWxkIHJlZHVjZSB0aGUgbWVzcz8gSGFyZCB0byBzYXkgCndpdGhvdXQgdHJ5aW5nIGl0IG91dC4K CkJ1dCBJIHRoaW5rIHNvbWV0aGluZyBuZWVkcyB0byBiZSBkb25lIHNpbmNlIHBlb3BsZSB3aWxs IHN0cnVnZ2xlIHRvIApmb2xsb3cgdGhpcyBpZiB0aGVyZSBpcyBhIGJ1ZyBvbmUgZGF5LgoKPiAr Cj4gKwkJZXh0LmNsb25lX2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5MTUpOwo+ICsJfQo+ICsK PiArCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgZXh0LmNsb25lX2lkKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgY2xvbmVfc2NoZWR1bGVyKGludCBpOTE1KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSBzZXQgPSB7Cj4gKwkJeyAubmFt ZSA9IEk5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNIH0sCj4gKwkJeyAucGFyYW0gPSBJ OTE1X0NPTlRFWFRfUEFSQU1fUFJJT1JJVFkgfSwKPiArCX07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfY3JlYXRlX2V4dF9jbG9uZSBleHQgPSB7Cj4gKwkJeyAubmFtZSA9IEk5MTVf Q09OVEVYVF9DUkVBVEVfRVhUX0NMT05FIH0sCj4gKwkJLmZsYWdzID0gSTkxNV9DT05URVhUX0NM T05FX1NDSEVEQVRUUiwKPiArCX07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3Jl YXRlX2V4dCBjcmVhdGUgPSB7Cj4gKwkJLmZsYWdzID0gSTkxNV9DT05URVhUX0NSRUFURV9GTEFH U19VU0VfRVhURU5TSU9OUywKPiArCQkuZXh0ZW5zaW9ucyA9IHRvX3VzZXJfcG9pbnRlcigmZXh0 KSwKPiArCX07Cj4gKwlpbnQgZXhwZWN0ZWQ7Cj4gKwo+ICsJaWd0X3JlcXVpcmUoX19nZW1fY29u dGV4dF9zZXRfcGFyYW0oaTkxNSwgJnNldC5wYXJhbSkgPT0gMCk7Cj4gKwo+ICsJZm9yIChpbnQg cGFzcyA9IDA7IHBhc3MgPCAyOyBwYXNzKyspIHsgLyogY2xvbmluZyBkZWZhdWx0LCB0aGVuIGNo aWxkICovCj4gKwkJaWd0X2RlYnVnKCJDbG9uaW5nICVkXG4iLCBleHQuY2xvbmVfaWQpOwo+ICsJ CWlndF9hc3NlcnRfZXEoY3R4X2NyZWF0ZV9pb2N0bChpOTE1LCAmY3JlYXRlKSwgMCk7Cj4gKwo+ ICsJCXNldC5wYXJhbS5jdHhfaWQgPSBleHQuY2xvbmVfaWQ7Cj4gKwkJZ2VtX2NvbnRleHRfZ2V0 X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOwo+ICsJCWV4cGVjdGVkID0gc2V0LnBhcmFtLnZhbHVl Owo+ICsKPiArCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0eF9pZDsKPiArCQlnZW1fY29u dGV4dF9nZXRfcGFyYW0oaTkxNSwgJnNldC5wYXJhbSk7Cj4gKwo+ICsJCWlndF9hc3NlcnRfZXFf dTY0KHNldC5wYXJhbS5wYXJhbSwgSTkxNV9DT05URVhUX1BBUkFNX1BSSU9SSVRZKTsKPiArCQlp Z3RfYXNzZXJ0X2VxKChpbnQpc2V0LnBhcmFtLnZhbHVlLCBleHBlY3RlZCk7Cj4gKwo+ICsJCWdl bV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9pZCk7Cj4gKwo+ICsJCWV4cGVjdGVk ID0gc2V0LnBhcmFtLnZhbHVlID0gMTsKPiArCQlzZXQucGFyYW0uY3R4X2lkID0gZXh0LmNsb25l X2lkOwo+ICsJCWdlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKPiArCj4g KwkJaWd0X2Fzc2VydF9lcShjdHhfY3JlYXRlX2lvY3RsKGk5MTUsICZjcmVhdGUpLCAwKTsKPiAr Cj4gKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGNyZWF0ZS5jdHhfaWQ7Cj4gKwkJZ2VtX2NvbnRleHRf Z2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOwo+ICsKPiArCQlpZ3RfYXNzZXJ0X2VxX3U2NChz ZXQucGFyYW0ucGFyYW0sIEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWSk7Cj4gKwkJaWd0X2Fz c2VydF9lcSgoaW50KXNldC5wYXJhbS52YWx1ZSwgZXhwZWN0ZWQpOwo+ICsKPiArCQlnZW1fY29u dGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOwo+ICsKPiArCQkvKiBjbG9uZSBidXQg dGhlbiByZXNldCBwcmlvcml0eSB0byBkZWZhdWx0ICovCj4gKwkJc2V0LnBhcmFtLmN0eF9pZCA9 IDA7Cj4gKwkJc2V0LnBhcmFtLnZhbHVlID0gMDsKPiArCQlleHQuYmFzZS5uZXh0X2V4dGVuc2lv biA9IHRvX3VzZXJfcG9pbnRlcigmc2V0KTsKPiArCQlpZ3RfYXNzZXJ0X2VxKGN0eF9jcmVhdGVf aW9jdGwoaTkxNSwgJmNyZWF0ZSksIDApOwo+ICsJCWV4dC5iYXNlLm5leHRfZXh0ZW5zaW9uID0g MDsKPiArCj4gKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGNyZWF0ZS5jdHhfaWQ7Cj4gKwkJZ2VtX2Nv bnRleHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOwo+ICsJCWlndF9hc3NlcnRfZXFfdTY0 KHNldC5wYXJhbS52YWx1ZSwgMCk7Cj4gKwo+ICsJCXNldC5wYXJhbS5jdHhfaWQgPSBleHQuY2xv bmVfaWQ7Cj4gKwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOwo+ICsJ CWlndF9hc3NlcnRfZXFfdTY0KHNldC5wYXJhbS52YWx1ZSwgMSk7Cj4gKwo+ICsJCWdlbV9jb250 ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9pZCk7Cj4gKwkJZXh0LmNsb25lX2lkID0gZ2Vt X2NvbnRleHRfY3JlYXRlKGk5MTUpOwo+ICsJfQo+ICsKPiArCWdlbV9jb250ZXh0X2Rlc3Ryb3ko aTkxNSwgZXh0LmNsb25lX2lkKTsKPiArfQo+ICsKPiArc3RhdGljIHVpbnQzMl90IF9fYmF0Y2hf Y3JlYXRlKGludCBpOTE1LCB1aW50MzJfdCBvZmZzZXQpCj4gK3sKPiArCWNvbnN0IHVpbnQzMl90 IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4gKwl1aW50MzJfdCBoYW5kbGU7Cj4gKwo+ICsJ aGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1LCBBTElHTihvZmZzZXQgKyA0LCA0MDk2KSk7Cj4gKwln ZW1fd3JpdGUoaTkxNSwgaGFuZGxlLCBvZmZzZXQsICZiYmUsIHNpemVvZihiYmUpKTsKPiArCj4g KwlyZXR1cm4gaGFuZGxlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdWludDMyX3QgYmF0Y2hfY3JlYXRl KGludCBpOTE1KQo+ICt7Cj4gKwlyZXR1cm4gX19iYXRjaF9jcmVhdGUoaTkxNSwgMCk7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGNoZWNrX3NhbWVfdm0oaW50IGk5MTUsIHVpbnQzMl90IGN0eF9h LCB1aW50MzJfdCBjdHhfYikKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVj dDIgYmF0Y2ggPSB7Cj4gKwkJLmhhbmRsZSA9IGJhdGNoX2NyZWF0ZShpOTE1KSwKPiArCX07Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0gewo+ICsJCS5idWZmZXJzX3B0 ciA9IHRvX3VzZXJfcG9pbnRlcigmYmF0Y2gpLAo+ICsJCS5idWZmZXJfY291bnQgPSAxLAo+ICsJ fTsKPiArCj4gKwkvKiBGaXJzdCB2ZXJpZnkgdGhhdCB3ZSB0cnkgdG8gdXNlICJzb2Z0cGlubmlu ZyIgYnkgZGVmYXVsdCAqLwo+ICsJYmF0Y2gub2Zmc2V0ID0gNDggPDwgMjA7Cj4gKwllYi5yc3Zk MSA9IGN0eF9hOwo+ICsJZ2VtX2V4ZWNidWYoaTkxNSwgJmViKTsKPiArCWlndF9hc3NlcnRfZXFf dTY0KGJhdGNoLm9mZnNldCwgNDggPDwgMjApOwo+ICsKPiArCS8qIEFuIGFscmVhZHkgYWN0aXZl IFZNQSB3aWxsIHRyeSB0byBrZWVwIGl0cyBvZmZzZXQgKi8KPiArCWJhdGNoLm9mZnNldCA9IDA7 Cj4gKwllYi5yc3ZkMSA9IGN0eF9iOwo+ICsJZ2VtX2V4ZWNidWYoaTkxNSwgJmViKTsKPiArCWln dF9hc3NlcnRfZXFfdTY0KGJhdGNoLm9mZnNldCwgNDggPDwgMjApOwo+ICsKPiArCWdlbV9zeW5j KGk5MTUsIGJhdGNoLmhhbmRsZSk7Cj4gKwlnZW1fY2xvc2UoaTkxNSwgYmF0Y2guaGFuZGxlKTsK PiArCj4gKwlnZW1fcXVpZXNjZW50X2dwdShpOTE1KTsgLyogZXZpY3QgdGhlIHZtYSAqLwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCBjbG9uZV92bShpbnQgaTkxNSkKPiArewo+ICsJc3RydWN0IGRy bV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHNldCA9IHsKPiArCQkucGFyYW0gPSBJOTE1X0NPTlRF WFRfUEFSQU1fVk0sCj4gKwl9Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0 ZV9leHRfY2xvbmUgZXh0ID0gewo+ICsJCXsgLm5hbWUgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0VY VF9DTE9ORSB9LAo+ICsJCS5mbGFncyA9IEk5MTVfQ09OVEVYVF9DTE9ORV9WTSwKPiArCX07Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dCBjcmVhdGUgPSB7Cj4gKwkJ LmZsYWdzID0gSTkxNV9DT05URVhUX0NSRUFURV9GTEFHU19VU0VfRVhURU5TSU9OUywKPiArCQku ZXh0ZW5zaW9ucyA9IHRvX3VzZXJfcG9pbnRlcigmZXh0KSwKPiArCX07Cj4gKwl1aW50MzJfdCB2 bV9pZFsyXTsKPiArCj4gKwlpZ3RfcmVxdWlyZShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1 LCAmc2V0KSA9PSAtRU5PRU5UKTsKPiArCj4gKwkvKiBTY3J1YiB0aGUgVk0gZm9yIG91ciB0ZXN0 cyAqLwo+ICsJaTkxNSA9IGdlbV9yZW9wZW5fZHJpdmVyKGk5MTUpOwo+ICsKPiArCXNldC5jdHhf aWQgPSBnZW1fY29udGV4dF9jcmVhdGUoaTkxNSk7Cj4gKwlnZW1fY29udGV4dF9nZXRfcGFyYW0o aTkxNSwgJnNldCk7Cj4gKwl2bV9pZFswXSA9IHNldC52YWx1ZTsKPiArCWdlbV9jb250ZXh0X2Rl c3Ryb3koaTkxNSwgc2V0LmN0eF9pZCk7Cj4gKwo+ICsJdm1faWRbMV0gPSBnZW1fdm1fY3JlYXRl KGk5MTUpOwo+ICsKPiArCWZvciAoaW50IHBhc3MgPSAwOyBwYXNzIDwgMjsgcGFzcysrKSB7IC8q IGNsb25pbmcgZGVmYXVsdCwgdGhlbiBjaGlsZCAqLwo+ICsJCWlndF9kZWJ1ZygiQ2xvbmluZyAl ZFxuIiwgZXh0LmNsb25lX2lkKTsKPiArCj4gKwkJaWd0X2Fzc2VydF9lcShjdHhfY3JlYXRlX2lv Y3RsKGk5MTUsICZjcmVhdGUpLCAwKTsKPiArCQljaGVja19zYW1lX3ZtKGk5MTUsIGV4dC5jbG9u ZV9pZCwgY3JlYXRlLmN0eF9pZCk7Cj4gKwkJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBjcmVh dGUuY3R4X2lkKTsKPiArCj4gKwkJc2V0LnZhbHVlID0gdm1faWRbcGFzc107Cj4gKwkJc2V0LmN0 eF9pZCA9IGV4dC5jbG9uZV9pZDsKPiArCQlnZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnNl dCk7Cj4gKwo+ICsJCWlndF9hc3NlcnRfZXEoY3R4X2NyZWF0ZV9pb2N0bChpOTE1LCAmY3JlYXRl KSwgMCk7Cj4gKwkJY2hlY2tfc2FtZV92bShpOTE1LCBleHQuY2xvbmVfaWQsIGNyZWF0ZS5jdHhf aWQpOwo+ICsJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9pZCk7Cj4gKwo+ ICsJCWV4dC5jbG9uZV9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShpOTE1KTsKPiArCX0KPiArCj4g KwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGV4dC5jbG9uZV9pZCk7Cj4gKwo+ICsJZm9yIChp bnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZtX2lkKTsgaSsrKQo+ICsJCWdlbV92bV9kZXN0cm95 KGk5MTUsIHZtX2lkW2ldKTsKPiArCj4gKwljbG9zZShpOTE1KTsKPiArfQo+ICsKPiAraWd0X21h aW4KPiArewo+ICsJaW50IGk5MTUgPSAtMTsKPiArCj4gKwlpZ3RfZml4dHVyZSB7Cj4gKwkJaTkx NSA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwo+ICsJCWlndF9yZXF1aXJlX2dlbShp OTE1KTsKPiArCQlnZW1fcmVxdWlyZV9jb250ZXh0cyhpOTE1KTsKPiArCj4gKwkJaWd0X3JlcXVp cmUoaGFzX2N0eF9jbG9uZShpOTE1KSk7Cj4gKwkJaWd0X2ZvcmtfaGFuZ19kZXRlY3RvcihpOTE1 KTsKPiArCX0KPiArCj4gKwlpZ3Rfc3VidGVzdCgiaW52YWxpZCIpCj4gKwkJaW52YWxpZF9jbG9u ZShpOTE1KTsKPiArCj4gKwlpZ3Rfc3VidGVzdCgiZW5naW5lcyIpCj4gKwkJY2xvbmVfZW5naW5l cyhpOTE1KTsKPiArCj4gKwlpZ3Rfc3VidGVzdCgiZmxhZ3MiKQo+ICsJCWNsb25lX2ZsYWdzKGk5 MTUpOwo+ICsKPiArCWlndF9zdWJ0ZXN0KCJzY2hlZHVsZXIiKQo+ICsJCWNsb25lX3NjaGVkdWxl cihpOTE1KTsKPiArCj4gKwlpZ3Rfc3VidGVzdCgidm0iKQo+ICsJCWNsb25lX3ZtKGk5MTUpOwo+ ICsKPiArCWlndF9maXh0dXJlIHsKPiArCQlpZ3Rfc3RvcF9oYW5nX2RldGVjdG9yKCk7Cj4gKwkJ Y2xvc2UoaTkxNSk7Cj4gKwl9Cj4gK30KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQg Yi90ZXN0cy9tZXNvbi5idWlsZAo+IGluZGV4IGU3ZGJjNTc1Ni4uMzgxMGJkNzYwIDEwMDY0NAo+ IC0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCj4gKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKPiBAQCAt MTA5LDYgKzEwOSw3IEBAIGk5MTVfcHJvZ3MgPSBbCj4gICAJJ2dlbV9jc19wcmVmZXRjaCcsCj4g ICAJJ2dlbV9jc190bGInLAo+ICAgCSdnZW1fY3R4X2JhZF9kZXN0cm95JywKPiArCSdnZW1fY3R4 X2Nsb25lJywKPiAgIAknZ2VtX2N0eF9jcmVhdGUnLAo+ICAgCSdnZW1fY3R4X2V4ZWMnLAo+ICAg CSdnZW1fY3R4X2lzb2xhdGlvbicsCj4gCgpJdCBsb29rcyBmaW5lIGluIHByaW5jaXBsZSBzbyBJ IGxlYXZlIHRvIHlvdXIgY29uc2NpZW5jZSBpZiB5b3UnbGwgdHJ5IAp0byBpbXByb3ZlIHRoZSBy ZWFkYWJpbGl0eS4gOikgV2l0aCB0aGUgcHJpb3JpdHkgcmVuYW1lZCB0byByZWNvdmVyYWJsZToK ClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgoK UmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=