From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3C3097F78 for ; Thu, 25 Jun 2015 14:38:13 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 9F5F4AC003 for ; Thu, 25 Jun 2015 12:38:12 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id ReGrS9ssYSAM3sc1 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 25 Jun 2015 12:38:10 -0700 (PDT) Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (Postfix) with ESMTPS id 38F2CB8135 for ; Thu, 25 Jun 2015 19:38:10 +0000 (UTC) Date: Thu, 25 Jun 2015 15:38:08 -0400 From: Brian Foster Subject: Re: [PATCH 03/17] mkfs: Sanitise the superblock feature macros Message-ID: <20150625193807.GG36162@bfoster.bfoster> References: <1434711726-13092-1-git-send-email-jtulak@redhat.com> <1434711726-13092-4-git-send-email-jtulak@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1434711726-13092-4-git-send-email-jtulak@redhat.com> 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 Errors-To: xfs-bounces@oss.sgi.com Sender: xfs-bounces@oss.sgi.com To: Jan =?utf-8?B?xaR1bMOhaw==?= Cc: Dave Chinner , xfs@oss.sgi.com T24gRnJpLCBKdW4gMTksIDIwMTUgYXQgMDE6MDE6NTJQTSArMDIwMCwgSmFuIMWkdWzDoWsgd3Jv dGU6Cj4gRnJvbTogRGF2ZSBDaGlubmVyIDxkY2hpbm5lckByZWRoYXQuY29tPgo+IAo+IFRoZXkg YXJlIGhvcnJpYmxlIG1hY3JvcyB0aGF0IHNpbXBseSBvYmZ1c2NhdGUgdGhlIGNvZGUsIHNvCj4g bGV0J3MgZmFjdG9yIHRoZSBjb2RlIGFuZCBtYWtlIHRoZW0gbmljZSBmdW5jdGlvbnMuCj4gCj4g VG8gZG8gdGhpcywgYWRkIGEgc2JfZmVhdF9hcmdzIHN0cnVjdHVyZSB0aGF0IGNhcnJpZXMgYXJv dW5kIHRoZQo+IHZhcmlhYmxlcyByYXRoZXIgdGhhbiBhIHN0cmFuZ2UgYXNzb3J0bWVudCBvZiB2 YXJpYWJsZXMuIFRoaXMgbWVhbnMKPiBhbGwgdGhlIGRlZmF1bHQgY2FuIGJlIGNsZWFybHkgZGVm aW5lZCBpbiBhIHN0cnVjdHVyZQo+IGluaXRpYWxpc2F0aW9uLCBhbmQgZGVwZW5kZW50IGZlYXR1 cmUgYml0cyBhcmUgZWFzeSB0byBjaGVjay4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBEYXZlIENoaW5u ZXIgPGRjaGlubmVyQHJlZGhhdC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSmFuIMWkdWzDoWsgPGp0 dWxha0ByZWRoYXQuY29tPgo+IC0tLQo+ICBpbmNsdWRlL3hmc19ta2ZzLmggfCAgMjUgKy0tLS0K PiAgbWtmcy94ZnNfbWtmcy5jICAgIHwgMjkzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTgxIGluc2VydGlv bnMoKyksIDEzNyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZnNfbWtm cy5oIGIvaW5jbHVkZS94ZnNfbWtmcy5oCj4gaW5kZXggMzM4OGY2ZC4uM2FmOWNiMSAxMDA2NDQK PiAtLS0gYS9pbmNsdWRlL3hmc19ta2ZzLmgKPiArKysgYi9pbmNsdWRlL3hmc19ta2ZzLmgKPiBA QCAtMjMsMzYgKzIzLDEzIEBACj4gICAgICAgICAgICAgICAgICAgWEZTX1NCX1ZFUlNJT05fRVhU RkxHQklUIHwgXAo+ICAgICAgICAgICAgICAgICAgIFhGU19TQl9WRVJTSU9OX0RJUlYyQklUKQo+ ICAKPiAtI2RlZmluZSBYRlNfU0JfVkVSU0lPTl9NS0ZTKGNyYyxpYSxkaWEsbG9nMixhdHRyMSxz ZmxhZyxjaSxtb3JlKSAoXAo+IC0JKChjcmMpfHwoaWEpfHwoZGlhKXx8KGxvZzIpfHwoYXR0cjEp fHwoc2ZsYWcpfHwoY2kpfHwobW9yZSkpID8gXAo+IC0JKCgoY3JjKSA/IFhGU19TQl9WRVJTSU9O XzUgOiBYRlNfU0JfVkVSU0lPTl80KSB8CQlcCj4gLQkJKChpYSkgPyBYRlNfU0JfVkVSU0lPTl9B TElHTkJJVCA6IDApIHwJCQlcCj4gLQkJKChkaWEpID8gWEZTX1NCX1ZFUlNJT05fREFMSUdOQklU IDogMCkgfAkJXAo+IC0JCSgobG9nMikgPyBYRlNfU0JfVkVSU0lPTl9MT0dWMkJJVCA6IDApIHwJ CVwKPiAtCQkoKGF0dHIxKSA/IFhGU19TQl9WRVJTSU9OX0FUVFJCSVQgOiAwKSB8CQlcCj4gLQkJ KChzZmxhZykgPyBYRlNfU0JfVkVSU0lPTl9TRUNUT1JCSVQgOiAwKSB8CQlcCj4gLQkJKChjaSkg PyBYRlNfU0JfVkVSU0lPTl9CT1JHQklUIDogMCkgfAkJCVwKPiAtCQkoKG1vcmUpID8gWEZTX1NC X1ZFUlNJT05fTU9SRUJJVFNCSVQgOiAwKSB8CQlcCj4gLQkgICAgICAgIFhGU19ERkxfU0JfVkVS U0lPTl9CSVRTIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+IC0JMCApIDogWEZT X1NCX1ZFUlNJT05fMSApCj4gLQo+IC0jZGVmaW5lIFhGU19TQl9WRVJTSU9OMl9NS0ZTKGNyYywg bGF6eWNvdW50LCBhdHRyMiwgcHJvamlkMzJiaXQsIHBhcmVudCwgXAo+IC0JCQkgICAgIGZ0eXBl KSAoXAo+IC0JKChsYXp5Y291bnQpID8gWEZTX1NCX1ZFUlNJT04yX0xBWllTQkNPVU5UQklUIDog MCkgfAkJXAo+IC0JKChhdHRyMikgPyBYRlNfU0JfVkVSU0lPTjJfQVRUUjJCSVQgOiAwKSB8CQkJ XAo+IC0JKChwcm9qaWQzMmJpdCkgPyBYRlNfU0JfVkVSU0lPTjJfUFJPSklEMzJCSVQgOiAwKSB8 CQlcCj4gLQkoKHBhcmVudCkgPyBYRlNfU0JfVkVSU0lPTjJfUEFSRU5UQklUIDogMCkgfAkJCVwK PiAtCSgoY3JjKSA/IFhGU19TQl9WRVJTSU9OMl9DUkNCSVQgOiAwKSB8CQkJCVwKPiAtCSgoZnR5 cGUpID8gWEZTX1NCX1ZFUlNJT04yX0ZUWVBFIDogMCkgfAkJCQlcCj4gLQkwICkKPiAtCj4gICNk ZWZpbmUJWEZTX0RGTF9CTE9DS1NJWkVfTE9HCTEyCQkvKiA0MDk2IGJ5dGUgYmxvY2tzICovCj4g ICNkZWZpbmUJWEZTX0RJTk9ERV9ERkxfTE9HCTgJCS8qIDI1NiBieXRlIGlub2RlcyAqLwo+ICAj ZGVmaW5lCVhGU19ESU5PREVfREZMX0NSQ19MT0cJOQkJLyogNTEyIGJ5dGUgaW5vZGVzIGZvciBD UkNzICovCj4gICNkZWZpbmUJWEZTX01JTl9EQVRBX0JMT0NLUwkxMDAKPiAgI2RlZmluZQlYRlNf TUlOX0lOT0RFX1BFUkJMT0NLCTIJCS8qIG1pbiBpbm9kZXMgcGVyIGJsb2NrICovCj4gICNkZWZp bmUJWEZTX0RGTF9JTUFYSU1VTV9QQ1QJMjUJCS8qIG1heCAlIG9mIHNwYWNlIGZvciBpbm9kZXMg Ki8KPiAtI2RlZmluZQlYRlNfSUZMQUdfQUxJR04JCTEJCS8qIC1pIGFsaWduIGRlZmF1bHRzIG9u ICovCj4gKyNkZWZpbmUJWEZTX0lGTEFHX0FMSUdOCQl0cnVlCQkvKiAtaSBhbGlnbiBkZWZhdWx0 cyBvbiAqLwo+ICAjZGVmaW5lCVhGU19NSU5fUkVDX0RJUlNJWkUJMTIJCS8qIDQwOTYgYnl0ZSBk aXJibG9ja3MgKFYyKSAqLwo+ICAjZGVmaW5lCVhGU19ERkxfRElSX1ZFUlNJT04JMgkJLyogZGVm YXVsdCBkaXJlY3RvcnkgdmVyc2lvbiAqLwo+ICAjZGVmaW5lCVhGU19ERkxfTE9HX1NJWkUJMTAw MAkJLyogZGVmYXVsdCBsb2cgc2l6ZSwgYmxvY2tzICovCj4gZGlmZiAtLWdpdCBhL21rZnMveGZz X21rZnMuYyBiL21rZnMveGZzX21rZnMuYwo+IGluZGV4IDE2NTI5MDMuLjEwMjc2ZTQgMTAwNjQ0 Cj4gLS0tIGEvbWtmcy94ZnNfbWtmcy5jCj4gKysrIGIvbWtmcy94ZnNfbWtmcy5jCj4gQEAgLTkw Myw2ICs5MDMsMTA3IEBAIGRpc2NhcmRfYmxvY2tzKGRldl90IGRldiwgX191aW50NjRfdCBuc2Vj dG9ycykKPiAgCQlwbGF0Zm9ybV9kaXNjYXJkX2Jsb2NrcyhmZCwgMCwgbnNlY3RvcnMgPDwgOSk7 Cj4gIH0KPiAgCj4gK3N0cnVjdCBzYl9mZWF0X2FyZ3Mgewo+ICsJaW50CWxvZ192ZXJzaW9uOwo+ ICsJaW50CWF0dHJfdmVyc2lvbjsKPiArCWludAlkaXJfdmVyc2lvbjsKPiArCWludAlzcGlub2Rl czsKPiArCWludAlmaW5vYnQ7Cj4gKwlib29sCWZpbm9idGZsYWc7Cj4gKwlib29sCWlub2RlX2Fs aWduOwo+ICsJYm9vbAluY2k7Cj4gKwlib29sCWxhenlfc2JfY291bnRlcnM7Cj4gKwlib29sCXBy b2ppZDE2Yml0Owo+ICsJYm9vbAljcmNzX2VuYWJsZWQ7Cj4gKwlib29sCWRpcmZ0eXBlOwo+ICsJ Ym9vbAlwYXJlbnRfcG9pbnRlcnM7Cj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtzYl9zZXRf ZmVhdHVyZXMoCj4gKwlzdHJ1Y3QgeGZzX3NiCQkqc2JwLAo+ICsJc3RydWN0IHNiX2ZlYXRfYXJn cwkqZnAsCj4gKwlpbnQJCQlzZWN0c2l6ZSwKPiArCWludAkJCWxzZWN0c2l6ZSwKPiArCWludAkJ CWRzdW5pdCkKPiArewo+ICsKPiArCXNicC0+c2JfdmVyc2lvbm51bSA9IFhGU19ERkxfU0JfVkVS U0lPTl9CSVRTOwo+ICsJaWYgKGZwLT5jcmNzX2VuYWJsZWQpCj4gKwkJc2JwLT5zYl92ZXJzaW9u bnVtIHw9IFhGU19TQl9WRVJTSU9OXzU7Cj4gKwllbHNlCj4gKwkJc2JwLT5zYl92ZXJzaW9ubnVt IHw9IFhGU19TQl9WRVJTSU9OXzQ7Cj4gKwo+ICsJaWYgKGZwLT5pbm9kZV9hbGlnbikKPiArCQlz YnAtPnNiX3ZlcnNpb25udW0gfD0gWEZTX1NCX1ZFUlNJT05fQUxJR05CSVQ7Cj4gKwlpZiAoZHN1 bml0KQo+ICsJCXNicC0+c2JfdmVyc2lvbm51bSB8PSBYRlNfU0JfVkVSU0lPTl9EQUxJR05CSVQ7 Cj4gKwlpZiAoZnAtPmxvZ192ZXJzaW9uID09IDIpCj4gKwkJc2JwLT5zYl92ZXJzaW9ubnVtIHw9 IFhGU19TQl9WRVJTSU9OX0xPR1YyQklUOwo+ICsJaWYgKGZwLT5hdHRyX3ZlcnNpb24gPT0gMSkK PiArCQlzYnAtPnNiX3ZlcnNpb25udW0gfD0gWEZTX1NCX1ZFUlNJT05fQVRUUkJJVDsKPiArCWlm IChzZWN0c2l6ZSA+IEJCU0laRSB8fCBsc2VjdHNpemUgPiBCQlNJWkUpCj4gKwkJc2JwLT5zYl92 ZXJzaW9ubnVtIHw9IFhGU19TQl9WRVJTSU9OX1NFQ1RPUkJJVDsKPiArCWlmIChmcC0+bmNpKQo+ ICsJCXNicC0+c2JfdmVyc2lvbm51bSB8PSBYRlNfU0JfVkVSU0lPTl9CT1JHQklUOwo+ICsKPiAr Cj4gKwlzYnAtPnNiX2ZlYXR1cmVzMiA9IDA7Cj4gKwlpZiAoZnAtPmxhenlfc2JfY291bnRlcnMp Cj4gKwkJc2JwLT5zYl9mZWF0dXJlczIgfD0gWEZTX1NCX1ZFUlNJT04yX0xBWllTQkNPVU5UQklU Owo+ICsJaWYgKCFmcC0+cHJvamlkMTZiaXQpCj4gKwkJc2JwLT5zYl9mZWF0dXJlczIgfD0gWEZT X1NCX1ZFUlNJT04yX1BST0pJRDMyQklUOwo+ICsJaWYgKGZwLT5wYXJlbnRfcG9pbnRlcnMpCj4g KwkJc2JwLT5zYl9mZWF0dXJlczIgfD0gWEZTX1NCX1ZFUlNJT04yX1BBUkVOVEJJVDsKPiArCWlm IChmcC0+Y3Jjc19lbmFibGVkKQo+ICsJCXNicC0+c2JfZmVhdHVyZXMyIHw9IFhGU19TQl9WRVJT SU9OMl9DUkNCSVQ7Cj4gKwlpZiAoZnAtPmF0dHJfdmVyc2lvbiA9PSAyKQo+ICsJCXNicC0+c2Jf ZmVhdHVyZXMyIHw9IFhGU19TQl9WRVJTSU9OMl9BVFRSMkJJVDsKPiArCj4gKwkvKiB2NSBzdXBl cmJsb2NrcyBoYXZlIHRoZWlyIG93biBmZWF0dXJlIGJpdCBmb3IgZGlyZnR5cGUgKi8KPiArCWlm IChmcC0+ZGlyZnR5cGUgJiYgIWZwLT5jcmNzX2VuYWJsZWQpCj4gKwkJc2JwLT5zYl9mZWF0dXJl czIgfD0gWEZTX1NCX1ZFUlNJT04yX0ZUWVBFOwo+ICsKPiArCS8qIHVwZGF0ZSB3aGV0aGVyIGV4 dGVuZGVkIGZlYXR1cmVzIGFyZSBpbiB1c2UgKi8KPiArCWlmIChzYnAtPnNiX2ZlYXR1cmVzMiAh PSAwKQo+ICsJCXNicC0+c2JfdmVyc2lvbm51bSB8PSBYRlNfU0JfVkVSU0lPTl9NT1JFQklUU0JJ VDsKPiArCj4gKwkvKgo+ICsJICogRHVlIHRvIGEgc3RydWN0dXJlIGFsaWdubWVudCBpc3N1ZSwg c2JfZmVhdHVyZXMyIGVuZGVkIHVwIGluIG9uZQo+ICsJICogb2YgdHdvIGxvY2F0aW9ucywgdGhl IHNlY29uZCAiaW5jb3JyZWN0IiBsb2NhdGlvbiByZXByZXNlbnRlZCBieQo+ICsJICogdGhlIHNi X2JhZF9mZWF0dXJlczIgZmllbGQuIFRvIGF2b2lkIG9sZGVyIGtlcm5lbHMgbW91bnRpbmcKPiAr CSAqIGZpbGVzeXN0ZW1zIHRoZXkgc2hvdWxkbid0LCBzZXQgYm90aCBmaWVsZCB0byB0aGUgc2Ft ZSB2YWx1ZS4KPiArCSAqLwo+ICsJc2JwLT5zYl9iYWRfZmVhdHVyZXMyID0gc2JwLT5zYl9mZWF0 dXJlczI7Cj4gKwo+ICsJaWYgKCFmcC0+Y3Jjc19lbmFibGVkKQo+ICsJCXJldHVybjsKPiArCj4g KwkvKiBkZWZhdWx0IGZlYXR1cmVzIGZvciB2NSBmaWxlc3lzdGVtcyAqLwo+ICsJc2JwLT5zYl9m ZWF0dXJlc19jb21wYXQgPSAwOwo+ICsJc2JwLT5zYl9mZWF0dXJlc19yb19jb21wYXQgPSAwOwo+ ICsJc2JwLT5zYl9mZWF0dXJlc19pbmNvbXBhdCA9IFhGU19TQl9GRUFUX0lOQ09NUEFUX0ZUWVBF Owo+ICsJc2JwLT5zYl9mZWF0dXJlc19sb2dfaW5jb21wYXQgPSAwOwo+ICsKPiArCWlmIChmcC0+ Zmlub2J0KQo+ICsJCXNicC0+c2JfZmVhdHVyZXNfcm9fY29tcGF0ID0gWEZTX1NCX0ZFQVRfUk9f Q09NUEFUX0ZJTk9CVDsKPiArCj4gKwkvKgo+ICsJICogU3BhcnNlIGlub2RlIGNodW5rIHN1cHBv cnQgaGFzIHR3byBtYWluIGlub2RlIGFsaWdubWVudCByZXF1aXJlbWVudHMuCj4gKwkgKiBGaXJz dCwgc3BhcnNlIGNodW5rIGFsaWdubWVudCBtdXN0IG1hdGNoIHRoZSBjbHVzdGVyIHNpemUuIFNl Y29uZCwKPiArCSAqIGZ1bGwgY2h1bmsgYWxpZ25tZW50IG11c3QgbWF0Y2ggdGhlIGlub2RlIGNo dW5rIHNpemUuCj4gKwkgKgo+ICsJICogQ29weSB0aGUgYWxyZWFkeSBjYWxjdWxhdGVkL3NjYWxl ZCBpbm9hbGlnbm10IHRvIHNwaW5vX2FsaWduIGFuZAo+ICsJICogdXBkYXRlIHRoZSBmb3JtZXIg dG8gdGhlIGZ1bGwgaW5vZGUgY2h1bmsgc2l6ZS4KPiArCSAqLwo+ICsJaWYgKGZwLT5zcGlub2Rl cykgewo+ICsJCXNicC0+c2Jfc3Bpbm9fYWxpZ24gPSBzYnAtPnNiX2lub2FsaWdubXQ7Cj4gKwkJ c2JwLT5zYl9pbm9hbGlnbm10ID0gWEZTX0lOT0RFU19QRVJfQ0hVTksgKiBzYnAtPnNiX2lub2Rl c2l6ZSA+PiBzYnAtPnNiX2Jsb2NrbG9nOwoKTGluZSBhYm92ZSBleGNlZWRzIDgwIGNoYXJzLgoK PiArCQlzYnAtPnNiX2ZlYXR1cmVzX2luY29tcGF0IHw9IFhGU19TQl9GRUFUX0lOQ09NUEFUX1NQ SU5PREVTOwo+ICsJfQo+ICsKPiArfQo+ICsKPiAgaW50Cj4gIG1haW4oCj4gIAlpbnQJCQlhcmdj LAo+IEBAIC05MTQsOCArMTAxNSw2IEBAIG1haW4oCj4gIAl4ZnNfYWdudW1iZXJfdAkJYWdubzsK PiAgCV9fdWludDY0X3QJCWFnc2l6ZTsKPiAgCXhmc19hbGxvY19yZWNfdAkJKmFyZWM7Cj4gLQlp bnQJCQlhdHRydmVyc2lvbjsKPiAtCWludAkJCXByb2ppZDE2Yml0Owo+ICAJc3RydWN0IHhmc19i dHJlZV9ibG9jawkqYmxvY2s7Cj4gIAlpbnQJCQlibGZsYWc7Cj4gIAlpbnQJCQlibG9ja2xvZzsK PiBAQCAtOTMwLDggKzEwMjksNiBAQCBtYWluKAo+ICAJY2hhcgkJCSpkZmlsZTsKPiAgCWludAkJ CWRpcmJsb2NrbG9nOwo+ICAJaW50CQkJZGlyYmxvY2tzaXplOwo+IC0JaW50CQkJZGlyZnR5cGU7 Cj4gLQlpbnQJCQlkaXJ2ZXJzaW9uOwo+ICAJY2hhcgkJCSpkc2l6ZTsKPiAgCWludAkJCWRzdTsK PiAgCWludAkJCWRzdzsKPiBAQCAtOTM5LDcgKzEwMzYsNiBAQCBtYWluKAo+ICAJaW50CQkJZHN3 aWR0aDsKPiAgCWludAkJCWZvcmNlX292ZXJ3cml0ZTsKPiAgCXN0cnVjdCBmc3hhdHRyCQlmc3g7 Cj4gLQlpbnQJCQlpYWZsYWc7Cj4gIAlpbnQJCQlpbGZsYWc7Cj4gIAlpbnQJCQlpbWF4cGN0Owo+ ICAJaW50CQkJaW1mbGFnOwo+IEBAIC05ODEsNyArMTA3Nyw2IEBAIG1haW4oCj4gIAlpbnQJCQlu ZnR5cGU7Cj4gIAlpbnQJCQluc2ZsYWc7Cj4gIAlpbnQJCQludmZsYWc7Cj4gLQlpbnQJCQluY2k7 Cj4gIAlpbnQJCQlOZmxhZzsKPiAgCWludAkJCWRpc2NhcmQgPSAxOwo+ICAJY2hhcgkJCSpwOwo+ IEBAIC0xMDA1LDE5ICsxMTAwLDI3IEBAIG1haW4oCj4gIAlpbnQJCQl3b3JzdF9mcmVlbGlzdDsK PiAgCWxpYnhmc19pbml0X3QJCXhpOwo+ICAJc3RydWN0IGZzX3RvcG9sb2d5CWZ0Owo+IC0JaW50 CQkJbGF6eV9zYl9jb3VudGVyczsKPiAtCWludAkJCWNyY3NfZW5hYmxlZDsKPiAtCWludAkJCWZp bm9idDsKPiAtCWJvb2wJCQlmaW5vYnRmbGFnOwo+IC0JaW50CQkJc3Bpbm9kZXM7Cj4gKwlzdHJ1 Y3Qgc2JfZmVhdF9hcmdzCXNiX2ZlYXQgPSB7Cj4gKwkJLmZpbm9idCA9IDEsCj4gKwkJLmZpbm9i dGZsYWcgPSBmYWxzZSwKPiArCQkuc3Bpbm9kZXMgPSAwLAo+ICsJCS5sb2dfdmVyc2lvbiA9IDIs Cj4gKwkJLmF0dHJfdmVyc2lvbiA9IDIsCj4gKwkJLmRpcl92ZXJzaW9uID0gWEZTX0RGTF9ESVJf VkVSU0lPTiwKPiArCQkuaW5vZGVfYWxpZ24gPSBYRlNfSUZMQUdfQUxJR04sCj4gKwkJLm5jaSA9 IGZhbHNlLAo+ICsJCS5sYXp5X3NiX2NvdW50ZXJzID0gdHJ1ZSwKPiArCQkucHJvamlkMTZiaXQg PSBmYWxzZSwKPiArCQkuY3Jjc19lbmFibGVkID0gdHJ1ZSwKPiArCQkuZGlyZnR5cGUgPSBmYWxz ZSwKPiArCQkucGFyZW50X3BvaW50ZXJzID0gZmFsc2UsCj4gKwl9Owo+ICAKCkZZSS4uLgoKQnVp bGRpbmcgbWtmcwogICAgW0NDXSAgICAgeGZzX21rZnMubwp4ZnNfbWtmcy5jOiBJbiBmdW5jdGlv biDigJhtYWlu4oCZOgp4ZnNfbWtmcy5jOjEwNTg6ODogd2FybmluZzogdW51c2VkIHZhcmlhYmxl IOKAmGxvZ3ZlcnNpb27igJkgWy1XdW51c2VkLXZhcmlhYmxlXQogIGludCAgIGxvZ3ZlcnNpb247 CiAgICAgICAgXgoKPiAgCXByb2duYW1lID0gYmFzZW5hbWUoYXJndlswXSk7Cj4gIAlzZXRsb2Nh bGUoTENfQUxMLCAiIik7Cj4gIAliaW5kdGV4dGRvbWFpbihQQUNLQUdFLCBMT0NBTEVESVIpOwo+ ICAJdGV4dGRvbWFpbihQQUNLQUdFKTsKPiAgCj4gLQlhdHRydmVyc2lvbiA9IDI7Cj4gLQlwcm9q aWQxNmJpdCA9IDA7Cj4gIAlibGZsYWcgPSBic2ZsYWcgPSBzbGZsYWcgPSBzc2ZsYWcgPSBsc2xm bGFnID0gbHNzZmxhZyA9IDA7Cj4gIAlibG9ja2xvZyA9IGJsb2Nrc2l6ZSA9IDA7Cj4gIAlzZWN0 b3Jsb2cgPSBsc2VjdG9ybG9nID0gWEZTX01JTl9TRUNUT1JTSVpFX0xPRzsKPiBAQCAtMTAyNiwy NiArMTEyOSwxOCBAQCBtYWluKAo+ICAJaWxmbGFnID0gaW1mbGFnID0gaXBmbGFnID0gaXNmbGFn ID0gMDsKPiAgCWxpZmxhZyA9IGxhZmxhZyA9IGxzZmxhZyA9IGxzdWZsYWcgPSBsc3VuaXRmbGFn ID0gbGRmbGFnID0gbHZmbGFnID0gMDsKPiAgCWxvZ2ludGVybmFsID0gMTsKPiAtCWxvZ3ZlcnNp b24gPSAyOwo+ICAJbG9nYWdubyA9IGxvZ2Jsb2NrcyA9IHJ0YmxvY2tzID0gcnRleHRibG9ja3Mg PSAwOwo+IC0JTmZsYWcgPSBubGZsYWcgPSBuc2ZsYWcgPSBudmZsYWcgPSBuY2kgPSAwOwo+IC0J bmZ0eXBlID0gZGlyZnR5cGUgPSAwOwkJLyogaW5vZGUgdHlwZSBpbmZvcm1hdGlvbiBpbiB0aGUg ZGlyICovCj4gKwlOZmxhZyA9IG5sZmxhZyA9IG5zZmxhZyA9IG52ZmxhZyA9IDA7Cj4gKwluZnR5 cGUgPSAwOwo+ICAJZGlyYmxvY2tsb2cgPSBkaXJibG9ja3NpemUgPSAwOwo+IC0JZGlydmVyc2lv biA9IFhGU19ERkxfRElSX1ZFUlNJT047Cj4gIAlxZmxhZyA9IDA7Cj4gIAlpbWF4cGN0ID0gaW5v ZGVsb2cgPSBpbm9wYmxvY2sgPSBpc2l6ZSA9IDA7Cj4gLQlpYWZsYWcgPSBYRlNfSUZMQUdfQUxJ R047Cj4gIAlkZmlsZSA9IGxvZ2ZpbGUgPSBydGZpbGUgPSBOVUxMOwo+ICAJZHNpemUgPSBsb2dz aXplID0gcnRzaXplID0gcnRleHRzaXplID0gcHJvdG9maWxlID0gTlVMTDsKPiAgCWRzdSA9IGRz dyA9IGRzdW5pdCA9IGRzd2lkdGggPSBsYWxpZ24gPSBsc3UgPSBsc3VuaXQgPSAwOwo+ICAJbm9k c2ZsYWcgPSBub3JzZmxhZyA9IDA7Cj4gIAlmb3JjZV9vdmVyd3JpdGUgPSAwOwo+ICAJd29yc3Rf ZnJlZWxpc3QgPSAwOwo+IC0JbGF6eV9zYl9jb3VudGVycyA9IDE7Cj4gLQljcmNzX2VuYWJsZWQg PSAxOwo+IC0JZmlub2J0ID0gMTsKPiAtCWZpbm9idGZsYWcgPSBmYWxzZTsKPiAtCXNwaW5vZGVz ID0gMDsKPiAgCW1lbXNldCgmZnN4LCAwLCBzaXplb2YoZnN4KSk7Cj4gIAo+ICAJbWVtc2V0KCZ4 aSwgMCwgc2l6ZW9mKHhpKSk7Cj4gQEAgLTEyODQsMTAgKzEzNzksMTEgQEAgbWFpbigKPiAgCQkJ CXN3aXRjaCAoZ2V0c3Vib3B0KCZwLCAoY29uc3RwcClpb3B0cywgJnZhbHVlKSkgewo+ICAJCQkJ Y2FzZSBJX0FMSUdOOgo+ICAJCQkJCWlmICghdmFsdWUgfHwgKnZhbHVlID09ICdcMCcpCj4gLQkJ CQkJCXZhbHVlID0gIjEiOwo+IC0JCQkJCWlhZmxhZyA9IGF0b2kodmFsdWUpOwo+IC0JCQkJCWlm IChpYWZsYWcgPCAwIHx8IGlhZmxhZyA+IDEpCj4gKwkJCQkJCWJyZWFrOwoKcmVxdmFsKCkgPwoK PiArCQkJCQljID0gYXRvaSh2YWx1ZSk7Cj4gKwkJCQkJaWYgKGMgPCAwIHx8IGMgPiAxKQo+ICAJ CQkJCQlpbGxlZ2FsKHZhbHVlLCAiaSBhbGlnbiIpOwo+ICsJCQkJCXNiX2ZlYXQuaW5vZGVfYWxp Z24gPSBjID8gdHJ1ZSA6IGZhbHNlOwo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBJX0xPRzoK PiAgCQkJCQlpZiAoIXZhbHVlIHx8ICp2YWx1ZSA9PSAnXDAnKQo+IEBAIC0xMzU3LDcgKzE0NTMs NyBAQCBtYWluKAo+ICAJCQkJCWMgPSBhdG9pKHZhbHVlKTsKPiAgCQkJCQlpZiAoYyA8IDAgfHwg YyA+IDIpCj4gIAkJCQkJCWlsbGVnYWwodmFsdWUsICJpIGF0dHIiKTsKPiAtCQkJCQlhdHRydmVy c2lvbiA9IGM7Cj4gKwkJCQkJc2JfZmVhdC5hdHRyX3ZlcnNpb24gPSBjOwo+ICAJCQkJCWJyZWFr Owo+ICAJCQkJY2FzZSBJX1BST0pJRDMyQklUOgo+ICAJCQkJCWlmICghdmFsdWUgfHwgKnZhbHVl ID09ICdcMCcpCj4gQEAgLTEzNjUsMTMgKzE0NjEsMTMgQEAgbWFpbigKPiAgCQkJCQljID0gYXRv aSh2YWx1ZSk7Cj4gIAkJCQkJaWYgKGMgPCAwIHx8IGMgPiAxKQo+ICAJCQkJCQlpbGxlZ2FsKHZh bHVlLCAiaSBwcm9qaWQzMmJpdCIpOwo+IC0JCQkJCXByb2ppZDE2Yml0ID0gYyA/IDAgOiAxOwo+ ICsJCQkJCXNiX2ZlYXQucHJvamlkMTZiaXQgPSBjID8gZmFsc2UgOiB0cnVlOwo+ICAJCQkJCWJy ZWFrOwo+ICAJCQkJY2FzZSBJX1NQSU5PREVTOgo+ICAJCQkJCWlmICghdmFsdWUgfHwgKnZhbHVl ID09ICdcMCcpCj4gIAkJCQkJCXZhbHVlID0gIjEiOwo+IC0JCQkJCXNwaW5vZGVzID0gYXRvaSh2 YWx1ZSk7Cj4gLQkJCQkJaWYgKHNwaW5vZGVzIDwgMCB8fCBzcGlub2RlcyA+IDEpCj4gKwkJCQkJ c2JfZmVhdC5zcGlub2RlcyA9IGF0b2kodmFsdWUpOwo+ICsJCQkJCWlmIChzYl9mZWF0LnNwaW5v ZGVzIDwgMCB8fCBzYl9mZWF0LnNwaW5vZGVzID4gMSkKCldoeSBub3QgdXNlICdjJyBoZXJlIGxp a2UgZXZlcnl3aGVyZSBlbHNlPwoKPiAgCQkJCQkJaWxsZWdhbCh2YWx1ZSwgImkgc3Bpbm9kZXMi KTsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWRlZmF1bHQ6Cj4gQEAgLTE0NjQsOSArMTU2MCwxMCBA QCBtYWluKAo+ICAJCQkJCQlyZXF2YWwoJ2wnLCBsb3B0cywgTF9WRVJTSU9OKTsKPiAgCQkJCQlp ZiAobHZmbGFnKQo+ICAJCQkJCQlyZXNwZWMoJ2wnLCBsb3B0cywgTF9WRVJTSU9OKTsKPiAtCQkJ CQlsb2d2ZXJzaW9uID0gYXRvaSh2YWx1ZSk7Cj4gLQkJCQkJaWYgKGxvZ3ZlcnNpb24gPCAxIHx8 IGxvZ3ZlcnNpb24gPiAyKQo+ICsJCQkJCWMgPSBhdG9pKHZhbHVlKTsKPiArCQkJCQlpZiAoYyA8 IDEgfHwgYyA+IDIpCj4gIAkJCQkJCWlsbGVnYWwodmFsdWUsICJsIHZlcnNpb24iKTsKPiArCQkJ CQlzYl9mZWF0LmxvZ192ZXJzaW9uID0gYzsKPiAgCQkJCQlsdmZsYWcgPSAxOwo+ICAJCQkJCWJy ZWFrOwo+ICAJCQkJY2FzZSBMX1NJWkU6Cj4gQEAgLTE1MTUsNyArMTYxMiw4IEBAIG1haW4oCj4g IAkJCQkJYyA9IGF0b2kodmFsdWUpOwo+ICAJCQkJCWlmIChjIDwgMCB8fCBjID4gMSkKPiAgCQkJ CQkJaWxsZWdhbCh2YWx1ZSwgImwgbGF6eS1jb3VudCIpOwo+IC0JCQkJCWxhenlfc2JfY291bnRl cnMgPSBjOwo+ICsJCQkJCXNiX2ZlYXQubGF6eV9zYl9jb3VudGVycyA9IGMgPyB0cnVlCj4gKwkJ CQkJCQkJICAgICA6IGZhbHNlOwo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJZGVmYXVsdDoKPiAgCQkJ CQl1bmtub3duKCdsJywgdmFsdWUpOwo+IEBAIC0xNTM5LDEyICsxNjM3LDE0IEBAIG1haW4oCj4g IAkJCQkJYyA9IGF0b2kodmFsdWUpOwo+ICAJCQkJCWlmIChjIDwgMCB8fCBjID4gMSkKPiAgCQkJ CQkJaWxsZWdhbCh2YWx1ZSwgIm0gY3JjIik7Cj4gLQkJCQkJY3Jjc19lbmFibGVkID0gYzsKPiAt CQkJCQlpZiAobmZ0eXBlICYmIGNyY3NfZW5hYmxlZCkgewo+ICsJCQkJCWlmIChjICYmIG5mdHlw ZSkgewo+ICAJCQkJCQlmcHJpbnRmKHN0ZGVyciwKPiAgXygiY2Fubm90IHNwZWNpZnkgYm90aCBj cmMgYW5kIGZ0eXBlXG4iKSk7Cj4gIAkJCQkJCXVzYWdlKCk7Cj4gIAkJCQkJfQo+ICsJCQkJCXNi X2ZlYXQuY3Jjc19lbmFibGVkID0gYyA/IHRydWUgOiBmYWxzZTsKPiArCQkJCQlpZiAoYykKPiAr CQkJCQkJc2JfZmVhdC5kaXJmdHlwZSA9IHRydWU7Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJCQljYXNl IE1fRklOT0JUOgo+ICAJCQkJCWlmICghdmFsdWUgfHwgKnZhbHVlID09ICdcMCcpCj4gQEAgLTE1 NTIsOCArMTY1Miw3IEBAIF8oImNhbm5vdCBzcGVjaWZ5IGJvdGggY3JjIGFuZCBmdHlwZVxuIikp Owo+ICAJCQkJCWMgPSBhdG9pKHZhbHVlKTsKPiAgCQkJCQlpZiAoYyA8IDAgfHwgYyA+IDEpCj4g IAkJCQkJCWlsbGVnYWwodmFsdWUsICJtIGZpbm9idCIpOwo+IC0JCQkJCWZpbm9idCA9IGM7Cj4g LQkJCQkJZmlub2J0ZmxhZyA9IHRydWU7Cj4gKwkJCQkJc2JfZmVhdC5maW5vYnQgPSBjOwoKV2hh dCBoYXBwZW5lZCB0byBmaW5vYnRmbGFnIChzZWUgYmVsb3cpPwoKPiAgCQkJCQlicmVhazsKPiAg CQkJCWRlZmF1bHQ6Cj4gIAkJCQkJdW5rbm93bignbScsIHZhbHVlKTsKPiBAQCAtMTYwMywxMiAr MTcwMiwxNCBAQCBfKCJjYW5ub3Qgc3BlY2lmeSBib3RoIGNyYyBhbmQgZnR5cGVcbiIpKTsKPiAg CQkJCQlpZiAobnZmbGFnKQo+ICAJCQkJCQlyZXNwZWMoJ24nLCBub3B0cywgTl9WRVJTSU9OKTsK PiAgCQkJCQlpZiAoIXN0cmNhc2VjbXAodmFsdWUsICJjaSIpKSB7Cj4gLQkJCQkJCW5jaSA9IDE7 IC8qIEFTQ0lJIENJIG1vZGUgKi8KPiArCQkJCQkJLyogQVNDSUkgQ0kgbW9kZSAqLwo+ICsJCQkJ CQlzYl9mZWF0Lm5jaSA9IHRydWU7Cj4gIAkJCQkJfSBlbHNlIHsKPiAtCQkJCQkJZGlydmVyc2lv biA9IGF0b2kodmFsdWUpOwo+IC0JCQkJCQlpZiAoZGlydmVyc2lvbiAhPSAyKQo+ICsJCQkJCQlj ID0gYXRvaSh2YWx1ZSk7Cj4gKwkJCQkJCWlmIChjICE9IDIpCj4gIAkJCQkJCQlpbGxlZ2FsKHZh bHVlLAo+ICAJCQkJCQkJCSJuIHZlcnNpb24iKTsKPiArCQkJCQkJc2JfZmVhdC5kaXJfdmVyc2lv biA9IGM7Cj4gIAkJCQkJfQo+ICAJCQkJCW52ZmxhZyA9IDE7Cj4gIAkJCQkJYnJlYWs7Cj4gQEAg LTE2MjAsMTIgKzE3MjEsMTIgQEAgXygiY2Fubm90IHNwZWNpZnkgYm90aCBjcmMgYW5kIGZ0eXBl XG4iKSk7Cj4gIAkJCQkJYyA9IGF0b2kodmFsdWUpOwo+ICAJCQkJCWlmIChjIDwgMCB8fCBjID4g MSkKPiAgCQkJCQkJaWxsZWdhbCh2YWx1ZSwgIm4gZnR5cGUiKTsKPiAtCQkJCQlpZiAoY3Jjc19l bmFibGVkKSB7Cj4gKwkJCQkJaWYgKHNiX2ZlYXQuY3Jjc19lbmFibGVkKSB7Cj4gIAkJCQkJCWZw cmludGYoc3RkZXJyLAo+ICBfKCJjYW5ub3Qgc3BlY2lmeSBib3RoIGNyYyBhbmQgZnR5cGVcbiIp KTsKPiAgCQkJCQkJdXNhZ2UoKTsKPiAgCQkJCQl9Cj4gLQkJCQkJZGlyZnR5cGUgPSBjOwo+ICsJ CQkJCXNiX2ZlYXQuZGlyZnR5cGUgPSBjID8gdHJ1ZSA6IGZhbHNlOwo+ICAJCQkJCW5mdHlwZSA9 IDE7Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJCQlkZWZhdWx0Ogo+IEBAIC0xNzc0LDcgKzE4NzUsNyBA QCBfKCJjYW5ub3Qgc3BlY2lmeSBib3RoIGNyYyBhbmQgZnR5cGVcbiIpKTsKPiAgCQlmcHJpbnRm KHN0ZGVyciwgXygiaWxsZWdhbCBibG9jayBzaXplICVkXG4iKSwgYmxvY2tzaXplKTsKPiAgCQl1 c2FnZSgpOwo+ICAJfQo+IC0JaWYgKGNyY3NfZW5hYmxlZCAmJiBibG9ja3NpemUgPCBYRlNfTUlO X0NSQ19CTE9DS1NJWkUpIHsKPiArCWlmIChzYl9mZWF0LmNyY3NfZW5hYmxlZCAmJiBibG9ja3Np emUgPCBYRlNfTUlOX0NSQ19CTE9DS1NJWkUpIHsKPiAgCQlmcHJpbnRmKHN0ZGVyciwKPiAgXygi TWluaW11bSBibG9jayBzaXplIGZvciBDUkMgZW5hYmxlZCBmaWxlc3lzdGVtcyBpcyAlZCBieXRl cy5cbiIpLAo+ICAJCQlYRlNfTUlOX0NSQ19CTE9DS1NJWkUpOwo+IEBAIC0xODUxLDcgKzE5NTIs NyBAQCBfKCJibG9jayBzaXplICVkIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gbG9naWNhbCBzZWN0 b3Igc2l6ZSAlZFxuIiksCj4gIAkJdXNhZ2UoKTsKPiAgCX0gZWxzZSBpZiAobHNlY3RvcnNpemUg PiBYRlNfTUlOX1NFQ1RPUlNJWkUgJiYgIWxzdSAmJiAhbHN1bml0KSB7Cj4gIAkJbHN1ID0gYmxv Y2tzaXplOwo+IC0JCWxvZ3ZlcnNpb24gPSAyOwo+ICsJCXNiX2ZlYXQubG9nX3ZlcnNpb24gPSAy Owo+ICAJfQo+ICAKPiAgCS8qCj4gQEAgLTE4NTksNyArMTk2MCw3IEBAIF8oImJsb2NrIHNpemUg JWQgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiBsb2dpY2FsIHNlY3RvciBzaXplICVkXG4iKSwKPiAg CSAqIG5vIGxvbmdlciBvcHRpb25hbCBmb3IgQ1JDIGVuYWJsZWQgZmlsZXN5c3RlbXMuICBDYXRj aCB0aGVtIHVwIGZyb250Cj4gIAkgKiBoZXJlIGJlZm9yZSBkb2luZyBhbnl0aGluZyBlbHNlLgo+ ICAJICovCj4gLQlpZiAoY3Jjc19lbmFibGVkKSB7Cj4gKwlpZiAoc2JfZmVhdC5jcmNzX2VuYWJs ZWQpIHsKPiAgCQkvKiBtaW5pbXVtIGlub2RlIHNpemUgaXMgNTEyIGJ5dGVzLCBpcGZsYWcgY2hl Y2tlZCBsYXRlciAqLwo+ICAJCWlmICgoaXNmbGFnIHx8IGlsZmxhZykgJiYgaW5vZGVsb2cgPCBY RlNfRElOT0RFX0RGTF9DUkNfTE9HKSB7Cj4gIAkJCWZwcmludGYoc3RkZXJyLAo+IEBAIC0xODY5 LDI4ICsxOTcwLDI4IEBAIF8oIk1pbmltdW0gaW5vZGUgc2l6ZSBmb3IgQ1JDcyBpcyAlZCBieXRl c1xuIiksCj4gIAkJfQo+ICAKPiAgCQkvKiBpbm9kZXMgYWx3YXlzIGFsaWduZWQgKi8KPiAtCQlp ZiAoaWFmbGFnICE9IDEpIHsKPiArCQlpZiAoIXNiX2ZlYXQuaW5vZGVfYWxpZ24pIHsKPiAgCQkJ ZnByaW50ZihzdGRlcnIsCj4gIF8oIklub2RlcyBhbHdheXMgYWxpZ25lZCBmb3IgQ1JDIGVuYWJs ZWQgZmlsZXN5dGVtc1xuIikpOwo+ICAJCQl1c2FnZSgpOwo+ICAJCX0KPiAgCj4gIAkJLyogbGF6 eSBzYiBjb3VudGVycyBhbHdheXMgb24gKi8KPiAtCQlpZiAobGF6eV9zYl9jb3VudGVycyAhPSAx KSB7Cj4gKwkJaWYgKCFzYl9mZWF0Lmxhenlfc2JfY291bnRlcnMpIHsKPiAgCQkJZnByaW50Zihz dGRlcnIsCj4gIF8oIkxhenkgc3VwZXJibG9jayBjb3VudGVkIGFsd2F5cyBlbmFibGVkIGZvciBD UkMgZW5hYmxlZCBmaWxlc3l0ZW1zXG4iKSk7Cj4gIAkJCXVzYWdlKCk7Cj4gIAkJfQo+ICAKPiAg CQkvKiB2ZXJzaW9uIDIgbG9ncyBhbHdheXMgb24gKi8KPiAtCQlpZiAobG9ndmVyc2lvbiAhPSAy KSB7Cj4gKwkJaWYgKHNiX2ZlYXQubG9nX3ZlcnNpb24gIT0gMikgewo+ICAJCQlmcHJpbnRmKHN0 ZGVyciwKPiAgXygiVjIgbG9ncyBhbHdheXMgZW5hYmxlZCBmb3IgQ1JDIGVuYWJsZWQgZmlsZXN5 dGVtc1xuIikpOwo+ICAJCQl1c2FnZSgpOwo+ICAJCX0KPiAgCj4gIAkJLyogYXR0cjIgYWx3YXlz IG9uICovCj4gLQkJaWYgKGF0dHJ2ZXJzaW9uICE9IDIpIHsKPiArCQlpZiAoc2JfZmVhdC5hdHRy X3ZlcnNpb24gIT0gMikgewo+ICAJCQlmcHJpbnRmKHN0ZGVyciwKPiAgXygiVjIgYXR0cmlidXRl IGZvcm1hdCBhbHdheXMgZW5hYmxlZCBvbiBDUkMgZW5hYmxlZCBmaWxlc3l0ZW1zXG4iKSk7Cj4g IAkJCXVzYWdlKCk7Cj4gQEAgLTE4OTgsNyArMTk5OSw3IEBAIF8oIlYyIGF0dHJpYnV0ZSBmb3Jt YXQgYWx3YXlzIGVuYWJsZWQgb24gQ1JDIGVuYWJsZWQgZmlsZXN5dGVtc1xuIikpOwo+ICAKPiAg CQkvKiAzMiBiaXQgcHJvamVjdCBxdW90YSBhbHdheXMgb24gKi8KPiAgCQkvKiBhdHRyMiBhbHdh eXMgb24gKi8KPiAtCQlpZiAocHJvamlkMTZiaXQgPT0gMSkgewo+ICsJCWlmIChzYl9mZWF0LnBy b2ppZDE2Yml0KSB7Cj4gIAkJCWZwcmludGYoc3RkZXJyLAo+ICBfKCIzMiBiaXQgUHJvamVjdCBJ RHMgYWx3YXlzIGVuYWJsZWQgb24gQ1JDIGVuYWJsZWQgZmlsZXN5dGVtc1xuIikpOwo+ICAJCQl1 c2FnZSgpOwo+IEBAIC0xOTEyLDE3ICsyMDEzLDE3IEBAIF8oIjMyIGJpdCBQcm9qZWN0IElEcyBh bHdheXMgZW5hYmxlZCBvbiBDUkMgZW5hYmxlZCBmaWxlc3l0ZW1zXG4iKSk7Cj4gIAkJICogdHJp ZWQgdG8gdXNlIGNyYz0wLGZpbm9idD0xLCB0aGVuIGlzc3VlIGEgd2FybmluZyBiZWZvcmUKPiAg CQkgKiB0dXJuaW5nIHRoZW0gb2ZmLgo+ICAJCSAqLwo+IC0JCWlmIChmaW5vYnQgJiYgZmlub2J0 ZmxhZykgewo+ICsJCWlmIChzYl9mZWF0LmZpbm9idCAmJiBzYl9mZWF0LmZpbm9idGZsYWcpIHsK ClNpbmNlIHRoZSBjb2RlIGFib3ZlIGRyb3BzIGZpbm9idGZsYWcsIEkgZG9uJ3QgdGhpbmsgd2Un bGwgZXZlciBoaXQKdGhpcy4gSW5kZWVkLCBJIGNhbiBub3cgY3JlYXRlIGEgY3JjPTAsZmlub2J0 PTEgZnMsIHdoaWNoIHNob3VsZG4ndApoYXBwZW4uCgpCcmlhbgoKPiAgCQkJZnByaW50ZihzdGRl cnIsCj4gIF8oIndhcm5pbmc6IGZpbm9idCBub3Qgc3VwcG9ydGVkIHdpdGhvdXQgQ1JDIHN1cHBv cnQsIGRpc2FibGVkLlxuIikpOwo+ICsJCQlzYl9mZWF0LmZpbm9idCA9IDA7Cj4gIAkJfQo+IC0J CWZpbm9idCA9IDA7Cj4gIAl9Cj4gIAo+IC0JaWYgKHNwaW5vZGVzICYmICFjcmNzX2VuYWJsZWQp IHsKPiArCWlmIChzYl9mZWF0LnNwaW5vZGVzICYmICFzYl9mZWF0LmNyY3NfZW5hYmxlZCkgewo+ ICAJCWZwcmludGYoc3RkZXJyLAo+ICBfKCJ3YXJuaW5nOiBzcGFyc2UgaW5vZGVzIG5vdCBzdXBw b3J0ZWQgd2l0aG91dCBDUkMgc3VwcG9ydCwgZGlzYWJsZWQuXG4iKSk7Cj4gLQkJc3Bpbm9kZXMg PSAwOwo+ICsJCXNiX2ZlYXQuc3Bpbm9kZXMgPSAwOwo+ICAJfQo+ICAKPiAgCWlmIChuc2ZsYWcg fHwgbmxmbGFnKSB7Cj4gQEAgLTE5NzIsMTEgKzIwNzMsMTEgQEAgXygid2FybmluZzogc3BhcnNl IGlub2RlcyBub3Qgc3VwcG9ydGVkIHdpdGhvdXQgQ1JDIHN1cHBvcnQsIGRpc2FibGVkLlxuIikp Owo+ICAJCWlub2RlbG9nID0gYmxvY2tsb2cgLSBsaWJ4ZnNfaGlnaGJpdDMyKGlub3BibG9jayk7 Cj4gIAkJaXNpemUgPSAxIDw8IGlub2RlbG9nOwo+ICAJfSBlbHNlIGlmICghaWxmbGFnICYmICFp c2ZsYWcpIHsKPiAtCQlpbm9kZWxvZyA9IGNyY3NfZW5hYmxlZCA/IFhGU19ESU5PREVfREZMX0NS Q19MT0cKPiAtCQkJCQk6IFhGU19ESU5PREVfREZMX0xPRzsKPiArCQlpbm9kZWxvZyA9IHNiX2Zl YXQuY3Jjc19lbmFibGVkID8gWEZTX0RJTk9ERV9ERkxfQ1JDX0xPRwo+ICsJCQkJCQk6IFhGU19E SU5PREVfREZMX0xPRzsKPiAgCQlpc2l6ZSA9IDEgPDwgaW5vZGVsb2c7Cj4gIAl9Cj4gLQlpZiAo Y3Jjc19lbmFibGVkICYmIGlub2RlbG9nIDwgWEZTX0RJTk9ERV9ERkxfQ1JDX0xPRykgewo+ICsJ aWYgKHNiX2ZlYXQuY3Jjc19lbmFibGVkICYmIGlub2RlbG9nIDwgWEZTX0RJTk9ERV9ERkxfQ1JD X0xPRykgewo+ICAJCWZwcmludGYoc3RkZXJyLAo+ICAJCV8oIk1pbmltdW0gaW5vZGUgc2l6ZSBm b3IgQ1JDcyBpcyAlZCBieXRlc1xuIiksCj4gIAkJCTEgPDwgWEZTX0RJTk9ERV9ERkxfQ1JDX0xP Ryk7Cj4gQEAgLTIxMDYsMTAgKzIyMDcsMTAgQEAgXygid2FybmluZzogc3BhcnNlIGlub2RlcyBu b3Qgc3VwcG9ydGVkIHdpdGhvdXQgQ1JDIHN1cHBvcnQsIGRpc2FibGVkLlxuIikpOwo+ICAJfQo+ ICAKPiAgCS8qIGlmIGxzdSBvciBsc3VuaXQgd2FzIHNwZWNpZmllZCwgYXV0b21hdGljYWxseSB1 c2UgdjIgbG9ncyAqLwo+IC0JaWYgKChsc3UgfHwgbHN1bml0KSAmJiBsb2d2ZXJzaW9uID09IDEp IHsKPiArCWlmICgobHN1IHx8IGxzdW5pdCkgJiYgc2JfZmVhdC5sb2dfdmVyc2lvbiA9PSAxKSB7 Cj4gIAkJZnByaW50ZihzdGRlcnIsCj4gIAkJCV8oImxvZyBzdHJpcGUgdW5pdCBzcGVjaWZpZWQs IHVzaW5nIHYyIGxvZ3NcbiIpKTsKPiAtCQlsb2d2ZXJzaW9uID0gMjsKPiArCQlzYl9mZWF0Lmxv Z192ZXJzaW9uID0gMjsKPiAgCX0KPiAgCj4gIAljYWxjX3N0cmlwZV9mYWN0b3JzKGRzdSwgZHN3 LCBzZWN0b3JzaXplLCBsc3UsIGxzZWN0b3JzaXplLAo+IEBAIC0yNDI0LDEyICsyNTI1LDEyIEBA IGFuIEFHIHNpemUgdGhhdCBpcyBvbmUgc3RyaXBlIHVuaXQgc21hbGxlciwgZm9yIGV4YW1wbGUg JWxsdS5cbiIpLAo+ICAJCX0KPiAgCQkvKiBjb252ZXJ0IGZyb20gNTEyIGJ5dGUgYmxvY2tzIHRv IGZzIGJsb2NrcyAqLwo+ICAJCWxzdW5pdCA9IERUT0JUKGxzdW5pdCk7Cj4gLQl9IGVsc2UgaWYg KGxvZ3ZlcnNpb24gPT0gMiAmJiBsb2dpbnRlcm5hbCAmJiBkc3VuaXQpIHsKPiArCX0gZWxzZSBp ZiAoc2JfZmVhdC5sb2dfdmVyc2lvbiA9PSAyICYmIGxvZ2ludGVybmFsICYmIGRzdW5pdCkgewo+ ICAJCS8qIGxzdW5pdCBhbmQgZHN1bml0IG5vdyBpbiBmcyBibG9ja3MgKi8KPiAgCQlsc3VuaXQg PSBkc3VuaXQ7Cj4gIAl9Cj4gIAo+IC0JaWYgKGxvZ3ZlcnNpb24gPT0gMiAmJiAobHN1bml0ICog YmxvY2tzaXplKSA+IDI1NiAqIDEwMjQpIHsKPiArCWlmIChzYl9mZWF0LmxvZ192ZXJzaW9uID09 IDIgJiYgKGxzdW5pdCAqIGJsb2Nrc2l6ZSkgPiAyNTYgKiAxMDI0KSB7Cj4gIAkJLyogV2FybiBv bmx5IGlmIHNwZWNpZmllZCBvbiBjb21tYW5kbGluZSAqLwo+ICAJCWlmIChsc3VmbGFnIHx8IGxz dW5pdGZsYWcpIHsKPiAgCQkJZnByaW50ZihzdGRlcnIsCj4gQEAgLTI0NDEsOSArMjU0Miw5IEBA IGFuIEFHIHNpemUgdGhhdCBpcyBvbmUgc3RyaXBlIHVuaXQgc21hbGxlciwgZm9yIGV4YW1wbGUg JWxsdS5cbiIpLAo+ICAJCWxzdW5pdCA9ICgzMiAqIDEwMjQpID4+IGJsb2NrbG9nOwo+ICAJfQo+ ICAKPiAtCW1pbl9sb2dibG9ja3MgPSBtYXhfdHJhbnNfcmVzKGNyY3NfZW5hYmxlZCwgZGlydmVy c2lvbiwKPiArCW1pbl9sb2dibG9ja3MgPSBtYXhfdHJhbnNfcmVzKHNiX2ZlYXQuY3Jjc19lbmFi bGVkLCBzYl9mZWF0LmRpcl92ZXJzaW9uLAo+ICAJCQkJICAgc2VjdG9ybG9nLCBibG9ja2xvZywg aW5vZGVsb2csIGRpcmJsb2NrbG9nLAo+IC0JCQkJICAgbG9ndmVyc2lvbiwgbHN1bml0KTsKPiAr CQkJCSAgIHNiX2ZlYXQubG9nX3ZlcnNpb24sIGxzdW5pdCk7Cj4gIAlBU1NFUlQobWluX2xvZ2Js b2Nrcyk7Cj4gIAltaW5fbG9nYmxvY2tzID0gTUFYKFhGU19NSU5fTE9HX0JMT0NLUywgbWluX2xv Z2Jsb2Nrcyk7Cj4gIAlpZiAoIWxvZ3NpemUgJiYgZGJsb2NrcyA+PSAoMTAyNCoxMDI0KjEwMjQp ID4+IGJsb2NrbG9nKQo+IEBAIC0yNTIxLDI1ICsyNjIyLDggQEAgXygic2l6ZSAlcyBzcGVjaWZp ZWQgZm9yIGxvZyBzdWJ2b2x1bWUgaXMgdG9vIGxhcmdlLCBtYXhpbXVtIGlzICVsbGQgYmxvY2tz XG4iKSwKPiAgCSAqIHNiX3ZlcnNpb25udW0gYW5kIGZpbm9idCBmbGFncyBtdXN0IGJlIHNldCBi ZWZvcmUgd2UgdXNlCj4gIAkgKiBYRlNfUFJFQUxMT0NfQkxPQ0tTKCkuCj4gIAkgKi8KPiAtCXNi cC0+c2JfZmVhdHVyZXMyID0gWEZTX1NCX1ZFUlNJT04yX01LRlMoY3Jjc19lbmFibGVkLCBsYXp5 X3NiX2NvdW50ZXJzLAo+IC0JCQkJCWF0dHJ2ZXJzaW9uID09IDIsICFwcm9qaWQxNmJpdCwgMCwK PiAtCQkJCQkoIWNyY3NfZW5hYmxlZCAmJiBkaXJmdHlwZSkpOwo+IC0Jc2JwLT5zYl92ZXJzaW9u bnVtID0gWEZTX1NCX1ZFUlNJT05fTUtGUyhjcmNzX2VuYWJsZWQsIGlhZmxhZywKPiAtCQkJCQlk c3VuaXQgIT0gMCwKPiAtCQkJCQlsb2d2ZXJzaW9uID09IDIsIGF0dHJ2ZXJzaW9uID09IDEsCj4g LQkJCQkJKHNlY3RvcnNpemUgIT0gQkJTSVpFIHx8Cj4gLQkJCQkJCQlsc2VjdG9yc2l6ZSAhPSBC QlNJWkUpLAo+IC0JCQkJCW5jaSwgc2JwLT5zYl9mZWF0dXJlczIgIT0gMCk7Cj4gLQkvKgo+IC0J ICogRHVlIHRvIGEgc3RydWN0dXJlIGFsaWdubWVudCBpc3N1ZSwgc2JfZmVhdHVyZXMyIGVuZGVk IHVwIGluIG9uZQo+IC0JICogb2YgdHdvIGxvY2F0aW9ucywgdGhlIHNlY29uZCAiaW5jb3JyZWN0 IiBsb2NhdGlvbiByZXByZXNlbnRlZCBieQo+IC0JICogdGhlIHNiX2JhZF9mZWF0dXJlczIgZmll bGQuIFRvIGF2b2lkIG9sZGVyIGtlcm5lbHMgbW91bnRpbmcKPiAtCSAqIGZpbGVzeXN0ZW1zIHRo ZXkgc2hvdWxkbid0LCBzZXQgYm90aCBmaWVsZCB0byB0aGUgc2FtZSB2YWx1ZS4KPiAtCSAqLwo+ IC0Jc2JwLT5zYl9iYWRfZmVhdHVyZXMyID0gc2JwLT5zYl9mZWF0dXJlczI7Cj4gKwlzYl9zZXRf ZmVhdHVyZXMoJm1wLT5tX3NiLCAmc2JfZmVhdCwgc2VjdG9yc2l6ZSwgbHNlY3RvcnNpemUsIGRz dW5pdCk7Cj4gIAo+IC0JaWYgKGZpbm9idCkKPiAtCQlzYnAtPnNiX2ZlYXR1cmVzX3JvX2NvbXBh dCA9IFhGU19TQl9GRUFUX1JPX0NPTVBBVF9GSU5PQlQ7Cj4gIAo+ICAJaWYgKGxvZ2ludGVybmFs KSB7Cj4gIAkJLyoKPiBAQCAtMjU5MSwxNCArMjY3NSw2IEBAIF8oInNpemUgJXMgc3BlY2lmaWVk IGZvciBsb2cgc3Vidm9sdW1lIGlzIHRvbyBsYXJnZSwgbWF4aW11bSBpcyAlbGxkIGJsb2Nrc1xu IiksCj4gIAl9Cj4gIAl2YWxpZGF0ZV9sb2dfc2l6ZShsb2dibG9ja3MsIGJsb2NrbG9nLCBtaW5f bG9nYmxvY2tzKTsKPiAgCj4gLQkvKgo+IC0JICogZGlyZW50IGZpbGV0eXBlIGZpZWxkIGFsd2F5 cyBlbmFibGVkIG9uIHY1IHN1cGVyYmxvY2tzCj4gLQkgKi8KPiAtCWlmIChjcmNzX2VuYWJsZWQp IHsKPiAtCQlzYnAtPnNiX2ZlYXR1cmVzX2luY29tcGF0ID0gWEZTX1NCX0ZFQVRfSU5DT01QQVRf RlRZUEU7Cj4gLQkJZGlyZnR5cGUgPSAxOwo+IC0JfQo+IC0KPiAgCWlmICghcWZsYWcgfHwgTmZs YWcpIHsKPiAgCQlwcmludGYoXygKPiAgCQkgICAibWV0YS1kYXRhPSUtMjJzIGlzaXplPSUtNmQg YWdjb3VudD0lbGxkLCBhZ3NpemU9JWxsZCBibGtzXG4iCj4gQEAgLTI2MTEsMTMgKzI2ODcsMTYg QEAgXygic2l6ZSAlcyBzcGVjaWZpZWQgZm9yIGxvZyBzdWJ2b2x1bWUgaXMgdG9vIGxhcmdlLCBt YXhpbXVtIGlzICVsbGQgYmxvY2tzXG4iKSwKPiAgCQkgICAiICAgICAgICAgPSUtMjJzIHNlY3Rz ej0lLTV1IHN1bml0PSVkIGJsa3MsIGxhenktY291bnQ9JWRcbiIKPiAgCQkgICAicmVhbHRpbWUg PSUtMjJzIGV4dHN6PSUtNmQgYmxvY2tzPSVsbGQsIHJ0ZXh0ZW50cz0lbGxkXG4iKSwKPiAgCQkJ ZGZpbGUsIGlzaXplLCAobG9uZyBsb25nKWFnY291bnQsIChsb25nIGxvbmcpYWdzaXplLAo+IC0J CQkiIiwgc2VjdG9yc2l6ZSwgYXR0cnZlcnNpb24sICFwcm9qaWQxNmJpdCwKPiAtCQkJIiIsIGNy Y3NfZW5hYmxlZCwgZmlub2J0LCBzcGlub2RlcywKPiArCQkJIiIsIHNlY3RvcnNpemUsIHNiX2Zl YXQuYXR0cl92ZXJzaW9uLAo+ICsJCQkJICAgICFzYl9mZWF0LnByb2ppZDE2Yml0LAo+ICsJCQki Iiwgc2JfZmVhdC5jcmNzX2VuYWJsZWQsIHNiX2ZlYXQuZmlub2J0LCBzYl9mZWF0LnNwaW5vZGVz LAo+ICAJCQkiIiwgYmxvY2tzaXplLCAobG9uZyBsb25nKWRibG9ja3MsIGltYXhwY3QsCj4gIAkJ CSIiLCBkc3VuaXQsIGRzd2lkdGgsCj4gLQkJCWRpcnZlcnNpb24sIGRpcmJsb2Nrc2l6ZSwgbmNp LCBkaXJmdHlwZSwKPiArCQkJc2JfZmVhdC5kaXJfdmVyc2lvbiwgZGlyYmxvY2tzaXplLCBzYl9m ZWF0Lm5jaSwKPiArCQkJCXNiX2ZlYXQuZGlyZnR5cGUsCj4gIAkJCWxvZ2ZpbGUsIDEgPDwgYmxv Y2tsb2csIChsb25nIGxvbmcpbG9nYmxvY2tzLAo+IC0JCQlsb2d2ZXJzaW9uLCAiIiwgbHNlY3Rv cnNpemUsIGxzdW5pdCwgbGF6eV9zYl9jb3VudGVycywKPiArCQkJc2JfZmVhdC5sb2dfdmVyc2lv biwgIiIsIGxzZWN0b3JzaXplLCBsc3VuaXQsCj4gKwkJCQlzYl9mZWF0Lmxhenlfc2JfY291bnRl cnMsCj4gIAkJCXJ0ZmlsZSwgcnRleHRibG9ja3MgPDwgYmxvY2tsb2csCj4gIAkJCShsb25nIGxv bmcpcnRibG9ja3MsIChsb25nIGxvbmcpcnRleHRlbnRzKTsKPiAgCQlpZiAoTmZsYWcpCj4gQEAg LTI2NjAsMTcgKzI3MzksMTcgQEAgXygic2l6ZSAlcyBzcGVjaWZpZWQgZm9yIGxvZyBzdWJ2b2x1 bWUgaXMgdG9vIGxhcmdlLCBtYXhpbXVtIGlzICVsbGQgYmxvY2tzXG4iKSwKPiAgCXNicC0+c2Jf dW5pdCA9IGRzdW5pdDsKPiAgCXNicC0+c2Jfd2lkdGggPSBkc3dpZHRoOwo+ICAJc2JwLT5zYl9k aXJibGtsb2cgPSBkaXJibG9ja2xvZyAtIGJsb2NrbG9nOwo+IC0JaWYgKGxvZ3ZlcnNpb24gPT0g MikgewkvKiBUaGlzIGlzIHN0b3JlZCBpbiBieXRlcyAqLwo+ICsJaWYgKHNiX2ZlYXQubG9nX3Zl cnNpb24gPT0gMikgewkvKiBUaGlzIGlzIHN0b3JlZCBpbiBieXRlcyAqLwo+ICAJCWxzdW5pdCA9 IChsc3VuaXQgPT0gMCkgPyAxIDogWEZTX0ZTQl9UT19CKG1wLCBsc3VuaXQpOwo+ICAJCXNicC0+ c2JfbG9nc3VuaXQgPSBsc3VuaXQ7Cj4gIAl9IGVsc2UKPiAgCQlzYnAtPnNiX2xvZ3N1bml0ID0g MDsKPiAtCWlmIChpYWZsYWcpIHsKPiArCWlmIChzYl9mZWF0Lmlub2RlX2FsaWduKSB7Cj4gIAkJ aW50CWNsdXN0ZXJfc2l6ZSA9IFhGU19JTk9ERV9CSUdfQ0xVU1RFUl9TSVpFOwo+IC0JCWlmIChj cmNzX2VuYWJsZWQpCj4gKwkJaWYgKHNiX2ZlYXQuY3Jjc19lbmFibGVkKQo+ICAJCQljbHVzdGVy X3NpemUgKj0gaXNpemUgLyBYRlNfRElOT0RFX01JTl9TSVpFOwo+ICAJCXNicC0+c2JfaW5vYWxp Z25tdCA9IGNsdXN0ZXJfc2l6ZSA+PiBibG9ja2xvZzsKPiAtCQlpYWZsYWcgPSBzYnAtPnNiX2lu b2FsaWdubXQgIT0gMDsKPiArCQlzYl9mZWF0Lmlub2RlX2FsaWduID0gc2JwLT5zYl9pbm9hbGln bm10ICE9IDA7Cj4gIAl9IGVsc2UKPiAgCQlzYnAtPnNiX2lub2FsaWdubXQgPSAwOwo+ICAJaWYg KGxzZWN0b3JzaXplICE9IEJCU0laRSB8fCBzZWN0b3JzaXplICE9IEJCU0laRSkgewo+IEBAIC0y NjgxLDE5ICsyNzYwLDcgQEAgXygic2l6ZSAlcyBzcGVjaWZpZWQgZm9yIGxvZyBzdWJ2b2x1bWUg aXMgdG9vIGxhcmdlLCBtYXhpbXVtIGlzICVsbGQgYmxvY2tzXG4iKSwKPiAgCQlzYnAtPnNiX2xv Z3NlY3RzaXplID0gMDsKPiAgCX0KPiAgCj4gLQkvKgo+IC0JICogU3BhcnNlIGlub2RlIGNodW5r IHN1cHBvcnQgaGFzIHR3byBtYWluIGlub2RlIGFsaWdubWVudCByZXF1aXJlbWVudHMuCj4gLQkg KiBGaXJzdCwgc3BhcnNlIGNodW5rIGFsaWdubWVudCBtdXN0IG1hdGNoIHRoZSBjbHVzdGVyIHNp emUuIFNlY29uZCwKPiAtCSAqIGZ1bGwgY2h1bmsgYWxpZ25tZW50IG11c3QgbWF0Y2ggdGhlIGlu b2RlIGNodW5rIHNpemUuCj4gLQkgKgo+IC0JICogQ29weSB0aGUgYWxyZWFkeSBjYWxjdWxhdGVk L3NjYWxlZCBpbm9hbGlnbm10IHRvIHNwaW5vX2FsaWduIGFuZAo+IC0JICogdXBkYXRlIHRoZSBm b3JtZXIgdG8gdGhlIGZ1bGwgaW5vZGUgY2h1bmsgc2l6ZS4KPiAtCSAqLwo+IC0JaWYgKHNwaW5v ZGVzKSB7Cj4gLQkJc2JwLT5zYl9zcGlub19hbGlnbiA9IHNicC0+c2JfaW5vYWxpZ25tdDsKPiAt CQlzYnAtPnNiX2lub2FsaWdubXQgPSBYRlNfSU5PREVTX1BFUl9DSFVOSyAqIGlzaXplID4+IGJs b2NrbG9nOwo+IC0JCXNicC0+c2JfZmVhdHVyZXNfaW5jb21wYXQgfD0gWEZTX1NCX0ZFQVRfSU5D T01QQVRfU1BJTk9ERVM7Cj4gLQl9Cj4gKwlzYl9zZXRfZmVhdHVyZXMoJm1wLT5tX3NiLCAmc2Jf ZmVhdCwgc2VjdG9yc2l6ZSwgbHNlY3RvcnNpemUsIGRzdW5pdCk7Cj4gIAo+ICAJaWYgKGZvcmNl X292ZXJ3cml0ZSkKPiAgCQl6ZXJvX29sZF94ZnNfc3RydWN0dXJlcygmeGksIHNicCk7Cj4gQEAg LTI3NDksNyArMjgxNiw3IEBAIF8oInNpemUgJXMgc3BlY2lmaWVkIGZvciBsb2cgc3Vidm9sdW1l IGlzIHRvbyBsYXJnZSwgbWF4aW11bSBpcyAlbGxkIGJsb2Nrc1xuIiksCj4gIAlsaWJ4ZnNfbG9n X2NsZWFyKG1wLT5tX2xvZ2Rldl90YXJncCwKPiAgCQlYRlNfRlNCX1RPX0RBRERSKG1wLCBsb2dz dGFydCksCj4gIAkJKHhmc19leHRsZW5fdClYRlNfRlNCX1RPX0JCKG1wLCBsb2dibG9ja3MpLAo+ IC0JCSZzYnAtPnNiX3V1aWQsIGxvZ3ZlcnNpb24sIGxzdW5pdCwgWExPR19GTVQpOwo+ICsJCSZz YnAtPnNiX3V1aWQsIHNiX2ZlYXQubG9nX3ZlcnNpb24sIGxzdW5pdCwgWExPR19GTVQpOwo+ICAK PiAgCW1wID0gbGlieGZzX21vdW50KG1wLCBzYnAsIHhpLmRkZXYsIHhpLmxvZ2RldiwgeGkucnRk ZXYsIDApOwo+ICAJaWYgKG1wID09IE5VTEwpIHsKPiBAQCAtMjg1MSw3ICsyOTE4LDcgQEAgXygi c2l6ZSAlcyBzcGVjaWZpZWQgZm9yIGxvZyBzdWJ2b2x1bWUgaXMgdG9vIGxhcmdlLCBtYXhpbXVt IGlzICVsbGQgYmxvY2tzXG4iKSwKPiAgCQlhZ2ktPmFnaV9jb3VudCA9IDA7Cj4gIAkJYWdpLT5h Z2lfcm9vdCA9IGNwdV90b19iZTMyKFhGU19JQlRfQkxPQ0sobXApKTsKPiAgCQlhZ2ktPmFnaV9s ZXZlbCA9IGNwdV90b19iZTMyKDEpOwo+IC0JCWlmIChmaW5vYnQpIHsKPiArCQlpZiAoc2JfZmVh dC5maW5vYnQpIHsKPiAgCQkJYWdpLT5hZ2lfZnJlZV9yb290ID0gY3B1X3RvX2JlMzIoWEZTX0ZJ QlRfQkxPQ0sobXApKTsKPiAgCQkJYWdpLT5hZ2lfZnJlZV9sZXZlbCA9IGNwdV90b19iZTMyKDEp Owo+ICAJCX0KPiBAQCAtMjk4NCw3ICszMDUxLDcgQEAgXygic2l6ZSAlcyBzcGVjaWZpZWQgZm9y IGxvZyBzdWJ2b2x1bWUgaXMgdG9vIGxhcmdlLCBtYXhpbXVtIGlzICVsbGQgYmxvY2tzXG4iKSwK PiAgCQkvKgo+ICAJCSAqIEZyZWUgSU5PIGJ0cmVlIHJvb3QgYmxvY2sKPiAgCQkgKi8KPiAtCQlp ZiAoIWZpbm9idCkKPiArCQlpZiAoIXNiX2ZlYXQuZmlub2J0KQo+ICAJCQljb250aW51ZTsKPiAg Cj4gIAkJYnVmID0gbGlieGZzX2dldGJ1ZihtcC0+bV9kZGV2X3RhcmdwLAo+IC0tIAo+IDIuMS4w Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiB4 ZnMgbWFpbGluZyBsaXN0Cj4geGZzQG9zcy5zZ2kuY29tCj4gaHR0cDovL29zcy5zZ2kuY29tL21h aWxtYW4vbGlzdGluZm8veGZzCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwp4ZnMgbWFpbGluZyBsaXN0Cnhmc0Bvc3Muc2dpLmNvbQpodHRwOi8vb3NzLnNn aS5jb20vbWFpbG1hbi9saXN0aW5mby94ZnMK