From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1CDBE89129 for ; Tue, 11 Jun 2019 01:56:29 +0000 (UTC) Message-ID: <122dc66ae2b736479fc6f39d93d3578c4d39687b.camel@intel.com> From: Carlos Santa Date: Mon, 10 Jun 2019 18:55:10 -0700 In-Reply-To: <155912059960.13891.10910226313540523152@skylake-alporthouse-com> References: <20190528213600.61118-1-carlos.santa@intel.com> <155912059960.13891.10910226313540523152@skylake-alporthouse-com> Mime-Version: 1.0 Subject: Re: [igt-dev] [RFC v5] tests/gem_watchdog: Initial set of tests for GPU watchdog List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Chris Wilson , igt-dev@lists.freedesktop.org Cc: Ursulin Tvrtko List-ID: T24gV2VkLCAyMDE5LTA1LTI5IGF0IDEwOjAzICswMTAwLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4g UXVvdGluZyBDYXJsb3MgU2FudGEgKDIwMTktMDUtMjggMjI6MzU6NTkpCj4gPiBUaGlzIHRlc3Qg YWRkcyBiYXNpYyBzZXQgb2YgdGVzdHMgdG8gcmVzZXQgdGhlIGRpZmZlcmVudAo+ID4gR1BVIGVu Z2luZXMgdGhyb3VnaCB0aGUgZ3B1IHdhdGNoZG9nIHRpbWVyLgo+ID4gCj4gPiBDcmVkaXRzIHRv IEFudG9uaW8gZm9yIHRoZSBvcmlnaW5hbCBjb2RlYmFzZSB0aGlzIGlzIGJhc2VkIG9uLgo+ID4g Cj4gPiB2MjogcmVtb3ZlIGdlbV9jb250ZXh0X2dldF9wYXJhbSgpIGR1cmluZyBzZXQgKEFudG9u aW8pCj4gPiAgICAgcmVtb3ZlIGNsZWFyaW5nIG9mIHRoZSBlbmdpbmVzX3RocmVzaG9sZFtdIGlu IHRoZSBkZWZhdWx0IGNhc2UKPiA+ICAgICBpbnNpZGUgY29udGV4dF9zZXRfd2F0Y2hkb2coKS4g KEFudG9uaW8pCj4gPiAgICAgZml4IGluZGV4aW5nIHdoZW4gY3JlYXRpbmcgbG93L2hpZ2ggcHJp b3JpdHkgY29udGV4dHMKPiA+ICAgICBnZXQgcmlkIG9mIDIgdGhyZWFkcyBpZGVhIChBbnRvbmlv KQo+ID4gICAgIGZpeCBjb250ZXh0IHByaW8gYnVnIGR1ZSB0byB3cm9uZyBpbmRleGluZyAoQW50 b25pbykKPiA+IHYzOiBubyBuZWVkIHRvIGZvcmNlIGNsZWFyIGRybV9pOTE1X2dlbV93YXRjaGRv Z190aW1lb3V0IHN0cnVjdAo+ID4gICAgIHdoZW4gc2V0dGluZyB0aGUgd2F0Y2hkb2cgdGltZW91 dHMgKEFudG9uaW8pCj4gPiAgICAgLXVzZSBnZW1fY29udGV4dF9zZXRfcHJpb3JpdHkoKSBpbnN0 ZWFkIHRvIHVzZSBlcnJvciBjaGVja2luZwo+ID4gICAgIC1hbHdheXMgdXNlIGEgbG9vcGVyIHRv IHRlc3QgYWxsIGVuZ2luZXMgKEFudG9uaW8pCj4gPiAgICAgLW1vZGlmeSB0ZXN0IGdwdV93YXRj aG9kZ19oYW5nX2xvbmdfYmF0Y2hfc2luZ2xlX2VuZ2luZSgpCj4gPiAgICAgdG8gdXNlIGEgY291 cGxlIG9mIGJhdGNoZXMgYW5kIHNldCB0aGUgdGltZW91dCBpbiBiZXR3ZWVuIHRoZW0KPiA+IChB bnRvbmlvKQo+ID4gICAgIC1tYWtlIHVzZSBvZiBmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFu Y2UoKSAoQW50b25pbykKPiA+IHY0OiAtdGVzdHMgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIHMv dyB3YXRjaGRvZyB0aW1lb3V0IChUdnJ0a28pCj4gPiAgICAgLXJlbW92ZSBkZWFkIGNvZGUgaW5z aWRlIGJhdGNoX2J1ZmZlciBmYWN0b3J5IChUdnJ0a28pCj4gPiAgICAgLXNldF93YXRjaGRvZygp IHNob3VsZCByZXR1cm4gRU5PREVWIGZvciBmYWlsIGNhc2VzIChUdnJ0a28pCj4gPiAgICAgLWVu Y2xvc2UgbmFtZSwgcHJpb3JpdHkgYW5kIHJlc2V0IHBhcmFtcyBpbnNpZGUgYXJyYXkgKFR2cnRr bykKPiA+IHY1OiAtUmViYXNlZC4gVGVzdHMgNSw2IGFuZCA4IGZyb20gdGhlIHRlc3QgcGxhbiBh cmUgbm93IGFkZGVkCj4gPiAKPiA+IFRlc3QgUGxhbjoKPiA+IAo+ID4gQXNzdW1wdGlvbnM6Cj4g PiAxLiBVc2UgZmVuY2Ugc3RhdHVzIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY3R4IHdhcyByZXNldAo+ ID4gMi4gVXNlIHNwaW4gYmF0Y2hlcyB3LyB1c2VyIHNwYWNlIHRpbWVycyB0byBjb250cm9sIGR1 cmF0aW9uCj4gPiBhbmQgY29ya2luZyB0byBjb250cm9sIG9yZGVyaW5nCj4gPiAzLiBVc2UgY29u dGV4dCBwcmlvcml0aWVzIHRvIGZvcmNlIHByZWVtcHRpb24KPiA+IAo+ID4gVGVzdHM6Cj4gPiAx LiBjdHgxLCBsb25nX2JhdGNoIC0+IGV4ZWN1dGUKPiA+IDIuIGN0eDEsIHNldF93YXRjaGRvZyAt PiByZXNldAo+ID4gMy4gY3R4Mi9jdHgxIC0+IGV4ZWN1dGUsIHJlc2V0Cj4gPiA0LiBjdHgxL2N0 eDIgLT4gcmVzZXQsIGV4ZWN1dGUKPiA+IDUuIGN0eDFfanVzdF9iZWxvd190aHJlc2hvbGQgLT4g ZXhlY3V0ZQo+ID4gNi4gY3R4X292ZXJfdGhlX3RocmVzaG9sZCAtPiByZXNldAo+ID4gNy4gc2V0 IHdhdGNoZG9nIG9uIHNvbWUgZW5naW5lcyAtPiBleGVjdXRlCj4gPiA4LiBzdWJtaXQgbG9uZ19i YXRjaCBhbmQgYWZ0ZXIgaGFsZiBvZiB0aGUKPiA+IGV4cGVjdGVkIHJ1bnRpbWUgc3VibWl0IGhp Z2hlciBwcmlvIGJhdGNoCj4gPiA5LiBzdWJtaXQgbG93IHByaW8gYmF0Y2ggdy9vIHdhdGNoZG9n IHRoZW4KPiA+IGhpZ2hlciBwcmlvIHdpdGggd2F0Y2hkb2cKPiA+IAo+ID4gVW5zcmVzb2x2ZWQg aXRlbXM6Cj4gPiAxLiBUaGUgY2hlY2sgZm9yIHN5bmNfZmVuY2Vfc3RhdHVzKCpmZW5jZSkKPiA+ IHJldHVybnMgLTEgaW5zdGVhZCBvZiBFSU8uCj4gPiAKPiA+IENjOiBVcnN1bGluIFR2cnRrbyA8 dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+ID4gQ2M6IEFudG9uaW8gQXJnZW56aWFubyA8YW50 b25pby5hcmdlbnppYW5vQGludGVsLmNvbT4KPiA+IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KPiA+IFNpZ25lZC1vZmYtYnk6IENhcmxvcyBTYW50YSA8Y2FybG9z LnNhbnRhQGludGVsLmNvbT4KPiA+IC0tLQo+ID4gIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgICAg fCAgIDMgKwo+ID4gIHRlc3RzL2k5MTUvZ2VtX3dhdGNoZG9nLmMgfCA0OTAKPiA+ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgdGVzdHMvbWVzb24uYnVpbGQgICAg ICAgICB8ICAgMSArCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCA0OTQgaW5zZXJ0aW9ucygrKQo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV93YXRjaGRvZy5jCj4gPiAKPiA+IGRp ZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNl cwo+ID4gaW5kZXggMmQ1YzkyOWUzMmZjLi42NWI4NjhlN2Q5MjcgMTAwNjQ0Cj4gPiAtLS0gYS90 ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gPiArKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4g PiBAQCAtNDQ2LDYgKzQ0Niw5IEBAIGdlbV91c2VycHRyX2JsaXRzX1NPVVJDRVMgPQo+ID4gaTkx NS9nZW1fdXNlcnB0cl9ibGl0cy5jCj4gPiAgVEVTVFNfcHJvZ3MgKz0gZ2VtX3dhaXQKPiA+ICBn ZW1fd2FpdF9TT1VSQ0VTID0gaTkxNS9nZW1fd2FpdC5jCj4gPiAgCj4gPiArVEVTVFNfcHJvZ3Mg Kz0gZ2VtX3dhdGNoZG9nCj4gPiArZ2VtX3dhdGNoZG9nX1NPVVJDRVMgPSBpOTE1L2dlbV93YXRj aGRvZy5jCj4gPiArCj4gPiAgVEVTVFNfcHJvZ3MgKz0gZ2VtX3dvcmthcm91bmRzCj4gPiAgZ2Vt X3dvcmthcm91bmRzX1NPVVJDRVMgPSBpOTE1L2dlbV93b3JrYXJvdW5kcy5jCj4gPiAgCj4gPiBk aWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fd2F0Y2hkb2cuYyBiL3Rlc3RzL2k5MTUvZ2VtX3dh dGNoZG9nLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAu LmU5Y2RiODg2ZDNkNgo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvdGVzdHMvaTkxNS9nZW1f d2F0Y2hkb2cuYwo+ID4gQEAgLTAsMCArMSw0OTAgQEAKPiA+ICsvKgo+ID4gKyAqIENvcHlyaWdo dCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gPiArICoKPiA+ICsgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbgo+ID4gb2J0YWlu aW5nIGEKPiA+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlCj4gPiAiU29mdHdhcmUiKSwKPiA+ICsgKiB0byBkZWFsIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dAo+ID4gbGlt aXRhdGlvbgo+ID4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLAo+ID4gc3VibGljZW5zZSwKPiA+ICsgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8KPiA+IHdob20g dGhlCj4gPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcKPiA+IGNvbmRpdGlvbnM6Cj4gPiArICoKPiA+ICsgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZQo+ID4gKGluY2x1ZGluZyB0 aGUgbmV4dAo+ID4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbAo+ID4gcG9ydGlvbnMgb2YgdGhlCj4gPiArICogU29mdHdhcmUuCj4g PiArICoKPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwKPiA+IEVYUFJFU1MgT1IKPiA+ICsgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4gPiBNRVJDSEFOVEFC SUxJVFksCj4gPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PCj4gPiBFVkVOVCBTSEFMTAo+ID4gKyAqIFRIRSBBVVRIT1JTIE9S IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAo+ID4gREFNQUdFUyBP UiBPVEhFUgo+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+ID4gQVJJU0lORwo+ID4gKyAqIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKPiA+IE9USEVS IERFQUxJTkdTCj4gPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ID4gKyAqLwo+ID4gKyNpbmNsdWRl ICJpZ3QuaCIKPiA+ICsjaW5jbHVkZSAiaWd0X3N5c2ZzLmgiCj4gPiArI2luY2x1ZGUgInN3X3N5 bmMuaCIKPiA+ICsKPiA+ICsjaW5jbHVkZSA8cHRocmVhZC5oPgo+ID4gKyNpbmNsdWRlIDxmY250 bC5oPgo+ID4gKwo+ID4gKyNpbmNsdWRlIDxzeXMvdGltZS5oPgo+ID4gKyNpbmNsdWRlIDxzeXMv aW9jdGwuaD4KPiA+ICsjaW5jbHVkZSA8c3lzL3BvbGwuaD4KPiA+ICsjaW5jbHVkZSA8c3lzL3Np Z25hbC5oPgo+ID4gKyNpbmNsdWRlICJpOTE1L2dlbV9yaW5nLmgiCj4gPiArCj4gPiArI2RlZmlu ZSBMT0NBTF9JOTE1X0VYRUNfQlNEX1NISUZUICAgICAgKDEzKQo+ID4gKyNkZWZpbmUgTE9DQUxf STkxNV9FWEVDX0JTRF9SSU5HMSAgICAgICgxIDw8Cj4gPiBMT0NBTF9JOTE1X0VYRUNfQlNEX1NI SUZUKQo+ID4gKyNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9SSU5HMiAgICAgICgyIDw8Cj4g PiBMT0NBTF9JOTE1X0VYRUNfQlNEX1NISUZUKQo+ID4gKwo+ID4gKyNkZWZpbmUgTUFYX1BSSU8g TE9DQUxfSTkxNV9DT05URVhUX01BWF9VU0VSX1BSSU9SSVRZCj4gPiArI2RlZmluZSBERUZBVUxU X1BSSU8gTE9DQUxfSTkxNV9DT05URVhUX0RFRkFVTFRfUFJJT1JJVFkKPiA+ICsjZGVmaW5lIE1J Tl9QUklPIExPQ0FMX0k5MTVfQ09OVEVYVF9NSU5fVVNFUl9QUklPUklUWQo+ID4gKyNkZWZpbmUg SElHSCAxCj4gPiArI2RlZmluZSBMT1cgMAo+ID4gKyNkZWZpbmUgV0FUQ0hET0dfT1ZFUl9USFJF U0hPTEQgKDIwNzAwMDApCj4gPiArI2RlZmluZSBXQVRDSERPR19CRUxPV19USFJFU0hPTEQgKDEy MDAwMDApCj4gPiArI2RlZmluZSBXQVRDSERPR19USFJFU0hPTEQgKDEyMDApCj4gPiArI2RlZmlu ZSBNQVhfRU5HSU5FUyA1Cj4gPiArI2RlZmluZSBSRU5ERVJfQ0xBU1MgMAo+ID4gKyNkZWZpbmUg VklERU9fREVDT0RFX0NMQVNTIDEKPiA+ICsjZGVmaW5lIFZJREVPX0VOSEFOQ0VNRU5UX0NMQVNT IDIKPiA+ICsjZGVmaW5lIENPUFlfRU5HSU5FX0NMQVNTIDMKPiA+ICsjZGVmaW5lIExPQ0FMX0k5 MTVfQ09OVEVYVF9QQVJBTV9XQVRDSERPRyAweDEwCj4gPiArCj4gPiArI2RlZmluZSBHRVRfUkVT RVRfU1RBVFNfSU9DVEwgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIDB4MzIsCj4gPiBzdHJ1 Y3QgbG9jYWxfZHJtX2k5MTVfcmVzZXRfc3RhdHMpCj4gPiArc3RydWN0IGxvY2FsX2RybV9pOTE1 X3Jlc2V0X3N0YXRzIHsKPiA+ICsgICAgICAgX191MzIgY3R4X2lkOwo+ID4gKyAgICAgICBfX3Uz MiBmbGFnczsKPiA+ICsgICAgICAgX191MzIgcmVzZXRfY291bnQ7Cj4gPiArICAgICAgIF9fdTMy IGJhdGNoX2FjdGl2ZTsKPiA+ICsgICAgICAgX191MzIgYmF0Y2hfcGVuZGluZzsKPiA+ICsgICAg ICAgX191MzIgcGFkOwo+ID4gK307Cj4gPiArCj4gPiArY29uc3QgdWludDY0X3QgdGltZW91dF8x MDBtcyA9IDEwMDAwMDAwMExMOwo+ID4gK2Zsb2F0IHRpbWVkaWZmZXJlbmNlX21zZWMoc3RydWN0 IHRpbWV2YWwgdDAsIHN0cnVjdCB0aW1ldmFsIHQxKTsKPiA+ICsKPiA+ICtzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3dhdGNoZG9nX3RpbWVvdXQgewo+ID4gKyAgICAgICB1bmlvbiB7Cj4gPiArICAgICAg ICAgICAgICAgc3RydWN0IHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgKiBFbmdpbmUgY2xhc3MgJiBpbnN0YW5jZSB0byBiZSBjb25m aWd1cmVkCj4gPiBvciBxdWVyaWVkLgo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICovCj4g PiArICAgICAgICAgICAgICAgICAgICAgICBfX3UxNiBlbmdpbmVfY2xhc3M7Cj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBfX3UxNiBlbmdpbmVfaW5zdGFuY2U7Cj4gPiArICAgICAgICAgICAg ICAgfTsKPiA+ICsgICAgICAgICAgICAgICAvKiBJbmRleCBiYXNlZCBhZGRyZXNzaW5nIG1vZGUg Ki8KPiA+ICsgICAgICAgICAgICAgICBfX3UzMiBpbmRleDsKPiA+ICsgICAgICAgfTsKPiA+ICsg ICAgICAgLyogR1BVIEVuZ2luZSB3YXRjaGRvZyByZXNldHMgdGltZW91dCBpbiB1cyAqLwo+ID4g KyAgICAgICBfX3UzMiB0aW1lb3V0X3VzOwo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIHZvaWQg Y2xlYXJfZXJyb3Jfc3RhdGUoaW50IGZkKQo+ID4gK3sKPiA+ICsgICAgICAgaW50IGRpcjsKPiA+ ICsKPiA+ICsgICAgICAgZGlyID0gaWd0X3N5c2ZzX29wZW4oZmQpOwo+ID4gKwo+ID4gKyAgICAg ICBpZiAoZGlyIDwgMCkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gPiArCj4gPiArICAg ICAgIC8qIEFueSB3cml0ZSB0byB0aGUgZXJyb3Igc3RhdGUgY2xlYXJzIGl0ICovCj4gPiArICAg ICAgIGlndF9zeXNmc19zZXQoZGlyLCAiZXJyb3IiLCAiIik7Cj4gPiArICAgICAgIGNsb3NlKGRp cik7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgY29udGV4dF9zZXRfd2F0Y2hkb2coaW50 IGZkLCB1bnNpZ25lZCBlbmdpbmVfaWQsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICplbmdpbmVfbmFtZSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBjdHhfaWQsIHVuc2lnbmVkCj4gPiB0aHJlc2hvbGQpCj4gPiAr ewo+ID4gKyAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3dhdGNoZG9nX3RpbWVvdXQKPiA+IGVu Z2luZXNfdGhyZXNob2xkW01BWF9FTkdJTkVTXTsKPiA+ICsgICAgICAgc3RydWN0IGRybV9pOTE1 X2dlbV9jb250ZXh0X3BhcmFtIGFyZyA9IHsKPiA+ICsgICAgICAgICAgICAgICAucGFyYW0gPSBM T0NBTF9JOTE1X0NPTlRFWFRfUEFSQU1fV0FUQ0hET0csCj4gPiArICAgICAgICAgICAgICAgLmN0 eF9pZCA9IGN0eF9pZCwKPiA+ICsgICAgICAgICAgICAgICAuc2l6ZSA9IHNpemVvZihlbmdpbmVz X3RocmVzaG9sZCksCj4gCj4gV29uJ3QgdGhlIGtlcm5lbCBjb21wbGFpbiBhYm91dCB0aGUgaW52 YWxpZCB2YWx1ZXM/Cj4gCj4gPiArICAgICAgICAgICAgICAgLnZhbHVlID0gKHVpbnQ2NF90KSZl bmdpbmVzX3RocmVzaG9sZAo+ID4gKyAgICAgICB9Owo+ID4gKwo+ID4gKyAgICAgICBtZW1zZXQo JmVuZ2luZXNfdGhyZXNob2xkLCAwLCBzaXplb2YoZW5naW5lc190aHJlc2hvbGQpKTsKPiAKPiBZ b3Ugc2V0IGFsbCB0aGUgdW5zcGVjaWZpZWQgdmFsdWVzIHRvIGJlIHJjczAgd2l0aCAwIHRpbWVv dXQuCj4gCj4gPiArCj4gPiArICAgICAgIHN3aXRjaCAoZW5naW5lX2lkICYgSTkxNV9FWEVDX1JJ TkdfTUFTSykgewo+ID4gKyAgICAgICBjYXNlIEk5MTVfRVhFQ19SRU5ERVI6Cj4gPiArICAgICAg ICAgICAgICAgZW5naW5lc190aHJlc2hvbGRbMF0udGltZW91dF91cyA9IHRocmVzaG9sZDsKPiAK PiBJIHByZXN1bWUgdGhpcyBpcyBhIHU2NCwgc28gbWlnaHQgYXMgd2VsbCB1c2UgX25zIGZvciBj b25zaXN0ZW5jeS4KPiAKPiA+ICsgICAgICAgICAgICAgICBlbmdpbmVzX3RocmVzaG9sZFswXS5l bmdpbmVfY2xhc3MgPSBSRU5ERVJfQ0xBU1M7Cj4gPiArICAgICAgICAgICAgICAgZW5naW5lc190 aHJlc2hvbGRbMF0uZW5naW5lX2luc3RhbmNlID0gMDsKPiAKPiBVc2Ugc3RydWN0IGk5MTVfZW5n aW5lX2NsYXNzX2luc3RhbmNlLgo+IAo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gKyAg ICAgICBjYXNlIEk5MTVfRVhFQ19CTFQ6Cj4gPiArICAgICAgICAgICAgICAgaWYgKF9fZ2VtX2Nv bnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKSA9PSAtRU5PREVWKQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4gCj4gQW5kIG90aGVyd2lzZSBzZXR0aW5nIHJhbmRv bSB2YWx1ZXMgaW50byBlbmdpbmVfdGhyZXNob2xkcy4KPiAKPiA+ICsgICAgICAgICAgICAgICBl bHNlCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVzX3RocmVzaG9sZFszXS50aW1l b3V0X3VzID0KPiA+IHRocmVzaG9sZDsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGVuZ2lu ZXNfdGhyZXNob2xkWzNdLmVuZ2luZV9jbGFzcyA9Cj4gPiBDT1BZX0VOR0lORV9DTEFTUzsKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZXNfdGhyZXNob2xkWzNdLmVuZ2luZV9pbnN0 YW5jZSA9IDA7Cj4gPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiArICAgICAgIGNhc2UgSTkx NV9FWEVDX0JTRDoKPiA+ICsgICAgICAgICAgICAgICBlbmdpbmVzX3RocmVzaG9sZFsxXS50aW1l b3V0X3VzID0gdGhyZXNob2xkOwo+ID4gKyAgICAgICAgICAgICAgIGVuZ2luZXNfdGhyZXNob2xk WzFdLmVuZ2luZV9jbGFzcyA9Cj4gPiBWSURFT19ERUNPREVfQ0xBU1M7Cj4gPiArICAgICAgICAg ICAgICAgZW5naW5lc190aHJlc2hvbGRbMV0uZW5naW5lX2luc3RhbmNlID0gMDsKPiA+ICsgICAg ICAgICAgICAgICBicmVhazsKPiA+ICsgICAgICAgY2FzZSBJOTE1X0VYRUNfVkVCT1g6Cj4gPiAr ICAgICAgICAgICAgICAgZW5naW5lc190aHJlc2hvbGRbMl0udGltZW91dF91cyA9IHRocmVzaG9s ZDsKPiA+ICsgICAgICAgICAgICAgICBlbmdpbmVzX3RocmVzaG9sZFsyXS5lbmdpbmVfY2xhc3Mg PQo+ID4gVklERU9fRU5IQU5DRU1FTlRfQ0xBU1M7Cj4gPiArICAgICAgICAgICAgICAgZW5naW5l c190aHJlc2hvbGRbMl0uZW5naW5lX2luc3RhbmNlID0gMDsKPiA+ICsgICAgICAgICAgICAgICBi cmVhazsKPiA+ICsgICAgICAgZGVmYXVsdDoKPiA+ICsgICAgICAgICAgICAgICBicmVhazsKPiA+ ICsgICAgICAgfQo+IAo+IE9rLCBzbyB5b3Ugb25seSBzZXQgb25lIGVuZ2luZSBhbmQgdGhlIHJl c3QgdG8gemVyby4gVGhhdCBzZWVtcyBsaWtlCj4gYQo+IGJhZCBleGFtcGxlIGluIGhvdyB0byB1 c2UgdGhlIHVBUEkuCj4gCj4gPiArICAgICAgIGdlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFy Zyk7Cj4gPiArCj4gPiArICAgICAgIHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMg dm9pZCBiYXRjaF9idWZmZXJfZmFjdG9yeSh1aW50MzJfdCBmZCwgdWludDMyX3QgY3R4X2lkLAo+ ID4gdW5zaWduZWQgZXhlY19pZCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qgb2Zmc2V0LAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgKmhhbmRsZSwgdWludDY0X3QKPiA+IHRpbWVvdXQsCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmZlbmNlLCBpbnQgZmVuY2Vf aW5kZXgpCj4gPiArewo+ID4gKyAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBv YmpbMl07Cj4gPiArICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxv YzsKPiA+ICsgICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOwo+ID4g KyAgICBpZ3Rfc3Bpbl90ICpzcGluID0gTlVMTDsKPiA+ICsgICAgY29uc3QgdWludDMyX3QgYmJl ID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKPiA+ICsgICAgaW50IGkgPSAwOwo+ID4gKwo+ID4gKyAg ICBnZW1fcXVpZXNjZW50X2dwdShmZCk7Cj4gPiArCj4gPiArICAgIG1lbXNldCgmZXhlY2J1Ziwg MCwgc2l6ZW9mKGV4ZWNidWYpKTsKPiA+ICsgICAgbWVtc2V0KCZvYmosIDAsIHNpemVvZihvYmop KTsKPiA+ICsgICAgbWVtc2V0KCZyZWxvYywgMCwgc2l6ZW9mKHJlbG9jKSk7Cj4gPiArCj4gPiAr ICAgIGV4ZWNidWYuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIob2JqKTsKPiA+ICsKPiA+ ICsgICAgZXhlY2J1Zi5idWZmZXJfY291bnQgPSAyOwo+ID4gKyAgICBleGVjYnVmLmZsYWdzID0g ZXhlY19pZCB8IEk5MTVfRVhFQ19GRU5DRV9PVVQgOwo+ID4gKwo+ID4gKyAgICBvYmpbMF0uaGFu ZGxlID0gdGFyZ2V0Owo+ID4gKyAgICBvYmpbMV0uaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5 Nik7Cj4gPiArCj4gPiArICAgIG9ialsxXS5yZWxvY2F0aW9uX2NvdW50ID0gMTsKPiA+ICsgICAg b2JqWzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlbG9jKTsKPiA+ICsKPiA+ICsg ICAgcmVsb2MudGFyZ2V0X2hhbmRsZSA9IG9ialswXS5oYW5kbGU7Cj4gPiArICAgIHJlbG9jLnJl YWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DT01NQU5EOwo+ID4gKyAgICByZWxvYy53cml0 ZV9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5fQ09NTUFORDsKPiA+ICsgICAgcmVsb2MuZGVsdGEg PSBvZmZzZXQgKiBzaXplb2YodWludDMyX3QpOwo+ID4gKwo+ID4gKyAgICByZWxvYy5vZmZzZXQg PSBpICogc2l6ZW9mKHVpbnQzMl90KTsKPiA+ICsgICAgZ2VtX3dyaXRlKGZkLCBvYmpbMV0uaGFu ZGxlLCAwLCAmYmJlLCBzaXplb2YoYmJlKSk7Cj4gPiArCj4gPiArICAgIF9fc3luY19zeW5jaHJv bml6ZSgpOwo+IAo+IFdoYXQ/Cj4gCj4gPiArCj4gPiArICAgIGdlbV9zeW5jKGZkLCBvYmpbMV0u aGFuZGxlKTsKPiA+ICsgICAgZXhlY2J1Zi5yc3ZkMSA9IGN0eF9pZDsKPiA+ICsgICAgZXhlY2J1 Zi5yc3ZkMiA9IC0xOwo+ID4gKwo+ID4gKyAgICBzcGluID0gaWd0X3NwaW5fbmV3KGZkLCAuZGVw ZW5kZW5jeSA9IG9ialswXS5oYW5kbGUpOwo+ID4gKyAgICBpZ3Rfc3Bpbl9zZXRfdGltZW91dChz cGluLCB0aW1lb3V0KTsKPiA+ICsgICAgaWd0X2Fzc2VydChnZW1fYm9fYnVzeShmZCwgb2JqWzBd LmhhbmRsZSkpOwo+ID4gKwo+ID4gKyAgICBnZW1fZXhlY2J1Zl93cihmZCwgJmV4ZWNidWYpOwo+ ID4gKyAgICBpZ3Rfc3Bpbl9mcmVlKGZkLCBzcGluKTsKPiAKPiBUaGlzIHN0aWxsIGRvZXNuJ3Qg ZG8gd2hhdCB5b3UgdGhpbmsgaXQgZG9lcy4gSGludCwgdGhpcyBuZXZlciBydW5zCj4gdG8KPiB0 aW1lb3V0Lgo+IAo+ID4gKyAgICBmZW5jZVtmZW5jZV9pbmRleF0gPSBleGVjYnVmLnJzdmQyID4+ IDMyOwo+IAo+IFlvdSBjYW4ganVzdCBhc2sgdGhlIHNwaW5uZXIgdG8gcmV0dXJuIGEgZmVuY2Uu Cj4gc3BpbiA9IGlndF9zcGluX25ldyhmZCwgLmVuZ2luZSA9ZW5naW5lLCAuZmxhZ3MgPQo+IElH VF9TUElOX0ZFTkNFX09VVCk7Cj4gdGhlbiBmZW5jZSA9IHNwaW4tPm91dF9mZW5jZS4KCkhpIENo cmlzLAoKQ2FuIHlvdSBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGFib3ZlIGEgbGl0dGxlIGJpdCBt b3JlPwoKVGhlIHNwaW5uZXIgbG9va3MgbGlrZSB0aGlzIG5vdzoKCiAgICBzcGluID0gaWd0X3Nw aW5fbmV3KGZkLAoJCQkuZGVwZW5kZW5jeSA9IG9ialswXS5oYW5kbGUsCgkJCS5lbmdpbmUgPSBl eGVjX2lkLAoJCQkuZmxhZ3MgPSBJR1RfU1BJTl9GRU5DRV9PVVQpOwogICAgaWd0X2Fzc2VydChz cGluLT5vdXRfZmVuY2UgIT0gLTEpOwogICAgaWd0X3NwaW5fc2V0X3RpbWVvdXQoc3BpbiwgdGlt ZW91dCk7CiAgICBpZ3RfYXNzZXJ0KGdlbV9ib19idXN5KGZkLCBvYmpbMF0uaGFuZGxlKSk7CgpB bmQgdGhlbiBJIHN0b3JlIHRoZSBmZW5jZSBhczoKCmZlbmNlW2ZlbmNlX2luZGV4XSA9IHNwaW4t Pm91dF9mZW5jZTsKCklmIGF0IHRoaXMgcG9pbnQgKGNyZWF0aW9uIG9mIHRoZSBiYXRjaF9idWZm ZXIgd29yaykgSSBjaGVjayBmb3IgdGhlCmZlbmNlIGFuZCB0aGUgc3RhdHVzIG9mIGl0IHRoZW4g SSBnZXQgZmVuY2U6IDUgYW5kIHN0YXR1czogMAoKcHJpbnRmKCJmZW5jZTogJWQgc3RhdHVzOiAl ZCBcbiIsc3Bpbi0KPm91dF9mZW5jZSxzeW5jX2ZlbmNlX3N0YXR1cyhzcGluLT5vdXRfZmVuY2Up KTsKClRoZSAwIEkgdGhpbmsgcmVmZXJzIHRvIHRoaXMgZmVuY2Ugc3RpbGwgYmVpbmcgYWN0aXZl LCB3aGljaCBJIHRoaW5rIGlzCmNvcnJlY3QuCgpIb3dldmVyLCBhZnRlciBJIGZvcmNlIHJlc2V0 IHRoZSBlbmdpbmVzIChzb21lIGRlbHRhIHRpbWUgYWZ0ZXIpCnRocm91Z2ggd2F0Y2hkb2cgdGhl biBJIGdldCBhIC05IGZvciB0aGUgc3RhdHVzIG9mIHRoZSBmZW5jZSwKCldoeSBhbSBJIG5vdCBn ZXR0aW5nIGEgLTUgb3IgLUVJTyBhZnRlciB0aGUgcmVzZXQ/CgpDYXJsb3MgCgo+IAo+ID4gKyAg ICBnZW1fY2xvc2UoZmQsIG9ialsxXS5oYW5kbGUpOwo+ID4gKyAgICBnZW1fcXVpZXNjZW50X2dw dShmZCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGluamVjdF9oYW5nKHVpbnQzMl90 IGZkLCB1bnNpZ25lZCBlbmdpbmVfaWQsIHVpbnQzMl90Cj4gPiBjdHhfaWQsCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZmxhZ3MpCj4gPiArewo+ID4gKyAgICAgICBpZ3Rf aGFuZ190IGhhbmc7Cj4gPiArICAgICAgIGhhbmcgPSBpZ3RfaGFuZ19jdHgoZmQsIGN0eF9pZCwg ZW5naW5lX2lkLCBmbGFncyk7Cj4gPiArICAgICAgIGdlbV9zeW5jKGZkLCBoYW5nLnNwaW4tPmhh bmRsZSk7Cj4gPiArfQo+ID4gKwo+ID4gKy8qIFRlc3QjMTogY3JlYXRlIHNvbWUgd29yayBhbmQg bGV0IGl0IHJ1biBvbiBhbGwgZW5naW5lcyAqLwo+ID4gK3N0YXRpYyB2b2lkIGxvbmdfYmF0Y2hf dGVzdDEoaW50IGZkLCBpbnQgcHJpbzEsIGludCBwcmlvMiwgaW50Cj4gPiByZXNldF9jdHgxLAo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc2V0X2N0eDIsIHVuc2lnbmVkIHRocmVz aG9sZCkKPiA+ICt7Cj4gPiArICAgICAgIHVuc2lnbmVkIGVuZ2luZV9pZCA9IDA7Cj4gPiArICAg ICAgIHVuc2lnbmVkIG5lbmdpbmUgPSAwOwo+ID4gKyAgICAgICBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZTIgKmVfOwo+ID4gKyAgICAgICB1aW50MzJfdCBjdHhbOF07Cj4gPiArICAgICAg IHVpbnQzMl90IHNjcmF0Y2hbOF07Cj4gPiArICAgICAgIHVpbnQzMl90IGN0eDJbOF07Cj4gPiAr ICAgICAgIHVpbnQzMl90IHNjcmF0Y2gyWzhdOwo+IAo+IEEgc3RydWN0IG1pZ2h0IHNwZWxsIGl0 IG91dCBhIGxpdHRsZSBtb3JlIGNvbmNpc2VseS4KPiAKPiBBbmQgOCEgVGhhdCdzIGN1dHRpbmcg aXQgYSBsaXR0bGUgZmluZS4gTUFYX0VOR0lORVMgaXMgNjQgYW5kIHdlIGFyZQo+IGFscmVhZHkg ZHJlYWRpbmcgdGhlIGRheSB3ZSBleGNlZWQgdGhhdC4KPiAKPiA+ICsgICAgICAgaW50ICpmZW5j ZSwgaSA9IDA7Cj4gPiArICAgICAgIGNvbnN0IHVpbnQ2NF90IGJhdGNoX3RpbWVvdXRfbXMgPSB0 aW1lb3V0XzEwMG1zICogNDsKPiA+ICsKPiA+ICsgICAgICAgZmVuY2UgPSAoaW50ICopbWFsbG9j KHNpemVvZihpbnQpKjgpOwo+IAo+IFBsZWFzZSBiZSBraW5kIHRvIHJlYWRlcnMuIFRoZSBjYXN0 IGlzIGltcGxpY2l0LCBhbmQgc3BhY2VzIGFyZQo+IHJlcXVpcmVkCj4gYXJvdW5kICcqJy4KPiAK PiA+ICsgICAgICAgaWd0X2Fzc2VydChmZW5jZSk7Cj4gPiArCj4gPiArICAgICAgIF9fZm9yX2Vh Y2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlXykgewo+ID4gKyAgICAgICAgICAgICAgIGVuZ2luZV9p ZCA9IGVfLT5mbGFnczsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICBzY3JhdGNoMltuZW5naW5l XSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwo+ID4gKyAgICAgICAgICAgICAgIGN0eDJbbmVuZ2lu ZV0gPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpOwo+ID4gKyAgICAgICAgICAgICAgIGdlbV9jb250 ZXh0X3NldF9wcmlvcml0eShmZCwgY3R4MltuZW5naW5lXSwgcHJpbzIpOwo+ID4gKyAgICAgICAg ICAgICAgIGJhdGNoX2J1ZmZlcl9mYWN0b3J5KGZkLCBjdHgyW25lbmdpbmVdLCBlbmdpbmVfaWQs Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JhdGNoMltuZW5naW5lXSwg MCwgTlVMTCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdGNoX3RpbWVv dXRfbXMsIGZlbmNlLCBuZW5naW5lKTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICBzY3JhdGNo W25lbmdpbmVdID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7Cj4gPiArICAgICAgICAgICAgICAgY3R4 W25lbmdpbmVdID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKTsKPiA+ICsgICAgICAgICAgICAgICBn ZW1fY29udGV4dF9zZXRfcHJpb3JpdHkoZmQsIGN0eFtuZW5naW5lXSwgcHJpbzEpOwo+ID4gKyAg ICAgICAgICAgICAgIGJhdGNoX2J1ZmZlcl9mYWN0b3J5KGZkLCBjdHhbbmVuZ2luZV0sIGVuZ2lu ZV9pZCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hbbmVuZ2lu ZV0sIDAsIE5VTEwsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRjaF90 aW1lb3V0X21zLCBmZW5jZSwgbmVuZ2luZSk7Cj4gPiArICAgICAgICAgICAgICAgaWd0X2luZm8o IlRlc3QgIzE6IGN0eDEvY3R4MiAtLT4gZXhlY3V0ZSBvbgo+ID4gJXNcbiIsZV8tPm5hbWUpOwo+ ID4gKyAgICAgICAgICAgICAgIG5lbmdpbmUrKzsKPiAKPiBTbyB0aGF0IGRvZXNuJ3QgdGVzdCBh bnl0aGluZyBhdCBhbGwuCj4gCj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgZm9yIChp ID0gMDsgaSA8IG5lbmdpbmU7IGkrKykgewo+ID4gKyAgICAgICAgICAgICAgIGNsb3NlKGZlbmNl W2ldKTsKPiA+ICsgICAgICAgICAgICAgICBnZW1fY29udGV4dF9kZXN0cm95KGZkLCBjdHhbaV0p Owo+ID4gKyAgICAgICAgICAgICAgIGdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0eDJbaV0pOwo+ ID4gKyAgICAgICAgICAgICAgIGdlbV9jbG9zZShmZCwgc2NyYXRjaFtpXSk7Cj4gPiArICAgICAg ICAgICAgICAgZ2VtX2Nsb3NlKGZkLCBzY3JhdGNoMltpXSk7Cj4gPiArICAgICAgIH0KPiA+ICt9 Cj4gPiArCj4gPiArZmxvYXQgdGltZWRpZmZlcmVuY2VfbXNlYyhzdHJ1Y3QgdGltZXZhbCB0MCwg c3RydWN0IHRpbWV2YWwgdDEpCj4gPiArewo+ID4gKyAgICByZXR1cm4gKHQxLnR2X3NlYyAtIHQw LnR2X3NlYykgKiAxMDAwLjBmICsgKHQxLnR2X3VzZWMgLQo+ID4gdDAudHZfdXNlYykgLyAxMDAw LjBmOwo+ID4gK30KPiA+ICsKPiA+ICsvKiBUZXN0IzI6IHN1Ym1pdCBhIGxvbmcgYmF0Y2ggYW5k IGFmdGVyIGhhbGYgb2YgdGhlIGV4cGVjdGVkCj4gPiBydW50aW1lCj4gPiArICAgc3VibWl0IGEg aGlnaGVyIHByaW9yaXR5IGJhdGNoIGFuZCB0aGVuIHRyeSB0byBjYW5jZWwgdGhlCj4gPiBleGVj dXRpb24qLwo+ID4gK3N0YXRpYyB2b2lkIGxvbmdfYmF0Y2hfdGVzdDIoaW50IGZkLCBpbnQgcHJp bzEsIGludCBwcmlvMiwgaW50Cj4gPiByZXNldF9jdHgxLAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgaW50IHJlc2V0X2N0eDIsIHVuc2lnbmVkIHRocmVzaG9sZCkKPiA+ICt7Cj4gPiArICAg ICAgIHVuc2lnbmVkIGVuZ2luZV9pZCA9IDA7Cj4gPiArICAgICAgIHVuc2lnbmVkIG5lbmdpbmUg PSAwOwo+ID4gKyAgICAgICBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOwo+ID4g KyAgICAgICB1aW50MzJfdCBjdHhbOF07Cj4gPiArICAgICAgIHVpbnQzMl90IHNjcmF0Y2hbOF07 Cj4gPiArICAgICAgIHVpbnQzMl90IGN0eDJbOF07Cj4gPiArICAgICAgIHVpbnQzMl90IHNjcmF0 Y2gyWzhdOwo+ID4gKyAgICAgICBpbnQgKmZlbmNlLCBpID0gMDsKPiA+ICsgICAgICAgdW5zaWdu ZWQgZmxhZ3MgPSBIQU5HX0FMTE9XX0NBUFRVUkU7Cj4gPiArICAgICAgIGNvbnN0IHVpbnQ2NF90 IGJhdGNoX3RpbWVvdXRfbXMgPSB0aW1lb3V0XzEwMG1zICogNDsKPiA+ICsgICAgICAgc3RydWN0 IHRpbWV2YWwgdDA7Cj4gPiArICAgICAgIHN0cnVjdCB0aW1ldmFsIHQxOwo+ID4gKyAgICAgICBm bG9hdCBlbGFwc2VkOwo+ID4gKwo+ID4gKyAgICAgICBmZW5jZSA9IChpbnQgKiltYWxsb2Moc2l6 ZW9mKGludCkqOCk7Cj4gPiArICAgICAgIGlndF9hc3NlcnQoZmVuY2UpOwo+ID4gKwo+ID4gKyAg ICAgICBuZW5naW5lID0gMDsKPiA+ICsKPiA+ICsgICAgICAgX19mb3JfZWFjaF9waHlzaWNhbF9l bmdpbmUoZmQsIGVfKSB7Cj4gPiArICAgICAgICAgICAgICAgZW5naW5lX2lkID0gZV8tPmZsYWdz Owo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgIHNjcmF0Y2gyW25lbmdpbmVdID0gZ2VtX2NyZWF0 ZShmZCwgNDA5Nik7Cj4gPiArICAgICAgICAgICAgICAgY3R4MltuZW5naW5lXSA9IGdlbV9jb250 ZXh0X2NyZWF0ZShmZCk7Cj4gPiArICAgICAgICAgICAgICAgZ2VtX2NvbnRleHRfc2V0X3ByaW9y aXR5KGZkLCBjdHgyW25lbmdpbmVdLCBwcmlvMik7Cj4gPiArICAgICAgICAgICAgICAgYmF0Y2hf YnVmZmVyX2ZhY3RvcnkoZmQsIGN0eDJbbmVuZ2luZV0sIGVuZ2luZV9pZCwKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2gyW25lbmdpbmVdLCAwLCBOVUxMLAo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2hfdGltZW91dF9tcywgZmVuY2Us IG5lbmdpbmUpOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgIGdldHRpbWVvZmRheSgmdDAsIDAp Owo+ID4gKyAgICAgICAgICAgICAgIHdoaWxlKGVsYXBzZWQgPCAyMDApIHsKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIGdldHRpbWVvZmRheSgmdDEsIDApOwo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgZWxhcHNlZCArPSB0aW1lZGlmZmVyZW5jZV9tc2VjKHQwLCB0MSk7Cj4gPiArICAg ICAgICAgICAgICAgfQo+IAo+IFNlZSB1c2xlZXAoKSBvciBuYW5vc2xlZXAoKQo+IAo+ID4gKyAg ICAgICAgICAgICAgIHNjcmF0Y2hbbmVuZ2luZV0gPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKPiA+ ICsgICAgICAgICAgICAgICBjdHhbbmVuZ2luZV0gPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpOwo+ ID4gKyAgICAgICAgICAgICAgIGdlbV9jb250ZXh0X3NldF9wcmlvcml0eShmZCwgY3R4W25lbmdp bmVdLCBwcmlvMSk7Cj4gPiArICAgICAgICAgICAgICAgYmF0Y2hfYnVmZmVyX2ZhY3RvcnkoZmQs IGN0eFtuZW5naW5lXSwgZW5naW5lX2lkLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2NyYXRjaFtuZW5naW5lXSwgMCwgTlVMTCwKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJhdGNoX3RpbWVvdXRfbXMsIGZlbmNlLCBuZW5naW5lKTsKPiA+ICsKPiA+ ICsgICAgICAgICAgICAgICBpZiAoY29udGV4dF9zZXRfd2F0Y2hkb2coZmQsIGVuZ2luZV9pZCwg ZV8tPm5hbWUsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0 eFtuZW5naW5lXSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGhyZXNob2xkKSA9PSAtRU5PREVWKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZ3Rf aW5mbygiTm8gc3VwcG9ydCBmb3IgZ3B1IGgvdyB3YXRjaGRvZwo+ID4gb24gJXNcbiIsCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgZV8tPm5hbWUpOwo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgZ290byBza2lwX2Nhc2U7Cj4gPiArICAgICAgICAgICAgICAgfQo+ID4gKyAgICAgICAg ICAgICAgIGNsZWFyX2Vycm9yX3N0YXRlKGZkKTsKPiA+ICsgICAgICAgICAgICAgICBpbmplY3Rf aGFuZyhmZCwgZW5naW5lX2lkLCBjdHhbbmVuZ2luZV0sIGZsYWdzKTsKPiA+ICsgICAgICAgICAg ICAgICAvKiBOb3cgY2hlY2sgdGhlIGVuZ2luZSB3YXMgcmVzZXQgc3VjY2Vzc2Z1bGx5ICovCj4g PiArICAgICAgICAgICAgICAgLy9pZ3RfYXNzZXJ0X2VxKHN5bmNfZmVuY2Vfc3RhdHVzKCpmZW5j ZSksIC1FSU8pOwo+IAo+IFllYWgsIHRoYXQgZmVuY2UgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBh bnl0aGluZy4KPiAKPiA+ICsgICAgICAgICAgICAgICBpZ3RfaW5mbygiVGVzdCAjMiBjdHgxL2N0 eDIgLS0+IHNldCB3YXRjaGRvZyBhbmQiCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIgY2FuY2VsIGN0eDIgYXQgaGFsZiBleHBlY3RlZCBydW4KPiA+IHdpdGggaGlnaGVyIgo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHByaW9yaXR5IGVuZ2luZTogJXMs IGZlbmNlCj4gPiBzdGF0dXM6IDB4JXggXG4iLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVfLT5uYW1lLAo+ID4gc3luY19mZW5jZV9zdGF0dXMoKmZlbmNlKSk7 Cj4gCj4gWW91J3ZlIHNldCBhIHdhdGNoZG9nLCBidXQgZG9uJ3QgdmFsaWRhdGUgdGhhdCBpdCBo YWQgYW55IGVmZmVjdC4KPiAKPiBNYXkgSSBzdWdnZXN0LCB5b3UgdXNpbmcgYSB0aW1pbmcgYmF0 Y2guIFdyaXRlIHRoZSBpbml0aWFsIHRpbWVzdGFtcAo+IHRvCj4gc2NyYXRjaCwgYW5kIHdyaXRl IGEgc2Vjb25kIHRpbWVzdGFtcCBhbmQgcmVjdXJzZSBiYWNrIHRvIHdyaXRpbmcgdGhlCj4gc2Vj b25kIHRpbWVzdGFtcC4gQWZ0ZXIgdGhhdCBiYXRjaCBpcyBmb3JjaWJseSByZXNldCwgeW91IGNh biBjb21wYXJlCj4gdGhlIHR3byB0aW1lc3RhbXBzIHRvIHNlZSBob3cgbG9uZyBpdCBleGVjdXRl ZCBmb3IgKHdpdGhvdXQgaGF2aW5nIHRvCj4gZGlnIGludG8gdGhlIGNvbnRleHQgaW1hZ2UgdG8g ZXh0cmFjdCB0aGUgcHBIV1NQIHJ1bnRpbWVzKS4gVGhlCj4gY29udHJhY3QKPiBnaXZlbiBieSB0 aGUgd2F0Y2hkb2cgdUFQSSB3b3VsZCBzZWVtIHRvIGJlIHRoYXQgdGhlIGJhdGNoIGlzIGh1bmcK PiBhZnRlcgo+IHRoYXQgcnVudGltZSBleGNlZWRzIHRoZSB0aW1lb3V0IHRocmVzaG9sZCAodGhv dWdoIGhvdyBzdHJpY3RseSB3ZQo+IGZhaWwKPiBmb3IgZXhjZWVkaW5nIHRoZSB0aW1lb3V0Pz8/ KSBhbmQgbW9zdCBkZWZpbml0ZWx5IG5vdCBiZSByZXNldCBiZWZvcmUKPiB3ZQo+IHJlYWNoIHRo ZSB0aHJlc2hvbGQgKGdpdmUgb3IgdGFrZSBhIGZldyBtaWNyb3NlY29uZHMgcmVxdWlyZWQgZm9y IHRoZQo+IHJlY3Vyc2lvbiBhbmQgY29udGV4dCBzd2l0Y2hpbmcvZXhlY3V0aW9uIHRoYXQgd2ls bCBiZSBjaGFyZ2VkIHRvIHRoZQo+IHdhdGNoZG9nIGFuZCBub3QgcmVjb3JkZWQgYnkgdGhlIGJh dGNoKS4KPiAtQ2hyaXMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==