From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: References: <20190508100958.32637-1-chris@chris-wilson.co.uk> <20190508100958.32637-5-chris@chris-wilson.co.uk> <434f6c78-7ff3-04f5-096c-461a0409680b@linux.intel.com> <155794714226.32666.10694962642072980885@skylake-alporthouse-com> <9cfb5dac-1db4-792c-ae51-ef906fbf6eb0@linux.intel.com> <155852065131.23981.2181310303611044139@skylake-alporthouse-com> From: Tvrtko Ursulin Message-ID: <98630baa-8ce9-222f-60f7-51ef16fed8fb@linux.intel.com> Date: Wed, 22 May 2019 11:32:51 +0100 MIME-Version: 1.0 In-Reply-To: <155852065131.23981.2181310303611044139@skylake-alporthouse-com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t 05/16] i915/gem_ctx_create: Basic checks for constructor properties 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: Ck9uIDIyLzA1LzIwMTkgMTE6MjQsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE5LTA1LTE2IDA5OjM4OjE1KQo+Pgo+PiBPbiAxNS8wNS8yMDE5IDIwOjA1 LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4+PiBRdW90aW5nIFR2cnRrbyBVcnN1bGluICgyMDE5LTA1 LTE0IDExOjE1OjEyKQo+Pj4+Cj4+Pj4gT24gMDgvMDUvMjAxOSAxMTowOSwgQ2hyaXMgV2lsc29u IHdyb3RlOgo+Pj4+PiBDaGVjayB0aGF0IHRoZSBleHRlbmRlZCBjcmVhdGUgaW50ZXJmYWNlIGFj Y2VwdHMgc2V0cGFyYW0uCj4+Pj4+Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+Pj4+PiAtLS0KPj4+Pj4gICAgIHRlc3RzL2k5MTUv Z2VtX2N0eF9jcmVhdGUuYyB8IDIyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0KPj4+Pj4gICAgIDEgZmlsZSBjaGFuZ2VkLCAyMTMgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRp b25zKC0pCj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9jdHhfY3JlYXRl LmMgYi90ZXN0cy9pOTE1L2dlbV9jdHhfY3JlYXRlLmMKPj4+Pj4gaW5kZXggYTY2NDA3MGRiLi45 YjRmZGRiZTcgMTAwNjQ0Cj4+Pj4+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2N0eF9jcmVhdGUuYwo+ Pj4+PiArKysgYi90ZXN0cy9pOTE1L2dlbV9jdHhfY3JlYXRlLmMKPj4+Pj4gQEAgLTMzLDYgKzMz LDcgQEAKPj4+Pj4gICAgICNpbmNsdWRlIDx0aW1lLmg+Cj4+Pj4+ICAgICAKPj4+Pj4gICAgICNp bmNsdWRlICJpZ3RfcmFuZC5oIgo+Pj4+PiArI2luY2x1ZGUgInN3X3N5bmMuaCIKPj4+Pj4gICAg IAo+Pj4+PiAgICAgI2RlZmluZSBMT0NBTF9JOTE1X0VYRUNfQlNEX1NISUZUICAgICAgKDEzKQo+ Pj4+PiAgICAgI2RlZmluZSBMT0NBTF9JOTE1X0VYRUNfQlNEX01BU0sgICAgICAgKDMgPDwgTE9D QUxfSTkxNV9FWEVDX0JTRF9TSElGVCkKPj4+Pj4gQEAgLTQ1LDEyICs0NiwzMyBAQCBzdGF0aWMg dW5zaWduZWQgYWxsX25lbmdpbmU7Cj4+Pj4+ICAgICBzdGF0aWMgdW5zaWduZWQgcHBndHRfZW5n aW5lc1sxNl07Cj4+Pj4+ICAgICBzdGF0aWMgdW5zaWduZWQgcHBndHRfbmVuZ2luZTsKPj4+Pj4g ICAgIAo+Pj4+PiAtc3RhdGljIGludCBfX2dlbV9jb250ZXh0X2NyZWF0ZV9sb2NhbChpbnQgZmQs IHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGUgKmFyZykKPj4+Pj4gK3N0YXRpYyBp bnQgY3JlYXRlX2lvY3RsKGludCBmZCwgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0 ZSAqYXJnKQo+Pj4+PiAgICAgewo+Pj4+PiAtICAgICBpbnQgcmV0ID0gMDsKPj4+Pj4gLSAgICAg aWYgKGRybUlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9DUkVBVEUsIGFyZykp Cj4+Pj4+IC0gICAgICAgICAgICAgcmV0ID0gLWVycm5vOwo+Pj4+PiAtICAgICByZXR1cm4gcmV0 Owo+Pj4+PiArICAgICBpbnQgZXJyOwo+Pj4+PiArCj4+Pj4+ICsgICAgIGVyciA9IDA7Cj4+Pj4+ ICsgICAgIGlmIChpZ3RfaW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX0NSRUFU RSwgYXJnKSkgewo+Pj4+PiArICAgICAgICAgICAgIGVyciA9IC1lcnJubzsKPj4+Pj4gKyAgICAg ICAgICAgICBpZ3RfYXNzZXJ0KGVycik7Cj4+Pj4+ICsgICAgIH0KPj4+Pj4gKwo+Pj4+PiArICAg ICBlcnJubyA9IDA7Cj4+Pj4+ICsgICAgIHJldHVybiBlcnI7Cj4+Pj4+ICt9Cj4+Pj4+ICsKPj4+ Pj4gK3N0YXRpYyBpbnQgY3JlYXRlX2V4dF9pb2N0bChpbnQgaTkxNSwKPj4+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dCAq YXJnKQo+Pj4+PiArewo+Pj4+PiArICAgICBpbnQgZXJyOwo+Pj4+PiArCj4+Pj4+ICsgICAgIGVy ciA9IDA7Cj4+Pj4+ICsgICAgIGlmIChpZ3RfaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5MTVfR0VN X0NPTlRFWFRfQ1JFQVRFX0VYVCwgYXJnKSkgewo+Pj4+PiArICAgICAgICAgICAgIGVyciA9IC1l cnJubzsKPj4+Pj4gKyAgICAgICAgICAgICBpZ3RfYXNzdW1lKGVycik7Cj4+Pj4+ICsgICAgIH0K Pj4+Pj4gKwo+Pj4+PiArICAgICBlcnJubyA9IDA7Cj4+Pj4+ICsgICAgIHJldHVybiBlcnI7Cj4+ Pj4+ICAgICB9Cj4+Pj4+ICAgICAKPj4+Pj4gICAgIHN0YXRpYyBkb3VibGUgZWxhcHNlZChjb25z dCBzdHJ1Y3QgdGltZXNwZWMgKnN0YXJ0LAo+Pj4+PiBAQCAtMzA4LDYgKzMzMCwxODcgQEAgc3Rh dGljIHZvaWQgbWF4aW11bShpbnQgZmQsIGludCBuY3B1cywgdW5zaWduZWQgbW9kZSkKPj4+Pj4g ICAgICAgICBmcmVlKGNvbnRleHRzKTsKPj4+Pj4gICAgIH0KPj4+Pj4gICAgIAo+Pj4+PiArc3Rh dGljIHZvaWQgYmFzaWNfZXh0X3BhcmFtKGludCBpOTE1KQo+Pj4+PiArewo+Pj4+PiArICAgICBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSBleHQgPSB7Cj4+ Pj4+ICsgICAgICAgICAgICAgeyAubmFtZSA9IEk5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBB UkFNIH0sCj4+Pj4+ICsgICAgIH07Cj4+Pj4+ICsgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9jcmVhdGVfZXh0IGNyZWF0ZSA9IHsKPj4+Pj4gKyAgICAgICAgICAgICAuZmxhZ3MgPSBJ OTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1VTRV9FWFRFTlNJT05TCj4+Pj4+ICsgICAgIH07Cj4+ Pj4+ICsgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBnZXQ7Cj4+Pj4+ICsK Pj4+Pj4gKyAgICAgaWd0X3JlcXVpcmUoY3JlYXRlX2V4dF9pb2N0bChpOTE1LCAmY3JlYXRlKSA9 PSAwKTsKPj4+Pj4gKyAgICAgZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBjcmVhdGUuY3R4X2lk KTsKPj4+Pj4gKwo+Pj4+PiArICAgICBjcmVhdGUuZXh0ZW5zaW9ucyA9IC0xdWxsOwo+Pj4+PiAr ICAgICBpZ3RfYXNzZXJ0X2VxKGNyZWF0ZV9leHRfaW9jdGwoaTkxNSwgJmNyZWF0ZSksIC1FRkFV TFQpOwo+Pj4+PiArCj4+Pj4+ICsgICAgIGNyZWF0ZS5leHRlbnNpb25zID0gdG9fdXNlcl9wb2lu dGVyKCZleHQpOwo+Pj4+PiArICAgICBpZ3RfYXNzZXJ0X2VxKGNyZWF0ZV9leHRfaW9jdGwoaTkx NSwgJmNyZWF0ZSksIC1FSU5WQUwpOwo+Pj4+PiArCj4+Pj4+ICsgICAgIGV4dC5wYXJhbS5wYXJh bSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWTsKPj4+Pj4gKyAgICAgaWYgKGNyZWF0ZV9l eHRfaW9jdGwoaTkxNSwgJmNyZWF0ZSkgIT0gLUVOT0RFVikgewo+Pj4+PiArICAgICAgICAgICAg IGdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9pZCk7Cj4+Pj4+ICsKPj4+Pj4g KyAgICAgICAgICAgICBleHQuYmFzZS5uZXh0X2V4dGVuc2lvbiA9IC0xdWxsOwo+Pj4+PiArICAg ICAgICAgICAgIGlndF9hc3NlcnRfZXEoY3JlYXRlX2V4dF9pb2N0bChpOTE1LCAmY3JlYXRlKSwg LUVGQVVMVCk7Cj4+Pj4+ICsgICAgICAgICAgICAgZXh0LmJhc2UubmV4dF9leHRlbnNpb24gPSB0 b191c2VyX3BvaW50ZXIoJmV4dCk7Cj4+Pj4+ICsgICAgICAgICAgICAgaWd0X2Fzc2VydF9lcShj cmVhdGVfZXh0X2lvY3RsKGk5MTUsICZjcmVhdGUpLCAtRTJCSUcpOwo+Pj4+PiArICAgICAgICAg ICAgIGV4dC5iYXNlLm5leHRfZXh0ZW5zaW9uID0gMDsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICAg ICAgIGV4dC5wYXJhbS52YWx1ZSA9IDMyOwo+Pj4+PiArICAgICAgICAgICAgIGlndF9hc3NlcnRf ZXEoY3JlYXRlX2V4dF9pb2N0bChpOTE1LCAmY3JlYXRlKSwgMCk7Cj4+Pj4+ICsKPj4+Pj4gKyAg ICAgICAgICAgICBtZW1zZXQoJmdldCwgMCwgc2l6ZW9mKGdldCkpOwo+Pj4+PiArICAgICAgICAg ICAgIGdldC5jdHhfaWQgPSBjcmVhdGUuY3R4X2lkOwo+Pj4+PiArICAgICAgICAgICAgIGdldC5w YXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWTsKPj4+Pj4gKyAgICAgICAgICAgICBn ZW1fY29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJmdldCk7Cj4+Pj4+ICsgICAgICAgICAgICAgaWd0 X2Fzc2VydF9lcShnZXQudmFsdWUsIGV4dC5wYXJhbS52YWx1ZSk7Cj4+Pj4+ICsKPj4+Pj4gKyAg ICAgICAgICAgICBnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOwo+Pj4+ PiArICAgICB9Cj4+Pj4+ICt9Cj4+Pj4+ICsKPj4+Pj4gK3N0YXRpYyB2b2lkIGNoZWNrX3Npbmds ZV90aW1lbGluZShpbnQgaTkxNSwgdWludDMyX3QgY3R4LCBpbnQgbnVtX2VuZ2luZXMpCj4+Pj4+ ICt7Cj4+Pj4+ICsjZGVmaW5lIFJDU19USU1FU1RBTVAgKDB4MjAwMCArIDB4MzU4KQo+Pj4+PiAr ICAgICBjb25zdCBpbnQgZ2VuID0gaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoaTkxNSkp Owo+Pj4+PiArICAgICBjb25zdCBpbnQgaGFzXzY0Yml0X3JlbG9jID0gZ2VuID49IDg7Cj4+Pj4+ ICsgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIHJlc3VsdHMgPSB7IC5oYW5k bGUgPSBnZW1fY3JlYXRlKGk5MTUsIDQwOTYpIH07Cj4+Pj4+ICsgICAgIGNvbnN0IHVpbnQzMl90 IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4+Pj4+ICsgICAgIGludCB0aW1lbGluZSA9IHN3 X3N5bmNfdGltZWxpbmVfY3JlYXRlKCk7Cj4+Pj4+ICsgICAgIHVpbnQzMl90IGxhc3QsICptYXA7 Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgewo+Pj4+PiArICAgICAgICAgICAgIHN0cnVjdCBkcm1faTkx NV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZiA9IHsKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg IC5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmcmVzdWx0cyksCj4+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICAuYnVmZmVyX2NvdW50ID0gMSwKPj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgIC5yc3ZkMSA9IGN0eCwKPj4+Pj4gKyAgICAgICAgICAgICB9Owo+Pj4+PiArICAgICAgICAg ICAgIGdlbV93cml0ZShpOTE1LCByZXN1bHRzLmhhbmRsZSwgMCwgJmJiZSwgc2l6ZW9mKGJiZSkp Owo+Pj4+PiArICAgICAgICAgICAgIGdlbV9leGVjYnVmKGk5MTUsICZleGVjYnVmKTsKPj4+Pj4g KyAgICAgICAgICAgICByZXN1bHRzLmZsYWdzID0gRVhFQ19PQkpFQ1RfUElOTkVEOwo+Pj4+PiAr ICAgICB9Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fZW5naW5l czsgaSsrKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29i amVjdDIgb2JqWzJdID0gewo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cywgLyog d3JpdGUgaGF6YXJkIGxpZXMhICovCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICB7IC5oYW5k bGUgPSBnZW1fY3JlYXRlKGk5MTUsIDQwOTYpIH0sCj4+Pj4+ICsgICAgICAgICAgICAgfTsKPj4+ Pj4gKyAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWYg PSB7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAuYnVmZmVyc19wdHIgPSB0b191c2VyX3Bv aW50ZXIob2JqKSwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIC5idWZmZXJfY291bnQgPSAy LAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgLnJzdmQxID0gY3R4LAo+Pj4+PiArICAgICAg ICAgICAgICAgICAgICAgLnJzdmQyID0gc3dfc3luY190aW1lbGluZV9jcmVhdGVfZmVuY2UodGlt ZWxpbmUsIG51bV9lbmdpbmVzIC0gaSksCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAuZmxh Z3MgPSBpIHwgSTkxNV9FWEVDX0ZFTkNFX0lOLAo+Pj4+PiArICAgICAgICAgICAgIH07Cj4+Pj4+ ICsgICAgICAgICAgICAgdWludDY0X3Qgb2Zmc2V0ID0gcmVzdWx0cy5vZmZzZXQgKyA0ICogaTsK Pj4+Pj4gKyAgICAgICAgICAgICB1aW50MzJfdCAqY3M7Cj4+Pj4+ICsgICAgICAgICAgICAgaW50 IGogPSAwOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgICAgICAgY3MgPSBnZW1fbW1hcF9fY3B1KGk5 MTUsIG9ialsxXS5oYW5kbGUsIDAsIDQwOTYsIFBST1RfV1JJVEUpOwo+Pj4+PiArCj4+Pj4+ICsg ICAgICAgICAgICAgY3Nbal0gPSAweDI0IDw8IDIzIHwgMTsgLyogU1JNICovCj4+Pj4+ICsgICAg ICAgICAgICAgaWYgKGhhc182NGJpdF9yZWxvYykKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg IGNzW2pdKys7Cj4+Pj4+ICsgICAgICAgICAgICAgaisrOwo+Pj4+PiArICAgICAgICAgICAgIGNz W2orK10gPSBSQ1NfVElNRVNUQU1QOwo+Pj4+PiArICAgICAgICAgICAgIGNzW2orK10gPSBvZmZz ZXQ7Cj4+Pj4+ICsgICAgICAgICAgICAgaWYgKGhhc182NGJpdF9yZWxvYykKPj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgIGNzW2orK10gPSBvZmZzZXQgPj4gMzI7Cj4+Pj4+ICsgICAgICAgICAg ICAgY3NbaisrXSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAg ICAgICBtdW5tYXAoY3MsIDQwOTYpOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgICAgICAgZ2VtX2V4 ZWNidWYoaTkxNSwgJmV4ZWNidWYpOwo+Pj4+PiArICAgICAgICAgICAgIGdlbV9jbG9zZShpOTE1 LCBvYmpbMV0uaGFuZGxlKTsKPj4+Pj4gKyAgICAgICAgICAgICBjbG9zZShleGVjYnVmLnJzdmQy KTsKPj4+Pj4gKyAgICAgfQo+Pj4+PiArICAgICBjbG9zZSh0aW1lbGluZSk7Cj4+Pj4+ICsgICAg IGdlbV9zeW5jKGk5MTUsIHJlc3VsdHMuaGFuZGxlKTsKPj4+Pj4gKwo+Pj4+PiArICAgICBtYXAg PSBnZW1fbW1hcF9fY3B1KGk5MTUsIHJlc3VsdHMuaGFuZGxlLCAwLCA0MDk2LCBQUk9UX1JFQUQp Owo+Pj4+PiArICAgICBnZW1fc2V0X2RvbWFpbihpOTE1LCByZXN1bHRzLmhhbmRsZSwgSTkxNV9H RU1fRE9NQUlOX0NQVSwgMCk7Cj4+Pj4+ICsgICAgIGdlbV9jbG9zZShpOTE1LCByZXN1bHRzLmhh bmRsZSk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgbGFzdCA9IG1hcFswXTsKPj4+Pj4gKyAgICAgZm9y IChpbnQgaSA9IDE7IGkgPCBudW1fZW5naW5lczsgaSsrKSB7Cj4+Pj4+ICsgICAgICAgICAgICAg aWd0X2Fzc2VydF9mKChtYXBbaV0gLSBsYXN0KSA+IDAsCj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICJFbmdpbmUgaW5zdGFuY2UgWyVkXSBleGVjdXRlZCB0b28gZWFybHk6IHRoaXM6 JXgsIGxhc3Q6JXhcbiIsCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGksIG1hcFtp XSwgbGFzdCk7Cj4+Pj4+ICsgICAgICAgICAgICAgbGFzdCA9IG1hcFtpXTsKPj4+Pj4gKyAgICAg fQo+Pj4+Cj4+Pj4gSG0uLiBhcmVuJ3QgdHdvIHN3IGZlbmNlcyAodHdvIHNlcW5vcykganVzdCBh IG5lZWRsZXNzIGNvbXBsaWNhdGlvbiAtCj4+Pj4gc2luY2UgdGhlIGV4ZWN1dGlvbiBvcmRlciBp biB0aGUgc2luZ2xlIHRpbWVsaW5lIGlzIGNvbnRyb2xsZWQgYnkKPj4+PiBzdWJtaXNzaW9uIG9y ZGVyLiBUaGUgc3RhdGVtZW50IGlzIHRydWUgb25seSB3aGVuIGNvbXBvdW5kZWQgd2l0aCB0aGUK Pj4+PiBmYWN0IHRoYXQgeW91IHNpZ25hbCBib3RoIGZlbmNlcyBhdCB0aGUgc2FtZSB0aW1lLiBJ IGFtIHRoaW5raW5nIHRoYXQgaWYKPj4+PiBpdCB3YXNuJ3QgYSBzaW5nbGUgdGltZWxpbmUgY29u dGV4dCB3aGF0IHdvdWxkIGhhcHBlbi4gRmVuY2VzIHdvdWxkIGJlCj4+Pj4gc2lnbmFsZWQgaW4g b3JkZXIsIGJ1dCBleGVjdXRpb24gZG9lcyBub3QgaGF2ZSB0byBoYXBwZW4gaW4gb3JkZXIuIFRo YXQKPj4+PiBpdCBkb2VzIGlzIGEgcHJvcGVydHkgb2Ygc2luZ2xlIHRpbWVsaW5lIGFuZCBub3Qg ZmVuY2Ugb3JkZXJpbmcuIFNvIHR3bwo+Pj4+IGlucHV0IGZlbmNlcyB3aXRoIHR3byBzZXFub3Mg aXMgbWlzbGVhZGluZy4gU2luZ2xlIHBsdWcgd291bGQgZG8gSSB0aGluawo+Pj4KPj4+IEJ1dCB0 aGF0IHdvdWxkIG5vdCBkZXRlY3QgdGhlIGNhc2Ugd2hlbiBpdCB3YXMgbXVsdGlwbGUgdGltZWxp bmVzLi4uCj4+PiAgICAKPj4+PiBPciB5b3UgYXJlIHRoaW5raW5nIHRvIG51ZGdlIHRoZSBkcml2 ZXIgdG8gZG8gdGhlIHJpZ2h0IHRoaW5nPyBCdXQgaW4KPj4+PiB0aGF0IGNhc2UgSSB0aGluayB5 b3UnZCBuZWVkIHRvIG1hbnVhbGx5IGFkdmFuY2UgdGhlIGZpcnN0IHNlcW5vICgybmQKPj4+PiBi YXRjaCkgZmlyc3QgYW5kIHdhaXQgYSBiaXQgdG8gY2hlY2sgaXQgaGFzbid0IGJlZW4gZXhlY3V0 ZS4gVGhlbiBzaWduYWwKPj4+PiB0aGUgc2Vjb25kIHNlcW5vIChmaXJzdCBiYXRjaCkgYW5kIHJ1 biB0aGUgYWJvdmUgY2hlY2sgdG8gc2VlIHRoZXkgaGF2ZQo+Pj4+IGJlZW4gZXhlY3V0ZWQgaW4g b3JkZXIuCj4+Pgo+Pj4gVGhlIGNoYWxsZW5nZSBpcyB0aGF0IHdlIGRldGVjdCBpZiB0aGUgZHJp dmVyIHVzZXMgMiB0aW1lbGluZXMgaW5zdGVhZAo+Pj4gb2Ygb25lLiBTbyB0aGF0IGlzIHdoYXQg d2Ugc2V0dXAgdG8gZGV0ZWN0Lgo+Pgo+PiBXaXRoIGEgc2luZ2xlIHNlcW5vIGFkdmFuY2Ugd2hh dCBkZXRlcm1pbmVzIHRoZSBvcmRlciBvZiBzaWduYWwgZGVsaXZlcnkKPj4gb24gYmxvY2tlZCBm ZW5jZXM/IElzIGl0IGRlZmluZWQgaW4gdGhlIGRtYS1mZW5jZSBjb250cmFjdCBpdCBoYXBwZW5z IGluCj4+IG9yZGVyPyBJZiBpdCBpcywgdGhlbiBpcyBpdCBkZWZpbmVkIHRoYXQgd291bGQgbWFw IHRvIGluIG9yZGVyCj4+IHN1Ym1pc3Npb24gaW4gaTkxNSAoaWYgdGhlIGNvbnRleHRzL3RpbWVs aW5lcyB3ZXJlIHNlcGFyYXRlKT8gKE1pZ2h0IG5vdAo+PiBJIGFtIHRoaW5raW5nLCBzY2hlZHVs ZXIgY2FuIGRlY2lkZSB3aGF0ZXZlciBpdCB3YW50cy4pCj4gCj4gV2UgZG9uJ3QgZW1pdCBzaWdu YWxzIGluIG9yZGVyLiBNb3N0bHkgd2UgZG8sIGJ1dCBub3Qgc3RyaWN0bHkuCj4gICAKPj4gU28g SSBkb24ndCBzZWUgYSBwcm9ibGVtIHdpdGggYmVpbmcgbW9yZSBleHBsaWNpdCBpbiB0aGlzIHRl c3QgYW5kIGRvaW5nCj4+IGEgc3RlcCBieSBzdGVwIHRpbWVsaW5lIGFkdmFuY2Ugc28gaXQgaXMg Y29tcGxldGVseSB1bmRlciB0ZXN0J3MgY29udHJvbAo+PiB3aGF0J3MgaGFwcGVuaW5nLiBBbmQg aXQgd291bGQgQUZBSUNTIGRldGVjdCB0aGUgdHdvIHRpbWVsaW5lcyBiZWNhdXNlCj4+IGl0IHdv dWxkIGV4cGVjdCBmaXJzdCB0aW1lbGluZSBhZHZhbmNlIG11c3Qgbm90IHJlc3VsdCBpbiByZXF1 ZXN0IGV4ZWN1dGlvbi4KPiAKPiBJIGRvbid0IHNlZSB0aGUgcHJvYmxlbSB3aXRoIHRoZSB0ZXN0 LCBpdCBkb2VzIHdoYXQgSSBuZWVkIGl0IHRvLgoKTm93IG15IG1lbW9yeSBvbiBob3cgZXhhY3Rs eSB0aGlzIHRlc3Qgd29ya3MgaGFzIHNsaWdodGx5IGZhZGVkLgoKTGV0IG1lIHB1dCBpdCB0aGlz IHdheSAtIGlmIHlvdSBqdXN0IHJlbW92ZWQgdGhlIHNpbmdsZSB0aW1lbGluZSBmbGFnIApmb3Jt IHRoZSB0ZXN0IGFuZCBsZWZ0IHRoZSByZXN0IGFzIGlzIC0gd291bGQgaXQgMTAwJSByZWxpYWJs eSBmYWlsPyBJZiAKaXQgd291bGQgcGFzcyAxMDAlLCB0aGVuIGlzIGl0IGJlY2F1c2Ugb2YgdW5k ZWZpbmVkIGltcGxlbWVudGF0aW9uIApkZXRhaWxzIHJhdGhlciB0aGFuIHRoZSBBQkkgY29udHJh Y3Q/CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0 LWRldg==