From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ronald Rojas Subject: [PATCH RFC 12/59] Basic 'report' functionality Date: Wed, 28 Dec 2016 20:14:05 -0500 Message-ID: <1482974092-15891-12-git-send-email-ronladred@gmail.com> References: <1482974092-15891-1-git-send-email-ronladred@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1482974092-15891-1-git-send-email-ronladred@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel , Ian Jackson , Wei Liu , George Dunlap , George Dunlap List-Id: xen-devel@lists.xenproject.org RnJvbTogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPgoKR28gdGhyb3Vn aCB0aGUgcmF3IGRhdGEgYW5kIHJlLWNhbGN1bGF0ZSB0aHJvdWdocHV0IGZvciBlYWNoCnRpbWVm cmFtZS4gIFJlY29yZCBmb3IgZWFjaCB3b3JrZXIgdGhlIG1pbiBhbmQgbWF4IG9mIHRoZXNlOyB0 aGVuIHRha2UKYW4gYXZlcmFnZSBvdmVyIHRoZSB3aG9sZSBydW4uCgpIYXZlIHRoZSByZXBvcnQg Z28gdGhyb3VnaCBlYWNoIGFuZCBzaG93IHRoZSB3b3JrZXIgc2V0dXAsIGFzIHdlbGwgYXMKdGhl IGF2ZywgbWluLCBhbmQgbWF4IGZvciBlYWNoIHdvcmtlci4KCkFsc28gZGVmYXVsdCB0byBydW5u aW5nIFhlbiBhZ2FpbiAocmF0aGVyIHRoYW4gcHJvY2Vzc2VzKSwgYW5kIGNsZWFuCnVwIHNvbWUg Y2hhdHRpbmVzcyB3cnQgc3RhcnRpbmcgWGVuIHByb2Nlc3Nlcy4KCkZpbmFsbHksIG1ha2UgdGhl ICJwbGFuIiBzbGlnaHRseSBtb3JlIHByb2dyYW1tYXRpYywgYW5kIHRlc3QgYSBtb3JlCiJwaXBl bGluZWQiIHRlc3RjYXNlLgoKU2lnbmVkLW9mZi1ieTogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1 bmxhcEBjaXRyaXguY29tPgotLS0KIGJlbmNobWFyay5nbyB8IDE2MyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogbWFpbi5nbyAgICAg IHwgIDU2ICsrKysrKysrKysrKysrKystLS0tCiB4ZW53b3JrZXIuZ28gfCAgIDQgKy0KIDMgZmls ZXMgY2hhbmdlZCwgMjA1IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2JlbmNobWFyay5nbyBiL2JlbmNobWFyay5nbwppbmRleCBiMmIyMzk5Li5lYzYyYzNkIDEw MDY0NAotLS0gYS9iZW5jaG1hcmsuZ28KKysrIGIvYmVuY2htYXJrLmdvCkBAIC05LDYgKzksMTIg QEAgaW1wb3J0ICgKIAkiZW5jb2RpbmcvanNvbiIKICkKIAordHlwZSBXb3JrZXJTdW1tYXJ5IHN0 cnVjdCB7CisJTWF4VHB1dCBmbG9hdDY0CisJQXZnVHB1dCBmbG9hdDY0CisJTWluVHB1dCBmbG9h dDY0Cit9CisKIHR5cGUgV29ya2VyUmVwb3J0IHN0cnVjdCB7CiAJSWQgaW50CiAJTm93IGludApA QCAtNDMsNiArNDksMTQgQEAgdHlwZSBXb3JrZXJTdGF0ZSBzdHJ1Y3QgewogCUxhc3RSZXBvcnQg V29ya2VyUmVwb3J0CiB9CiAKK2Z1bmMgVGhyb3VnaHB1dChsdCBpbnQsIGxtIGludCwgdCBpbnQs IG0gaW50KSAodHB1dCBmbG9hdDY0KSB7CisJdGltZSA6PSBmbG9hdDY0KHQgLSBsdCkgLyBTRUMK Kwltb3BzIDo9IG0gLSBsbQorCQorCXRwdXQgPSBmbG9hdDY0KG1vcHMpIC8gdGltZQorCXJldHVy bgorfQorCiBmdW5jIFJlcG9ydCh3cyAqV29ya2VyU3RhdGUsIHIgV29ya2VyUmVwb3J0KSB7CiAJ Ly9mbXQuUHJpbnRsbihyKQogCkBAIC01Miw4ICs2Niw4IEBAIGZ1bmMgUmVwb3J0KHdzICpXb3Jr ZXJTdGF0ZSwgciBXb3JrZXJSZXBvcnQpIHsKIAkJdGltZSA6PSBmbG9hdDY0KHIuTm93IC0gbHIu Tm93KSAvIFNFQwogCQltb3BzIDo9IHIuTW9wcyAtIGxyLk1vcHMKIAotCQl0cHV0IDo9IGZsb2F0 NjQobW9wcykgLyB0aW1lCi0KKwkJdHB1dCA6PSBUaHJvdWdocHV0KGxyLk5vdywgbHIuTW9wcywg ci5Ob3csIHIuTW9wcykKKwkJCiAJCWZtdC5QcmludGYoIiVkIFRpbWU6ICUyLjNmIE1vcHM6ICVk IFRwdXQ6ICU0LjJmXG4iLCByLklkLCB0aW1lLCBtb3BzLCB0cHV0KTsKIAl9CiAKQEAgLTExNCwx OSArMTI4LDIxIEBAIGZ1bmMgTmV3V29ya2VyTGlzdCh3b3JrZXJzIFtdV29ya2VyU2V0LCB3b3Jr ZXJUeXBlIGludCkgKHdzIFdvcmtlckxpc3QsIGVyciBlcnJvCiB9CiAKIHR5cGUgQmVuY2htYXJr UnVuRGF0YSBzdHJ1Y3QgewotCVJhdyBbXVdvcmtlclJlcG9ydAorCVdvcmtlckNvdW50IGludAor CVJhdyBbXVdvcmtlclJlcG9ydCAgICAgICBganNvbjoiLG9taXRlbXB0eSJgCisJU3VtbWFyeSBb XVdvcmtlclN1bW1hcnkgIGBqc29uOiIsb21pdGVtcHR5ImAKIH0KIAogdHlwZSBCZW5jaG1hcmtS dW4gc3RydWN0IHsKLQlDb21wbGV0ZWQgYm9vbAogCUxhYmVsIHN0cmluZwogCVdvcmtlcnMgW11X b3JrZXJTZXQKIAlSdW50aW1lU2Vjb25kcyBpbnQKKwlDb21wbGV0ZWQgYm9vbAogCVJlc3VsdHMg QmVuY2htYXJrUnVuRGF0YSAKIH0KIAogZnVuYyAocnVuICpCZW5jaG1hcmtSdW4pIFJ1bigpIChl cnIgZXJyb3IpIHsKLQlXb3JrZXJzLCBlcnIgOj0gTmV3V29ya2VyTGlzdChydW4uV29ya2Vycywg V29ya2VyUHJvY2VzcykKKwlXb3JrZXJzLCBlcnIgOj0gTmV3V29ya2VyTGlzdChydW4uV29ya2Vy cywgV29ya2VyWGVuKQogCWlmIGVyciAhPSBuaWwgewogCQlmbXQuUHJpbnRsbigiRXJyb3IgY3Jl YXRpbmcgd29ya2VyczogJXYiLCBlcnIpCiAJCXJldHVybgpAQCAtMTQwLDYgKzE1Niw4IEBAIGZ1 bmMgKHJ1biAqQmVuY2htYXJrUnVuKSBSdW4oKSAoZXJyIGVycm9yKSB7CiAJCiAJaSA6PSBXb3Jr ZXJzLlN0YXJ0KHJlcG9ydCwgZG9uZSkKIAorCXJ1bi5SZXN1bHRzLldvcmtlckNvdW50ID0gaQor CiAJLy8gRklYTUU6CiAJLy8gMS4gTWFrZSBhIHplcm8gdGltZW91dCBtZWFuICJuZXZlciIKIAkv LyAyLiBNYWtlIHRoZSBzaWduYWxzIC8gdGltZW91dCB0aGluZyBhIGJpdCBtb3JlIHJhdGlvbmFs OyBzaWduYWwgdGhlbiB0aW1lb3V0IHNob3VsZG4ndCBoYXJkIGtpbGwKQEAgLTE3OCw4ICsxOTYs MTIxIEBAIGZ1bmMgKHJ1biAqQmVuY2htYXJrUnVuKSBSdW4oKSAoZXJyIGVycm9yKSB7CiAJcmV0 dXJuCiB9CiAKK2Z1bmMgKHJ1biAqQmVuY2htYXJrUnVuKSBjaGVja1N1bW1hcnkoKSAoZG9uZSBi b29sLCBlcnIgZXJyb3IpIHsKKwlpZiBydW4uUmVzdWx0cy5Xb3JrZXJDb3VudCA9PSAwIHsKKwkJ ZXJyID0gZm10LkVycm9yZigiSW50ZXJuYWwgZXJyb3I6IFdvcmtlckNvdW50IDAhIikKKwkJcmV0 dXJuCisJfQorCQorCWlmIGxlbihydW4uUmVzdWx0cy5TdW1tYXJ5KSA9PSBydW4uUmVzdWx0cy5X b3JrZXJDb3VudCB7CisJCWRvbmUgPSB0cnVlCisJCXJldHVybiAKKwl9CisJCisJaWYgbGVuKHJ1 bi5SZXN1bHRzLlN1bW1hcnkpICE9IDAgeworCQllcnIgPSBmbXQuRXJyb3JmKCJJbnRlcm5hbCBl cnJvcjogbGVuKFN1bW1hcnkpICVkLCBsZW4oV29ya2VycykgJWQhXG4iLAorCQkJbGVuKHJ1bi5S ZXN1bHRzLlN1bW1hcnkpLCBydW4uUmVzdWx0cy5Xb3JrZXJDb3VudCkKKwkJcmV0dXJuCisJfQor CisJcmV0dXJuCit9CisKK2Z1bmMgKHJ1biAqQmVuY2htYXJrUnVuKSBQcm9jZXNzKCkgKGVyciBl cnJvcikgeworCWRvbmUsIGVyciA6PSBydW4uY2hlY2tTdW1tYXJ5KCkKKwlpZiBkb25lIHx8IGVy ciAhPSBuaWwgeworCQlyZXR1cm4KKwl9CisJCisJd2NvdW50IDo9IHJ1bi5SZXN1bHRzLldvcmtl ckNvdW50CisKKwlpZiBsZW4ocnVuLlJlc3VsdHMuU3VtbWFyeSkgIT0gMCB7CisJCWVyciA9IGZt dC5FcnJvcmYoIkludGVybmFsIGVycm9yOiBsZW4oU3VtbWFyeSkgJWQsIGxlbihXb3JrZXJzKSAl ZCFcbiIsCisJCQlsZW4ocnVuLlJlc3VsdHMuU3VtbWFyeSksIHdjb3VudCkKKwkJcmV0dXJuCisJ fQorCisJcnVuLlJlc3VsdHMuU3VtbWFyeSA9IG1ha2UoW11Xb3JrZXJTdW1tYXJ5LCB3Y291bnQp CisKKwkvLyBGSVhNRTogRmlsdGVyIG91dCByZXN1bHRzIHdoaWNoIHN0YXJ0ZWQgYmVmb3JlIGFs bCBoYXZlIHN0YXJ0ZWQKKwkKKwlkYXRhIDo9IG1ha2UoW11zdHJ1Y3R7CisJCXN0YXJ0VGltZSBp bnQKKwkJbGFzdFRpbWUgaW50CisJCWxhc3RNb3BzIGludH0sIHdjb3VudCkKKworCWZvciBpIDo9 IHJhbmdlIHJ1bi5SZXN1bHRzLlJhdyB7CisJCWUgOj0gcnVuLlJlc3VsdHMuUmF3W2ldCisJCWlm IGUuSWQgPiB3Y291bnQgeworCQkJZXJyID0gZm10LkVycm9yZigiSW50ZXJuYWwgZXJyb3I6IGlk ICVkID4gd2NvdW50ICVkIiwgZS5JZCwgd2NvdW50KQorCQkJcmV0dXJuCisJCX0KKwkJCisJCWQg Oj0gJmRhdGFbZS5JZF0KKwkJcyA6PSAmcnVuLlJlc3VsdHMuU3VtbWFyeVtlLklkXQorCisJCWlm IGQuc3RhcnRUaW1lID09IDAgeworCQkJZC5zdGFydFRpbWUgPSBlLk5vdworCQl9IGVsc2Ugewor CQkJdHB1dCA6PSBUaHJvdWdocHV0KGQubGFzdFRpbWUsIGQubGFzdE1vcHMsIGUuTm93LCBlLk1v cHMpCisJCQorCQkJaWYgdHB1dCA+IHMuTWF4VHB1dCB7CisJCQkJcy5NYXhUcHV0ID0gdHB1dAor CQkJfQorCQkJaWYgdHB1dCA8IHMuTWluVHB1dCB8fCBzLk1pblRwdXQgPT0gMCB7CisJCQkJcy5N aW5UcHV0ID0gdHB1dAorCQkJfQorCQl9CisJCWQubGFzdFRpbWUgPSBlLk5vdworCQlkLmxhc3RN b3BzID0gZS5Nb3BzCisJfQorCisJZm9yIGkgOj0gcmFuZ2UgZGF0YSB7CisJCXJ1bi5SZXN1bHRz LlN1bW1hcnlbaV0uQXZnVHB1dCA9IFRocm91Z2hwdXQoZGF0YVtpXS5zdGFydFRpbWUsIDAsIGRh dGFbaV0ubGFzdFRpbWUsIGRhdGFbaV0ubGFzdE1vcHMpCisJfQorCQorCXJldHVybgorfQorCitm dW5jIChydW4gKkJlbmNobWFya1J1bikgVGV4dFJlcG9ydCgpIChlcnIgZXJyb3IpIHsKKwl2YXIg ZG9uZSBib29sCisJZG9uZSwgZXJyID0gcnVuLmNoZWNrU3VtbWFyeSgpCisJaWYgZXJyICE9IG5p bCB7CisJCXJldHVybgorCX0KKwlpZiAhIGRvbmUgeworCQllcnIgPSBmbXQuRXJyb3JmKCJSdW4g bm90IHlldCBwcm9jZXNzZWQiKQorCQlyZXR1cm4KKwl9CisKKwlmbXQuUHJpbnRmKCI9PSBSVU4g JXMgPT0iLCBydW4uTGFiZWwpCisKKwlmbXQuUHJpbnRmKCIgV29ya2VycyAoJWQgdG90YWwpOlxu IiwgcnVuLlJlc3VsdHMuV29ya2VyQ291bnQpCisJd1N0YXJ0IDo9IDAKKwlmb3IgaSA6PSByYW5n ZSBydW4uV29ya2VycyB7CisJCXdzIDo9ICZydW4uV29ya2Vyc1tpXQorCQluIDo9IHdzLkNvdW50 CisJCXBhcmFtcyA6PSAiIgorCQlmb3IgXywgcyA6PSByYW5nZSB3cy5QYXJhbXMuQXJncyB7CisJ CQlwYXJhbXMgPSBmbXQuU3ByaW50ZigiJXMgJXMiLCBwYXJhbXMsIHMpCisJCX0KKwkJZm10LlBy aW50ZigiWyVkLSVkXTogJXNcbiIsIHdTdGFydCwgd1N0YXJ0K24tMSwgcGFyYW1zKQorCQl3U3Rh cnQgKz0gbgorCX0KKworCWZtdC5QcmludGYoIlxuJThzICU4cyAlOHMgJThzXG4iLCAiaWQiLCAi YXZnIiwgIm1pbiIsICJtYXgiKQorCWZvciBpIDo9IDA7IGkgPCBydW4uUmVzdWx0cy5Xb3JrZXJD b3VudDsgaSsrIHsKKwkJcyA6PSAmcnVuLlJlc3VsdHMuU3VtbWFyeVtpXQorCQlmbXQuUHJpbnRm KCIlOGQgJTguMmYgJTguMmYgJTguMmZcbiIsCisJCQlpLCBzLkF2Z1RwdXQsIHMuTWluVHB1dCwg cy5NYXhUcHV0KQorCX0KKworCXJldHVybgorfQorCiB0eXBlIEJlbmNobWFya1BsYW4gc3RydWN0 IHsKIAlmaWxlbmFtZSBzdHJpbmcKKwlXb3JrZXJUeXBlIGludAogCVJ1bnMgW11CZW5jaG1hcmtS dW4KIH0KIApAQCAtMjU0LDMgKzM4NSwyNSBAQCBmdW5jIChwbGFuICpCZW5jaG1hcmtQbGFuKSBT YXZlKCkgKGVyciBlcnJvcikgewogCX0KIAlyZXR1cm4KIH0KKworZnVuYyAocGxhbiAqQmVuY2ht YXJrUGxhbikgVGV4dFJlcG9ydCgpIChlcnIgZXJyb3IpIHsKKwlmb3IgaSA6PSByYW5nZSBwbGFu LlJ1bnMgeworCQlyIDo9ICZwbGFuLlJ1bnNbaV0KKwkJaWYgISByLkNvbXBsZXRlZCB7CisJCQlm bXQuUHJpbnRmKCJUZXN0IFslZF0gJXMgbm90IHJ1blxuIiwgaSwgci5MYWJlbCkKKwkJfQorCisJ CWVyciA9IHIuUHJvY2VzcygpCisJCWlmIGVyciAhPSBuaWwgeworCQkJZm10LlByaW50ZigiRXJy b3IgcHJvY2Vzc2luZyBbJWRdICVzOiAldlxuIiwgaSwgci5MYWJlbCwgZXJyKQorCQkJcmV0dXJu CisJCX0KKworCQllcnIgPSByLlRleHRSZXBvcnQoKQorCQlpZiBlcnIgIT0gbmlsIHsKKwkJCXJl dHVybgorCQl9CisJfQorCisJcmV0dXJuCit9CmRpZmYgLS1naXQgYS9tYWluLmdvIGIvbWFpbi5n bwppbmRleCA0ZDk3MDFjLi4yNjk2ODEwIDEwMDY0NAotLS0gYS9tYWluLmdvCisrKyBiL21haW4u Z28KQEAgLTEwLDI3ICsxMCw0OCBAQCBmdW5jIG1haW4oKSB7CiAKIAlzd2l0Y2gob3MuQXJnc1sx XSkgewogCWNhc2UgInBsYW4iOgorCQl3b3JrZXJBIDo9IFtdc3RyaW5neyJidXJud2FpdCIsICIy MCIsICIyMDAwMDAwMCJ9CisJCS8vd29ya2VyQiA6PSBbXXN0cmluZ3siYnVybndhaXQiLCAiMTAi LCAiMjAwMDAwMDAifQorCQl3b3JrZXJCIDo9IFtdc3RyaW5neyJidXJud2FpdCIsICIxIiwgIjIw MDAwMDAwIiwKKwkJCSJidXJud2FpdCIsICIyIiwgIjIwMDAwMDAwIiwKKwkJCSJidXJud2FpdCIs ICIxIiwgIjIwMDAwMDAwIiwKKwkJCSJidXJud2FpdCIsICIxIiwgIjIwMDAwMDAwIiwKKwkJCSJi dXJud2FpdCIsICIxIiwgIjIwMDAwMDAwIiwKKwkJCSJidXJud2FpdCIsICIxIiwgIjIwMDAwMDAw IiwKKwkJCSJidXJud2FpdCIsICIzIiwgIjIwMDAwMDAwIiwKKwkJfQorCisKIAkJcGxhbiA6PSAg QmVuY2htYXJrUGxhbnsKKwkJCVdvcmtlclR5cGU6V29ya2VyWGVuLAogCQkJZmlsZW5hbWU6Zmls ZW5hbWUsCiAJCQlSdW5zOltdQmVuY2htYXJrUnVuewogCQkJCXtMYWJlbDoiYmFzZWxpbmUtYSIs CiAJCQkJCVdvcmtlcnM6W11Xb3JrZXJTZXR7Ci0JCQkJCQl7UGFyYW1zOldvcmtlclBhcmFtc3tb XXN0cmluZ3siYnVybndhaXQiLCAiMjAiLCAiMjAwMDAwMDAifX0sCisJCQkJCQl7UGFyYW1zOldv cmtlclBhcmFtc3t3b3JrZXJBfSwKIAkJCQkJCQlDb3VudDoxfX0sCi0JCQkJCVJ1bnRpbWVTZWNv bmRzOjUsfSwKKwkJCQkJUnVudGltZVNlY29uZHM6MTAsfSwKIAkJCQl7TGFiZWw6ImJhc2VsaW5l LWIiLAogCQkJCQlXb3JrZXJzOltdV29ya2VyU2V0ewotCQkJCQkJe1BhcmFtczpXb3JrZXJQYXJh bXN7W11zdHJpbmd7ImJ1cm53YWl0IiwgIjEwIiwgIjIwMDAwMDAwIn19LAorCQkJCQkJe1BhcmFt czpXb3JrZXJQYXJhbXN7d29ya2VyQn0sCiAJCQkJCQkJQ291bnQ6MX19LAotCQkJCQlSdW50aW1l U2Vjb25kczo1LH0sCi0JCQkJe0xhYmVsOiI0YSs0YiIsCi0JCQkJCVdvcmtlcnM6W11Xb3JrZXJT ZXR7Ci0JCQkJCQl7UGFyYW1zOldvcmtlclBhcmFtc3tbXXN0cmluZ3siYnVybndhaXQiLCAiMjAi LCAiMjAwMDAwMDAifX0sCi0JCQkJCQkJQ291bnQ6NH0sCi0JCQkJCQl7UGFyYW1zOldvcmtlclBh cmFtc3tbXXN0cmluZ3siYnVybndhaXQiLCAiMTAiLCAiMzAwMDAwMDAifX0sCi0JCQkJCQkJQ291 bnQ6NH19LAotCQkJCQlSdW50aW1lU2Vjb25kczo1LH0sCisJCQkJCVJ1bnRpbWVTZWNvbmRzOjEw LH0sCiAJCQl9fQorCisKKwkJZm9yIGkgOj0gMTsgaSA8PSAxNiA7IGkgKj0gMiB7CisJCQlsYWJl bCA6PSBmbXQuU3ByaW50ZigiJWRhKyVkYiIsIGksIGkpCisJCQlydW4gOj0gQmVuY2htYXJrUnVu eworCQkJCUxhYmVsOmxhYmVsLAorCQkJCVdvcmtlcnM6W11Xb3JrZXJTZXR7CisJCQkJCXtQYXJh bXM6V29ya2VyUGFyYW1ze3dvcmtlckF9LAorCQkJCQkJQ291bnQ6aX0sCisJCQkJCXtQYXJhbXM6 V29ya2VyUGFyYW1ze3dvcmtlckJ9LAorCQkJCQkJQ291bnQ6aX19LAorCQkJCVJ1bnRpbWVTZWNv bmRzOjEwfQorCQkJcGxhbi5SdW5zID0gYXBwZW5kKHBsYW4uUnVucywgcnVuKQorCQl9CisJCQog CQllcnIgOj0gcGxhbi5TYXZlKCkKIAkJaWYgZXJyICE9IG5pbCB7CiAJCQlmbXQuUHJpbnRsbigi U2F2aW5nIHBsYW4gIiwgZmlsZW5hbWUsICIgIiwgZXJyKQpAQCAtNDksNiArNzAsMTkgQEAgZnVu YyBtYWluKCkgewogCQkJZm10LlByaW50bG4oIlJ1bm5pbmcgYmVuY2htYXJrIHJ1bjoiLCBlcnIp CiAJCQlvcy5FeGl0KDEpCiAJCX0KKwkJCisJY2FzZSAicmVwb3J0IjoKKwkJcGxhbiwgZXJyIDo9 IExvYWRCZW5jaG1hcmsoZmlsZW5hbWUpCisJCWlmIGVyciAhPSBuaWwgeworCQkJZm10LlByaW50 bG4oIkxvYWRpbmcgYmVuY2htYXJrICIsIGZpbGVuYW1lLCAiICIsIGVycikKKwkJCW9zLkV4aXQo MSkKKwkJfQorCQorCQllcnIgPSBwbGFuLlRleHRSZXBvcnQoKQorCQlpZiBlcnIgIT0gbmlsIHsK KwkJCWZtdC5QcmludGxuKCJSdW5uaW5nIGJlbmNobWFyayBydW46IiwgZXJyKQorCQkJb3MuRXhp dCgxKQorCQl9CiAJZGVmYXVsdDoKIAkJZm10LlByaW50bG4oIlVua25vd24gYXJndW1lbnQ6ICIs IG9zLkFyZ3NbMV0pCiAJfQpkaWZmIC0tZ2l0IGEveGVud29ya2VyLmdvIGIveGVud29ya2VyLmdv CmluZGV4IDYwMjNjNTAuLjFlZDVjZjAgMTAwNjQ0Ci0tLSBhL3hlbndvcmtlci5nbworKysgYi94 ZW53b3JrZXIuZ28KQEAgLTEwNSw3ICsxMDUsNyBAQCBmdW5jICh3ICpYZW5Xb3JrZXIpIEluaXQo cCBXb3JrZXJQYXJhbXMpIChlcnIgZXJyb3IpIHsKIAkJCXJldHVybgogCQl9CiAKLQkJZm10LlBy aW50ZigiICVzIGRvbWlkICVkXG4iLCB3LnZtbmFtZSwgdy5kb21pZCkKKwkJLy9mbXQuUHJpbnRm KCIgJXMgZG9taWQgJWRcbiIsIHcudm1uYW1lLCB3LmRvbWlkKQogCX0KIAkKIAkvLyBTZXQgeGVu c3RvcmUgY29uZmlnCkBAIC0xMzMsNyArMTMzLDcgQEAgZnVuYyAodyAqWGVuV29ya2VyKSBJbml0 KHAgV29ya2VyUGFyYW1zKSAoZXJyIGVycm9yKSB7CiAJCS8vZm10LlByaW50ZigianNvbjpcbiVz XG4iLCBzdHJpbmcocmNmZ0J5dGVzKSkKIAkJcmNmZ1BhdGggOj0gZm10LlNwcmludGYoIi9sb2Nh bC9kb21haW4vJWQvcnVtcHJ1bi9jZmciLCB3LmRvbWlkKQogCi0JCWZtdC5QcmludGYoIldyaXRp bmcgdG8gJXMsIGpzb24gY29uZmlnICVzXG4iLCByY2ZnUGF0aCwgcmNmZ0J5dGVzKQorCQkvL2Zt dC5QcmludGYoIldyaXRpbmcgdG8gJXMsIGpzb24gY29uZmlnICVzXG4iLCByY2ZnUGF0aCwgcmNm Z0J5dGVzKQogCQkKIAkJYXJncyA6PSBbXXN0cmluZ3sieGVuc3RvcmUtd3JpdGUiLCByY2ZnUGF0 aCwgc3RyaW5nKHJjZmdCeXRlcyl9CiAJCWlmIG1vY2sgewotLSAKMi43LjQKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK