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 855797F82 for ; Fri, 26 Jun 2015 12:17:03 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 0F188AC007 for ; Fri, 26 Jun 2015 10:16:59 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id r1pUc3UGxzNUFiG7 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 26 Jun 2015 10:16:58 -0700 (PDT) Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id 2798847261C for ; Fri, 26 Jun 2015 17:16:58 +0000 (UTC) Date: Fri, 26 Jun 2015 13:16:56 -0400 From: Brian Foster Subject: Re: [PATCH 07/17] mkfs: structify input parameter passing Message-ID: <20150626171656.GC40750@bfoster.bfoster> References: <1434711726-13092-1-git-send-email-jtulak@redhat.com> <1434711726-13092-8-git-send-email-jtulak@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1434711726-13092-8-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 T24gRnJpLCBKdW4gMTksIDIwMTUgYXQgMDE6MDE6NTZQTSArMDIwMCwgSmFuIMWkdWzDoWsgd3Jv dGU6Cj4gRnJvbTogRGF2ZSBDaGlubmVyIDxkY2hpbm5lckByZWRoYXQuY29tPgo+IAo+IFBhc3Np bmcgbGFyZ2UgbnVtYmVyIG9mIHBhcmFtZXRlcnMgYXJvdW5kIHRvIG51bWJlciBjb252ZXJzaW9u Cj4gZnVuY3Rpb25zIGlzIHBhaW5mdWwuIEFkZCBhIHN0cnVjdHVyZSB0byBlbmNhcHN1bGF0ZSB0 aGUgY29uc3RhbnQKPiBwYXJhbWV0ZXJzIHRoYXQgYXJlIHBhc3NlZCwgYW5kIGNvbnZlcnQgZ2V0 bnVtX2NoZWNrZWQgdG8gdXNlIGl0Lgo+IAo+IFRoaXMgaXMgdGhlIGZpcnN0IHJlYWwgc3RlcCB0 b3dhcmRzIGEgdGFibGUgZHJpdmVuIG9wdGlvbiBwYXJzZXIuCj4gCj4gU2lnbmVkLW9mZi1ieTog RGF2ZSBDaGlubmVyIDxkY2hpbm5lckByZWRoYXQuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEphbiDF pHVsw6FrIDxqdHVsYWtAcmVkaGF0LmNvbT4KPiAtLS0KPiAgbWtmcy94ZnNfbWtmcy5jIHwgNjAy ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t Cj4gIDEgZmlsZSBjaGFuZ2VkLCAzOTIgaW5zZXJ0aW9ucygrKSwgMjEwIGRlbGV0aW9ucygtKQo+ IAo+IGRpZmYgLS1naXQgYS9ta2ZzL3hmc19ta2ZzLmMgYi9ta2ZzL3hmc19ta2ZzLmMKPiBpbmRl eCA2ZjBhYTU1Li5kM2QxZTExIDEwMDY0NAo+IC0tLSBhL21rZnMveGZzX21rZnMuYwo+ICsrKyBi L21rZnMveGZzX21rZnMuYwo+IEBAIC01MiwxNDUgKzUyLDMyMiBAQCBzdGF0aWMgaW50ICBpc3Bv dzIodW5zaWduZWQgaW50IGkpOwo+ICBzdGF0aWMgbG9uZyBsb25nIGN2dG51bSh1bnNpZ25lZCBp bnQgYmxvY2tzaXplLAo+ICAJCQl1bnNpZ25lZCBpbnQgc2VjdG9yc2l6ZSwgY29uc3QgY2hhciAq cyk7Cj4gIAouLi4KPiAgCj4gLWNoYXIJKmlvcHRzW10gPSB7Cj4gKwo+ICtjb25zdCBzdHJ1Y3Qg b3B0X3BhcmFtcyBpb3B0cyA9IHsKPiArCS5uYW1lID0gJ2knLAo+ICsJLnN1Ym9wdHMgPSB7Cj4g ICNkZWZpbmUJSV9BTElHTgkJMAo+IC0JImFsaWduIiwKPiArCQkiYWxpZ24iLAo+ICAjZGVmaW5l CUlfTE9HCQkxCj4gLQkibG9nIiwKPiArCQkibG9nIiwKPiAgI2RlZmluZQlJX01BWFBDVAkyCj4g LQkibWF4cGN0IiwKPiArCQkibWF4cGN0IiwKPiAgI2RlZmluZQlJX1BFUkJMT0NLCTMKPiAtCSJw ZXJibG9jayIsCj4gKwkJInBlcmJsb2NrIiwKPiAgI2RlZmluZQlJX1NJWkUJCTQKPiAtCSJzaXpl IiwKPiArCQkic2l6ZSIsCj4gICNkZWZpbmUJSV9BVFRSCQk1Cj4gLQkiYXR0ciIsCj4gKwkJImF0 dHIiLAo+ICAjZGVmaW5lCUlfUFJPSklEMzJCSVQJNgo+ICAJInByb2ppZDMyYml0IiwKPiAgI2Rl ZmluZSBJX1NQSU5PREVTCTcKPiAgCSJzcGFyc2UiLAo+ICAJTlVMTAoKTml0Li4uIHRoZSBsYXN0 IGZldyBzdHJpbmdzIGluIHRoZSBhYm92ZSBhcmVuJ3QgYWxpZ25lZCBwcm9wZXJseS4gTG9va3MK bGlrZSB0aGV5IHdlcmVuJ3QgdG91Y2hlZCwgc28gcGVyaGFwcyBqdXN0IGFuIGFydGlmYWN0IG9m IGZvcndhcmQKcG9ydGluZyB0aGUgc2VyaWVzLgoKPiArCX0sCj4gKwkuc3Vib3B0X3BhcmFtcyA9 IHsKPiArCQl7IC5pbmRleCA9IElfQUxJR04sCj4gKwkJfSwKPiArCQl7IC5pbmRleCA9IElfTE9H LAo+ICsJCSAgLm1pbnZhbCA9IFhGU19ESU5PREVfTUlOX0xPRywKPiArCQkgIC5tYXh2YWwgPSBY RlNfRElOT0RFX01BWF9MT0csCj4gKwkJfSwKPiArCQl7IC5pbmRleCA9IElfTUFYUENULAo+ICsJ CX0sCj4gKwkJeyAuaW5kZXggPSBJX1BFUkJMT0NLLAo+ICsJCX0sCj4gKwkJeyAuaW5kZXggPSBJ X1NJWkUsCj4gKwkJfSwKPiArCQl7IC5pbmRleCA9IElfQVRUUiwKPiArCQl9LAo+ICsJCXsgLmlu ZGV4ID0gSV9QUk9KSUQzMkJJVCwKPiArCQl9LAoKTWlzc2luZyBJX1NQSU5PREVTIGhlcmUuCgo+ ICsJfSwKPiAgfTsKPiAgCi4uLgo+ICsKPiAgc3RhdGljIGludAo+ICBnZXRudW1fY2hlY2tlZCgK PiAgCWNvbnN0IGNoYXIJKnN0ciwKPiAtCWxvbmcgbG9uZwltaW5fdmFsLAo+IC0JbG9uZyBsb25n CW1heF92YWwsCj4gLQljb25zdCBjaGFyCSppbGxlZ2FsX3N0ciwKPiAtCWNoYXIJCXJlcXZhbF9j aGFyLAo+IC0JY2hhcgkJKnJlcXZhbF9vcHRzW10sCj4gLQlpbnQJCXJlcXZhbF9vcHRpbmQpCj4g Kwljb25zdCBzdHJ1Y3Qgb3B0X3BhcmFtcwkqb3B0cywKPiArCWludAkJaW5kZXgpCj4gIHsKPiAg CWxvbmcgbG9uZwljOwo+ICAKPiAgCWlmICghc3RyIHx8ICpzdHIgPT0gJ1wwJykKPiAtCQlyZXF2 YWwocmVxdmFsX2NoYXIsIHJlcXZhbF9vcHRzLCByZXF2YWxfb3B0aW5kKTsKPiArCQlyZXF2YWwo b3B0cy0+bmFtZSwgKGNoYXIgKiopb3B0cy0+c3Vib3B0cywgaW5kZXgpOwo+ICAKPiAgCWMgPSBn ZXRudW0oc3RyLCAwLCAwLCBmYWxzZSk7Cj4gLQlpZiAoYyA8IG1pbl92YWwgfHwgYyA+IG1heF92 YWwpCj4gLQkJaWxsZWdhbChzdHIsIGlsbGVnYWxfc3RyKTsKPiArCWlmIChjIDwgb3B0cy0+c3Vi b3B0X3BhcmFtc1tpbmRleF0ubWludmFsIHx8Cj4gKwkgICAgYyA+IG9wdHMtPnN1Ym9wdF9wYXJh bXNbaW5kZXhdLm1heHZhbCkKPiArCQlpbGxlZ2FsX29wdGlvbihzdHIsIG9wdHMsIGluZGV4KTsK ClNvbWUga2luZCBvZiBlcnJvciwgYXNzZXJ0IG9yIHVwZGF0ZWQgbG9naWMgdG8gZW5zdXJlIG1p bnZhbCBhbmQgbWF4dmFsCmFyZSBzcGVjaWZpZWQgd291bGQgYmUgbmljZSBoZXJlIHNvIGZhaWx1 cmVzIHRvIHVzZSB0aGUgY29ycmVjdAp2YWxpZGF0aW9uIGZ1bmN0aW9uIChvciB0byBzcGVjaWZ5 IHRoZSB2YWx1ZXMpIGFyZSBtb3JlIG9idmlvdXMuCgo+ICAJcmV0dXJuIGM7Cj4gIH0KPiAgCi4u Lgo+IEBAIC0xNjYyLDkgKzE4NDIsMTEgQEAgbWFpbigKPiAgCQljYXNlICdtJzoKPiAgCQkJcCA9 IG9wdGFyZzsKPiAgCQkJd2hpbGUgKCpwICE9ICdcMCcpIHsKPiArCQkJCWNoYXIJKipzdWJvcHRz ID0gKGNoYXIgKiopbW9wdHMuc3Vib3B0czsKPiAgCQkJCWNoYXIJKnZhbHVlOwo+ICAKPiAtCQkJ CXN3aXRjaCAoZ2V0c3Vib3B0KCZwLCAoY29uc3RwcCltb3B0cywgJnZhbHVlKSkgewo+ICsJCQkJ c3dpdGNoIChnZXRzdWJvcHQoJnAsIChjb25zdHBwKXN1Ym9wdHMsCj4gKwkJCQkJCSAgJnZhbHVl KSkgewo+ICAJCQkJY2FzZSBNX0NSQzoKPiAgCQkJCQlzYl9mZWF0LmNyY3NfZW5hYmxlZCA9IGdl dGJvb2woCj4gIAkJCQkJCQl2YWx1ZSwgIm0gY3JjIiwgZmFsc2UpOwo+IEBAIC0xNjc4LDcgKzE4 NjAsNyBAQCBfKCJjYW5ub3Qgc3BlY2lmeSBib3RoIC1tIGNyYz0xIGFuZCAtbiBmdHlwZVxuIikp Owo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBNX0ZJTk9CVDoKPiAgCQkJCQlpZiAoIXZhbHVl IHx8ICp2YWx1ZSA9PSAnXDAnKQo+IC0JCQkJCQlyZXF2YWwoJ20nLCBtb3B0cywgTV9DUkMpOwo+ ICsJCQkJCQlyZXF2YWwoJ20nLCAoY2hhcioqKW1vcHRzLnN1Ym9wdHMsIE1fQ1JDKTsKCkNhbiBw cm9iYWJseSB1c2Ugc3Vib3B0cyBoZXJlLi4/CgpCcmlhbgoKPiAgCQkJCQljID0gYXRvaSh2YWx1 ZSk7Cj4gIAkJCQkJaWYgKGMgPCAwIHx8IGMgPiAxKQo+ICAJCQkJCQlpbGxlZ2FsKHZhbHVlLCAi bSBmaW5vYnQiKTsKPiBAQCAtMTY5MiwzMCArMTg3NCwyOSBAQCBfKCJjYW5ub3Qgc3BlY2lmeSBi b3RoIC1tIGNyYz0xIGFuZCAtbiBmdHlwZVxuIikpOwo+ICAJCWNhc2UgJ24nOgo+ICAJCQlwID0g b3B0YXJnOwo+ICAJCQl3aGlsZSAoKnAgIT0gJ1wwJykgewo+ICsJCQkJY2hhcgkqKnN1Ym9wdHMg PSAoY2hhciAqKilub3B0cy5zdWJvcHRzOwo+ICAJCQkJY2hhcgkqdmFsdWU7Cj4gIAo+IC0JCQkJ c3dpdGNoIChnZXRzdWJvcHQoJnAsIChjb25zdHBwKW5vcHRzLCAmdmFsdWUpKSB7Cj4gKwkJCQlz d2l0Y2ggKGdldHN1Ym9wdCgmcCwgKGNvbnN0cHApc3Vib3B0cywKPiArCQkJCQkJICAmdmFsdWUp KSB7Cj4gIAkJCQljYXNlIE5fTE9HOgo+ICAJCQkJCWlmIChubGZsYWcpCj4gLQkJCQkJCXJlc3Bl YygnbicsIG5vcHRzLCBOX0xPRyk7Cj4gKwkJCQkJCXJlc3BlYygnbicsIHN1Ym9wdHMsIE5fTE9H KTsKPiAgCQkJCQlpZiAobnNmbGFnKQo+IC0JCQkJCQljb25mbGljdCgnbicsIG5vcHRzLCBOX1NJ WkUsCj4gKwkJCQkJCWNvbmZsaWN0KCduJywgc3Vib3B0cywgTl9TSVpFLAo+ICAJCQkJCQkJIE5f TE9HKTsKPiAgCQkJCQlkaXJibG9ja2xvZyA9IGdldG51bV9jaGVja2VkKHZhbHVlLAo+IC0JCQkJ CQkJWEZTX01JTl9SRUNfRElSU0laRSwKPiAtCQkJCQkJCVhGU19NQVhfQkxPQ0tTSVpFX0xPRywK PiAtCQkJCQkJCSJuIGxvZyIsICduJywgbm9wdHMsCj4gLQkJCQkJCQlOX0xPRyk7Cj4gKwkJCQkJ CQkJJm5vcHRzLCBOX0xPRyk7Cj4gIAkJCQkJZGlyYmxvY2tzaXplID0gMSA8PCBkaXJibG9ja2xv ZzsKPiAgCQkJCQlubGZsYWcgPSAxOwo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBOX1NJWkU6 Cj4gIAkJCQkJaWYgKCF2YWx1ZSB8fCAqdmFsdWUgPT0gJ1wwJykKPiAtCQkJCQkJcmVxdmFsKCdu Jywgbm9wdHMsIE5fU0laRSk7Cj4gKwkJCQkJCXJlcXZhbCgnbicsIHN1Ym9wdHMsIE5fU0laRSk7 Cj4gIAkJCQkJaWYgKG5zZmxhZykKPiAtCQkJCQkJcmVzcGVjKCduJywgbm9wdHMsIE5fU0laRSk7 Cj4gKwkJCQkJCXJlc3BlYygnbicsIHN1Ym9wdHMsIE5fU0laRSk7Cj4gIAkJCQkJaWYgKG5sZmxh ZykKPiAtCQkJCQkJY29uZmxpY3QoJ24nLCBub3B0cywgTl9MT0csCj4gKwkJCQkJCWNvbmZsaWN0 KCduJywgc3Vib3B0cywgTl9MT0csCj4gIAkJCQkJCQkgTl9TSVpFKTsKPiAgCQkJCQlkaXJibG9j a3NpemUgPSBnZXRudW0odmFsdWUsIGJsb2Nrc2l6ZSwKPiAgCQkJCQkJCSAgICAgIHNlY3RvcnNp emUsIHRydWUpOwo+IEBAIC0xNzI4LDkgKzE5MDksOSBAQCBfKCJjYW5ub3Qgc3BlY2lmeSBib3Ro IC1tIGNyYz0xIGFuZCAtbiBmdHlwZVxuIikpOwo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBO X1ZFUlNJT046Cj4gIAkJCQkJaWYgKCF2YWx1ZSB8fCAqdmFsdWUgPT0gJ1wwJykKPiAtCQkJCQkJ cmVxdmFsKCduJywgbm9wdHMsIE5fVkVSU0lPTik7Cj4gKwkJCQkJCXJlcXZhbCgnbicsIHN1Ym9w dHMsIE5fVkVSU0lPTik7Cj4gIAkJCQkJaWYgKG52ZmxhZykKPiAtCQkJCQkJcmVzcGVjKCduJywg bm9wdHMsIE5fVkVSU0lPTik7Cj4gKwkJCQkJCXJlc3BlYygnbicsIHN1Ym9wdHMsIE5fVkVSU0lP Tik7Cj4gIAkJCQkJaWYgKCFzdHJjYXNlY21wKHZhbHVlLCAiY2kiKSkgewo+ICAJCQkJCQkvKiBB U0NJSSBDSSBtb2RlICovCj4gIAkJCQkJCXNiX2ZlYXQubmNpID0gdHJ1ZTsKPiBAQCAtMTc0NSw3 ICsxOTI2LDcgQEAgXygiY2Fubm90IHNwZWNpZnkgYm90aCAtbSBjcmM9MSBhbmQgLW4gZnR5cGVc biIpKTsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWNhc2UgTl9GVFlQRToKPiAgCQkJCQlpZiAobmZ0 eXBlKQo+IC0JCQkJCQlyZXNwZWMoJ24nLCBub3B0cywgTl9GVFlQRSk7Cj4gKwkJCQkJCXJlc3Bl YygnbicsIHN1Ym9wdHMsIE5fRlRZUEUpOwo+ICAJCQkJCWlmIChzYl9mZWF0LmNyY3NfZW5hYmxl ZCkgewo+ICAJCQkJCQlmcHJpbnRmKHN0ZGVyciwKPiAgXygiY2Fubm90IHNwZWNpZnkgYm90aCAt bSBjcmM9MSBhbmQgLW4gZnR5cGVcbiIpKTsKPiBAQCAtMTc3NywxNCArMTk1OCwxNiBAQCBfKCJj YW5ub3Qgc3BlY2lmeSBib3RoIC1tIGNyYz0xIGFuZCAtbiBmdHlwZVxuIikpOwo+ICAJCWNhc2Ug J3InOgo+ICAJCQlwID0gb3B0YXJnOwo+ICAJCQl3aGlsZSAoKnAgIT0gJ1wwJykgewo+ICsJCQkJ Y2hhcgkqKnN1Ym9wdHMgPSAoY2hhciAqKilyb3B0cy5zdWJvcHRzOwo+ICAJCQkJY2hhcgkqdmFs dWU7Cj4gIAo+IC0JCQkJc3dpdGNoIChnZXRzdWJvcHQoJnAsIChjb25zdHBwKXJvcHRzLCAmdmFs dWUpKSB7Cj4gKwkJCQlzd2l0Y2ggKGdldHN1Ym9wdCgmcCwgKGNvbnN0cHApc3Vib3B0cywKPiAr CQkJCQkJICAmdmFsdWUpKSB7Cj4gIAkJCQljYXNlIFJfRVhUU0laRToKPiAgCQkJCQlpZiAoIXZh bHVlIHx8ICp2YWx1ZSA9PSAnXDAnKQo+IC0JCQkJCQlyZXF2YWwoJ3InLCByb3B0cywgUl9FWFRT SVpFKTsKPiArCQkJCQkJcmVxdmFsKCdyJywgc3Vib3B0cywgUl9FWFRTSVpFKTsKPiAgCQkJCQlp ZiAocnRleHRzaXplKQo+IC0JCQkJCQlyZXNwZWMoJ3InLCByb3B0cywgUl9FWFRTSVpFKTsKPiAr CQkJCQkJcmVzcGVjKCdyJywgc3Vib3B0cywgUl9FWFRTSVpFKTsKPiAgCQkJCQlydGV4dHNpemUg PSB2YWx1ZTsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWNhc2UgUl9GSUxFOgo+IEBAIC0xNzk2LDE2 ICsxOTc5LDE2IEBAIF8oImNhbm5vdCBzcGVjaWZ5IGJvdGggLW0gY3JjPTEgYW5kIC1uIGZ0eXBl XG4iKSk7Cj4gIAkJCQljYXNlIFJfTkFNRToKPiAgCQkJCWNhc2UgUl9ERVY6Cj4gIAkJCQkJaWYg KCF2YWx1ZSB8fCAqdmFsdWUgPT0gJ1wwJykKPiAtCQkJCQkJcmVxdmFsKCdyJywgcm9wdHMsIFJf TkFNRSk7Cj4gKwkJCQkJCXJlcXZhbCgncicsIHN1Ym9wdHMsIFJfTkFNRSk7Cj4gIAkJCQkJaWYg KHhpLnJ0bmFtZSkKPiAtCQkJCQkJcmVzcGVjKCdyJywgcm9wdHMsIFJfTkFNRSk7Cj4gKwkJCQkJ CXJlc3BlYygncicsIHN1Ym9wdHMsIFJfTkFNRSk7Cj4gIAkJCQkJeGkucnRuYW1lID0gdmFsdWU7 Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJCQljYXNlIFJfU0laRToKPiAgCQkJCQlpZiAoIXZhbHVlIHx8 ICp2YWx1ZSA9PSAnXDAnKQo+IC0JCQkJCQlyZXF2YWwoJ3InLCByb3B0cywgUl9TSVpFKTsKPiAr CQkJCQkJcmVxdmFsKCdyJywgc3Vib3B0cywgUl9TSVpFKTsKPiAgCQkJCQlpZiAocnRzaXplKQo+ IC0JCQkJCQlyZXNwZWMoJ3InLCByb3B0cywgUl9TSVpFKTsKPiArCQkJCQkJcmVzcGVjKCdyJywg c3Vib3B0cywgUl9TSVpFKTsKPiAgCQkJCQlydHNpemUgPSB2YWx1ZTsKPiAgCQkJCQlicmVhazsK PiAgCQkJCWNhc2UgUl9OT0FMSUdOOgo+IEBAIC0xODE5LDIxICsyMDAyLDIwIEBAIF8oImNhbm5v dCBzcGVjaWZ5IGJvdGggLW0gY3JjPTEgYW5kIC1uIGZ0eXBlXG4iKSk7Cj4gIAkJY2FzZSAncyc6 Cj4gIAkJCXAgPSBvcHRhcmc7Cj4gIAkJCXdoaWxlICgqcCAhPSAnXDAnKSB7Cj4gKwkJCQljaGFy CSoqc3Vib3B0cyA9IChjaGFyICoqKXNvcHRzLnN1Ym9wdHM7Cj4gIAkJCQljaGFyCSp2YWx1ZTsK PiAgCj4gLQkJCQlzd2l0Y2ggKGdldHN1Ym9wdCgmcCwgKGNvbnN0cHApc29wdHMsICZ2YWx1ZSkp IHsKPiArCQkJCXN3aXRjaCAoZ2V0c3Vib3B0KCZwLCAoY29uc3RwcClzdWJvcHRzLAo+ICsJCQkJ CQkgICZ2YWx1ZSkpIHsKPiAgCQkJCWNhc2UgU19MT0c6Cj4gIAkJCQljYXNlIFNfU0VDVExPRzoK PiAgCQkJCQlpZiAoc2xmbGFnIHx8IGxzbGZsYWcpCj4gLQkJCQkJCXJlc3BlYygncycsIHNvcHRz LCBTX1NFQ1RMT0cpOwo+ICsJCQkJCQlyZXNwZWMoJ3MnLCBzdWJvcHRzLCBTX1NFQ1RMT0cpOwo+ ICAJCQkJCWlmIChzc2ZsYWcgfHwgbHNzZmxhZykKPiAtCQkJCQkJY29uZmxpY3QoJ3MnLCBzb3B0 cywgU19TRUNUU0laRSwKPiAtCQkJCQkJCSBTX1NFQ1RMT0cpOwo+IC0JCQkJCXNlY3RvcmxvZyA9 IGdldG51bV9jaGVja2VkKHZhbHVlLAo+IC0JCQkJCQkJWEZTX01JTl9TRUNUT1JTSVpFX0xPRywK PiAtCQkJCQkJCVhGU19NQVhfU0VDVE9SU0laRV9MT0csCj4gLQkJCQkJCQkicyBzZWN0bG9nIiwg J3MnLCBzb3B0cywKPiAtCQkJCQkJCVNfU0VDVExPRyk7Cj4gKwkJCQkJCWNvbmZsaWN0KCdzJywg c3Vib3B0cywKPiArCQkJCQkJCSBTX1NFQ1RTSVpFLCBTX1NFQ1RMT0cpOwo+ICsJCQkJCXNlY3Rv cmxvZyA9IGdldG51bV9jaGVja2VkKHZhbHVlLCAmc29wdHMsCj4gKwkJCQkJCQkJICAgU19TRUNU TE9HKTsKPiAgCQkJCQlsc2VjdG9ybG9nID0gc2VjdG9ybG9nOwo+ICAJCQkJCXNlY3RvcnNpemUg PSAxIDw8IHNlY3RvcmxvZzsKPiAgCQkJCQlsc2VjdG9yc2l6ZSA9IHNlY3RvcnNpemU7Cj4gQEAg LTE4NDIsMTEgKzIwMjQsMTEgQEAgXygiY2Fubm90IHNwZWNpZnkgYm90aCAtbSBjcmM9MSBhbmQg LW4gZnR5cGVcbiIpKTsKPiAgCQkJCWNhc2UgU19TSVpFOgo+ICAJCQkJY2FzZSBTX1NFQ1RTSVpF Ogo+ICAJCQkJCWlmICghdmFsdWUgfHwgKnZhbHVlID09ICdcMCcpCj4gLQkJCQkJCXJlcXZhbCgn cycsIHNvcHRzLCBTX1NFQ1RTSVpFKTsKPiArCQkJCQkJcmVxdmFsKCdzJywgc3Vib3B0cywgU19T RUNUU0laRSk7Cj4gIAkJCQkJaWYgKHNzZmxhZyB8fCBsc3NmbGFnKQo+IC0JCQkJCQlyZXNwZWMo J3MnLCBzb3B0cywgU19TRUNUU0laRSk7Cj4gKwkJCQkJCXJlc3BlYygncycsIHN1Ym9wdHMsIFNf U0VDVFNJWkUpOwo+ICAJCQkJCWlmIChzbGZsYWcgfHwgbHNsZmxhZykKPiAtCQkJCQkJY29uZmxp Y3QoJ3MnLCBzb3B0cywgU19TRUNUTE9HLAo+ICsJCQkJCQljb25mbGljdCgncycsIHN1Ym9wdHMs IFNfU0VDVExPRywKPiAgCQkJCQkJCSBTX1NFQ1RTSVpFKTsKPiAgCQkJCQlzZWN0b3JzaXplID0g Z2V0bnVtKHZhbHVlLCBibG9ja3NpemUsCj4gIAkJCQkJCQkgICAgc2VjdG9yc2l6ZSwgdHJ1ZSk7 Cj4gLS0gCj4gMi4xLjAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+IHhmcyBtYWlsaW5nIGxpc3QKPiB4ZnNAb3NzLnNnaS5jb20KPiBodHRwOi8v b3NzLnNnaS5jb20vbWFpbG1hbi9saXN0aW5mby94ZnMKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCnhmcyBtYWlsaW5nIGxpc3QKeGZzQG9zcy5zZ2kuY29t Cmh0dHA6Ly9vc3Muc2dpLmNvbS9tYWlsbWFuL2xpc3RpbmZvL3hmcwo=