From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH i-g-t] scripts/trace.pl: Auto-detect tracepoint field order Date: Mon, 18 Dec 2017 15:13:58 -0800 Message-ID: References: <20171218120215.28139-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id F22C489E57 for ; Mon, 18 Dec 2017 23:14:01 +0000 (UTC) In-Reply-To: <20171218120215.28139-1-tvrtko.ursulin@linux.intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMTIvMTgvMjAxNyA0OjAyIEFNLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPiBGcm9tOiBUdnJ0 a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+Cj4gSW5zdGVhZCBvZiBoYXJk LWNvZGluZyB0aGUgb3JkZXIgb2Yga2V5LXZhbHVlIHBhaXJzIGludG8gcmVndWxhcgo+IGV4cHJl c3Npb25zLCBhdXRvLWRldGVjdCB0aGVtIGFzIHdlIGdvLgo+Cj4gQXQgdGhlIHNhbWUgdGltZSBy ZS1mYWN0b3IgdGhlIGNvZGUgc28gaXQgaXMgc21hbGxlciBhbmQgZXZlbgo+IHNsaWdodGx5IGZh c3RlciAoMTAtMTUlIGJ5IGEgcXVpY2sgbWVhc3VyZW1lbnQpLgo+Cj4gU2lnbmVkLW9mZi1ieTog VHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBDYzogTGlvbmVsIExh bmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgo+IENjOiBKb2huIEhhcnJp c29uIDxKb2huLkMuSGFycmlzb25AaW50ZWwuY29tPgo+IC0tLQo+ICAgc2NyaXB0cy90cmFjZS5w bCB8IDIyMyArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCj4gICAxIGZpbGUgY2hhbmdlZCwgNzEgaW5zZXJ0aW9ucygrKSwgMTUyIGRlbGV0aW9u cygtKQo+Cj4gZGlmZiAtLWdpdCBhL3NjcmlwdHMvdHJhY2UucGwgYi9zY3JpcHRzL3RyYWNlLnBs Cj4gaW5kZXggYWVkOWIyMGQ4NDA3Li45YjNmYjY0ODZmZWMgMTAwNzU1Cj4gLS0tIGEvc2NyaXB0 cy90cmFjZS5wbAo+ICsrKyBiL3NjcmlwdHMvdHJhY2UucGwKPiBAQCAtMzAyLDc0ICszMDIsNiBA QCBkaWUgaWYgc2NhbGFyKEBhcmdzKTsKPiAgIAo+ICAgQEFSR1YgPSBAYXJnczsKPiAgIAo+IC1z dWIgcGFyc2VfcmVxCj4gLXsKPiAtCW15ICgkbGluZSwgJHRwKSA9IEBfOwo+IC0Jc3RhdGUgJWNh Y2hlOwo+IC0KPiAtCSRjYWNoZXskdHB9ID0gcXIvKFxkKylcLihcZCspOi4qJHRwLipyaW5nPShc ZCspLCBjdHg9KFxkKyksIHNlcW5vPShcZCspLCBnbG9iYWwoPzpfc2Vxbm8pPz0oXGQrKS8gdW5s ZXNzIGV4aXN0cyAkY2FjaGV7JHRwfTsKPiAtCj4gLQlpZiAoJGxpbmUgPX4gJGNhY2hleyR0cH0p IHsKPiAtCQlyZXR1cm4gKCQxLCAkMiwgJDMsICQ0LCAkNSwgJDYpOwo+IC0JfSBlbHNlIHsKPiAt CQlyZXR1cm4gdW5kZWY7Cj4gLQl9Cj4gLX0KPiAtCj4gLXN1YiBwYXJzZV9yZXFfaHcKPiAtewo+ IC0JbXkgKCRsaW5lLCAkdHApID0gQF87Cj4gLQlzdGF0ZSAlY2FjaGU7Cj4gLQo+IC0JJGNhY2hl eyR0cH0gPSBxci8oXGQrKVwuKFxkKyk6LiokdHAuKnJpbmc9KFxkKyksIGN0eD0oXGQrKSwgc2Vx bm89KFxkKyksIGdsb2JhbCg/Ol9zZXFubyk/PShcZCspLCBwb3J0PShcZCspLyB1bmxlc3MgZXhp c3RzICRjYWNoZXskdHB9Owo+IC0KPiAtCWlmICgkbGluZSA9fiAkY2FjaGV7JHRwfSkgewo+IC0J CXJldHVybiAoJDEsICQyLCAkMywgJDQsICQ1LCAkNiwgJDcpOwo+IC0JfSBlbHNlIHsKPiAtCQly ZXR1cm4gdW5kZWY7Cj4gLQl9Cj4gLX0KPiAtCj4gLXN1YiBwYXJzZV9yZXFfd2FpdF9iZWdpbgo+ IC17Cj4gLQlteSAoJGxpbmUsICR0cCkgPSBAXzsKPiAtCj4gLQlpZiAoJGxpbmUgPX4gLyhcZCsp XC4oXGQrKTouKmk5MTVfZ2VtX3JlcXVlc3Rfd2FpdF9iZWdpbi4qcmluZz0oXGQrKSwgY3R4PShc ZCspLCBzZXFubz0oXGQrKS8pIHsKPiAtCQlyZXR1cm4gKCQxLCAkMiwgJDMsICQ0LCAkNSk7Cj4g LQl9IGVsc2Ugewo+IC0JCXJldHVybiB1bmRlZjsKPiAtCX0KPiAtfQo+IC0KPiAtc3ViIHBhcnNl X25vdGlmeQo+IC17Cj4gLQlteSAoJGxpbmUpID0gQF87Cj4gLQo+IC0JaWYgKCRsaW5lID1+IC8o XGQrKVwuKFxkKyk6LippbnRlbF9lbmdpbmVfbm90aWZ5LipyaW5nPShcZCspLCBzZXFubz0oXGQr KS8pIHsKPiAtCQlyZXR1cm4gKCQxLCAkMiwgJDMsICQ0KTsKPiAtCX0gZWxzZSB7Cj4gLQkJcmV0 dXJuIHVuZGVmOwo+IC0JfQo+IC19Cj4gLQo+IC1zdWIgcGFyc2VfZnJlcQo+IC17Cj4gLQlteSAo JGxpbmUpID0gQF87Cj4gLQo+IC0JaWYgKCRsaW5lID1+IC8oXGQrKVwuKFxkKyk6LippbnRlbF9n cHVfZnJlcV9jaGFuZ2UuKm5ld19mcmVxPShcZCspLykgewo+IC0JCXJldHVybiAoJDEsICQyLCAk Myk7Cj4gLQl9IGVsc2Ugewo+IC0JCXJldHVybiB1bmRlZjsKPiAtCX0KPiAtfQo+IC0KPiAtc3Vi IHVzCj4gLXsKPiAtCW15ICgkcywgJHVzKSA9IEBfOwo+IC0KPiAtCXJldHVybiAkcyAqIDEwMDAw MDAgKyAkdXM7Cj4gLX0KPiAtCj4gICBzdWIgZGJfa2V5Cj4gICB7Cj4gICAJbXkgKCRyaW5nLCAk Y3R4LCAkc2Vxbm8pID0gQF87Cj4gQEAgLTQyNSw4NiArMzU3LDg3IEBAIG15ICRwcmV2X2ZyZXFf dHMgPSAwOwo+ICAgbXkgJG9sZGtlcm5lbHdhID0gMDsKPiAgIG15ICgkbm9fcXVldWUsICRub19p bik7Cj4gICB3aGlsZSAoPD4pIHsKPiAtCW15ICgkcywgJHVzLCAkcmluZywgJGN0eCwgJHNlcW5v LCAkZ2xvYmFsX3NlcW5vLCAkcG9ydCk7Cj4gLQlteSAkZnJlcTsKPiArCW15IEBmaWVsZHM7Cj4g KwlteSBAdG1wOwo+ICsJbXkgJHRwX25hbWU7Cj4gKwlteSAkdGltZTsKPiArCW15ICV0cDsKPiAg IAlteSAka2V5Owo+ICAgCj4gICAJY2hvbXA7Cj4gKwlAZmllbGRzID0gc3BsaXQgJyAnOwo+ICAg Cj4gLQkoJHMsICR1cywgJHJpbmcsICRjdHgsICRzZXFubykgPSBwYXJzZV9yZXFfd2FpdF9iZWdp bigkXyk7Cj4gLQlpZiAoZGVmaW5lZCAkcykgewo+IC0JCW15ICVydzsKPiArCSR0cF9uYW1lID0g JGZpZWxkc1s0XTsKPiArCUB0bXAgPSBzcGxpdCAnOicsICR0cF9uYW1lLCAyOwo+ICsJbmV4dCB1 bmxlc3MgJHRtcFswXSBlcSAnaTkxNSc7Cj4gKwkkdHBfbmFtZSA9ICR0bXBbMV07Cj4gKwljaG9w ICR0cF9uYW1lOwo+ICAgCj4gLQkJbmV4dCBpZiBleGlzdHMgJGlnbm9yZV9yaW5neyRyaW5nfTsK PiArCWNob3AgJGZpZWxkc1szXTsKPiArCSR0aW1lID0gJGZpZWxkc1szXSAqIDEwMDAwMDAuMDsK PiArCXNwbGljZSBAZmllbGRzLCAwLCA1Owo+ICAgCj4gLQkJJGN0eCA9IHNhbml0aXplX2N0eCgk Y3R4LCAkcmluZyk7Cj4gLQkJJGtleSA9IGRiX2tleSgkcmluZywgJGN0eCwgJHNlcW5vKTsKPiAr CWZvcmVhY2ggbXkgJGYgKEBmaWVsZHMpIHsKPiArCQlteSBAa3YgPSBzcGxpdCAnPXwsJywgJGY7 Cj4gICAKPiAtCQluZXh0IGlmIGV4aXN0cyAkcmVxd2FpdHska2V5fTsKPiArCQkka3ZbMF0gPSAn Z2xvYmFsJyBpZiAka3ZbMF0gZXEgJ2dsb2JhbF9zZXFubyc7Cj4gICAKPiAtCQkkcnd7J2tleSd9 ID0gJGtleTsKPiAtCQkkcnd7J3JpbmcnfSA9ICRyaW5nOwo+IC0JCSRyd3snc2Vxbm8nfSA9ICRz ZXFubzsKPiAtCQkkcnd7J2N0eCd9ID0gJGN0eDsKPiAtCQkkcnd7J3N0YXJ0J30gPSB1cygkcywg JHVzKTsKPiAtCQkkcmVxd2FpdHska2V5fSA9IFwlcnc7Cj4gLQkJbmV4dDsKPiArCQkkdHB7JGt2 WzBdfSA9ICRrdlsxXTsKPiAgIAl9Cj4gICAKPiAtCSgkcywgJHVzLCAkcmluZywgJGN0eCwgJHNl cW5vLCAkZ2xvYmFsX3NlcW5vKSA9IHBhcnNlX3JlcSgkXywgJ2k5MTU6aTkxNV9nZW1fcmVxdWVz dF93YWl0X2VuZCcpOwo+IC0JaWYgKGRlZmluZWQgJHMpIHsKPiAtCQluZXh0IGlmIGV4aXN0cyAk aWdub3JlX3Jpbmd7JHJpbmd9Owo+ICsJcmV0dXJuIHVuZGVmIGlmIGV4aXN0cyAkdHB7J3Jpbmcn fSBhbmQgZXhpc3RzICRpZ25vcmVfcmluZ3skdHB7J3JpbmcnfX07ClNob3VsZG4ndCB0aGlzIGJl ICduZXh0IGlmIGV4aXN0cy4uLic/IFRoaXMgaXMgaW4gYSB0b3AgbGV2ZWwgd2hpbGUgbG9vcCAK bm90IGZ1bmN0aW9uIGNhbGwuIE9yIGFsdGVybmF0aXZlbHksIHNob3VsZCB0aGlzIGJsb2NrIG9m IGNvZGUgYmUgCmFic3RyYWN0ZWQgaW50byBhIGZ1bmN0aW9uIGNhbGw/CgoKPiArCj4gKwlpZiAo JHRwX25hbWUgZXEgJ2k5MTVfZ2VtX3JlcXVlc3Rfd2FpdF9iZWdpbicpIHsKPiArCQlteSAlcnc7 Cj4gICAKPiAtCQkkY3R4ID0gc2FuaXRpemVfY3R4KCRjdHgsICRyaW5nKTsKPiAtCQkka2V5ID0g ZGJfa2V5KCRyaW5nLCAkY3R4LCAkc2Vxbm8pOwo+ICsJCSR0cHsnY3R4J30gPSBzYW5pdGl6ZV9j dHgoJHRweydjdHgnfSwgJHRweydyaW5nJ30pOwo+ICsJCSRrZXkgPSBkYl9rZXkoJHRweydyaW5n J30sICR0cHsnY3R4J30sICR0cHsnc2Vxbm8nfSk7Cj4gICAKPiAtCQluZXh0IHVubGVzcyBleGlz dHMgJHJlcXdhaXR7JGtleX07Cj4gKwkJbmV4dCBpZiBleGlzdHMgJHJlcXdhaXR7JGtleX07Cj4g ICAKPiAtCQkkcmVxd2FpdHska2V5fS0+eydlbmQnfSA9IHVzKCRzLCAkdXMpOwo+ICsJCSRyd3sn a2V5J30gPSAka2V5Owo+ICsJCSRyd3sncmluZyd9ID0gJHRweydyaW5nJ307Cj4gKwkJJHJ3eydz ZXFubyd9ID0gJHRweydzZXFubyd9Owo+ICsJCSRyd3snY3R4J30gPSAkdHB7J2N0eCd9Owo+ICsJ CSRyd3snc3RhcnQnfSA9ICR0aW1lOwo+ICsJCSRyZXF3YWl0eyRrZXl9ID0gXCVydzsKPiAgIAkJ bmV4dDsKPiAtCX0KPiArCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1X2dlbV9yZXF1ZXN0X3dh aXRfZW5kJykgewo+ICsJCSR0cHsnY3R4J30gPSBzYW5pdGl6ZV9jdHgoJHRweydjdHgnfSwgJHRw eydyaW5nJ30pOwo+ICsJCSRrZXkgPSBkYl9rZXkoJHRweydyaW5nJ30sICR0cHsnY3R4J30sICR0 cHsnc2Vxbm8nfSk7Cj4gICAKPiAtCSgkcywgJHVzLCAkcmluZywgJGN0eCwgJHNlcW5vLCAkZ2xv YmFsX3NlcW5vKSA9IHBhcnNlX3JlcSgkXywgJ2k5MTU6aTkxNV9nZW1fcmVxdWVzdF9hZGQnKTsK PiAtCWlmIChkZWZpbmVkICRzKSB7Cj4gLQkJbXkgJG9yaWdfY3R4ID0gJGN0eDsKPiArCQluZXh0 IHVubGVzcyBleGlzdHMgJHJlcXdhaXR7JGtleX07Cj4gICAKPiAtCQluZXh0IGlmIGV4aXN0cyAk aWdub3JlX3Jpbmd7JHJpbmd9Owo+ICsJCSRyZXF3YWl0eyRrZXl9LT57J2VuZCd9ID0gJHRpbWU7 Cj4gKwkJbmV4dDsKPiArCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1X2dlbV9yZXF1ZXN0X2Fk ZCcpIHsKPiArCQlteSAkb3JpZ19jdHggPSAkdHB7J2N0eCd9Owo+ICAgCj4gLQkJJGN0eCA9IHNh bml0aXplX2N0eCgkY3R4LCAkcmluZyk7Cj4gLQkJJGtleSA9IGRiX2tleSgkcmluZywgJGN0eCwg JHNlcW5vKTsKPiArCQkkdHB7J2N0eCd9ID0gc2FuaXRpemVfY3R4KCR0cHsnY3R4J30sICR0cHsn cmluZyd9KTsKPiArCQkka2V5ID0gZGJfa2V5KCR0cHsncmluZyd9LCAkdHB7J2N0eCd9LCAkdHB7 J3NlcW5vJ30pOwo+ICAgCj4gICAJCWlmIChleGlzdHMgJHF1ZXVleyRrZXl9KSB7Cj4gICAJCQkk Y3R4ZGJ7JG9yaWdfY3R4fSsrOwo+IC0JCQkkY3R4ID0gc2FuaXRpemVfY3R4KCRvcmlnX2N0eCwg JHJpbmcpOwo+IC0JCQkka2V5ID0gZGJfa2V5KCRyaW5nLCAkY3R4LCAkc2Vxbm8pOwo+ICsJCQkk dHB7J2N0eCd9ID0gc2FuaXRpemVfY3R4KCR0cHsnY3R4J30sICR0cHsncmluZyd9KTsKPiArCQkJ JGtleSA9IGRiX2tleSgkdHB7J3JpbmcnfSwgJHRweydjdHgnfSwgJHRweydzZXFubyd9KTsKPiAg IAkJfQo+ICAgCj4gLQkJJHF1ZXVleyRrZXl9ID0gdXMoJHMsICR1cyk7Cj4gKwkJJHF1ZXVleyRr ZXl9ID0gJHRpbWU7Cj4gICAJCW5leHQ7Cj4gLQl9Cj4gLQo+IC0JKCRzLCAkdXMsICRyaW5nLCAk Y3R4LCAkc2Vxbm8sICRnbG9iYWxfc2Vxbm8pID0gcGFyc2VfcmVxKCRfLCAnaTkxNTppOTE1X2dl bV9yZXF1ZXN0X3N1Ym1pdCcpOwo+IC0JaWYgKGRlZmluZWQgJHMpIHsKPiAtCQluZXh0IGlmIGV4 aXN0cyAkaWdub3JlX3Jpbmd7JHJpbmd9Owo+IC0KPiAtCQkkY3R4ID0gc2FuaXRpemVfY3R4KCRj dHgsICRyaW5nKTsKPiAtCQkka2V5ID0gZGJfa2V5KCRyaW5nLCAkY3R4LCAkc2Vxbm8pOwo+ICsJ fSBlbHNpZiAoJHRwX25hbWUgZXEgJ2k5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0Jykgewo+ICsJCSR0 cHsnY3R4J30gPSBzYW5pdGl6ZV9jdHgoJHRweydjdHgnfSwgJHRweydyaW5nJ30pOwo+ICsJCSRr ZXkgPSBkYl9rZXkoJHRweydyaW5nJ30sICR0cHsnY3R4J30sICR0cHsnc2Vxbm8nfSk7Cj4gICAK PiAgIAkJZGllIGlmIGV4aXN0cyAkc3VibWl0eyRrZXl9Owo+ICAgCQlkaWUgdW5sZXNzIGV4aXN0 cyAkcXVldWV7JGtleX07Cj4gICAKPiAtCQkkc3VibWl0eyRrZXl9ID0gdXMoJHMsICR1cyk7Cj4g KwkJJHN1Ym1pdHska2V5fSA9ICR0aW1lOwo+ICAgCQluZXh0Owo+IC0JfQo+IC0KPiAtCSgkcywg JHVzLCAkcmluZywgJGN0eCwgJHNlcW5vLCAkZ2xvYmFsX3NlcW5vLCAkcG9ydCkgPSBwYXJzZV9y ZXFfaHcoJF8sICdpOTE1Omk5MTVfZ2VtX3JlcXVlc3RfaW4nKTsKPiAtCWlmIChkZWZpbmVkICRz KSB7Cj4gKwl9IGVsc2lmICgkdHBfbmFtZSBlcSAnaTkxNV9nZW1fcmVxdWVzdF9pbicpIHsKPiAg IAkJbXkgJXJlcTsKPiAgIAo+IC0JCW5leHQgaWYgZXhpc3RzICRpZ25vcmVfcmluZ3skcmluZ307 Cj4gLQo+IC0JCSRjdHggPSBzYW5pdGl6ZV9jdHgoJGN0eCwgJHJpbmcpOwo+IC0JCSRrZXkgPSBk Yl9rZXkoJHJpbmcsICRjdHgsICRzZXFubyk7Cj4gKwkJJHRweydjdHgnfSA9IHNhbml0aXplX2N0 eCgkdHB7J2N0eCd9LCAkdHB7J3JpbmcnfSk7Cj4gKwkJJGtleSA9IGRiX2tleSgkdHB7J3Jpbmcn fSwgJHRweydjdHgnfSwgJHRweydzZXFubyd9KTsKPiAgIAo+ICAgCQlkaWUgaWYgZXhpc3RzICRk Ynska2V5fTsKPiAgIAkJaWYgKG5vdCBleGlzdHMgJHF1ZXVleyRrZXl9IGFuZCAkb2xka2VybmVs d2EpIHsKPiBAQCAtNTE0LDMwICs0NDcsMjUgQEAgd2hpbGUgKDw+KSB7Cj4gICAJCWRpZSB1bmxl c3MgZXhpc3RzICRxdWV1ZXska2V5fTsKPiAgIAkJZGllIHVubGVzcyBleGlzdHMgJHN1Ym1pdHsk a2V5fTsKPiAgIAo+IC0JCSRyZXF7J3N0YXJ0J30gPSB1cygkcywgJHVzKTsKPiAtCQkkcmVxeydy aW5nJ30gPSAkcmluZzsKPiAtCQkkcmVxeydzZXFubyd9ID0gJHNlcW5vOwo+IC0JCSRyZXF7J2N0 eCd9ID0gJGN0eDsKPiAtCQkkcmVxeyduYW1lJ30gPSAkY3R4IC4gJy8nIC4gJHNlcW5vOwo+IC0J CSRyZXF7J2dsb2JhbCd9ID0gJGdsb2JhbF9zZXFubzsKPiAtCQkkcmVxeydwb3J0J30gPSAkcG9y dDsKPiArCQkkcmVxeydzdGFydCd9ID0gJHRpbWU7Cj4gKwkJJHJlcXsncmluZyd9ID0gJHRweydy aW5nJ307Cj4gKwkJJHJlcXsnc2Vxbm8nfSA9ICR0cHsnc2Vxbm8nfTsKPiArCQkkcmVxeydjdHgn fSA9ICR0cHsnY3R4J307Cj4gKwkJJHJlcXsnbmFtZSd9ID0gJHRweydjdHgnfSAuICcvJyAuICR0 cHsnc2Vxbm8nfTsKPiArCQkkcmVxeydnbG9iYWwnfSA9ICR0cHsnZ2xvYmFsJ307Cj4gKwkJJHJl cXsncG9ydCd9ID0gJHRweydwb3J0J307Cj4gICAJCSRyZXF7J3F1ZXVlJ30gPSAkcXVldWV7JGtl eX07Cj4gICAJCSRyZXF7J3N1Ym1pdC1kZWxheSd9ID0gJHN1Ym1pdHska2V5fSAtICRxdWV1ZXsk a2V5fTsKPiAgIAkJJHJlcXsnZXhlY3V0ZS1kZWxheSd9ID0gJHJlcXsnc3RhcnQnfSAtICRzdWJt aXR7JGtleX07Cj4gLQkJJHJpbmdzeyRyaW5nfSA9ICRnaWQrKyB1bmxlc3MgZXhpc3RzICRyaW5n c3skcmluZ307Cj4gLQkJJHJpbmdtYXB7JHJpbmdzeyRyaW5nfX0gPSAkcmluZzsKPiArCQkkcmlu Z3N7JHRweydyaW5nJ319ID0gJGdpZCsrIHVubGVzcyBleGlzdHMgJHJpbmdzeyR0cHsncmluZyd9 fTsKPiArCQkkcmluZ21hcHskcmluZ3N7JHRweydyaW5nJ319fSA9ICR0cHsncmluZyd9Owo+ICAg CQkkZGJ7JGtleX0gPSBcJXJlcTsKPiAgIAkJbmV4dDsKPiAtCX0KPiAtCj4gLQkoJHMsICR1cywg JHJpbmcsICRjdHgsICRzZXFubywgJGdsb2JhbF9zZXFubywgJHBvcnQpID0gcGFyc2VfcmVxKCRf LCAnaTkxNTppOTE1X2dlbV9yZXF1ZXN0X291dCcpOwo+IC0JaWYgKGRlZmluZWQgJHMpIHsKPiAt CQlteSAkZ2tleSA9IGdsb2JhbF9rZXkoJHJpbmcsICRnbG9iYWxfc2Vxbm8pOwo+ICsJfSBlbHNp ZiAoJHRwX25hbWUgZXEgJ2k5MTVfZ2VtX3JlcXVlc3Rfb3V0Jykgewo+ICsJCW15ICRna2V5ID0g Z2xvYmFsX2tleSgkdHB7J3JpbmcnfSwgJHRweydnbG9iYWwnfSk7Cj4gICAKPiAtCQluZXh0IGlm IGV4aXN0cyAkaWdub3JlX3Jpbmd7JHJpbmd9Owo+IC0KPiAtCQkkY3R4ID0gc2FuaXRpemVfY3R4 KCRjdHgsICRyaW5nKTsKPiAtCQkka2V5ID0gZGJfa2V5KCRyaW5nLCAkY3R4LCAkc2Vxbm8pOwo+ ICsJCSR0cHsnY3R4J30gPSBzYW5pdGl6ZV9jdHgoJHRweydjdHgnfSwgJHRweydyaW5nJ30pOwo+ ICsJCSRrZXkgPSBkYl9rZXkoJHRweydyaW5nJ30sICR0cHsnY3R4J30sICR0cHsnc2Vxbm8nfSk7 Cj4gICAKPiAgIAkJaWYgKG5vdCBleGlzdHMgJGRieyRrZXl9IGFuZCAkb2xka2VybmVsd2EpIHsK PiAgIAkJCSRub19pbisrOwo+IEBAIC01NDcsNyArNDc1LDcgQEAgd2hpbGUgKDw+KSB7Cj4gICAJ CWRpZSB1bmxlc3MgZXhpc3RzICRkYnska2V5fS0+eydzdGFydCd9Owo+ICAgCQlkaWUgaWYgZXhp c3RzICRkYnska2V5fS0+eydlbmQnfTsKPiAgIAo+IC0JCSRkYnska2V5fS0+eydlbmQnfSA9IHVz KCRzLCAkdXMpOwo+ICsJCSRkYnska2V5fS0+eydlbmQnfSA9ICR0aW1lOwo+ICAgCQlpZiAoZXhp c3RzICRub3RpZnl7JGdrZXl9KSB7Cj4gICAJCQkkZGJ7JGtleX0tPnsnbm90aWZ5J30gPSAkbm90 aWZ5eyRna2V5fTsKPiAgIAkJfSBlbHNlIHsKPiBAQCAtNTU5LDIyICs0ODcsMTMgQEAgd2hpbGUg KDw+KSB7Cj4gICAJCSRkYnska2V5fS0+eydkdXJhdGlvbid9ID0gJGRieyRrZXl9LT57J25vdGlm eSd9IC0gJGRieyRrZXl9LT57J3N0YXJ0J307Cj4gICAJCSRkYnska2V5fS0+eydjb250ZXh0LWNv bXBsZXRlLWRlbGF5J30gPSAkZGJ7JGtleX0tPnsnZW5kJ30gLSAkZGJ7JGtleX0tPnsnbm90aWZ5 J307Cj4gICAJCW5leHQ7Cj4gLQl9Cj4gLQo+IC0JKCRzLCAkdXMsICRyaW5nLCAkc2Vxbm8pID0g cGFyc2Vfbm90aWZ5KCRfKTsKPiAtCWlmIChkZWZpbmVkICRzKSB7Cj4gLQkJbmV4dCBpZiBleGlz dHMgJGlnbm9yZV9yaW5neyRyaW5nfTsKPiAtCQkkbm90aWZ5e2dsb2JhbF9rZXkoJHJpbmcsICRz ZXFubyl9ID0gdXMoJHMsICR1cyk7Cj4gKwl9IGVsc2lmICgkdHBfbmFtZSBlcSAnaW50ZWxfZW5n aW5lX25vdGlmeScpIHsKPiArCQkkbm90aWZ5e2dsb2JhbF9rZXkoJHRweydyaW5nJ30sICR0cHsn c2Vxbm8nfSl9ID0gJHRpbWU7Cj4gICAJCW5leHQ7Cj4gLQl9Cj4gLQo+IC0JKCRzLCAkdXMsICRm cmVxKSA9IHBhcnNlX2ZyZXEoJF8pOwo+IC0JaWYgKGRlZmluZWQgJHMpIHsKPiAtCQlteSAkY3Vy ID0gdXMoJHMsICR1cyk7Cj4gLQo+IC0JCXB1c2ggQGZyZXFzLCBbJHByZXZfZnJlcV90cywgJGN1 ciwgJHByZXZfZnJlcV0gaWYgJHByZXZfZnJlcTsKPiAtCQkkcHJldl9mcmVxX3RzID0gJGN1cjsK PiAtCQkkcHJldl9mcmVxID0gJGZyZXE7Cj4gKwl9IGVsc2lmICgkdHBfbmFtZSBlcSAnaW50ZWxf Z3B1X2ZyZXFfY2hhbmdlJykgewo+ICsJCXB1c2ggQGZyZXFzLCBbJHByZXZfZnJlcV90cywgJHRp bWUsICRwcmV2X2ZyZXFdIGlmICRwcmV2X2ZyZXE7Cj4gKwkJJHByZXZfZnJlcV90cyA9ICR0aW1l Owo+ICsJCSRwcmV2X2ZyZXEgPSAkdHB7J25ld19mcmVxJ307Cj4gICAJCW5leHQ7Cj4gICAJfQo+ ICAgfQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==