From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH v5 25/35] drm/i915: Added scheduler queue throttling by DRM file handle Date: Tue, 01 Mar 2016 15:52:06 +0000 Message-ID: <56D5BAA6.1070005@Intel.com> References: <1455805644-6450-1-git-send-email-John.C.Harrison@Intel.com> <1455805644-6450-26-git-send-email-John.C.Harrison@Intel.com> <56CCC8FA.1070107@virtuousgeek.org> 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 ESMTP id 07A6B6E64E for ; Tue, 1 Mar 2016 15:52:19 +0000 (UTC) In-Reply-To: <56CCC8FA.1070107@virtuousgeek.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jesse Barnes , Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMjMvMDIvMjAxNiAyMTowMiwgSmVzc2UgQmFybmVzIHdyb3RlOgo+IE9uIDAyLzE4LzIwMTYg MDY6MjcgQU0sIEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20gd3JvdGU6Cj4+IEZyb206IEpvaG4g SGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4+Cj4+IFRoZSBzY2hlZHVsZXIg ZGVjb3VwbGVzIHRoZSBzdWJtaXNzaW9uIG9mIGJhdGNoIGJ1ZmZlcnMgdG8gdGhlIGRyaXZlcgo+ PiBmcm9tIHRoZWlyIHN1YnNlcXVlbnQgc3VibWlzc2lvbiB0byB0aGUgaGFyZHdhcmUuIFRoaXMg bWVhbnMgdGhhdCBhbgo+PiBhcHBsaWNhdGlvbiB3aGljaCBpcyBjb250aW51b3VzbHkgc3VibWl0 dGluZyBidWZmZXJzIGFzIGZhc3QgYXMgaXQgY2FuCj4+IGNvdWxkIHBvdGVudGlhbHkgZmxvb2Qg dGhlIGRyaXZlci4gVG8gcHJldmVudCB0aGlzLCB0aGUgZHJpdmVyIG5vdwo+PiB0cmFja3MgaG93 IG1hbnkgYnVmZmVycyBhcmUgaW4gcHJvZ3Jlc3MgKHF1ZXVlZCBpbiBzb2Z0d2FyZSBvcgo+PiBl eGVjdXRpbmcgaW4gaGFyZHdhcmUpIGFuZCBsaW1pdHMgdGhpcyB0byBhIGdpdmVuICh0dW5hYmxl KSBudW1iZXIuIElmCj4+IHRoaXMgbnVtYmVyIGlzIGV4Y2VlZGVkIHRoZW4gdGhlIHF1ZXVlIHRv IHRoZSBkcml2ZXIgd2lsbCByZXR1cm4KPj4gRUFHQUlOIGFuZCB0aHVzIHByZXZlbnQgdGhlIHNj aGVkdWxlcidzIHF1ZXVlIGJlY29taW5nIGFyYml0cmFyaWx5Cj4+IGxhcmdlLgo+Pgo+PiB2Mzog QWRkZWQgYSBtaXNzaW5nIGRlY3JlbWVudCBvZiB0aGUgZmlsZSBxdWV1ZSBjb3VudGVyLgo+Pgo+ PiB2NDogVXBkYXRlZCBhIGNvbW1lbnQuCj4+Cj4+IHY1OiBVcGRhdGVkIGR1ZSB0byBjaGFuZ2Vz IHRvIGVhcmxpZXIgcGF0Y2hlcyBpbiBzZXJpZXMgLSByZW1vdmluZwo+PiBmb3J3YXJkIGRlY2xh cmF0aW9ucyBhbmQgd2hpdGUgc3BhY2UuIEFsc28gYWRkZWQgc29tZSBkb2N1bWVudGF0aW9uLgo+ PiBbSm9vbmFzIExhaHRpbmVuXQo+Pgo+PiBGb3I6IFZJWi0xNTg3Cj4+IFNpZ25lZC1vZmYtYnk6 IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4+IC0tLQo+PiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICB8ICAyICsrCj4+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgIDggKysrKysKPj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jICAgICAgfCA0OCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVk dWxlci5oICAgICAgfCAgMiArKwo+PiAgIDQgZmlsZXMgY2hhbmdlZCwgNjAgaW5zZXJ0aW9ucygr KQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gaW5kZXggMDcxYTI3Yi4uM2Y0YzRmMCAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IEBAIC0zMzYsNiArMzM2LDggQEAgc3Ry dWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSB7Cj4+ICAgCX0gcnBzOwo+PiAgIAo+PiAgIAlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpic2RfcmluZzsKPj4gKwo+PiArCXUzMiBzY2hlZHVsZXJfcXVl dWVfbGVuZ3RoOwo+PiAgIH07Cj4+ICAgCj4+ICAgZW51bSBpbnRlbF9kcGxsX2lkIHsKPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+PiBpbmRleCBkNGRlOGM3 Li5kZmYxMjBjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9l eGVjYnVmZmVyLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1 ZmZlci5jCj4+IEBAIC0xODAzLDYgKzE4MDMsMTAgQEAgaTkxNV9nZW1fZXhlY2J1ZmZlcihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+PiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4+ ICAgCX0KPj4gICAKPj4gKwkvKiBUaHJvdHRsZSBiYXRjaCByZXF1ZXN0cyBwZXIgZGV2aWNlIGZp bGUgKi8KPj4gKwlpZiAoaTkxNV9zY2hlZHVsZXJfZmlsZV9xdWV1ZV9pc19mdWxsKGZpbGUpKQo+ PiArCQlyZXR1cm4gLUVBR0FJTjsKPj4gKwo+PiAgIAkvKiBDb3B5IGluIHRoZSBleGVjIGxpc3Qg ZnJvbSB1c2VybGFuZCAqLwo+PiAgIAlleGVjX2xpc3QgPSBkcm1fbWFsbG9jX2FiKHNpemVvZigq ZXhlY19saXN0KSwgYXJncy0+YnVmZmVyX2NvdW50KTsKPj4gICAJZXhlYzJfbGlzdCA9IGRybV9t YWxsb2NfYWIoc2l6ZW9mKCpleGVjMl9saXN0KSwgYXJncy0+YnVmZmVyX2NvdW50KTsKPj4gQEAg LTE4OTMsNiArMTg5NywxMCBAQCBpOTE1X2dlbV9leGVjYnVmZmVyMihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAo+PiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4+ICAgCX0KPj4gICAK Pj4gKwkvKiBUaHJvdHRsZSBiYXRjaCByZXF1ZXN0cyBwZXIgZGV2aWNlIGZpbGUgKi8KPj4gKwlp ZiAoaTkxNV9zY2hlZHVsZXJfZmlsZV9xdWV1ZV9pc19mdWxsKGZpbGUpKQo+PiArCQlyZXR1cm4g LUVBR0FJTjsKPj4gKwo+PiAgIAlleGVjMl9saXN0ID0ga21hbGxvYyhzaXplb2YoKmV4ZWMyX2xp c3QpKmFyZ3MtPmJ1ZmZlcl9jb3VudCwKPj4gICAJCQkgICAgIEdGUF9URU1QT1JBUlkgfCBfX0dG UF9OT1dBUk4gfCBfX0dGUF9OT1JFVFJZKTsKPj4gICAJaWYgKGV4ZWMyX2xpc3QgPT0gTlVMTCkK Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCj4+IGluZGV4IGU1NmNlMDguLmY3 ZjI5ZDUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVy LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuYwo+PiBAQCAt NjksNiArNjksNyBAQCBpbnQgaTkxNV9zY2hlZHVsZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+PiAgIAlzY2hlZHVsZXItPnByaW9yaXR5X2xldmVsX2J1bXAgICAgPSA1MDsKPj4gICAJ c2NoZWR1bGVyLT5wcmlvcml0eV9sZXZlbF9wcmVlbXB0ID0gOTAwOwo+PiAgIAlzY2hlZHVsZXIt Pm1pbl9mbHlpbmcgICAgICAgICAgICAgPSAyOwo+PiArCXNjaGVkdWxlci0+ZmlsZV9xdWV1ZV9t YXggICAgICAgICA9IDY0Owo+PiAgIAo+PiAgIAlkZXZfcHJpdi0+c2NoZWR1bGVyID0gc2NoZWR1 bGVyOwo+PiAgIAo+PiBAQCAtNDY0LDYgKzQ2NSw0NCBAQCBzdGF0aWMgaW50IGk5MTVfc2NoZWR1 bGVyX3N1Ym1pdF91bmxvY2tlZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+PiAgIAly ZXR1cm4gcmV0Owo+PiAgIH0KPj4gICAKPj4gKy8qKgo+PiArICogaTkxNV9zY2hlZHVsZXJfZmls ZV9xdWV1ZV9pc19mdWxsIC0gUmV0dXJucyB0cnVlIGlmIHRoZSBxdWV1ZSBpcyBmdWxsLgo+PiAr ICogQGZpbGU6IEZpbGUgb2JqZWN0IHRvIHF1ZXJ5Lgo+PiArICogVGhpcyBhbGxvd3MgdGhyb3R0 bGluZyBvZiBhcHBsaWNhdGlvbnMgYnkgbGltaXRpbmcgdGhlIHRvdGFsIG51bWJlciBvZgo+PiAr ICogb3V0c3RhbmRpbmcgcmVxdWVzdHMgdG8gYSBzcGVjaWZpZWQgbGV2ZWwuIE9uY2UgdGhhdCBs aW1pdCBpcyByZWFjaGVkLAo+PiArICogdGhpcyBjYWxsIHdpbGwgcmV0dXJuIHRydWUgYW5kIG5v IG1vcmUgcmVxdWVzdHMgc2hvdWxkIGJlIGFjY2VwdGVkLgo+PiArICovCj4+ICtib29sIGk5MTVf c2NoZWR1bGVyX2ZpbGVfcXVldWVfaXNfZnVsbChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4+ICt7 Cj4+ICsJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2ID0gZmlsZS0+ZHJp dmVyX3ByaXY7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ICA9IGZpbGVf cHJpdi0+ZGV2X3ByaXY7Cj4+ICsJc3RydWN0IGk5MTVfc2NoZWR1bGVyICpzY2hlZHVsZXIgPSBk ZXZfcHJpdi0+c2NoZWR1bGVyOwo+PiArCj4+ICsJcmV0dXJuIGZpbGVfcHJpdi0+c2NoZWR1bGVy X3F1ZXVlX2xlbmd0aCA+PSBzY2hlZHVsZXItPmZpbGVfcXVldWVfbWF4Owo+PiArfQo+PiArCj4+ ICsvKioKPj4gKyAqIGk5MTVfc2NoZWR1bGVyX2ZpbGVfcXVldWVfaW5jIC0gSW5jcmVtZW50IHRo ZSBmaWxlJ3MgcmVxdWVzdCBxdWV1ZSBjb3VudC4KPj4gKyAqIEBmaWxlOiBGaWxlIG9iamVjdCB0 byBwcm9jZXNzLgo+PiArICovCj4+ICtzdGF0aWMgdm9pZCBpOTE1X3NjaGVkdWxlcl9maWxlX3F1 ZXVlX2luYyhzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9pOTE1 X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2ID0gZmlsZS0+ZHJpdmVyX3ByaXY7Cj4+ICsKPj4gKwlm aWxlX3ByaXYtPnNjaGVkdWxlcl9xdWV1ZV9sZW5ndGgrKzsKPj4gK30KPj4gKwo+PiArLyoqCj4+ ICsgKiBpOTE1X3NjaGVkdWxlcl9maWxlX3F1ZXVlX2RlYyAtIERlY3JlbWVudCB0aGUgZmlsZSdz IHJlcXVlc3QgcXVldWUgY291bnQuCj4+ICsgKiBAZmlsZTogRmlsZSBvYmplY3QgdG8gcHJvY2Vz cy4KPj4gKyAqLwo+PiArc3RhdGljIHZvaWQgaTkxNV9zY2hlZHVsZXJfZmlsZV9xdWV1ZV9kZWMo c3RydWN0IGRybV9maWxlICpmaWxlKQo+PiArewo+PiArCXN0cnVjdCBkcm1faTkxNV9maWxlX3By aXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2Owo+PiArCj4+ICsJZmlsZV9wcml2 LT5zY2hlZHVsZXJfcXVldWVfbGVuZ3RoLS07Cj4+ICt9Cj4+ICsKPj4gICBzdGF0aWMgdm9pZCBp OTE1X2dlbmVyYXRlX2RlcGVuZGVuY2llcyhzdHJ1Y3QgaTkxNV9zY2hlZHVsZXIgKnNjaGVkdWxl ciwKPj4gICAJCQkJICAgICAgIHN0cnVjdCBpOTE1X3NjaGVkdWxlcl9xdWV1ZV9lbnRyeSAqbm9k ZSwKPj4gICAJCQkJICAgICAgIHVpbnQzMl90IHJpbmcpCj4+IEBAIC02NDAsNiArNjc5LDggQEAg aW50IGk5MTVfc2NoZWR1bGVyX3F1ZXVlX2V4ZWNidWZmZXIoc3RydWN0IGk5MTVfc2NoZWR1bGVy X3F1ZXVlX2VudHJ5ICpxZSkKPj4gICAKPj4gICAJbGlzdF9hZGRfdGFpbCgmbm9kZS0+bGluaywg JnNjaGVkdWxlci0+bm9kZV9xdWV1ZVtyaW5nLT5pZF0pOwo+PiAgIAo+PiArCWk5MTVfc2NoZWR1 bGVyX2ZpbGVfcXVldWVfaW5jKG5vZGUtPnBhcmFtcy5maWxlKTsKPj4gKwo+PiAgIAlub3RfZmx5 aW5nID0gaTkxNV9zY2hlZHVsZXJfY291bnRfZmx5aW5nKHNjaGVkdWxlciwgcmluZykgPAo+PiAg IAkJCQkJCSBzY2hlZHVsZXItPm1pbl9mbHlpbmc7Cj4+ICAgCj4+IEBAIC04ODMsNiArOTI0LDEy IEBAIHN0YXRpYyBib29sIGk5MTVfc2NoZWR1bGVyX3JlbW92ZShzdHJ1Y3QgaTkxNV9zY2hlZHVs ZXIgKnNjaGVkdWxlciwKPj4gICAJCS8qIFN0cmlwIHRoZSBkZXBlbmRlbmN5IGluZm8gd2hpbGUg dGhlIG11dGV4IGlzIHN0aWxsIGxvY2tlZCAqLwo+PiAgIAkJaTkxNV9zY2hlZHVsZXJfcmVtb3Zl X2RlcGVuZGVudChzY2hlZHVsZXIsIG5vZGUpOwo+PiAgIAo+PiArCQkvKiBMaWtld2lzZSBjbGVh biB1cCB0aGUgZmlsZSBwb2ludGVyLiAqLwo+PiArCQlpZiAobm9kZS0+cGFyYW1zLmZpbGUpIHsK Pj4gKwkJCWk5MTVfc2NoZWR1bGVyX2ZpbGVfcXVldWVfZGVjKG5vZGUtPnBhcmFtcy5maWxlKTsK Pj4gKwkJCW5vZGUtPnBhcmFtcy5maWxlID0gTlVMTDsKPj4gKwkJfQo+PiArCj4+ICAgCQljb250 aW51ZTsKPj4gICAJfQo+PiAgIAo+PiBAQCAtMTIwNSw2ICsxMjUyLDcgQEAgaW50IGk5MTVfc2No ZWR1bGVyX2Nsb3NlZmlsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUpCj4+ICAgCQkJCQkJIG5vZGUtPnN0YXR1cywKPj4gICAJCQkJCQkgcmluZy0+bmFtZSk7 Cj4+ICAgCj4+ICsJCQlpOTE1X3NjaGVkdWxlcl9maWxlX3F1ZXVlX2RlYyhub2RlLT5wYXJhbXMu ZmlsZSk7Cj4+ICAgCQkJbm9kZS0+cGFyYW1zLmZpbGUgPSBOVUxMOwo+PiAgIAkJfQo+PiAgIAl9 Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaAo+PiBpbmRleCAwNzViZWZiLi5i NzhkZTEyIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxl ci5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmgKPj4gQEAg LTc3LDYgKzc3LDcgQEAgc3RydWN0IGk5MTVfc2NoZWR1bGVyIHsKPj4gICAJaW50MzJfdCAgICAg ICAgICAgICBwcmlvcml0eV9sZXZlbF9idW1wOwo+PiAgIAlpbnQzMl90ICAgICAgICAgICAgIHBy aW9yaXR5X2xldmVsX3ByZWVtcHQ7Cj4+ICAgCXVpbnQzMl90ICAgICAgICAgICAgbWluX2ZseWlu ZzsKPj4gKwl1aW50MzJfdCAgICAgICAgICAgIGZpbGVfcXVldWVfbWF4Owo+PiAgIH07Cj4+ICAg Cj4+ICAgLyogRmxhZyBiaXRzIGZvciBpOTE1X3NjaGVkdWxlcjo6ZmxhZ3MgKi8KPj4gQEAgLTEw MCw1ICsxMDEsNiBAQCBpbnQgaTkxNV9zY2hlZHVsZXJfZmx1c2hfc3RhbXAoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZywKPj4gICAJCQkgICAgICAgdW5zaWduZWQgbG9uZyBzdGFtcCwgYm9v bCBpc19sb2NrZWQpOwo+PiAgIGJvb2wgaTkxNV9zY2hlZHVsZXJfaXNfcmVxdWVzdF90cmFja2Vk KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+PiAgIAkJCQkgICAgICAgYm9vbCAq Y29tcGxldGVkLCBib29sICpidXN5KTsKPj4gK2Jvb2wgaTkxNV9zY2hlZHVsZXJfZmlsZV9xdWV1 ZV9pc19mdWxsKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7Cj4+ICAgCj4+ICAgI2VuZGlmICAvKiBf STkxNV9TQ0hFRFVMRVJfSF8gKi8KPj4KPiBKdXN0IHRvIGNsYXJpZnkgYW5kIG1ha2Ugc3VyZSBJ IHVuZGVyc3Rvb2QgdGhlIHByZXZpb3VzIHN0dWZmOiBhIHF1ZXVlZCBleGVjYnVmIHRoYXQgaGFz IG5vdCB5ZXQgYmVlbiBkaXNwYXRjaGVkIGRvZXMgbm90IHJlc2VydmUgYW5kIHBpbiBwYWdlcyBy aWdodD8gIFRoYXQgb2NjdXJzIGF0IGFjdHVhbCBkaXNwYXRjaCB0aW1lPyAgSWYgc28sIEkgZ3Vl c3MgY2xpZW50cyB3aWxsIGhpdCB0aGlzIDY0IHF1ZXVlZCBpdGVtIGxpbWl0IHByZXR0eSByZWd1 bGFybHkuLi4gIEhvdyBtdWNoIG1ldGFkYXRhIG92ZXJoZWFkIGRvZXMgdGhhdCBpbnZvbHZlPyAg SGFzIGl0IGJlZW4gZGVyaXZlZCBmcm9tIHNvbWUgcGVyZm9ybWFuY2Ugd29yayB3aXRoIGEgYnVu Y2ggb2Ygd29ya2xvYWRzPyAgSXQncyBmaW5lIGlmIG5vdCwgSSBjYW4gaW1hZ2luZSB0aGF0IGRp ZmZlcmVudCBtaXhlcyBvZiB3b3JrbG9hZHMgd291bGQgYmUgYWZmZWN0ZWQgYnkgbG93ZXIgb3Ig aGlnaGVyIHF1ZXVlIGRlcHRocyAoZS5nLiBzbWFsbCBiYXRjaCB0ZXN0cykuCgpXaGV0aGVyIGEg Y2xpZW50IHdpbGwgaGl0IHRoZSBsaW1pdCBpcyBlbnRpcmVseSBkb3duIHRvIGhvdyB0aGF0IGNs aWVudCAKaXMgd3JpdHRlbi4gQSBHTCBwcm9ncmFtIHRoYXQgcmVuZGVycyBkb3VibGUgYnVmZmVy ZWQgd2l0aCBvbmUgYmF0Y2ggcGVyIApmcmFtZSB3aWxsIG9ubHkgZXZlciBoYXZlIHR3byBiYXRj aCBidWZmZXIgcmVxdWVzdHMgb3V0c3RhbmRpbmcuIApXaGVyZWFzLCB0aGUgZ2VtX2V4ZWNfbm9w IElHVCB0ZXN0IHN1Ym1pdHMgYSB0aG91c2FuZCBiYXRjaGVzIGJlZm9yZSAKd2FpdGluZyBmb3Ig YW55dGhpbmcgdG8gY29tcGxldGUuCgo+IElmIHRoaXMgaXMgdHVuYWJsZSwgSSBndWVzcyBpdCBz aG91bGQgYmUgY2xhbXBlZCBsaWtlIGEgbmljZSBvciBybGltaXQgdmFsdWUsIHdpdGggdmFsdWVz IG91dHNpZGUgdGhhdCByYW5nZSByZXF1aXJpbmcgQ0FQX1NZU19BRE1JTi4KV2hhdCBpcyBjb25z aWRlcmVkIGEgdmFsaWQgcmFuZ2U/IFByZXZpb3VzbHkgdGhlIGxpbWl0IHdvdWxkIGhhdmUgYmVl biAKdGhlIHNpemUgb2YgdGhlIHJpbmcgYnVmZmVyLiBJbiB0aW1lcyBwYXN0LCB0aGV5IHdlcmUg bGFyZ2UgYW5kIHlvdSAKY291bGQgaGF2ZSB0aG91c2FuZHMgb2YgYmF0Y2hlcyBpbiBmbGlnaHQu IFdpdGggdGhlIEd1QyB3ZSBhcmUgZG93biB0byAKNEsgd29yZHMuIEF0LCBmb3IgZXhhbXBsZSwg MzIgd29yZHMgcGVyIGJhdGNoIGJ1ZmZlciByZXF1ZXN0IHRoYXQgbWFrZXMgCmZvciAxMjggb3V0 c3RhbmRpbmcgYmF0Y2hlcy4gU28gc2V0IHRoZSBtYXhpbXVtIHBlcm1pdHRlZCB0byAyNTY/IApM YXJnZXI/IFNtYWxsZXI/CgoKPgo+IFJldmlld2VkLWJ5OiBKZXNzZSBCYXJuZXMgPGpiYXJuZXNA dmlydHVvdXNnZWVrLm9yZz4KPgo+IEplc3NlCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK