From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id q94KCAus205873 for ; Thu, 4 Oct 2012 15:12:11 -0500 Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id C4ExKQBkgY6QmBVa for ; Thu, 04 Oct 2012 13:13:35 -0700 (PDT) Date: Thu, 4 Oct 2012 16:13:34 -0400 (EDT) From: Tomas Racek Message-ID: <241834517.1979252.1349381614990.JavaMail.root@redhat.com> In-Reply-To: Subject: Re: [PATCH v3] xfstests: Use upstream version of fstrim instead of the local one MIME-Version: 1.0 List-Id: XFS Filesystem from SGI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: xfs-bounces@oss.sgi.com Errors-To: xfs-bounces@oss.sgi.com To: =?utf-8?B?THVrw6HFoQ==?= Czerner Cc: xfs@oss.sgi.com LS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLQo+IE9uIFRodSwgNCBPY3QgMjAxMiwgVG9tYXMg UmFjZWsgd3JvdGU6Cj4gCj4gPiBEYXRlOiBUaHUsIDQgT2N0IDIwMTIgMDQ6NDc6NTQgLTA0MDAg KEVEVCkKPiA+IEZyb206IFRvbWFzIFJhY2VrIDx0cmFjZWtAcmVkaGF0LmNvbT4KPiA+IFRvOiBM dWvDocWhIEN6ZXJuZXIgPGxjemVybmVyQHJlZGhhdC5jb20+Cj4gPiBDYzogeGZzQG9zcy5zZ2ku Y29tCj4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzXSB4ZnN0ZXN0czogVXNlIHVwc3RyZWFtIHZl cnNpb24gb2YgZnN0cmltCj4gPiBpbnN0ZWFkIG9mCj4gPiAgICAgdGhlIGxvY2FsIG9uZQo+ID4g Cj4gPiAtLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tCj4gPiA+IE9uIFdlZCwgMTUgQXVnIDIw MTIsIFRvbWFzIFJhY2VrIHdyb3RlOgo+ID4gPiAKPiA+ID4gPiBEYXRlOiBXZWQsIDE1IEF1ZyAy MDEyIDE1OjAwOjQ1ICswMjAwCj4gPiA+ID4gRnJvbTogVG9tYXMgUmFjZWsgPHRyYWNla0ByZWRo YXQuY29tPgo+ID4gPiA+IFRvOiB4ZnNAb3NzLnNnaS5jb20KPiA+ID4gPiBDYzogbGN6ZXJuZXJA cmVkaGF0LmNvbSwgVG9tYXMgUmFjZWsgPHRyYWNla0ByZWRoYXQuY29tPgo+ID4gPiA+IFN1Ympl Y3Q6IFtQQVRDSCB2M10geGZzdGVzdHM6IFVzZSB1cHN0cmVhbSB2ZXJzaW9uIG9mIGZzdHJpbQo+ ID4gPiA+IGluc3RlYWQgb2YgdGhlCj4gPiA+ID4gICAgIGxvY2FsIG9uZQo+ID4gPiA+IAo+ID4g PiA+IExvY2FsIHZlcnNpb24gb2YgZnN0cmltIHdhcyBkcm9wcGVkIHNvIHRoYXQgd2UgZGVwZW5k IG9uCj4gPiA+ID4gdXBzdHJlYW0KPiA+ID4gPiB2ZXJzaW9uIHdoaWNoIGlzIG5vdyBhdmFpbGFi bGUgdmlhICRGU1RSSU1fUFJPRy4KPiA+ID4gPiBfcmVxdWlyZV9mc3RyaW0KPiA+ID4gPiB3YXMK PiA+ID4gPiBhZGRlZCB0byBjaGVjayBpZiBmc3RyaW0gaXMgYXZhaWxhYmxlIGluIHRoZSBzeXN0 ZW0gYW5kCj4gPiA+ID4gX3Rlc3RfYmF0Y2hlZF9kaXNjYXJkIHRvIGNoZWNrIGlmIHdlIGNhbiBy dW4gZnN0cmltIG9uIGNlcnRhaW4KPiA+ID4gPiBtb3VudHBvaW50Lgo+ID4gPiA+IAo+ID4gPiA+ IEFsc28gdGVzdHMgMjUxIGFuZCAyNjAgd2VyZSBtb2RpZmllZCB0byByZWZsZWN0IHRoaXMgY2hh bmdlLgo+ID4gPiA+IAo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFRvbWFzIFJhY2VrIDx0cmFjZWtA cmVkaGF0LmNvbT4KPiA+ID4gPiAtLS0KPiA+ID4gPiAgLmdpdGlnbm9yZSAgICB8ICAgIDEgLQo+ ID4gPiA+ICAyNTEgICAgICAgICAgIHwgICAxNCArLS0KPiA+ID4gPiAgMjYwICAgICAgICAgICB8 ICAgMzYgKysrKystLS0tCj4gPiA+ID4gIDI2MC5vdXQgICAgICAgfCAgICA4ICstCj4gPiA+ID4g IGNvbW1vbi5jb25maWcgfCAgICAxICsKPiA+ID4gPiAgY29tbW9uLnJjICAgICB8ICAgMTMgKysr Cj4gPiA+ID4gIHNyYy9NYWtlZmlsZSAgfCAgICAyICstCj4gPiA+ID4gIHNyYy9mc3RyaW0uYyAg fCAgMjU3Cj4gPiA+ID4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQo+ID4gPiA+ICA4IGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMo KyksIDI4NyBkZWxldGlvbnMoLSkKPiA+ID4gPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9mc3Ry aW0uYwo+ID4gPiA+IAo+ID4gPiA+IGRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9y ZQo+ID4gPiA+IGluZGV4IDkwMGZmOTUuLmMwZTBlNGMgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvLmdp dGlnbm9yZQo+ID4gPiA+ICsrKyBiLy5naXRpZ25vcmUKPiA+ID4gPiBAQCAtMzcsNyArMzcsNiBA QCBzcmMvZmlsbAo+ID4gPiA+ICBzcmMvZmlsbDIKPiA+ID4gPiAgc3JjL2ZzX3Blcm1zCj4gPiA+ ID4gIHNyYy9mc3Rlc3QKPiA+ID4gPiAtc3JjL2ZzdHJpbQo+ID4gPiA+ICBzcmMvZnRydW5jCj4g PiA+ID4gIHNyYy9nZW5oYXNobmFtZXMKPiA+ID4gPiAgc3JjL2dldGRldmljZXNpemUKPiA+ID4g PiBkaWZmIC0tZ2l0IGEvMjUxIGIvMjUxCj4gPiA+ID4gaW5kZXggZjQ2YjZlMi4uZGJiNmJhNyAx MDA3NTUKPiA+ID4gPiAtLS0gYS8yNTEKPiA+ID4gPiArKysgYi8yNTEKPiA+ID4gPiBAQCAtNDQs NiArNDQsNyBAQCBteXBpZD0kJAo+ID4gPiA+ICBfc3VwcG9ydGVkX2ZzIGdlbmVyaWMKPiA+ID4g PiAgX3N1cHBvcnRlZF9vcyBMaW51eAo+ID4gPiA+ICBfcmVxdWlyZV9zY3JhdGNoCj4gPiA+ID4g K19yZXF1aXJlX2ZzdHJpbQo+ID4gPiA+ICBfc2NyYXRjaF9ta2ZzID4vZGV2L251bGwgMj4mMQo+ ID4gPiA+ICBfc2NyYXRjaF9tb3VudAo+ID4gPiA+ICAKPiA+ID4gPiBAQCAtNzEsMTYgKzcyLDEx IEBAIF9mYWlsKCkKPiA+ID4gPiAgCWtpbGwgJG15cGlkIDI+IC9kZXYvbnVsbAo+ID4gPiA+ICB9 Cj4gPiA+ID4gIAo+ID4gPiA+IC1fY2hlY2tfZnN0cmltX3N1cHBvcnQoKQo+ID4gPiA+IC17Cj4g PiA+ID4gLQkkaGVyZS9zcmMvZnN0cmltIC1sIDEwTSAkU0NSQVRDSF9NTlQgJj4gL2Rldi9udWxs Cj4gPiA+ID4gLX0KPiA+ID4gCj4gPiA+IEdvb2QgdG8gc2VlIHRoYXQgeW91J3ZlIHJlcGxhY2Vk IHRoaXMgd2l0aCBnZW5lcmljIGNoZWNrLgo+ID4gPiAKPiA+ID4gPiAtCj4gPiA+ID4gIF9ndWVz c19tYXhfbWlubGVuKCkKPiA+ID4gPiAgewo+ID4gPiA+ICAJbW1sZW49MTAwMDAwCj4gPiA+ID4g IAl3aGlsZSBbICRtbWxlbiAtZ3QgMSBdOyBkbwo+ID4gPiA+IC0JCSRoZXJlL3NyYy9mc3RyaW0g LWwgJCgoJG1tbGVuKjIpKWsgLW0gJHttbWxlbn1rICRTQ1JBVENIX01OVAo+ID4gPiA+ICY+Cj4g PiA+ID4gL2Rldi9udWxsICYmIGJyZWFrCj4gPiA+ID4gKwkJJEZTVFJJTV9QUk9HIC1sICQoKCRt bWxlbioyKSlrIC1tICR7bW1sZW59ayAkU0NSQVRDSF9NTlQgJj4KPiA+ID4gPiAvZGV2L251bGwg JiYgYnJlYWsKPiA+ID4gPiAgCQltbWxlbj0kKCgkbW1sZW4vMikpCj4gPiA+ID4gIAlkb25lCj4g PiA+ID4gIAllY2hvICRtbWxlbgo+ID4gPiA+IEBAIC0xMDIsMTIgKzk4LDEyIEBAIGZzdHJpbV9s b29wKCkKPiA+ID4gPiAgCQltaW5sZW49JCgoKFJBTkRPTSooJFJBTkRPTSUyKzEpKSUkbW1sZW4p KQo+ID4gPiA+ICAJCXN0YXJ0PSRSQU5ET00KPiA+ID4gPiAgCQlpZiBbICQoKFJBTkRPTSUxMCkp IC1ndCA3IF07IHRoZW4KPiA+ID4gPiAtCQkJJGhlcmUvc3JjL2ZzdHJpbSAkU0NSQVRDSF9NTlQg Jgo+ID4gPiA+ICsJCQkkRlNUUklNX1BST0cgJFNDUkFUQ0hfTU5UICYKPiA+ID4gPiAgCQkJZnBp ZD0kIQo+ID4gPiA+ICAJCQl3YWl0ICRmcGlkCj4gPiA+ID4gIAkJZmkKPiA+ID4gPiAgCQl3aGls ZSBbICRzdGFydCAtbHQgJGZzaXplIF0gOyBkbwo+ID4gPiA+IC0JCQkkaGVyZS9zcmMvZnN0cmlt IC1tICR7bWlubGVufWsgLXMgJHtzdGFydH1rIC1sICR7c3RlcH1rCj4gPiA+ID4gJFNDUkFUQ0hf TU5UICYKPiA+ID4gPiArCQkJJEZTVFJJTV9QUk9HIC1tICR7bWlubGVufWsgLW8gJHtzdGFydH1r IC1sICR7c3RlcH1rCj4gPiA+ID4gJFNDUkFUQ0hfTU5UICYKPiA+ID4gPiAgCQkJZnBpZD0kIQo+ ID4gPiA+ICAJCQl3YWl0ICRmcGlkCj4gPiA+ID4gIAkJCXN0YXJ0PSQoKCAkc3RhcnQgKyAkc3Rl cCApKQo+ID4gPiA+IEBAIC0xNTcsNyArMTUzLDcgQEAgY29udGVudD0kaGVyZQo+ID4gPiA+ICAK PiA+ID4gPiAgIyBDaGVjayBmb3IgRklUUklNIHN1cHBvcnQKPiA+ID4gPiAgZWNobyAtbiAiQ2hl Y2tpbmcgRklUUklNIHN1cHBvcnQ6ICIKPiA+ID4gPiAtX2NoZWNrX2ZzdHJpbV9zdXBwb3J0IHx8 IF9ub3RydW4gIkZTVFJJTSBpcyBub3Qgc3VwcG9ydGVkIgo+ID4gPiA+ICtfdGVzdF9iYXRjaGVk X2Rpc2NhcmQgJFNDUkFUQ0hfTU5UIHx8IF9ub3RydW4gIkZJVFJJTSBub3QKPiA+ID4gPiBzdXBw b3J0ZWQgb24gJFNDUkFUQ0hfREVWIgo+ID4gPiAKPiA+ID4gZ29vZAo+ID4gPiAKPiA+ID4gPiAg ZWNobyAiZG9uZS4iCj4gPiA+ID4gIAo+ID4gPiA+ICBta2RpciAtcCAkdG1wCj4gPiA+ID4gZGlm ZiAtLWdpdCBhLzI2MCBiLzI2MAo+ID4gPiA+IGluZGV4IGIwMDVjZDMuLjIxYWE4NjYgMTAwNzU1 Cj4gPiA+ID4gLS0tIGEvMjYwCj4gPiA+ID4gKysrIGIvMjYwCj4gPiA+ID4gQEAgLTQxLDEzICs0 MSwxMyBAQCBteXBpZD0kJAo+ID4gPiA+ICBfc3VwcG9ydGVkX2ZzIGdlbmVyaWMKPiA+ID4gPiAg X3N1cHBvcnRlZF9vcyBMaW51eAo+ID4gPiA+ICBfcmVxdWlyZV9tYXRoCj4gPiA+ID4gK19yZXF1 aXJlX2ZzdHJpbQo+ID4gPiA+ICAKPiA+ID4gPiAgX3JlcXVpcmVfc2NyYXRjaAo+ID4gPiA+ICBf c2NyYXRjaF9ta2ZzID4vZGV2L251bGwgMj4mMQo+ID4gPiA+ICBfc2NyYXRjaF9tb3VudAo+ID4g PiA+ICAKPiA+ID4gPiAtRlNUUklNPSIkaGVyZS9zcmMvZnN0cmltIgo+ID4gPiA+IC0iJEZTVFJJ TSIgLWwgMTBNICRTQ1JBVENIX01OVCAmPiAvZGV2L251bGwgfHwgX25vdHJ1biAiRlNUUklNCj4g PiA+ID4gaXMKPiA+ID4gPiBub3Qgc3VwcG9ydGVkIgo+ID4gPiA+ICtfdGVzdF9iYXRjaGVkX2Rp c2NhcmQgJFNDUkFUQ0hfTU5UIHx8IF9ub3RydW4gIkZJVFJJTSBub3QKPiA+ID4gPiBzdXBwb3J0 ZWQgb24gJFNDUkFUQ0hfREVWIgo+ID4gPiA+ICAKPiA+ID4gPiAgZnNzaXplPSQoZGYgLWsgfCBn cmVwICIkU0NSQVRDSF9NTlQiIHwgZ3JlcCAiJFNDUkFUQ0hfREVWIiAgfAo+ID4gPiA+ICBhd2sK PiA+ID4gPiAgJ3twcmludCAkMn0nKQo+ID4gPiA+ICAKPiA+ID4gPiBAQCAtNTksMjAgKzU5LDI0 IEBAIG1heF82NGJpdD0kKF9tYXRoICIyXjY0IC0gMSIpCj4gPiA+ID4gICMgdGhlIGZpbGUgc3lz dGVtCj4gPiA+ID4gIAo+ID4gPiA+ICBlY2hvICJbK10gU3RhcnQgYmV5b25kIHRoZSBlbmQgb2Yg ZnMgKHNob3VsZCBmYWlsKSIKPiA+ID4gPiAtIiRGU1RSSU0iIC1zICRiZXlvbmRfZW9mcyAkU0NS QVRDSF9NTlQKPiA+ID4gPiArb3V0PSQoJEZTVFJJTV9QUk9HIC1vICRiZXlvbmRfZW9mcyAkU0NS QVRDSF9NTlQgMj4mMSkKPiA+ID4gPiAgWyAkPyAtZXEgMCBdICYmIHN0YXR1cz0xCj4gPiA+ID4g K2VjaG8gLW4gJG91dCB8IGN1dCAtZCAiOiIgLWYzLQo+ID4gPiAKPiA+ID4gSSBhbSBub3Qgc3Vy ZSB3aGF0IGlzIHRoZSBwb2ludCBvZiB0aGlzIGNoYW5nZSA/IFNpbXBseQo+ID4gPiBzL0ZTVFJJ TS9GU1RSSU1fUFJPRy8gc2hvdWxkIGJlIGZpbmUgcmlnaHQgPyBBbHNvIHlvdSBjaGFuZ2Ugc29t ZQo+ID4gPiBvZgo+ID4gPiBpdCBidXQgbm90IGFsbCBvZiBpdC4KPiA+IAo+ID4gVGhlIHJlYXNv biBmb3IgdGhpcyBpcyB0aGF0IHVwc3RyZWFtIGZzdHJpbSBwcmVmaXhlcyBlcnJvciBtZXNzYWdl Cj4gPiB3aXRoIHBhdGgsIHRoYXQgaXM6Cj4gPiAKPiA+ICMgZnN0cmltIC12IC1vIGBlY2hvIDJe NjQtMSB8IGJjYCAvbW50L3Rlc3QvCj4gPiBmc3RyaW06IC9tbnQvdGVzdC86IEZJVFJJTSBpb2N0 bCBmYWlsZWQ6IEludmFsaWQgYXJndW1lbnQKPiA+IAo+ID4gdnMgb3JpZ2luYWw6Cj4gPiAKPiA+ ICMgLi9mc3RyaW0gLXYgLXMgYGVjaG8gMl42NC0xIHwgYmNgIC9tbnQvdGVzdC8KPiA+IGZzdHJp bTogRlNUUklNOiBJbnZhbGlkIGFyZ3VtZW50Cj4gPiAKPiA+IEFuZCBzaW1wbGUgIiRGU1RSSU1f UFJPRyAuLi4gfCBjdXQgLi4uIiBkb2Vzbid0IHByZXNlcnZlIChlcnJvcikKPiA+IHJldHVybiB2 YWx1ZS4KPiA+IAo+ID4gInNob3VsZCBzdWNjZWVkIiBjYWxscyB3ZXJlbid0IGNoYW5nZWQgYmVj YXVzZSBubyBvdXRwdXQgaXMKPiA+IGV4cGVjdGVkLgo+IAo+IE9rLCBzbyB0aGUgcmVhc29uIGlz IHRvIHN0cmlwIHRoZSB2YXJpYWJsZSBtb3VudCBwb2ludCBmcm9tIHRoZQo+IGVycm9yIG1lc3Nh Z2UuIEl0IHNvdW5kcyBvayB0aGFuLgo+IAo+IFRoaXMgbWFrZXMgbWUgdGhpbmsgdGhhdCB3ZSBt YXliZSB3YW50IHRvIGhhdmUgYSBmaWx0ZXIgZnVuY3Rpb24gdG8KPiBmaWx0ZXIgb3V0IGFsbCB0 aGUgdmFyaWFibGVzIHN1Y2ggYXMgU0NSQVRDSF9NTlQsIFNDUkFUQ0hfREVWLAo+IFRFU1RfRElS LAo+IFRFU1RfREVWIGFuZCBtYXliZSBtb3JlIGFuZCByZXBsYWNlIHRoZW4gd2l0aCB0aGUgc29t ZSBhcHByb3ByaWF0ZQo+IHN0cmluZ3MKPiAoU0NSQVRDSF9NTlQgZXRjLiBtYXliZT8pLiBJIGFt IHN1cmUgbW9yZSB0ZXN0cyBjYW4gYmVuZWZpdCBmcm9tIHRoaXMKPiBub3QKPiBuZWVkaW5nIHRv IHRvIHRoZSBmaWx0ZXJpbmcgb24gdGhlaXIgb3duLgoKT2gsIHRoYW5rcyBmb3IgcmVtaW5kaW5n IG1lIC0tIHRoZXkgYWxyZWFkeSBleGlzdCAoc2VlIGNvbW1vbi5maWx0ZXIpLCBJIGZvcmdvdCBh Ym91dCB0aGVtLiBJIHdpbGwgdXNlIHRoZW0gaW4gbmV4dCB2ZXJzaW9uLiA7LSkKCgpUb20KCj4g Cj4gPiAKPiA+ID4gPiAgCj4gPiA+ID4gIGVjaG8gIlsrXSBTdGFydCBiZXlvbmQgdGhlIGVuZCBv ZiBmcyB3aXRoIGxlbiBzZXQgKHNob3VsZAo+ID4gPiA+ICBmYWlsKSIKPiA+ID4gPiAtIiRGU1RS SU0iIC1zICRiZXlvbmRfZW9mcyAtbDFNICRTQ1JBVENIX01OVAo+ID4gPiA+ICtvdXQ9JCgkRlNU UklNX1BST0cgLW8gJGJleW9uZF9lb2ZzIC1sMU0gJFNDUkFUQ0hfTU5UIDI+JjEpCj4gPiA+ID4g IFsgJD8gLWVxIDAgXSAmJiBzdGF0dXM9MQo+ID4gPiA+ICtlY2hvIC1uICRvdXQgfCBjdXQgLWQg IjoiIC1mMy0KPiA+ID4gCj4gPiA+IHNhbWUgaGVyZQo+ID4gPiAKPiA+ID4gPiAgCj4gPiA+ID4g IGVjaG8gIlsrXSBTdGFydCA9IDJeNjQtMSAoc2hvdWxkIGZhaWwpIgo+ID4gPiA+IC0iJEZTVFJJ TSIgLXMgJG1heF82NGJpdCAkU0NSQVRDSF9NTlQKPiA+ID4gPiArb3V0PSQoJEZTVFJJTV9QUk9H IC1vICRtYXhfNjRiaXQgJFNDUkFUQ0hfTU5UIDI+JjEpCj4gPiA+ID4gIFsgJD8gLWVxIDAgXSAm JiBzdGF0dXM9MQo+ID4gPiA+ICtlY2hvIC1uICRvdXQgfCBjdXQgLWQgIjoiIC1mMy0KPiA+ID4g Cj4gPiA+IGhlcmUKPiA+ID4gCj4gPiA+ID4gIAo+ID4gPiA+ICBlY2hvICJbK10gU3RhcnQgPSAy XjY0LTEgYW5kIGxlbiBpcyBzZXQgKHNob3VsZCBmYWlsKSIKPiA+ID4gPiAtIiRGU1RSSU0iIC1z ICRtYXhfNjRiaXQgLWwxTSAkU0NSQVRDSF9NTlQKPiA+ID4gPiArb3V0PSQoJEZTVFJJTV9QUk9H IC1vICRtYXhfNjRiaXQgLWwxTSAkU0NSQVRDSF9NTlQgMj4mMSkKPiA+ID4gPiAgWyAkPyAtZXEg MCBdICYmIHN0YXR1cz0xCj4gPiA+ID4gK2VjaG8gLW4gJG91dCB8IGN1dCAtZCAiOiIgLWYzLQo+ ID4gPiAKPiA+ID4gYW5kIGhlcmUuCj4gPiA+IAo+ID4gPiA+ICAKPiA+ID4gPiAgX3NjcmF0Y2hf dW5tb3VudAo+ID4gPiA+ICBfc2NyYXRjaF9ta2ZzID4vZGV2L251bGwgMj4mMQo+ID4gPiA+IEBA IC04MiwxNiArODYsMTYgQEAgX3NjcmF0Y2hfbW91bnQKPiA+ID4gPiAgIyBzaW5jZSB0aGUgbGVu Z3RoIHNob3VsZCBiZSB0cnVuY2F0ZWQKPiA+ID4gPiAgCj4gPiA+ID4gIGVjaG8gIlsrXSBEZWZh dWx0IGxlbmd0aCAoc2hvdWxkIHN1Y2NlZWQpIgo+ID4gPiA+IC0iJEZTVFJJTSIgJFNDUkFUQ0hf TU5UCj4gPiA+ID4gKyRGU1RSSU1fUFJPRyAkU0NSQVRDSF9NTlQKPiA+ID4gPiAgWyAkPyAtbmUg MCBdICYmIHN0YXR1cz0xCj4gPiA+ID4gIGVjaG8gIlsrXSBEZWZhdWx0IGxlbmd0aCB3aXRoIHN0 YXJ0IHNldCAoc2hvdWxkIHN1Y2NlZWQpIgo+ID4gPiA+IC0iJEZTVFJJTSIgLXMxME0gJFNDUkFU Q0hfTU5UCj4gPiA+ID4gKyRGU1RSSU1fUFJPRyAtbzEwTSAkU0NSQVRDSF9NTlQKPiA+ID4gPiAg WyAkPyAtbmUgMCBdICYmIHN0YXR1cz0xCj4gPiA+ID4gIGVjaG8gIlsrXSBMZW5ndGggYmV5b25k IHRoZSBlbmQgb2YgZnMgKHNob3VsZCBzdWNjZWVkKSIKPiA+ID4gPiAtIiRGU1RSSU0iIC1sICRi ZXlvbmRfZW9mcyAkU0NSQVRDSF9NTlQKPiA+ID4gPiArJEZTVFJJTV9QUk9HIC1sICRiZXlvbmRf ZW9mcyAkU0NSQVRDSF9NTlQKPiA+ID4gPiAgWyAkPyAtbmUgMCBdICYmIHN0YXR1cz0xCj4gPiA+ ID4gIGVjaG8gIlsrXSBMZW5ndGggYmV5b25kIHRoZSBlbmQgb2YgZnMgd2l0aCBzdGFydCBzZXQg KHNob3VsZAo+ID4gPiA+ICBzdWNjZWVkKSIKPiA+ID4gPiAtIiRGU1RSSU0iIC1zMTBNIC1sICRi ZXlvbmRfZW9mcyAkU0NSQVRDSF9NTlQKPiA+ID4gPiArJEZTVFJJTV9QUk9HIC1vMTBNIC1sICRi ZXlvbmRfZW9mcyAkU0NSQVRDSF9NTlQKPiA+ID4gPiAgWyAkPyAtbmUgMCBdICYmIHN0YXR1cz0x Cj4gPiA+ID4gIAo+ID4gPiA+ICBfc2NyYXRjaF91bm1vdW50Cj4gPiA+ID4gQEAgLTEwMSw4ICsx MDUsOSBAQCBfc2NyYXRjaF9tb3VudAo+ID4gPiA+ICAjIFRoaXMgaXMgYSBiaXQgZnV6enksIGJ1 dCBzaW5jZSB0aGUgZmlsZSBzeXN0ZW0gaXMgZnJlc2gKPiA+ID4gPiAgIyB0aGVyZSBzaG91bGQg YmUgYXQgbGVhc3QgKGZzc2l6ZS8yKSBmcmVlIHNwYWNlIHRvIHRyaW0uCj4gPiA+ID4gICMgVGhp cyBpcyBzdXBwb3NlZCB0byBjYXRjaCB3cm9uZyBGSVRSSU0gYXJndW1lbnQgaGFuZGxpbmcKPiA+ ID4gPiAtb3V0PSQoIiRGU1RSSU0iIC12IC1zMTBNICRTQ1JBVENIX01OVCkKPiA+ID4gPiAtYnl0 ZXM9JHtvdXQlJSAqfQo+ID4gPiA+ICtvdXQ9JCgkRlNUUklNX1BST0cgLXYgLW8xME0gJFNDUkFU Q0hfTU5UKQo+ID4gPiA+ICtub3ByZWY9JHtvdXQjIyo6IH0KPiA+ID4gPiArYnl0ZXM9JHtub3By ZWYlJSAqfQo+ID4gCj4gPiBJdCdzIHNpbWlsYXIgaGVyZSwganVzdCBzdHJpcCB0aGUgcGF0aCBm cm9tIHRoZSBvdXRwdXQuCj4gPiAKPiA+ID4gPiAgCj4gPiA+ID4gIGlmIFsgJGJ5dGVzIC1ndCAk KF9tYXRoICIkZnNzaXplKjEwMjQiKSBdOyB0aGVuCj4gPiA+ID4gIAlzdGF0dXM9MQo+ID4gPiA+ IEBAIC0xNTUsNyArMTYwLDcgQEAgX3NjcmF0Y2hfdW5tb3VudAo+ID4gPiA+ICBfc2NyYXRjaF9t a2ZzID4vZGV2L251bGwgMj4mMQo+ID4gPiA+ICBfc2NyYXRjaF9tb3VudAo+ID4gPiA+ICAjIEl0 IHNob3VsZCBmYWlsIHNpbmNlICRzdGFydCBpcyBiZXlvbmQgdGhlIGVuZCBvZiBmaWxlIHN5c3Rl bQo+ID4gPiA+IC0iJEZTVFJJTSIgLXMkc3RhcnQgLWwxME0gJFNDUkFUQ0hfTU5UICY+IC9kZXYv bnVsbAo+ID4gPiA+ICskRlNUUklNX1BST0cgLW8kc3RhcnQgLWwxME0gJFNDUkFUQ0hfTU5UICY+ IC9kZXYvbnVsbAo+ID4gPiA+ICBpZiBbICQ/IC1lcSAwIF07IHRoZW4KPiA+ID4gPiAgCXN0YXR1 cz0xCj4gPiA+ID4gIAllY2hvICJJdCBzZWVtcyB0aGF0IGZzIGxvZ2ljIGhhbmRsaW5nIHN0YXJ0 IlwKPiA+ID4gPiBAQCAtMTczLDggKzE3OCw5IEBAIF9zY3JhdGNoX21vdW50Cj4gPiA+ID4gICMg SXQgaXMgYmVjYXVzZSBidHJmcyBkb2VzIG5vdCBoYXZlIG5vdC15ZXQtdXNlZCBwYXJ0cyBvZiB0 aGUKPiA+ID4gPiAgZGV2aWNlCj4gPiA+ID4gICMgbWFwcGVkIGFuZCBzaW5jZSB3ZSBnb3QgaGVy ZSByaWdodCBhZnRlciB0aGUgbWtmcywgdGhlcmUgaXMKPiA+ID4gPiAgbm90Cj4gPiA+ID4gICMg ZW5vdWdoIGZyZWUgZXh0ZW50cyBpbiB0aGUgcm9vdCB0cmVlLgo+ID4gPiA+IC1vdXQ9JCgiJEZT VFJJTSIgLXYgLWwkbGVuICRTQ1JBVENIX01OVCkKPiA+ID4gPiAtYnl0ZXM9JHtvdXQlJSAqfQo+ ID4gPiA+ICtvdXQ9JCgkRlNUUklNX1BST0cgLXYgLWwkbGVuICRTQ1JBVENIX01OVCkKPiA+ID4g PiArbm9wcmVmPSR7b3V0IyMqOiB9Cj4gPiA+ID4gK2J5dGVzPSR7bm9wcmVmJSUgKn0KPiA+ID4g PiAgaWYgWyAkYnl0ZXMgLWxlICQoX21hdGggIiRmc3NpemUqNTEyIikgXSAmJiBbICRGU1RZUCAh PQo+ID4gPiA+ICAiYnRyZnMiIF07Cj4gPiA+ID4gIHRoZW4KPiA+ID4gPiAgCXN0YXR1cz0xCj4g PiA+ID4gIAllY2hvICJJdCBzZWVtcyB0aGF0IGZzIGxvZ2ljIGhhbmRsaW5nIGxlbiBhcmd1bWVu dCBvdmVyZmxvd3MiCj4gPiA+ID4gZGlmZiAtLWdpdCBhLzI2MC5vdXQgYi8yNjAub3V0Cj4gPiA+ ID4gaW5kZXggMTk5MzIwYS4uY2YwYjE0ZSAxMDA2NDQKPiA+ID4gPiAtLS0gYS8yNjAub3V0Cj4g PiA+ID4gKysrIGIvMjYwLm91dAo+ID4gPiA+IEBAIC0xLDEyICsxLDEyIEBACj4gPiA+ID4gIFFB IG91dHB1dCBjcmVhdGVkIGJ5IDI2MAo+ID4gPiA+ICBbK10gU3RhcnQgYmV5b25kIHRoZSBlbmQg b2YgZnMgKHNob3VsZCBmYWlsKQo+ID4gPiA+IC1mc3RyaW06IEZTVFJJTTogSW52YWxpZCBhcmd1 bWVudAo+ID4gPiA+ICsgRklUUklNIGlvY3RsIGZhaWxlZDogSW52YWxpZCBhcmd1bWVudAo+ID4g PiA+ICBbK10gU3RhcnQgYmV5b25kIHRoZSBlbmQgb2YgZnMgd2l0aCBsZW4gc2V0IChzaG91bGQg ZmFpbCkKPiA+ID4gPiAtZnN0cmltOiBGU1RSSU06IEludmFsaWQgYXJndW1lbnQKPiA+ID4gPiAr IEZJVFJJTSBpb2N0bCBmYWlsZWQ6IEludmFsaWQgYXJndW1lbnQKPiA+ID4gPiAgWytdIFN0YXJ0 ID0gMl42NC0xIChzaG91bGQgZmFpbCkKPiA+ID4gPiAtZnN0cmltOiBGU1RSSU06IEludmFsaWQg YXJndW1lbnQKPiA+ID4gPiArIEZJVFJJTSBpb2N0bCBmYWlsZWQ6IEludmFsaWQgYXJndW1lbnQK PiA+ID4gPiAgWytdIFN0YXJ0ID0gMl42NC0xIGFuZCBsZW4gaXMgc2V0IChzaG91bGQgZmFpbCkK PiA+ID4gPiAtZnN0cmltOiBGU1RSSU06IEludmFsaWQgYXJndW1lbnQKPiA+ID4gPiArIEZJVFJJ TSBpb2N0bCBmYWlsZWQ6IEludmFsaWQgYXJndW1lbnQKPiA+ID4gPiAgWytdIERlZmF1bHQgbGVu Z3RoIChzaG91bGQgc3VjY2VlZCkKPiA+ID4gPiAgWytdIERlZmF1bHQgbGVuZ3RoIHdpdGggc3Rh cnQgc2V0IChzaG91bGQgc3VjY2VlZCkKPiA+ID4gPiAgWytdIExlbmd0aCBiZXlvbmQgdGhlIGVu ZCBvZiBmcyAoc2hvdWxkIHN1Y2NlZWQpCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2NvbW1vbi5jb25m aWcgYi9jb21tb24uY29uZmlnCj4gPiA+ID4gaW5kZXggN2JlZDFjNS4uNTdmNTA1ZCAxMDA2NDQK PiA+ID4gPiAtLS0gYS9jb21tb24uY29uZmlnCj4gPiA+ID4gKysrIGIvY29tbW9uLmNvbmZpZwo+ ID4gPiA+IEBAIC0xNTgsNiArMTU4LDcgQEAgZXhwb3J0IFhGU19RVU9UQV9QUk9HPSJgc2V0X3By b2dfcGF0aAo+ID4gPiA+IHhmc19xdW90YWAiCj4gPiA+ID4gIGV4cG9ydCBLSUxMQUxMX1BST0c9 ImBzZXRfcHJvZ19wYXRoIGtpbGxhbGxgIgo+ID4gPiA+ICBleHBvcnQgSU5ERU5UX1BST0c9ImBz ZXRfcHJvZ19wYXRoIGluZGVudGAiCj4gPiA+ID4gIGV4cG9ydCBYRlNfQ09QWV9QUk9HPSJgc2V0 X3Byb2dfcGF0aCB4ZnNfY29weWAiCj4gPiA+ID4gK2V4cG9ydCBGU1RSSU1fUFJPRz0iYHNldF9w cm9nX3BhdGggZnN0cmltYCIKPiA+ID4gPiAgCj4gPiA+ID4gICMgR2VuZXJhdGUgYSBjb21wYXJh YmxlIHhmc3Byb2dzIHZlcnNpb24gbnVtYmVyIGluIHRoZSBmb3JtIG9mCj4gPiA+ID4gICMgbWFq b3IgKiAxMDAwMCArIG1pbm9yICogMTAwICsgcmVsZWFzZQo+ID4gPiA+IGRpZmYgLS1naXQgYS9j b21tb24ucmMgYi9jb21tb24ucmMKPiA+ID4gPiBpbmRleCA2MDI1MTNhLi4wZDJmNzEyIDEwMDY0 NAo+ID4gPiA+IC0tLSBhL2NvbW1vbi5yYwo+ID4gPiA+ICsrKyBiL2NvbW1vbi5yYwo+ID4gPiA+ IEBAIC0xNzc4LDYgKzE3NzgsMTkgQEAgX2Rldm1ndF9hZGQoKQo+ID4gPiA+ICAJZWNobyAke3Rk bH0gPiAgL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdCR7aH0vc2NhbiB8fCBfZmFpbAo+ID4gPiA+ ICAJIkFkZAo+ID4gPiA+ICAJZGlzayBmYWlsZWQiCj4gPiA+ID4gIH0KPiA+ID4gPiAgCj4gPiA+ ID4gK19yZXF1aXJlX2ZzdHJpbSgpCj4gPiA+ID4gK3sKPiA+ID4gPiArCWlmIFsgLXogIiRGU1RS SU1fUFJPRyIgXTsgdGhlbgo+ID4gPiA+ICsJCV9ub3RydW4gIlRoaXMgdGVzdCByZXF1aXJlcyBm c3RyaW0gdXRpbGl0eS4iCj4gPiA+ID4gKwlmaQo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ ICtfdGVzdF9iYXRjaGVkX2Rpc2NhcmQoKQo+ID4gPiA+ICt7Cj4gPiA+IAo+ID4gPiBTb21ldGhp bmcgbGlrZSB0aGlzIHNob3VsZCBiZSBoZXJlOgo+ID4gPiAKPiA+ID4gaWYgWyAkIyAtbmUgMSBd Cj4gPiA+IHRoZW4KPiA+ID4gCWVjaG8gIlVzYWdlOiBfdGVzdF9iYXRjaGVkX2Rpc2NhcmQgbW91 bnRfcG9pbnQiIDE+JjIKPiA+ID4gCWV4aXQgMQo+ID4gPiBmaQo+ID4gCj4gPiBPSywgSSB3aWxs IGFkZCB0aGlzLgo+ID4gCj4gPiAKPiA+IFRvbQo+ID4gCj4gPiA+IAo+ID4gPiA+ICsJX3JlcXVp cmVfZnN0cmltCj4gPiA+ID4gKwkkRlNUUklNX1BST0cgJHsxfSAmPi9kZXYvbnVsbAo+ID4gPiAK PiA+ID4gSXQgaXMgb2sgSSBndWVzcywgd2UgZG8gbm90IHJlYWxseSBuZWVkIHRvIHNwZWNpZnkg dGhlIGxlbmd0aAo+ID4gPiBhcmd1bWVudAo+ID4gPiBzaW5jZSBpdCBzaG91bGQgbm90IHRha2Ug dG9vIGxvbmcgdG8gZGlzY2FyZCB0aGUgd2hvbGUgZmlsZQo+ID4gPiBzeXN0ZW0uCj4gPiA+IAo+ ID4gPiBUaGFua3MhCj4gPiA+IC1MdWthcwo+ID4gPiAKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ ID4gPiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiA+ID4gPiAgCj4gPiA+ID4gIGlmIFsgIiRp YW0iICE9IG5ldyAtYSAiJGlhbSIgIT0gYmVuY2ggXQo+ID4gPiA+IGRpZmYgLS1naXQgYS9zcmMv TWFrZWZpbGUgYi9zcmMvTWFrZWZpbGUKPiA+ID4gPiBpbmRleCA2NzI1MGVlLi45NjcxYTM4IDEw MDY0NAo+ID4gPiA+IC0tLSBhL3NyYy9NYWtlZmlsZQo+ID4gPiA+ICsrKyBiL3NyYy9NYWtlZmls ZQo+ID4gPiA+IEBAIC0xNyw3ICsxNyw3IEBAIExJTlVYX1RBUkdFVFMgPSB4ZnNjdGwgYnN0YXQg dF9tdGFiCj4gPiA+ID4gZ2V0ZGV2aWNlc2l6ZQo+ID4gPiA+IHByZWFsbG9fcndfcGF0dGVybl9y ZWFkZXIgXAo+ID4gPiA+ICAJcHJlYWxsb19yd19wYXR0ZXJuX3dyaXRlciBmdHJ1bmMgdHJ1bmMg ZnNfcGVybXMgdGVzdHgKPiA+ID4gPiAgCWxvb3B0ZXN0IFwKPiA+ID4gPiAgCWxvY2t0ZXN0IHVu d3JpdHRlbl9tbWFwIGJ1bGtzdGF0X3VubGlua190ZXN0IHRfc3RyaXBlYWxpZ24gXAo+ID4gPiA+ ICAJYnVsa3N0YXRfdW5saW5rX3Rlc3RfbW9kaWZpZWQgdF9kaXJfb2Zmc2V0IHRfZnV0aW1lbnMK PiA+ID4gPiAgCXRfaW1tdXRhYmxlCj4gPiA+ID4gIAlcCj4gPiA+ID4gLQlzdGFsZV9oYW5kbGUg cHdyaXRlX21tYXBfYmxvY2tlZCBmc3RyaW0gdF9kaXJfb2Zmc2V0Mgo+ID4gPiA+ICsJc3RhbGVf aGFuZGxlIHB3cml0ZV9tbWFwX2Jsb2NrZWQgdF9kaXJfb2Zmc2V0Mgo+ID4gPiA+ICAKPiA+ID4g PiAgU1VCRElSUyA9Cj4gPiA+ID4gIAo+ID4gPiA+IGRpZmYgLS1naXQgYS9zcmMvZnN0cmltLmMg Yi9zcmMvZnN0cmltLmMKPiA+ID4gPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gPiBp bmRleCBlMjNiY2IzLi4wMDAwMDAwCj4gPiA+ID4gLS0tIGEvc3JjL2ZzdHJpbS5jCj4gPiA+ID4g KysrIC9kZXYvbnVsbAo+ID4gPiA+IEBAIC0xLDI1NyArMCwwIEBACj4gPiA+ID4gLS8qCj4gPiA+ ID4gLSAqIGZzdHJpbS5jIC0tIGRpc2NhcmQgdGhlIHBhcnQgKG9yIHdob2xlKSBvZiBtb3VudGVk Cj4gPiA+ID4gZmlsZXN5c3RlbS4KPiA+ID4gPiAtICoKPiA+ID4gPiAtICogQ29weXJpZ2h0IChD KSAyMDEwIFJlZCBIYXQsIEluYy4sIEx1a2FzIEN6ZXJuZXIKPiA+ID4gPiA8bGN6ZXJuZXJAcmVk aGF0LmNvbT4KPiA+ID4gPiAtICoKPiA+ID4gPiAtICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0Cj4gPiA+ID4gYW5kL29yCj4gPiA+ID4gbW9k aWZ5Cj4gPiA+ID4gLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMKPiA+ID4gPiBwdWJsaXNoZWQgYnkKPiA+ID4gPiAtICogdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUKPiA+ID4gPiBMaWNl bnNlLAo+ID4gPiA+IG9yCj4gPiA+ID4gLSAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCj4gPiA+ID4gLSAqCj4gPiA+ID4gLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKPiA+ID4gPiB1c2VmdWwsCj4gPiA+ID4gLSAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5Cj4gPiA+ID4gb2YKPiA+ID4gPiAtICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlCj4gPiA+ID4gdGhlCj4gPiA+ID4gLSAqIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gPiA+ID4gLSAqCj4gPiA+ ID4gLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYwo+ID4gPiA+IExpY2Vuc2UKPiA+ID4gPiAtICogYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZQo+ID4gPiA+IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K PiA+ID4gPiAtICoKPiA+ID4gPiAtICogVGhpcyBwcm9ncmFtIHVzZXMgRklUUklNIGlvY3RsIHRv IGRpc2NhcmQgcGFydHMgb3IgdGhlCj4gPiA+ID4gd2hvbGUKPiA+ID4gPiBmaWxlc3lzdGVtCj4g PiA+ID4gLSAqIG9ubGluZSAobW91bnRlZCkuIFlvdSBjYW4gc3BlY2lmeSByYW5nZSAoc3RhcnQg YW5kIGxlbmdodCkKPiA+ID4gPiB0bwo+ID4gPiA+IGJlCj4gPiA+ID4gLSAqIGRpc2NhcmRlZCwg b3Igc2ltcGx5IGRpc2NhcmQgd2hpbGUgZmlsZXN5c3RlbS4KPiA+ID4gPiAtICoKPiA+ID4gPiAt ICogVXNhZ2U6IGZzdHJpbSBbb3B0aW9uc10gPG1vdW50IHBvaW50Pgo+ID4gPiA+IC0gKi8KPiA+ ID4gPiAtCj4gPiA+ID4gLSNpbmNsdWRlIDxzdHJpbmcuaD4KPiA+ID4gPiAtI2luY2x1ZGUgPHVu aXN0ZC5oPgo+ID4gPiA+IC0jaW5jbHVkZSA8c3RkbGliLmg+Cj4gPiA+ID4gLSNpbmNsdWRlIDxl cnJuby5oPgo+ID4gPiA+IC0jaW5jbHVkZSA8c3RkaW8uaD4KPiA+ID4gPiAtI2luY2x1ZGUgPHN0 ZGludC5oPgo+ID4gPiA+IC0jaW5jbHVkZSA8ZmNudGwuaD4KPiA+ID4gPiAtI2luY2x1ZGUgPGxp bWl0cy5oPgo+ID4gPiA+IC0jaW5jbHVkZSA8c3RkYXJnLmg+Cj4gPiA+ID4gLSNpbmNsdWRlIDxn ZXRvcHQuaD4KPiA+ID4gPiAtCj4gPiA+ID4gLSNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KPiA+ID4g PiAtI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4gPiA+ID4gLSNpbmNsdWRlIDxsaW51eC9mcy5oPgo+ ID4gPiA+IC0KPiA+ID4gPiAtI2lmbmRlZiBGSVRSSU0KPiA+ID4gPiAtc3RydWN0IGZzdHJpbV9y YW5nZSB7Cj4gPiA+ID4gLQl1aW50NjRfdCBzdGFydDsKPiA+ID4gPiAtCXVpbnQ2NF90IGxlbjsK PiA+ID4gPiAtCXVpbnQ2NF90IG1pbmxlbjsKPiA+ID4gPiAtfTsKPiA+ID4gPiAtI2RlZmluZSBG SVRSSU0JCV9JT1dSKCdYJywgMTIxLCBzdHJ1Y3QgZnN0cmltX3JhbmdlKQo+ID4gPiA+IC0jZW5k aWYKPiA+ID4gPiAtCj4gPiA+ID4gLWNvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9ICJmc3RyaW0i Owo+ID4gPiA+IC0KPiA+ID4gPiAtc3RydWN0IG9wdGlvbnMgewo+ID4gPiA+IC0Jc3RydWN0IGZz dHJpbV9yYW5nZSAqcmFuZ2U7Cj4gPiA+ID4gLQljaGFyIG1wb2ludFtQQVRIX01BWF07Cj4gPiA+ ID4gLQljaGFyIHZlcmJvc2U7Cj4gPiA+ID4gLX07Cj4gPiA+ID4gLQo+ID4gPiA+IC1zdGF0aWMg dm9pZCB1c2FnZSh2b2lkKQo+ID4gPiA+IC17Cj4gPiA+ID4gLQlmcHJpbnRmKHN0ZGVyciwKPiA+ ID4gPiAtCQkiVXNhZ2U6ICVzIFstcyBzdGFydF0gWy1sIGxlbmd0aF0gWy1tIG1pbmltdW0tZXh0 ZW50XSIKPiA+ID4gPiAtCQkiIFstdl0ge21vdW50cG9pbnR9XG5cdCIKPiA+ID4gPiAtCQkiLXMg U3RhcnRpbmcgQnl0ZSB0byBkaXNjYXJkIGZyb21cblx0Igo+ID4gPiA+IC0JCSItbCBOdW1iZXIg b2YgQnl0ZXMgdG8gZGlzY2FyZCBmcm9tIHRoZSBzdGFydFxuXHQiCj4gPiA+ID4gLQkJIi1tIE1p bmltdW0gZXh0ZW50IGxlbmd0aCB0byBkaXNjYXJkXG5cdCIKPiA+ID4gPiAtCQkiLXYgVmVyYm9z ZSAtIG51bWJlciBvZiBkaXNjYXJkZWQgYnl0ZXNcbiIsCj4gPiA+ID4gLQkJcHJvZ3JhbV9uYW1l KTsKPiA+ID4gPiAtfQo+ID4gPiA+IC0KPiA+ID4gPiAtc3RhdGljIHZvaWQgZXJyX2V4aXQoY29u c3QgY2hhciAqZm10LCAuLi4pCj4gPiA+ID4gLXsKPiA+ID4gPiAtCXZhX2xpc3QgcHZhcjsKPiA+ ID4gPiAtCXZhX3N0YXJ0KHB2YXIsIGZtdCk7Cj4gPiA+ID4gLQl2ZnByaW50ZihzdGRlcnIsIGZt dCwgcHZhcik7Cj4gPiA+ID4gLQl2YV9lbmQocHZhcik7Cj4gPiA+ID4gLQl1c2FnZSgpOwo+ID4g PiA+IC0JZXhpdChFWElUX0ZBSUxVUkUpOwo+ID4gPiA+IC19Cj4gPiA+ID4gLQo+ID4gPiA+IC0v KioKPiA+ID4gPiAtICogR2V0IHRoZSBudW1iZXIgZnJvbSBhcmd1bWVudC4gSXQgY2FuIGJlIG51 bWJlciBmb2xsb3dlZCBieQo+ID4gPiA+IC0gKiB1bml0czoga3xLLCBtfE0sIGd8RywgdHxUCj4g PiA+ID4gLSAqLwo+ID4gPiA+IC1zdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGdldF9udW1iZXIo Y2hhciAqKm9wdGFyZykKPiA+ID4gPiAtewo+ID4gPiA+IC0JY2hhciAqb3B0LCAqZW5kOwo+ID4g PiA+IC0JdW5zaWduZWQgbG9uZyBsb25nIG51bWJlciwgbWF4Owo+ID4gPiA+IC0KPiA+ID4gPiAt CS8qIGdldCB0aGUgbWF4IHRvIGF2b2lkIG92ZXJmbG93ICovCj4gPiA+ID4gLQltYXggPSBVTExP TkdfTUFYIC8gMTAyNDsKPiA+ID4gPiAtCW51bWJlciA9IDA7Cj4gPiA+ID4gLQlvcHQgPSAqb3B0 YXJnOwo+ID4gPiA+IC0KPiA+ID4gPiAtCWlmICgqb3B0ID09ICctJykgewo+ID4gPiA+IC0JCWVy cl9leGl0KCIlczogJXMgKCVzKVxuIiwgcHJvZ3JhbV9uYW1lLAo+ID4gPiA+IC0JCQkgc3RyZXJy b3IoRVJBTkdFKSwgKm9wdGFyZyk7Cj4gPiA+ID4gLQl9Cj4gPiA+ID4gLQo+ID4gPiA+IC0JZXJy bm8gPSAwOwo+ID4gPiA+IC0JbnVtYmVyID0gc3RydG91bGwob3B0LCAmZW5kICwgMCk7Cj4gPiA+ ID4gLQlpZiAoZXJybm8pCj4gPiA+ID4gLQkJZXJyX2V4aXQoIiVzOiAlcyAoJXMpXG4iLCBwcm9n cmFtX25hbWUsCj4gPiA+ID4gLQkJCSBzdHJlcnJvcihlcnJubyksICpvcHRhcmcpOwo+ID4gPiA+ IC0KPiA+ID4gPiAtCS8qCj4gPiA+ID4gLQkgKiBDb252ZXJ0IHVuaXRzIHRvIG51bWJlcnMuIEZh bGwtdGhyb3VnaCBzdGFjayBpcyB1c2VkIGZvcgo+ID4gPiA+IHVuaXRzCj4gPiA+ID4gLQkgKiBz byBhYnNlbmNlIG9mIGJyZWFrcyBpcyBpbnRlbnRpb25hbC4KPiA+ID4gPiAtCSAqLwo+ID4gPiA+ IC0Jc3dpdGNoICgqZW5kKSB7Cj4gPiA+ID4gLQljYXNlICdUJzogLyogdGVyYWJ5dGVzICovCj4g PiA+ID4gLQljYXNlICd0JzoKPiA+ID4gPiAtCQlpZiAobnVtYmVyID4gbWF4KQo+ID4gPiA+IC0J CQllcnJfZXhpdCgiJXM6ICVzICglcylcbiIsIHByb2dyYW1fbmFtZSwKPiA+ID4gPiAtCQkJCSBz dHJlcnJvcihFUkFOR0UpLCAqb3B0YXJnKTsKPiA+ID4gPiAtCQludW1iZXIgKj0gMTAyNDsKPiA+ ID4gPiAtCWNhc2UgJ0cnOiAvKiBnaWdhYnl0ZXMgKi8KPiA+ID4gPiAtCWNhc2UgJ2cnOgo+ID4g PiA+IC0JCWlmIChudW1iZXIgPiBtYXgpCj4gPiA+ID4gLQkJCWVycl9leGl0KCIlczogJXMgKCVz KVxuIiwgcHJvZ3JhbV9uYW1lLAo+ID4gPiA+IC0JCQkJIHN0cmVycm9yKEVSQU5HRSksICpvcHRh cmcpOwo+ID4gPiA+IC0JCW51bWJlciAqPSAxMDI0Owo+ID4gPiA+IC0JY2FzZSAnTSc6IC8qIG1l Z2FieXRlcyAqLwo+ID4gPiA+IC0JY2FzZSAnbSc6Cj4gPiA+ID4gLQkJaWYgKG51bWJlciA+IG1h eCkKPiA+ID4gPiAtCQkJZXJyX2V4aXQoIiVzOiAlcyAoJXMpXG4iLCBwcm9ncmFtX25hbWUsCj4g PiA+ID4gLQkJCQkgc3RyZXJyb3IoRVJBTkdFKSwgKm9wdGFyZyk7Cj4gPiA+ID4gLQkJbnVtYmVy ICo9IDEwMjQ7Cj4gPiA+ID4gLQljYXNlICdLJzogLyoga2lsb2J5dGVzICovCj4gPiA+ID4gLQlj YXNlICdrJzoKPiA+ID4gPiAtCQlpZiAobnVtYmVyID4gbWF4KQo+ID4gPiA+IC0JCQllcnJfZXhp dCgiJXM6ICVzICglcylcbiIsIHByb2dyYW1fbmFtZSwKPiA+ID4gPiAtCQkJCSBzdHJlcnJvcihF UkFOR0UpLCAqb3B0YXJnKTsKPiA+ID4gPiAtCQludW1iZXIgKj0gMTAyNDsKPiA+ID4gPiAtCQll bmQrKzsKPiA+ID4gPiAtCWNhc2UgJ1wwJzogLyogZW5kIG9mIHRoZSBzdHJpbmcgKi8KPiA+ID4g PiAtCQlicmVhazsKPiA+ID4gPiAtCWRlZmF1bHQ6Cj4gPiA+ID4gLQkJZXJyX2V4aXQoIiVzOiAl cyAoJXMpXG4iLCBwcm9ncmFtX25hbWUsCj4gPiA+ID4gLQkJCSBzdHJlcnJvcihFSU5WQUwpLCAq b3B0YXJnKTsKPiA+ID4gPiAtCQlyZXR1cm4gMDsKPiA+ID4gPiAtCX0KPiA+ID4gPiAtCj4gPiA+ ID4gLQlpZiAoKmVuZCAhPSAnXDAnKSB7Cj4gPiA+ID4gLQkJZXJyX2V4aXQoIiVzOiAlcyAoJXMp XG4iLCBwcm9ncmFtX25hbWUsCj4gPiA+ID4gLQkJCSBzdHJlcnJvcihFSU5WQUwpLCAqb3B0YXJn KTsKPiA+ID4gPiAtCX0KPiA+ID4gPiAtCj4gPiA+ID4gLQlyZXR1cm4gbnVtYmVyOwo+ID4gPiA+ IC19Cj4gPiA+ID4gLQo+ID4gPiA+IC1zdGF0aWMgaW50IHBhcnNlX29wdHMoaW50IGFyZ2MsIGNo YXIgKiphcmd2LCBzdHJ1Y3Qgb3B0aW9ucwo+ID4gPiA+ICpvcHRzKQo+ID4gPiA+IC17Cj4gPiA+ ID4gLQlpbnQgYzsKPiA+ID4gPiAtCj4gPiA+ID4gLQl3aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywg YXJndiwgInM6bDptOnYiKSkgIT0gRU9GKSB7Cj4gPiA+ID4gLQkJc3dpdGNoIChjKSB7Cj4gPiA+ ID4gLQkJY2FzZSAncyc6IC8qIHN0YXJ0aW5nIHBvaW50ICovCj4gPiA+ID4gLQkJCW9wdHMtPnJh bmdlLT5zdGFydCA9IGdldF9udW1iZXIoJm9wdGFyZyk7Cj4gPiA+ID4gLQkJCWJyZWFrOwo+ID4g PiA+IC0JCWNhc2UgJ2wnOiAvKiBsZW5ndGggKi8KPiA+ID4gPiAtCQkJb3B0cy0+cmFuZ2UtPmxl biA9IGdldF9udW1iZXIoJm9wdGFyZyk7Cj4gPiA+ID4gLQkJCWJyZWFrOwo+ID4gPiA+IC0JCWNh c2UgJ20nOiAvKiBtaW5sZW4gKi8KPiA+ID4gPiAtCQkJb3B0cy0+cmFuZ2UtPm1pbmxlbiA9IGdl dF9udW1iZXIoJm9wdGFyZyk7Cj4gPiA+ID4gLQkJCWJyZWFrOwo+ID4gPiA+IC0JCWNhc2UgJ3Yn OiAvKiB2ZXJib3NlICovCj4gPiA+ID4gLQkJCW9wdHMtPnZlcmJvc2UgPSAxOwo+ID4gPiA+IC0J CQlicmVhazsKPiA+ID4gPiAtCQlkZWZhdWx0Ogo+ID4gPiA+IC0JCQlyZXR1cm4gRVhJVF9GQUlM VVJFOwo+ID4gPiA+IC0JCX0KPiA+ID4gPiAtCX0KPiA+ID4gPiAtCj4gPiA+ID4gLQlyZXR1cm4g MDsKPiA+ID4gPiAtfQo+ID4gPiA+IC0KPiA+ID4gPiAtaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQo+ID4gPiA+IC17Cj4gPiA+ID4gLQlzdHJ1Y3Qgb3B0aW9ucyAqb3B0czsKPiA+ID4g PiAtCXN0cnVjdCBzdGF0IHNiOwo+ID4gPiA+IC0JaW50IGZkLCBlcnIgPSAwLCByZXQgPSBFWElU X0ZBSUxVUkU7Cj4gPiA+ID4gLQo+ID4gPiA+IC0Jb3B0cyA9IG1hbGxvYyhzaXplb2Yoc3RydWN0 IG9wdGlvbnMpKTsKPiA+ID4gPiAtCWlmICghb3B0cykKPiA+ID4gPiAtCQllcnJfZXhpdCgiJXM6 IG1hbGxvYygpOiAlc1xuIiwgcHJvZ3JhbV9uYW1lLAo+ID4gPiA+IHN0cmVycm9yKGVycm5vKSk7 Cj4gPiA+ID4gLQo+ID4gPiA+IC0Jb3B0cy0+cmFuZ2UgPSBOVUxMOwo+ID4gPiA+IC0Jb3B0cy0+ dmVyYm9zZSA9IDA7Cj4gPiA+ID4gLQo+ID4gPiA+IC0JaWYgKGFyZ2MgPiAxKQo+ID4gPiA+IC0J CXN0cm5jcHkob3B0cy0+bXBvaW50LCBhcmd2W2FyZ2MgLSAxXSwgc2l6ZW9mKG9wdHMtPm1wb2lu dCkpOwo+ID4gPiA+IC0KPiA+ID4gPiAtCW9wdHMtPnJhbmdlID0gY2FsbG9jKDEsIHNpemVvZihz dHJ1Y3QgZnN0cmltX3JhbmdlKSk7Cj4gPiA+ID4gLQlpZiAoIW9wdHMtPnJhbmdlKSB7Cj4gPiA+ ID4gLQkJZnByaW50ZihzdGRlcnIsICIlczogY2FsbG9jKCk6ICVzXG4iLCBwcm9ncmFtX25hbWUs Cj4gPiA+ID4gLQkJCXN0cmVycm9yKGVycm5vKSk7Cj4gPiA+ID4gLQkJZ290byBmcmVlX29wdHM7 Cj4gPiA+ID4gLQl9Cj4gPiA+ID4gLQo+ID4gPiA+IC0Jb3B0cy0+cmFuZ2UtPmxlbiA9IFVMTE9O R19NQVg7Cj4gPiA+ID4gLQo+ID4gPiA+IC0JaWYgKGFyZ2MgPiAyKQo+ID4gPiA+IC0JCWVyciA9 IHBhcnNlX29wdHMoYXJnYywgYXJndiwgb3B0cyk7Cj4gPiA+ID4gLQo+ID4gPiA+IC0JaWYgKGVy cikgewo+ID4gPiA+IC0JCXVzYWdlKCk7Cj4gPiA+ID4gLQkJZ290byBmcmVlX29wdHM7Cj4gPiA+ ID4gLQl9Cj4gPiA+ID4gLQo+ID4gPiA+IC0JaWYgKHN0cm5sZW4ob3B0cy0+bXBvaW50LCAxKSA8 IDEpIHsKPiA+ID4gPiAtCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBZb3UgaGF2ZSB0byBzcGVjaWZ5 IG1vdW50IHBvaW50LlxuIiwKPiA+ID4gPiAtCQkJcHJvZ3JhbV9uYW1lKTsKPiA+ID4gPiAtCQl1 c2FnZSgpOwo+ID4gPiA+IC0JCWdvdG8gZnJlZV9vcHRzOwo+ID4gPiA+IC0JfQo+ID4gPiA+IC0K PiA+ID4gPiAtCWlmIChzdGF0KG9wdHMtPm1wb2ludCwgJnNiKSA9PSAtMSkgewo+ID4gPiA+IC0J CWZwcmludGYoc3RkZXJyLCAiJXM6ICVzOiAlc1xuIiwgcHJvZ3JhbV9uYW1lLAo+ID4gPiA+IC0J CQlvcHRzLT5tcG9pbnQsIHN0cmVycm9yKGVycm5vKSk7Cj4gPiA+ID4gLQkJdXNhZ2UoKTsKPiA+ ID4gPiAtCQlnb3RvIGZyZWVfb3B0czsKPiA+ID4gPiAtCX0KPiA+ID4gPiAtCj4gPiA+ID4gLQlp ZiAoIVNfSVNESVIoc2Iuc3RfbW9kZSkpIHsKPiA+ID4gPiAtCQlmcHJpbnRmKHN0ZGVyciwgIiVz OiAlczogKCVzKVxuIiwgcHJvZ3JhbV9uYW1lLAo+ID4gPiA+IC0JCQlvcHRzLT5tcG9pbnQsIHN0 cmVycm9yKEVOT1RESVIpKTsKPiA+ID4gPiAtCQl1c2FnZSgpOwo+ID4gPiA+IC0JCWdvdG8gZnJl ZV9vcHRzOwo+ID4gPiA+IC0JfQo+ID4gPiA+IC0KPiA+ID4gPiAtCWZkID0gb3BlbihvcHRzLT5t cG9pbnQsIE9fUkRPTkxZKTsKPiA+ID4gPiAtCWlmIChmZCA8IDApIHsKPiA+ID4gPiAtCQlmcHJp bnRmKHN0ZGVyciwgIiVzOiBvcGVuKCVzKTogJXNcbiIsIHByb2dyYW1fbmFtZSwKPiA+ID4gPiAt CQkJb3B0cy0+bXBvaW50LCBzdHJlcnJvcihlcnJubykpOwo+ID4gPiA+IC0JCWdvdG8gZnJlZV9v cHRzOwo+ID4gPiA+IC0JfQo+ID4gPiA+IC0KPiA+ID4gPiAtCWlmIChpb2N0bChmZCwgRklUUklN LCBvcHRzLT5yYW5nZSkpIHsKPiA+ID4gPiAtCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBGU1RSSU06 ICVzXG4iLCBwcm9ncmFtX25hbWUsCj4gPiA+ID4gLQkJCXN0cmVycm9yKGVycm5vKSk7Cj4gPiA+ ID4gLQkJZ290byBmcmVlX29wdHM7Cj4gPiA+ID4gLQl9Cj4gPiA+ID4gLQo+ID4gPiA+IC0JaWYg KChvcHRzLT52ZXJib3NlKSAmJiAob3B0cy0+cmFuZ2UpKQo+ID4gPiA+IC0JCWZwcmludGYoc3Rk b3V0LCAiJWxsdSBCeXRlcyB3ZXJlIHRyaW1tZWRcbiIsICh1bnNpZ25lZCBsb25nCj4gPiA+ID4g bG9uZylvcHRzLT5yYW5nZS0+bGVuKTsKPiA+ID4gPiAtCj4gPiA+ID4gLQlyZXQgPSBFWElUX1NV Q0NFU1M7Cj4gPiA+ID4gLQo+ID4gPiA+IC1mcmVlX29wdHM6Cj4gPiA+ID4gLQlpZiAob3B0cykg ewo+ID4gPiA+IC0JCWlmIChvcHRzLT5yYW5nZSkKPiA+ID4gPiAtCQkJZnJlZShvcHRzLT5yYW5n ZSk7Cj4gPiA+ID4gLQkJZnJlZShvcHRzKTsKPiA+ID4gPiAtCX0KPiA+ID4gPiAtCj4gPiA+ID4g LQlyZXR1cm4gcmV0Owo+ID4gPiA+IC19Cj4gPiA+ID4gCj4gPiA+IAo+ID4KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnhmcyBtYWlsaW5nIGxpc3QKeGZz QG9zcy5zZ2kuY29tCmh0dHA6Ly9vc3Muc2dpLmNvbS9tYWlsbWFuL2xpc3RpbmZvL3hmcwo=