From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-x22e.google.com (mail-wm0-x22e.google.com [IPv6:2a00:1450:400c:c09::22e]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2552D6E6BC for ; Tue, 6 Mar 2018 12:43:36 +0000 (UTC) Received: by mail-wm0-x22e.google.com with SMTP id q83so22595056wme.5 for ; Tue, 06 Mar 2018 04:43:36 -0800 (PST) From: Tvrtko Ursulin Date: Tue, 6 Mar 2018 12:43:15 +0000 Message-Id: <20180306124315.30208-12-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20180306124315.30208-1-tvrtko.ursulin@linux.intel.com> References: <20180306124315.30208-1-tvrtko.ursulin@linux.intel.com> Subject: [igt-dev] [PATCH i-g-t 11/11] trace.pl: Fix request split mode List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org, Tvrtko Ursulin List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClJlcXVlc3Qg c3BsaXQgbW9kZSBoYWQgc2V2ZXJhbCBidWdzLCBib3RoIGluIHRoZSBvcmlnaW5hbCB2ZXJzaW9u IGFuZCBhbHNvCmFmdGVyIHRoZSByZWNlbnQgcmVmYWN0b3JpbmdzLgoKT25lIGJpZyBvbmUgd2Fz IHRoYXQgaXQgd2Fzbid0IGNvbnNpZGVyaW5nIGRpZmZlcmVudCBzdWJtaXQgcG9ydHMgYXMgYQpy ZWFzb24gdG8gc3BsaXQgZXhlY3V0aW9uLCBhbmQgYWxzbyB0aGF0IGl0IHdhcyB0b28gdGltZSBi YXNlZCBpbnN0ZWFkIG9mCmxvb2tpbmcgYXQgcmVsZXZhbnQgdGltZWxpbmVzLgoKSW4gdGhpcyBy ZWZhY3RvcmluZyB3ZSBhZGRyZXNzIHRoZSBmb3JtZXIgYnkgdXNpbmcgdGhlIGVuZ2luZSB0aW1l bGluZXMKaW50cm9kdWNlZCBpbiB0aGUgcHJldmlvdXMgcGF0Y2guIFNlY29uZGFyeSBwb3J0IHN1 Ym1pc3Npb25zIGFyZSBtb3ZlZAp0byBmb2xsb3cgdGhlIHByZWNlZGluZyBzdWJtaXNzaW9uIGFz IGEgZmlyc3Qgc3RlcCBpbiB0aGUgY29ycmVjdGlvbgpwcm9jZXNzLgoKSW4gdGhlIHNlY29uZCBz dGVwLCB3ZSBhZGQgY29udGV4dCB0aW1lbGluZXMgYW5kIHVzZSB0aGVuIGluIGEgc2ltaWxhcgpm YXNoaW9uIHRvIHNlcGFyYXRlIHN0YXJ0IGFuZCBlbmQgdGltZSBvZiBjb2FsZXNjZWQgcmVxdWVz dHMuIEZvciBlYWNoCmNvYWxlc2NlZCByZXF1ZXN0IHdlIGtub3cgaXRzIGJvdW5kYXJpZXMgYnkg bG9va2luZyBhdCB0aGUgZW5naW5lCnRpbWVsaW5lICh2aWEgZ2xvYmFsIHNlcW5vcyksIGFuZCB3 ZSBrbm93IHRoZSBwcmV2aW91cyByZXF1ZXN0IGl0IHNob3VsZApvbmx5IHN0YXJ0IGFmdGVyLCBi eSBsb29raW5nIGF0IHRoZSBjb250ZXh0IHRpbWVsaW5lLgoKdjI6CiAqIFJlbW92ZSBzb21lIGRl YWQgY29kZS4KICogRml4ICFwb3J0MCBzaGlmdGluZyBsb2dpYy4KClNpZ25lZC1vZmYtYnk6IFR2 cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBKb2huIEhhcnJpc29u IDxKb2huLkMuSGFycmlzb25AaW50ZWwuY29tPgotLS0KIHNjcmlwdHMvdHJhY2UucGwgfCAxMjEg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQog MSBmaWxlIGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NjcmlwdHMvdHJhY2UucGwgYi9zY3JpcHRzL3RyYWNlLnBsCmluZGV4IDRkMWRhOThk YWEwZC4uZGUwMmJiMTAxOGYyIDEwMDc1NQotLS0gYS9zY3JpcHRzL3RyYWNlLnBsCisrKyBiL3Nj cmlwdHMvdHJhY2UucGwKQEAgLTYwMSw0MSArNjAxLDExMCBAQCBzdWIgc29ydFN0YXJ0IHsKIAly ZXR1cm4gJHZhbDsKIH0KIAotbXkgQHNvcnRlZF9rZXlzID0gc29ydCBzb3J0U3RhcnQga2V5cyAl ZGI7Ci1teSAkcmVfc29ydCA9IDA7CitteSAkcmVfc29ydCA9IDE7CitteSBAc29ydGVkX2tleXM7 CiAKLWRpZSAiRGF0YWJhc2UgY2hhbmdlZCBzaXplPyEiIHVubGVzcyBzY2FsYXIoQHNvcnRlZF9r ZXlzKSA9PSAka2V5X2NvdW50Oworc3ViIG1heWJlX3NvcnRfa2V5cworeworCWlmICgkcmVfc29y dCkgeworCQlAc29ydGVkX2tleXMgPSBzb3J0IHNvcnRTdGFydCBrZXlzICVkYjsKKwkJJHJlX3Nv cnQgPSAwOworCQlkaWUgIkRhdGFiYXNlIGNoYW5nZWQgc2l6ZT8hIiB1bmxlc3Mgc2NhbGFyKEBz b3J0ZWRfa2V5cykgPT0KKwkJCQkJCSAgICAgJGtleV9jb3VudDsKKwl9Cit9CiAKLWZvcmVhY2gg bXkgJGtleSAoQHNvcnRlZF9rZXlzKSB7Ci0JbXkgJHJpbmcgPSAkZGJ7JGtleX0tPnsncmluZyd9 OwotCW15ICRlbmQgPSAkZGJ7JGtleX0tPnsnZW5kJ307CittYXliZV9zb3J0X2tleXMoKTsKKwor bXkgJWN0eF90aW1lbGluZXM7CisKK3N1YiBzb3J0Q29udGV4dCB7CisJbXkgJGFzID0gJGRieyRh fS0+eydzZXFubyd9OworCW15ICRicyA9ICRkYnskYn0tPnsnc2Vxbm8nfTsKKwlteSAkdmFsOwor CisJJHZhbCA9ICRhcyA8PT4gJGJzOworCisJZGllIGlmICR2YWwgPT0gMDsKKworCXJldHVybiAk dmFsOworfQorCitzdWIgZ2V0X2N0eF90aW1lbGluZSB7CisJbXkgKCRjdHgsICRyaW5nLCAka2V5 KSA9IEBfOworCW15IEB0aW1lbGluZTsKIAotCSMgY29ycmVjdCBkdXJhdGlvbiBvZiBtZXJnZWQg YmF0Y2hlcwotCWlmICgkY29ycmVjdF9kdXJhdGlvbnMgYW5kIGV4aXN0cyAkZGJ7JGtleX0tPnsn bm8tZW5kJ30pIHsKKwlyZXR1cm4gJGN0eF90aW1lbGluZXN7JGtleX0gaWYgZXhpc3RzICRjdHhf dGltZWxpbmVzeyRrZXl9OworCisJQHRpbWVsaW5lID0gZ3JlcCB7ICRkYnskX30tPnsncmluZyd9 ID09ICRyaW5nIGFuZAorCQkJICAgJGRieyRffS0+eydjdHgnfSA9PSAkY3R4IH0gQHNvcnRlZF9r ZXlzOworCSMgRklYTUUgc2Vxbm8gcmVzdGFydAorCUB0aW1lbGluZSA9IHNvcnQgc29ydENvbnRl eHQgQHRpbWVsaW5lOworCisJJGN0eF90aW1lbGluZXN7JGtleX0gPSBcQHRpbWVsaW5lOworCisJ cmV0dXJuIFxAdGltZWxpbmU7Cit9CisKKyMgU3BsaXQgb3V0IG1lcmdlZCBiYXRjaGVzIGlmIHJl cXVlc3RlZC4KK2lmICgkY29ycmVjdF9kdXJhdGlvbnMpIHsKKwlteSBAcG9ydDE7CisJbXkgQG5v X2VuZDsKKworCSMgU2hpZnQgIXBvcnQwIHJlcXVlc3RzIHN0YXJ0IHRpbWUgdG8gYWZ0ZXIgdGhl IHByZXZpb3VzIGNvbnRleHQgb24gdGhlCisJIyBzYW1lIHRpbWVsaW5lIGhhcyBmaW5pc2hlZC4K KwlAcG9ydDEgPSBncmVwIHsgJGRieyRffS0+eydwb3J0J30gIT0gMCB9IEBzb3J0ZWRfa2V5czsK Kwlmb3JlYWNoIG15ICRrZXkgKEBwb3J0MSkgeworCQlteSAkdGltZWxpbmUgPSBnZXRfZW5naW5l X3RpbWVsaW5lKCRkYnska2V5fS0+eydyaW5nJ30pOworCQlteSAkaSA9IExpc3Q6OlV0aWw6OmZp cnN0IHsgJHskdGltZWxpbmV9WyRfXSBlcSAka2V5IH0gMC4uJCN7JHRpbWVsaW5lfTsKKwkJbXkg JHByZXZfa2V5OworCQlteSAkc3RhcnQ7CisKKwkJd2hpbGUgKCRpID4gMCkgeworCQkJbXkgJHBy ZXY7CisKKwkJCSRpID0gJGkgLSAxOworCQkJJHByZXYgPSAkeyR0aW1lbGluZX1bJGldOworCisJ CQluZXh0IGlmIGV4aXN0cyAkZGJ7JHByZXZ9LT57J25vLWVuZCd9OworCisJCQkkcHJldl9rZXkg PSAkcHJldjsKKwkJCWxhc3Q7CisJCX0KKworCQkkc3RhcnQgPSAkZGJ7JHByZXZfa2V5fS0+eydl bmQnfTsKKwkJJGRieyRrZXl9LT57J3N0YXJ0J30gPSAkc3RhcnQ7CisJCWRpZSBpZiAkc3RhcnQg PiAkZGJ7JGtleX0tPnsnZW5kJ307CisKKwkJJHJlX3NvcnQgPSAxOworCX0KKworCW1heWJlX3Nv cnRfa2V5cygpOworCisJIyBCYXRjaCB3aXRoIG5vLWVuZCAobm8gcmVxdWVzdF9vdXQpIG1lYW5z IGl0IHdhcyBzdWJtaXR0ZWQgYXMgcGFydCBvZgorCSMgY29sYWVzY2VkIGNvbnRleHQuIFRoaXMg bWVhbnMgaXQncyBzdGFydCB0aW1lIHNob3VsZCBiZSBzZXQgdG8gdGhlIGVuZAorCSMgdGltZSBv ZiBhIHByZWNlZGVpbmcgcmVxdWVzdCBvbiB0aGlzIHRpbWVsaW5lLgorCUBub19lbmQgPSBncmVw IHsgZXhpc3RzICRkYnskX30tPnsnbm8tZW5kJ30gfSBAc29ydGVkX2tleXM7CisJZm9yZWFjaCBt eSAka2V5IChAbm9fZW5kKSB7CiAJCW15ICRjdHggPSAkZGJ7JGtleX0tPnsnY3R4J307Ci0JCW15 ICRzZXFubyA9ICRkYnska2V5fS0+eydzZXFubyd9OwotCQlteSAkc3RhcnQgPSAkZGJ7JGtleX0t Pnsnc3RhcnQnfTsKLQkJbXkgJG5leHRfa2V5OwotCQlteSAkaSA9IDE7Ci0KLQkJZG8gewotCQkJ JG5leHRfa2V5ID0gZGJfa2V5KCRyaW5nLCAkY3R4LCAkc2Vxbm8gKyAkaSk7Ci0JCQkkaSsrOwot CQl9IHVudGlsIChleGlzdHMgJGRieyRuZXh0X2tleX0gb3IgJGkgPiAka2V5X2NvdW50KTsgICMg dWdseSBzdG9wIGhhY2sKLQotCQkjIDIwdXMgdG9sZXJhbmNlCi0JCWlmIChleGlzdHMgJGRieyRu ZXh0X2tleX0gYW5kICRkYnskbmV4dF9rZXl9LT57J3N0YXJ0J30gPCAkc3RhcnQgKyAyMCkgewot CQkJbXkgJG5vdGlmeSA9ICRkYnska2V5fS0+eydub3RpZnknfTsKKwkJbXkgJHJpbmcgPSAkZGJ7 JGtleX0tPnsncmluZyd9OworCQlteSAkdGtleSA9ICRjdHggLiAnLycgLiAkcmluZzsKKwkJbXkg JHRpbWVsaW5lID0gZ2V0X2N0eF90aW1lbGluZSgkY3R4LCAkcmluZywgJHRrZXkpOworCQlteSAk aTsKKworCQkkaSA9IExpc3Q6OlV0aWw6OmZpcnN0IHsgJHskdGltZWxpbmV9WyRfXSBlcSAka2V5 IH0gMC4uJCN7JHRpbWVsaW5lfTsKKworCQkjIFNoaWZ0IGZvbGxvd2luZyByZXF1ZXN0IHRvIHN0 YXJ0IGFmdGVyIHRoZSBjdXJyZW50IG9uZS4KKwkJaWYgKCRpIDwgJCN7JHRpbWVsaW5lfSkgewor CQkJbXkgJG5leHRfa2V5ID0gJHskdGltZWxpbmV9WyRpICsgMV07CisKKwkJCSRkYnskbmV4dF9r ZXl9LT57J3N0YXJ0J30gPSAkZGJ7JGtleX0tPnsnbm90aWZ5J307CiAJCQkkcmVfc29ydCA9IDE7 Ci0JCQkkZGJ7JG5leHRfa2V5fS0+eydzdGFydCd9ID0gJG5vdGlmeTsKLQkJCSRkYnskbmV4dF9r ZXl9LT57J3N0YXJ0J30gPSAkZGJ7JG5leHRfa2V5fS0+eydlbmQnfSBpZiAkZGJ7JG5leHRfa2V5 fS0+eydzdGFydCd9ID4gJGRieyRuZXh0X2tleX0tPnsnZW5kJ307Ci0JCQlkaWUgaWYgJGRieyRu ZXh0X2tleX0tPnsnc3RhcnQnfSA+ICRkYnskbmV4dF9rZXl9LT57J2VuZCd9OwogCQl9Ci0JCWRp ZSBpZiAkc3RhcnQgPiAkZW5kOwogCX0KIH0KIAotQHNvcnRlZF9rZXlzID0gc29ydCBzb3J0U3Rh cnQga2V5cyAlZGIgaWYgJHJlX3NvcnQ7CittYXliZV9zb3J0X2tleXMoKTsKIAogIyBHUFUgdGlt ZSBhY2NvdW50aW5nCiBteSAoJXJ1bm5pbmcsICVydW5uYWJsZSwgJXF1ZXVlZCwgJWJhdGNoX2F2 ZywgJWJhdGNoX3RvdGFsX2F2ZywgJWJhdGNoX2NvdW50KTsKLS0gCjIuMTQuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxp c3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH i-g-t 11/11] trace.pl: Fix request split mode Date: Tue, 6 Mar 2018 12:43:15 +0000 Message-ID: <20180306124315.30208-12-tvrtko.ursulin@linux.intel.com> References: <20180306124315.30208-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x234.google.com (mail-wm0-x234.google.com [IPv6:2a00:1450:400c:c09::234]) by gabe.freedesktop.org (Postfix) with ESMTPS id 006936E6B9 for ; Tue, 6 Mar 2018 12:43:35 +0000 (UTC) Received: by mail-wm0-x234.google.com with SMTP id h21so22456200wmd.1 for ; Tue, 06 Mar 2018 04:43:35 -0800 (PST) In-Reply-To: <20180306124315.30208-1-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClJlcXVlc3Qg c3BsaXQgbW9kZSBoYWQgc2V2ZXJhbCBidWdzLCBib3RoIGluIHRoZSBvcmlnaW5hbCB2ZXJzaW9u IGFuZCBhbHNvCmFmdGVyIHRoZSByZWNlbnQgcmVmYWN0b3JpbmdzLgoKT25lIGJpZyBvbmUgd2Fz IHRoYXQgaXQgd2Fzbid0IGNvbnNpZGVyaW5nIGRpZmZlcmVudCBzdWJtaXQgcG9ydHMgYXMgYQpy ZWFzb24gdG8gc3BsaXQgZXhlY3V0aW9uLCBhbmQgYWxzbyB0aGF0IGl0IHdhcyB0b28gdGltZSBi YXNlZCBpbnN0ZWFkIG9mCmxvb2tpbmcgYXQgcmVsZXZhbnQgdGltZWxpbmVzLgoKSW4gdGhpcyBy ZWZhY3RvcmluZyB3ZSBhZGRyZXNzIHRoZSBmb3JtZXIgYnkgdXNpbmcgdGhlIGVuZ2luZSB0aW1l bGluZXMKaW50cm9kdWNlZCBpbiB0aGUgcHJldmlvdXMgcGF0Y2guIFNlY29uZGFyeSBwb3J0IHN1 Ym1pc3Npb25zIGFyZSBtb3ZlZAp0byBmb2xsb3cgdGhlIHByZWNlZGluZyBzdWJtaXNzaW9uIGFz IGEgZmlyc3Qgc3RlcCBpbiB0aGUgY29ycmVjdGlvbgpwcm9jZXNzLgoKSW4gdGhlIHNlY29uZCBz dGVwLCB3ZSBhZGQgY29udGV4dCB0aW1lbGluZXMgYW5kIHVzZSB0aGVuIGluIGEgc2ltaWxhcgpm YXNoaW9uIHRvIHNlcGFyYXRlIHN0YXJ0IGFuZCBlbmQgdGltZSBvZiBjb2FsZXNjZWQgcmVxdWVz dHMuIEZvciBlYWNoCmNvYWxlc2NlZCByZXF1ZXN0IHdlIGtub3cgaXRzIGJvdW5kYXJpZXMgYnkg bG9va2luZyBhdCB0aGUgZW5naW5lCnRpbWVsaW5lICh2aWEgZ2xvYmFsIHNlcW5vcyksIGFuZCB3 ZSBrbm93IHRoZSBwcmV2aW91cyByZXF1ZXN0IGl0IHNob3VsZApvbmx5IHN0YXJ0IGFmdGVyLCBi eSBsb29raW5nIGF0IHRoZSBjb250ZXh0IHRpbWVsaW5lLgoKdjI6CiAqIFJlbW92ZSBzb21lIGRl YWQgY29kZS4KICogRml4ICFwb3J0MCBzaGlmdGluZyBsb2dpYy4KClNpZ25lZC1vZmYtYnk6IFR2 cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBKb2huIEhhcnJpc29u IDxKb2huLkMuSGFycmlzb25AaW50ZWwuY29tPgotLS0KIHNjcmlwdHMvdHJhY2UucGwgfCAxMjEg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQog MSBmaWxlIGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NjcmlwdHMvdHJhY2UucGwgYi9zY3JpcHRzL3RyYWNlLnBsCmluZGV4IDRkMWRhOThk YWEwZC4uZGUwMmJiMTAxOGYyIDEwMDc1NQotLS0gYS9zY3JpcHRzL3RyYWNlLnBsCisrKyBiL3Nj cmlwdHMvdHJhY2UucGwKQEAgLTYwMSw0MSArNjAxLDExMCBAQCBzdWIgc29ydFN0YXJ0IHsKIAly ZXR1cm4gJHZhbDsKIH0KIAotbXkgQHNvcnRlZF9rZXlzID0gc29ydCBzb3J0U3RhcnQga2V5cyAl ZGI7Ci1teSAkcmVfc29ydCA9IDA7CitteSAkcmVfc29ydCA9IDE7CitteSBAc29ydGVkX2tleXM7 CiAKLWRpZSAiRGF0YWJhc2UgY2hhbmdlZCBzaXplPyEiIHVubGVzcyBzY2FsYXIoQHNvcnRlZF9r ZXlzKSA9PSAka2V5X2NvdW50Oworc3ViIG1heWJlX3NvcnRfa2V5cworeworCWlmICgkcmVfc29y dCkgeworCQlAc29ydGVkX2tleXMgPSBzb3J0IHNvcnRTdGFydCBrZXlzICVkYjsKKwkJJHJlX3Nv cnQgPSAwOworCQlkaWUgIkRhdGFiYXNlIGNoYW5nZWQgc2l6ZT8hIiB1bmxlc3Mgc2NhbGFyKEBz b3J0ZWRfa2V5cykgPT0KKwkJCQkJCSAgICAgJGtleV9jb3VudDsKKwl9Cit9CiAKLWZvcmVhY2gg bXkgJGtleSAoQHNvcnRlZF9rZXlzKSB7Ci0JbXkgJHJpbmcgPSAkZGJ7JGtleX0tPnsncmluZyd9 OwotCW15ICRlbmQgPSAkZGJ7JGtleX0tPnsnZW5kJ307CittYXliZV9zb3J0X2tleXMoKTsKKwor bXkgJWN0eF90aW1lbGluZXM7CisKK3N1YiBzb3J0Q29udGV4dCB7CisJbXkgJGFzID0gJGRieyRh fS0+eydzZXFubyd9OworCW15ICRicyA9ICRkYnskYn0tPnsnc2Vxbm8nfTsKKwlteSAkdmFsOwor CisJJHZhbCA9ICRhcyA8PT4gJGJzOworCisJZGllIGlmICR2YWwgPT0gMDsKKworCXJldHVybiAk dmFsOworfQorCitzdWIgZ2V0X2N0eF90aW1lbGluZSB7CisJbXkgKCRjdHgsICRyaW5nLCAka2V5 KSA9IEBfOworCW15IEB0aW1lbGluZTsKIAotCSMgY29ycmVjdCBkdXJhdGlvbiBvZiBtZXJnZWQg YmF0Y2hlcwotCWlmICgkY29ycmVjdF9kdXJhdGlvbnMgYW5kIGV4aXN0cyAkZGJ7JGtleX0tPnsn bm8tZW5kJ30pIHsKKwlyZXR1cm4gJGN0eF90aW1lbGluZXN7JGtleX0gaWYgZXhpc3RzICRjdHhf dGltZWxpbmVzeyRrZXl9OworCisJQHRpbWVsaW5lID0gZ3JlcCB7ICRkYnskX30tPnsncmluZyd9 ID09ICRyaW5nIGFuZAorCQkJICAgJGRieyRffS0+eydjdHgnfSA9PSAkY3R4IH0gQHNvcnRlZF9r ZXlzOworCSMgRklYTUUgc2Vxbm8gcmVzdGFydAorCUB0aW1lbGluZSA9IHNvcnQgc29ydENvbnRl eHQgQHRpbWVsaW5lOworCisJJGN0eF90aW1lbGluZXN7JGtleX0gPSBcQHRpbWVsaW5lOworCisJ cmV0dXJuIFxAdGltZWxpbmU7Cit9CisKKyMgU3BsaXQgb3V0IG1lcmdlZCBiYXRjaGVzIGlmIHJl cXVlc3RlZC4KK2lmICgkY29ycmVjdF9kdXJhdGlvbnMpIHsKKwlteSBAcG9ydDE7CisJbXkgQG5v X2VuZDsKKworCSMgU2hpZnQgIXBvcnQwIHJlcXVlc3RzIHN0YXJ0IHRpbWUgdG8gYWZ0ZXIgdGhl IHByZXZpb3VzIGNvbnRleHQgb24gdGhlCisJIyBzYW1lIHRpbWVsaW5lIGhhcyBmaW5pc2hlZC4K KwlAcG9ydDEgPSBncmVwIHsgJGRieyRffS0+eydwb3J0J30gIT0gMCB9IEBzb3J0ZWRfa2V5czsK Kwlmb3JlYWNoIG15ICRrZXkgKEBwb3J0MSkgeworCQlteSAkdGltZWxpbmUgPSBnZXRfZW5naW5l X3RpbWVsaW5lKCRkYnska2V5fS0+eydyaW5nJ30pOworCQlteSAkaSA9IExpc3Q6OlV0aWw6OmZp cnN0IHsgJHskdGltZWxpbmV9WyRfXSBlcSAka2V5IH0gMC4uJCN7JHRpbWVsaW5lfTsKKwkJbXkg JHByZXZfa2V5OworCQlteSAkc3RhcnQ7CisKKwkJd2hpbGUgKCRpID4gMCkgeworCQkJbXkgJHBy ZXY7CisKKwkJCSRpID0gJGkgLSAxOworCQkJJHByZXYgPSAkeyR0aW1lbGluZX1bJGldOworCisJ CQluZXh0IGlmIGV4aXN0cyAkZGJ7JHByZXZ9LT57J25vLWVuZCd9OworCisJCQkkcHJldl9rZXkg PSAkcHJldjsKKwkJCWxhc3Q7CisJCX0KKworCQkkc3RhcnQgPSAkZGJ7JHByZXZfa2V5fS0+eydl bmQnfTsKKwkJJGRieyRrZXl9LT57J3N0YXJ0J30gPSAkc3RhcnQ7CisJCWRpZSBpZiAkc3RhcnQg PiAkZGJ7JGtleX0tPnsnZW5kJ307CisKKwkJJHJlX3NvcnQgPSAxOworCX0KKworCW1heWJlX3Nv cnRfa2V5cygpOworCisJIyBCYXRjaCB3aXRoIG5vLWVuZCAobm8gcmVxdWVzdF9vdXQpIG1lYW5z IGl0IHdhcyBzdWJtaXR0ZWQgYXMgcGFydCBvZgorCSMgY29sYWVzY2VkIGNvbnRleHQuIFRoaXMg bWVhbnMgaXQncyBzdGFydCB0aW1lIHNob3VsZCBiZSBzZXQgdG8gdGhlIGVuZAorCSMgdGltZSBv ZiBhIHByZWNlZGVpbmcgcmVxdWVzdCBvbiB0aGlzIHRpbWVsaW5lLgorCUBub19lbmQgPSBncmVw IHsgZXhpc3RzICRkYnskX30tPnsnbm8tZW5kJ30gfSBAc29ydGVkX2tleXM7CisJZm9yZWFjaCBt eSAka2V5IChAbm9fZW5kKSB7CiAJCW15ICRjdHggPSAkZGJ7JGtleX0tPnsnY3R4J307Ci0JCW15 ICRzZXFubyA9ICRkYnska2V5fS0+eydzZXFubyd9OwotCQlteSAkc3RhcnQgPSAkZGJ7JGtleX0t Pnsnc3RhcnQnfTsKLQkJbXkgJG5leHRfa2V5OwotCQlteSAkaSA9IDE7Ci0KLQkJZG8gewotCQkJ JG5leHRfa2V5ID0gZGJfa2V5KCRyaW5nLCAkY3R4LCAkc2Vxbm8gKyAkaSk7Ci0JCQkkaSsrOwot CQl9IHVudGlsIChleGlzdHMgJGRieyRuZXh0X2tleX0gb3IgJGkgPiAka2V5X2NvdW50KTsgICMg dWdseSBzdG9wIGhhY2sKLQotCQkjIDIwdXMgdG9sZXJhbmNlCi0JCWlmIChleGlzdHMgJGRieyRu ZXh0X2tleX0gYW5kICRkYnskbmV4dF9rZXl9LT57J3N0YXJ0J30gPCAkc3RhcnQgKyAyMCkgewot CQkJbXkgJG5vdGlmeSA9ICRkYnska2V5fS0+eydub3RpZnknfTsKKwkJbXkgJHJpbmcgPSAkZGJ7 JGtleX0tPnsncmluZyd9OworCQlteSAkdGtleSA9ICRjdHggLiAnLycgLiAkcmluZzsKKwkJbXkg JHRpbWVsaW5lID0gZ2V0X2N0eF90aW1lbGluZSgkY3R4LCAkcmluZywgJHRrZXkpOworCQlteSAk aTsKKworCQkkaSA9IExpc3Q6OlV0aWw6OmZpcnN0IHsgJHskdGltZWxpbmV9WyRfXSBlcSAka2V5 IH0gMC4uJCN7JHRpbWVsaW5lfTsKKworCQkjIFNoaWZ0IGZvbGxvd2luZyByZXF1ZXN0IHRvIHN0 YXJ0IGFmdGVyIHRoZSBjdXJyZW50IG9uZS4KKwkJaWYgKCRpIDwgJCN7JHRpbWVsaW5lfSkgewor CQkJbXkgJG5leHRfa2V5ID0gJHskdGltZWxpbmV9WyRpICsgMV07CisKKwkJCSRkYnskbmV4dF9r ZXl9LT57J3N0YXJ0J30gPSAkZGJ7JGtleX0tPnsnbm90aWZ5J307CiAJCQkkcmVfc29ydCA9IDE7 Ci0JCQkkZGJ7JG5leHRfa2V5fS0+eydzdGFydCd9ID0gJG5vdGlmeTsKLQkJCSRkYnskbmV4dF9r ZXl9LT57J3N0YXJ0J30gPSAkZGJ7JG5leHRfa2V5fS0+eydlbmQnfSBpZiAkZGJ7JG5leHRfa2V5 fS0+eydzdGFydCd9ID4gJGRieyRuZXh0X2tleX0tPnsnZW5kJ307Ci0JCQlkaWUgaWYgJGRieyRu ZXh0X2tleX0tPnsnc3RhcnQnfSA+ICRkYnskbmV4dF9rZXl9LT57J2VuZCd9OwogCQl9Ci0JCWRp ZSBpZiAkc3RhcnQgPiAkZW5kOwogCX0KIH0KIAotQHNvcnRlZF9rZXlzID0gc29ydCBzb3J0U3Rh cnQga2V5cyAlZGIgaWYgJHJlX3NvcnQ7CittYXliZV9zb3J0X2tleXMoKTsKIAogIyBHUFUgdGlt ZSBhY2NvdW50aW5nCiBteSAoJXJ1bm5pbmcsICVydW5uYWJsZSwgJXF1ZXVlZCwgJWJhdGNoX2F2 ZywgJWJhdGNoX3RvdGFsX2F2ZywgJWJhdGNoX2NvdW50KTsKLS0gCjIuMTQuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==