Return-Path: linux-nfs-owner@vger.kernel.org Received: from mx2.netapp.com ([216.240.18.37]:60290 "EHLO mx2.netapp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757212Ab2ESUqe (ORCPT ); Sat, 19 May 2012 16:46:34 -0400 Received: from vmwexceht01-prd.hq.netapp.com (vmwexceht01-prd.hq.netapp.com [10.106.76.239]) by smtp1.corp.netapp.com (8.13.1/8.13.1/NTAP-1.6) with ESMTP id q4JKkIW3006169 for ; Sat, 19 May 2012 13:46:18 -0700 (PDT) From: "Myklebust, Trond" To: "Adamson, Andy" CC: "linux-nfs@vger.kernel.org" Subject: Re: [PATCH Version 9 1/4] NFSv4.1 mdsthreshold attribute xdr Date: Sat, 19 May 2012 20:45:32 +0000 Message-ID: <1337460376.4831.43.camel@lade.trondhjem.org> References: <1337284102-3372-1-git-send-email-andros@netapp.com> In-Reply-To: <1337284102-3372-1-git-send-email-andros@netapp.com> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-nfs-owner@vger.kernel.org List-ID: T24gVGh1LCAyMDEyLTA1LTE3IGF0IDE1OjQ4IC0wNDAwLCBhbmRyb3NAbmV0YXBwLmNvbSB3cm90 ZToNCj4gRnJvbTogQW5keSBBZGFtc29uIDxhbmRyb3NAbmV0YXBwLmNvbT4NCj4gDQo+IFdlIG9u bHkgc3VwcG9ydCBvbmUgbGF5b3V0IHR5cGUgcGVyIGZpbGUgc3lzdGVtLCBzbyBvbmUgdGhyZXNo b2xkX2l0ZW00IHBlcg0KPiBtZHN0aHJlc2hvbGQ0Lg0KPiANCj4gU2lnbmVkLW9mZi1ieTogQW5k eSBBZGFtc29uIDxhbmRyb3NAbmV0YXBwLmNvbT4NCj4gLS0tDQo+ICBmcy9uZnMvbmZzNHhkci5j ICAgICAgICB8ICAxMjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0NCj4gIGluY2x1ZGUvbGludXgvbmZzNC5oICAgIHwgICAgNyArKysNCj4gIGluY2x1ZGUv bGludXgvbmZzX3hkci5oIHwgICAxMCArKysrDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDE0MCBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2ZzL25mcy9uZnM0 eGRyLmMgYi9mcy9uZnMvbmZzNHhkci5jDQo+IGluZGV4IGRiMDQwZTkuLjI3ZWI4NzMgMTAwNjQ0 DQo+IC0tLSBhL2ZzL25mcy9uZnM0eGRyLmMNCj4gKysrIGIvZnMvbmZzL25mczR4ZHIuYw0KPiBA QCAtOTksOSArOTksMTIgQEAgc3RhdGljIGludCBuZnM0X3N0YXRfdG9fZXJybm8oaW50KTsNCj4g ICNkZWZpbmUgbmZzNF9wYXRoX21heHN6CQkoMSArICgoMyArIE5GUzRfTUFYUEFUSExFTikgPj4g MikpDQo+ICAjZGVmaW5lIG5mczRfb3duZXJfbWF4c3oJKDEgKyBYRFJfUVVBRExFTihJRE1BUF9O QU1FU1opKQ0KPiAgI2RlZmluZSBuZnM0X2dyb3VwX21heHN6CSgxICsgWERSX1FVQURMRU4oSURN QVBfTkFNRVNaKSkNCj4gKy8qIFdlIHN1cHBvcnQgb25seSBvbmUgbGF5b3V0IHR5cGUgcGVyIGZp bGUgc3lzdGVtICovDQo+ICsjZGVmaW5lIGRlY29kZV9tZHN0aHJlc2hvbGRfbWF4c3ogKDEgKyAx ICsgbmZzNF9mYXR0cl9iaXRtYXBfbWF4c3ogKyAxICsgOCkNCj4gIC8qIFRoaXMgaXMgYmFzZWQg b24gZ2V0ZmF0dHIsIHdoaWNoIHVzZXMgdGhlIG1vc3QgYXR0cmlidXRlczogKi8NCj4gICNkZWZp bmUgbmZzNF9mYXR0cl92YWx1ZV9tYXhzegkoMSArICgxICsgMiArIDIgKyA0ICsgMiArIDEgKyAx ICsgMiArIDIgKyBcDQo+IC0JCQkJMyArIDMgKyAzICsgbmZzNF9vd25lcl9tYXhzeiArIG5mczRf Z3JvdXBfbWF4c3opKQ0KPiArCQkJCTMgKyAzICsgMyArIG5mczRfb3duZXJfbWF4c3ogKyBcDQo+ ICsJCQkJbmZzNF9ncm91cF9tYXhzeiArIGRlY29kZV9tZHN0aHJlc2hvbGRfbWF4c3opKQ0KPiAg I2RlZmluZSBuZnM0X2ZhdHRyX21heHN6CShuZnM0X2ZhdHRyX2JpdG1hcF9tYXhzeiArIFwNCj4g IAkJCQluZnM0X2ZhdHRyX3ZhbHVlX21heHN6KQ0KPiAgI2RlZmluZSBkZWNvZGVfZ2V0YXR0cl9t YXhzeiAgICAob3BfZGVjb2RlX2hkcl9tYXhzeiArIG5mczRfZmF0dHJfbWF4c3opDQo+IEBAIC0x MTcwLDYgKzExNzMsMTYgQEAgc3RhdGljIHZvaWQgZW5jb2RlX2dldGZhdHRyKHN0cnVjdCB4ZHJf c3RyZWFtICp4ZHIsIGNvbnN0IHUzMiogYml0bWFzaywgc3RydWN0IGMNCj4gIAkJCSAgIGJpdG1h c2tbMV0gJiBuZnM0X2ZhdHRyX2JpdG1hcFsxXSwgaGRyKTsNCj4gIH0NCj4gIA0KPiArc3RhdGlj IHZvaWQgZW5jb2RlX2dldGZhdHRyX29wZW4oc3RydWN0IHhkcl9zdHJlYW0gKnhkciwgY29uc3Qg dTMyICpiaXRtYXNrLA0KPiArCQkJCSBzdHJ1Y3QgY29tcG91bmRfaGRyICpoZHIpDQo+ICt7DQo+ ICsJZW5jb2RlX2dldGF0dHJfdGhyZWUoeGRyLA0KPiArCQkJICAgICBiaXRtYXNrWzBdICYgbmZz NF9mYXR0cl9iaXRtYXBbMF0sDQo+ICsJCQkgICAgIGJpdG1hc2tbMV0gJiBuZnM0X2ZhdHRyX2Jp dG1hcFsxXSwNCj4gKwkJCSAgICAgYml0bWFza1syXSAmIEZBVFRSNF9XT1JEMl9NRFNUSFJFU0hP TEQsDQo+ICsJCQkgICAgIGhkcik7DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyB2b2lkIGVuY29kZV9m c2luZm8oc3RydWN0IHhkcl9zdHJlYW0gKnhkciwgY29uc3QgdTMyKiBiaXRtYXNrLCBzdHJ1Y3Qg Y29tcG91bmRfaGRyICpoZHIpDQo+ICB7DQo+ICAJZW5jb2RlX2dldGF0dHJfdGhyZWUoeGRyLA0K PiBAQCAtMjE5Nyw3ICsyMjEwLDcgQEAgc3RhdGljIHZvaWQgbmZzNF94ZHJfZW5jX29wZW5fbm9h dHRyKHN0cnVjdCBycGNfcnFzdCAqcmVxLA0KPiAgCWVuY29kZV9zZXF1ZW5jZSh4ZHIsICZhcmdz LT5zZXFfYXJncywgJmhkcik7DQo+ICAJZW5jb2RlX3B1dGZoKHhkciwgYXJncy0+ZmgsICZoZHIp Ow0KPiAgCWVuY29kZV9vcGVuKHhkciwgYXJncywgJmhkcik7DQo+IC0JZW5jb2RlX2dldGZhdHRy KHhkciwgYXJncy0+Yml0bWFzaywgJmhkcik7DQo+ICsJZW5jb2RlX2dldGZhdHRyX29wZW4oeGRy LCBhcmdzLT5iaXRtYXNrLCAmaGRyKTsNCj4gIAllbmNvZGVfbm9wcygmaGRyKTsNCj4gIH0NCj4g IA0KPiBAQCAtNDE4Myw2ICs0MTk2LDExMCBAQCB4ZHJfZXJyb3I6DQo+ICAJcmV0dXJuIHN0YXR1 czsNCj4gIH0NCj4gIA0KPiArc3RhdGljIGludCBkZWNvZGVfdGhyZXNob2xkX2hpbnQoc3RydWN0 IHhkcl9zdHJlYW0gKnhkciwNCj4gKwkJCQkgIHVpbnQzMl90ICpiaXRtYXAsDQo+ICsJCQkJICB1 aW50NjRfdCAqcmVzLA0KPiArCQkJCSAgdWludDMyX3QgaGludF9iaXQpDQo+ICt7DQo+ICsJX19i ZTMyICpwOw0KPiArDQo+ICsJKnJlcyA9IDA7DQo+ICsJaWYgKGxpa2VseShiaXRtYXBbMF0gJiBo aW50X2JpdCkpIHsNCj4gKwkJcCA9IHhkcl9pbmxpbmVfZGVjb2RlKHhkciwgOCk7DQo+ICsJCWlm ICh1bmxpa2VseSghcCkpDQo+ICsJCQlnb3RvIG91dF9vdmVyZmxvdzsNCj4gKwkJeGRyX2RlY29k ZV9oeXBlcihwLCByZXMpOw0KPiArCX0NCj4gKwlyZXR1cm4gMDsNCj4gK291dF9vdmVyZmxvdzoN Cj4gKwlwcmludF9vdmVyZmxvd19tc2coX19mdW5jX18sIHhkcik7DQo+ICsJcmV0dXJuIC1FSU87 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZGVjb2RlX2ZpcnN0X3RocmVzaG9sZF9pdGVtNChz dHJ1Y3QgeGRyX3N0cmVhbSAqeGRyLA0KPiArCQkJCQlzdHJ1Y3QgbmZzNF90aHJlc2hvbGQgKnJl cykNCj4gK3sNCj4gKwlfX2JlMzIgKnAsICpzYXZlcDsNCj4gKwl1aW50MzJfdCBiaXRtYXBbM10g PSB7MCx9LCBhdHRybGVuOw0KPiArCWludCBzdGF0dXM7DQo+ICsNCj4gKwkvKiBsYXlvdXQgdHlw ZSAqLw0KPiArCXAgPSB4ZHJfaW5saW5lX2RlY29kZSh4ZHIsIDQpOw0KPiArCWlmICh1bmxpa2Vs eSghcCkpIHsNCj4gKwkJcHJpbnRfb3ZlcmZsb3dfbXNnKF9fZnVuY19fLCB4ZHIpOw0KPiArCQly ZXR1cm4gLUVJTzsNCj4gKwl9DQo+ICsJcmVzLT5sX3R5cGUgPSBiZTMyX3RvX2NwdXAocCk7DQo+ ICsNCj4gKwkvKiB0aGlfaGludHNldCBiaXRtYXAgKi8NCj4gKwlzdGF0dXMgPSBkZWNvZGVfYXR0 cl9iaXRtYXAoeGRyLCBiaXRtYXApOw0KPiArCWlmIChzdGF0dXMgPCAwKQ0KPiArCQlnb3RvIHhk cl9lcnJvcjsNCj4gKw0KPiArCS8qIHRoaV9oaW50bGlzdCBsZW5ndGggKi8NCj4gKwlzdGF0dXMg PSBkZWNvZGVfYXR0cl9sZW5ndGgoeGRyLCAmYXR0cmxlbiwgJnNhdmVwKTsNCj4gKwlpZiAoc3Rh dHVzIDwgMCkNCj4gKwkJZ290byB4ZHJfZXJyb3I7DQo+ICsJLyogdGhpX2hpbnRsaXN0ICovDQo+ ICsJc3RhdHVzID0gZGVjb2RlX3RocmVzaG9sZF9oaW50KHhkciwgYml0bWFwLCAmcmVzLT5yZF9z eiwgVEhSRVNIT0xEX1JEKTsNCj4gKwlpZiAoc3RhdHVzIDwgMCkNCj4gKwkJZ290byB4ZHJfZXJy b3I7DQo+ICsJc3RhdHVzID0gZGVjb2RlX3RocmVzaG9sZF9oaW50KHhkciwgYml0bWFwLCAmcmVz LT53cl9zeiwgVEhSRVNIT0xEX1dSKTsNCj4gKwlpZiAoc3RhdHVzIDwgMCkNCj4gKwkJZ290byB4 ZHJfZXJyb3I7DQo+ICsJc3RhdHVzID0gZGVjb2RlX3RocmVzaG9sZF9oaW50KHhkciwgYml0bWFw LCAmcmVzLT5yZF9pb19zeiwNCj4gKwkJCQkgICAgICAgVEhSRVNIT0xEX1JEX0lPKTsNCj4gKwlp ZiAoc3RhdHVzIDwgMCkNCj4gKwkJZ290byB4ZHJfZXJyb3I7DQo+ICsJc3RhdHVzID0gZGVjb2Rl X3RocmVzaG9sZF9oaW50KHhkciwgYml0bWFwLCAmcmVzLT53cl9pb19zeiwNCj4gKwkJCQkgICAg ICAgVEhSRVNIT0xEX1dSX0lPKTsNCj4gKwlpZiAoc3RhdHVzIDwgMCkNCj4gKwkJZ290byB4ZHJf ZXJyb3I7DQo+ICsNCj4gKwlzdGF0dXMgPSB2ZXJpZnlfYXR0cl9sZW4oeGRyLCBzYXZlcCwgYXR0 cmxlbik7DQo+ICsJcmVzLT5ibSA9IGJpdG1hcFswXTsNCj4gKw0KPiArCWRwcmludGsoIiVzIGJt PTB4JXggcmRfc3o9JWxsdSB3cl9zej0lbGx1IHJkX2lvPSVsbHUgd3JfaW89JWxsdVxuIiwNCj4g KwkJIF9fZnVuY19fLCByZXMtPmJtLCByZXMtPnJkX3N6LCByZXMtPndyX3N6LCByZXMtPnJkX2lv X3N6LA0KPiArCQlyZXMtPndyX2lvX3N6KTsNCj4gK3hkcl9lcnJvcjoNCj4gKwlkcHJpbnRrKCIl cyByZXQ9JWQhXG4iLCBfX2Z1bmNfXywgc3RhdHVzKTsNCj4gKwlyZXR1cm4gc3RhdHVzOw0KPiAr fQ0KPiArDQo+ICsvKg0KPiArICogVGhyZXNob2xkcyBvbiBwTkZTIGRpcmVjdCBJL08gdnJzIE1E UyBJL08NCj4gKyAqLw0KPiArc3RhdGljIGludCBkZWNvZGVfYXR0cl9tZHN0aHJlc2hvbGQoc3Ry dWN0IHhkcl9zdHJlYW0gKnhkciwNCj4gKwkJCQkgICAgdWludDMyX3QgKmJpdG1hcCwNCj4gKwkJ CQkgICAgc3RydWN0IG5mczRfdGhyZXNob2xkICpyZXMpDQo+ICt7DQo+ICsJX19iZTMyICpwOw0K PiArCWludCBzdGF0dXMgPSAwOw0KPiArCXVpbnQzMl90IG51bTsNCj4gKw0KPiArCWlmICh1bmxp a2VseShiaXRtYXBbMl0gJiAoRkFUVFI0X1dPUkQyX01EU1RIUkVTSE9MRCAtIDFVKSkpDQo+ICsJ CXJldHVybiAtRUlPOw0KPiArCWlmIChsaWtlbHkoYml0bWFwWzJdICYgRkFUVFI0X1dPUkQyX01E U1RIUkVTSE9MRCkpIHsNCj4gKwkJcCA9IHhkcl9pbmxpbmVfZGVjb2RlKHhkciwgNCk7DQo+ICsJ CWlmICh1bmxpa2VseSghcCkpDQo+ICsJCQlnb3RvIG91dF9vdmVyZmxvdzsNCj4gKwkJbnVtID0g YmUzMl90b19jcHVwKHApOw0KPiArCQlpZiAobnVtID09IDApDQo+ICsJCQlyZXR1cm4gMDsNCj4g KwkJaWYgKG51bSA+IDEpDQo+ICsJCQlwcmludGsoS0VSTl9JTkZPICIlczogV2FybmluZzogTXVs dGlwbGUgcE5GUyBsYXlvdXQgIg0KPiArCQkJCSJkcml2ZXJzIHBlciBmaWxlc3lzdGVtIG5vdCBz dXBwb3J0ZWRcbiIsDQo+ICsJCQkJX19mdW5jX18pOw0KPiArDQo+ICsJCXN0YXR1cyA9IGRlY29k ZV9maXJzdF90aHJlc2hvbGRfaXRlbTQoeGRyLCByZXMpOw0KPiArCX0NCj4gKwlyZXR1cm4gc3Rh dHVzOw0KPiArb3V0X292ZXJmbG93Og0KPiArCXByaW50X292ZXJmbG93X21zZyhfX2Z1bmNfXywg eGRyKTsNCj4gKwlyZXR1cm4gLUVJTzsNCj4gK30NCj4gKw0KPiAgc3RhdGljIGludCBkZWNvZGVf Z2V0ZmF0dHJfYXR0cnMoc3RydWN0IHhkcl9zdHJlYW0gKnhkciwgdWludDMyX3QgKmJpdG1hcCwN Cj4gIAkJc3RydWN0IG5mc19mYXR0ciAqZmF0dHIsIHN0cnVjdCBuZnNfZmggKmZoLA0KPiAgCQlz dHJ1Y3QgbmZzNF9mc19sb2NhdGlvbnMgKmZzX2xvYywNCj4gQEAgLTQyODksNiArNDQwNiwxMCBA QCBzdGF0aWMgaW50IGRlY29kZV9nZXRmYXR0cl9hdHRycyhzdHJ1Y3QgeGRyX3N0cmVhbSAqeGRy LCB1aW50MzJfdCAqYml0bWFwLA0KPiAgCQlnb3RvIHhkcl9lcnJvcjsNCj4gIAlmYXR0ci0+dmFs aWQgfD0gc3RhdHVzOw0KPiAgDQo+ICsJc3RhdHVzID0gZGVjb2RlX2F0dHJfbWRzdGhyZXNob2xk KHhkciwgYml0bWFwLCAmZmF0dHItPm1kc3RocmVzaG9sZCk7DQo+ICsJaWYgKHN0YXR1cyA8IDAp DQo+ICsJCWdvdG8geGRyX2Vycm9yOw0KPiArDQo+ICB4ZHJfZXJyb3I6DQo+ICAJZHByaW50aygi JXM6IHhkciByZXR1cm5lZCAlZFxuIiwgX19mdW5jX18sIC1zdGF0dXMpOw0KPiAgCXJldHVybiBz dGF0dXM7DQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25mczQuaCBiL2luY2x1ZGUvbGlu dXgvbmZzNC5oDQo+IGluZGV4IDA5ODcxNDYuLjcyYjZiYWQgMTAwNjQ0DQo+IC0tLSBhL2luY2x1 ZGUvbGludXgvbmZzNC5oDQo+ICsrKyBiL2luY2x1ZGUvbGludXgvbmZzNC5oDQo+IEBAIC01MjYs NiArNTI2LDEzIEBAIGVudW0gbG9ja190eXBlNCB7DQo+ICAjZGVmaW5lIEZBVFRSNF9XT1JEMV9N T1VOVEVEX09OX0ZJTEVJRCAgKDFVTCA8PCAyMykNCj4gICNkZWZpbmUgRkFUVFI0X1dPUkQxX0ZT X0xBWU9VVF9UWVBFUyAgICAoMVVMIDw8IDMwKQ0KPiAgI2RlZmluZSBGQVRUUjRfV09SRDJfTEFZ T1VUX0JMS1NJWkUgICAgICgxVUwgPDwgMSkNCj4gKyNkZWZpbmUgRkFUVFI0X1dPUkQyX01EU1RI UkVTSE9MRCAgICAgICAoMVVMIDw8IDQpDQo+ICsNCj4gKy8qIE1EUyB0aHJlc2hvbGQgYml0bWFw IGJpdHMgKi8NCj4gKyNkZWZpbmUgVEhSRVNIT0xEX1JEICAgICAgICAgICAgICAgICAgICAoMVVM IDw8IDApDQo+ICsjZGVmaW5lIFRIUkVTSE9MRF9XUiAgICAgICAgICAgICAgICAgICAgKDFVTCA8 PCAxKQ0KPiArI2RlZmluZSBUSFJFU0hPTERfUkRfSU8gICAgICAgICAgICAgICAgICgxVUwgPDwg MikNCj4gKyNkZWZpbmUgVEhSRVNIT0xEX1dSX0lPICAgICAgICAgICAgICAgICAoMVVMIDw8IDMp DQo+ICANCj4gICNkZWZpbmUgTkZTUFJPQzRfTlVMTCAwDQo+ICAjZGVmaW5lIE5GU1BST0M0X0NP TVBPVU5EIDENCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmZzX3hkci5oIGIvaW5jbHVk ZS9saW51eC9uZnNfeGRyLmgNCj4gaW5kZXggMmU1M2EzZi4uZDIzMzc5ZCAxMDA2NDQNCj4gLS0t IGEvaW5jbHVkZS9saW51eC9uZnNfeGRyLmgNCj4gKysrIGIvaW5jbHVkZS9saW51eC9uZnNfeGRy LmgNCj4gQEAgLTM1LDYgKzM1LDE1IEBAIHN0YXRpYyBpbmxpbmUgaW50IG5mc19mc2lkX2VxdWFs KGNvbnN0IHN0cnVjdCBuZnNfZnNpZCAqYSwgY29uc3Qgc3RydWN0IG5mc19mc2lkDQo+ICAJcmV0 dXJuIGEtPm1ham9yID09IGItPm1ham9yICYmIGEtPm1pbm9yID09IGItPm1pbm9yOw0KPiAgfQ0K PiAgDQo+ICtzdHJ1Y3QgbmZzNF90aHJlc2hvbGQgew0KPiArCV9fdTMyCWJtOw0KPiArCV9fdTMy CWxfdHlwZTsNCj4gKwlfX3U2NAlyZF9zejsNCj4gKwlfX3U2NAl3cl9zejsNCj4gKwlfX3U2NAly ZF9pb19zejsNCj4gKwlfX3U2NAl3cl9pb19zejsNCj4gK307DQo+ICsNCj4gIHN0cnVjdCBuZnNf ZmF0dHIgew0KPiAgCXVuc2lnbmVkIGludAkJdmFsaWQ7CQkvKiB3aGljaCBmaWVsZHMgYXJlIHZh bGlkICovDQo+ICAJdW1vZGVfdAkJCW1vZGU7DQo+IEBAIC02Nyw2ICs3Niw3IEBAIHN0cnVjdCBu ZnNfZmF0dHIgew0KPiAgCXVuc2lnbmVkIGxvbmcJCWdlbmNvdW50Ow0KPiAgCXN0cnVjdCBuZnM0 X3N0cmluZwkqb3duZXJfbmFtZTsNCj4gIAlzdHJ1Y3QgbmZzNF9zdHJpbmcJKmdyb3VwX25hbWU7 DQo+ICsJc3RydWN0IG5mczRfdGhyZXNob2xkCW1kc3RocmVzaG9sZDsJLyogcE5GUyB0aHJlc2hv bGQgaGludHMgKi8NCg0KSXQgc2hvdWxkIF9ub3RfIGJlIG5lY2Vzc2FyeSB0byBwdXQgb25lIG9m IHRoZXNlIGluIGVhY2ggYW5kIGV2ZXJ5DQpzdHJ1Y3QgbmZzX2ZhdHRyOiB0aGF0IGlzIGFuIGlu Y3JlYXNlIG9mIDMyIGJ5dGVzIGZvciBzb21ldGhpbmcgdGhhdCBpcw0Kb25seSBvZiBpbnRlcmVz dCB0byBORlN2NC4xLCBhbmQgb25seSBvbiBPUEVOIGF0IHRoYXQuDQoNClBsZWFzZSBtYWtlIGl0 IGEgcG9pbnRlciB0byBhbiBtZHN0aHJlc2hvbGQgc3RydWN0dXJlIHRoYXQgaXMgc3RvcmVkIGlu DQp0aGUgc3RydWN0IG9wZW5kYXRhLg0KDQo+ICB9Ow0KPiAgDQo+ICAjZGVmaW5lIE5GU19BVFRS X0ZBVFRSX1RZUEUJCSgxVSA8PCAwKQ0KDQotLSANClRyb25kIE15a2xlYnVzdA0KTGludXggTkZT IGNsaWVudCBtYWludGFpbmVyDQoNCk5ldEFwcA0KVHJvbmQuTXlrbGVidXN0QG5ldGFwcC5jb20N Cnd3dy5uZXRhcHAuY29tDQoNCg==