public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: prabha.venkatachalam@alcatel.com To: gcc-gnats@gcc.gnu.org Cc: prabha_p_v@yahoo.com Subject: c++/5566: When we access the stream objects,it dumps core Date: Fri, 01 Feb 2002 02:06:00 -0000 [thread overview] Message-ID: <20020201095958.23685.qmail@sources.redhat.com> (raw) >Number: 5566 >Category: c++ >Synopsis: When we access the stream objects,it dumps core >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Feb 01 02:06:01 PST 2002 >Closed-Date: >Last-Modified: >Originator: Prabha Suresh >Release: Gcc 2.6 version >Organization: >Environment: Solaris 2.7 Machine hardware: sun4u OS version: 5.7 Processor type: sparc Hardware: SUNW,Ultra-1 >Description: We have a stream object,we allocate memory for it,but when we try to copy some strings to it,it dumps core >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="CPMonFMServer.C" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="CPMonFMServer.C" Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci8vIAovLyBOQU1FOiAgIENQTW9uRk1TZXJ2ZXIuQwovLyAKLy8g REVTQ1JJUFRJT046ICAKLy8gCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gCi8vIAovLz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09IAovLyAKLy8gUkVWICAgREFURSAgICAgICAgTkFNRSAgICAgICAgICAgICAgICAgICAg VVBEQVRFIAovLyAtLS0gICAtLS0tLS0tLSAgICAtLS0tLS0tLS0tLS0tLS0gICAgICAgICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCi8vIDAwMCAgIDAxLzI2Lzk5ICAgIGxkaW5oICAgICAg ICAgICAgICAgICAgIE9yaWdpbmFsIAovLyAgICAgICAxMC8yOC85OSAgICBsZGluaCAgICAgICAg ICAgICAgICAgICBGaXhlZCBDUiAxMzA5MTYKLy8gMDAxICAgMTAvMTcvMDEgICAgcHJhYmhhICAg ICAgICAgICAgICAgICAgUG9ydGVkIHRvIFNNNy4wCi8vCi8vPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0vLwov LyAgR2xvYmFsIGluY2x1ZGVzIAojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDx1bmlzdGQu aD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKI2lmZGVmIE1TUF9WRVJTSU9OIAogICAjaW5jbHVkZSA8 Zmlzb19hcGkuaD4KI2VuZGlmCgovLyAgTG9jYWwgaW5jbHVkZXMgCiNpbmNsdWRlICJDUE1vbkZN U2VydmVyLkgiCiNpbmNsdWRlICJBcE1udENvbW1vbi5IIgojaW5jbHVkZSAiQ1BNb25HVUlNYW5h Z2VyLkgiCiNpbmNsdWRlICJDUE1vbkZJU09SZXBvcnQuSCIKLy9pbnQgKmFycl89bmV3IGludCgw KTsKLypSZXNMb2FkUmVwb3J0Q1BVQmFzZSAgQ1BNb25GTVNlcnZlcjo6X2NwdUl0ZW07CiAgUmVz b3VyY2VMb2FkQmFzZUNQVSAgQ1BNb25GTVNlcnZlcjo6X2NwdXRtcEl0ZW07CiAgUmVzTG9hZFJl cG9ydEZpbGVTeXN0ZW1CYXNlIENQTW9uRk1TZXJ2ZXI6Ol9maWxlSXRlbTsKICBSZXNvdXJjZUxv YWRCYXNlRmlsZVN5c3RlbSBDUE1vbkZNU2VydmVyOjpfZmlsZXRtcEl0ZW07CiAgUmVzb3VyY2VM b2FkQmFzZURpc2sgQ1BNb25GTVNlcnZlcjo6X2Rpc2t0bXBJdGVtOwogIFJlc0xvYWRSZXBvcnRE aXNrQmFzZSBDUE1vbkZNU2VydmVyOjpfZGlza0l0ZW07CiAgTG9hZFNhbXBsZUFycmF5IENQTW9u Rk1TZXJ2ZXI6Ol9sb2Fkc2FtcDsqLwovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gCi8vIAovLyBOQU1FOiBD UE1vbkZNU2VydmVyCi8vIAovLyBERVNDUklQVElPTjogCi8vICAgICAgICAgICAgICAKLy89PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ICAKLy8gCi8vIEFSR1VNRU5UUzogCi8vIAovLyBSRVRVUk4gVkFMVUVTOiBO b25lLiAKLy8gCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCkNQTW9uRk1TZXJ2ZXI6OkNQTW9uRk1TZXJ2 ZXIoQ1BNb25HVUlNYW5hZ2VyICogR1VJTWFuYWdlciwgQ1BNb25GSVNPUmVwb3J0ICogRklTT3Jl cG9ydCk6dGhlR1VJTWFuYWdlcihHVUlNYW5hZ2VyKSx0aGVDUE1vbkZJU09SZXBvcnQoRklTT3Jl cG9ydCkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogIHJlc0xvYWRSZXBvcnQuZGlz a0xvYWQuVGhyZXNob2xkID0gLTE7ICAKICByZXNMb2FkUmVwb3J0LmRpc2tMb2FkLkNsZWFySVBS VGhyZXNob2xkID0gLTE7CiAgcmVzTG9hZFJlcG9ydC5kaXNrTG9hZC5FdmVudFR5cGUgPSAwIDsK ICByZXNMb2FkUmVwb3J0LmZpbGVTeXN0ZW1DYXBhY2l0eS5FdmVudFR5cGUgPSAwIDsgICAgCgoK ICByZXNMb2FkUmVwb3J0LmNwdUxvYWQuVGhyZXNob2xkID0gLTEgOwogIHJlc0xvYWRSZXBvcnQu Y3B1TG9hZC5DbGVhcklQUlRocmVzaG9sZCA9IC0xOwogIHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5J c3N1ZWRVbmV2ZW5Mb2FkSXByID0gMCA7CiAgcmVzTG9hZFJlcG9ydC5jcHVMb2FkLklzc3VlZENw dU92ZXJsb2FkSXByID0gMCA7CiAgcmVzTG9hZFJlcG9ydC5jcHVMb2FkLkV2ZW50VHlwZSA9IDAg OwoKCiAgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLlRocmVzaG9sZCA9IC0xOwogIHJlc0xvYWRS ZXBvcnQubWVtb3J5TG9hZC5DbGVhcklQUlRocmVzaG9sZCA9IC0xOwogIHJlc0xvYWRSZXBvcnQu bWVtb3J5TG9hZC5Jc3N1ZWRNZW1vcnlJbnN1ZmZJcHIgPSAwIDsKICByZXNMb2FkUmVwb3J0Lm1l bW9yeUxvYWQuRXZlbnRUeXBlID0gMCA7CgogIHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5U aHJlc2hvbGQgPSAtMTsKICByZXNMb2FkUmVwb3J0LnN3YXBTcGFjZUxvYWQuQ2xlYXJJUFJUaHJl c2hvbGQgPSAtMTsKICByZXNMb2FkUmVwb3J0LnN3YXBTcGFjZUxvYWQuSXNzdWVkU3dhcFNwYWNl SXByID0gMCA7CiAgcmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2FkLkV2ZW50VHlwZSA9IDAgOwoK CiAgcmVzTG9hZFJlcG9ydC5jcHVVc2FnZS5FdmVudFR5cGUgPSAwIDsKICByZXNMb2FkUmVwb3J0 LmNwdVVzYWdlLk90aGVyVXNhZ2UgPSAwLjAgOwogIHJlc0xvYWRSZXBvcnQuY3B1VXNhZ2UuSWRs ZVVzYWdlID0gMC4wIDsKCiAgcmVzTG9hZFJlcG9ydC5tZW1vcnlVc2FnZS5FdmVudFR5cGUgPSAw ICA7CiAgcmVzTG9hZFJlcG9ydC5tZW1vcnlVc2FnZS5PdGhlclVzYWdlID0gMC4wIDsKICByZXNM b2FkUmVwb3J0Lm1lbW9yeVVzYWdlLklkbGVVc2FnZSA9IDAuMCA7CiAgCiAgcmVzTG9hZFJlcG9y dC5taXNjU3lzdGVtU3RhdHVzLk51bWJlck9mQmxvY2tlZFByb2NzID0gLTEgOyAgICAKICByZXNM b2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuTnVtYmVyT2ZSdW5uYWJsZVByb2NzID0gLTEgOyAg ICAKICByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuTnVtYmVyT2ZDUFVzID0gLTEgOyAg ICAKICByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuTnVtYmVyT2ZCbG9ja2VkUHJvY3NU aHJlc2hvbGQgPSAtMSA7ICAgIAogIHJlc0xvYWRSZXBvcnQubWlzY1N5c3RlbVN0YXR1cy5OdW1i ZXJPZlJ1bm5hYmxlUHJvY3NUaHJlc2hvbGQgPSAtMSA7ICAgIAogIHJlc0xvYWRSZXBvcnQubWlz Y1N5c3RlbVN0YXR1cy5Jc3N1ZWRCbG9ja2VkSU9JcHIgPSAwIDsgICAgCiAgcmVzTG9hZFJlcG9y dC5taXNjU3lzdGVtU3RhdHVzLklzc3VlZENwdVBvd2VySW5zdWZmSXByID0gMCA7ICAgIAoKICBy ZXNMb2FkUmVwb3J0LnN3YXBTcGFjZUxvYWQuU2FtcGxlRGF0YS5zdGFydCA9IDA7CiAgcmVzTG9h ZFJlcG9ydC5zd2FwU3BhY2VMb2FkLlNhbXBsZURhdGEubmV4dCA9IDA7CiAgcmVzTG9hZFJlcG9y dC5zd2FwU3BhY2VMb2FkLlNhbXBsZURhdGEubWF4TGVuZ3RoID0gMDsKICByZXNMb2FkUmVwb3J0 LnN3YXBTcGFjZUxvYWQuU2FtcGxlRGF0YS5sZW5ndGggPSAwOwoKICByZXNMb2FkUmVwb3J0Lm1l bW9yeUxvYWQuU2FtcGxlRGF0YS5zdGFydCA9IDA7CiAgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2Fk LlNhbXBsZURhdGEubmV4dCA9IDA7CiAgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLlNhbXBsZURh dGEubWF4TGVuZ3RoID0gMDsKICByZXNMb2FkUmVwb3J0Lm1lbW9yeUxvYWQuU2FtcGxlRGF0YS5s ZW5ndGggPSAwOwoKLy9JbmNsdWRlZCBmb3IgRklYSU5HIHRoZSBQUlQgb2YgTUVNT1JZIExPQUQK CiAgIHJlc0xvYWRSZXBvcnQubWVtb3J5TG9hZC5JZC5JZENvZGUgPSAwOwoKfQoKLy89PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09IAovLyAKLy8gTkFNRTogfkNQTW9uRk1TZXJ2ZXIKLy8gCi8vIERFU0NSSVBUSU9O OiAKLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gQVJHVU1FTlRT OiAKLy8gCi8vIFJFVFVSTiBWQUxVRVM6IE5vbmUuIAovLyAKLy89PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAK Q1BNb25GTVNlcnZlcjo6fkNQTW9uRk1TZXJ2ZXIoKQp7Cgp9CgovLz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g Ci8vIAovLyBOQU1FOiAKLy8gCi8vIERFU0NSSVBUSU9OOiAKLy8gICAgICAgICAgICAgIAovLz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0gIAovLyAKLy8gQVJHVU1FTlRTOiAKLy8gCi8vIFJFVFVSTiBWQUxVRVM6 IE5vbmUuIAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCBDUE1vbkZNU2VydmVyOjpnZXRE aXNrTG9hZERhdGEob3N0cnN0cmVhbSAgJiBvdXRidWYpCnsKICBSZXNMb2FkUmVwb3J0RGlza0Jh c2UJICBhbkl0ZW07CiAgdW5zaWduZWQgc2hvcnQgICAgICAgICAgICAgICAgICBpaSwgbGVuZ3Ro OwoKICBsZW5ndGggPSByZXNMb2FkUmVwb3J0LmRpc2tMb2FkLmxpc3QuZW50cmllcygpOwogIG91 dGJ1ZiA8PCBsZW5ndGggPDwiICI7CiAgCiAgZm9yICggaWk9MDsgaWk8bGVuZ3RoOyBpaSsrKSAK ICAgIHsKICAgICAgYW5JdGVtID0gcmVzTG9hZFJlcG9ydC5kaXNrTG9hZC5saXN0LmdldEl0ZW0o aWkpOwogICAgICBvdXRidWYgPDwgYW5JdGVtLk5hbWUgPDwiICI8PCByZXNMb2FkUmVwb3J0LmRp c2tMb2FkLlRocmVzaG9sZCA8PCIgIjw8IGFuSXRlbS5DdXJyZW50TGV2ZWwgPDwiICI7CiAgICB9 IAp9CgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0gCi8vIAovLyBOQU1FOiAKLy8gCi8vIERFU0NSSVBUSU9O OiAKLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gQVJHVU1FTlRT OiAKLy8gCi8vIFJFVFVSTiBWQUxVRVM6IE5vbmUuIAovLyAKLy89PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAK dm9pZCBDUE1vbkZNU2VydmVyOjpnZXRGaWxlU3lzdGVtQ2FwYWNpdHlEYXRhKCBvc3Ryc3RyZWFt ICAmIG91dGJ1ZiApCnsKICBSZXNMb2FkUmVwb3J0RmlsZVN5c3RlbUJhc2UgYW5JdGVtOwogIHVu c2lnbmVkIHNob3J0ICAgICAgICAgICAgICAgIGlpLCBsZW5ndGg7CiAgaW50ICBkaXNrX251bSA9 IDA7CiAgY2hhciAgICAgICBidWZbNTEyXTsKICBjaGFyICAgICAgICp0b2tlblB0cjsKICAKICBs ZW5ndGggPSAgcmVzTG9hZFJlcG9ydC5maWxlU3lzdGVtQ2FwYWNpdHkubGlzdC5lbnRyaWVzKCk7 CiAgCiAgb3V0YnVmIDw8IGxlbmd0aCA8PCIgIjsKICBmb3IgKCBpaT0wOyBpaTxsZW5ndGg7IGlp KyspIAogICAgewogICAgICBhbkl0ZW0gPSByZXNMb2FkUmVwb3J0LmZpbGVTeXN0ZW1DYXBhY2l0 eS5saXN0LmdldEl0ZW0oaWkpOwogICAgICBvdXRidWYgPDwgYW5JdGVtLk5hbWUgPDwiICI8PCBh bkl0ZW0uVGhyZXNob2xkIDw8IiAiPDwgYW5JdGVtLkN1cnJlbnRMZXZlbCA8PCIgIjsKICAgICAg aWYgKCAocmVhZGxpbmsoYW5JdGVtLkRldmljZU5hbWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikgKSApID09 IDApIAoJewoJICBpZiAoICh0b2tlblB0ciA9IHN0cnRvayggYnVmLCAiRlRzY3NpQCIpKSB8fCAo dG9rZW5QdHIgPSBzdHJ0b2soIGJ1ZiwgInNkQCIpKSApCgkgICAgZGlza19udW0gPSBhdG9pKGJ1 Zik7Cgl9IAogICAgICBlbHNlIAoJewoJICBkaXNrX251bSA9IDA7Cgl9CiAgICAgIG91dGJ1ZiA8 PCBkaXNrX251bSA8PCIgIjsKICAgIH0KfQoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAovLyAKLy8gTkFN RTogCi8vIAovLyBERVNDUklQVElPTjogCi8vICAgICAgICAgICAgICAKLy89PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ICAKLy8gCi8vIEFSR1VNRU5UUzogCi8vIAovLyBSRVRVUk4gVkFMVUVTOiBOb25lLiAKLy8g Ci8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6Z2V0Q1BVTG9hZERhdGEo b3N0cnN0cmVhbSAgJiBvdXRidWYpCnsKICBSZXNMb2FkUmVwb3J0Q1BVQmFzZSBhbkl0ZW07CiAg dW5zaWduZWQgc2hvcnQgICAgICAgICAgIGlpLGxlbmd0aDsKICAKICBsZW5ndGggPSByZXNMb2Fk UmVwb3J0LmNwdUxvYWQubGlzdC5lbnRyaWVzKCk7CiAgb3V0YnVmIDw8IGxlbmd0aCA8PCIgIjsK ICBmb3IgKCBpaT0wOyBpaTxsZW5ndGg7IGlpKyspIAogICAgewogICAgICBhbkl0ZW0gPSByZXNM b2FkUmVwb3J0LmNwdUxvYWQubGlzdC5nZXRJdGVtKGlpKTsKICAgICAgb3V0YnVmIDw8IGFuSXRl bS5OYW1lIDw8IiAiPDwgcmVzTG9hZFJlcG9ydC5jcHVMb2FkLlRocmVzaG9sZCA8PCIgIjw8IGFu SXRlbS5DdXJyZW50TGV2ZWwgPDwiICI7CiAgICB9IAp9CiAKLy89PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAov LyAKLy8gTkFNRTogCi8vIAovLyBERVNDUklQVElPTjogCi8vICAgICAgICAgICAgICAKLy89PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ICAKLy8gCi8vIEFSR1VNRU5UUzogCi8vIAovLyBSRVRVUk4gVkFMVUVTOiBO b25lLiAKLy8gCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6Z2V0TWVt b3J5TG9hZERhdGEob3N0cnN0cmVhbSAgJiBvdXRidWYgKQp7CiAgdW5zaWduZWQgc2hvcnQgbGVu Z3RoID0gMTsgICAvLyBvbmUgcmVjb3JkCiAgCiAgb3V0YnVmIDw8IGxlbmd0aCA8PCIgIjsKICBv dXRidWYgPDwgIm1lbW9yeV9sb2FkIiA8PCIgIjw8IHJlc0xvYWRSZXBvcnQubWVtb3J5TG9hZC5U aHJlc2hvbGQgPDwiICI8PAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc0xv YWRSZXBvcnQubWVtb3J5TG9hZC5DdXJyZW50TGV2ZWwgPDwiICI7Cn0KCgovLz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0gCi8vIAovLyBOQU1FOiAKLy8gCi8vIERFU0NSSVBUSU9OOiAKLy8gICAgICAgICAgICAg IAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gQVJHVU1FTlRTOiAKLy8gCi8vIFJFVFVSTiBW QUxVRVM6IE5vbmUuIAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCBDUE1vbkZNU2VydmVy OjpnZXRTd2FwU3BhY2VMb2FkRGF0YShvc3Ryc3RyZWFtICAmIG91dGJ1ZiApCnsKICB1bnNpZ25l ZCBzaG9ydCBsZW5ndGggPSAxOyAgLy8gb25lIHJlY29yZAogIAogIG91dGJ1ZiA8PCBsZW5ndGgg PDwiICI7CiAgb3V0YnVmIDw8ICJzd2FwX3NwYWNlX2xvYWQiIDw8IiAiPDwgcmVzTG9hZFJlcG9y dC5zd2FwU3BhY2VMb2FkLlRocmVzaG9sZCA8PCIgIjw8CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXNMb2FkUmVwb3J0LnN3YXBTcGFjZUxvYWQuQ3VycmVudExldmVs IDw8IiAiOwp9CgoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAovLyAKLy8gTkFNRTogCi8vIAovLyBERVND UklQVElPTjogCi8vICAgICAgICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIEFS R1VNRU5UUzogCi8vIAovLyBSRVRVUk4gVkFMVUVTOiBOb25lLiAKLy8gCi8vPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6Z2V0Q1BVVXNhZ2VEYXRhKG9zdHJzdHJlYW0gICYg b3V0YnVmICkKewogIFJlc0xvYWRSZXBvcnRVc2FnZUJhc2UgICBhbkl0ZW07CiAgdW5zaWduZWQg c2hvcnQgICAgICAgICAgICBpaSwgbGVuZ3RoOwogIAogIGxlbmd0aCA9IHJlc0xvYWRSZXBvcnQu Y3B1VXNhZ2UubGlzdC5lbnRyaWVzKCk7CiAgb3V0YnVmIDw8IGxlbmd0aCA8PCIgIjsKICBmb3Ig KCBpaT0wOyBpaTxsZW5ndGg7IGlpKyspCiAgICB7CiAJYW5JdGVtID0gcmVzTG9hZFJlcG9ydC5j cHVVc2FnZS5saXN0LmdldEl0ZW0oaWkpOwoJb3V0YnVmIDw8YW5JdGVtLlByb2Nlc3NOYW1lIDw8 IiAiPDwgaWkgKyAxIDw8IiAiPDwgKGZsb2F0KWFuSXRlbS5Vc2FnZSA8PCIgIjsKICAgIH0KICBv dXRidWYgPDwgKGZsb2F0KXJlc0xvYWRSZXBvcnQuY3B1VXNhZ2UuSWRsZVVzYWdlIDw8IiAiPDwg KGZsb2F0KXJlc0xvYWRSZXBvcnQuY3B1VXNhZ2UuT3RoZXJVc2FnZSA8PCIgIjsgCn0KCi8vPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IAovLyAKLy8gREVTQ1JJUFRJT046IAovLyAgICAg ICAgICAgICAgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBBUkdVTUVOVFM6IAovLyAKLy8g UkVUVVJOIFZBTFVFUzogTm9uZS4gCi8vIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAp2b2lkIENQTW9u Rk1TZXJ2ZXI6OmdldE1lbW9yeVVzYWdlRGF0YShvc3Ryc3RyZWFtICAmIG91dGJ1ZiApCnsKICBS ZXNMb2FkUmVwb3J0VXNhZ2VCYXNlCSBhbkl0ZW07CiAgdW5zaWduZWQgc2hvcnQgICAgICAgICAg ICAgICAgaWksIGxlbmd0aDsKICAKICBsZW5ndGggPSByZXNMb2FkUmVwb3J0Lm1lbW9yeVVzYWdl Lmxpc3QuZW50cmllcygpOwogIG91dGJ1ZiA8PCBsZW5ndGggPDwiICI7CiAgZm9yICggaWk9MDsg aWk8bGVuZ3RoOyBpaSsrKQogICAgewogICAgICBhbkl0ZW0gPSByZXNMb2FkUmVwb3J0Lm1lbW9y eVVzYWdlLmxpc3QuZ2V0SXRlbShpaSk7CiAgICAgIG91dGJ1ZiA8PGFuSXRlbS5Qcm9jZXNzTmFt ZSA8PCIgIjw8IGlpICsgMSA8PCIgIjw8IChmbG9hdClhbkl0ZW0uVXNhZ2UgPDwiICI7CiAgICB9 CiAgb3V0YnVmIDw8IChmbG9hdClyZXNMb2FkUmVwb3J0Lm1lbW9yeVVzYWdlLklkbGVVc2FnZSA8 PCIgIjw8IChmbG9hdClyZXNMb2FkUmVwb3J0Lm1lbW9yeVVzYWdlLk90aGVyVXNhZ2UgPDwiICI7 IAoKfQoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09IAovLyAKLy8gTkFNRTogCi8vIAovLyBERVNDUklQVElP TjogCi8vICAgICAgICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIEFSR1VNRU5U UzogCi8vIAovLyBSRVRVUk4gVkFMVUVTOiBOb25lLiAKLy8gCi8vPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAg CnZvaWQgQ1BNb25GTVNlcnZlcjo6Z2V0TWlzY1N5c3RlbVN0YXR1c0RhdGEob3N0cnN0cmVhbSAg JiBvdXRidWYgKQp7CiAgIHVuc2lnbmVkIHNob3J0ICAgIGxlbmd0aCA9IDE7CiAgIAogICBvdXRi dWYgPDwgbGVuZ3RoIDw8IiAiOwogICBvdXRidWYgPDwgcmVzTG9hZFJlcG9ydC5taXNjU3lzdGVt U3RhdHVzLk51bWJlck9mQmxvY2tlZFByb2NzIDw8IiAiPDwgCiAgICAgICAgICAgICByZXNMb2Fk UmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuTnVtYmVyT2ZSdW5uYWJsZVByb2NzIDw8IiAiOwogICBv dXRidWYgPDwgcmVzTG9hZFJlcG9ydC5taXNjU3lzdGVtU3RhdHVzLk51bWJlck9mQ1BVcyA8PCIg Ijw8IAogICAgICAgICAgICAgIHJlc0xvYWRSZXBvcnQubWlzY1N5c3RlbVN0YXR1cy5OdW1iZXJP ZkJsb2NrZWRQcm9jc1RocmVzaG9sZCA8PCIgIjsKICAgb3V0YnVmIDw8IHJlc0xvYWRSZXBvcnQu bWlzY1N5c3RlbVN0YXR1cy5OdW1iZXJPZlJ1bm5hYmxlUHJvY3NUaHJlc2hvbGQgPDwiICI7Cn0K CgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0gCi8vIAovLyBOQU1FOiBjb25maWd1cmF0aW9uSW5mbwovLyAK Ly8gREVTQ1JJUFRJT046IFJlY2VpdmVkIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24sIGNvbnN0 cnVjdCByZXNvdXJjZSBsb2FkIHJlcG9ydCB0YWJsZQovLyAgICAgICAgICAgICAgCiAgLy8gUmVj ZWl2ZWQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBDb25maWdTZXJ2ZXIKICAv LyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGNvbnRhaW5zIHR3byBwYXJ0cwogIC8vIDEuIFRo cmVzaG9sZCBpbmZvCiAgLy8gMi4gIEluZm9ybWF0aW9uIHVzZWQgdG8gY29uc3RydWN0IGFwTW50 UmVzTG9hZFJlcG9ydCB0YWJsZQogIC8vIE5lZWQgdG8gY29uc3RydWN0IHRoZSBSZXNMb2FkUmVw b3J0IFRhYmxlIGZpcnN0LCB0aGVuCiAgLy8gdXBkYXRlIHRoZSB0aHJlc2hvbGQgaW5mb3JtYXRp b24gaW4gdGhhdCB0YWJsZS4KLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIEFSR1VNRU5UUzog QXBNbnRGTUNvbmZpZ0luZm8gJiB0aGVGTUNvbmZpZ0luZm8KLy8gCi8vIFJFVFVSTiBWQUxVRVM6 IE5vbmUuIAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCBDUE1vbkZNU2VydmVyOjpjb25m aWd1cmF0aW9uSW5mbygKQ1BNb25GTUNvbmZpZ0luZm8gIHRoZUZNQ29uZmlnSW5mbyApCnsKICBj b25zdHJ1Y3RSZXNMb2FkUmVwb3J0KHRoZUZNQ29uZmlnSW5mby5hZ2VudENvbmZpZ0RhdGEsdGhl Rk1Db25maWdJbmZvLmZNU2FtcGxlTGVuZ3RoKTsKaW50IHJldDsKY291dDw8InJldHVybiBpcyI8 PHJldDw8ZW5kbDsKICB1cGRhdGVUaHJlc2hvbGRJbmZvKHRoZUZNQ29uZmlnSW5mbyk7Cn0KCi8v PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IGNvbnN0cnVjdFJlc0xvYWRSZXBvcnQKLy8g Ci8vIERFU0NSSVBUSU9OOiBjb25zdHJ1Y3QgdGhlIHJlc291cmNlIGxvYWQgcmVwb3J0IGZyb20g cmVzb3VyY2UgbG9hZCB0YWJsZS4KLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g IAovLyAKLy8gUEFSQU1FVEVSUyAgIFJlc291cmNlTG9hZCAmYWdlbnRDb25maWdEYXRhXywgaW50 ICBzYW1wbGVMb2FkTGVuZ3RoXwkgICAKLy8gCi8vIFJFVFVSTiBWQUxVRVM6ICB2b2lkCi8vIAov Lz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0gIAp2b2lkIENQTW9uRk1TZXJ2ZXI6OmNvbnN0cnVjdFJlc0xvYWRS ZXBvcnQoIFJlc291cmNlTG9hZCBhZ2VudENvbmZpZ0RhdGFfLCBpbnQgc2FtcGxlTG9hZExlbmd0 aF8pCnsKICBjb25zdHJ1Y3RSZXNMb2FkUmVwb3J0Q1BVKCBhZ2VudENvbmZpZ0RhdGFfLmNwdUxv YWQgLCBzYW1wbGVMb2FkTGVuZ3RoXyk7CiAgY29uc3RydWN0UmVzTG9hZFJlcG9ydERpc2soIGFn ZW50Q29uZmlnRGF0YV8uZGlza0xvYWQgLCBzYW1wbGVMb2FkTGVuZ3RoXyk7CiAgY29uc3RydWN0 UmVzTG9hZFJlcG9ydEZpbGVTeXN0ZW0oYWdlbnRDb25maWdEYXRhXy5maWxlU3lzdGVtQ2FwYWNp dHkpOwogIC8vIC0tLS0tPiByZXBsYWNlcyB0aGUgbWV0aG9kcyBiZWxvdyB3aXRoIGEgZm9yIGxv b3AKICAvLyBhcE1udFJlc0xvYWRSZXBvcnQuU3dhcFNwYWNlTG9hZCgpLkNvbnN0cnVjdEFycmF5 KHNhbXBsZUxvYWRMZW5ndGhfKTsKICAvLyBhcE1udFJlc0xvYWRSZXBvcnQuTWVtb3J5TG9hZCgp LkNvbnN0cnVjdEFycmF5KHNhbXBsZUxvYWRMZW5ndGhfKTsKICBmb3IoIGludCBpaSA9IDA7IGlp ICA8IHNhbXBsZUxvYWRMZW5ndGhfOyBpaSsrKQogICAgewogICAgICAvLyByZXNMb2FkUmVwb3J0 LnN3YXBTcGFjZUxvYWQuU2FtcGxlRGF0YS5zYW1wbGVBcnJheS5hZGRJdGVtKGludCgwKSk7CiAg ICAgIHJlc0xvYWRSZXBvcnQubWVtb3J5TG9hZC5TYW1wbGVEYXRhLnNhbXBsZUFycmF5LmFkZEl0 ZW0oIGludCgwKSk7CiAgICB9CmZvciggaW50IGlpID0gMDsgaWkgIDwgc2FtcGxlTG9hZExlbmd0 aF87IGlpKyspCiAgICB7CiAgICAgIHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5TYW1wbGVE YXRhLnNhbXBsZUFycmF5LmFkZEl0ZW0oaW50KDApKTsKICAgIH0KICAKICBjb3V0IDw8ICIgc3dh cHNwYyBsb2FkIG5vIG9mIGVudHJpZXMgIiA8PCAgcmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2Fk LlNhbXBsZURhdGEuc2FtcGxlQXJyYXkuZW50cmllcygpIDw8IGVuZGw7CiAgY291dCA8PCAiIG1l bW9yeSBsb2FkIG5vIG9mIGVudHJpZXMgIiA8PCAgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLlNh bXBsZURhdGEuc2FtcGxlQXJyYXkuZW50cmllcygpIDw8IGVuZGw7CiAgY291dDw8Iml0ZW0gdmFs dWUiPDxyZXNMb2FkUmVwb3J0Lm1lbW9yeUxvYWQuU2FtcGxlRGF0YS5zYW1wbGVBcnJheS5nZXRJ dGVtKDApPDxlbmRsOwogIGNvdXQ8PCJtZW1vcnkgaXRlbSI8PCByZXNMb2FkUmVwb3J0Lm1lbW9y eUxvYWQuU2FtcGxlRGF0YS5zYW1wbGVBcnJheS5nZXRJdGVtKDkpPDxlbmRsOwogIHJlc0xvYWRS ZXBvcnQuc3dhcFNwYWNlTG9hZC5TYW1wbGVEYXRhLm1heExlbmd0aCA9IHNhbXBsZUxvYWRMZW5n dGhfOwogIHJlc0xvYWRSZXBvcnQubWVtb3J5TG9hZC5TYW1wbGVEYXRhLm1heExlbmd0aCA9IHNh bXBsZUxvYWRMZW5ndGhfOwogIHJlc0xvYWRSZXBvcnQubWlzY1N5c3RlbVN0YXR1cy5OdW1iZXJP ZkNQVXMgPSByZXNMb2FkUmVwb3J0LmNwdUxvYWQubGlzdC5lbnRyaWVzKCk7CiAKfQoKCi8vPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IAovLyAKLy8gREVTQ1JJUFRJT046IFJlY2VpdmUg cmVzb3VyY2UgbG9hZCBpbmZvcm1hdGlvbiwgdXBkYXRlIHJlc291cmNlIGxvYWQgdGFibGUsIAov LyAgICAgICAgICAgICAgYXBwbHkgYWxnb3JpdGhtcyB0byBkZXRlcm1pbmUgZmF1bHRzCi8vICAg ICAgICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIEFSR1VNRU5UUzogUmVzb3Vy Y2VMb2FkICB0aGVSZXNvdXJjZUxvYWQKLy8gCi8vIFJFVFVSTiBWQUxVRVM6IE5vbmUuIAovLyAK Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ICAKdm9pZCBDUE1vbkZNU2VydmVyOjpyZXNvdXJjZUxvYWRSZXBv cnQoUmVzb3VyY2VMb2FkIHRoZVJlc291cmNlTG9hZCkKeyAKICBpbnQgbGVubmd0aCA7CgogIHVw ZGF0ZVJlc0xvYWRSZXBvcnREaXNrKHRoZVJlc291cmNlTG9hZC5kaXNrTG9hZCApOwogIHVwZGF0 ZVJlc0xvYWRSZXBvcnRGaWxlU3lzdGVtKCB0aGVSZXNvdXJjZUxvYWQuZmlsZVN5c3RlbUNhcGFj aXR5KTsKICB1cGRhdGVSZXNMb2FkUmVwb3J0Q1BVKHRoZVJlc291cmNlTG9hZC5jcHVMb2FkKTsK ICB1cGRhdGVSZXNMb2FkUmVwb3J0U3dhcFNwYWNlKHRoZVJlc291cmNlTG9hZC5Td2FwU3BhY2VM b2FkICApOwogIHVwZGF0ZVJlc0xvYWRSZXBvcnRNZW1vcnkodGhlUmVzb3VyY2VMb2FkLk1lbW9y eUxvYWQpOwogIHVwZGF0ZVJlc0xvYWRSZXBvcnROdW1PZlJ1bm5hYmxlUHJvYyggdGhlUmVzb3Vy Y2VMb2FkLk51bWJlck9mUnVubmFibGVQcm9jcyk7CiAgdXBkYXRlUmVzTG9hZFJlcG9ydE51bU9m QmxvY2tlZFByb2MoIHRoZVJlc291cmNlTG9hZC5OdW1iZXJPZkJsb2NrZWRQcm9jcyk7CiAgYmxv Y2tlZElPRmF1bHREZXRlY3QoKTsgIAogIGluc3VmZkNQVXBvd2VyRGV0ZWN0KCk7CgogIC8vIFN5 c3RlbSBpcyBub3cgcmVhZHkgdG8gaGFuZGxlIHJlcXVlc3RzICAKICB0aGVHVUlNYW5hZ2VyLT5z ZXRTeXN0ZW1TdGF0ZSgpOwoKICBsZW5uZ3RoID0gZmF1bHRSZXBvcnQuZW50cmllcygpOwoKICBm b3IgKCBpbnQgaWkgPSAwOyBpaSA8IGxlbm5ndGggOyBpaSsrKQogICAgewogICAgICBGYXVsdFJl cG9ydEJhc2UgIHRlbXBGYXVsdEJ1ZmZlcjsKICAgICAgdGVtcEZhdWx0QnVmZmVyID0gZmF1bHRS ZXBvcnQucmVtb3ZlQXQoMCk7CiAgICAgIC8qICAgICAKCWNlcnIgPDwgIioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIgPDwgZW5kbDsKCWNl cnIgPDwgIlNlbmQgRmF1bHQgUmVwb3J0OiAiIDw8ICJGYXVsdFR5cGU9IiA8PCAoaW50KSh0ZW1w RmF1bHRCdWZmZXItPkZhdWx0VHlwZSkKCTw8ICAiIEFsYXJtIEFjdGlvbj0iIDw8IChpbnQpKHRl bXBGYXVsdEJ1ZmZlci0+YWxhcm1BY3Rpb24pCgk8PCAiIERldmljZTE9IiA8PCAoY29uc3QgY2hh ciAqKSh0ZW1wRmF1bHRCdWZmZXItPkRldmljZTEpCgk8PCAiIFZhbHVlMT0iIDw8IChpbnQpKHRl bXBGYXVsdEJ1ZmZlci0+VmFsdWUxKQoJPDwgIiBEZXZpY2UyPSIgPDwgKGNvbnN0IGNoYXIgKiko dGVtcEZhdWx0QnVmZmVyLT5EZXZpY2UyKQoJPDwgIiBWYWx1ZTI9IiA8PCAoaW50KSh0ZW1wRmF1 bHRCdWZmZXItPlZhbHVlMikKCTw8ICIgVGhyZXNob2xkPSIgPDwgKGludCkodGVtcEZhdWx0QnVm ZmVyLT5UaHJlc2hvbGQpIDw8IGVuZGw7CgljZXJyIDw8ICIqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiIDw8IGVuZGw7CgkqLwoJdGhlQ1BN b25GSVNPUmVwb3J0LT5maXNvUmVwb3J0KCZ0ZW1wRmF1bHRCdWZmZXIpOyAgICAgICAgICAgIAog ICAgfQogIGZhdWx0UmVwb3J0LmNsZWFyQW5kRGVzdHJveSgpOwp9CgoKLy89PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09IAovLyAKLy8gTkFNRTogdXBkYXRlUmVzTG9hZFJlcG9ydERpc2sKLy8KLy8gREVTQ1JJUFRJ T046IHVwZGF0ZSBkaXNrIGxvYWQgaW5mb3JtYXRpb24gaW4gcmVzb3VyY2UgbG9hZCByZXBvcnQg dGFibGUKLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gUEFSQU1F VEVSUyAgOiAgIGNoYXIJICpidWZmZXJQcnRfLCB1bnNpZ25lZCBzaG9ydAludW1PZkVudHJpZXNf Ci8vIAovLyBSRVRVUk4gVkFMVUVTOiB2b2lkCi8vIAovLyBSRVZJU0lPTiBISVNUT1JZICAgICA6 IE9yaWdpbmFsCi8vICAgICAgICAgICAgICAgICAgICAgICAgCi8vICAgICAgICAwNy8yMy85OCBs ZGluaDogIGZpeCBwcnQgMTIyNDkyICJubyBJUFIgZm9yIGZ0LVNQQVJDIHNvZnR3YXJlIGZhdWx0 IGNsZWFyYW5jZSIgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6dXBk YXRlUmVzTG9hZFJlcG9ydERpc2soQ1BNb25TaW5nbGVMaW5rTGlzdDxSZXNvdXJjZUxvYWRCYXNl RGlzaz4gdGhlRGlza0xvYWQgKQp7CiAgIHVuc2lnbmVkIHNob3J0ICBzcmNMZW5ndGgsIHRtcExl bmd0aCA7CgogICBSZXNMb2FkUmVwb3J0RGlza0Jhc2UgICAgc3JjSXRlbTsKICAgUmVzb3VyY2VM b2FkQmFzZURpc2sJICAgdG1wSXRlbTsKICAKICAgdG1wTGVuZ3RoID0gdGhlRGlza0xvYWQuZW50 cmllcygpOwogICAKICAgZm9yKGludCBpaT0wOyBpaTwgdG1wTGVuZ3RoIDsgaWkrKykKICAgICB7 ICAgICAgIAogICAgICAgdG1wSXRlbSA9IHRoZURpc2tMb2FkLmdldEl0ZW0oaWkpOwogICAgICAg c3JjTGVuZ3RoID0gcmVzTG9hZFJlcG9ydC5kaXNrTG9hZC5saXN0LmVudHJpZXMoKTsKICAgICAg IGZvciAoIGludCBqaiA9IDA7IGpqIDwgc3JjTGVuZ3RoIDsgamorKykKCSB7CgkgICBzcmNJdGVt ID0gcmVzTG9hZFJlcG9ydC5kaXNrTG9hZC5saXN0LmdldEl0ZW0oamopOwoJICAgaWYgKCBzcmNJ dGVtLklkLklkQ29kZSA9PSB0bXBJdGVtLkl0ZW1JZCkKCSAgICAgewoJICAgICAgIGlmICggc3Jj SXRlbS5DdXJyZW50TGV2ZWwgPT0gLTEpCgkJIHsKCQkgICAgc3JjSXRlbS5BdmVyYWdlT2ZMYXN0 MiA9IHRtcEl0ZW0uSXRlbVZhbHVlOwoJCSB9CgkgICAgICAgZWxzZQoJCSB7CiAgCQkgICAgc3Jj SXRlbS5BdmVyYWdlT2ZMYXN0MiA9IChzcmNJdGVtLkN1cnJlbnRMZXZlbCArIHRtcEl0ZW0uSXRl bVZhbHVlKS8yOwoJCSB9ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgIGluc2VydEluU2Ft cGxlQXJyYXkoc3JjSXRlbS5TYW1wbGVEYXRhLCB0bXBJdGVtLkl0ZW1WYWx1ZSk7CgkgICAgICAg c3JjSXRlbS5BdmVyYWdlVmFsdWUgPSBzYW1wbGVBcnJheUF2ZXJhZ2Uoc3JjSXRlbS5TYW1wbGVE YXRhKTsKCSAgICAgICBzcmNJdGVtLkN1cnJlbnRMZXZlbCA9IHRtcEl0ZW0uSXRlbVZhbHVlOwoJ ICAgICAgIGlmICggc3JjSXRlbS5BdmVyYWdlT2ZMYXN0MiA+IHJlc0xvYWRSZXBvcnQuZGlza0xv YWQuVGhyZXNob2xkICkKCQkgewoJCSAgIGlmKCAhc3JjSXRlbS5Jc3N1ZWREaXNrT3ZlcmxvYWRJ cHIpCgkJICAgICB7CgkJICAgICAgIHNyY0l0ZW0uSXNzdWVkRGlza092ZXJsb2FkSXByID0gQVBf TU5UX0lTU1VFX0lQUiA7CgkJICAgICAgIGZhdWx0UmVwb3J0SW5zZXJ0KEFTUF9DTV9ESVNLX09W RVJMT0FELEFQX01OVF9BTEFSTV9PTixzcmNJdGVtLk5hbWUsCgkJICAgICAgIAkJCXNyY0l0ZW0u QXZlcmFnZU9mTGFzdDIsIiAiLCAwLCByZXNMb2FkUmVwb3J0LmRpc2tMb2FkLlRocmVzaG9sZCk7 CgkJICAgICB9CgkJIH0KCSAgICAgICBlbHNlICBpZiAoIHNyY0l0ZW0uQXZlcmFnZU9mTGFzdDIg PCByZXNMb2FkUmVwb3J0LmRpc2tMb2FkLkNsZWFySVBSVGhyZXNob2xkKQoJCSB7CgkJICAgaWYg KCBzcmNJdGVtLklzc3VlZERpc2tPdmVybG9hZElwciApCgkJICAgICB7CgkJICAgICAgIHNyY0l0 ZW0uSXNzdWVkRGlza092ZXJsb2FkSXByID0gQVBfTU5UX0NMRUFSX0lQUiA7CgkJICAgICAgIGZh dWx0UmVwb3J0SW5zZXJ0KEFTUF9DTV9ESVNLX09WRVJMT0FELEFQX01OVF9BTEFSTV9PRkYsc3Jj SXRlbS5OYW1lLAoJCSAgICAgICAJCXNyY0l0ZW0uQXZlcmFnZU9mTGFzdDIsIiAiLCAwLCByZXNM b2FkUmVwb3J0LmRpc2tMb2FkLkNsZWFySVBSVGhyZXNob2xkKTsKCQkgICAgIH0KCQkgfQoJICAg ICAgIGJyZWFrOwoJICAgICB9CgkgfSAgICAgICAKICAgICB9Cn0KCi8vPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PSAKLy8gCi8vIE5BTUU6IHVwZGF0ZVJlc0xvYWRSZXBvcnRGaWxlU3lzdGVtCi8vIAovLyBERVND UklQVElPTjogIHVwZGF0ZSBmaWxlIHN5c3RlbSBpbmZvcm1hdGlvbiBpbiByZXNvdXJjZSBsb2Fk IHJlcG9ydCB0YWJsZQovLyAgICAgICAgICAgICAgIFVwZGF0ZSB0aGUgZW50cnkgc3BlY2lmaWVk IGluIGZzQnVmZmVyXy4gIElmIHRoZXJlCi8vCQkgaXMgYW55IGRlZmF1bHQgZGV0ZWN0ZWQsIGNy ZWF0ZSBhbiBmYXVsdCByZXBvcnQKLy8JCSBhbmQgYWRkIGl0IHRvIHRoZSBhcE1udEZhdWx0UmVw b3J0XyBsaXN0LiAgICAgICAgICAgICAgCi8vCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBQ QVJBTUVURVJTIDogCWNoYXIgICpidWZmZXJQdHJfLCB1bnNpZ25lZCBzaG9ydCBudW1PZkVudHJp ZXNfCi8vIAovLyBSRVRVUk4gVkFMVUVTOiB2b2lkCi8vCi8vIFJFVklTSU9OIEhJU1RPUlkgICAg IDogT3JpZ2luYWwKLy8gICAgICAgMDcvMjMvOTggbGRpbmggOiBmaXggcHJ0IDEyMjQ5MiAibm8g SVBSIGZvciBmdC1TUEFSQyBzb2Z0d2FyZSBmYXVsdCBjbGVhcmFuY2UiIAovLz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0gIAp2b2lkIENQTW9uRk1TZXJ2ZXI6OnVwZGF0ZVJlc0xvYWRSZXBvcnRGaWxlU3lzdGVt KENQTW9uU2luZ2xlTGlua0xpc3Q8IFJlc291cmNlTG9hZEJhc2VGaWxlU3lzdGVtPiB0aGVGaWxl U3lzdGVtKSAKewogIHVuc2lnbmVkIHNob3J0ICBzcmNMZW5ndGgsIHRtcExlbmd0aCA7CiAgUmVz TG9hZFJlcG9ydEZpbGVTeXN0ZW1CYXNlICBzcmNJdGVtOyAKICBSZXNvdXJjZUxvYWRCYXNlRmls ZVN5c3RlbSAgIHRtcEl0ZW07CgogIHRtcExlbmd0aCA9IHRoZUZpbGVTeXN0ZW0uZW50cmllcygp OwogIGZvciAoIGludCBpaT0wOyBpaSA8IHRtcExlbmd0aCA7IGlpKyspCiAgICB7CiAgICAgIHRt cEl0ZW0gPSB0aGVGaWxlU3lzdGVtLmdldEl0ZW0oaWkpOwogICAgICBzcmNMZW5ndGggPSByZXNM b2FkUmVwb3J0LmZpbGVTeXN0ZW1DYXBhY2l0eS5saXN0LmVudHJpZXMoKTsgCiAgICAgIGZvciAo IGludCBqaiA9IDA7IGpqIDwgc3JjTGVuZ3RoIDsgamorKykgCgl7CgkgIHNyY0l0ZW0gPSByZXNM b2FkUmVwb3J0LmZpbGVTeXN0ZW1DYXBhY2l0eS5saXN0LmdldEl0ZW0oamopOwoJICBpZiAoIHNy Y0l0ZW0uSWQuSWRDb2RlID09IHRtcEl0ZW0uSXRlbUlkICkKCSAgICB7CgkgICAgICBzcmNJdGVt LkF2YWlsYWJsZVNwYWNlID0gdG1wSXRlbS5BdmFpbGFibGVTcGFjZTsKCSAgICAgIHNyY0l0ZW0u Q3VycmVudExldmVsID0gdG1wSXRlbS5JdGVtVmFsdWU7IAoJICAgICAgaWYgKCBzcmNJdGVtLkN1 cnJlbnRMZXZlbCA+IHNyY0l0ZW0uVGhyZXNob2xkICkKCQl7CgkJICBpZiggIXNyY0l0ZW0uSXNz dWVkRmlsZVN5c0lwcikKCQkgICAgewoJCSAgICAgIHNyY0l0ZW0uSXNzdWVkRmlsZVN5c0lwciA9 IEFQX01OVF9JU1NVRV9JUFIgOyAgICAgCiAgICAgICAgICAgICAgICAgICAgICBmYXVsdFJlcG9y dEluc2VydCggQVNQX0NNX0ZJTEVfU1lTVEVNX0ZVTEwsIEFQX01OVF9BTEFSTV9PTiwKCQkJCQkg ICBzcmNJdGVtLiBOYW1lLCAgc3JjSXRlbS5DdXJyZW50TGV2ZWwsIHNyY0l0ZW0uRGV2aWNlTmFt ZSwKCQkJCQkgICAgc3JjSXRlbS5BdmFpbGFibGVTcGFjZSwgc3JjSXRlbS5UaHJlc2hvbGQpOyAK CQkgICAgfQoJCX0KCSAgICAgIGVsc2UKCQl7CgkJICBpZiAoc3JjSXRlbS5Jc3N1ZWRGaWxlU3lz SXByKSAKCQkgICAgewoJCSAgICAgIHNyY0l0ZW0uSXNzdWVkRmlsZVN5c0lwciA9IEFQX01OVF9D TEVBUl9JUFI7CgkJICAgICAgZmF1bHRSZXBvcnRJbnNlcnQoIEFTUF9DTV9GSUxFX1NZU1RFTV9G VUxMLCBBUF9NTlRfQUxBUk1fT0ZGLAoJCQkJICAgICAgICBzcmNJdGVtLk5hbWUsIHNyY0l0ZW0u Q3VycmVudExldmVsLCBzcmNJdGVtLkRldmljZU5hbWUsCgkJCQkJc3JjSXRlbS5BdmFpbGFibGVT cGFjZSwgc3JjSXRlbS5UaHJlc2hvbGQpOwoJCQkJCQoJCSAgICB9CgkJfQoJCWJyZWFrOwoJICAg IH0KCX0gICAgIAogICAgfQogIAp9CgoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAovLyAKLy8gTkFNRTog dXBkYXRlUmVzTG9hZFJlcG9ydENQVQovLyAKLy8gREVTQ1JJUFRJT046ICB1cGRhdGUgY3B1IHVz YWdlIGluZm9ybWF0aW9uIGluIHJlc291cmNlIGxvYWQgcmVwb3J0IHRhYmxlCi8vICAgICAgICAg ICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIFBBUkFNRVRFUlMgOiAgY2hhciAqYnVm ZmVyUHJ0XywgdW5zaWduZWQgc2hvcnQgbnVtT2ZFbnRyaWVzXzsKLy8JCQkJCQkJCi8vIFJFVFVS TiBWQUxVRVM6ICB1bnNpZ25lZCBzaG9ydAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCBD UE1vbkZNU2VydmVyOjp1cGRhdGVSZXNMb2FkUmVwb3J0Q1BVKCBDUE1vblNpbmdsZUxpbmtMaXN0 PCBSZXNvdXJjZUxvYWRCYXNlQ1BVID4gdGhlQ1BVcyApCnsKICB1bnNpZ25lZCBzaG9ydCAgc3Jj TGVuZ3RoLCB0bXBMZW5ndGggOwogIFJlc0xvYWRSZXBvcnRDUFVCYXNlICAgc3JjSXRlbTsgCiAg UmVzb3VyY2VMb2FkQmFzZUNQVSAgICB0bXBJdGVtOwoKICB0bXBMZW5ndGggPSB0aGVDUFVzLmVu dHJpZXMoKTsKICBmb3IoaW50IGlpPTA7IGlpICA8ICB0bXBMZW5ndGggOyBpaSsrKQogICAgewog ICAgICB0bXBJdGVtID0gdGhlQ1BVcy5nZXRJdGVtKGlpKTsKICAgICAgc3JjTGVuZ3RoID0gcmVz TG9hZFJlcG9ydC5jcHVMb2FkLmxpc3QuZW50cmllcygpOwogICAgICBmb3IgKGludCAgamogPSAw OyBqaiA8IHNyY0xlbmd0aCA7IGpqKyspCgl7CgkgIHNyY0l0ZW0gPSByZXNMb2FkUmVwb3J0LmNw dUxvYWQubGlzdC5nZXRJdGVtKGpqKTsKCSAgaWYgKCBzcmNJdGVtLklkLklkQ29kZSA9PSB0bXBJ dGVtLkl0ZW1JZCApCgkgICAgewoJICAgICAgaWYgKCBzcmNJdGVtLkN1cnJlbnRMZXZlbCA9PSAt MSkKCQl7CgkJICBzcmNJdGVtLkF2ZXJhZ2VPZkxhc3QyID0gdG1wSXRlbS5JdGVtVmFsdWU7IAoJ CX0KCSAgICAgIGVsc2UKCQl7CgkJICBzcmNJdGVtLkF2ZXJhZ2VPZkxhc3QyID0gKHNyY0l0ZW0u Q3VycmVudExldmVsICsgCgkJCQkJICAgICAgICB0bXBJdGVtLkl0ZW1WYWx1ZSApLzI7CgkJfSAg CgkgICAgICBpbnNlcnRJblNhbXBsZUFycmF5KHNyY0l0ZW0uU2FtcGxlRGF0YSwgdG1wSXRlbS5J dGVtVmFsdWUpOwoJICAgICAgc3JjSXRlbS5BdmVyYWdlVmFsdWUgPSBzYW1wbGVBcnJheUF2ZXJh Z2Uoc3JjSXRlbS5TYW1wbGVEYXRhKTsgCgkgICAgICBzcmNJdGVtLkN1cnJlbnRMZXZlbCA9IHRt cEl0ZW0uSXRlbVZhbHVlOyAKCgkgICAgICBpZiAoICBzcmNJdGVtLkN1cnJlbnRMZXZlbCA+IHJl c0xvYWRSZXBvcnQuY3B1TG9hZC5UaHJlc2hvbGQgKQoJCXsKCQkgIGlmICggIXJlc0xvYWRSZXBv cnQuY3B1TG9hZC5Jc3N1ZWRDcHVPdmVybG9hZElwciApCgkJICAgIHsKCQkgICAgICByZXNMb2Fk UmVwb3J0LmNwdUxvYWQuSXNzdWVkQ3B1T3ZlcmxvYWRJcHIgPSBBUF9NTlRfSVNTVUVfSVBSIDsK CQkgICAgICBmYXVsdFJlcG9ydEluc2VydChBU1BfQ01fQ1BVX09WRVJMT0FELCBBUF9NTlRfQUxB Uk1fT04sIHNyY0l0ZW0uTmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzcmNJdGVtLkF2ZXJhZ2VPZkxhc3QyLCIgIiwgMCwgcmVzTG9hZFJlcG9ydC5jcHVMb2Fk LlRocmVzaG9sZCk7CgkJICAgIH0KCQl9CgkgICAgICBlbHNlICBpZiAoICBzcmNJdGVtLkN1cnJl bnRMZXZlbCA8IHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5DbGVhcklQUlRocmVzaG9sZCApCgkJewoJ CSAgaWYoIHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5Jc3N1ZWRDcHVPdmVybG9hZElwcikgCgkJICAg IHsKCQkgICAgICByZXNMb2FkUmVwb3J0LmNwdUxvYWQuSXNzdWVkQ3B1T3ZlcmxvYWRJcHIgPSBB UF9NTlRfQ0xFQVJfSVBSIDsKCQkgICAgICBmYXVsdFJlcG9ydEluc2VydCggQVNQX0NNX0NQVV9P VkVSTE9BRCwgQVBfTU5UX0FMQVJNX09GRiwgIHNyY0l0ZW0uTmFtZSwKCQkJCQkgc3JjSXRlbS5B dmVyYWdlT2ZMYXN0MiwgIiAiICwgMCwgcmVzTG9hZFJlcG9ydC5jcHVMb2FkLkNsZWFySVBSVGhy ZXNob2xkKTsKCQkgICAgfQoJCX0KCSAgICAgIGJyZWFrOwoJICAgIH0KCX0KICAgICAgCiAgICAg IGRldGVjdFVuZXZlbkxvYWQoKTsgICAgICAKICAgIH0KICAKfQoKCi8vPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PSAKLy8gCi8vIE5BTUU6IHVwZGF0ZVJlc0xvYWRSZXBvcnRTd2FwU3BhY2UKLy8gCi8vIERFU0NS SVBUSU9OOiBkYXRlIG1lbW9yeSBhbmQgc3dhcCBzcGFjZSBpbmZvcm1hdGlvbiBpbiB0aGUgdGFi bGUuCi8vICAgICAgICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIFBBUkFNRVRF UlMgOiAgY2hhciAgKmJ1ZmZlclBydF8sICB1bnNpZ25lZCBzaG9ydAludW1PZkVudHJpZXNfCi8v IAovLyBSRVRVUk4gVkFMVUVTOiB2b2lkCi8vIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAp2b2lkIENQ TW9uRk1TZXJ2ZXI6OnVwZGF0ZVJlc0xvYWRSZXBvcnRTd2FwU3BhY2UoaW50IHRoZVN3YXBTcGFj ZUxvYWQgKQp7CiAgaWYgKCByZXNMb2FkUmVwb3J0LnN3YXBTcGFjZUxvYWQuSWQuSWRDb2RlID09 IDAgKQogICAgewogICAgICBpZiAoIHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5DdXJyZW50 TGV2ZWwgPT0gLTEpCgl7CgkgIHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5BdmVyYWdlT2ZM YXN0MiA9IHRoZVN3YXBTcGFjZUxvYWQ7Cgl9CiAgICAgIGVsc2UKCXsKCSAgcmVzTG9hZFJlcG9y dC5zd2FwU3BhY2VMb2FkLkF2ZXJhZ2VPZkxhc3QyID0gKHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNl TG9hZC5DdXJyZW50TGV2ZWwgKyB0aGVTd2FwU3BhY2VMb2FkKS8yOwoJfSAKICAgICAgCiAgICAg IGluc2VydEluU2FtcGxlQXJyYXkocmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2FkLlNhbXBsZURh dGEsIHRoZVN3YXBTcGFjZUxvYWQpOwogICAgICByZXNMb2FkUmVwb3J0LnN3YXBTcGFjZUxvYWQu QXZlcmFnZVZhbHVlID0gc2FtcGxlQXJyYXlBdmVyYWdlKHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNl TG9hZC5TYW1wbGVEYXRhKTsgCiAgICAgIHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5DdXJy ZW50TGV2ZWwgPSB0aGVTd2FwU3BhY2VMb2FkOyAKICAgICAgCiAgICAgIGlmICggcmVzTG9hZFJl cG9ydC5zd2FwU3BhY2VMb2FkLkF2ZXJhZ2VPZkxhc3QyID4gcmVzTG9hZFJlcG9ydC5zd2FwU3Bh Y2VMb2FkLlRocmVzaG9sZCApCgl7CgkgIGlmKCAhcmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2Fk Lklzc3VlZFN3YXBTcGFjZUlwciApCgkgICAgewoJICAgICAgcmVzTG9hZFJlcG9ydC5zd2FwU3Bh Y2VMb2FkLklzc3VlZFN3YXBTcGFjZUlwciA9IEFQX01OVF9JU1NVRV9JUFIgOwoJICAgICAgZmF1 bHRSZXBvcnRJbnNlcnQoQVNQX0NNX1NXQVBfU1BBQ0VfSU5TVUZGLEFQX01OVF9BTEFSTV9PTiwg IiIsIHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5BdmVyYWdlT2ZMYXN0MiwKCQkJCSIiLDAs IHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5UaHJlc2hvbGQpOwoJICAgIH0JICAKCX0KICAg ICAgZWxzZSBpZiAocmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2FkLkF2ZXJhZ2VPZkxhc3QyIDwg cmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2FkLkNsZWFySVBSVGhyZXNob2xkICkKCXsKCSAgaWYo IHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5Jc3N1ZWRTd2FwU3BhY2VJcHIgKQoJICAgIHsK CSAgICAgIHJlc0xvYWRSZXBvcnQuc3dhcFNwYWNlTG9hZC5Jc3N1ZWRTd2FwU3BhY2VJcHIgPSBB UF9NTlRfQ0xFQVJfSVBSIDsKCSAgICAgIGZhdWx0UmVwb3J0SW5zZXJ0KEFTUF9DTV9TV0FQX1NQ QUNFX0lOU1VGRixBUF9NTlRfQUxBUk1fT0ZGLCIiLCByZXNMb2FkUmVwb3J0LnN3YXBTcGFjZUxv YWQuQXZlcmFnZU9mTGFzdDIsCgkJCQkiIiwgMCwgcmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2Fk LkNsZWFySVBSVGhyZXNob2xkICk7IAoJICAgIH0KCX0KICAgIH0KIAp9CgovLz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0gCi8vIAovLyBOQU1FOiB1cGRhdGVSZXNMb2FkUmVwb3J0TnVtT2ZCbG9ja2VkUHJvYwov LyAKLy8gREVTQ1JJUFRJT046ICB1cGRhdGUgbWVtb3J5IGluZm9ybWF0aW9uIGluIHRoZSB0YWJs ZQovLyAgICAgICAgICAgICAgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBQQVJBTUVURVJT OiAJY2hhciAgKmJ1ZmZlclBydF8sIHVuc2lnbmVkIHNob3J0ICBudW1PZkVudHJpZXNfCi8vIAov LyBSRVRVUk4gVkFMVUVTOiB2b2lkIAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCBDUE1v bkZNU2VydmVyOjp1cGRhdGVSZXNMb2FkUmVwb3J0TnVtT2ZCbG9ja2VkUHJvYyh1bG9uZyB0aGVO dW1iZXJPZkJsb2NrZWRQcm9jcyApCnsKICByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMu TnVtYmVyT2ZCbG9ja2VkUHJvY3MgPSB0aGVOdW1iZXJPZkJsb2NrZWRQcm9jczsKfQoKCgovLz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0gCi8vIAovLyBOQU1FOiB1cGRhdGVSZXNMb2FkUmVwb3J0TnVtT2ZSdW5u YWJsZVByb2MKLy8gCi8vIERFU0NSSVBUSU9OOiB1cGRhdGUgbWVtb3J5IGluZm9ybWF0aW9uIGlu IHRoZSB0YWJsZQovLyAgICAgICAgICAgICAgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBQ QVJBTUVURVJTIDogICAgIGNoYXIgICAqYnVmZmVyUHJ0XywgIHVuc2lnbmVkIHNob3J0CW51bU9m RW50cmllc18KLy8gCi8vIFJFVFVSTiBWQUxVRVM6ICB2b2lkCi8vIAovLz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0gIAp2b2lkIENQTW9uRk1TZXJ2ZXI6OnVwZGF0ZVJlc0xvYWRSZXBvcnROdW1PZlJ1bm5hYmxl UHJvYyh1bG9uZyB0aGVOdW1iZXJPZlJ1bm5hYmxlUHJvY3MpCnsKICAgcmVzTG9hZFJlcG9ydC5t aXNjU3lzdGVtU3RhdHVzLk51bWJlck9mUnVubmFibGVQcm9jcyA9IHRoZU51bWJlck9mUnVubmFi bGVQcm9jczsKfQoKCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IHVwZGF0ZVJlc0xv YWRSZXBvcnRNZW1vcnkKLy8gCi8vIERFU0NSSVBUSU9OOiB1cGRhdGUgbWVtb3J5IGluZm9ybWF0 aW9uIGluIHRoZSB0YWJsZSAKLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5EIAovLyAg ICAgICAgICAgICAgVXBkYXRlIGVudHJ5IGFzIHNwZWNpZmllZCBieSBwYXJhbWV0ZXIgbWlzY0J1 ZmZlcl8KLy8JCUlmIHRoZXJlIGlzIGFueSBmYXVsdCBkZXRlY3RlZCwgYSBmYXVsdCByZXBvcnQg ZW50cnkKLy8JCWlzIGFkZGVkIHRvIHRoZSBhcE1udEZhdWx0UmVwb3J0XyBsaXN0Ci8vICAgICAg ICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIFBBUkFNRVRFUlMgOiAgIGNoYXIJ ICAqYnVmZmVyUHJ0XywgdW5zaWduZWQgc2hvcnQJbnVtT2ZFbnRyaWVzXwovLwovLyBSRVRVUk4g VkFMVUVTOiAgIHZvaWQgCi8vCi8vIFJFVklTSU9OIEhJU1RPUlkgICAKLy8gICAgICAwNy8yMy85 OCBsZGluaCA6ICBmaXggcHJ0IDEyMjQ5MiAibm8gSVBSIGZvciBmdC1TUEFSQyBzb2Z0d2FyZSBm YXVsdCBjbGVhcmFuY2UiIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAp2b2lkIENQTW9uRk1TZXJ2ZXI6 OnVwZGF0ZVJlc0xvYWRSZXBvcnRNZW1vcnkoIGludCB0aGVNZW1vcnlMb2FkKQp7CgogIGlmICgg cmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLklkLklkQ29kZSA9PSAwKQogICAgewogICAgICBpZiAo IHJlc0xvYWRSZXBvcnQubWVtb3J5TG9hZC5DdXJyZW50TGV2ZWwgPT0gLTEpCgl7CgkgIHJlc0xv YWRSZXBvcnQubWVtb3J5TG9hZC5BdmVyYWdlT2ZMYXN0MiA9IHRoZU1lbW9yeUxvYWQ7Cgl9CiAg ICAgIGVsc2UKCXsKCSAgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLkF2ZXJhZ2VPZkxhc3QyID0g KHJlc0xvYWRSZXBvcnQubWVtb3J5TG9hZC5DdXJyZW50TGV2ZWwgKyAKCQkJCQkJICAgICB0aGVN ZW1vcnlMb2FkKSAvMjsKCX0gIAogICAgICBpbnNlcnRJblNhbXBsZUFycmF5KCByZXNMb2FkUmVw b3J0Lm1lbW9yeUxvYWQuU2FtcGxlRGF0YSwgdGhlTWVtb3J5TG9hZCk7CiAgICAgIHJlc0xvYWRS ZXBvcnQubWVtb3J5TG9hZC5BdmVyYWdlVmFsdWUgPSBzYW1wbGVBcnJheUF2ZXJhZ2UocmVzTG9h ZFJlcG9ydC5tZW1vcnlMb2FkLlNhbXBsZURhdGEpOyAKICAgICAgcmVzTG9hZFJlcG9ydC5tZW1v cnlMb2FkLkN1cnJlbnRMZXZlbCA9IHRoZU1lbW9yeUxvYWQ7CiAgICAgIGlmICggcmVzTG9hZFJl cG9ydC5tZW1vcnlMb2FkLkF2ZXJhZ2VPZkxhc3QyID4gcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2Fk LlRocmVzaG9sZCApCgl7CgkgIGlmICghcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLklzc3VlZE1l bW9yeUluc3VmZklwcikgCgkgICAgewoJICAgICAgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLklz c3VlZE1lbW9yeUluc3VmZklwciA9IEFQX01OVF9JU1NVRV9JUFI7CSAgICAgIAoJICAgICAgZmF1 bHRSZXBvcnRJbnNlcnQoIEFTUF9DTV9NRU1PUllfSU5TVUZGLCBBUF9NTlRfQUxBUk1fT04sICIi LCByZXNMb2FkUmVwb3J0Lm1lbW9yeUxvYWQuQXZlcmFnZU9mTGFzdDIsICIiLCAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCwgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLlRocmVz aG9sZCk7CgkgICAgfQoJfQogICAgICBlbHNlIGlmICggcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2Fk LkF2ZXJhZ2VPZkxhc3QyID4gcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLkNsZWFySVBSVGhyZXNo b2xkICkKCXsKCSAgaWYocmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLklzc3VlZE1lbW9yeUluc3Vm ZklwcikKCSAgICB7CgkgICAgICByZXNMb2FkUmVwb3J0Lm1lbW9yeUxvYWQuSXNzdWVkTWVtb3J5 SW5zdWZmSXByID0gQVBfTU5UX0NMRUFSX0lQUjsKCSAgICAgIGZhdWx0UmVwb3J0SW5zZXJ0KEFT UF9DTV9NRU1PUllfSU5TVUZGLCBBUF9NTlRfQUxBUk1fT0ZGLCAiIiwgcmVzTG9hZFJlcG9ydC5t ZW1vcnlMb2FkLkF2ZXJhZ2VPZkxhc3QyLCAiIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAwICwgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLkNsZWFySVBSVGhyZXNob2xkICk7 CgkgICAgICAKCSAgICB9Cgl9CiAgICB9Cn0KCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAKLy8gCi8vIE5B TUU6IHJlc291cmNlVXNhZ2VSZXBvcnQoKQovLyAKLy8gREVTQ1JJUFRJT046IFJlY2VpdmUgcmVz b3VyY2UgdXNhZ2UgaW5mb3JtYXRpb24sIHVwZGF0ZSByZXNvdXJjZSB1c2FnZSB0YWJsZQovLyAg ICAgICAgICAgICAgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBQQVJBTUVURVJTOiBSZXNv dXJjZUxvYWRVc2FnZQovLyAKLy8gUkVUVVJOIFZBTFVFUzogTm9uZS4gCi8vIAovLz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0gIAp2b2lkIENQTW9uRk1TZXJ2ZXI6OnJlc291cmNlVXNhZ2VSZXBvcnQoUmVzb3Vy Y2VMb2FkVXNhZ2UgdGhlUmVzb3VyY2VMb2FkVXNhZ2UpCnsKICB1cGRhdGVSZXNMb2FkUmVwb3J0 Q1BVVXNhZ2UoIHRoZVJlc291cmNlTG9hZFVzYWdlLiBjcHVVc2FnZSApOwogIHVwZGF0ZVJlc0xv YWRSZXBvcnRNZW1Vc2FnZSggdGhlUmVzb3VyY2VMb2FkVXNhZ2UuIG1lbW9yeVVzYWdlKTsKICB1 cGRhdGVSZXNMb2FkUmVwb3J0TWlzY1VzYWdlKCB0aGVSZXNvdXJjZUxvYWRVc2FnZS5taXNjVXNh Z2UgKTsKCiAgdGhlR1VJTWFuYWdlci0+cHJvY2Vzc1VzYWdlSW5mbyh0aGlzKTsKfQoKCi8vPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IHNodXREb3duKCkKLy8gCi8vIERFU0NSSVBUSU9O OiAgU2VuZCB0aGUgc2h1dCBkb3duIHJlcXVlc3QKLy8gICAgICAgICAgICAgIAovLz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0gIAovLyAKLy8gUEFSQU1FVEVSUyA6IHZvaWQKLy8gCi8vIFJFVFVSTiBWQUxVRVM6 IHZvaWQKLy8gCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6c2h1dERv d24oKQp7CiAgZmF1bHRSZXBvcnQuY2xlYXJBbmREZXN0cm95KCk7CgogIHJlc0xvYWRSZXBvcnQu ZGlza0xvYWQubGlzdC5jbGVhckFuZERlc3Ryb3koKTsgCiAgcmVzTG9hZFJlcG9ydC5maWxlU3lz dGVtQ2FwYWNpdHkubGlzdC5jbGVhckFuZERlc3Ryb3koKTsgCiAgcmVzTG9hZFJlcG9ydC5jcHVM b2FkLmxpc3QuY2xlYXJBbmREZXN0cm95KCk7IAogIHJlc0xvYWRSZXBvcnQuY3B1VXNhZ2UubGlz dC5jbGVhckFuZERlc3Ryb3koKTsKICByZXNMb2FkUmVwb3J0Lm1lbW9yeVVzYWdlLmxpc3QuY2xl YXJBbmREZXN0cm95KCk7CiAKICBsb2dTdGF0dXNJbmZvLmRpc2suY2xlYXJBbmREZXN0cm95KCk7 IAogIGxvZ1N0YXR1c0luZm8uZmlsZVN5c3RlbS5jbGVhckFuZERlc3Ryb3koKTsgCiAgbG9nU3Rh dHVzSW5mby5jcHUuY2xlYXJBbmREZXN0cm95KCk7IAogIGxvZ1N0YXR1c0luZm8ubWVtb3J5LmNs ZWFyQW5kRGVzdHJveSgpOyAKICBsb2dTdGF0dXNJbmZvLnN3YXBTcGFjZS5jbGVhckFuZERlc3Ry b3koKTsgCiAgbG9nU3RhdHVzSW5mby5jcHVVc2FnZS5jbGVhckFuZERlc3Ryb3koKTsgCiAgbG9n U3RhdHVzSW5mby5tZW1vcnlVc2FnZS5jbGVhckFuZERlc3Ryb3koKTsgCgogIHRoZUdVSU1hbmFn ZXIgPSBOVUxMOyAKICB0aGVDUE1vbkZJU09SZXBvcnQgPSBOVUxMOwovL3ByYWJoYSAxMC8xNy8w MSBwb3J0ZWQgdG8gU003LjAKICAvLyBDUE1vbkZNU2VydmVyOjp+Q1BNb25GTVNlcnZlcigpOyAK fQoKCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IHVwZGF0ZVJlc0xvYWRSZXBvcnRN aXNjVXNhZ2UKLy8gCi8vIERFU0NSSVBUSU9OOiAgdXBkYXRlIG1pc2MuIHVzYWdlIGluZm9ybWF0 aW9uIGluIHJlc291cmNlIGxvYWQgcmVwb3J0IHRhYmxlCi8vICAgICAgICAgICAgICAKLy89PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ICAKLy8gCi8vIEFSR1VNRU5UUzogCi8vIAovLyBSRVRVUk4gVkFMVUVTOiBO b25lLiAKLy8gCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6dXBkYXRl UmVzTG9hZFJlcG9ydE1pc2NVc2FnZShSZXNvdXJjZUxvYWRVc2FnZUJhc2VNaXNjICBtaXNjVXNh Z2UpCnsKICByZXNMb2FkUmVwb3J0Lm1lbW9yeVVzYWdlLk90aGVyVXNhZ2UgPSBtaXNjVXNhZ2Uu T3RoZXJNZW1vcnlVc2FnZTsKICByZXNMb2FkUmVwb3J0Lm1lbW9yeVVzYWdlLklkbGVVc2FnZSA9 IG1pc2NVc2FnZS5JZGxlTWVtb3J5VXNhZ2U7CiAgcmVzTG9hZFJlcG9ydC5jcHVVc2FnZS5PdGhl clVzYWdlID0gbWlzY1VzYWdlLk90aGVyQ1BVVXNhZ2U7CiAgcmVzTG9hZFJlcG9ydC5jcHVVc2Fn ZS5JZGxlVXNhZ2UgPSBtaXNjVXNhZ2UuSWRsZUNQVVVzYWdlOyAKfQoKLy89PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09IAovLyAKLy8gTkFNRTogdXBkYXRlUmVzTG9hZFJlcG9ydE1lbVVzYWdlCi8vIAovLyBERVND UklQVElPTjogIHVwZGF0ZSBtZW1vcnkgdXNhZ2UgaW5mb3JtYXRpb24gaW4gcmVzb3VyY2UgbG9h ZCByZXBvcnQgdGFibGUKLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAovLyAK Ly8gUEFSQU1FVEVSUyAgICAgICAgICAgOiAgIGNoYXIgICpidWZmZXJQcnRfLCB1bnNpZ25lZCBz aG9ydAludW1PZkVudHJpZXNfCi8vIAovLyBSRVRVUk4gVkFMVUVTOiB2b2lkCi8vIAovLz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0gIAp2b2lkIENQTW9uRk1TZXJ2ZXI6OnVwZGF0ZVJlc0xvYWRSZXBvcnRNZW1V c2FnZSggQ1BNb25TaW5nbGVMaW5rTGlzdDxSZXNvdXJjZUxvYWRVc2FnZUJhc2U+ICBtZW1Vc2Fn ZSkKewogIHVuc2lnbmVkIHNob3J0ICB0bXBMZW5ndGggOwogIFJlc0xvYWRSZXBvcnRVc2FnZUJh c2Ugc3JjSXRlbTsKICBSZXNvdXJjZUxvYWRVc2FnZUJhc2UgdG1wSXRlbTsKCiAgcmVzTG9hZFJl cG9ydC5tZW1vcnlVc2FnZS5saXN0LmNsZWFyQW5kRGVzdHJveSgpOwogIHRtcExlbmd0aCA9IG1l bVVzYWdlLmVudHJpZXMoKTsKCiAgZm9yKGludCBpaT0wOyBpaTwgdG1wTGVuZ3RoOyBpaSsrKQog ICAgeyAgICAgCiAgICAgIHRtcEl0ZW0gPSBtZW1Vc2FnZS5nZXRJdGVtKGlpKTsKICAgICAgc3Jj SXRlbS5JZC5JZENvZGUgPSBpaTsKICAgICAgc3JjSXRlbS5Qcm9jZXNzSUQgPSB0bXBJdGVtLlBy b2Nlc3NJZDsKICAgICAgc3JjSXRlbS5Vc2FnZSA9IChmbG9hdCkgdG1wSXRlbS5NZW1vcnlVc2Fn ZTsgCiAgICAgIHN0cmNweShzcmNJdGVtLlByb2Nlc3NOYW1lLCB0bXBJdGVtLlByb2dyYW1OYW1l KTsKICAgICAgc3RyY3B5KHNyY0l0ZW0uQ29tbWFuZExpbmVBcmd1bWVudCwgdG1wSXRlbS5Db21t YW5kTGluZSk7CiAgICAgIHJlc0xvYWRSZXBvcnQubWVtb3J5VXNhZ2UubGlzdC5hZGRJdGVtKHNy Y0l0ZW0pOwogICAgfQp9CgoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAovLyAKLy8gTkFNRTogdXBkYXRl UmVzTG9hZFJlcG9ydENQVSAgIAovLyAKLy8gREVTQ1JJUFRJT046ICB1cGRhdGUgY3B1IHVzYWdl IGluZm9ybWF0aW9uIGluIHJlc291cmNlIGxvYWQgcmVwb3J0IHRhYmxlIAovLyAgICAgICAgICAg ICAgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBQQVJBTUVURVJTICAgICAgICAgIAovLyAK Ly8gUkVUVVJOIFZBTFVFUzogdm9pZAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCBDUE1v bkZNU2VydmVyOjp1cGRhdGVSZXNMb2FkUmVwb3J0Q1BVVXNhZ2UoIENQTW9uU2luZ2xlTGlua0xp c3Q8UmVzb3VyY2VMb2FkVXNhZ2VCYXNlPiAgY3B1VXNhZ2UpCnsKICB1bnNpZ25lZCBzaG9ydCAg dG1wTGVuZ3RoIDsKICBSZXNMb2FkUmVwb3J0VXNhZ2VCYXNlIHNyY0l0ZW07CiAgUmVzb3VyY2VM b2FkVXNhZ2VCYXNlIHRtcEl0ZW07CgogIHJlc0xvYWRSZXBvcnQuY3B1VXNhZ2UubGlzdC5jbGVh ckFuZERlc3Ryb3koKTsKICB0bXBMZW5ndGggPSBjcHVVc2FnZS5lbnRyaWVzKCk7CgogIGZvcihp bnQgaWk9MDsgaWk8IHRtcExlbmd0aDsgaWkrKykKICAgIHsgICAgIAogICAgICB0bXBJdGVtID0g Y3B1VXNhZ2UuZ2V0SXRlbShpaSk7CiAgICAgIAogICAgICBzcmNJdGVtLklkLklkQ29kZSA9IGlp OwogICAgICBzcmNJdGVtLlByb2Nlc3NJRCA9IHRtcEl0ZW0uUHJvY2Vzc0lkOwogICAgICBzcmNJ dGVtLlVzYWdlID0gKGZsb2F0KSB0bXBJdGVtLkNQVVVzYWdlOyAKICAgICAgc3RyY3B5KHNyY0l0 ZW0uUHJvY2Vzc05hbWUsIHRtcEl0ZW0uUHJvZ3JhbU5hbWUpOwogICAgICBzdHJjcHkoc3JjSXRl bS5Db21tYW5kTGluZUFyZ3VtZW50LCB0bXBJdGVtLkNvbW1hbmRMaW5lKTsKICAgICAgcmVzTG9h ZFJlcG9ydC5jcHVVc2FnZS5saXN0LmFkZEl0ZW0oc3JjSXRlbSk7CiAgICB9Cn0KCi8vPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IGZtQ29uc3RydWN0UmVzTG9hZFJlcG9ydENQVQovLyAK Ly8gREVTQ1JJUFRJT046IGNvbnN0cnVjdCByZXNvdXJjZSBsb2FkIHJlcG9ydCwgQ1BVIHNlY3Rp b24KLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gQVJHVU1FTlRT OiBSZXNvdXJjZUxvYWRDUFVVRGVmQ2xhc3MgJmFnZW50VGFibGVfLCBpbnQgc2FtcGxlTG9hZExl bmd0aF8KLy8gCi8vIFJFVFVSTiBWQUxVRVM6IHZvaWQKLy8gCi8vPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAg CnZvaWQgQ1BNb25GTVNlcnZlcjo6Y29uc3RydWN0UmVzTG9hZFJlcG9ydENQVSggQ1BNb25TaW5n bGVMaW5rTGlzdDxSZXNvdXJjZUxvYWRCYXNlQ1BVPiBhZ2VudFRhYmxlXywgaW50IHNhbXBsZUxv YWRMZW5ndGhfICAgKQp7CiAgdW5zaWduZWQgc2hvcnQJbGVuZ3RoOwogIHVuc2lnbmVkIHNob3J0 CWlpOwogIC8vICBBcE1udFJlc291cmNlTG9hZEJhc2VDUFUJCWFuSXRlbTsKICAKICBSZXNMb2Fk UmVwb3J0Q1BVQmFzZQlhbkl0ZW07IAogIFJlc291cmNlTG9hZEJhc2VDUFUgICB0bXBJdGVtOwoK ICBsZW5ndGggPSBhZ2VudFRhYmxlXy5lbnRyaWVzKCk7CiAgZm9yICggaWk9MDsgaWk8bGVuZ3Ro OyBpaSsrKQogICAgewogICAgICAvKiAgICAgIF9jcHV0bXBJdGVtID0gYWdlbnRUYWJsZV8uZ2V0 SXRlbShpaSk7CgkgICAgICBfY3B1SXRlbS5BdmVyYWdlVmFsdWUgPSAtMSA7CgkgICAgICBfY3B1 SXRlbS5DdXJyZW50TGV2ZWwgPSAtMTsKCSAgICAgIF9jcHVJdGVtLkF2ZXJhZ2VPZkxhc3QyID0g LTEgOwoJICAgICAgc3RyY3B5KF9jcHVJdGVtLk5hbWUsIF9jcHV0bXBJdGVtLkl0ZW1OYW1lICk7 IAoJICAgICAgX2NwdUl0ZW0uSWQuQ2xhc3NDb2RlID0gQVBfTU5UX1JFU09VUkNFQ0xBU1NfQ1BV OwoJICAgICAgX2NwdUl0ZW0uSWQuSWRDb2RlID0gX2NwdXRtcEl0ZW0uSXRlbUlkOwoJICAgICAg Zm9yKCBpbnQgeXkgPSAwOyB5eSAgPCBzYW1wbGVMb2FkTGVuZ3RoXzsgeXkrKykKCSAgICAgIHsK CSAgICAgIF9jcHVJdGVtLlNhbXBsZURhdGEuc2FtcGxlQXJyYXkuYWRkSXRlbSggaW50KDApKTsK CSAgICAgIH0KCSAgICAgIF9jcHVJdGVtLlNhbXBsZURhdGEuc3RhcnQgPSAwOwoJICAgICAgX2Nw dUl0ZW0uU2FtcGxlRGF0YS5uZXh0ID0gMDsKCSAgICAgIF9jcHVJdGVtLlNhbXBsZURhdGEubWF4 TGVuZ3RoID0gMDsKCSAgICAgIF9jcHVJdGVtLlNhbXBsZURhdGEubGVuZ3RoID0gMDsKCSAgICAg IF9jcHVJdGVtLlNhbXBsZURhdGEubWF4TGVuZ3RoID0gc2FtcGxlTG9hZExlbmd0aF87IAoJICAg ICAgCgkgICAgICByZXNMb2FkUmVwb3J0LmNwdUxvYWQubGlzdC5hZGRJdGVtKF9jcHVJdGVtKTsq LwogICAgICB0bXBJdGVtID0gYWdlbnRUYWJsZV8uZ2V0SXRlbShpaSk7CiAgICAgIGFuSXRlbS5B dmVyYWdlVmFsdWUgPSAtMSA7CiAgICAgIGFuSXRlbS5DdXJyZW50TGV2ZWwgPSAtMTsKICAgICAg YW5JdGVtLkF2ZXJhZ2VPZkxhc3QyID0gLTEgOwogICAgICBzdHJjcHkoYW5JdGVtLk5hbWUsIHRt cEl0ZW0uSXRlbU5hbWUgKTsgCiAgICAgIGFuSXRlbS5JZC5DbGFzc0NvZGUgPSBBUF9NTlRfUkVT T1VSQ0VDTEFTU19DUFU7CiAgICAgIGFuSXRlbS5JZC5JZENvZGUgPSB0bXBJdGVtLkl0ZW1JZDsK ICAgICAgZm9yKCBpbnQgeXkgPSAwOyB5eSAgPCBzYW1wbGVMb2FkTGVuZ3RoXzsgeXkrKykKCXsK CSAgYW5JdGVtLlNhbXBsZURhdGEuc2FtcGxlQXJyYXkuYWRkSXRlbSggaW50KDApKTsKCX0KICAg ICAgYW5JdGVtLlNhbXBsZURhdGEuc3RhcnQgPSAwOwogICAgICBhbkl0ZW0uU2FtcGxlRGF0YS5u ZXh0ID0gMDsKICAgICAgYW5JdGVtLlNhbXBsZURhdGEubWF4TGVuZ3RoID0gMDsKICAgICAgYW5J dGVtLlNhbXBsZURhdGEubGVuZ3RoID0gMDsKICAgICAgYW5JdGVtLlNhbXBsZURhdGEubWF4TGVu Z3RoID0gc2FtcGxlTG9hZExlbmd0aF87IAogICAgICAKICAgICAgcmVzTG9hZFJlcG9ydC5jcHVM b2FkLmxpc3QuYWRkSXRlbShhbkl0ZW0pOwogICAgfQogCn0KCgovLz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g Ci8vIAovLyBOQU1FOiBmbUNvbnN0cnVjdFJlc0xvYWRSZXBvcnRGaWxlU3lzdGVtCi8vIAovLyBE RVNDUklQVElPTjogY29uc3RydWN0IHJlc291cmNlIGxvYWQgcmVwb3J0LCBmaWxlIHN5c3RlbSBz ZWN0aW9uCi8vICAgICAgICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIFBBUkFN RVRFUlMgOiBBcE1udFJlc291cmNlTG9hZEZpbGVTeXN0ZW1VRGVmQ2xhc3MgJmFnZW50VGFibGVf Ci8vIAovLyBSRVRVUk4gVkFMVUVTOiB2b2lkIAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9p ZCBDUE1vbkZNU2VydmVyOjpjb25zdHJ1Y3RSZXNMb2FkUmVwb3J0RmlsZVN5c3RlbSggQ1BNb25T aW5nbGVMaW5rTGlzdDxSZXNvdXJjZUxvYWRCYXNlRmlsZVN5c3RlbT4gIGFnZW50VGFibGVfICkK ewogIHVuc2lnbmVkIHNob3J0CWxlbmd0aDsKICB1bnNpZ25lZCBzaG9ydAlpaTsKIAogIFJlc0xv YWRSZXBvcnRGaWxlU3lzdGVtQmFzZSBhbkl0ZW07IAogIFJlc291cmNlTG9hZEJhc2VGaWxlU3lz dGVtIHRtcEl0ZW07CgogIGxlbmd0aCA9IGFnZW50VGFibGVfLmVudHJpZXMoKTsKICBmb3IgKCBp aT0wOyBpaTxsZW5ndGg7IGlpKyspCiAgICB7CiAgICAgIC8qCglfZmlsZXRtcEl0ZW0gPSBhZ2Vu dFRhYmxlXy5nZXRJdGVtKGlpKTsKCV9maWxlSXRlbS5UaHJlc2hvbGQgPSAtMSA7IAoJX2ZpbGVJ dGVtLkF2YWlsYWJsZVNwYWNlID0gLTEgOwoJX2ZpbGVJdGVtLkN1cnJlbnRMZXZlbCA9IC0xIDsK CV9maWxlSXRlbS5Jc3N1ZWRGaWxlU3lzSXByID0gMDsKCXN0cmNweShfZmlsZUl0ZW0uTmFtZSwg X2ZpbGV0bXBJdGVtLkl0ZW1OYW1lKTsKCXN0cmNweShfZmlsZUl0ZW0uRGV2aWNlTmFtZSwgX2Zp bGV0bXBJdGVtLkRpc2tOYW1lICk7CglfZmlsZUl0ZW0uSWQuQ2xhc3NDb2RlID0gQVBfTU5UX1JF U09VUkNFQ0xBU1NfRklMRVNZU1RFTTsKCV9maWxlSXRlbS5JZC5JZENvZGUgPSBfZmlsZXRtcEl0 ZW0uSXRlbUlkOwoJcmVzTG9hZFJlcG9ydC5maWxlU3lzdGVtQ2FwYWNpdHkubGlzdC5hZGRJdGVt KF9maWxlSXRlbSk7Ki8KICAgICAgdG1wSXRlbSA9IGFnZW50VGFibGVfLmdldEl0ZW0oaWkpOwog ICAgICBhbkl0ZW0uVGhyZXNob2xkID0gLTEgOyAKICAgICAgYW5JdGVtLkF2YWlsYWJsZVNwYWNl ID0gLTEgOwogICAgICBhbkl0ZW0uQ3VycmVudExldmVsID0gLTEgOwogICAgICBhbkl0ZW0uSXNz dWVkRmlsZVN5c0lwciA9IDA7CiAgICAgIHN0cmNweShhbkl0ZW0uTmFtZSwgdG1wSXRlbS5JdGVt TmFtZSk7CiAgICAgIHN0cmNweShhbkl0ZW0uRGV2aWNlTmFtZSwgdG1wSXRlbS5EaXNrTmFtZSAp OwogICAgICBhbkl0ZW0uSWQuQ2xhc3NDb2RlID0gQVBfTU5UX1JFU09VUkNFQ0xBU1NfRklMRVNZ U1RFTTsKICAgICAgYW5JdGVtLklkLklkQ29kZSA9IHRtcEl0ZW0uSXRlbUlkOwogICAgICByZXNM b2FkUmVwb3J0LmZpbGVTeXN0ZW1DYXBhY2l0eS5saXN0LmFkZEl0ZW0oYW5JdGVtKTsKICAgIH0K fQoKCgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0gCi8vIAovLyBOQU1FOiBmbUNvbnN0cnVjdFJlc0xvYWRS ZXBvcnREaXNrCi8vIAovLyBERVNDUklQVElPTjogY29uc3RydWN0IHJlc291cmNlIGxvYWQgcmVw b3J0IHRhYmxlLCBkaXNrIHNlY3Rpb24KLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0gIAovLyAKLy8gUEFSQU1FVEVSUyAgIDogIFJlc291cmNlTG9hZERpc2tVRGVmQ2xhc3MgICZh Z2VudFRhYmxlXywgaW50ICBzYW1wbGVMb2FkTGVuZ3RoXwovLyAKLy8gUkVUVVJOIFZBTFVFUzog dm9pZCAKLy8gCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6Y29uc3Ry dWN0UmVzTG9hZFJlcG9ydERpc2soIENQTW9uU2luZ2xlTGlua0xpc3Q8UmVzb3VyY2VMb2FkQmFz ZURpc2s+ICBhZ2VudFRhYmxlXywgaW50ICBzYW1wbGVMb2FkTGVuZ3RoXyApCnsKICB1bnNpZ25l ZCBzaG9ydCAgICAgbGVuZ3RoOwogIHVuc2lnbmVkIHNob3J0ICAgICBpaTsKIAogIFJlc291cmNl TG9hZEJhc2VEaXNrICB0bXBJdGVtOwogIFJlc0xvYWRSZXBvcnREaXNrQmFzZSAgYW5JdGVtOwog IAogIGxlbmd0aCA9IGFnZW50VGFibGVfLmVudHJpZXMoKTsKICBmb3IgKCBpaT0wOyBpaTxsZW5n dGg7IGlpKyspCiAgICB7CiAgICAgIC8qICAgX2Rpc2t0bXBJdGVtID0gYWdlbnRUYWJsZV8uZ2V0 SXRlbShpaSk7CgkgICBfZGlza0l0ZW0uQXZlcmFnZVZhbHVlID0gLTEgOwoJICAgX2Rpc2tJdGVt LkN1cnJlbnRMZXZlbCA9IC0xIDsKCSAgIF9kaXNrSXRlbS5BdmVyYWdlT2ZMYXN0MiA9IC0xIDsK CSAgIF9kaXNrSXRlbS5Jc3N1ZWREaXNrT3ZlcmxvYWRJcHIgPSAwIDsJCQkKCSAgIHN0cmNweShf ZGlza0l0ZW0uTmFtZSxfZGlza3RtcEl0ZW0uSXRlbU5hbWUpOwoJICAgX2Rpc2tJdGVtLklkLkNs YXNzQ29kZSA9IEFQX01OVF9SRVNPVVJDRUNMQVNTX0RJU0s7CgkgICBfZGlza0l0ZW0uSWQuSWRD b2RlID0gX2Rpc2t0bXBJdGVtLkl0ZW1JZDsKCSAgIGZvciggaW50IHl5ID0gMDsgeXkgIDwgc2Ft cGxlTG9hZExlbmd0aF87IHl5KyspCgkgICB7CgkgICBfZGlza0l0ZW0uU2FtcGxlRGF0YS5zYW1w bGVBcnJheS5hZGRJdGVtKGludCgwKSk7CgkgICB9CgkgICBfZGlza0l0ZW0uU2FtcGxlRGF0YS5z dGFydCA9IDA7CgkgICBfZGlza0l0ZW0uU2FtcGxlRGF0YS5uZXh0ID0gMDsKCSAgIF9kaXNrSXRl bS5TYW1wbGVEYXRhLm1heExlbmd0aCA9IDA7CgkgICBfZGlza0l0ZW0uU2FtcGxlRGF0YS5sZW5n dGggPSAwOwoJICAgX2Rpc2tJdGVtLlNhbXBsZURhdGEubWF4TGVuZ3RoID0gc2FtcGxlTG9hZExl bmd0aF87IAoJICAgcmVzTG9hZFJlcG9ydC5kaXNrTG9hZC5saXN0LmFkZEl0ZW0oX2Rpc2tJdGVt KTsKICAgICAgKi8KICAgICAgdG1wSXRlbSA9IGFnZW50VGFibGVfLmdldEl0ZW0oaWkpOwogICAg ICBhbkl0ZW0uQXZlcmFnZVZhbHVlID0gLTEgOwogICAgICBhbkl0ZW0uQ3VycmVudExldmVsID0g LTEgOwogICAgICBhbkl0ZW0uQXZlcmFnZU9mTGFzdDIgPSAtMSA7CiAgICAgIGFuSXRlbS5Jc3N1 ZWREaXNrT3ZlcmxvYWRJcHIgPSAwIDsJCQkKICAgICAgc3RyY3B5KGFuSXRlbS5OYW1lLHRtcEl0 ZW0uSXRlbU5hbWUpOwogICAgICBhbkl0ZW0uSWQuQ2xhc3NDb2RlID0gQVBfTU5UX1JFU09VUkNF Q0xBU1NfRElTSzsKICAgICAgYW5JdGVtLklkLklkQ29kZSA9IHRtcEl0ZW0uSXRlbUlkOwogICAg ICBmb3IoIGludCB5eSA9IDA7IHl5ICA8IHNhbXBsZUxvYWRMZW5ndGhfOyB5eSsrKQoJewoJICBh bkl0ZW0uU2FtcGxlRGF0YS5zYW1wbGVBcnJheS5hZGRJdGVtKGludCgwKSk7Cgl9CiAgICAgIGFu SXRlbS5TYW1wbGVEYXRhLnN0YXJ0ID0gMDsKICAgICAgYW5JdGVtLlNhbXBsZURhdGEubmV4dCA9 IDA7CiAgICAgIGFuSXRlbS5TYW1wbGVEYXRhLm1heExlbmd0aCA9IDA7CiAgICAgIGFuSXRlbS5T YW1wbGVEYXRhLmxlbmd0aCA9IDA7CiAgICAgIGFuSXRlbS5TYW1wbGVEYXRhLm1heExlbmd0aCA9 IHNhbXBsZUxvYWRMZW5ndGhfOyAKICAgICByZXNMb2FkUmVwb3J0LmRpc2tMb2FkLmxpc3QuYWRk SXRlbShhbkl0ZW0pOwoKICAgIH0KfQoKCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6 IGZtVXBkYXRlVGhyZXNob2xkSW5mbwovLyAKLy8gREVTQ1JJUFRJT046IEluc2VydCB0aHJlc2hv bGQgaW5mb3JtYXRpb24gaW50byB0aGUgcmVzb3VyY2UgbG9hZCByZXBvcnQgdGFibGUuCi8vICAg ICAgICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIFBBUkFNRVRFUlMgICAgICAg ICAgIDogQXBNbnRUaHJlc2hvbGRzICZ0aHJlc2hvbGRMaXN0XyAKLy8gCi8vIFJFVFVSTiBWQUxV RVM6IE5vbmUuIAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCBDUE1vbkZNU2VydmVyOjp1 cGRhdGVUaHJlc2hvbGRJbmZvKCBDUE1vbkZNQ29uZmlnSW5mbyB0aHJlc2hvbGRJbmZvICkKewog IHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5UaHJlc2hvbGQgPSB0aHJlc2hvbGRJbmZvLnRocmVzaG9s ZHMuQ1BVTG9hZDsKICByZXNMb2FkUmVwb3J0LmRpc2tMb2FkLlRocmVzaG9sZCA9IHRocmVzaG9s ZEluZm8udGhyZXNob2xkcy5EaXNrTG9hZDsKICByZXNMb2FkUmVwb3J0Lm1lbW9yeUxvYWQuVGhy ZXNob2xkID0gdGhyZXNob2xkSW5mby50aHJlc2hvbGRzLk1lbW9yeUxvYWQ7CiAgcmVzTG9hZFJl cG9ydC5zd2FwU3BhY2VMb2FkLlRocmVzaG9sZCA9IHRocmVzaG9sZEluZm8udGhyZXNob2xkcy5T d2FwU3BhY2VMb2FkOwogIHJlc0xvYWRSZXBvcnQubWlzY1N5c3RlbVN0YXR1cy5OdW1iZXJPZkJs b2NrZWRQcm9jc1RocmVzaG9sZCA9IHRocmVzaG9sZEluZm8udGhyZXNob2xkcy5OdW1iZXJPZkJs b2NrZWRQcm9jczsKICByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuTnVtYmVyT2ZSdW5u YWJsZVByb2NzVGhyZXNob2xkID0gdGhyZXNob2xkSW5mby50aHJlc2hvbGRzLk51bWJlck9mUnVu bmFibGVQcm9jczsKCgogIHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5DbGVhcklQUlRocmVzaG9sZCA9 IHRocmVzaG9sZEluZm8udGhyZXNob2xkcy5DUFVMb2FkOwogIHJlc0xvYWRSZXBvcnQuZGlza0xv YWQuQ2xlYXJJUFJUaHJlc2hvbGQgPSB0aHJlc2hvbGRJbmZvLnRocmVzaG9sZHMuRGlza0xvYWQ7 CiAgcmVzTG9hZFJlcG9ydC5tZW1vcnlMb2FkLkNsZWFySVBSVGhyZXNob2xkID0gdGhyZXNob2xk SW5mby50aHJlc2hvbGRzLk1lbW9yeUxvYWQ7CiAgcmVzTG9hZFJlcG9ydC5zd2FwU3BhY2VMb2Fk LkNsZWFySVBSVGhyZXNob2xkID0gdGhyZXNob2xkSW5mby50aHJlc2hvbGRzLlN3YXBTcGFjZUxv YWQ7CiAgcmVzTG9hZFJlcG9ydC5taXNjU3lzdGVtU3RhdHVzLkJsb2NrZWRQcm9jc0NsZWFySVBS VGhyZXNob2xkID0gdGhyZXNob2xkSW5mby50aHJlc2hvbGRzLk51bWJlck9mQmxvY2tlZFByb2Nz OwogIHJlc0xvYWRSZXBvcnQubWlzY1N5c3RlbVN0YXR1cy5SdW5uYWJsZVByb2NzQ2xlYXJJUFJU aHJlc2hvbGQgPSB0aHJlc2hvbGRJbmZvLnRocmVzaG9sZHMuTnVtYmVyT2ZSdW5uYWJsZVByb2Nz OwoKCiAgRmlsZVN5c3RlbVRocmVzaG9sZEJhc2UgdG1wSXRlbTE7CiAgUmVzTG9hZFJlcG9ydEZp bGVTeXN0ZW1CYXNlIHRtcEl0ZW0yOwoKICBpbnQgbGVuZ3RoID0gIHRocmVzaG9sZEluZm8udGhy ZXNob2xkcy5maWxlU3lzdGVtQ2FwYWNpdHkuZW50cmllcygpOwoKICBmb3IgKCBpbnQgaWkgPSAw OyBpaTxsZW5ndGg7IGlpKyspCiAgICB7CiAgICAgIHRtcEl0ZW0xID0gdGhyZXNob2xkSW5mby50 aHJlc2hvbGRzLmZpbGVTeXN0ZW1DYXBhY2l0eS5nZXRJdGVtKGlpKTsKICAgICAgaWYgKCBzdHJj bXAoIChjb25zdCBjaGFyICopKHRtcEl0ZW0xLlBhdGhOYW1lKSwgImRlZmF1bHQiKSA9PSAwKQoJ ewogICAgICAgICAgaW50IG51bUVudHJ5ID0gcmVzTG9hZFJlcG9ydC5maWxlU3lzdGVtQ2FwYWNp dHkubGlzdC5lbnRyaWVzKCk7CiAgICAgICAgICBmb3IoIGludCBqaiA9IDAgOyBqajwgbnVtRW50 cnk7IGpqKyspCgkgICAgewoKICAgICAgICAgICAgICAgdG1wSXRlbTIgPSByZXNMb2FkUmVwb3J0 LmZpbGVTeXN0ZW1DYXBhY2l0eS5saXN0LmdldEl0ZW0oamopOwoJICAgICAgIGlmICggdG1wSXRl bTIuVGhyZXNob2xkID09IC0xKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICB0bXBJdGVtMi5UaHJlc2hvbGQgPSB0bXBJdGVtMS5UaHJlc2hvbGQ7CiAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICB9Cgl9CiAgICAgIGVsc2UKCXsKCSAgaW50IG51bUVudHJ5ID0gcmVz TG9hZFJlcG9ydC5maWxlU3lzdGVtQ2FwYWNpdHkubGlzdC5lbnRyaWVzKCk7CiAgICAgICAgICBm b3IoIGludCBqaiA9IDA7IGpqPCBudW1FbnRyeTsgamorKykKCSAgICB7CgkgICAgICB0bXBJdGVt MiA9IHJlc0xvYWRSZXBvcnQuZmlsZVN5c3RlbUNhcGFjaXR5Lmxpc3QuZ2V0SXRlbShqaik7CiAg ICAgICAgICAgICAgaWYgKCAhc3RyY21wKCB0bXBJdGVtMS5QYXRoTmFtZSwgdG1wSXRlbTIuTmFt ZSkgKQoJCXsKCQkgIHRtcEl0ZW0yLlRocmVzaG9sZCA9IHRtcEl0ZW0xLlRocmVzaG9sZDsKCQkg IGJyZWFrOwkJCgkJfQkgICAgICAKICAgICAgICAgICAgfQoJfQogICAgfQp9CgoKLy89PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09IAovLyAKLy8gTkFNRTogYmxvY2tlZElPRmF1bHREZXRlY3QKLy8gCi8vIERFU0NS SVBUSU9OOiBkZXRlY3QgQmxvY2tlZElPIGZhdWx0LCBhbmQgSW5zdWZmaWNpZW50IENQVSBwb3dl ciBmYXVsdC4KLy8gICAgICAgICAgICAgIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gUEFS QU1FVEVSUyAgICB2b2lkICAgICAgIAovLyAKLy8gUkVUVVJOIFZBTFVFUzogIHZvaWQKLy8gCi8v PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PSAgCnZvaWQgQ1BNb25GTVNlcnZlcjo6YmxvY2tlZElPRmF1bHREZXRl Y3QoKQp7CiAgaW50CQludW1PZkJsb2NrZWRQcm9jczsKICBpbnQJCW51bU9mUnVubmFibGVQcm9j czsKICBpbnQJCXRoZVRocmVzaG9sZDsKICBpbnQgICAgICAgICAgIGNsZWFySVBSVGhyZXNob2xk OwogIGludAkJbnVtT2ZDUFU7CiAKICAvLyBEZXRlY3QgYmxvY2tlZCBJTyBmYXVsdAogIG51bU9m QmxvY2tlZFByb2NzID0gcmVzTG9hZFJlcG9ydC5taXNjU3lzdGVtU3RhdHVzLk51bWJlck9mQmxv Y2tlZFByb2NzOwogIG51bU9mUnVubmFibGVQcm9jcyA9IHJlc0xvYWRSZXBvcnQubWlzY1N5c3Rl bVN0YXR1cy5OdW1iZXJPZlJ1bm5hYmxlUHJvY3M7CiAgdGhlVGhyZXNob2xkID0gcmVzTG9hZFJl cG9ydC5taXNjU3lzdGVtU3RhdHVzLk51bWJlck9mQmxvY2tlZFByb2NzVGhyZXNob2xkOwogIGNs ZWFySVBSVGhyZXNob2xkID0gcmVzTG9hZFJlcG9ydC5taXNjU3lzdGVtU3RhdHVzLkJsb2NrZWRQ cm9jc0NsZWFySVBSVGhyZXNob2xkOwogIGlmICggKG51bU9mQmxvY2tlZFByb2NzIC0gbnVtT2ZS dW5uYWJsZVByb2NzLzIpID4gdGhlVGhyZXNob2xkICkKICAgIHsKICAgICBpZiggICEgcmVzTG9h ZFJlcG9ydC5taXNjU3lzdGVtU3RhdHVzLklzc3VlZEJsb2NrZWRJT0lwciAgICkKCXsKICAgICAg ICAgICByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuSXNzdWVkQmxvY2tlZElPSXByID0g QVBfTU5UX0lTU1VFX0lQUiA7CiAgICAgICAgICAgZmF1bHRSZXBvcnRJbnNlcnQoQVNQX0NNX0JM T0NLRURfSU8sQVBfTU5UX0FMQVJNX09OLCIiLG51bU9mQmxvY2tlZFByb2NzLCAiIiwKICAgICAg ICAgICBudW1PZlJ1bm5hYmxlUHJvY3MsIHRoZVRocmVzaG9sZCk7CSAKCX0KICAgICB9CiAgZWxz ZSAgaWYgKCAobnVtT2ZCbG9ja2VkUHJvY3MgLSBudW1PZlJ1bm5hYmxlUHJvY3MvMikgPD0gIGNs ZWFySVBSVGhyZXNob2xkICApCiAgICB7CiAgICAgaWYoIHJlc0xvYWRSZXBvcnQubWlzY1N5c3Rl bVN0YXR1cy5Jc3N1ZWRCbG9ja2VkSU9JcHIgKQoJewogICAgICAgICAgcmVzTG9hZFJlcG9ydC5t aXNjU3lzdGVtU3RhdHVzLklzc3VlZEJsb2NrZWRJT0lwciA9IEFQX01OVF9DTEVBUl9JUFIgOwog ICAgICAgICAgZmF1bHRSZXBvcnRJbnNlcnQoQVNQX0NNX0JMT0NLRURfSU8sQVBfTU5UX0FMQVJN X09GRiwgIiIsbnVtT2ZCbG9ja2VkUHJvY3MsCgkJCSIiLG51bU9mUnVubmFibGVQcm9jcywgY2xl YXJJUFJUaHJlc2hvbGQpOyAgCgl9CiAgICB9CiAgICAKfQoKLy89PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAov LyAKLy8gTkFNRTogaW5zdWZmQ1BVcG93ZXJEZXRlY3QKLy8gCi8vIERFU0NSSVBUSU9OOiBkZXRl Y3QgaW5zdWZmaWNpZW50IENQVSBwb3dlciBCbG9ja2VkSU8gZmF1bHQKLy8gICAgICAgICAgICAg IAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gUEFSQU1FVEVSUyAgICB2b2lkICAgICAgIAov LyAKLy8gUkVUVVJOIFZBTFVFUzogIHZvaWQKLy8gCi8vPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCnZvaWQg Q1BNb25GTVNlcnZlcjo6aW5zdWZmQ1BVcG93ZXJEZXRlY3QoKQp7CiAgLy8gRGV0ZWN0IGluc3Vm ZmljaWVudCBDUFUgcG93ZXIKICBpbnQgbnVtT2ZDUFUgPSByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0 ZW1TdGF0dXMuTnVtYmVyT2ZDUFVzOwogIGludCB0aGVUaHJlc2hvbGQgPSByZXNMb2FkUmVwb3J0 Lm1pc2NTeXN0ZW1TdGF0dXMuTnVtYmVyT2ZSdW5uYWJsZVByb2NzVGhyZXNob2xkOwogIGludCBj bGVhcklQUlRocmVzaG9sZCA9ICByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuUnVubmFi bGVQcm9jc0NsZWFySVBSVGhyZXNob2xkOwogIGludCBudW1PZlJ1bm5hYmxlUHJvY3MgPSByZXNM b2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuTnVtYmVyT2ZSdW5uYWJsZVByb2NzOwoKICBpZiAo IChpbnQpKG51bU9mUnVubmFibGVQcm9jcy9udW1PZkNQVSArIDAuNSkgPiB0aGVUaHJlc2hvbGQg KQogICAgewogICAgIGlmKCAhIHJlc0xvYWRSZXBvcnQubWlzY1N5c3RlbVN0YXR1cy5Jc3N1ZWRD cHVQb3dlckluc3VmZklwciAgKQogICAgICAgewogICAgICAgIHJlc0xvYWRSZXBvcnQubWlzY1N5 c3RlbVN0YXR1cy5Jc3N1ZWRDcHVQb3dlckluc3VmZklwciA9IEFQX01OVF9JU1NVRV9JUFIgOwog ICAgICAgIGZhdWx0UmVwb3J0SW5zZXJ0KEFTUF9DTV9DUFVfUE9XRVJfSU5TVUZGLEFQX01OVF9B TEFSTV9PTiwiIiwgbnVtT2ZSdW5uYWJsZVByb2NzLAoJCQkiIiwgbnVtT2ZDUFUsdGhlVGhyZXNo b2xkKTsgCgl9CiAgICB9CiAgZWxzZSAgaWYgKCAoaW50KShudW1PZlJ1bm5hYmxlUHJvY3MvbnVt T2ZDUFUgKyAwLjUpIDw9IGNsZWFySVBSVGhyZXNob2xkICkKICAgIHsKICAgICBpZiggcmVzTG9h ZFJlcG9ydC5taXNjU3lzdGVtU3RhdHVzLklzc3VlZENwdVBvd2VySW5zdWZmSXByICkKICAgICAg IHsKICAgICAgICByZXNMb2FkUmVwb3J0Lm1pc2NTeXN0ZW1TdGF0dXMuSXNzdWVkQ3B1UG93ZXJJ bnN1ZmZJcHIgPSBBUF9NTlRfQ0xFQVJfSVBSIDsKICAgICAgICBmYXVsdFJlcG9ydEluc2VydChB U1BfQ01fQ1BVX1BPV0VSX0lOU1VGRixBUF9NTlRfQUxBUk1fT0ZGLCAiIiwgbnVtT2ZSdW5uYWJs ZVByb2NzLAoJCQkiIiwgbnVtT2ZDUFUsIGNsZWFySVBSVGhyZXNob2xkKTsgIAoJfQogICAgfQog ICAgCn0KCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSAKLy8gCi8vIE5BTUU6IGluc2VydEluU2FtcGxlQXJy YXkgCi8vIAovLyBERVNDUklQVElPTjogQWRkIG5ldyBsb2FkIHZhbHVlIHRvIHRoZSBhcnJheQov LyAgICAgICAgICAgICAgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBQQVJBTUVURVJTICAg ICAgICAgCi8vIAovLyBSRVRVUk4gVkFMVUVTOiAgdm9pZAovLyAKLy89PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ICAKdm9pZCBDUE1vbkZNU2VydmVyOjppbnNlcnRJblNhbXBsZUFycmF5KExvYWRTYW1wbGVBcnJh eSAmIGVudHJ5UHRyLCBpbnQgbmV3SXRlbSkKewogIGlmICggZW50cnlQdHIubGVuZ3RoIDwgZW50 cnlQdHIubWF4TGVuZ3RoICkKICAgIHsKICAgICAgKGVudHJ5UHRyLnNhbXBsZUFycmF5LmdldEl0 ZW0oZW50cnlQdHIubmV4dCkpID0gbmV3SXRlbTsKICAgICAgZW50cnlQdHIubGVuZ3RoKys7CiAg ICAgIGlmICggKytlbnRyeVB0ci5uZXh0ID49IGVudHJ5UHRyLm1heExlbmd0aCkKCXsKCSAgZW50 cnlQdHIubmV4dCA9IDA7Cgl9CiAgICB9CiAgZWxzZQogICAgewogICAgICAvLyByZWFjaGVkIG1h eC4gb2YgdGhlIGFycmF5CiAgICAgIGlmICggKytlbnRyeVB0ci5zdGFydCA+PSBlbnRyeVB0ci5t YXhMZW5ndGggKQoJewoJICBlbnRyeVB0ci5zdGFydCA9IDA7Cgl9CiAgICAgIGVudHJ5UHRyLmxl bmd0aC0tOwogICAgICBpbnNlcnRJblNhbXBsZUFycmF5KGVudHJ5UHRyLG5ld0l0ZW0pOwogICAg fSAgIAp9CgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0gCi8vIAovLyBOQU1FOiBzYW1wbGVBcnJheUF2ZXJh Z2UKLy8gCi8vIERFU0NSSVBUSU9OOiBDYWxjdWxhdGUgdGhlIGF2ZXJhZ2Ugb2YgdmFsdWVzIGlu IHRoZSBhcnJheQovLyAgICAgICAgICAgICAgCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCi8vIAovLyBQ QVJBTUVURVJTICAgICAgICAgCi8vIAovLyBSRVRVUk4gVkFMVUVTOiAgdm9pZAovLyAKLy89PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ICAKaW50IENQTW9uRk1TZXJ2ZXI6OnNhbXBsZUFycmF5QXZlcmFnZSggTG9h ZFNhbXBsZUFycmF5ICYgZW50cnlQdHIpCnsKICBpbnQgCQkJCXN1bTsKICB1bnNpZ25lZCBzaG9y dAlpaTsKICBpbnQJCQkJYXZlcmFnZTsKIAogIHN1bSA9IDA7CiAgaWYgKCBlbnRyeVB0ci5zdGFy dCA8IGVudHJ5UHRyLm5leHQgKQogICAgewogICAgICBmb3IgKCBpaT0gZW50cnlQdHIuc3RhcnQ7 IGlpPCBlbnRyeVB0ci5uZXh0OyBpaSsrKQoJewoJICBzdW0gPSBzdW0gKyAoZW50cnlQdHIuc2Ft cGxlQXJyYXkuZ2V0SXRlbShpaSkpIDsgCgl9CiAgICB9CiAgZWxzZQogICAgewogICAgICBmb3Ig KCBpaT0gZW50cnlQdHIuc3RhcnQ7IGlpPCBlbnRyeVB0ci5tYXhMZW5ndGg7IGlpKyspCgl7Cgkg IHN1bSA9IHN1bSArIChlbnRyeVB0ci5zYW1wbGVBcnJheS5nZXRJdGVtKGlpKSk7Cgl9CiAgICAg IGZvciAoIGlpPTA7IGlpPGVudHJ5UHRyLm5leHQ7IGlpKyspCgl7CgkgIHN1bSA9IHN1bSArIChl bnRyeVB0ci5zYW1wbGVBcnJheS5nZXRJdGVtKGlpKSk7IAoJfQogICAgfQogIGF2ZXJhZ2UgPSBz dW0gLyBlbnRyeVB0ci5sZW5ndGg7CiAgcmV0dXJuIGF2ZXJhZ2U7IAp9CgoKLy89PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09IAovLyAKLy8gTkFNRTogZGV0ZWN0VW5ldmVuTG9hZCgpCi8vIAovLyBERVNDUklQVElP TjogQ2FsY3VsYXRlIHRoZSBhdmVyYWdlIG9mIHZhbHVlcyBpbiB0aGUgYXJyYXkKLy8gICAgICAg ICAgICAgIAovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAovLyAKLy8gUEFSQU1FVEVSUyAgICAgICAgIAov LyAKLy8gUkVUVVJOIFZBTFVFUzogIHZvaWQKLy8KLy8gUkVWSVNJT04gSElTVE9SWSAgIAovLyAg ICAgICAxMS0yMy05OCBsZGluaCA6IGZpeGVkIFBSVCAxMjc1NDIgIlZBUFMgZG9lcyBub3QgcmVw b3J0IENQVSBVTkVWRU4gTE9BRC4iIAovLyAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKdm9pZCAgQ1BN b25GTVNlcnZlcjo6ZGV0ZWN0VW5ldmVuTG9hZCgpCnsKICBSZXNMb2FkUmVwb3J0Q1BVQmFzZQlh bkl0ZW07CiAgUmVzTG9hZFJlcG9ydENQVUJhc2UJdGFyZ2V0SXRlbTsKICB1bnNpZ25lZCBzaG9y dAlpaSwgamosIGxlbmd0aDsKICAKICBsZW5ndGggPSByZXNMb2FkUmVwb3J0LmNwdUxvYWQubGlz dC5lbnRyaWVzKCk7CiAgZm9yICggaWk9MDsgaWk8bGVuZ3RoO2lpKyspCiAgICB7CiAgICAgIGFu SXRlbSA9IHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5saXN0LmdldEl0ZW0oaWkpOwogICAgICBpZiAo IGFuSXRlbS5BdmVyYWdlT2ZMYXN0MiA+IHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5UaHJlc2hvbGQg KQoJewoJICAvLyBmb3VuZCB0aGUgb25lIHRoYXQncyBncmVhdGVyIHRoYW4gdGhyZXNob2xkLCBs b29wIHRocm91Z2h0CgkgIC8vIGFnYWluIGFuZCBmaW5kIG9uZSB0aGF0IGlzIGJlbG93IGhhbGYg b2YgdGhyZXNob2xkCgkgIGZvciAoIGpqPTA7IGpqPGxlbmd0aDsgamorKykKCSAgICB7CgkgICAg ICB0YXJnZXRJdGVtID0gcmVzTG9hZFJlcG9ydC5jcHVMb2FkLmxpc3QuZ2V0SXRlbShqaik7ICAK CSAgICAgIGlmICggdGFyZ2V0SXRlbS5BdmVyYWdlT2ZMYXN0MiA8ICgwLjUqcmVzTG9hZFJlcG9y dC5jcHVMb2FkLlRocmVzaG9sZCkgKQoJCXsKCQkgIGlmICghcmVzTG9hZFJlcG9ydC5jcHVMb2Fk Lklzc3VlZFVuZXZlbkxvYWRJcHIpIAoJCSAgICB7CgkJICAgICAgcmVzTG9hZFJlcG9ydC5jcHVM b2FkLklzc3VlZFVuZXZlbkxvYWRJcHIgPSBBUF9NTlRfSVNTVUVfSVBSIDsKCQkgICAgICBmYXVs dFJlcG9ydEluc2VydChBU1BfQ01fQ1BVX1VORVZFTl9MT0FELCBBUF9NTlRfQUxBUk1fT04sIGFu SXRlbS5OYW1lLAoJCQlhbkl0ZW0uQXZlcmFnZU9mTGFzdDIsIHRhcmdldEl0ZW0uTmFtZSwgdGFy Z2V0SXRlbS5BdmVyYWdlT2ZMYXN0MiwKCQkJcmVzTG9hZFJlcG9ydC5jcHVMb2FkLlRocmVzaG9s ZCk7ICAKCQkgICAgfQoJCX0KCSAgICAgIGVsc2UKCQl7CgkJICBpZihyZXNMb2FkUmVwb3J0LmNw dUxvYWQuSXNzdWVkVW5ldmVuTG9hZElwcikKCQkgICAgewoJCSAgICAgIHJlc0xvYWRSZXBvcnQu Y3B1TG9hZC5Jc3N1ZWRVbmV2ZW5Mb2FkSXByID0gQVBfTU5UX0NMRUFSX0lQUiA7CgkJICAgICAg ZmF1bHRSZXBvcnRJbnNlcnQoQVNQX0NNX0NQVV9VTkVWRU5fTE9BRCwgQVBfTU5UX0FMQVJNX09G RiwgYW5JdGVtLk5hbWUsCgkJCSBhbkl0ZW0uQXZlcmFnZU9mTGFzdDIsIHRhcmdldEl0ZW0uTmFt ZSwgdGFyZ2V0SXRlbS5BdmVyYWdlT2ZMYXN0MiwKCQkJIHJlc0xvYWRSZXBvcnQuY3B1TG9hZC5U aHJlc2hvbGQpOyAKCQkgICAgfQoJCX0KCSAgICB9Cgl9IAogICAgfQogIAp9ICAKICAKLy89PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09IAovLyAKLy8gTkFNRTogZmF1bHRSZXBvcnRJbnNlcnQKLy8gCi8vIERFU0NS SVBUSU9OOiBBcHBlbmQgYW4gZWxlbWVudCB0byB0aGUgRmF1bHRSZXBvciBMaXN0Ci8vICAgICAg ICAgICAgICAKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKLy8gCi8vIFBBUkFNRVRFUlMgICAgICAgICAK Ly8gCi8vIFJFVFVSTiBWQUxVRVM6ICB2b2lkCi8vIAovLz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAp2b2lk IENQTW9uRk1TZXJ2ZXI6OmZhdWx0UmVwb3J0SW5zZXJ0KGludCBmYXVsdFR5cGVfICwgaW50IGFs YXJtU3RhdHVzXywgY29uc3QgY2hhciAqIGRldmljZTFfLCAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgdmFsdWUxXywgY29uc3QgY2hhciAqIGRldmljZTJfLCBpbnQg dmFsdWUyXywgaW50IHRocmVzaG9sZF8gKQp7CiAgRmF1bHRSZXBvcnRCYXNlICAgYW5JdGVtIDsK ICBhbkl0ZW0uRmF1bHRUeXBlID0gZmF1bHRUeXBlXzsKICBhbkl0ZW0uYWxhcm1BY3Rpb24gPSBh bGFybVN0YXR1c187CiAgc3RyY3B5KGFuSXRlbS5EZXZpY2UxLGRldmljZTFfKTsKICBhbkl0ZW0u VmFsdWUxID0gdmFsdWUxXzsKICBzdHJjcHkoYW5JdGVtLkRldmljZTIsIGRldmljZTJfKTsKICBh bkl0ZW0uVmFsdWUyID0gdmFsdWUyXzsKICBhbkl0ZW0uVGhyZXNob2xkID0gdGhyZXNob2xkXzsK ICBmYXVsdFJlcG9ydC5hZGRJdGVtKGFuSXRlbSk7IAp9Cgo=
next reply other threads:[~2002-02-01 10:06 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2002-02-01 2:06 prabha.venkatachalam [this message] 2002-02-04 9:16 rodrigc 2002-02-04 21:46 Prabha Suresh 2002-02-18 17:24 rodrigc
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20020201095958.23685.qmail@sources.redhat.com \ --to=prabha.venkatachalam@alcatel.com \ --cc=gcc-gnats@gcc.gnu.org \ --cc=prabha_p_v@yahoo.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).