From mboxrd@z Thu Jan 1 00:00:00 1970 From: ethan gao Subject: [PATCH] Add Dmesg Triage Feature: further triage i-g-t kmsg log to reduce result noise resulted from piglit dmesg defect Date: Thu, 19 Mar 2015 10:36:51 +0800 Message-ID: <1426732611-24404-1-git-send-email-ethan.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id E4CC66E930 for ; Wed, 18 Mar 2015 19:40:21 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org dGVzdHMvaWd0LnB5OiBhZGQgaWd0IGVudiB0byBlbmFibGUgb3IgZGlzYWJsZSBkbWVzZyB0cmlh Z2UKZnJhbWV3b3JrL3Rlc3QvYmFzZS5weTogdHJpZ2dlciBkbWVzZyB0cmlhZ2UgZGVwZW5kaW5n IG9uIGRtZXNnIGxvZyBvY2N1cnJlbmNlCmZyYW1ld29yay9kbWVzZy5weTogZW1wbG95IGRtZXNn IHRyaWFnZSBzaW1wbHkgZm9yIExpbnV4IGRtZXNnCmRtZXNnX3RyaWFnZS8qOiBkZWFsIHdpdGgg a21zZyBsb2cgd2l0aCBwcmUtZGVmaW5lZCBkbWVzZyBvb3BzIHBhdHRlcm4KCkluIGdlbmVyYWws IGlmIGRtZXNnIHRyaWFnZSBpcyBlbmFibGVkIGFuZCB0aGVyZSBpcyBuZXcgZG1lc2cgYWxvbmcg d2l0aCBpLWctdCB0ZXN0Y2FzZXMKcnVubmluZywgdGhlIG5ldyBkbWVzZyB3aWxsIGJlIGNhcHR1 cmVkIGFuZCB3b3JrZWQgb3V0IGEgdGFnIGFuZCBoZWFkIHRvIHJvbGxiYWNrIHRoZQpkZXRhaWwg d2hlbiBuZWNlc3NhcnksIGluIGFkZGl0aW9uLCBvbiB0aGUgYmFzaXMgb2YgZGlmZmVyZW50IGRt ZXNnIHRhZyBvciBoZWFkLCB0aGUgZmluYWwKcmVzdWx0IG5vaXNlIG9mIGEgdGVzdGNhc2UgY2Fu IGJlIHJlZHVjZWQgd2l0aCBkZWZpbmVkIHJ1bGVzIG9yIHN0cmF0ZWd5LgoKU2lnbmVkLW9mZi1i eTogZXRoYW4gZ2FvIDxldGhhbi5nYW9AaW50ZWwuY29tPgotLS0KIGRtZXNnX3RyaWFnZS9kZWJ1 Zy5zaCAgICAgICAgICAgICB8ICA2NyArKysrKysrKysrKysrKwogZG1lc2dfdHJpYWdlL2RtZXNn LnJiICAgICAgICAgICAgIHwgMTE3ICsrKysrKysrKysrKysrKysrKysrKysrKwogZG1lc2dfdHJp YWdlL2ttc2dfdHJpYWdlICAgICAgICAgIHwgMTgyICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiBkbWVzZ190cmlhZ2UvbGliZG1lc2cuc2ggICAgICAgICAgfCAxNTYgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRtZXNnX3RyaWFnZS9vb3BzLWNvbnRleHQt cGF0dGVybiB8ICAzNyArKysrKysrKwogZG1lc2dfdHJpYWdlL29vcHMtcGF0dGVybiAgICAgICAg IHwgIDU5ICsrKysrKysrKysrKwogZnJhbWV3b3JrL2RtZXNnLnB5ICAgICAgICAgICAgICAgIHwg IDYwICsrKysrKysrKysrKysKIGZyYW1ld29yay90ZXN0L2Jhc2UucHkgICAgICAgICAgICB8ICAg NCArCiB0ZXN0cy9pZ3QucHkgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKysKIDkgZmlsZXMg Y2hhbmdlZCwgNjg5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkbWVzZ190cmlh Z2UvZGVidWcuc2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkbWVzZ190cmlhZ2UvZG1lc2cucmIKIGNy ZWF0ZSBtb2RlIDEwMDc1NSBkbWVzZ190cmlhZ2Uva21zZ190cmlhZ2UKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkbWVzZ190cmlhZ2UvbGliZG1lc2cuc2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkbWVzZ190 cmlhZ2Uvb29wcy1jb250ZXh0LXBhdHRlcm4KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkbWVzZ190cmlh Z2Uvb29wcy1wYXR0ZXJuCgpkaWZmIC0tZ2l0IGEvZG1lc2dfdHJpYWdlL2RlYnVnLnNoIGIvZG1l c2dfdHJpYWdlL2RlYnVnLnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVj ODI4MGUKLS0tIC9kZXYvbnVsbAorKysgYi9kbWVzZ190cmlhZ2UvZGVidWcuc2gKQEAgLTAsMCAr MSw2NyBAQAorIyEvYmluL2Jhc2gKKworIyBDb3B5cmlnaHQgKGMpIDIwMTUgSW50ZWwgQ29ycG9y YXRpb24KKworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisjIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisj IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs aW1pdGF0aW9uIHRoZSByaWdodHMKKyMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorIyBjb3BpZXMgb2YgdGhl IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMK KyMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorIyBJTVBMSUVE LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSwKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ TkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisjIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyMgTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcgRlJPTSwKKyMgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKyMgU09GVFdBUkUuCisKK1tb ICIkQkFTSFBJRCIgXV0gfHwgZWNobyAiPT09PT09PSBSdW4gbWUgd2l0aCBiYXNoID09PT09PT0i CisKK2R1bXBfc2hlbGxfdmFycygpCit7CisJKAorCQlzZXQgLW8gcG9zaXgKKwkJbG9jYWwgYnJh bmNoX2NvbW1pdF9maWxlcz0oKQorCQlsb2NhbCBzcGFyc2VfbGluZXM9KCkKKwkJbG9jYWwgcmVt b3RlX3VybD0oKQorCQlzZXQgPiYyCisJKQorfQorCitkdW1wX2NhbGxfc3RhY2soKQoreworCWxv Y2FsIHN0YWNrX2RlcHRoPSR7I0ZVTkNOQU1FW0BdfQorCWxvY2FsIGkKKwlmb3IgKChpID0gMDsg aSA8ICQoKHN0YWNrX2RlcHRoLTEpKTsgaSsrKSk7IGRvCisJCWVjaG8gIiAgJHtCQVNIX1NPVVJD RVtpKzFdfToke0JBU0hfTElORU5PW2ldfTogJHtGVU5DTkFNRVtpKzFdfSIgPiYyCisJZG9uZQor fQorCisjIG5yX3N0YWNrX2R1bXBzPTAKK2R1bXBfc3RhY2soKQoreworCSMgZWNobyAiU3RhY2sg ZHVtcDogJEJBU0hfQ09NTUFORCIKKwlkdW1wX2NhbGxfc3RhY2sKKwllY2hvCisJZHVtcF9zaGVs bF92YXJzCit9CisKK25vdGljZSgpCit7CisJbG9jYWwgdGltZV9zdHI9IiQoZGF0ZSArJyVGICVI OiVNOiVTJykgIgorCWVjaG8gLWUgJHtjb2xvcltNQUdFTlRBXX0iJHt0aW1lX3N0cn0kKiIkcmVz ZXRfY29sb3IKK30KKworZGllKCkKK3sKKwlub3RpY2UgIiQqIgorCisJZHVtcF9zdGFjaworCWVt YWlsICIkKiIKKwlleGl0Cit9CmRpZmYgLS1naXQgYS9kbWVzZ190cmlhZ2UvZG1lc2cucmIgYi9k bWVzZ190cmlhZ2UvZG1lc2cucmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZDdhZWNhZQotLS0gL2Rldi9udWxsCisrKyBiL2RtZXNnX3RyaWFnZS9kbWVzZy5yYgpAQCAtMCww ICsxLDExNyBAQAorIyEvdXNyL2Jpbi9ydWJ5CisKKyMgQ29weXJpZ2h0IChjKSAyMDE1IEludGVs IENvcnBvcmF0aW9uCisKKyMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorIyBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8g ZGVhbAorIyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisjIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKyMgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3 YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6CisKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyMgYWxsIGNvcGllcyBvciBzdWJzdGFu dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyMg SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFksCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorIyBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisj IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HIEZST00sCisjIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCisjIFNPRlRXQVJF LgorIworIyBbRGVzY3JpcHRpb25dOiBGaW5kIG91dCBhbGwgY3Jhc2ggZG1lc2cgY2xhdXNlcyB3 aXRoIHRhaWxvcmVkIHBhdHRlcm4KKyMgW0F1dGhvcl06IGV0aGFuLmdhb0BpbnRlbC5jb20KKwor CisKK3JlcXVpcmUgImZpbGV1dGlscyIKK3JlcXVpcmUgInRlbXBmaWxlIgorCitkZWYgZml4dXBf ZG1lc2cobGluZSkKKwlsaW5lLmNob21wIQorCisJIyByZW1vdmUgYWJzb2x1dGUgcGF0aCBuYW1l cworCWxpbmUuc3ViISglcnsva2J1aWxkL3NyYy9bXi9dKy99LCAnJykKKworCWxpbmUuc3ViISgv XC4oaXNyYXxjb25zdHByb3B8cGFydClcLlswLTldK1wrMHgvLCAnKzB4JykKKworCSMgYnJlYWsg dXAgbWl4ZWQgbWVzc2FnZXMKKwljYXNlIGxpbmUKKwl3aGVuIC9ePFswLTldPi8KKwl3aGVuIC8o LispKFxbICpbMC05XXsxLDZ9XC5bMC05XXs2fVxdIC4qKS8KKwkJbGluZSA9ICQxICsgIlxuIiAr ICQyCisJZW5kCisKKwlyZXR1cm4gbGluZQorZW5kCisKK2RlZiBmaXh1cF9kbWVzZ19maWxlKGRt ZXNnX2ZpbGUpCisJdG1wZmlsZSA9IFRlbXBmaWxlLm5ldyAnLmZpeHVwLWRtZXNnLScsIEZpbGUu ZGlybmFtZShkbWVzZ19maWxlKQorCWRtZXNnX2xpbmVzID0gW10KKwlGaWxlLm9wZW4oZG1lc2df ZmlsZSwgJ3JiJykgZG8gfGZ8CisJCWYuZWFjaF9saW5lIHsgfGxpbmV8CisJCQlsaW5lID0gZml4 dXBfZG1lc2cobGluZSkKKwkJCWRtZXNnX2xpbmVzIDw8IGxpbmUKKwkJCXRtcGZpbGUucHV0cyBs aW5lCisJCX0KKwllbmQKKwl0bXBmaWxlLmNobW9kIDA2NjQKKwl0bXBmaWxlLmNsb3NlCisJRmls ZVV0aWxzLm12IHRtcGZpbGUucGF0aCwgZG1lc2dfZmlsZSwgOmZvcmNlID0+IHRydWUKKwlyZXR1 cm4gZG1lc2dfbGluZXMKK2VuZAorCitkZWYgZ3JlcF9jcmFzaF9oZWFkKGRtZXNnLCBncmVwX29w dGlvbnMgPSAnJykKKwlvb3BzID0gJXhbIGdyZXAgLWEgLWYgI3tETUVTR19ST09UfS9vb3BzLXBh dHRlcm4gI3tncmVwX29wdGlvbnN9ICN7ZG1lc2d9IHwKKwkJICAgZ3JlcCAtdiAtZSAnSU5GTzog Tk1JIGhhbmRsZXIgLiogdG9vayB0b28gbG9uZyB0byBydW4nIHwKKwkJICAgYXdrICd7bGluZSA9 ICQwOyBzdWIoL14oPFswLTldPik/XFtbIDAtOS5dK1xdIC8sICIiLCBsaW5lKTsgaWYgKCF4W2xp bmVdKyspIHByaW50O30nCisJXQorCXJldHVybiBvb3BzIHVubGVzcyBvb3BzLmVtcHR5PworCisK KwlpZiBzeXN0ZW0gImdyZXAgLXEgLUYgJ0VYVDQtZnMgKCcJI3tkbWVzZ30iCisJCW9vcHMgPSBg Z3JlcCAtYSAtZiAje0RNRVNHX1JPT1R9L2V4dDQtY3JpdC1wYXR0ZXJuCSN7Z3JlcF9vcHRpb25z fSAje2RtZXNnfWAKKwkJcmV0dXJuIG9vcHMgdW5sZXNzIG9vcHMuZW1wdHk/CisJZW5kCisKKwlp ZiBzeXN0ZW0gImdyZXAgLXEgLUYgJ1hGUyAoJwkje2RtZXNnfSIKKwkJb29wcyA9IGBncmVwIC1h IC1mICN7RE1FU0dfUk9PVH0veGZzLWFsZXJ0LXBhdHRlcm4JI3tncmVwX29wdGlvbnN9ICN7ZG1l c2d9YAorCQlyZXR1cm4gb29wcyB1bmxlc3Mgb29wcy5lbXB0eT8KKwllbmQKKworCWlmIHN5c3Rl bSAiZ3JlcCAtcSAtRiAnYnRyZnM6ICcJI3tkbWVzZ30iCisJCW9vcHMgPSBgZ3JlcCAtYSAtZiAj e0RNRVNHX1JPT1R9L2J0cmZzLWNyaXQtcGF0dGVybgkje2dyZXBfb3B0aW9uc30gI3tkbWVzZ31g CisJCXJldHVybiBvb3BzIHVubGVzcyBvb3BzLmVtcHR5PworCWVuZAorCisJcmV0dXJuICcnCitl bmQKKworZGVmIGdyZXBfcHJpbnRrX2Vycm9ycyhkbWVzZ19maWxlLCBkbWVzZ19saW5lcykKKwlv b3BzID0gYGdyZXAgLWEgLWYgI3tETUVTR19ST09UfS9vb3BzLXBhdHRlcm4gI3tkbWVzZ19maWxl fWAKKwlkbWVzZyA9IGRtZXNnX2xpbmVzLmpvaW4gIlxuIgorCW9vcHMgKz0gYGdyZXAgLWEgLWYg I3tETUVTR19ST09UfS9leHQ0LWNyaXQtcGF0dGVybgkje2RtZXNnX2ZpbGV9YCBpZiBkbWVzZy5p bmRleCAnRVhUNC1mcyAoJworCW9vcHMgKz0gYGdyZXAgLWEgLWYgI3tETUVTR19ST09UfS94ZnMt YWxlcnQtcGF0dGVybgkje2RtZXNnX2ZpbGV9YCBpZiBkbWVzZy5pbmRleCAnWEZTICgnCisJb29w cyArPSBgZ3JlcCAtYSAtZiAje0RNRVNHX1JPT1R9L2J0cmZzLWNyaXQtcGF0dGVybgkje2RtZXNn X2ZpbGV9YCBpZiBkbWVzZy5pbmRleCAnYnRyZnM6ICcKKwlyZXR1cm4gb29wcworZW5kCisKK2Rl ZiBjb21tb25fZXJyb3JfaWQobGluZSkKKwlsaW5lID0gbGluZS5jaG9tcAorCWxpbmUuZ3N1YiEg L1xiM1wuWzAtOV0rWy1hLXowLTkuXSsvLCAnIycJCQkjIGxpbnV4IHZlcnNpb246IDMuMTcuMC1u ZXh0LTIwMTQxMDA4LWcwOTk2NjllZAorCWxpbmUuZ3N1YiEgL1xiWzEtOV1bMC05XS1bQS1aXVth LXpdKy1bMC05XXs0fVxiLywgJyMnCQkjIERhdGU6IDI4LURlYy0yMDEzCisJbGluZS5nc3ViISAv XGIweFswLTlhLWZdK1xiLywgJyMnCQkJCSMgaGV4IG51bWJlcgorCWxpbmUuZ3N1YiEgL1xiW2Et ZjAtOV17NDB9XGIvLCAnIycJCQkJIyBTSEEtMQorCWxpbmUuZ3N1YiEgL1xiWzAtOV1bMC05Ll0q LywgJyMnCQkJCSMgbnVtYmVyCisJbGluZS5nc3ViISAvI3hcYi8sICcweCcKKwlsaW5lLmdzdWIh IC9bIFx0XS8sICcgJworCWxpbmUuZ3N1YiEgL1wgXCArLywgJyAnCisJbGluZS5nc3ViISAvKFte YS16QS1aMC05XSlcIC8sICdcMScKKwlsaW5lLmdzdWIhIC9cIChbXmEtekEtWl0pLywgJ1wxJwor CWxpbmUuZ3N1YiEgL15cIC8sICcnCisJbGluZS5nc3ViISAvXCAgXy8sICdfJworCWxpbmUuZ3N1 YiEgL1wgLywgJ18nCisJbGluZS5nc3ViISAvWy1fLiw7OiMhXFtcKF0rJC8sICcnCisJbGluZQor ZW5kCmRpZmYgLS1naXQgYS9kbWVzZ190cmlhZ2Uva21zZ190cmlhZ2UgYi9kbWVzZ190cmlhZ2Uv a21zZ190cmlhZ2UKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTgzMjg3MQot LS0gL2Rldi9udWxsCisrKyBiL2RtZXNnX3RyaWFnZS9rbXNnX3RyaWFnZQpAQCAtMCwwICsxLDE4 MiBAQAorIyEvdXNyL2Jpbi9ydWJ5CisKKyMgQ29weXJpZ2h0IChjKSAyMDE1IEludGVsIENvcnBv cmF0aW9uCisKKyMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorIyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAor IyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbiB0aGUgcmlnaHRzCisjIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKyMgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz CisjIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6CisKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyMgSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS SU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorIyBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisjIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HIEZST00sCisjIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCisjIFNPRlRXQVJFLgorIwor IyBbRGVzY3JpcHRpb25dOiBUcmlhZ2UgdmFyaW91cyBkbWVzZyB0cmFjZSBsb2cgZm9yIGFuIHVu aXF1ZSB0YWcgCisjIFtBdXRob3JdOiBldGhhbi5nYW9AaW50ZWwuY29tCisKKworRE1FU0dfUk9P VCA9IEVOVlsnRE1FU0dfVFJJQUdFX1JPT1QnXSB8fCBGaWxlLmRpcm5hbWUoRmlsZS5kaXJuYW1l KEZpbGUucmVhbHBhdGgoJDApKSkKK3JlcXVpcmUgIiN7RE1FU0dfUk9PVH0vZG1lc2cucmIiCisK K2lmIEVOVlsnS01TR19UUklBR0VfTE9HJ10KKwlLTVNHID0gRU5WWydLTVNHX1RSSUFHRV9MT0cn XQorCWttc2dfZmlsZSA9ICIje0tNU0d9Ly5kbWVzZyIKKwkKKwlpZiBGaWxlLmV4aXN0PyBrbXNn X2ZpbGUKKwkJZG1lc2dfZmlsZSA9IGttc2dfZmlsZQorCWVuZAorCitlbHNpZiBBUkdWWzBdCisJ ZG1lc2dfZmlsZSA9IEFSR1ZbMF0KK2Vsc2UKKwlleGl0CitlbmQKKworaWYgbm90IEZpbGUuZXhp c3Q/KGRtZXNnX2ZpbGUpIG9yIEZpbGUuc2l6ZShkbWVzZ19maWxlKSA9PSAwCisJcHV0cyAiTm8g cmVxdWlyZWQgZG1lc2cgZmlsZSBmb3VuZCAhIgorCWV4aXQKK2VuZAorCitkZWYgb29wc190b19i aXNlY3RfcGF0dGVybihsaW5lKQorCQl3b3JkcyA9IGxpbmUuc3BsaXQKKwkJcmV0dXJuICcnIGlm IHdvcmRzLmVtcHR5PworCQlwYXR0ZXJucyA9IFtdCisJCXdvcmRzLmVhY2ggeyB8d3wKKwkJCWNh c2UgdworCQkJd2hlbiAvKFthLXpBLVowLTlfXSspXC4oaXNyYXxjb25zdHByb3B8cGFydClcLlsw LTldK1wrMHgvCisJCQkJcGF0dGVybnMgPDwgJDEKKwkJCQlicmVhaworCQkJd2hlbiAvKFthLXpB LVowLTlfXStcKzB4KS8sIC8oW2EtekEtWjAtOV9dKz0pLworCQkJCXBhdHRlcm5zIDw8ICQxCisJ CQkJYnJlYWsKKwkJCXdoZW4gL1teYS16QS1aXC86Ll8tXS8KKwkJCQlwYXR0ZXJucyA8PCAnLion IGlmIHBhdHRlcm5zWy0xXSAhPSAnLionCisJCQllbHNlCisJCQkJcGF0dGVybnMgPDwgdworCQkJ ZW5kCisJCX0KKwkJcGF0dGVybnMuc2hpZnQgd2hpbGUgcGF0dGVybnNbMF0gPT0gJy4qJworCQlw YXR0ZXJucy5wb3AgICBpZiBwYXR0ZXJuc1stMV0gPT0gJy4qJworCQlwYXR0ZXJucy5qb2luKCcg JykKK2VuZAorCitlcnJvcl9pZHMgPSB7fQoraWYgJFBST0dSQU1fTkFNRSA9fiAva21zZ190cmlh Z2UvCisJb3V0cHV0ID0gZ3JlcF9jcmFzaF9oZWFkIGRtZXNnX2ZpbGUsICctbycKK2VuZAorZXhp dCBpZiBvdXRwdXQuZW1wdHk/CisKK291dHB1dC5lYWNoX2xpbmUgeyB8bGluZXwKKwlsaW5lLmNo b21wIQorCisJbmV4dCBpZiBsaW5lID1+IC9JTkZPOiBTdGFsbCBlbmRlZCBiZWZvcmUgc3RhdGUg ZHVtcCBzdGFydC8KKwluZXh0IGlmIGxpbmUgPX4gL0lORk86IE5NSSBoYW5kbGVyIC4qIHRvb2sg dG9vIGxvbmcgdG8gcnVuOi8KKwluZXh0IGlmIGxpbmUgPX4gL0tpbGxlZCBwcm9jZXNzIFxkKyBc KC8JCQkJCSMgZHVwbGljYXRlZCB3aXRoICJPdXQgb2YgbWVtb3J5OiBLaWxsIHByb2Nlc3MgIgor CisJIyBwcmludF9oZXhfZHVtcAorCW5leHQgaWYgbGluZSA9fiAvKFxzWzAtOWEtZl17Mn0pezE2 fS8KKwluZXh0IGlmIGxpbmUgPX4gLyhcc1swLTlhLWZdezR9KXs4fS8KKwluZXh0IGlmIGxpbmUg PX4gLyhcc1swLTlhLWZdezh9KXs0fS8KKworCW5leHQgaWYgbGluZSA9fiAvW15cdFxuXDBbOnBy aW50Ol1dLworCWxpbmUudHIhICJcMCIsICcnCisKKwljYXNlIGxpbmUKKwl3aGVuIC8oSU5GTzog cmN1W19hLXpdKiBzZWxmLWRldGVjdGVkIHN0YWxsIG9uIENQVSkvLAorCSAgICAgLyhJTkZPOiBy Y3VbX2Etel0qIGRldGVjdGVkIHN0YWxscyBvbiBDUFVzXC90YXNrczopLworCQlsaW5lID0gJDEK KwkJYnVnX3RvX2Jpc2VjdCA9ICQxCisJd2hlbiAvKEJVRzogdW5hYmxlIHRvIGhhbmRsZSBrZXJu ZWwpLywKKwkgICAgIC8oQlVHOiB1bmFibGUgdG8gaGFuZGxlIGtlcm5lbCkgTlVMTCBwb2ludGVy IGRlcmVmZXJlbmNlLywKKwkgICAgIC8oQlVHOiB1bmFibGUgdG8gaGFuZGxlIGtlcm5lbCkgcGFn aW5nIHJlcXVlc3QvCisJCWxpbmUgPSAkMQorCQlidWdfdG9fYmlzZWN0ID0gJDEKKwl3aGVuIC8o QlVHOiBzY2hlZHVsaW5nIHdoaWxlIGF0b21pYzopLywKKwkgICAgIC8oQlVHOiBCYWQgcGFnZSBt YXAgaW4gcHJvY2VzcykvLAorCSAgICAgLyhCVUc6IEJhZCBwYWdlIHN0YXRlIGluIHByb2Nlc3Mp LywKKwkgICAgIC8oQlVHOiBzb2Z0IGxvY2t1cCAtIENQVSNcZCsgc3R1Y2sgZm9yIFxkK3MhKS8s CisJICAgICAvKEJVRzogc3BpbmxvY2sgLiogb24gQ1BVI1xkKykvCisJCWxpbmUgPSAkMQorCQli dWdfdG9fYmlzZWN0ID0gJDEKKwl3aGVuIC8oQlVHOiApLiogKHN0aWxsIGhhcyBsb2NrcyBoZWxk KS8sCisJICAgICAvKElORk86IHRhc2sgKS4qIChibG9ja2VkIGZvciBtb3JlIHRoYW4gXGQrIHNl Y29uZHMpLworCQlsaW5lID0gJDEgKyAkMgorCQlidWdfdG9fYmlzZWN0ID0gJDIKKwl3aGVuIC9X QVJOSU5HOi4qIGF0IC4qIChbYS16QS1aLjAtOV9dK1wrMHgpLworCQlidWdfdG9fYmlzZWN0ID0g J1dBUk5JTkc6LiogYXQgLiogJyArICQxLnN1YigvXC4oaXNyYXxjb25zdHByb3B8cGFydClcLlsw LTldK1wrMHgvLCAnJykKKwkJbGluZSA9fiAvKGF0IC4qKS8KKwkJbGluZSA9ICJXQVJOSU5HOiAi ICsgJDEKKwl3aGVuIC8oS2VybmVsIHBhbmljIC0gbm90IHN5bmNpbmc6IE5vIHdvcmtpbmcgaW5p dCBmb3VuZC4pICBUcnkgcGFzc2luZyBpbml0PSBvcHRpb24gdG8ga2VybmVsLiAvLAorCSAgICAg LyhLZXJuZWwgcGFuaWMgLSBub3Qgc3luY2luZzogTm8gaW5pdCBmb3VuZC4pICBUcnkgcGFzc2lu ZyBpbml0PSBvcHRpb24gdG8ga2VybmVsLiAvCisJCWxpbmUgPSAkMQorCQlidWdfdG9fYmlzZWN0 ID0gbGluZQorCXdoZW4gLyhPdXQgb2YgbWVtb3J5OiBLaWxsIHByb2Nlc3MpIFxkKyBcKC8KKwkJ bGluZSA9ICQxCisJCWJ1Z190b19iaXNlY3QgPSAkMQorCXdoZW4gLyhXcml0ZXIgc3RhbGwgc3Rh dGUpIFxkKyBnXGQrIGNcZCsgZi8KKwkJbGluZSA9ICQxCisJCWJ1Z190b19iaXNlY3QgPSAkMQor CXdoZW4gLyh1c2VkIGdyZWF0ZXN0IHN0YWNrIGRlcHRoOikvCisJCWxpbmUgPSAkMQorCQlidWdf dG9fYmlzZWN0ID0gJDEKKwkjIHByaW50ayhLRVJOX0VSUiAiQlVHOiBEZW50cnkgJXB7aT0lbHgs bj0lcGR9IHN0aWxsIGluIHVzZSAoJWQpIFt1bm1vdW50IG9mICVzICVzXVxuIgorCXdoZW4gIC8o QlVHOiBEZW50cnkgKS4qIChzdGlsbCBpbiB1c2UpIC4qIFxbdW5tb3VudCBvZiAvCisJCWxpbmUg PSAkMSArICQyCisJCWJ1Z190b19iaXNlY3QgPSAkMSArICcuKiAnICsgJDIKKwl3aGVuIC8oW2Et ekEtWl0rWyBhLXpBLVpdKjogW2EtZjAtOV17NH0pIFxbI1swLTldK1xdIFtBLVpfIF0qJC8KKwkJ bGluZSA9ICQxCisJCWJ1Z190b19iaXNlY3QgPSAkMQorCXdoZW4gL15iYWNrdHJhY2U6KFthLXpB LVowLTlfXSspLworCQlidWdfdG9fYmlzZWN0ID0gJDEgKyAnKzB4JworCWVsc2UKKwkJYnVnX3Rv X2Jpc2VjdCA9IG9vcHNfdG9fYmlzZWN0X3BhdHRlcm4gbGluZQorCWVuZAorCisJZXJyb3JfaWQg PSBsaW5lLnN1YigvXlteYS16QS1aXSsvLCAiIikKKworCWVycm9yX2lkLmdzdWIhIC9cIFxdJC8s ICIiCQkJCQkjIFsgSU5GTzogcG9zc2libGUgcmVjdXJzaXZlIGxvY2tpbmcgZGV0ZWN0ZWQgXQor CSNlcnJvcl9pZC5nc3ViISAvXC9jXC9rZXJuZWwtdGVzdHNcL3NyY1wvW15cL10rXC8vLCAnJwor CSNlcnJvcl9pZC5nc3ViISAvXC9jXC8od2ZnfHlsaXUpXC9bXlwvXStcLy8sICcnCisJI2Vycm9y X2lkLmdzdWIhIC9cL2xrcFwvW15cL10rXC9saW51eFswLTldKlwvLywgJycKKwkjZXJyb3JfaWQu Z3N1YiEgL1wva2VybmVsLXRlc3RzXC9saW51eFswLTldKlwvLywgJycKKwllcnJvcl9pZC5nc3Vi ISAvXC4oaXNyYXxjb25zdHByb3B8cGFydClcLlswLTldKy8sICcnCisKKwllcnJvcl9pZC5nc3Vi ISAvXGJbMC05YS1mXXs4fVxiLywgIiMiCisJZXJyb3JfaWQuZ3N1YiEgL1xiWzAtOWEtZl17MTZ9 XGIvLCAiIyIKKwllcnJvcl9pZC5nc3ViISAvKD0pWzAtOWEtZl0rXGIvLCAnXDEjJworCWVycm9y X2lkLmdzdWIhIC9bK1wvXTB4WzAtOWEtZl0rXGIvLCAnJworCWVycm9yX2lkLmdzdWIhIC9bK1wv XVswLTlhLWZdK1xiLywgJycKKworCSNlcnJvcl9pZCA9IGNvbW1vbl9lcnJvcl9pZChlcnJvcl9p ZCkgKyAnOiAxJworCWVycm9yX2lkID0gY29tbW9uX2Vycm9yX2lkKGVycm9yX2lkKQorCisJZXJy b3JfaWQuZ3N1YiEgLyhbYS16XTopWzAtOV0rXGIvLCAnXDEnCQkJCSMgV0FSTklORzogYXQgYXJj aC94ODYva2VybmVsL2NwdS9wZXJmX2V2ZW50LmM6MTA3NyB4ODZfcG11X3N0YXJ0KzB4YWEvMHgx MTAoKQorCWVycm9yX2lkLmdzdWIhIC8jOlxbPCM+XF1cWzwjPlxdLywgJycJCQkJIyBSSVA6IDAw MTA6WzxmZmZmZmZmZjkxOTA2ZDhkPl0gIFs8ZmZmZmZmZmY5MTkwNmQ4ZD5dIHZhbGlkYXRlX2No YWluKzB4ZWQvMHhlODAKKworCW5leHQgaWYgZXJyb3JfaWQuc2l6ZSA8PSAzCisKKwllcnJvcl9p ZHNbZXJyb3JfaWRdIHx8PSBidWdfdG9fYmlzZWN0Cit9CisKK2V4aXQgaWYgZXJyb3JfaWRzLmVt cHR5PworCitwdXRzICJGb3VuZCBuZWNlc3Nhcnkga21zZyBlcnJvciBpZHMiIGlmICRQUk9HUkFN X05BTUUgPX4gL2ttc2dfdHJpYWdlLworCitLTVNHX0VSUk9SX0lEID0gRU5WWydLTVNHX1RSSUFH RV9MT0cnXSB8fCAiI3tETUVTR19ST09UfSIKKyMgVGhpcyBzdG9yZXMgZWFjaCBlcnJvciBpZAor ZiA9IEZpbGUubmV3KEZpbGUuam9pbigiI3tLTVNHX0VSUk9SX0lEfSIsICIuZG1lc2dfZXJyb3Jf aWRzIiksICJ3IikKK2Vycm9yX2lkcy5lYWNoIHsgfGVycm9yX2lkLCBoZWFkfAorCWYud3JpdGUo IiN7ZXJyb3JfaWR9QCN7aGVhZH1cbiIpCit9CisKK2YuY2xvc2UKKwpkaWZmIC0tZ2l0IGEvZG1l c2dfdHJpYWdlL2xpYmRtZXNnLnNoIGIvZG1lc2dfdHJpYWdlL2xpYmRtZXNnLnNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNTNmY2YKLS0tIC9kZXYvbnVsbAorKysgYi9k bWVzZ190cmlhZ2UvbGliZG1lc2cuc2gKQEAgLTAsMCArMSwxNTYgQEAKKyMgIS9iaW4vYmFzaAor CisjIENvcHlyaWdodCAoYykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgorCisjIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhIGNvcHkKKyMgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKyMgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwor IyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp Y2Vuc2UsIGFuZC9vciBzZWxsCisjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisjIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk IGluCisjIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl LgorCisjIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisjIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorIyBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT SEFMTCBUSEUKKyMgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorIyBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS IERFQUxJTkdTIElOIFRIRQorIyBTT0ZUV0FSRS4KKyMKKyMgW0Rlc2NyaXB0aW9uXTogRGVmaW5l ZCB1dGlsaXRpZXMgdG8gY2hlY2sgb3V0IHNwZWNpZmllZCBkbWVzZyBzZWdtZW50IAorIyBbQXV0 aG9yXTogZXRoYW4uZ2FvQGludGVsLmNvbQorCisKK2lmIFtbIC16ICIke0RNRVNHX1JPT1R9IiBd XTsgdGhlbgorCURNRVNHX1JPT1Q9YHB3ZGAKK2ZpCisKK3NvdXJjZSAkRE1FU0dfUk9PVC9kZWJ1 Zy5zaAorCitFUlI9MQorCisjIGRlc2M6IGNhcHR1cmUgYWxsIHRoZSBoZWFkcyBvZiB2YXJpb3Vz IGttc2cgZXhjZXB0aW9uYWwgbG9nCisjIHBhcmFtOgorIyAgIFtkbWVzZ106IHRoZSBkbWVzZyBs b2cgd2hpY2ggeW91J2xsIGVtcGxveQorZ3JlcF9jcmFzaF9oZWFkKCkKK3sKKwlbWyAhICIkKiIg fHwgIiQqIiA9fiBeLVthLXpdKyQgXV0gJiYgeworCQllY2hvICJpbnB1dCBvZiBncmVwX2NyYXNo X2hlYWQgaXMgZW1wdHkiID4mMgorCQlkdW1wX3N0YWNrCisJCXJldHVybiAxCisJfQorCWdyZXAg LWEgLWYgJERNRVNHX1JPT1Qvb29wcy1wYXR0ZXJuICIkQCIgJiYgcmV0dXJuCisKKwlncmVwIC1C OCAnQ2FsbCBUcmFjZTokJyAiJEAiIHwKKwlncmVwIC1CMSAtZSAnUGlkOiBbMC05XSssIGNvbW06 ICcgXAorCQkgLWUgJ0NQVTogWzAtOV0rIFBJRDogWzAtOV0rIENvbW06ICcgfAorCWdyZXAgLXYg LWUgJyBbY0Ndb21tOiAnIFwKKwkJLWUgJ14tLSQnIFwKKwkJLWUgJ14kJyBcCisJCS1lICdeXFtb IDAtOS5dKlxdICQnIFwKKwkJLWUgJ1RoZSBmb2xsb3dpbmcgdHJhY2UgaXMgYSBrZXJuZWwgc2Vs ZiB0ZXN0IGFuZCBub3QgYSBidWcnCit9CisKKyMgZGVzYzogZmlsdGVyIHRoZSBrbXNnIGV4Y2Vw dGlvbmFsIGxvZyBtZXNzYWdlcworIyBwYXJhbToKKyMgICBbZG1lc2ddOiB0aGUgZG1lc2cgbG9n IHdoaWNoIHlvdSdsbCBlbmdhZ2UKK2dyZXBfY3Jhc2hfZG1lc2coKQoreworCVtbICIkQCIgXV0g fHwgeworCQllY2hvICJpbnB1dCBvZiBncmVwX2NyYXNoX2RtZXNnIGlzIGVtcHR5IiA+JjIKKwkJ ZHVtcF9zdGFjaworCQlyZXR1cm4gMQorCX0KKworCWdyZXAgLWEgLWYgJERNRVNHX1JPT1Qvb29w cy1wYXR0ZXJuIFwKKwkJLWYgJERNRVNHX1JPT1Qvb29wcy1jb250ZXh0LXBhdHRlcm4gIiRAIgor fQorCisjIGRlc2M6IGZpbHRlciB0aGUgZmlyc3Qga21zZyBleGNlcHRpb25hbCBsb2cgCisjIHBh cmFtOgorIyAgIFtkbWVzZ106IHRoZSBkbWVzZyBzb3VyY2UgeW91J2xsIHVzZQorZmlyc3RfY3Jh c2hfZG1lc2coKQoreworCWdyZXBfY3Jhc2hfZG1lc2cgLUMzICIkQCIgfCBhd2sgJ0JFR0lOIHsg bnJfZmlyc3RfaGVhZD0wOyB9OworCQkJCQkvXi0tJC8geyBleGl0IH07CisJCQkJCS8tLS1cWyBl bmQgdHJhY2UgLipcXS0tLS8geyBwcmludDsgZ2V0bGluZTsgcHJpbnQ7IGV4aXQgfTsKKwkJCQkJ LyhrZXJuZWwgQlVHIGF0IHxLZXJuZWwgcGFuaWMgLXxcPEJVRzogfFdBUk5JTkc6IHxJTkZPOiAp LyB7IGlmIChucl9maXJzdF9oZWFkID4gTlIgKyAxKSBleGl0OyBucl9maXJzdF9oZWFkID0gTlI7 IH07CisJCQkJCXsgcHJpbnQgfTsKKwkJCQkJTlIgPiAyMDAgeyBleGl0IH07JworfQorCisjIGRl c2M6IHJldHJpZXZlIGRtZXNnIHRyYWNlIGluZm8gYmFzZWQgb24gZG1lc2cgdGFnCisjIHBhcmFt OgorIyAgIFt0YWddOiBhIGRtZXNnIHRhZyBvciBoZWFkCisjICAgW2RtZXNnXTogdGhlIGZpbGUg d2hpY2ggY29udGFpbnMgeW91ciBmdWxsIGRtZXNnIGxvZworaGVhZF90b19kbWVzZygpCit7CisJ W1sgJCMgLWVxIDIgXV0gfHwgeworCQllY2hvICJFUlJPUjppbnB1dCBvZiBoZWFkX3RvX2RtZXNn IGlzIGVtcHR5ICEiID4mMgorCQllY2hvICJVc2FnZTogaGVhZF90b19kbWVzZyA8ZG1lc2dfaGVh ZD4gPGRtZXNnX2xvZ19maWxlPiIKKwkJcmV0dXJuICRFUlIKKwl9CisJCisJZG1lc2dfaGVhZD0k MQorCWRtZXNnX2ZpbGU9JDIKKworCWF3ayAtdiBwYXR0ZXJuPSIke2RtZXNnX2hlYWR9IiAnCisJ QkVHSU4geyBucl9kbWVzZ190YXJnZXQgPSAwOyB9CisJeworCQlpZiAoICQwICF+IHBhdHRlcm4p eworCQkJbmV4dDsKKwkJfSAKKwkJZWxzZSB7IAorCQkJbnJfZG1lc2dfdGFyZ2V0ID0gRk5SOyBw cmludDsKKwkJfQorCisJCWRvCisJCXsKKwkJCWlmIChnZXRsaW5lID4gMCkgCisJCQkJcHJpbnQ7 IAorCQkJZWxzZQorCQkJCWJyZWFrOworCisJCQlpZiAoJDAgfiAvLS0tXFsgZW5kIHRyYWNlIC4q XF0vKXsKKwkJCQlicmVhazsKKwkJCX0KKwkJfSB3aGlsZSAoTlIgLSBucl9kbWVzZ190YXJnZXQg PCA2MCkKKwl9CQorCUVORCB7IAorCQlpZiAobnJfZG1lc2dfdGFyZ2V0ID4gMCkgeworCQkJcHJp bnQgIi0tLVtrZXJuZWwgbXNnIGVuZF0tLS0iOworCQl9CisJCWVsc2UgeworCQkJcHJpbnQgIk5v dCBGb3VuZCI7CisJCX0KKwl9JyAiJHtkbWVzZ19maWxlfSIKK30KKworCisjIGRlc2M6IHNvcnQg b3V0IHRoZSBjYWxsIHRyYWNlIGZ1bmNzIGZyb20gdGhlIGdpdmVuIGRtZXNnIGxvZworIyBwYXJh bToKKyMgICBbZG1lc2ddOiB0aGUgZG1lc2cgc291cmNlIHlvdSdsbCB1c2UsIGlmIGEgZmlsZSAK K0NBTExfVFJBQ0VfRlVOQ1M9J1thLXpBLVowLTkuX10rXCsweFswLTlhLWZdK1wvMHhbMC05YS1m XSsnCitjYWxsX3RyYWNlX2Z1bmNzKCkKK3sKKwlsb2NhbCBkbWVzZz0kMQorCWdyZXAgLUVvICIk Q0FMTF9UUkFDRV9GVU5DUyIgJDEgfCBjdXQgLWYxIC1kKyB8IHVuaXEKK30KKworIyBkZXNjOiBz b3J0IG91dCBmdW5jcyBmcm9tIHRoZSBmaXJzdCBjYWxsIHRyYWNlIHN0YWNrIG9mIGRtZXNnCisj IHBhcmFtOgorIyAgIFtkbWVzZ106IHRoZSBkbWVzZyBjYWxsIHRyYWNlIGxvZworZmlyc3RfY2Fs bF90cmFjZSgpCit7CisJbG9jYWwgZG1lc2c9JDEKKwlhd2sgJ0JFR0lOIHsgaW5fdHJhY2U9MDsg fTsKKwkJLyhDYWxsIFRyYWNlOnxzdGF0ZSB3YXMgcmVnaXN0ZXJlZCBhdDopLyB7IGluX3RyYWNl Kys7IG5yPTA7IG5leHQ7IH07CisJCS8nIiRDQUxMX1RSQUNFX0ZVTkNTIicveyBpZiAobWF0Y2go JDAsIC8+XF0gKD9ccyk/KF8pP1thLXpBLVpfXVthLXpBLVowLTkuX10rXCsweC8pKQorCQkJCQkJ eyBwcmludCBzdWJzdHIoJDAsIFJTVEFSVCszLCBSTEVOR1RILTYpOyBucisrOyB9OyBuZXh0OyB9 OworCQkvLyB7aWYgKGluX3RyYWNlID4gMCAmJiBuciA+IDEpIGV4aXQ7fTsnICRkbWVzZyB8CisJ CXNlZCAtciAtZSAncy9cLihpc3JhfGNvbnN0cHJvcHxwYXJ0KVwuWzAtOV0rLy9nJyBcCisJCQl8 IHVuaXEKK30KZGlmZiAtLWdpdCBhL2RtZXNnX3RyaWFnZS9vb3BzLWNvbnRleHQtcGF0dGVybiBi L2RtZXNnX3RyaWFnZS9vb3BzLWNvbnRleHQtcGF0dGVybgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5mN2RjMjA5Ci0tLSAvZGV2L251bGwKKysrIGIvZG1lc2dfdHJpYWdlL29v cHMtY29udGV4dC1wYXR0ZXJuCkBAIC0wLDAgKzEsMzcgQEAKK2ludm9rZWQgb29tLWtpbGxlcjoK K0lORk86IHBvc3NpYmxlIHJlY3Vyc2l2ZSBsb2NraW5nIGRldGVjdGVkCisgaXMgdHJ5aW5nIHRv IGFjcXVpcmUgbG9jazoKKyBzdGF0ZSB3YXMgcmVnaXN0ZXJlZCBhdDoKK1Bvc3NpYmxlIHVuc2Fm ZSBsb2NraW5nIHNjZW5hcmlvOgorICAgICAgIENQVTAkCisgICAgICAgLS0tLSQKKyAgbG9jaygu Kik7CitcKlwqXCogREVBRExPQ0sgXCpcKlwqCitNYXkgYmUgZHVlIHRvIG1pc3NpbmcgbG9jayBu ZXN0aW5nIG5vdGF0aW9uCisgIDxJbnRlcnJ1cHQ+CitidXQgdGFzayBpcyBhbHJlYWR5IGhvbGRp bmcgbG9jazoKK3doaWNoIGxvY2sgYWxyZWFkeSBkZXBlbmRzIG9uIHRoZSBuZXcgbG9jay4KK290 aGVyIGluZm8gdGhhdCBtaWdodCBoZWxwIHVzIGRlYnVnIHRoaXM6CitzdGFjayBiYWNrdHJhY2U6 CisgRUZMQUdTOiAKK1JCUDogCisga25sR1M6CisgQ1IzOiAKK1N0YWNrOgorQ29kZTogCitzZW5k aW5nIE5NSSB0byBhbGwgQ1BVczoKK01vZHVsZXMgbGlua2VkIGluOgorSGFyZHdhcmUgbmFtZTog CitDYWxsIFRyYWNlOgorXFs8W2EtZjAtOV1cKz5cXSBbYS16MC05Ll9dXCsrMHhbMC05YS1mXVwr LzB4WzAtOWEtZl1cKworXFs8W2EtZjAtOV1cKz5cXSA/IFthLXowLTkuX11cKysweFswLTlhLWZd XCsvMHhbMC05YS1mXVwrCitcKCBbMC05YS1mXVx7MTZcfVwpXHs3XH0KK3NsYWJfdW5yZWNsYWlt YWJsZToKK1N3YXAgY2FjaGUgc3RhdHM6CitwYWdlcyBSQU0KKyBsb2NrcyBoZWxkIGJ5IAorIGxv Y2sgaGVsZCBieSAKK1JDVSB1c2VkIGlsbGVnYWxseSBmcm9tIAorID09PT09PT09PT09PT09PT09 PT09PT09PT0kCitPYmplY3QgWzAtOWEtZl1cKzogWzAtOWEtZiBdXCsgIFwuXC5cLgorUmVkem9u ZSBbMC05YS1mXVwrOiBbMC05YS1mIF1cKyAKZGlmZiAtLWdpdCBhL2RtZXNnX3RyaWFnZS9vb3Bz LXBhdHRlcm4gYi9kbWVzZ190cmlhZ2Uvb29wcy1wYXR0ZXJuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjljZTQxNDgKLS0tIC9kZXYvbnVsbAorKysgYi9kbWVzZ190cmlhZ2Uv b29wcy1wYXR0ZXJuCkBAIC0wLDAgKzEsNTkgQEAKK1thLXpBLVogXVwrOiBbYS1mMC05XVx7NFx9 IFxbI1swLTldXCtcXSBbQS1aXyBdKiQKK2tlcm5lbCBCVUcgYXQgLioKK0tlcm5lbCBwYW5pYyAt IG5vdCBzeW5jaW5nOiAuKgorXkJVRzogLioKK1xbICpbMC05Ll1cK1xdIEJVRzogLioKK0JVRyAu KiAoLiopOiAuKgorT29wczogLioKK1dBUk5JTkc6IGF0IC4qCitXQVJOSU5HOiBDUFU6IFswLTld XCsgUElEOiBbMC05XVwrIGF0IC4qCiteSU5GTzogLipkZXRlY3RlZCBzdGFsbC4qCiteSU5GTzog LiogY3B1PS4qCiteSU5GTzogU2xhYiAweC4qCiteSU5GTzogT2JqZWN0IDB4LioKK15JTkZPOiAw eC4qLiBGaXJzdCBieXRlIDB4LioKK1xbICpbMC05Ll1cK1xdIElORk86IC4qCitcWyBJTkZPOiBb XmldLiogXF0KK1JDVSB1c2VkIGlsbGVnYWxseSBmcm9tIG9mZmxpbmUgQ1BVIQorUkNVIHVzZWQg aWxsZWdhbGx5IGZyb20gaWRsZSBDUFUhCitSQ1UgdXNlZCBpbGxlZ2FsbHkgZnJvbSBleHRlbmRl ZCBxdWllc2NlbnQgc3RhdGUhCitpbmNvbnNpc3RlbnQgey4qfSAtPiB7Lip9IHVzYWdlXC4KK2lu aXRjYWxsIC4qIHJldHVybmVkIHdpdGggLioKK1xbIEJVRzogW15iXS4qISBcXQorIGlzIHRyeWlu ZyB0byByZWxlYXNlIGxvY2sgKC4qKSBhdAorIGlzIHRyeWluZyB0byBjb250ZW5kIGxvY2sgKC4q KSBhdAorIGlzIHRyeWluZyB0byBsb2NrOiAuKgorIGJ1dCB0aGlzIHRhc2sgaXMgbm90IGhvbGRp bmc6IC4qCisgaXMgbGVhdmluZyB0aGUga2VybmVsIHdpdGggbG9ja3Mgc3RpbGwgaGVsZCEKKyBp cyBleGl0aW5nIHdpdGggbG9ja3Mgc3RpbGwgaGVsZCEKKyBpcyBmcmVlaW5nIG1lbW9yeSAuKiwg d2l0aCBhIGxvY2sgc3RpbGwgaGVsZCB0aGVyZSEKK2dlbmlycTogRmxhZ3MgbWlzbWF0Y2ggaXJx IC4qCitPdXQgb2YgbWVtb3J5OiBLaWxsIHByb2Nlc3MgCitwYWdlIGFsbG9jYXRpb24gZmFpbHVy ZTogb3JkZXI6WzAtOV1cKywgbW9kZToweC4qCitwYWdlYWxsb2M6IHNpbmdsZSBiaXQgZXJyb3IK K3BhZ2VhbGxvYzogbWVtb3J5IGNvcnJ1cHRpb24KK2F1ZGl0OiAoLiopIGVycm9yOiAuKgorZ2V0 YmxrKCk6IGludmFsaWQgYmxvY2sgc2l6ZSBbMC05XVwrIHJlcXVlc3RlZAorS0dEQjogcmUtZW50 ZXIgZXhjZXB0aW9uOiBBTEwgYnJlYWtwb2ludHMga2lsbGVkCitJUC1Db25maWc6IEF1dG8tY29u ZmlndXJhdGlvbiBvZiBuZXR3b3JrIGZhaWxlZAorRUlQIGlzIGF0IFthLXpBLVowLTkuX11cKysw eC4qLzB4LioKK1JJUDogWzAtOWEtZl1cezRcfTpcWy4qXF0gW2EtekEtWjAtOS5fXVwrKzB4Liov MHguKgorUEFOSUM6IGVhcmx5IGV4Y2VwdGlvbiAKK1BBTklDOiBkb3VibGUgZmF1bHQsIAorVW5r bm93biBpbnRlcnJ1cHQgb3IgZmF1bHQgYXQ6CitFbmQgb2YgdGVzdDogRkFJTFVSRQorRW5kIG9m IHRlc3Q6IFJDVV9IT1RQTFVHCitTMEJveDogbW9yZSB0aGFuIDUgbG9vcHMgaW4gczBib3hfaW50 ZXJydXB0CitJbml0cmFtZnMgdW5wYWNraW5nIGZhaWxlZDogCithc3NlcnRpb24gZmFpbGVkCitB c3NlcnRpb24gZmFpbGVkCithc3NlcnRpb24gZmFpbHVyZQorQXNzZXJ0aW9uIGZhaWx1cmUKKzMy LWJpdCByZWxvY2F0aW9uIG91dHNpZGUgb2Yga2VybmVsIQorNjQtYml0IHJlbG9jYXRpb24gb3V0 c2lkZSBvZiBrZXJuZWwhCitLZXJuZWwgaXMgbm90IGEgdmFsaWQgRUxGIGZpbGUKK0ZhaWxlZCB0 byBhbGxvY2F0ZSBzcGFjZSBmb3IgcGhkcnMKK0Rlc3RpbmF0aW9uIGFkZHJlc3MgaW5hcHByb3By aWF0ZWx5IGFsaWduZWQKK0Rlc3RpbmF0aW9uIGFkZHJlc3MgdG9vIGxhcmdlCitXcm9uZyBkZXN0 aW5hdGlvbiBhZGRyZXNzCisgLS0gU3lzdGVtIGhhbHRlZApkaWZmIC0tZ2l0IGEvZnJhbWV3b3Jr L2RtZXNnLnB5IGIvZnJhbWV3b3JrL2RtZXNnLnB5CmluZGV4IDFhNWY2MjkuLmQyM2JhMjMgMTAw NjQ0Ci0tLSBhL2ZyYW1ld29yay9kbWVzZy5weQorKysgYi9mcmFtZXdvcmsvZG1lc2cucHkKQEAg LTQxLDYgKzQxLDcgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB3YXJu aW5ncwogaW1wb3J0IGFiYworaW1wb3J0IG9zLCBlcnJubwogCiBfX2FsbF9fID0gWwogICAgICdC YXNlRG1lc2cnLApAQCAtMjAxLDYgKzIwMiw2NSBAQCBjbGFzcyBMaW51eERtZXNnKEJhc2VEbWVz Zyk6CiAgICAgICAgICMgQXR0ZW1wdCB0byBzdG9yZSB0aGUgbGFzdCBlbGVtZW50IG9mIGRtZXNn LCB1bmxlc3MgdGhlcmUgd2FzIG5vIGRtZXNnCiAgICAgICAgIHNlbGYuX2xhc3RfbWVzc2FnZSA9 IGRtZXNnWy0xXSBpZiBkbWVzZyBlbHNlIE5vbmUKIAorICAgIGRlZiBkbWVzZ190cmlhZ2Uoc2Vs ZiwgcmVzdWx0LCBjb25maWcpOgorICAgICAgICAiIiIgVHJpYWdlIGRtZXNnIGxvZyB0byBzb3J0 IG91dCBkaWZmZXJlbnQgdGFnIGFuZCBoZWFkCisKKyAgICAgICAgUmV0cmlldmUgdGhlIGNvbnRl bnRzIG9mIGRtZXNnIGxvZywgdGhlbiB3b3JrIG91dCBhIHRhZyBhbmQgYSBoZWFkLCB3aGljaAor ICAgICAgICBjYW4gYmUgdXNlZCB0byByb2xsYmFjayB0aGUgb3JpZ2luYWwgZG1lc2cgdHJhY2Ug ZGV0YWlscy4KKworICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Muc3Rh dChjb25maWdbIkRNRVNHX1RSSUFHRV9TUkMiXSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMg ZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRU5PRU5UIG9yIGUuZXJybm8gPT0g ZXJybm8uRU5PRElSOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIltEbWVzZyBU cmlhZ2UgRXJyXTogJXMiICUgc3RyKGUpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQK KworICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY29uZmlnWyJETUVTR19UUklBR0VfVE1Q Il0pOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGNvbmZp Z1siRE1FU0dfVFJJQUdFX1RNUCJdKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToK KyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJbRG1lc2cgVHJpYWdlIFdhcm5dOiAl cyIgJSBzdHIoZSkpCisgICAgICAgICAgICAgICAgY29uZmlnWyJETUVTR19UUklBR0VfVE1QIl0g PSAiL3RtcCIgCQorCisgICAgICAgIG9zLmVudmlyb25bIkRNRVNHX1RSSUFHRV9ST09UIl0gPSBj b25maWdbIkRNRVNHX1RSSUFHRV9TUkMiXQorICAgICAgICBvcy5lbnZpcm9uWyJLTVNHX1RSSUFH RV9MT0ciXSA9IGNvbmZpZ1siRE1FU0dfVFJJQUdFX1RNUCJdCisKKyAgICAgICAgZmQgPSBvcGVu KCIlcyIgJSBvcy5wYXRoLmpvaW4oY29uZmlnWyJETUVTR19UUklBR0VfVE1QIl0sICIuZG1lc2ci KSwgJ3diJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmQud3JpdGUocmVzdWx0WyJkbWVz ZyJdKQorICAgICAgICAgICAgZmQuZmx1c2goKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAg ICAgZmQuY2xvc2UoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmNoZGlyKGNvbmZp Z1siRE1FU0dfVFJJQUdFX1NSQyJdKQorICAgICAgICAgICAgcmV0ID0gc3VicHJvY2Vzcy5jYWxs KCJ3aGljaCBydWJ5ID4gL2Rldi9udWxsIiwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgICAgIGlmIHJl dCAhPSAwOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIltEbWVzZyBUcmlhZ2Ug RXJyXTogTm8gcnVieSBiaW5hcnkgZm91bmQsIHBsZWFzZSBpbnN0YWxsIGFuZCB0cnkgYWdhaW4g IVxuIikKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgICAgICBzdWJwcm9j ZXNzLmNoZWNrX2NhbGwoInJ1Ynkga21zZ190cmlhZ2UiLCBzaGVsbD1UcnVlKQorICAgICAgICBl eGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHN5 cy5zdGRlcnIud3JpdGUoIltEbWVzZyBUcmlhZ2UgRXJyXTogJXMiICUgc3RyKGUpKQorICAgICAg ICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cygiJXMi ICUgb3MucGF0aC5qb2luKGNvbmZpZ1siRE1FU0dfVFJJQUdFX1RNUCJdLCAiLmRtZXNnX2Vycm9y X2lkcyIpKToKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgICAgICBlcnJvcl9pZHMg PSBkaWN0KCkKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihjb25maWdbIkRNRVNHX1RS SUFHRV9UTVAiXSwgIi5kbWVzZ19lcnJvcl9pZHMiKSkgYXMgZjoKKyAgICAgICAgICAgIGZvciBl cnIgaW4gaXRlcihmLnJlYWRsaW5lLCAnJyk6CisgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNo KHInQCcsIGVycikgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCisgICAg ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgICAgICAgICBlcnJfaWQgPSBy ZS5zcGxpdChyJ0AnLCBlcnIpCisgICAgICAgICAgICAgICAgZXJyb3JfaWRzW2Vycl9pZFswXV0g PSBlcnJfaWRbMV0uc3RyaXAoIlxuIikucmVwbGFjZSgiMHgiLCAiKiIpCisgICAgICAgICAgICAg CisgICAgICAgICAgICBmLmNsb3NlKCkKKworICAgICAgICByZXN1bHRbImRtZXNnX3RyaWFnZV9p bmZvIl0gPSBlcnJvcl9pZHMKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgIAogCiBjbGFzcyBE dW1teURtZXNnKEJhc2VEbWVzZyk6CiAgICAgIiIiIEFuIGR1bW15IGNsYXNzIGZvciBkbWVzZyBv biBub24gdW5peC1saWtlIHN5c3RlbXMKZGlmZiAtLWdpdCBhL2ZyYW1ld29yay90ZXN0L2Jhc2Uu cHkgYi9mcmFtZXdvcmsvdGVzdC9iYXNlLnB5CmluZGV4IGVmYzIwY2IuLmE1N2M3ZWEgMTAwNjQ0 Ci0tLSBhL2ZyYW1ld29yay90ZXN0L2Jhc2UucHkKKysrIGIvZnJhbWV3b3JrL3Rlc3QvYmFzZS5w eQpAQCAtMTU3LDYgKzE1NywxMCBAQCBjbGFzcyBUZXN0KG9iamVjdCk6CiAgICAgICAgICAgICAg ICAgc2VsZi5ydW4oKQogICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0Wyd0aW1lJ10gPSB0aW1l LnRpbWUoKSAtIHRpbWVfc3RhcnQKICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IGRtZXNn LnVwZGF0ZV9yZXN1bHQoc2VsZi5yZXN1bHQpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5yZXN1 bHQuaGFzX2tleSgiZG1lc2ciKSBhbmQgc2VsZi5lbnZbIkVOQUJMRV9ETUVTR19UUklBR0UiXToK KyAgICAgICAgICAgICAgICAgICAgc2VsZi5lbnZbIkRNRVNHX1RSSUFHRV9TUkMiXSA9IG9zLnBh dGguam9pbihzZWxmLk9QVFMuZW52WyJQSUdMSVRfU09VUkNFX0RJUiJdLCBzZWxmLmVudlsiRE1F U0dfVFJJQUdFX1NSQyJdKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IGRtZXNn LmRtZXNnX3RyaWFnZShzZWxmLnJlc3VsdCwgc2VsZi5lbnYpCisKICAgICAgICAgICAgICMgVGhp cyBpcyBhIHJhcmUgY2FzZSB3aGVyZSBhIGJhcmUgZXhjZXB0aW9uIGlzIG9rYXksIHNpbmNlIHdl J3JlCiAgICAgICAgICAgICAjIHVzaW5nIGl0IHRvIGxvZyBleGNlcHRpb25zCiAgICAgICAgICAg ICBleGNlcHQ6CmRpZmYgLS1naXQgYS90ZXN0cy9pZ3QucHkgYi90ZXN0cy9pZ3QucHkKaW5kZXgg MjA0Nzc4MS4uNzA0ZWU3NSAxMDA2NDQKLS0tIGEvdGVzdHMvaWd0LnB5CisrKyBiL3Rlc3RzL2ln dC5weQpAQCAtMTA0LDYgKzEwNCwxMyBAQCBjbGFzcyBJR1RUZXN0KFRlc3QpOgogICAgICAgICAg ICAgW29zLnBhdGguam9pbihJR1RfVEVTVF9ST09ULCBiaW5hcnkpXSArIGFyZ3VtZW50cykKICAg ICAgICAgc2VsZi50aW1lb3V0ID0gNjAwCiAKKyAgICAgICAgIyBlbmFibGUgb3IgZGlzYWJsZSBk bWVzZyB0cmlhZ2UgZmVhdHVyZSBoZXJlCisgICAgICAgIHNlbGYuZW52WyJFTkFCTEVfRE1FU0df VFJJQUdFIl0gPSBUcnVlCisgICAgICAgIGlmIHNlbGYuZW52WyJFTkFCTEVfRE1FU0dfVFJJQUdF Il06CisgICAgICAgICAgICAjIEluaXRpYWxpemUgZG1lc2cgdHJpYWdlIHJlc291cmNlcworICAg ICAgICAgICAgc2VsZi5lbnZbIkRNRVNHX1RSSUFHRV9UTVAiXSA9ICIvdG1wL2RtZXNnIgorICAg ICAgICAgICAgc2VsZi5lbnZbIkRNRVNHX1RSSUFHRV9TUkMiXSA9ICJkbWVzZ190cmlhZ2UiCisK ICAgICBkZWYgaW50ZXJwcmV0X3Jlc3VsdChzZWxmKToKICAgICAgICAgaWYgc2VsZi5yZXN1bHRb J3JldHVybmNvZGUnXSA9PSAwOgogICAgICAgICAgICAgc2VsZi5yZXN1bHRbJ3Jlc3VsdCddID0g J3Bhc3MnCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK