From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 26720 invoked from network); 25 Jul 2020 08:35:37 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 25 Jul 2020 08:35:37 -0000 Content-Type: multipart/mixed; boundary="===============0889230504003198100==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_bash=3A_stop_vendoring_patch?= To: ml@inbox.vuxu.org From: sgn Reply-to: ml@inbox.vuxu.org Message-ID: Date: Sat, 25 Jul 2020 10:35:31 +0200 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============0889230504003198100== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IHNnbiBhZ2FpbnN0IG1hc3RlciBvbiB0aGUg dm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vc2duL3ZvaWQtcGFj a2FnZXMgYmFzaC1uby12ZW5kb3IKaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1w YWNrYWdlcy9wdWxsLzIzODI2CgpiYXNoOiBzdG9wIHZlbmRvcmluZyBwYXRjaAotIGNhcnJ5IHRo ZW0gYWxvbmcgd29uJ3QgZ2V0IHVzIGFueXdoZXJlDQotIHZlcmlmeSBjaGVja3N1bSBmb3IgbGli cmVhZGxpbmU4DQoNCmNvbmZsaWN0IHdpdGggIzIzODE1IAoKQSBwYXRjaCBmaWxlIGZyb20gaHR0 cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzIzODI2LnBhdGNo IGlzIGF0dGFjaGVk --===============0889230504003198100== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-bash-no-vendor-23826.patch" RnJvbSBlNWIyYTU2NWFjMzI5MTdmOTE0M2ZkOGE1OGMyZTE4MDkwZjJjYjkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/PUM0PTkwbz1DMz1BMG49MjBUcj1FMT1CQT1B N249MjBDPUMzPUI0bmc9MjBEYW5oPz0KIDxjb25nZGFuaHF4QGdtYWlsLmNvbT4KRGF0ZTogU2F0 LCAyNSBKdWwgMjAyMCAxMDoxNzowMSArMDcwMApTdWJqZWN0OiBbUEFUQ0ggMS80XSBnaXRhdHRy aWJ1dGVzOiBkb24ndCBzaG93IHdoaXRlc3BhY2UgZXJyb3Igb24gcGF0Y2hlcwoKLS0tCiAuZ2l0 YXR0cmlidXRlcyB8IDIgKysKIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS8uZ2l0YXR0cmlidXRlcyBiLy5naXRhdHRyaWJ1dGVzCmluZGV4IDdmMjRhOGY4MWQw Li44ZGRhZTZmY2U0NSAxMDA2NDQKLS0tIGEvLmdpdGF0dHJpYnV0ZXMKKysrIGIvLmdpdGF0dHJp YnV0ZXMKQEAgLTEsMiArMSw0IEBACiB0ZW1wbGF0ZSBsaW5ndWlzdC1sYW5ndWFnZT1iYXNoCiBj b21tb24vc2hsaWJzIG1lcmdlPXVuaW9uCisqLnBhdGNoIHdoaXRlc3BhY2U9LXNwYWNlLWJlZm9y ZS10YWIsLXRyYWlsaW5nLXNwYWNlCisqLmRpZmYgd2hpdGVzcGFjZT0tc3BhY2UtYmVmb3JlLXRh YiwtdHJhaWxpbmctc3BhY2UKCkZyb20gZGJmZjRhNzkzZWViOTYwZDIxNGNlZDEyNWIyNWVkZDkz NWVhMjNmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xPz1DND05MG89 QzM9QTBuPTIwVHI9RTE9QkE9QTduPTIwQz1DMz1CNG5nPTIwRGFuaD89CiA8Y29uZ2RhbmhxeEBn bWFpbC5jb20+CkRhdGU6IFNhdCwgMjUgSnVsIDIwMjAgMTU6Mjg6NTMgKzA3MDAKU3ViamVjdDog W1BBVENIIDIvNF0gYmFzaDogdXBkYXRlIHRvIDUuMC4wMTguCgpDbG9zZTogIzIzODE1Ci0tLQog c3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDEgICAgICAgICAgICAgfCAxNjcgLS0tLS0tLS0t LS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDIgICAgICAgICAgICAgfCAxMTMgLS0t LS0tLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwMyAgICAgICAgICAgICB8IDIzOSAt LS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA0ICAgICAgICAg ICAgIHwgIDUzIC0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA1ICAgICAgICAgICAg IHwgMTEwIC0tLS0tLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwNiAgICAgICAgICAg ICB8ICA0NyAtLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwNyAgICAgICAgICAgICB8 ICA2MiAtLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDggICAgICAgICAgICAgfCAg NjggLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA5ICAgICAgICAgICAgIHwgIDQy IC0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDEwICAgICAgICAgICAgIHwgMTcyIC0t LS0tLS0tLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDExICAgICAgICAgICAgIHwg IDU5IC0tLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMiAgICAgICAgICAgICB8ICA2 NCAtLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTMgICAgICAgICAgICAgfCAgNzMg LS0tLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNCAgICAgICAgICAgICB8ICA1MiAt LS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNSAgICAgICAgICAgICB8ICA3OCAtLS0t LS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE2ICAgICAgICAgICAgIHwgIDU4IC0tLS0t CiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNyAgICAgICAgICAgICB8IDI4OSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvdXBkYXRlLWJhc2gtcGF0Y2hlcy5z aCB8ICAgNyAtCiBzcmNwa2dzL2Jhc2gvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICB8ICA0 NSArKystCiAxOSBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAxNzYyIGRlbGV0aW9u cygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAxCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDIKIGRlbGV0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwMwogZGVsZXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA0CiBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDUKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jh c2gvZmlsZXMvYmFzaDUwLTAwNgogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxl cy9iYXNoNTAtMDA3CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1 MC0wMDgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwOQog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDEwCiBkZWxldGUg bW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTEKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMgogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDEzCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9i YXNoL2ZpbGVzL2Jhc2g1MC0wMTQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAxNQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDE2CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTcK IGRlbGV0ZSBtb2RlIDEwMDc1NSBzcmNwa2dzL2Jhc2gvZmlsZXMvdXBkYXRlLWJhc2gtcGF0Y2hl cy5zaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAxIGIvc3JjcGtn cy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4 N2JkODJjZjcyLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAw MQorKysgL2Rldi9udWxsCkBAIC0xLDE2NyArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQ T1JUCi0JCQkgICAgID09PT09PT09PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRj aC1JRDoJYmFzaDUwLTAwMQotCi1CdWctUmVwb3J0ZWQtYnk6CWF4ZWxAZnJlYWtvdXQuZGUKLUJ1 Zy1SZWZlcmVuY2UtSUQ6CTwyMDE5MDEwODIwNTAueDA4S29TaFMwMDY3MzFAYm9uZ28uZnJlYWtv dXQuZGU+Ci1CdWctUmVmZXJlbmNlLVVSTDoJaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9o dG1sL2J1Zy1iYXNoLzIwMTktMDEvbXNnMDAwNzkuaHRtbAotCi1CdWctRGVzY3JpcHRpb246Ci0K LVVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgdGhlIGdsb2IgZXhwYW5zaW9uIGNvZGUgZGlk IG5vdCByZW1vdmUKLWJhY2tzbGFzaGVzIGVzY2FwaW5nIGNoYXJhY3RlcnMgaW4gZGlyZWN0b3J5 IG5hbWVzIChvciBwb3J0aW9ucyBvZiBhCi1wYXR0ZXJuIHByZWNlZGluZyBhIHNsYXNoKS4KLQot UGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcpOgotCi0qKiogLi4vYmFzaC01LjAvYmFzaGxp bmUuYwkyMDE4LTExLTI3IDEzOjIwOjE2LjAwMDAwMDAwMCAtMDUwMAotLS0tIGJhc2hsaW5lLmMJ MjAxOS0wMS0xNiAxNjowNjowMy4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioqKgotKioq IDIzMiwyMzUgKioqKgotLS0tIDIzMiwyMzYgLS0tLQotICBzdGF0aWMgaW50IGJhc2hfcG9zc2li bGVfY29tbWFuZF9jb21wbGV0aW9ucyBfX1AoKGludCwgaW50KSk7Ci0gIAotKyBzdGF0aWMgaW50 IGNvbXBsZXRpb25fZ2xvYl9wYXR0ZXJuIF9fUCgoY2hhciAqKSk7Ci0gIHN0YXRpYyBjaGFyICpn bG9iX2NvbXBsZXRlX3dvcmQgX19QKChjb25zdCBjaGFyICosIGludCkpOwotICBzdGF0aWMgaW50 IGJhc2hfZ2xvYl9jb21wbGV0aW9uX2ludGVybmFsIF9fUCgoaW50KSk7Ci0qKioqKioqKioqKioq KioKLSoqKiAxNzQyLDE3NDYgKioqKgotICAgIC8qIFRoaXMgY291bGQgYmUgYSBnbG9iYmluZyBw YXR0ZXJuLCBzbyB0cnkgdG8gZXhwYW5kIGl0IHVzaW5nIHBhdGhuYW1lCi0gICAgICAgZXhwYW5z aW9uLiAqLwotISAgIGlmICghbWF0Y2hlcyAmJiBnbG9iX3BhdHRlcm5fcCAodGV4dCkpCi0gICAg ICB7Ci0gICAgICAgIG1hdGNoZXMgPSBybF9jb21wbGV0aW9uX21hdGNoZXMgKHRleHQsIGdsb2Jf Y29tcGxldGVfd29yZCk7Ci0tLS0gMTc0MywxNzQ3IC0tLS0KLSAgICAvKiBUaGlzIGNvdWxkIGJl IGEgZ2xvYmJpbmcgcGF0dGVybiwgc28gdHJ5IHRvIGV4cGFuZCBpdCB1c2luZyBwYXRobmFtZQot ICAgICAgIGV4cGFuc2lvbi4gKi8KLSEgICBpZiAoIW1hdGNoZXMgJiYgY29tcGxldGlvbl9nbG9i X3BhdHRlcm4gKChjaGFyICopdGV4dCkpCi0gICAgICB7Ci0gICAgICAgIG1hdGNoZXMgPSBybF9j b21wbGV0aW9uX21hdGNoZXMgKHRleHQsIGdsb2JfY29tcGxldGVfd29yZCk7Ci0qKioqKioqKioq KioqKioKLSoqKiAxODUxLDE4NTUgKioqKgotICAJfQotICAKLSEgICAgICAgZ2xvYnBhdCA9IGds b2JfcGF0dGVybl9wIChoaW50X3RleHQpOwotICAKLSAgICAgICAgLyogSWYgdGhpcyBpcyBhbiBh YnNvbHV0ZSBwcm9ncmFtIG5hbWUsIGRvIG5vdCBjaGVjayBpdCBhZ2FpbnN0Ci0tLS0gMTg1Miwx ODU2IC0tLS0KLSAgCX0KLSAgCi0hICAgICAgIGdsb2JwYXQgPSBjb21wbGV0aW9uX2dsb2JfcGF0 dGVybiAoKGNoYXIgKiloaW50X3RleHQpOwotICAKLSAgICAgICAgLyogSWYgdGhpcyBpcyBhbiBh YnNvbHV0ZSBwcm9ncmFtIG5hbWUsIGRvIG5vdCBjaGVjayBpdCBhZ2FpbnN0Ci0qKioqKioqKioq KioqKioKLSoqKiAzNzE0LDM3MTcgKioqKgotLS0tIDM3MTUsMzc3MyAtLS0tCi0gIH0KLSAgCi0r IHN0YXRpYyBpbnQKLSsgY29tcGxldGlvbl9nbG9iX3BhdHRlcm4gKHN0cmluZykKLSsgICAgICBj aGFyICpzdHJpbmc7Ci0rIHsKLSsgICByZWdpc3RlciBpbnQgYzsKLSsgICBjaGFyICpzZW5kOwot KyAgIGludCBvcGVuOwotKyAKLSsgICBERUNMQVJFX01CU1RBVEU7Ci0rIAotKyAgIG9wZW4gPSAw OwotKyAgIHNlbmQgPSBzdHJpbmcgKyBzdHJsZW4gKHN0cmluZyk7Ci0rIAotKyAgIHdoaWxlIChj ID0gKnN0cmluZysrKQotKyAgICAgewotKyAgICAgICBzd2l0Y2ggKGMpCi0rIAl7Ci0rIAljYXNl ICc/JzoKLSsgCWNhc2UgJyonOgotKyAJICByZXR1cm4gKDEpOwotKyAKLSsgCWNhc2UgJ1snOgot KyAJICBvcGVuKys7Ci0rIAkgIGNvbnRpbnVlOwotKyAKLSsgCWNhc2UgJ10nOgotKyAJICBpZiAo b3BlbikKLSsgCSAgICByZXR1cm4gKDEpOwotKyAJICBjb250aW51ZTsKLSsgCi0rIAljYXNlICcr JzoKLSsgCWNhc2UgJ0AnOgotKyAJY2FzZSAnISc6Ci0rIAkgIGlmICgqc3RyaW5nID09ICcoJykJ LyopKi8KLSsgCSAgICByZXR1cm4gKDEpOwotKyAJICBjb250aW51ZTsKLSsgCi0rIAljYXNlICdc XCc6Ci0rIAkgIGlmICgqc3RyaW5nID09IDApCi0rIAkgICAgcmV0dXJuICgwKTsJIAkgIAotKyAJ fQotKyAKLSsgICAgICAgLyogQWR2YW5jZSBvbmUgZmV3ZXIgYnl0ZSB0aGFuIGFuIGVudGlyZSBt dWx0aWJ5dGUgY2hhcmFjdGVyIHRvCi0rIAkgYWNjb3VudCBmb3IgdGhlIGF1dG8taW5jcmVtZW50 IGluIHRoZSBsb29wIGFib3ZlLiAqLwotKyAjaWZkZWYgSEFORExFX01VTFRJQllURQotKyAgICAg ICBzdHJpbmctLTsKLSsgICAgICAgQURWQU5DRV9DSEFSX1AgKHN0cmluZywgc2VuZCAtIHN0cmlu Zyk7Ci0rICAgICAgIHN0cmluZysrOwotKyAjZWxzZQotKyAgICAgICBBRFZBTkNFX0NIQVJfUCAo c3RyaW5nLCBzZW5kIC0gc3RyaW5nKTsKLSsgI2VuZGlmCi0rICAgICB9Ci0rICAgcmV0dXJuICgw KTsKLSsgfQotKyAKLSAgc3RhdGljIGNoYXIgKmdsb2J0ZXh0OwotICBzdGF0aWMgY2hhciAqZ2xv Ym9yaWc7Ci0qKioqKioqKioqKioqKioKLSoqKiAzODc4LDM4ODIgKioqKgotICAgICAgfSAgICAg IAotICAKLSEgICBpZiAodCAmJiBnbG9iX3BhdHRlcm5fcCAodCkgPT0gMCkKLSAgICAgIHJsX2V4 cGxpY2l0X2FyZyA9IDE7CS8qIFhYWCAtIGZvcmNlIGdsb2JfY29tcGxldGVfd29yZCB0byBhcHBl bmQgYConICovCi0gICAgRlJFRSAodCk7Ci0tLS0gMzkzNCwzOTM4IC0tLS0KLSAgICAgIH0gICAg ICAKLSAgCi0hICAgaWYgKHQgJiYgY29tcGxldGlvbl9nbG9iX3BhdHRlcm4gKHQpID09IDApCi0g ICAgICBybF9leHBsaWNpdF9hcmcgPSAxOwkvKiBYWFggLSBmb3JjZSBnbG9iX2NvbXBsZXRlX3dv cmQgdG8gYXBwZW5kIGAqJyAqLwotICAgIEZSRUUgKHQpOwotKioqIC4uL2Jhc2gtNS4wL2xpYi9n bG9iL2dsb2JfbG9vcC5jCTIwMTgtMTItMzEgMTM6MzU6MTUuMDAwMDAwMDAwIC0wNTAwCi0tLS0g bGliL2dsb2IvZ2xvYl9sb29wLmMJMjAxOS0wMS0wOSAwOTo0NDozNi4wMDAwMDAwMDAgLTA1MDAK LSoqKioqKioqKioqKioqKgotKioqIDU1LDU5ICoqKioKLSAgCi0gICAgICAgIGNhc2UgTCgnXFwn KToKLS0gI2lmIDAKLSAgCS8qIERvbid0IGxldCB0aGUgcGF0dGVybiBlbmQgaW4gYSBiYWNrc2xh c2ggKEdNQVRDSCByZXR1cm5zIG5vIG1hdGNoCi0gIAkgICBpZiB0aGUgcGF0dGVybiBlbmRzIGlu IGEgYmFja3NsYXNoIGFueXdheSksIGJ1dCBvdGhlcndpc2UgcmV0dXJuIDEsCi0tLS0gNTUsNTgg LS0tLQotKioqKioqKioqKioqKioqCi0qKiogNjEsNjkgKioqKgotICAJICAgYW5kIGl0IGNhbiBi ZSByZW1vdmVkLiAqLwotICAJcmV0dXJuICgqcCAhPSBMKCdcMCcpKTsKLS0gI2Vsc2UKLS0gCS8q IFRoZSBwYXR0ZXJuIG1heSBub3QgZW5kIHdpdGggYSBiYWNrc2xhc2guICovCi0tIAlpZiAoKnAr KyA9PSBMKCdcMCcpKQotLSAJICByZXR1cm4gMDsKLS0gI2VuZGlmCi0gICAgICAgIH0KLSAgCi0t LS0gNjAsNjMgLS0tLQotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0 OjUxOjAzLjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAx OjI4LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAg ICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9u IHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMAotICAKLSAgI2VuZGlmIC8q IF9QQVRDSExFVkVMX0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmlu ZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAot ISAjZGVmaW5lIFBBVENITEVWRUwgMQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICov Ci0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAyIGIvc3JjcGtncy9i YXNoL2ZpbGVzL2Jhc2g1MC0wMDIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmYzgy NzJmODRhLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwMgor KysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JU Ci0JCQkgICAgID09PT09PT09PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1J RDoJYmFzaDUwLTAwMgotCi1CdWctUmVwb3J0ZWQtYnk6CUFudGUgUGVyaWMgPHN5bnRobWVhdEBn bWFpbC5jb20+Ci1CdWctUmVmZXJlbmNlLUlEOgk8QjdFM0I1NjctMjQ2Ny00RjdCLUI2QjktQ0E0 RTc1QTlDOTNGQGdtYWlsLmNvbT4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRwOi8vbGlzdHMuZ251 Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWJhc2gvMjAxOS0wMS9tc2cwMDA5NS5odG1sCi0KLUJ1Zy1E ZXNjcmlwdGlvbjoKLQotV2hlbiBhbiBhbGlhcyB2YWx1ZSBlbmRzIHdpdGggYW4gdW5xdW90ZWQg bGl0ZXJhbCB0YWIgKG5vdCBwYXJ0IG9mIGEgcXVvdGVkCi1zdHJpbmcgb3IgY29tbWVudCksIGFs aWFzIGV4cGFuc2lvbiBjYW5ub3QgY29ycmVjdGx5IGRldGVjdCB0aGUgZW5kIG9mIHRoZQotYWxp YXMgdmFsdWUgYWZ0ZXIgZXhwYW5kaW5nIGl0LgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2gg LXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC9wYXJzZXIuaAkyMDE4LTEyLTI4IDE5OjExOjE4LjAw MDAwMDAwMCAtMDUwMAotLS0tIHBhcnNlci5oCTIwMTktMDEtMTEgMTU6MTM6MDMuMDAwMDAwMDAw IC0wNTAwCi0qKioqKioqKioqKioqKioKLSoqKiA0OCw1MSAqKioqCi0tLS0gNDgsNTIgLS0tLQot ICAjZGVmaW5lIFBTVF9SRURJUkxJU1QJMHgwODAwMDAJLyogcGFyc2luZyBhIGxpc3Qgb2YgcmVk aXJlY3Rpb25zIHByZWNlZGluZyBhIHNpbXBsZSBjb21tYW5kIG5hbWUgKi8KLSAgI2RlZmluZSBQ U1RfQ09NTUVOVAkweDEwMDAwMAkvKiBwYXJzaW5nIGEgc2hlbGwgY29tbWVudDsgdXNlZCBieSBh bGlhc2VzICovCi0rICNkZWZpbmUgUFNUX0VOREFMSUFTCTB4MjAwMDAwCS8qIGp1c3QgZmluaXNo ZWQgZXhwYW5kaW5nIGFuZCBjb25zdW1pbmcgYW4gYWxpYXMgKi8KLSAgCi0gIC8qIERlZmluaXRp b24gb2YgdGhlIGRlbGltaXRlciBzdGFjay4gIE5lZWRlZCBieSBwYXJzZS55IGFuZCBiYXNoaGlz dC5jLiAqLwotKioqIC4uL2Jhc2gtNS4wL3BhcnNlLnkJMjAxOS0wMS0wMiAxMzo1NzozNC4wMDAw MDAwMDAgLTA1MDAKLS0tLSBwYXJzZS55CTIwMTktMDEtMTQgMDg6MjM6MzEuMDAwMDAwMDAwIC0w NTAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNTU4LDI1NjcgKioqKgotICAgICAgICBwdXNoZWRf c3RyaW5nX2xpc3QtPmZsYWdzICE9IFBTSF9EUEFSRU4gJiYKLSAgICAgICAgKHBhcnNlcl9zdGF0 ZSAmIFBTVF9DT01NRU5UKSA9PSAwICYmCi0gICAgICAgIHNoZWxsX2lucHV0X2xpbmVfaW5kZXgg PiAwICYmCi0hICAgICAgIHNoZWxsX2lucHV0X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0x XSAhPSAnICcgJiYKLSAgICAgICAgc2hlbGxfaW5wdXRfbGluZVtzaGVsbF9pbnB1dF9saW5lX2lu ZGV4LTFdICE9ICdcbicgJiYKLSAgICAgICAgc2hlbGxtZXRhIChzaGVsbF9pbnB1dF9saW5lW3No ZWxsX2lucHV0X2xpbmVfaW5kZXgtMV0pID09IDAgJiYKLSAgICAgICAgKGN1cnJlbnRfZGVsaW1p dGVyIChkc3RhY2spICE9ICdcJycgJiYgY3VycmVudF9kZWxpbWl0ZXIgKGRzdGFjaykgIT0gJyIn KSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuICcgJzsJLyogRU5EX0FMSUFTICovCi0gICAgICB9 Ci0tLS0gMjU1OCwyNTY5IC0tLS0KLSAgICAgICAgcHVzaGVkX3N0cmluZ19saXN0LT5mbGFncyAh PSBQU0hfRFBBUkVOICYmCi0gICAgICAgIChwYXJzZXJfc3RhdGUgJiBQU1RfQ09NTUVOVCkgPT0g MCAmJgotKyAgICAgICAocGFyc2VyX3N0YXRlICYgUFNUX0VOREFMSUFTKSA9PSAwICYmCS8qIG9u bHkgb25jZSAqLwotICAgICAgICBzaGVsbF9pbnB1dF9saW5lX2luZGV4ID4gMCAmJgotISAgICAg ICBzaGVsbGJsYW5rIChzaGVsbF9pbnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5kZXgtMV0p ID09IDAgJiYKLSAgICAgICAgc2hlbGxfaW5wdXRfbGluZVtzaGVsbF9pbnB1dF9saW5lX2luZGV4 LTFdICE9ICdcbicgJiYKLSAgICAgICAgc2hlbGxtZXRhIChzaGVsbF9pbnB1dF9saW5lW3NoZWxs X2lucHV0X2xpbmVfaW5kZXgtMV0pID09IDAgJiYKLSAgICAgICAgKGN1cnJlbnRfZGVsaW1pdGVy IChkc3RhY2spICE9ICdcJycgJiYgY3VycmVudF9kZWxpbWl0ZXIgKGRzdGFjaykgIT0gJyInKSkK LSAgICAgIHsKLSsgICAgICAgcGFyc2VyX3N0YXRlIHw9IFBTVF9FTkRBTElBUzsKLSAgICAgICAg cmV0dXJuICcgJzsJLyogRU5EX0FMSUFTICovCi0gICAgICB9Ci0qKioqKioqKioqKioqKioKLSoq KiAyNTcyLDI1NzUgKioqKgotLS0tIDI1NzQsMjU3OCAtLS0tCi0gICAgaWYgKHVjID09IDAgJiYg cHVzaGVkX3N0cmluZ19saXN0ICYmIHB1c2hlZF9zdHJpbmdfbGlzdC0+ZmxhZ3MgIT0gUFNIX1NP VVJDRSkKLSAgICAgIHsKLSsgICAgICAgcGFyc2VyX3N0YXRlICY9IH5QU1RfRU5EQUxJQVM7Ci0g ICAgICAgIHBvcF9zdHJpbmcgKCk7Ci0gICAgICAgIHVjID0gc2hlbGxfaW5wdXRfbGluZVtzaGVs bF9pbnB1dF9saW5lX2luZGV4XTsKLSoqKiAuLi9iYXNoLTUuMC95LnRhYi5jCTIwMTktMDEtMDIg MTM6NTc6NDMuMDAwMDAwMDAwIC0wNTAwCi0tLS0geS50YWIuYwkyMDE5LTAxLTE0IDA4OjM5OjIz LjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogNDg3NCw0ODgzICoqKioKLSAg ICAgICAgcHVzaGVkX3N0cmluZ19saXN0LT5mbGFncyAhPSBQU0hfRFBBUkVOICYmCi0gICAgICAg IChwYXJzZXJfc3RhdGUgJiBQU1RfQ09NTUVOVCkgPT0gMCAmJgotICAgICAgICBzaGVsbF9pbnB1 dF9saW5lX2luZGV4ID4gMCAmJgotISAgICAgICBzaGVsbF9pbnB1dF9saW5lW3NoZWxsX2lucHV0 X2xpbmVfaW5kZXgtMV0gIT0gJyAnICYmCi0gICAgICAgIHNoZWxsX2lucHV0X2xpbmVbc2hlbGxf aW5wdXRfbGluZV9pbmRleC0xXSAhPSAnXG4nICYmCi0gICAgICAgIHNoZWxsbWV0YSAoc2hlbGxf aW5wdXRfbGluZVtzaGVsbF9pbnB1dF9saW5lX2luZGV4LTFdKSA9PSAwICYmCi0gICAgICAgIChj dXJyZW50X2RlbGltaXRlciAoZHN0YWNrKSAhPSAnXCcnICYmIGN1cnJlbnRfZGVsaW1pdGVyIChk c3RhY2spICE9ICciJykpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiAnICc7CS8qIEVORF9BTElB UyAqLwotICAgICAgfQotLS0tIDQ4NzQsNDg4NSAtLS0tCi0gICAgICAgIHB1c2hlZF9zdHJpbmdf bGlzdC0+ZmxhZ3MgIT0gUFNIX0RQQVJFTiAmJgotICAgICAgICAocGFyc2VyX3N0YXRlICYgUFNU X0NPTU1FTlQpID09IDAgJiYKLSsgICAgICAgKHBhcnNlcl9zdGF0ZSAmIFBTVF9FTkRBTElBUykg PT0gMCAmJgkvKiBvbmx5IG9uY2UgKi8KLSAgICAgICAgc2hlbGxfaW5wdXRfbGluZV9pbmRleCA+ IDAgJiYKLSEgICAgICAgc2hlbGxibGFuayAoc2hlbGxfaW5wdXRfbGluZVtzaGVsbF9pbnB1dF9s aW5lX2luZGV4LTFdKSA9PSAwICYmCi0gICAgICAgIHNoZWxsX2lucHV0X2xpbmVbc2hlbGxfaW5w dXRfbGluZV9pbmRleC0xXSAhPSAnXG4nICYmCi0gICAgICAgIHNoZWxsbWV0YSAoc2hlbGxfaW5w dXRfbGluZVtzaGVsbF9pbnB1dF9saW5lX2luZGV4LTFdKSA9PSAwICYmCi0gICAgICAgIChjdXJy ZW50X2RlbGltaXRlciAoZHN0YWNrKSAhPSAnXCcnICYmIGN1cnJlbnRfZGVsaW1pdGVyIChkc3Rh Y2spICE9ICciJykpCi0gICAgICB7Ci0rICAgICAgIHBhcnNlcl9zdGF0ZSB8PSBQU1RfRU5EQUxJ QVM7Ci0gICAgICAgIHJldHVybiAnICc7CS8qIEVORF9BTElBUyAqLwotICAgICAgfQotKioqKioq KioqKioqKioqCi0qKiogNDg4OCw0ODkxICoqKioKLS0tLSA0ODkwLDQ4OTQgLS0tLQotICAgIGlm ICh1YyA9PSAwICYmIHB1c2hlZF9zdHJpbmdfbGlzdCAmJiBwdXNoZWRfc3RyaW5nX2xpc3QtPmZs YWdzICE9IFBTSF9TT1VSQ0UpCi0gICAgICB7Ci0rICAgICAgIHBhcnNlcl9zdGF0ZSAmPSB+UFNU X0VOREFMSUFTOwotICAgICAgICBwb3Bfc3RyaW5nICgpOwotICAgICAgICB1YyA9IHNoZWxsX2lu cHV0X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleF07Ci0qKiogLi4vYmFzaC01LjAvcGF0Y2hs ZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZl bC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioK LSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAo Zm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZF TCAxCi0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0g ICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNp b24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAyCi0gIAotICAjZW5kaWYg LyogX1BBVENITEVWRUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDAzIGIvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDMKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGY3ZTU2NzdlNTQwLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gv ZmlsZXMvYmFzaDUwLTAwMworKysgL2Rldi9udWxsCkBAIC0xLDIzOSArMCwwIEBACi0JCQkgICAg IEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09PT09PT09PT09PT09Ci0KLUJhc2gtUmVs ZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAwMwotCi1CdWctUmVwb3J0ZWQtYnk6CUFuZHJl dyBDaHVyY2ggPGFjaHVyY2grYmFzaEBhY2h1cmNoLm9yZz4KLUJ1Zy1SZWZlcmVuY2UtSUQ6CTw1 YzUzNGFhMi4wNDM3MUBtc2dpZC5hY2h1cmNoLm9yZz4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRw Oi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWJhc2gvMjAxOS0wMS9tc2cwMDI3Ni5o dG1sCi0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotVGhlcmUgYXJlIHNldmVyYWwgaW5jb21wYXRpYmls aXRpZXMgaW4gaG93IGJhc2gtNS4wIHByb2Nlc3NlcyBwYXRobmFtZQotZXhwYW5zaW9uIChnbG9i YmluZykgb2YgZmlsZW5hbWUgYXJndW1lbnRzIHRoYXQgaGF2ZSBiYWNrc2xhc2hlcyBpbiB0aGUK LWRpcmVjdG9yeSBwb3J0aW9uLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0K LSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL2xpYi9nbG9iL2dsb2JfbG9vcC5jCTIwMTktMDEtMTYg MTY6MTM6MjEuMDAwMDAwMDAwIC0wNTAwCi0tLS0gbGliL2dsb2IvZ2xvYl9sb29wLmMJMjAxOS0w Mi0wMSAwOTo0NToxMS4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioqKgotKioqIDI3LDM0 ICoqKioKLSAgICByZWdpc3RlciBjb25zdCBHQ0hBUiAqcDsKLSAgICByZWdpc3RlciBHQ0hBUiBj OwotISAgIGludCBib3BlbjsKLSAgCi0gICAgcCA9IHBhdHRlcm47Ci0hICAgYm9wZW4gPSAwOwot ICAKLSAgICB3aGlsZSAoKGMgPSAqcCsrKSAhPSBMKCdcMCcpKQotLS0tIDI3LDM0IC0tLS0KLSAg ICByZWdpc3RlciBjb25zdCBHQ0hBUiAqcDsKLSAgICByZWdpc3RlciBHQ0hBUiBjOwotISAgIGlu dCBib3BlbiwgYnNxdW90ZTsKLSAgCi0gICAgcCA9IHBhdHRlcm47Ci0hICAgYm9wZW4gPSBic3F1 b3RlID0gMDsKLSAgCi0gICAgd2hpbGUgKChjID0gKnArKykgIT0gTCgnXDAnKSkKLSoqKioqKioq KioqKioqKgotKioqIDU2LDY2ICoqKioKLSAgICAgICAgY2FzZSBMKCdcXCcpOgotICAJLyogRG9u J3QgbGV0IHRoZSBwYXR0ZXJuIGVuZCBpbiBhIGJhY2tzbGFzaCAoR01BVENIIHJldHVybnMgbm8g bWF0Y2gKLSEgCSAgIGlmIHRoZSBwYXR0ZXJuIGVuZHMgaW4gYSBiYWNrc2xhc2ggYW55d2F5KSwg YnV0IG90aGVyd2lzZSByZXR1cm4gMSwKLSEgCSAgIHNpbmNlIHRoZSBtYXRjaGluZyBlbmdpbmUg dXNlcyBiYWNrc2xhc2ggYXMgYW4gZXNjYXBlIGNoYXJhY3RlcgotISAJICAgYW5kIGl0IGNhbiBi ZSByZW1vdmVkLiAqLwotISAJcmV0dXJuICgqcCAhPSBMKCdcMCcpKTsKLSAgICAgICAgfQotICAK LSEgICByZXR1cm4gMDsKLSAgfQotICAKLS0tLSA1Niw3NSAtLS0tCi0gICAgICAgIGNhc2UgTCgn XFwnKToKLSAgCS8qIERvbid0IGxldCB0aGUgcGF0dGVybiBlbmQgaW4gYSBiYWNrc2xhc2ggKEdN QVRDSCByZXR1cm5zIG5vIG1hdGNoCi0hIAkgICBpZiB0aGUgcGF0dGVybiBlbmRzIGluIGEgYmFj a3NsYXNoIGFueXdheSksIGJ1dCBvdGhlcndpc2Ugbm90ZSB0aGF0IAotISAJICAgd2UgaGF2ZSBz ZWVuIHRoaXMsIHNpbmNlIHRoZSBtYXRjaGluZyBlbmdpbmUgdXNlcyBiYWNrc2xhc2ggYXMgYW4K LSEgCSAgIGVzY2FwZSBjaGFyYWN0ZXIgYW5kIGl0IGNhbiBiZSByZW1vdmVkLiBXZSByZXR1cm4g MiBsYXRlciBpZiB3ZQotISAJICAgaGF2ZSBzZWVuIG9ubHkgYmFja3NsYXNoLWVzY2FwZWQgY2hh cmFjdGVycywgc28gaW50ZXJlc3RlZCBjYWxsZXJzCi0hIAkgICBrbm93IHRoZXkgY2FuIHNob3J0 Y3V0IGFuZCBqdXN0IGRlcXVvdGUgdGhlIHBhdGhuYW1lLiAqLwotISAJaWYgKCpwICE9IEwoJ1ww JykpCi0hIAkgIHsKLSEgCSAgICBwKys7Ci0hIAkgICAgYnNxdW90ZSA9IDE7Ci0hIAkgICAgY29u dGludWU7Ci0hIAkgIH0KLSEgCWVsc2UgCS8qICgqcCA9PSBMKCdcMCcpKSAqLwotISAJICByZXR1 cm4gMDsKLSAgICAgICAgfQotICAKLSEgICByZXR1cm4gYnNxdW90ZSA/IDIgOiAwOwotICB9Ci0g IAotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvbGliL2dsb2IvZ2xvYi5oCTIwMTMtMTAtMjggMTQ6 NDY6MTIuMDAwMDAwMDAwIC0wNDAwCi0tLS0gbGliL2dsb2IvZ2xvYi5oCTIwMTktMDMtMDcgMTE6 MDY6NDcuMDAwMDAwMDAwIC0wNTAwCi0qKioqKioqKioqKioqKioKLSoqKiAzMSwzNCAqKioqCi0t LS0gMzEsMzUgLS0tLQotICAjZGVmaW5lIEdYX0FERENVUkRJUgkweDIwMAkvKiBpbnRlcm5hbCAt LSBhZGQgcGFzc2VkIGRpcmVjdG9yeSBuYW1lICovCi0gICNkZWZpbmUgR1hfR0xPQlNUQVIJMHg0 MDAJLyogdHVybiBvbiBzcGVjaWFsIGhhbmRsaW5nIG9mICoqICovCi0rICNkZWZpbmUgR1hfUkVD VVJTRQkweDgwMAkvKiBpbnRlcm5hbCAtLSBnbG9iX2ZpbGVuYW1lIGNhbGxlZCByZWN1cnNpdmVs eSAqLwotICAKLSAgZXh0ZXJuIGludCBnbG9iX3BhdHRlcm5fcCBfX1AoKGNvbnN0IGNoYXIgKikp OwotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvbGliL2dsb2IvZ2xvYi5jCTIwMTgtMDktMjAgMTA6 NTM6MjMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gbGliL2dsb2IvZ2xvYi5jCTIwMTktMDMtMDcgMTQ6 MjM6NDMuMDAwMDAwMDAwIC0wNTAwCi0qKioqKioqKioqKioqKioKLSoqKiAxMDYyLDEwNjYgKioq KgotICAgIHVuc2lnbmVkIGludCBkaXJlY3RvcnlfbGVuOwotICAgIGludCBmcmVlX2Rpcm5hbWU7 CQkJLyogZmxhZyAqLwotISAgIGludCBkZmxhZ3M7Ci0gIAotICAgIHJlc3VsdCA9IChjaGFyICoq KSBtYWxsb2MgKHNpemVvZiAoY2hhciAqKSk7Ci0tLS0gMTA3OCwxMDgyIC0tLS0KLSAgICB1bnNp Z25lZCBpbnQgZGlyZWN0b3J5X2xlbjsKLSAgICBpbnQgZnJlZV9kaXJuYW1lOwkJCS8qIGZsYWcg Ki8KLSEgICBpbnQgZGZsYWdzLCBoYXNnbG9iOwotICAKLSAgICByZXN1bHQgPSAoY2hhciAqKikg bWFsbG9jIChzaXplb2YgKGNoYXIgKikpOwotKioqKioqKioqKioqKioqCi0qKiogMTExMSwxMTE3 ICoqKioKLSAgICAgIH0KLSAgCi0gICAgLyogSWYgZGlyZWN0b3J5X25hbWUgY29udGFpbnMgZ2xv YmJpbmcgY2hhcmFjdGVycywgdGhlbiB3ZQotISAgICAgIGhhdmUgdG8gZXhwYW5kIHRoZSBwcmV2 aW91cyBsZXZlbHMuICBKdXN0IHJlY3Vyc2UuICovCi0hICAgaWYgKGRpcmVjdG9yeV9sZW4gPiAw ICYmIGdsb2JfcGF0dGVybl9wIChkaXJlY3RvcnlfbmFtZSkpCi0gICAgICB7Ci0gICAgICAgIGNo YXIgKipkaXJlY3RvcmllcywgKmQsICpwOwotLS0tIDExMjcsMTEzNiAtLS0tCi0gICAgICB9Ci0g IAotKyAgIGhhc2dsb2IgPSAwOwotICAgIC8qIElmIGRpcmVjdG9yeV9uYW1lIGNvbnRhaW5zIGds b2JiaW5nIGNoYXJhY3RlcnMsIHRoZW4gd2UKLSEgICAgICBoYXZlIHRvIGV4cGFuZCB0aGUgcHJl dmlvdXMgbGV2ZWxzLiAgSnVzdCByZWN1cnNlLgotISAgICAgIElmIGdsb2JfcGF0dGVybl9wIHJl dHVybnMgIT0gWzAsMV0gd2UgaGF2ZSBhIHBhdHRlcm4gdGhhdCBoYXMgYmFja3NsYXNoCi0hICAg ICAgcXVvdGVzIGJ1dCBubyB1bnF1b3RlZCBnbG9iIHBhdHRlcm4gY2hhcmFjdGVycy4gV2UgZGVx dW90ZSBpdCBiZWxvdy4gKi8KLSEgICBpZiAoZGlyZWN0b3J5X2xlbiA+IDAgJiYgKGhhc2dsb2Ig PSBnbG9iX3BhdHRlcm5fcCAoZGlyZWN0b3J5X25hbWUpKSA9PSAxKQotICAgICAgewotICAgICAg ICBjaGFyICoqZGlyZWN0b3JpZXMsICpkLCAqcDsKLSoqKioqKioqKioqKioqKgotKioqIDExNzYs MTE4MCAqKioqCi0gIAlkW2RpcmVjdG9yeV9sZW4gLSAxXSA9ICdcMCc7Ci0gIAotISAgICAgICBk aXJlY3RvcmllcyA9IGdsb2JfZmlsZW5hbWUgKGQsIGRmbGFncyk7Ci0gIAotICAgICAgICBpZiAo ZnJlZV9kaXJuYW1lKQotLS0tIDExOTUsMTE5OSAtLS0tCi0gIAlkW2RpcmVjdG9yeV9sZW4gLSAx XSA9ICdcMCc7Ci0gIAotISAgICAgICBkaXJlY3RvcmllcyA9IGdsb2JfZmlsZW5hbWUgKGQsIGRm bGFnc3xHWF9SRUNVUlNFKTsKLSAgCi0gICAgICAgIGlmIChmcmVlX2Rpcm5hbWUpCi0qKioqKioq KioqKioqKioKLSoqKiAxMzMzLDEzMzYgKioqKgotLS0tIDEzNTIsMTM2OSAtLS0tCi0gIAkgIHJl dHVybiAoTlVMTCk7Ci0gIAl9Ci0rICAgICAgIC8qIElmIHdlIGhhdmUgYSBkaXJlY3RvcnkgbmFt ZSB3aXRoIHF1b3RlZCBjaGFyYWN0ZXJzLCBhbmQgd2UgYXJlCi0rIAkgYmVpbmcgY2FsbGVkIHJl Y3Vyc2l2ZWx5IHRvIGdsb2IgdGhlIGRpcmVjdG9yeSBwb3J0aW9uIG9mIGEgcGF0aG5hbWUsCi0r IAkgd2UgbmVlZCB0byBkZXF1b3RlIHRoZSBkaXJlY3RvcnkgbmFtZSBiZWZvcmUgcmV0dXJuaW5n IGl0IHNvIHRoZQotKyAJIGNhbGxlciBjYW4gcmVhZCB0aGUgZGlyZWN0b3J5ICovCi0rICAgICAg IGlmIChkaXJlY3RvcnlfbGVuID4gMCAmJiBoYXNnbG9iID09IDIgJiYgKGZsYWdzICYgR1hfUkVD VVJTRSkgIT0gMCkKLSsgCXsKLSsgCSAgZGVxdW90ZV9wYXRobmFtZSAoZGlyZWN0b3J5X25hbWUp OwotKyAJICBkaXJlY3RvcnlfbGVuID0gc3RybGVuIChkaXJlY3RvcnlfbmFtZSk7Ci0rIAl9Ci0r IAotKyAgICAgICAvKiBXZSBjb3VsZCBjaGVjayB3aGV0aGVyIG9yIG5vdCB0aGUgZGVxdW90ZWQg ZGlyZWN0b3J5X25hbWUgaXMgYQotKyAJIGRpcmVjdG9yeSBhbmQgcmV0dXJuIGl0IGhlcmUsIHJl dHVybmluZyB0aGUgb3JpZ2luYWwgZGlyZWN0b3J5X25hbWUKLSsgCSBpZiBub3QsIGJ1dCB3ZSBk b24ndCBkbyB0aGF0IHlldC4gSSdtIG5vdCBzdXJlIGl0IG1hdHRlcnMuICovCi0rIAotICAgICAg ICAvKiBIYW5kbGUgR1hfTUFSS0RJUlMgaGVyZS4gKi8KLSAgICAgICAgcmVzdWx0WzBdID0gKGNo YXIgKikgbWFsbG9jIChkaXJlY3RvcnlfbGVuICsgMSk7Ci0qKiogLi4vYmFzaC01LjAtcGF0Y2hl ZC9wYXRoZXhwLmMJMjAxOC0wNC0yOSAxNzo0NDo0OC4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRo ZXhwLmMJMjAxOS0wMS0zMSAyMDoxOTo0MS4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioq KgotKioqIDY2LDc0ICoqKioKLSAgICByZWdpc3RlciBpbnQgYzsKLSAgICBjaGFyICpzZW5kOwot ISAgIGludCBvcGVuOwotICAKLSAgICBERUNMQVJFX01CU1RBVEU7Ci0gIAotISAgIG9wZW4gPSAw OwotICAgIHNlbmQgPSBzdHJpbmcgKyBzdHJsZW4gKHN0cmluZyk7Ci0gIAotLS0tIDY2LDc0IC0t LS0KLSAgICByZWdpc3RlciBpbnQgYzsKLSAgICBjaGFyICpzZW5kOwotISAgIGludCBvcGVuLCBi c3F1b3RlOwotICAKLSAgICBERUNMQVJFX01CU1RBVEU7Ci0gIAotISAgIG9wZW4gPSBic3F1b3Rl ID0gMDsKLSAgICBzZW5kID0gc3RyaW5nICsgc3RybGVuIChzdHJpbmcpOwotICAKLSoqKioqKioq KioqKioqKgotKioqIDEwMSwxMDUgKioqKgotICAJICAgZ2xvYmJpbmcuICovCi0gIAljYXNlICdc XCc6Ci0hIAkgIHJldHVybiAoKnN0cmluZyAhPSAwKTsKLSAgCSAJICAKLSAgCWNhc2UgQ1RMRVND OgotLS0tIDEwMSwxMTIgLS0tLQotICAJICAgZ2xvYmJpbmcuICovCi0gIAljYXNlICdcXCc6Ci0h IAkgIGlmICgqc3RyaW5nICE9ICdcMCcgJiYgKnN0cmluZyAhPSAnLycpCi0hIAkgICAgewotISAJ ICAgICAgYnNxdW90ZSA9IDE7Ci0hIAkgICAgICBzdHJpbmcrKzsKLSEgCSAgICAgIGNvbnRpbnVl OwotISAJICAgIH0KLSEgCSAgZWxzZSBpZiAoKnN0cmluZyA9PSAwKQotISAJICAgIHJldHVybiAo MCk7Ci0gIAkgCSAgCi0gIAljYXNlIENUTEVTQzoKLSoqKioqKioqKioqKioqKgotKioqIDExOCwx MjIgKioqKgotICAjZW5kaWYKLSAgICAgIH0KLSEgICByZXR1cm4gKDApOwotICB9Ci0gIAotLS0t IDEyNSwxMzAgLS0tLQotICAjZW5kaWYKLSAgICAgIH0KLSEgCi0hICAgcmV0dXJuIChic3F1b3Rl ID8gMiA6IDApOwotICB9Ci0gIAotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvYmFzaGxpbmUuYwky MDE5LTAxLTE2IDE2OjEzOjIxLjAwMDAwMDAwMCAtMDUwMAotLS0tIGJhc2hsaW5lLmMJMjAxOS0w Mi0yMiAwOToyOTowOC4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioqKgotKioqIDM3NTMs Mzc1NyAqKioqCi0gIAotICAJY2FzZSAnXFwnOgotISAJICBpZiAoKnN0cmluZyA9PSAwKQotICAJ ICAgIHJldHVybiAoMCk7CSAJICAKLSAgCX0KLS0tLSAzNzY2LDM3NzAgLS0tLQotICAKLSAgCWNh c2UgJ1xcJzoKLSEgCSAgaWYgKCpzdHJpbmcrKyA9PSAwKQotICAJICAgIHJldHVybiAoMCk7CSAJ ICAKLSAgCX0KLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1MTow My4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAxMTowMToyOC4w MDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioKLSAgICAgbG9v a3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJp bmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDIKLSAgCi0gICNlbmRpZiAvKiBfUEFU Q0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhl IHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2Rl ZmluZSBQQVRDSExFVkVMIDMKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpkaWZm IC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDQgYi9zcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAwNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmUzYzc2NGJkNmMu LjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA0CisrKyAvZGV2 L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAg ICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1 MC0wMDQKLQotQnVnLVJlcG9ydGVkLWJ5OglEYW5pZWwgS2FobiBHaWxsbW9yIDxka2dAZmlmdGho b3JzZW1hbi5uZXQ+Ci1CdWctUmVmZXJlbmNlLUlEOgk8ODdsZzBnOGFpdy5mc2ZAZmlmdGhob3Jz ZW1hbi5uZXQ+Ci1CdWctUmVmZXJlbmNlLVVSTDoJaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2 ZS9odG1sL2J1Zy1iYXNoLzIwMTktMDQvbXNnMDAwNzYuaHRtbAotCi1CdWctRGVzY3JpcHRpb246 Ci0KLUluIGJhc2gtNS4wLCB0aGUgYHdhaXQnIGJ1aWx0aW4gd2l0aG91dCBhcmd1bWVudHMgd2Fp dHMgZm9yIGFsbCBjaGlsZHJlbiBvZiB0aGUKLXNoZWxsLiBUaGlzIGluY2x1ZGVzIGNoaWxkcmVu IGl0IGBpbmhlcml0ZWQnIGF0IHNoZWxsIGludm9jYXRpb24gdGltZS4gVGhpcwotcGF0Y2ggbW9k aWZpZXMgdGhlIGJlaGF2aW9yIHRvIG5vdCB3YWl0IGZvciB0aGVzZSBpbmhlcml0ZWQgY2hpbGRy ZW4sIHNvbWUKLW9mIHdoaWNoIG1pZ2h0IGJlIGxvbmctbGl2ZWQuCi0KLVBhdGNoIChhcHBseSB3 aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvam9icy5jCTIwMTgt MTItMDYgMTE6NDQ6MzQuMDAwMDAwMDAwIC0wNTAwCi0tLS0gam9icy5jCTIwMTktMDQtMTIgMTU6 MTU6MTAuMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNDg5LDI0OTYgKioq KgotICAgIHdhaXRfcHJvY3N1YnMgKCk7Ci0gICAgcmVhcF9wcm9jc3VicyAoKTsKLSEgI2lmIDEK LSAgICAvKiBXZSBkb24ndCB3YW50IHRvIHdhaXQgaW5kZWZpbml0ZWx5IGlmIHdlIGhhdmUgc3Rv cHBlZCBjaGlsZHJlbi4gKi8KLS0gICAvKiBYWFggLSBzaG91bGQgYWRkIGEgbG9vcCB0aGF0IGdv ZXMgdGhyb3VnaCB0aGUgbGlzdCBvZiBwcm9jZXNzCi0tICAgICAgc3Vic3RpdHV0aW9ucyBhbmQg d2FpdHMgZm9yIGVhY2ggcHJvYyBpbiB0dXJuIGJlZm9yZSB0aGlzIGNvZGUuICovCi0gICAgaWYg KGFueV9zdG9wcGVkID09IDApCi0gICAgICB7Ci0tLS0gMjQ5MCwyNDk1IC0tLS0KLSAgICB3YWl0 X3Byb2NzdWJzICgpOwotICAgIHJlYXBfcHJvY3N1YnMgKCk7Ci0hICNpZiAwCi0gICAgLyogV2Ug ZG9uJ3Qgd2FudCB0byB3YWl0IGluZGVmaW5pdGVseSBpZiB3ZSBoYXZlIHN0b3BwZWQgY2hpbGRy ZW4uICovCi0gICAgaWYgKGFueV9zdG9wcGVkID09IDApCi0gICAgICB7Ci0qKiogLi4vYmFzaC01 LjAvcGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0g cGF0Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioq KioqKioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRj aCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUg UEFUQ0hMRVZFTCAzCi0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwz MCAtLS0tCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBz Y2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCA0Ci0gIAot ICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9m aWxlcy9iYXNoNTAtMDA1IGIvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDUKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMWNkNzViMGI2Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNw a2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwNQorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBA Ci0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09PT09PT09PT09PT09Ci0K LUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAwNQotCi1CdWctUmVwb3J0ZWQt Ynk6CUJyYWQgU3BlbmNlciA8YnNwZW5jZXJAYmxhY2tiZXJyeS5jb20+Ci1CdWctUmVmZXJlbmNl LUlEOgk8MWI5OTNmZjItY2U0Zi02NjJhLTZiZTQtMzkzNDU3MzYyZTQ3QGJsYWNrYmVycnkuY29t PgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9i dWctYmFzaC8yMDE5LTAxL21zZzAwMjUwLmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1JbiBj ZXJ0YWluIGNhc2VzLCBiYXNoIG9wdGltaXplcyBvdXQgYSBmb3JrKCkgY2FsbCB0b28gZWFybHkg YW5kIHByZXZlbnRzCi10cmFwcyBmcm9tIHJ1bm5pbmcuCi0KLVBhdGNoIChhcHBseSB3aXRoIGBw YXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvY29tbWFuZC5oCTIwMTgtMDct MjAgMjE6MTY6MzEuMDAwMDAwMDAwIC0wNDAwCi0tLS0gY29tbWFuZC5oCTIwMTktMDItMjAgMTE6 MDk6MzYuMDAwMDAwMDAwIC0wNTAwCi0qKioqKioqKioqKioqKioKLSoqKiAxODcsMTkwICoqKioK LS0tLSAxODgsMTkyIC0tLS0KLSAgI2RlZmluZSBDTURfTEFTVFBJUEUJICAgIDB4MjAwMAotICAj ZGVmaW5lIENNRF9TVERQQVRICSAgICAweDQwMDAJLyogdXNlIHN0YW5kYXJkIHBhdGggZm9yIGNv bW1hbmQgbG9va3VwICovCi0rICNkZWZpbmUgQ01EX1RSWV9PUFRJTUlaSU5HICAweDgwMDAJLyog dHJ5IHRvIG9wdGltaXplIHRoaXMgc2ltcGxlIGNvbW1hbmQgKi8KLSAgCi0gIC8qIFdoYXQgYSBj b21tYW5kIGxvb2tzIGxpa2UuICovCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9idWlsdGlucy9l dmFsc3RyaW5nLmMJMjAxOC0xMi0yNiAxMToxOToyMS4wMDAwMDAwMDAgLTA1MDAKLS0tLSBidWls dGlucy9ldmFsc3RyaW5nLmMJMjAxOS0wMS0yOSAxNDoxNToxOS4wMDAwMDAwMDAgLTA1MDAKLSoq KioqKioqKioqKioqKgotKioqIDEwMSwxMDQgKioqKgotLS0tIDEwMSwxMTMgLS0tLQotICB9Ci0g IAotKyBpbnQKLSsgY2FuX29wdGltaXplX2Nvbm5lY3Rpb24gKGNvbW1hbmQpCi0rICAgICAgQ09N TUFORCAqY29tbWFuZDsKLSsgewotKyAgIHJldHVybiAoKmJhc2hfaW5wdXQubG9jYXRpb24uc3Ry aW5nID09ICdcMCcgJiYKLSsgCSAgKGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPmNvbm5lY3Rv ciA9PSBBTkRfQU5EIHx8IGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPmNvbm5lY3RvciA9PSBP Ul9PUiB8fCBjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5jb25uZWN0b3IgPT0gJzsnKSAmJgot KyAJICBjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5zZWNvbmQtPnR5cGUgPT0gY21fc2ltcGxl KTsKLSsgfQotKyAKLSAgdm9pZAotICBvcHRpbWl6ZV9mb3JrIChjb21tYW5kKQotKioqKioqKioq KioqKioqCi0qKiogMTA2LDExMCAqKioqCi0gIHsKLSAgICBpZiAoY29tbWFuZC0+dHlwZSA9PSBj bV9jb25uZWN0aW9uICYmCi0hICAgICAgIChjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5jb25u ZWN0b3IgPT0gQU5EX0FORCB8fCBjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5jb25uZWN0b3Ig PT0gT1JfT1IpICYmCi0gICAgICAgIHNob3VsZF9zdXBwcmVzc19mb3JrIChjb21tYW5kLT52YWx1 ZS5Db25uZWN0aW9uLT5zZWNvbmQpKQotICAgICAgewotLS0tIDExNSwxMjAgLS0tLQotICB7Ci0g ICAgaWYgKGNvbW1hbmQtPnR5cGUgPT0gY21fY29ubmVjdGlvbiAmJgotISAgICAgICAoY29tbWFu ZC0+dmFsdWUuQ29ubmVjdGlvbi0+Y29ubmVjdG9yID09IEFORF9BTkQgfHwgY29tbWFuZC0+dmFs dWUuQ29ubmVjdGlvbi0+Y29ubmVjdG9yID09IE9SX09SIHx8IGNvbW1hbmQtPnZhbHVlLkNvbm5l Y3Rpb24tPmNvbm5lY3RvciA9PSAnOycpICYmCi0hICAgICAgIChjb21tYW5kLT52YWx1ZS5Db25u ZWN0aW9uLT5zZWNvbmQtPmZsYWdzICYgQ01EX1RSWV9PUFRJTUlaSU5HKSAmJgotICAgICAgICBz aG91bGRfc3VwcHJlc3NfZm9yayAoY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+c2Vjb25kKSkK LSAgICAgIHsKLSoqKioqKioqKioqKioqKgotKioqIDQxMyw0MTggKioqKgotICAJCSAgY29tbWFu ZC0+dmFsdWUuU2ltcGxlLT5mbGFncyB8PSBDTURfTk9fRk9SSzsKLSAgCQl9Ci0hIAkgICAgICBl bHNlIGlmIChjb21tYW5kLT50eXBlID09IGNtX2Nvbm5lY3Rpb24pCi0hIAkJb3B0aW1pemVfZm9y ayAoY29tbWFuZCk7Ci0gICNlbmRpZiAvKiBPTkVTSE9UICovCi0gIAotLS0tIDQyMyw0MzggLS0t LQotICAJCSAgY29tbWFuZC0+dmFsdWUuU2ltcGxlLT5mbGFncyB8PSBDTURfTk9fRk9SSzsKLSAg CQl9Ci0hIAotISAJICAgICAgLyogQ2FuJ3Qgb3B0aW1pemUgZm9ya3Mgb3V0IGhlcmUgZXhlY2Vw dCBmb3Igc2ltcGxlIGNvbW1hbmRzLgotISAJCSBUaGlzIGtub3dzIHRoYXQgdGhlIHBhcnNlciBz ZXRzIHVwIGNvbW1hbmRzIGFzIGxlZnQtc2lkZSBoZWF2eQotISAJCSAoJiYgYW5kIHx8IGFyZSBs ZWZ0LWFzc29jaWF0aXZlKSBhbmQgYWZ0ZXIgdGhlIHNpbmdsZSBwYXJzZSwKLSEgCQkgaWYgd2Ug YXJlIGF0IHRoZSBlbmQgb2YgdGhlIGNvbW1hbmQgc3RyaW5nLCB0aGUgbGFzdCBpbiBhCi0hIAkJ IHNlcmllcyBvZiBjb25uZWN0aW9uIGNvbW1hbmRzIGlzCi0hIAkJIGNvbW1hbmQtPnZhbHVlLkNv bm5lY3Rpb24tPnNlY29uZC4gKi8KLSEgCSAgICAgIGVsc2UgaWYgKGNvbW1hbmQtPnR5cGUgPT0g Y21fY29ubmVjdGlvbiAmJiBjYW5fb3B0aW1pemVfY29ubmVjdGlvbiAoY29tbWFuZCkpCi0hIAkJ ewotISAJCSAgY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+c2Vjb25kLT5mbGFncyB8PSBDTURf VFJZX09QVElNSVpJTkc7Ci0hIAkJICBjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5zZWNvbmQt PnZhbHVlLlNpbXBsZS0+ZmxhZ3MgfD0gQ01EX1RSWV9PUFRJTUlaSU5HOwotISAJCX0KLSAgI2Vu ZGlmIC8qIE9ORVNIT1QgKi8KLSAgCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9leGVjdXRlX2Nt ZC5jCTIwMTgtMTItMDUgMDk6MDU6MTQuMDAwMDAwMDAwIC0wNTAwCi0tLS0gZXhlY3V0ZV9jbWQu YwkyMDE5LTAxLTI1IDE1OjU5OjAwLjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0q KiogMjc2OCwyNzcxICoqKioKLS0tLSAyNzY4LDI3NzMgLS0tLQotICAJICAgKGV4ZWNfcmVzdWx0 ICE9IEVYRUNVVElPTl9TVUNDRVNTKSkpCi0gIAl7Ci0rIAkgIG9wdGltaXplX2ZvcmsgKGNvbW1h bmQpOwotKyAKLSAgCSAgc2Vjb25kID0gY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+c2Vjb25k OwotICAJICBpZiAoaWdub3JlX3JldHVybiAmJiBzZWNvbmQpCi0qKiogLi4vYmFzaC01LjAvcGF0 Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hs ZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioq KioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZl bCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hM RVZFTCA0Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0t Ci0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZl cnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCA1Ci0gIAotICAjZW5k aWYgLyogX1BBVENITEVWRUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9i YXNoNTAtMDA2IGIvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDYKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDJhZDFjZDIwMDkwLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jh c2gvZmlsZXMvYmFzaDUwLTAwNgorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLQkJCSAg ICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09PT09PT0KLQotQmFzaC1S ZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDA2Ci0KLUJ1Zy1SZXBvcnRlZC1ieToJVG9t YXMgTW96ZXMgPGh5ZHJhcG9saWNAZ21haWwuY29tPgotQnVnLVJlZmVyZW5jZS1JRDoJPENBRzZN QXpRdW1MVTJ2aG5tcjFVcllBVVFBRlc1WW84aGZNX3NFaWJYOVJKUVdKa1JyQUBtYWlsLmdtYWls LmNvbT4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0 bWwvYnVnLWJhc2gvMjAxOS0wMy9tc2cwMDAzNy5odG1sCi0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQot QmFzaC01LjAgZGlkIG5vdCBidWlsZCBzdWNjZXNzZnVsbHkgaWYgU1lTTE9HX0hJU1RPUlkgd2Fz IGRlZmluZWQgd2l0aG91dAotYWxzbyBkZWZpbmluZyBTWVNMT0dfU0hPUFQuCi0KLVBhdGNoIChh cHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvYnVpbHRp bnMvc2hvcHQuZGVmCTIwMTgtMTAtMDUgMTQ6NDk6MDIuMDAwMDAwMDAwIC0wNDAwCi0tLS0gYnVp bHRpbnMvc2hvcHQuZGVmCTIwMTktMDEtMjMgMDk6NTU6MjIuMDAwMDAwMDAwIC0wNTAwCi0qKioq KioqKioqKioqKioKLSoqKiAxMjMsMTI3ICoqKioKLSAgI2VuZGlmCi0gIAotISAjaWYgZGVmaW5l ZCAoU1lTTE9HX0hJU1RPUlkpICYmIGRlZmluZWQgKFNZU0xPR19TSE9QVCkKLSAgZXh0ZXJuIGlu dCBzeXNsb2dfaGlzdG9yeTsKLSAgI2VuZGlmCi0tLS0gMTIzLDEyNyAtLS0tCi0gICNlbmRpZgot ICAKLSEgI2lmIGRlZmluZWQgKFNZU0xPR19ISVNUT1JZKQotICBleHRlcm4gaW50IHN5c2xvZ19o aXN0b3J5OwotICAjZW5kaWYKLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0y MiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAx MTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioK LSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVy c2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDUKLSAgCi0gICNlbmRp ZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRv IGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwot ICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDYKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9I XyAqLwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDcgYi9zcmNwa2dz L2Jhc2gvZmlsZXMvYmFzaDUwLTAwNwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjll YjQxNTBhMmIuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA3 CisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9S VAotCQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gt SUQ6CWJhc2g1MC0wMDcKLQotQnVnLVJlcG9ydGVkLWJ5OglHcmlzaGEgTGV2aXQgPGdyaXNoYWxl dml0QGdtYWlsLmNvbT4KLUJ1Zy1SZWZlcmVuY2UtSUQ6CTxDQU11PUJyb0hhcEcxQVMzeEI1U1Fh Q1gyWEt1PS1FMk9iOXVXNkxOdUh2ZD1Zb2hyRHdAbWFpbC5nbWFpbC5jb20+Ci1CdWctUmVmZXJl bmNlLVVSTDoJaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMTkt MDIvbXNnMDAwNjcuaHRtbAotCi1CdWctRGVzY3JpcHRpb246Ci0KLVJ1bm5pbmcgYGV4ZWMnIHdo ZW4gam9iIGNvbnRyb2wgd2FzIGRpc2FibGVkLCBldmVuIHRlbXBvcmFyaWx5LCBidXQgYWZ0ZXIg aXQKLWhhZCBiZWVuIGluaXRpYWxpemVkLCBjb3VsZCBsZWF2ZSB0aGUgdGVybWluYWwgaW4gdGhl IHdyb25nIHByb2Nlc3MgZ3JvdXAgZm9yCi10aGUgZXhlY3V0ZWQgcHJvY2Vzcy4KLQotUGF0Y2gg KGFwcGx5IHdpdGggYHBhdGNoIC1wMCcpOgotCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9qb2Jz LmMJMjAxOC0xMi0wNiAxMTo0NDozNC4wMDAwMDAwMDAgLTA1MDAKLS0tLSBqb2JzLmMJMjAxOS0w NC0xMiAxNToxNToxMC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDQ4Mzgs NDg1MCAqKioqCi0gIHsKLSAgICBpZiAoam9iX2NvbnRyb2wpCi0hICAgICB7Ci0hICAgICAgIHRl cm1pbmF0ZV9zdG9wcGVkX2pvYnMgKCk7Ci0gIAotISAgICAgICBpZiAob3JpZ2luYWxfcGdycCA+ PSAwKQotISAJZ2l2ZV90ZXJtaW5hbF90byAob3JpZ2luYWxfcGdycCwgMSk7Ci0hICAgICB9Ci0g IAotISAgIGlmIChvcmlnaW5hbF9wZ3JwID49IDApCi0hICAgICBzZXRwZ2lkICgwLCBvcmlnaW5h bF9wZ3JwKTsKLSAgfQotICAKLS0tLSA0ODM4LDQ4NDggLS0tLQotICB7Ci0gICAgaWYgKGpvYl9j b250cm9sKQotISAgICAgdGVybWluYXRlX3N0b3BwZWRfam9icyAoKTsKLSAgCi0hICAgaWYgKG9y aWdpbmFsX3BncnAgPj0gMCAmJiB0ZXJtaW5hbF9wZ3JwICE9IG9yaWdpbmFsX3BncnApCi0hICAg ICBnaXZlX3Rlcm1pbmFsX3RvIChvcmlnaW5hbF9wZ3JwLCAxKTsKLSAgCi0hICAgaWYgKG9yaWdp bmFsX3BncnAgPj0gMCAmJiBzZXRwZ2lkICgwLCBvcmlnaW5hbF9wZ3JwKSA9PSAwKQotISAgICAg c2hlbGxfcGdycCA9IG9yaWdpbmFsX3BncnA7Ci0gIH0KLSAgCi0qKiogLi4vYmFzaC01LjAvcGF0 Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hs ZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioq KioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZl bCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hM RVZFTCA2Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0t Ci0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZl cnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCA3Ci0gIAotICAjZW5k aWYgLyogX1BBVENITEVWRUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9i YXNoNTAtMDA4IGIvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDgKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGIwOWQ2YjMzYWM3Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jh c2gvZmlsZXMvYmFzaDUwLTAwOAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLQkJCSAg ICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09PT09PT0KLQotQmFzaC1S ZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDA4Ci0KLUJ1Zy1SZXBvcnRlZC1ieToJTWlj aGFlbCBBbGJpbnVzIDxtaWNoYWVsLmFsYmludXNAZ214LmRlPgotQnVnLVJlZmVyZW5jZS1JRDoJ PDg3Ym0zNmsza3ouZnNmQGdteC5kZT4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRwczovL2xpc3Rz LmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMTktMDIvbXNnMDAxMTEuaHRtbAotCi1C dWctRGVzY3JpcHRpb246Ci0KLVdoZW4gSElTVFNJWkUgaXMgc2V0IHRvIDAsIGhpc3RvcnkgZXhw YW5zaW9uIGNhbiBsZWF2ZSB0aGUgaGlzdG9yeSBsZW5ndGgKLXNldCB0byBhbiBpbmNvcnJlY3Qg dmFsdWUsIGxlYWRpbmcgdG8gc3Vic2VxdWVudCBhdHRlbXB0cyB0byBhY2Nlc3MgaW52YWxpZAot bWVtb3J5LgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9iYXNo LTUuMC1wYXRjaGVkL2Jhc2hoaXN0LmMJMjAxOC0wNy0wNSAyMjo0MToxNC4wMDAwMDAwMDAgLTA0 MDAKLS0tLSBiYXNoaGlzdC5jCTIwMTktMDItMjAgMTY6MjA6MDQuMDAwMDAwMDAwIC0wNTAwCi0q KioqKioqKioqKioqKioKLSoqKiA1NjEsNTczICoqKioKLSAgICBpZiAoIWhpc3RvcnlfZXhwYW5z aW9uX2luaGliaXRlZCAmJiBoaXN0b3J5X2V4cGFuc2lvbiAmJiBoaXN0b3J5X2V4cGFuc2lvbl9w IChsaW5lKSkKLSAgICAgIHsKLSAgICAgICAgLyogSWYgd2UgYXJlIGV4cGFuZGluZyB0aGUgc2Vj b25kIG9yIGxhdGVyIGxpbmUgb2YgYSBtdWx0aS1saW5lCi0gIAkgY29tbWFuZCwgZGVjcmVhc2Ug aGlzdG9yeV9sZW5ndGggc28gcmVmZXJlbmNlcyB0byBoaXN0b3J5IGV4cGFuc2lvbnMKLSAgCSBp biB0aGVzZSBsaW5lcyByZWZlciB0byB0aGUgcHJldmlvdXMgaGlzdG9yeSBlbnRyeSBhbmQgbm90 IHRoZQotICAJIGN1cnJlbnQgY29tbWFuZC4gKi8KLSAgICAgICAgaWYgKGhpc3RvcnlfbGVuZ3Ro ID4gMCAmJiBjb21tYW5kX29yaWVudGVkX2hpc3RvcnkgJiYgY3VycmVudF9jb21tYW5kX2ZpcnN0 X2xpbmVfc2F2ZWQgJiYgY3VycmVudF9jb21tYW5kX2xpbmVfY291bnQgPiAxKQotICAgICAgICAg IGhpc3RvcnlfbGVuZ3RoLS07Ci0gICAgICAgIGV4cGFuZGVkID0gaGlzdG9yeV9leHBhbmQgKGxp bmUsICZoaXN0b3J5X3ZhbHVlKTsKLSAgICAgICAgaWYgKGhpc3RvcnlfbGVuZ3RoID49IDAgJiYg Y29tbWFuZF9vcmllbnRlZF9oaXN0b3J5ICYmIGN1cnJlbnRfY29tbWFuZF9maXJzdF9saW5lX3Nh dmVkICYmIGN1cnJlbnRfY29tbWFuZF9saW5lX2NvdW50ID4gMSkKLSEgICAgICAgICBoaXN0b3J5 X2xlbmd0aCsrOwotICAKLSAgICAgICAgaWYgKGV4cGFuZGVkKQotLS0tIDU2MSw1NzYgLS0tLQot ICAgIGlmICghaGlzdG9yeV9leHBhbnNpb25faW5oaWJpdGVkICYmIGhpc3RvcnlfZXhwYW5zaW9u ICYmIGhpc3RvcnlfZXhwYW5zaW9uX3AgKGxpbmUpKQotICAgICAgewotKyAgICAgICBpbnQgb2xk X2xlbjsKLSsgCi0gICAgICAgIC8qIElmIHdlIGFyZSBleHBhbmRpbmcgdGhlIHNlY29uZCBvciBs YXRlciBsaW5lIG9mIGEgbXVsdGktbGluZQotICAJIGNvbW1hbmQsIGRlY3JlYXNlIGhpc3Rvcnlf bGVuZ3RoIHNvIHJlZmVyZW5jZXMgdG8gaGlzdG9yeSBleHBhbnNpb25zCi0gIAkgaW4gdGhlc2Ug bGluZXMgcmVmZXIgdG8gdGhlIHByZXZpb3VzIGhpc3RvcnkgZW50cnkgYW5kIG5vdCB0aGUKLSAg CSBjdXJyZW50IGNvbW1hbmQuICovCi0rICAgICAgIG9sZF9sZW4gPSBoaXN0b3J5X2xlbmd0aDsK LSAgICAgICAgaWYgKGhpc3RvcnlfbGVuZ3RoID4gMCAmJiBjb21tYW5kX29yaWVudGVkX2hpc3Rv cnkgJiYgY3VycmVudF9jb21tYW5kX2ZpcnN0X2xpbmVfc2F2ZWQgJiYgY3VycmVudF9jb21tYW5k X2xpbmVfY291bnQgPiAxKQotICAgICAgICAgIGhpc3RvcnlfbGVuZ3RoLS07Ci0gICAgICAgIGV4 cGFuZGVkID0gaGlzdG9yeV9leHBhbmQgKGxpbmUsICZoaXN0b3J5X3ZhbHVlKTsKLSAgICAgICAg aWYgKGhpc3RvcnlfbGVuZ3RoID49IDAgJiYgY29tbWFuZF9vcmllbnRlZF9oaXN0b3J5ICYmIGN1 cnJlbnRfY29tbWFuZF9maXJzdF9saW5lX3NhdmVkICYmIGN1cnJlbnRfY29tbWFuZF9saW5lX2Nv dW50ID4gMSkKLSEgICAgICAgICBoaXN0b3J5X2xlbmd0aCA9IG9sZF9sZW47Ci0gIAotICAgICAg ICBpZiAoZXhwYW5kZWQpCi0KLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0y MiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAx MTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioK LSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVy c2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDcKLSAgCi0gICNlbmRp ZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRv IGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwot ICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDgKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9I XyAqLwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDkgYi9zcmNwa2dz L2Jhc2gvZmlsZXMvYmFzaDUwLTAwOQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVm NGNlN2I1YWQuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA5 CisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9S VAotCQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gt SUQ6CWJhc2g1MC0wMDkKLQotQnVnLVJlcG9ydGVkLWJ5OgljaGV0LnJhbWV5QGNhc2UuZWR1Ci1C dWctUmVmZXJlbmNlLUlEOgotQnVnLVJlZmVyZW5jZS1VUkw6Ci0KLUJ1Zy1EZXNjcmlwdGlvbjoK LQotVGhlIGhpc3RvcnkgZmlsZSByZWFkaW5nIGNvZGUgZG9lc24ndCBjbG9zZSB0aGUgZmlsZSBk ZXNjcmlwdG9yIG9wZW4gdG8KLXRoZSBoaXN0b3J5IGZpbGUgd2hlbiBpdCBlbmNvdW50ZXJzIGEg emVyby1sZW5ndGggZmlsZS4KLQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcpOgotCi0q KiogLi4vYmFzaC01LjAtcGF0Y2hlZC9saWIvcmVhZGxpbmUvaGlzdGZpbGUuYwkyMDE4LTA2LTEx IDA5OjE0OjUyLjAwMDAwMDAwMCAtMDQwMAotLS0tIGxpYi9yZWFkbGluZS9oaXN0ZmlsZS5jCTIw MTktMDUtMTYgMTU6NTU6NTcuMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAz MDYsMzA5ICoqKioKLS0tLSAzMTIsMzE2IC0tLS0KLSAgICAgIHsKLSAgICAgICAgZnJlZSAoaW5w dXQpOwotKyAgICAgICBjbG9zZSAoZmlsZSk7Ci0gICAgICAgIHJldHVybiAwOwkvKiBkb24ndCB3 YXN0ZSB0aW1lIGlmIHdlIGRvbid0IGhhdmUgdG8gKi8KLSAgICAgIH0KLSoqKiAuLi9iYXNoLTUu MC9wYXRjaGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBw YXRjaGxldmVsLmgJMjAxNi0xMC0wMSAxMTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioq KioqKioqKgotKioqIDI2LDMwICoqKioKLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNo IGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQ QVRDSExFVkVMIDgKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMw IC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNj Y3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDkKLSAgCi0g ICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL2Zp bGVzL2Jhc2g1MC0wMTAgYi9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggYmFjN2FhOTI1MTUuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3Br Z3MvYmFzaC9maWxlcy9iYXNoNTAtMDEwCisrKyAvZGV2L251bGwKQEAgLTEsMTcyICswLDAgQEAK LQkJCSAgICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09PT09PT0KLQot QmFzaC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDEwCi0KLUJ1Zy1SZXBvcnRlZC1i eToJVGhvcnN0ZW4gR2xhc2VyIDx0Z0BtaXJic2QuZGU+Ci1CdWctUmVmZXJlbmNlLUlEOgk8MTU2 NjIyOTYyODMxLjE5NDM4LjE2Mzc0OTYxMTE0ODM2NTU2Mjk0LnJlcG9ydGJ1Z0B0Z2xhc2UubGFu LnRhcmVudC5kZT4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRwczovL2J1Z3MuZGViaWFuLm9yZy9j Z2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTkzNTExNQotCi1CdWctRGVzY3JpcHRpb246Ci0KLUJh c2gtNS4wIGNoYW5nZWQgdGhlIHdheSBhc3NpZ25tZW50IHN0YXRlbWVudHMgcHJlY2VkaW5nIHNw ZWNpYWwgYnVpbHRpbnMKLWFuZCBzaGVsbCBmdW5jdGlvbnMgd2VyZSBoYW5kbGVkIGluIHBvc2l4 IG1vZGUuIFRoZXkgYXV0b21hdGljYWxseSBjcmVhdGVkCi1vciBtb2RpZmllZCBnbG9iYWwgdmFy aWFibGVzIGluc3RlYWQgb2YgbW9kaWZ5aW5nIGV4aXN0aW5nIGxvY2FsIHZhcmlhYmxlcwotYXMg aW4gYmFzaC00LjQuCi0KLVRoZSBiYXNoLTQuNCBwb3NpeC1tb2RlIHNlbWFudGljcyB3ZXJlIGJ1 Z2d5LCBhbmQgcmVzdWx0ZWQgaW4gY3JlYXRpbmcKLWxvY2FsIHZhcmlhYmxlcyB3aGVyZSB0aGV5 IHdlcmUgbm90IGludGVuZGVkIGFuZCBtb2RpZnlpbmcgZ2xvYmFsIHZhcmlhYmxlcwotYW5kIGxv Y2FsIHZhcmlhYmxlcyBzaW11bHRhbmVvdXNseS4KLQotVGhlIGJhc2gtNS4wIGNoYW5nZXMgd2Vy ZSBpbnRlbmRlZCB0byBmaXggdGhpcyBpc3N1ZSwgYnV0IGRpZCBub3QgcHJlc2VydmUKLWVub3Vn aCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4gVGhlIHBvc2l4IHN0YW5kYXJkIGFsc28gY2hhbmdl ZCB3aGF0IGl0Ci1yZXF1aXJlZCBpbiB0aGVzZSBjYXNlcywgc28gYmFzaC01LjAgaXMgbm90IGJv dW5kIGJ5IHRoZSBzdHJpY3QgY29uZm9ybWFuY2UKLXJlcXVpcmVtZW50cyB0aGF0IGV4aXN0ZWQg aW4gcHJldmlvdXMgaXNzdWVzIG9mIHRoZSBzdGFuZGFyZC4KLQotVGhpcyBwYXRjaCBtb2RpZmll cyB0aGUgYmFzaC01LjAgcG9zaXggbW9kZSBiZWhhdmlvciBpbiBhbiBlZmZvcnQgdG8gcmVzdG9y ZQotc29tZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBhbmQgcmF0aW9uYWxpemUgdGhlIGJlaGF2 aW9yIGluIHRoZSBwcmVzZW5jZSBvZgotbG9jYWwgdmFyaWFibGVzLiBJdAotCi0xLiBDaGFuZ2Vz IHRoZSBhc3NpZ25tZW50IHNlbWFudGljcyB0byBiZSBtb3JlIHNpbWlsYXIgdG8gc3RhbmRhbG9u ZSBhc3NpZ25tZW50Ci0gICBzdGF0ZW1lbnRzOiBhc3NpZ25tZW50cyBwcmVjZWRpbmcgYSBmdW5j dGlvbiBjYWxsIG9yIHNwZWNpYWwgYnVpbHRpbiB3aGlsZQotICAgZXhlY3V0aW5nIGluIGEgc2hl bGwgZnVuY3Rpb24gd2lsbCBtb2RpZnkgdGhlIHZhbHVlIG9mIGEgbG9jYWwgdmFyaWFibGUKLSAg IHdpdGggdGhlIHNhbWUgbmFtZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBmdW5jdGlvbidzIGV4 ZWN1dGlvbjsKLQotMi4gQ2hhbmdlcyBhc3NpZ25tZW50cyBwcmVjZWRpbmcgc2hlbGwgZnVuY3Rp b24gY2FsbHMgb3Igc3BlY2lhbCBidWlsdGlucwotICAgZnJvbSB3aXRoaW4gYSBzaGVsbCBmdW5j dGlvbiB0byBubyBsb25nZXIgY3JlYXRlIG9yIG1vZGlmeSBnbG9iYWwgdmFyaWFibGVzCi0gICBp biB0aGUgcHJlc2VuY2Ugb2YgYSBsb2NhbCB2YXJpYWJsZSB3aXRoIHRoZSBzYW1lIG5hbWU7Ci0K LTMuIEFzc2lnbm1lbnQgc3RhdGVtZW50cyBwcmVjZWRpbmcgYSBzaGVsbCBmdW5jdGlvbiBjYWxs IG9yIHNwZWNpYWwgYnVpbHRpbgotICAgYXQgdGhlIGdsb2JhbCBzY29wZSBjb250aW51ZSB0byBt b2RpZnkgdGhlIChnbG9iYWwpIGNhbGxpbmcgZW52aXJvbm1lbnQsCi0gICBidXQgYXJlIHVuYWZm ZWN0ZWQgYnkgYXNzaWdubWVudHMgcHJlY2VkaW5nIGZ1bmN0aW9uIGNhbGxzIG9yIHNwZWNpYWwK LSAgIGJ1aWx0aW5zIHdpdGhpbiBhIGZ1bmN0aW9uLCBhcyBkZXNjcmliZWQgaW4gaXRlbSAyLiBU aGlzIGlzIGFsc28gc2ltaWxhcgotICAgdG8gdGhlIGJlaGF2aW9yIG9mIGEgc3RhbmRhbG9uZSBh c3NpZ25tZW50IHN0YXRlbWVudC4KLQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcpOgot Ci0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC92YXJpYWJsZXMuYwkyMDE4LTEyLTE4IDExOjA3OjIx LjAwMDAwMDAwMCAtMDUwMAotLS0tIHZhcmlhYmxlcy5jCTIwMTktMDgtMjIgMTA6NTM6NDQuMDAw MDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiA0NDYxLDQ0NjcgKioqKgotICAKLSAg LyogVGFrZSBhIHZhcmlhYmxlIGZyb20gYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQgcHJlY2VkaW5n IGEgcG9zaXggc3BlY2lhbAotISAgICBidWlsdGluIChpbmNsdWRpbmcgYHJldHVybicpIGFuZCBj cmVhdGUgYSBnbG9iYWwgdmFyaWFibGUgZnJvbSBpdC4gVGhpcwotISAgICBpcyBjYWxsZWQgZnJv bSBtZXJnZV90ZW1wb3JhcnlfZW52LCB3aGljaCBpcyBvbmx5IGNhbGxlZCB3aGVuIGluIHBvc2l4 Ci0hICAgIG1vZGUuICovCi0gIHN0YXRpYyB2b2lkCi0gIHB1c2hfcG9zaXhfdGVtcF92YXIgKGRh dGEpCi0tLS0gNDQ2MSw0NDY3IC0tLS0KLSAgCi0gIC8qIFRha2UgYSB2YXJpYWJsZSBmcm9tIGFu IGFzc2lnbm1lbnQgc3RhdGVtZW50IHByZWNlZGluZyBhIHBvc2l4IHNwZWNpYWwKLSEgICAgYnVp bHRpbiAoaW5jbHVkaW5nIGByZXR1cm4nKSBhbmQgY3JlYXRlIGEgdmFyaWFibGUgZnJvbSBpdCBh cyBpZiBhCi0hICAgIHN0YW5kYWxvbmUgYXNzaWdubWVudCBzdGF0ZW1lbnQgaGFkIGJlZW4gcGVy Zm9ybWVkLiBUaGlzIGlzIGNhbGxlZCBmcm9tCi0hICAgIG1lcmdlX3RlbXBvcmFyeV9lbnYsIHdo aWNoIGlzIG9ubHkgY2FsbGVkIHdoZW4gaW4gcG9zaXggbW9kZS4gKi8KLSAgc3RhdGljIHZvaWQK LSAgcHVzaF9wb3NpeF90ZW1wX3ZhciAoZGF0YSkKLSoqKioqKioqKioqKioqKgotKioqIDQ0NzMs NDQ4NiAqKioqCi0gICAgdmFyID0gKFNIRUxMX1ZBUiAqKWRhdGE7Ci0gIAotISAgIGJpbmRpbmdf dGFibGUgPSBnbG9iYWxfdmFyaWFibGVzLT50YWJsZTsKLSEgICBpZiAoYmluZGluZ190YWJsZSA9 PSAwKQotISAgICAgYmluZGluZ190YWJsZSA9IGdsb2JhbF92YXJpYWJsZXMtPnRhYmxlID0gaGFz aF9jcmVhdGUgKFZBUklBQkxFU19IQVNIX0JVQ0tFVFMpOwotISAKLSEgICB2ID0gYmluZF92YXJp YWJsZV9pbnRlcm5hbCAodmFyLT5uYW1lLCB2YWx1ZV9jZWxsICh2YXIpLCBiaW5kaW5nX3RhYmxl LCAwLCBBU1NfRk9SQ0V8QVNTX05PTE9OR0pNUCk7Ci0gIAotICAgIC8qIGdsb2JhbCB2YXJpYWJs ZXMgYXJlIG5vIGxvbmdlciB0ZW1wb3JhcnkgYW5kIGRvbid0IG5lZWQgcHJvcGFnYXRpbmcuICov Ci0hICAgdmFyLT5hdHRyaWJ1dGVzICY9IH4oYXR0X3RlbXB2YXJ8YXR0X3Byb3BhZ2F0ZSk7Ci0g ICAgaWYgKHYpCi0hICAgICB2LT5hdHRyaWJ1dGVzIHw9IHZhci0+YXR0cmlidXRlczsKLSAgCi0g ICAgaWYgKGZpbmRfc3BlY2lhbF92YXIgKHZhci0+bmFtZSkgPj0gMCkKLS0tLSA0NDczLDQ0OTcg LS0tLQotICAgIHZhciA9IChTSEVMTF9WQVIgKilkYXRhOwotICAKLSEgICAvKiBKdXN0IGxpa2Ug ZG9fYXNzaWdubWVudF9pbnRlcm5hbCgpLiBUaGlzIG1ha2VzIGFzc2lnbm1lbnRzIHByZWNlZGlu ZwotISAgICAgIHNwZWNpYWwgYnVpbHRpbnMgYWN0IGxpa2Ugc3RhbmRhbG9uZSBhc3NpZ25tZW50 IHN0YXRlbWVudHMgd2hlbiBpbgotISAgICAgIHBvc2l4IG1vZGUsIHNhdGlzZnlpbmcgdGhlIHBv c2l4IHJlcXVpcmVtZW50IHRoYXQgdGhpcyBhZmZlY3QgdGhlCi0hICAgICAgImN1cnJlbnQgZXhl Y3V0aW9uIGVudmlyb25tZW50LiIgKi8KLSEgICB2ID0gYmluZF92YXJpYWJsZSAodmFyLT5uYW1l LCB2YWx1ZV9jZWxsICh2YXIpLCBBU1NfRk9SQ0V8QVNTX05PTE9OR0pNUCk7Ci0hIAotISAgIC8q IElmIHRoaXMgbW9kaWZpZXMgYW4gZXhpc3RpbmcgbG9jYWwgdmFyaWFibGUsIHYtPmNvbnRleHQg d2lsbCBiZSBub24temVyby4KLSEgICAgICBJZiBpdCBjb21lcyBiYWNrIHdpdGggdi0+Y29udGV4 dCA9PSAwLCB3ZSBib3VuZCBhdCB0aGUgZ2xvYmFsIGNvbnRleHQuCi0hICAgICAgU2V0IGJpbmRp bmdfdGFibGUgYXBwcm9wcmlhdGVseS4gSXQgZG9lc24ndCBtYXR0ZXIgd2hldGhlciBpdCdzIGNv cnJlY3QKLSEgICAgICBpZiB0aGUgdmFyaWFibGUgaXMgbG9jYWwsIG9ubHkgdGhhdCBpdCdzIG5v dCBnbG9iYWxfdmFyaWFibGVzLT50YWJsZSAqLwotISAgIGJpbmRpbmdfdGFibGUgPSB2LT5jb250 ZXh0ID8gc2hlbGxfdmFyaWFibGVzLT50YWJsZSA6IGdsb2JhbF92YXJpYWJsZXMtPnRhYmxlOwot ICAKLSAgICAvKiBnbG9iYWwgdmFyaWFibGVzIGFyZSBubyBsb25nZXIgdGVtcG9yYXJ5IGFuZCBk b24ndCBuZWVkIHByb3BhZ2F0aW5nLiAqLwotISAgIGlmIChiaW5kaW5nX3RhYmxlID09IGdsb2Jh bF92YXJpYWJsZXMtPnRhYmxlKQotISAgICAgdmFyLT5hdHRyaWJ1dGVzICY9IH4oYXR0X3RlbXB2 YXJ8YXR0X3Byb3BhZ2F0ZSk7Ci0hIAotICAgIGlmICh2KQotISAgICAgewotISAgICAgICB2LT5h dHRyaWJ1dGVzIHw9IHZhci0+YXR0cmlidXRlczsKLSEgICAgICAgdi0+YXR0cmlidXRlcyAmPSB+ YXR0X3RlbXB2YXI7CS8qIG5vdCBhIHRlbXAgdmFyIG5vdyAqLwotISAgICAgfQotICAKLSAgICBp ZiAoZmluZF9zcGVjaWFsX3ZhciAodmFyLT5uYW1lKSA+PSAwKQotKioqKioqKioqKioqKioqCi0q KiogNDU3Niw0NTg3ICoqKioKLSAgewotICAgIGludCBpOwotICAKLSAgICB0ZW1wdmFyX2xpc3Qg PSBzdHJ2ZWNfY3JlYXRlIChIQVNIX0VOVFJJRVMgKHRlbXBvcmFyeV9lbnYpICsgMSk7Ci0gICAg dGVtcHZhcl9saXN0W3R2bGlzdF9pbmQgPSAwXSA9IDA7Ci0hICAgICAKLSEgICBoYXNoX2ZsdXNo ICh0ZW1wb3JhcnlfZW52LCBwdXNoZik7Ci0hICAgaGFzaF9kaXNwb3NlICh0ZW1wb3JhcnlfZW52 KTsKLSAgICB0ZW1wb3JhcnlfZW52ID0gKEhBU0hfVEFCTEUgKilOVUxMOwotICAKLSAgICB0ZW1w dmFyX2xpc3RbdHZsaXN0X2luZF0gPSAwOwotICAKLS0tLSA0NTg3LDQ2MDEgLS0tLQotICB7Ci0g ICAgaW50IGk7Ci0rICAgSEFTSF9UQUJMRSAqZGlzcG9zZXI7Ci0gIAotICAgIHRlbXB2YXJfbGlz dCA9IHN0cnZlY19jcmVhdGUgKEhBU0hfRU5UUklFUyAodGVtcG9yYXJ5X2VudikgKyAxKTsKLSAg ICB0ZW1wdmFyX2xpc3RbdHZsaXN0X2luZCA9IDBdID0gMDsKLSEgCi0hICAgZGlzcG9zZXIgPSB0 ZW1wb3JhcnlfZW52OwotICAgIHRlbXBvcmFyeV9lbnYgPSAoSEFTSF9UQUJMRSAqKU5VTEw7Ci0g IAotKyAgIGhhc2hfZmx1c2ggKGRpc3Bvc2VyLCBwdXNoZik7Ci0rICAgaGFzaF9kaXNwb3NlIChk aXNwb3Nlcik7Ci0rIAotICAgIHRlbXB2YXJfbGlzdFt0dmxpc3RfaW5kXSA9IDA7Ci0gIAotKioq IC4uL2Jhc2gtNS4wLXBhdGNoZWQvdGVzdHMvdmFyZW52LnJpZ2h0CTIwMTgtMTItMTcgMTU6Mzk6 NDguMDAwMDAwMDAwIC0wNTAwCi0tLS0gdGVzdHMvdmFyZW52LnJpZ2h0CTIwMTktMDgtMjIgMTY6 MDU6MjUuMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAxNDcsMTUzICoqKioK LSAgb3V0c2lkZTogZGVjbGFyZSAtLSB2YXI9Im9uZSIKLSAgaW5zaWRlOiBkZWNsYXJlIC14IHZh cj0idmFsdWUiCi0hIG91dHNpZGU6IGRlY2xhcmUgLXggdmFyPSJ2YWx1ZSIKLSEgaW5zaWRlOiBk ZWNsYXJlIC0tIHZhcj0ibG9jYWwiCi0hIG91dHNpZGU6IGRlY2xhcmUgLXggdmFyPSJnbG9iYWwi Ci0gIGZvbz08dW5zZXQ+IGVudmlyb25tZW50IGZvbz0KLSAgZm9vPWZvbyBlbnZpcm9ubWVudCBm b289Zm9vCi0tLS0gMTQ3LDE1MyAtLS0tCi0gIG91dHNpZGU6IGRlY2xhcmUgLS0gdmFyPSJvbmUi Ci0gIGluc2lkZTogZGVjbGFyZSAteCB2YXI9InZhbHVlIgotISBvdXRzaWRlOiBkZWNsYXJlIC0t IHZhcj0ib3V0c2lkZSIKLSEgaW5zaWRlOiBkZWNsYXJlIC14IHZhcj0iZ2xvYmFsIgotISBvdXRz aWRlOiBkZWNsYXJlIC0tIHZhcj0ib3V0c2lkZSIKLSAgZm9vPTx1bnNldD4gZW52aXJvbm1lbnQg Zm9vPQotICBmb289Zm9vIGVudmlyb25tZW50IGZvbz1mb28KLSoqKiAuLi9iYXNoLTUuMC9wYXRj aGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxl dmVsLmgJMjAxNi0xMC0wMSAxMTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioq KgotKioqIDI2LDMwICoqKioKLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVs IChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExF VkVMIDkKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0K LSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVy c2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDEwCi0gIAotICAjZW5k aWYgLyogX1BBVENITEVWRUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9i YXNoNTAtMDExIGIvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTEKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGE5YWU2OTBlMDA0Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jh c2gvZmlsZXMvYmFzaDUwLTAxMQorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLQkJCSAg ICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09PT09PT0KLQotQmFzaC1S ZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDExCi0KLUJ1Zy1SZXBvcnRlZC1ieToJTWF0 dCBXaGl0bG9jawotQnVnLVJlZmVyZW5jZS1JRDoJCi1CdWctUmVmZXJlbmNlLVVSTDoJaHR0cHM6 Ly9zYXZhbm5haC5nbnUub3JnL3N1cHBvcnQvPzEwOTY3MQotCi1CdWctRGVzY3JpcHRpb246Ci0K LVRoZSBjb25kaXRpb25hbCBjb21tYW5kIGRpZCBub3QgcGVyZm9ybSBhcHByb3ByaWF0ZSBxdW90 ZWQgbnVsbCBjaGFyYWN0ZXIKLXJlbW92YWwgb24gaXRzIGFyZ3VtZW50cywgY2F1c2luZyBzeW50 YXggZXJyb3JzIGFuZCBhdHRlbXB0cyB0byBzdGF0Ci1pbnZhbGlkIHBhdGhuYW1lcy4KLQotUGF0 Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcpOgotCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9z dWJzdC5jCTIwMTgtMTItMjIgMTc6NDM6MzcuMDAwMDAwMDAwIC0wNTAwCi0tLS0gc3Vic3QuYwky MDE5LTA0LTE0IDEzOjI1OjQxLjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiog MzYyNiwzNjMwICoqKioKLSAgICAgU1BFQ0lBTCBpcyAyLCB0aGlzIGlzIGFuIHJocyBhcmd1bWVu dCBmb3IgdGhlID1+IG9wZXJhdG9yLCBhbmQgc2hvdWxkCi0gICAgIGJlIHF1b3RlZCBhcHByb3By aWF0ZWx5IGZvciByZWdjb21wL3JlZ2V4ZWMuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlCi0h ICAgIGZvciByZW1vdmluZyB0aGUgYmFja3NsYXNoZXMgaWYgdGhlIHVucXVvdGVkIHdvcmQgaXMg bmVlZGVkIGxhdGVyLiAqLyAgIAotICBjaGFyICoKLSAgY29uZF9leHBhbmRfd29yZCAodywgc3Bl Y2lhbCkKLS0tLSAzNjQyLDM2NDggLS0tLQotICAgICBTUEVDSUFMIGlzIDIsIHRoaXMgaXMgYW4g cmhzIGFyZ3VtZW50IGZvciB0aGUgPX4gb3BlcmF0b3IsIGFuZCBzaG91bGQKLSAgICAgYmUgcXVv dGVkIGFwcHJvcHJpYXRlbHkgZm9yIHJlZ2NvbXAvcmVnZXhlYy4gIFRoZSBjYWxsZXIgaXMgcmVz cG9uc2libGUKLSEgICAgZm9yIHJlbW92aW5nIHRoZSBiYWNrc2xhc2hlcyBpZiB0aGUgdW5xdW90 ZWQgd29yZCBpcyBuZWVkZWQgbGF0ZXIuIEluCi0hICAgIGFueSBjYXNlLCBzaW5jZSB3ZSBkb24n dCBwZXJmb3JtIHdvcmQgc3BsaXR0aW5nLCB3ZSBuZWVkIHRvIGRvIHF1b3RlZAotISAgICBudWxs IGNoYXJhY3RlciByZW1vdmFsLiAqLwotICBjaGFyICoKLSAgY29uZF9leHBhbmRfd29yZCAodywg c3BlY2lhbCkKLSoqKioqKioqKioqKioqKgotKioqIDM2NDcsMzY1MCAqKioqCi0tLS0gMzY2NSwz NjcwIC0tLS0KLSAgICAgICAgaWYgKHNwZWNpYWwgPT0gMCkJCQkvKiBMSFMgKi8KLSAgCXsKLSsg CSAgaWYgKGwtPndvcmQpCi0rIAkgICAgd29yZF9saXN0X3JlbW92ZV9xdW90ZWRfbnVsbHMgKGwp OwotICAJICBkZXF1b3RlX2xpc3QgKGwpOwotICAJICByID0gc3RyaW5nX2xpc3QgKGwpOwotKioq IC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAwMDAwMCAt MDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAwMCAtMDQw MAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3IgdG8gZmlu ZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAot ISAjZGVmaW5lIFBBVENITEVWRUwgMTAKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAq LwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVs IChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExF VkVMIDExCi0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDEyIGIvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0w MTIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0NzBlNzY2NTUwLi4wMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMgorKysgL2Rldi9udWxsCkBAIC0x LDY0ICswLDAgQEAKLQkJCSAgICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09 PT09PT09PT0KLQotQmFzaC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDEyCi0KLUJ1 Zy1SZXBvcnRlZC1ieToJbGVzc2J1Z0BxcS5jb20KLUJ1Zy1SZWZlcmVuY2UtSUQ6CTx0ZW5jZW50 XzZBQTUzMUQ5QTVDQzQxMjFEODZCRDVDREEyRTBEQTk4QzYwNUBxcS5jb20+Ci1CdWctUmVmZXJl bmNlLVVSTDoKLQotQnVnLURlc2NyaXB0aW9uOgotCi1XaGVuIHVzaW5nIHByZXZpb3VzLWhpc3Rv cnkgdG8gZ28gYmFjayBiZXlvbmQgdGhlIGJlZ2lubmluZyBvZiB0aGUgaGlzdG9yeSBsaXN0LAot aXQncyBwb3NzaWJsZSB0byBtb3ZlIHRvIGFuIGluY29ycmVjdCBwYXJ0aWFsIGxpbmUuCi0KLVBh dGNoIChhcHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQv bGliL3JlYWRsaW5lL21pc2MuYwkyMDE3LTA3LTA3IDE3OjMwOjEyLjAwMDAwMDAwMCAtMDQwMAot LS0tIGxpYi9yZWFkbGluZS9taXNjLmMJMjAxOS0wNS0xNiAxMTo0Mzo0Ni4wMDAwMDAwMDAgLTA0 MDAKLSoqKioqKioqKioqKioqKgotKioqIDU3Nyw1ODAgKioqKgotLS0tIDU5MCw1OTQgLS0tLQot ICB7Ci0gICAgSElTVF9FTlRSWSAqb2xkX3RlbXAsICp0ZW1wOwotKyAgIGludCBoYWRfc2F2ZWRf bGluZTsKLSAgCi0gICAgaWYgKGNvdW50IDwgMCkKLSoqKioqKioqKioqKioqKgotKioqIDU4OSw1 OTIgKioqKgotLS0tIDYwMyw2MDcgLS0tLQotICAKLSAgICAvKiBJZiB3ZSBkb24ndCBoYXZlIGEg bGluZSBzYXZlZCwgdGhlbiBzYXZlIHRoaXMgb25lLiAqLwotKyAgIGhhZF9zYXZlZF9saW5lID0g X3JsX3NhdmVkX2xpbmVfZm9yX2hpc3RvcnkgIT0gMDsKLSAgICBybF9tYXliZV9zYXZlX2xpbmUg KCk7Ci0gIAotKioqKioqKioqKioqKioqCi0qKiogNjEyLDYxNiAqKioqCi0gICAgaWYgKHRlbXAg PT0gMCkKLSAgICAgIHsKLSEgICAgICAgcmxfbWF5YmVfdW5zYXZlX2xpbmUgKCk7Ci0gICAgICAg IHJsX2RpbmcgKCk7Ci0gICAgICB9Ci0tLS0gNjI3LDYzMiAtLS0tCi0gICAgaWYgKHRlbXAgPT0g MCkKLSAgICAgIHsKLSEgICAgICAgaWYgKGhhZF9zYXZlZF9saW5lID09IDApCi0hICAgICAgICAg X3JsX2ZyZWVfc2F2ZWRfaGlzdG9yeV9saW5lICgpOwotICAgICAgICBybF9kaW5nICgpOwotICAg ICAgfQotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAw MDAwMDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAw MDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBm b3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZyku ICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMTEKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hM RVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBh dGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmlu ZSBQQVRDSExFVkVMIDEyCi0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KZGlmZiAt LWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDEzIGIvc3JjcGtncy9iYXNoL2ZpbGVz L2Jhc2g1MC0wMTMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0NGZkYjUwNTNiLi4w MDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMworKysgL2Rldi9u dWxsCkBAIC0xLDczICswLDAgQEAKLQkJCSAgICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAg PT09PT09PT09PT09PT09PT0KLQotQmFzaC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAt MDEzCi0KLUJ1Zy1SZXBvcnRlZC1ieToJSElST1NFIE1hc2Fha2kgPGhpcm9zZTMxQGdtYWlsLmNv bT4KLUJ1Zy1SZWZlcmVuY2UtSUQ6CTxDQUdTT2ZBLVJxaVRlPStHc1hzREt5WnJyTVdINGJEYlhn TVZWZWdNYTZPanFDNXhiblFAbWFpbC5nbWFpbC5jb20+Ci1CdWctUmVmZXJlbmNlLVVSTDoJaHR0 cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDE5LTA1L21zZzAwMDM4 Lmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1SZWFkaW5nIGhpc3RvcnkgZW50cmllcyB3aXRo IHRpbWVzdGFtcHMgY2FuIHJlc3VsdCBpbiBoaXN0b3J5IGVudHJpZXMgam9pbmVkCi1ieSBsaW5l ZmVlZHMuCi0KLVBhdGNoIChhcHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gt NS4wLXBhdGNoZWQvbGliL3JlYWRsaW5lL2hpc3RmaWxlLmMJMjAxOC0wNi0xMSAwOToxNDo1Mi4w MDAwMDAwMDAgLTA0MDAKLS0tLSBsaWIvcmVhZGxpbmUvaGlzdGZpbGUuYwkyMDE5LTA1LTE2IDE1 OjU1OjU3LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMzcwLDM3NiAqKioq Ci0gIAotICAgIGhhc190aW1lc3RhbXBzID0gSElTVF9USU1FU1RBTVBfU1RBUlQgKGJ1ZmZlcik7 Ci0hICAgaGlzdG9yeV9tdWx0aWxpbmVfZW50cmllcyArPSBoYXNfdGltZXN0YW1wcyAmJiBoaXN0 b3J5X3dyaXRlX3RpbWVzdGFtcHM7ICAKLSAgCi0gICAgLyogU2tpcCBsaW5lcyB1bnRpbCB3ZSBh cmUgYXQgRlJPTS4gKi8KLSAgICBmb3IgKGxpbmVfc3RhcnQgPSBsaW5lX2VuZCA9IGJ1ZmZlcjsg bGluZV9lbmQgPCBidWZlbmQgJiYgY3VycmVudF9saW5lIDwgZnJvbTsgbGluZV9lbmQrKykKLSAg ICAgIGlmICgqbGluZV9lbmQgPT0gJ1xuJykKLS0tLSAzNzAsMzc4IC0tLS0KLSAgCi0gICAgaGFz X3RpbWVzdGFtcHMgPSBISVNUX1RJTUVTVEFNUF9TVEFSVCAoYnVmZmVyKTsKLSEgICBoaXN0b3J5 X211bHRpbGluZV9lbnRyaWVzICs9IGhhc190aW1lc3RhbXBzICYmIGhpc3Rvcnlfd3JpdGVfdGlt ZXN0YW1wczsKLSAgCi0gICAgLyogU2tpcCBsaW5lcyB1bnRpbCB3ZSBhcmUgYXQgRlJPTS4gKi8K LSsgICBpZiAoaGFzX3RpbWVzdGFtcHMpCi0rICAgICBsYXN0X3RzID0gYnVmZmVyOwotICAgIGZv ciAobGluZV9zdGFydCA9IGxpbmVfZW5kID0gYnVmZmVyOyBsaW5lX2VuZCA8IGJ1ZmVuZCAmJiBj dXJyZW50X2xpbmUgPCBmcm9tOyBsaW5lX2VuZCsrKQotICAgICAgaWYgKCpsaW5lX2VuZCA9PSAn XG4nKQotKioqKioqKioqKioqKioqCi0qKiogMzgxLDM4NSAqKioqCi0tLS0gMzgzLDM5OCAtLS0t Ci0gIAlpZiAoSElTVF9USU1FU1RBTVBfU1RBUlQocCkgPT0gMCkKLSAgCSAgY3VycmVudF9saW5l Kys7Ci0rIAllbHNlCi0rIAkgIGxhc3RfdHMgPSBwOwotICAJbGluZV9zdGFydCA9IHA7Ci0rIAkv KiBJZiB3ZSBhcmUgYXQgdGhlIGxhc3QgbGluZSAoY3VycmVudF9saW5lID09IGZyb20pIGJ1dCB3 ZSBoYXZlCi0rIAkgICB0aW1lc3RhbXBzIChoYXNfdGltZXN0YW1wcyksIHRoZW4gbGluZV9zdGFy dCBwb2ludHMgdG8gdGhlCi0rIAkgICB0ZXh0IG9mIHRoZSBsYXN0IGNvbW1hbmQsIGFuZCB3ZSBu ZWVkIHRvIHNraXAgdG8gaXRzIGVuZC4gKi8KLSsgCWlmIChjdXJyZW50X2xpbmUgPj0gZnJvbSAm JiBoYXNfdGltZXN0YW1wcykKLSsgCSAgewotKyAJICAgIGZvciAobGluZV9lbmQgPSBwOyBsaW5l X2VuZCA8IGJ1ZmVuZCAmJiAqbGluZV9lbmQgIT0gJ1xuJzsgbGluZV9lbmQrKykKLSsgCSAgICAg IDsKLSsgCSAgICBsaW5lX3N0YXJ0ID0gKCpsaW5lX2VuZCA9PSAnXG4nKSA/IGxpbmVfZW5kICsg MSA6IGxpbmVfZW5kOwotKyAJICB9Ci0gICAgICAgIH0KLSAgCi0KLSoqKiAuLi9iYXNoLTUuMC9w YXRjaGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRj aGxldmVsLmgJMjAxNi0xMC0wMSAxMTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioq KioqKgotKioqIDI2LDMwICoqKioKLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxl dmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRD SExFVkVMIDEyCi0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAt LS0tCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2Nz IHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxMwotICAKLSAg I2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAxNCBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE0CmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA2Y2I0OWFhZTcyNS4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtn cy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTQKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0J CQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09PT09PT09PT09PT09Ci0KLUJh c2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAxNAotCi1CdWctUmVwb3J0ZWQtYnk6 CUpvaGFubmVzIEhpZWxzY2hlciA8amhpZWxzY2hlckBwb3N0ZW8uZGU+Ci1CdWctUmVmZXJlbmNl LUlEOgk8MjAxOTAyMDgyMDUwNDguNzdjMjVhODNAaG9yZGV2bT4KLUJ1Zy1SZWZlcmVuY2UtVVJM OglodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMTktMDIvbXNn MDAwMzIuaHRtbAotCi1CdWctRGVzY3JpcHRpb246Ci0KLUlmIHRoZSBjdXJyZW50IGxpbmUgaXMg ZW1wdHksIHVzaW5nIHRoZSBlbWFjcyBDLXhDLWUgYmluZGluZyB0byBlbnRlciB0aGUKLWVkaXRv ciB3aWxsIGVkaXQgdGhlIHByZXZpb3VzIGNvbW1hbmQgaW5zdGVhZCBvZiB0aGUgY3VycmVudCAo ZW1wdHkpIG9uZS4KLQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcpOgotCi0qKiogLi4v YmFzaC01LjAtcGF0Y2hlZC9iYXNobGluZS5jCTIwMTktMDEtMTYgMTY6MTM6MjEuMDAwMDAwMDAw IC0wNTAwCi0tLS0gYmFzaGxpbmUuYwkyMDE5LTAyLTExIDExOjE4OjU3LjAwMDAwMDAwMCAtMDUw MAotKioqKioqKioqKioqKioqCi0qKiogOTYyLDk3MCAqKioqCi0gIAkgZmluaXNoZWQgd2l0aCB0 aGUgY29tbWFuZCwgc28gd2Ugc2hvdWxkIG5vdCBpZ25vcmUgdGhlIGxhc3QgY29tbWFuZCAqLwot ICAgICAgICB1c2luZ19oaXN0b3J5ICgpOwotISAgICAgICBpZiAocmxfbGluZV9idWZmZXJbMF0p Ci0hIAl7Ci0hIAkgIGN1cnJlbnRfY29tbWFuZF9saW5lX2NvdW50Kys7CS8qIGZvciBybF9uZXds aW5lIGFib3ZlICovCi0hIAkgIGJhc2hfYWRkX2hpc3RvcnkgKHJsX2xpbmVfYnVmZmVyKTsKLSEg CX0KLSAgICAgICAgY3VycmVudF9jb21tYW5kX2xpbmVfY291bnQgPSAwOwkvKiBmb3IgZHVtbXkg aGlzdG9yeSBlbnRyeSAqLwotICAgICAgICBiYXNoX2FkZF9oaXN0b3J5ICgiIik7Ci0tLS0gOTY1 LDk3MCAtLS0tCi0gIAkgZmluaXNoZWQgd2l0aCB0aGUgY29tbWFuZCwgc28gd2Ugc2hvdWxkIG5v dCBpZ25vcmUgdGhlIGxhc3QgY29tbWFuZCAqLwotICAgICAgICB1c2luZ19oaXN0b3J5ICgpOwot ISAgICAgICBjdXJyZW50X2NvbW1hbmRfbGluZV9jb3VudCsrOwkvKiBmb3IgcmxfbmV3bGluZSBh Ym92ZSAqLwotISAgICAgICBiYXNoX2FkZF9oaXN0b3J5IChybF9saW5lX2J1ZmZlcik7Ci0gICAg ICAgIGN1cnJlbnRfY29tbWFuZF9saW5lX2NvdW50ID0gMDsJLyogZm9yIGR1bW15IGhpc3Rvcnkg ZW50cnkgKi8KLSAgICAgICAgYmFzaF9hZGRfaGlzdG9yeSAoIiIpOwotKioqIC4uL2Jhc2gtNS4w L3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAwMDAwMCAtMDQwMAotLS0tIHBh dGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioq KioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2gg bGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBB VENITEVWRUwgMTMKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMw IC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNj Y3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDE0Ci0gIAot ICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9m aWxlcy9iYXNoNTAtMDE1IGIvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTUKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmNmU1ZTY5ZDZlLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNw a2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNQorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAK LQkJCSAgICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09PT09PT0KLQot QmFzaC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDE1Ci0KLUJ1Zy1SZXBvcnRlZC1i eToJWXUgS291IDxja3lvb2dAZ21haWwuY29tPgotQnVnLVJlZmVyZW5jZS1JRDoJPENBQXFvRjlL bzNuQVNoSlhHenVjYWZzLUJ5VWFnelo0bmJRb253RWt3QzdzOVVxZldLd0BtYWlsLmdtYWlsLmNv bT4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1s L2J1Zy1iYXNoLzIwMTktMDUvbXNnMDAwMzIuaHRtbAotCi1CdWctRGVzY3JpcHRpb246Ci0KLUlm IGFsaWFzIGV4cGFuc2lvbiBpcyBlbmFibGVkIHdoZW4gcHJvY2Vzc2luZyB0aGUgY29tbWFuZCBh cmd1bWVudCB0byB0aGUKLWAtYycgb3B0aW9uLCBhbiBhbGlhcyBpcyBkZWZpbmVkIGluIHRoYXQg Y29tbWFuZCwgYW5kIHRoZSBjb21tYW5kIGVuZHMgd2l0aAotdGhlIGludm9jYXRpb24gb2YgdGhh dCBhbGlhcywgdGhlIHNoZWxsJ3MgY29tbWFuZCBwYXJzZXIgY2FuIHByZW1hdHVyZWx5Ci10ZXJt aW5hdGUgYmVmb3JlIHRoZSBlbnRpcmUgY29tbWFuZCBpcyBleGVjdXRlZC4KLQotUGF0Y2ggKGFw cGx5IHdpdGggYHBhdGNoIC1wMCcpOgotCi0qKiogLi4vYmFzaC0yMDE5MDQyNi9idWlsdGlucy9l dmFsc3RyaW5nLmMJMjAxOS0wMS0yOSAxNDoxNToxOS4wMDAwMDAwMDAgLTA1MDAKLS0tLSBidWls dGlucy9ldmFsc3RyaW5nLmMJMjAxOS0wNS0xNSAxNDoxOTozNi4wMDAwMDAwMDAgLTA0MDAKLSoq KioqKioqKioqKioqKgotKioqIDkyLDk1ICoqKioKLS0tLSA5Miw5NiAtLS0tCi0gIAkgIHJ1bm5p bmdfdHJhcCA9PSAwICYmCi0gIAkgICpiYXNoX2lucHV0LmxvY2F0aW9uLnN0cmluZyA9PSAnXDAn ICYmCi0rIAkgIHBhcnNlcl9leHBhbmRpbmdfYWxpYXMgKCkgPT0gMCAmJgotICAJICBjb21tYW5k LT50eXBlID09IGNtX3NpbXBsZSAmJgotICAJICBzaWduYWxfaXNfdHJhcHBlZCAoRVhJVF9UUkFQ KSA9PSAwICYmCi0qKioqKioqKioqKioqKioKLSoqKiAxMDYsMTA5ICoqKioKLS0tLSAxMDcsMTEx IC0tLS0KLSAgewotICAgIHJldHVybiAoKmJhc2hfaW5wdXQubG9jYXRpb24uc3RyaW5nID09ICdc MCcgJiYKLSsgCSAgcGFyc2VyX2V4cGFuZGluZ19hbGlhcyAoKSA9PSAwICYmCi0gIAkgIChjb21t YW5kLT52YWx1ZS5Db25uZWN0aW9uLT5jb25uZWN0b3IgPT0gQU5EX0FORCB8fCBjb21tYW5kLT52 YWx1ZS5Db25uZWN0aW9uLT5jb25uZWN0b3IgPT0gT1JfT1IgfHwgY29tbWFuZC0+dmFsdWUuQ29u bmVjdGlvbi0+Y29ubmVjdG9yID09ICc7JykgJiYKLSAgCSAgY29tbWFuZC0+dmFsdWUuQ29ubmVj dGlvbi0+c2Vjb25kLT50eXBlID09IGNtX3NpbXBsZSk7Ci0qKioqKioqKioqKioqKioKLSoqKiAy OTEsMjk1ICoqKioKLSAgICB3aXRoX2lucHV0X2Zyb21fc3RyaW5nIChzdHJpbmcsIGZyb21fZmls ZSk7Ci0gICAgY2xlYXJfc2hlbGxfaW5wdXRfbGluZSAoKTsKLSEgICB3aGlsZSAoKihiYXNoX2lu cHV0LmxvY2F0aW9uLnN0cmluZykpCi0gICAgICB7Ci0gICAgICAgIGNvbW1hbmQgPSAoQ09NTUFO RCAqKU5VTEw7Ci0tLS0gMjkzLDI5NyAtLS0tCi0gICAgd2l0aF9pbnB1dF9mcm9tX3N0cmluZyAo c3RyaW5nLCBmcm9tX2ZpbGUpOwotICAgIGNsZWFyX3NoZWxsX2lucHV0X2xpbmUgKCk7Ci0hICAg d2hpbGUgKCooYmFzaF9pbnB1dC5sb2NhdGlvbi5zdHJpbmcpIHx8IHBhcnNlcl9leHBhbmRpbmdf YWxpYXMgKCkpCi0gICAgICB7Ci0gICAgICAgIGNvbW1hbmQgPSAoQ09NTUFORCAqKU5VTEw7Ci0q KioqKioqKioqKioqKioKLSoqKiA1NDYsNTUwICoqKioKLSAgCi0gICAgd2l0aF9pbnB1dF9mcm9t X3N0cmluZyAoc3RyaW5nLCBmcm9tX2ZpbGUpOwotISAgIHdoaWxlICgqKGJhc2hfaW5wdXQubG9j YXRpb24uc3RyaW5nKSkKLSAgICAgIHsKLSAgICAgICAgY29tbWFuZCA9IChDT01NQU5EICopTlVM TDsKLS0tLSA1NDgsNTUyIC0tLS0KLSAgCi0gICAgd2l0aF9pbnB1dF9mcm9tX3N0cmluZyAoc3Ry aW5nLCBmcm9tX2ZpbGUpOwotISAgIHdoaWxlICgqKGJhc2hfaW5wdXQubG9jYXRpb24uc3RyaW5n KSkJCS8qIFhYWCAtIHBhcnNlcl9leHBhbmRpbmdfYWxpYXMgKCkgPyAqLwotICAgICAgewotICAg ICAgICBjb21tYW5kID0gKENPTU1BTkQgKilOVUxMOwotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2 ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwu aAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0q KiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZv ciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwg MTQKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAg ICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lv biBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDE1Ci0gIAotICAjZW5kaWYg LyogX1BBVENITEVWRUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDE2IGIvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTYKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDg3ZjIzMmQ3YWQ0Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gv ZmlsZXMvYmFzaDUwLTAxNgorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLQkJCSAgICAg QkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09PT09PT0KLQotQmFzaC1SZWxl YXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDE2Ci0KLUJ1Zy1SZXBvcnRlZC1ieToJc3Vubnlj ZW1ldGVyeUBnbWFpbC5jb20KLUJ1Zy1SZWZlcmVuY2UtSUQ6CTwyMDE5MDMxNjA0MTUzNC5HQjIy ODg0QG1pZG5pZ2h0PgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0dHBzOi8vbGlzdHMuZ251Lm9yZy9h cmNoaXZlL2h0bWwvYnVnLWJhc2gvMjAxOS0wMy9tc2cwMDA3MC5odG1sCi0KLUJ1Zy1EZXNjcmlw dGlvbjoKLQotQmFzaCB3YWl0cyB0b28gbG9uZyB0byByZWFwIC9kZXYvZmQgcHJvY2VzcyBzdWJz dGl0dXRpb25zIHVzZWQgYXMgcmVkaXJlY3Rpb25zCi13aXRoIGxvb3BzIGFuZCBncm91cCBjb21t YW5kcywgd2hpY2ggY2FuIGxlYWQgdG8gZmlsZSBkZXNjcmlwdG9yIGV4aGF1c3Rpb24uCi0KLVBh dGNoIChhcHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQv ZXhlY3V0ZV9jbWQuYwkyMDE5LTA0LTE5IDE1OjQ2OjM2LjAwMDAwMDAwMCAtMDQwMAotLS0tIGV4 ZWN1dGVfY21kLmMJMjAxOS0wNy0wMSAxNjo0NTo0OS4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioq KioqKioqKgotKioqIDExMDQsMTEwNyAqKioqCi0tLS0gMTA4NSwxMTA0IC0tLS0KLSAgICAgICAg ZGlzY2FyZF91bndpbmRfZnJhbWUgKCJpbnRlcm5hbF9maWZvcyIpOwotICAgICAgfQotKyAjIGlm IGRlZmluZWQgKEhBVkVfREVWX0ZEKQotKyAgIC8qIFJlYXAgcHJvY2VzcyBzdWJzdGl0dXRpb25z IGF0IHRoZSBlbmQgb2YgbG9vcHMgKi8KLSsgICBzd2l0Y2ggKGNvbW1hbmQtPnR5cGUpCi0rICAg ICB7Ci0rICAgICBjYXNlIGNtX3doaWxlOgotKyAgICAgY2FzZSBjbV91bnRpbDoKLSsgICAgIGNh c2UgY21fZm9yOgotKyAgICAgY2FzZSBjbV9ncm91cDoKLSsgIyAgICBpZiBkZWZpbmVkIChBUklU SF9GT1JfQ09NTUFORCkKLSsgICAgIGNhc2UgY21fYXJpdGhfZm9yOgotKyAjICAgIGVuZGlmCi0r ICAgICAgIHJlYXBfcHJvY3N1YnMgKCk7Ci0rICAgICBkZWZhdWx0OgotKyAgICAgICBicmVhazsK LSsgICAgIH0KLSsgIyAgZW5kaWYgLyogSEFWRV9ERVZfRkQgKi8KLSAgI2VuZGlmCi0gIAotCi0q KiogLi4vYmFzaC01LjAvcGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAw IC0wNDAwCi0tLS0gcGF0Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0w NDAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBm aW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAg Ci0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxNQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hf ICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2 ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENI TEVWRUwgMTYKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpkaWZmIC0tZ2l0IGEv c3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTcgYi9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUw LTAxNwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRmY2I2YTg2MDYuLjAwMDAwMDAw MDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE3CisrKyAvZGV2L251bGwKQEAg LTEsMjg5ICswLDAgQEAKLQkJCSAgICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09 PT09PT09PT09PT0KLQotQmFzaC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDE3Ci0K LUJ1Zy1SZXBvcnRlZC1ieToJVmFsZW50aW4gTGFiIDx2YWxlbnRpbi5sYWJAa2FseXN0by5vcmc+ Ci1CdWctUmVmZXJlbmNlLUlEOgk8YWI5ODFiOWMtNjBhNS00NmQwLWI3ZTYtYTZkODhiODBkZjUw QGthbHlzdG8ub3JnPgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0dHBzOi8vbGlzdHMuZ251Lm9yZy9h cmNoaXZlL2h0bWwvYnVnLWJhc2gvMjAyMC0wMy9tc2cwMDA2Mi5odG1sCi0KLUJ1Zy1EZXNjcmlw dGlvbjoKLQotVGhlcmUgd2VyZSBjYXNlcyB3aGVyZSBwYXRjaCAxNiByZWFwZWQgcHJvY2VzcyBz dWJzdGl0dXRpb24gZmlsZSBkZXNjcmlwdG9ycwotKG9yIEZJRk9zKSBhbmQgcHJvY2Vzc2VzIHRv IGVhcmx5LiBUaGlzIGlzIGEgYmV0dGVyIGZpeCBmb3IgdGhlIHByb2JsZW0gdGhhdAotYmFzaDUw LTAxNiBhdHRlbXB0ZWQgdG8gc29sdmUuCi0KLVBhdGNoIChhcHBseSB3aXRoIGBwYXRjaCAtcDAn KToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvc3Vic3QuYwkyMDE5LTA4LTI5IDExOjE2OjQ5 LjAwMDAwMDAwMCAtMDQwMAotLS0tIHN1YnN0LmMJMjAyMC0wNC0wMiAxNjoyNDoxOS4wMDAwMDAw MDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDUzMzcsNTM0MSAqKioqCi0gIH0KLSAgCi0h IGNoYXIgKgotICBjb3B5X2ZpZm9fbGlzdCAoc2l6ZXApCi0gICAgICAgaW50ICpzaXplcDsKLS0t LSA1MzM3LDUzNDEgLS0tLQotICB9Ci0gIAotISB2b2lkICoKLSAgY29weV9maWZvX2xpc3QgKHNp emVwKQotICAgICAgIGludCAqc2l6ZXA7Ci0qKioqKioqKioqKioqKioKLSoqKiA1MzQzLDUzNDcg KioqKgotICAgIGlmIChzaXplcCkKLSAgICAgICpzaXplcCA9IDA7Ci0hICAgcmV0dXJuIChjaGFy ICopTlVMTDsKLSAgfQotICAKLS0tLSA1MzQzLDUzNDcgLS0tLQotICAgIGlmIChzaXplcCkKLSAg ICAgICpzaXplcCA9IDA7Ci0hICAgcmV0dXJuICh2b2lkICopTlVMTDsKLSAgfQotICAKLSoqKioq KioqKioqKioqKgotKioqIDU0MDksNTQxNCAqKioqCi0gIAlpZiAoZmlmb19saXN0W2ldLmZpbGUp Ci0gIAkgIHsKLSEgCSAgICBmaWZvX2xpc3Rbal0uZmlsZSA9IGZpZm9fbGlzdFtpXS5maWxlOwot ISAJICAgIGZpZm9fbGlzdFtqXS5wcm9jID0gZmlmb19saXN0W2ldLnByb2M7Ci0gIAkgICAgaisr OwotICAJICB9Ci0tLS0gNTQwOSw1NDE5IC0tLS0KLSAgCWlmIChmaWZvX2xpc3RbaV0uZmlsZSkK LSAgCSAgewotISAJICAgIGlmIChpICE9IGopCi0hIAkgICAgICB7Ci0hIAkJZmlmb19saXN0W2pd LmZpbGUgPSBmaWZvX2xpc3RbaV0uZmlsZTsKLSEgCQlmaWZvX2xpc3Rbal0ucHJvYyA9IGZpZm9f bGlzdFtpXS5wcm9jOwotISAJCWZpZm9fbGlzdFtpXS5maWxlID0gKGNoYXIgKilOVUxMOwotISAJ CWZpZm9fbGlzdFtpXS5wcm9jID0gMDsKLSEgCSAgICAgIH0KLSAgCSAgICBqKys7Ci0gIAkgIH0K LSoqKioqKioqKioqKioqKgotKioqIDU0MjYsNTQzMyAqKioqCi0gIHZvaWQKLSAgY2xvc2VfbmV3 X2ZpZm9zIChsaXN0LCBsc2l6ZSkKLSEgICAgICBjaGFyICpsaXN0OwotICAgICAgIGludCBsc2l6 ZTsKLSAgewotICAgIGludCBpOwotICAKLSAgICBpZiAobGlzdCA9PSAwKQotLS0tIDU0MzEsNTQz OSAtLS0tCi0gIHZvaWQKLSAgY2xvc2VfbmV3X2ZpZm9zIChsaXN0LCBsc2l6ZSkKLSEgICAgICB2 b2lkICpsaXN0OwotICAgICAgIGludCBsc2l6ZTsKLSAgewotICAgIGludCBpOwotKyAgIGNoYXIg KnBsaXN0OwotICAKLSAgICBpZiAobGlzdCA9PSAwKQotKioqKioqKioqKioqKioqCi0qKiogNTQz Nyw1NDQyICoqKioKLSAgICAgIH0KLSAgCi0hICAgZm9yIChpID0gMDsgaSA8IGxzaXplOyBpKysp Ci0hICAgICBpZiAobGlzdFtpXSA9PSAwICYmIGkgPCBmaWZvX2xpc3Rfc2l6ZSAmJiBmaWZvX2xp c3RbaV0ucHJvYyAhPSAtMSkKLSAgICAgICAgdW5saW5rX2ZpZm8gKGkpOwotICAKLS0tLSA1NDQz LDU0NDggLS0tLQotICAgICAgfQotICAKLSEgICBmb3IgKHBsaXN0ID0gKGNoYXIgKilsaXN0LCBp ID0gMDsgaSA8IGxzaXplOyBpKyspCi0hICAgICBpZiAocGxpc3RbaV0gPT0gMCAmJiBpIDwgZmlm b19saXN0X3NpemUgJiYgZmlmb19saXN0W2ldLnByb2MgIT0gLTEpCi0gICAgICAgIHVubGlua19m aWZvIChpKTsKLSAgCi0qKioqKioqKioqKioqKioKLSoqKiA1NTYwLDU1NjggKioqKgotICB9Ci0g IAotISBjaGFyICoKLSAgY29weV9maWZvX2xpc3QgKHNpemVwKQotICAgICAgIGludCAqc2l6ZXA7 Ci0gIHsKLSEgICBjaGFyICpyZXQ7Ci0gIAotICAgIGlmIChuZmRzID09IDAgfHwgdG90ZmRzID09 IDApCi0tLS0gNTU2Niw1NTc0IC0tLS0KLSAgfQotICAKLSEgdm9pZCAqCi0gIGNvcHlfZmlmb19s aXN0IChzaXplcCkKLSAgICAgICBpbnQgKnNpemVwOwotICB7Ci0hICAgdm9pZCAqcmV0OwotICAK LSAgICBpZiAobmZkcyA9PSAwIHx8IHRvdGZkcyA9PSAwKQotKioqKioqKioqKioqKioqCi0qKiog NTU3MCw1NTc5ICoqKioKLSAgICAgICAgaWYgKHNpemVwKQotICAJKnNpemVwID0gMDsKLSEgICAg ICAgcmV0dXJuIChjaGFyICopTlVMTDsKLSAgICAgIH0KLSAgCi0gICAgaWYgKHNpemVwKQotICAg ICAgKnNpemVwID0gdG90ZmRzOwotISAgIHJldCA9IChjaGFyICopeG1hbGxvYyAodG90ZmRzICog c2l6ZW9mIChwaWRfdCkpOwotICAgIHJldHVybiAobWVtY3B5IChyZXQsIGRldl9mZF9saXN0LCB0 b3RmZHMgKiBzaXplb2YgKHBpZF90KSkpOwotICB9Ci0tLS0gNTU3Niw1NTg1IC0tLS0KLSAgICAg ICAgaWYgKHNpemVwKQotICAJKnNpemVwID0gMDsKLSEgICAgICAgcmV0dXJuICh2b2lkICopTlVM TDsKLSAgICAgIH0KLSAgCi0gICAgaWYgKHNpemVwKQotICAgICAgKnNpemVwID0gdG90ZmRzOwot ISAgIHJldCA9IHhtYWxsb2MgKHRvdGZkcyAqIHNpemVvZiAocGlkX3QpKTsKLSAgICByZXR1cm4g KG1lbWNweSAocmV0LCBkZXZfZmRfbGlzdCwgdG90ZmRzICogc2l6ZW9mIChwaWRfdCkpKTsKLSAg fQotKioqKioqKioqKioqKioqCi0qKiogNTY0OCw1NjU1ICoqKioKLSAgdm9pZAotICBjbG9zZV9u ZXdfZmlmb3MgKGxpc3QsIGxzaXplKQotISAgICAgIGNoYXIgKmxpc3Q7Ci0gICAgICAgaW50IGxz aXplOwotICB7Ci0gICAgaW50IGk7Ci0gIAotICAgIGlmIChsaXN0ID09IDApCi0tLS0gNTY1NCw1 NjYyIC0tLS0KLSAgdm9pZAotICBjbG9zZV9uZXdfZmlmb3MgKGxpc3QsIGxzaXplKQotISAgICAg IHZvaWQgKmxpc3Q7Ci0gICAgICAgaW50IGxzaXplOwotICB7Ci0gICAgaW50IGk7Ci0rICAgcGlk X3QgKnBsaXN0OwotICAKLSAgICBpZiAobGlzdCA9PSAwKQotKioqKioqKioqKioqKioqCi0qKiog NTY1OSw1NjY0ICoqKioKLSAgICAgIH0KLSAgCi0hICAgZm9yIChpID0gMDsgaSA8IGxzaXplOyBp KyspCi0hICAgICBpZiAobGlzdFtpXSA9PSAwICYmIGkgPCB0b3RmZHMgJiYgZGV2X2ZkX2xpc3Rb aV0pCi0gICAgICAgIHVubGlua19maWZvIChpKTsKLSAgCi0tLS0gNTY2Niw1NjcxIC0tLS0KLSAg ICAgIH0KLSAgCi0hICAgZm9yIChwbGlzdCA9IChwaWRfdCAqKWxpc3QsIGkgPSAwOyBpIDwgbHNp emU7IGkrKykKLSEgICAgIGlmIChwbGlzdFtpXSA9PSAwICYmIGkgPCB0b3RmZHMgJiYgZGV2X2Zk X2xpc3RbaV0pCi0gICAgICAgIHVubGlua19maWZvIChpKTsKLSAgCi0qKiogLi4vYmFzaC01LjAt cGF0Y2hlZC9zdWJzdC5oCTIwMTgtMTAtMjEgMTg6NDY6MDkuMDAwMDAwMDAwIC0wNDAwCi0tLS0g c3Vic3QuaAkyMDIwLTA0LTAyIDE2OjI5OjI4LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioq KioqCi0qKiogMjc0LDI4MCAqKioqCi0gIGV4dGVybiB2b2lkIHVubGlua19maWZvIF9fUCgoaW50 KSk7Ci0gIAotISBleHRlcm4gY2hhciAqY29weV9maWZvX2xpc3QgX19QKChpbnQgKikpOwotISBl eHRlcm4gdm9pZCB1bmxpbmtfbmV3X2ZpZm9zIF9fUCgoY2hhciAqLCBpbnQpKTsKLSEgZXh0ZXJu IHZvaWQgY2xvc2VfbmV3X2ZpZm9zIF9fUCgoY2hhciAqLCBpbnQpKTsKLSAgCi0gIGV4dGVybiB2 b2lkIGNsZWFyX2ZpZm9fbGlzdCBfX1AoKHZvaWQpKTsKLS0tLSAyNzQsMjc5IC0tLS0KLSAgZXh0 ZXJuIHZvaWQgdW5saW5rX2ZpZm8gX19QKChpbnQpKTsKLSAgCi0hIGV4dGVybiB2b2lkICpjb3B5 X2ZpZm9fbGlzdCBfX1AoKGludCAqKSk7Ci0hIGV4dGVybiB2b2lkIGNsb3NlX25ld19maWZvcyBf X1AoKHZvaWQgKiwgaW50KSk7Ci0gIAotICBleHRlcm4gdm9pZCBjbGVhcl9maWZvX2xpc3QgX19Q KCh2b2lkKSk7Ci0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9leGVjdXRlX2NtZC5jCTIwMjAtMDIt MDYgMjA6MTY6NDguMDAwMDAwMDAwIC0wNTAwCi0tLS0gZXhlY3V0ZV9jbWQuYwkyMDIwLTA0LTAy IDE3OjAwOjEwLjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogNTY1LDU2OSAq KioqCi0gICNpZiBkZWZpbmVkIChQUk9DRVNTX1NVQlNUSVRVVElPTikKLSAgICB2b2xhdGlsZSBp bnQgb2ZpZm8sIG5maWZvLCBvc2l6ZSwgc2F2ZWRfZmlmbzsKLSEgICB2b2xhdGlsZSBjaGFyICpv Zmlmb19saXN0OwotICAjZW5kaWYKLSAgCi0tLS0gNTY1LDU2OSAtLS0tCi0gICNpZiBkZWZpbmVk IChQUk9DRVNTX1NVQlNUSVRVVElPTikKLSAgICB2b2xhdGlsZSBpbnQgb2ZpZm8sIG5maWZvLCBv c2l6ZSwgc2F2ZWRfZmlmbzsKLSEgICB2b2xhdGlsZSB2b2lkICpvZmlmb19saXN0OwotICAjZW5k aWYKLSAgCi0qKioqKioqKioqKioqKioKLSoqKiA3NTEsNzYwICoqKioKLSAgIyAgZW5kaWYKLSAg Ci0hICAgaWYgKHZhcmlhYmxlX2NvbnRleHQgIT0gMCkJLyogWFhYIC0gYWxzbyBpZiBzb3VyY2Vs ZXZlbCAhPSAwPyAqLwotICAgICAgewotICAgICAgICBvZmlmbyA9IG51bV9maWZvcyAoKTsKLSAg ICAgICAgb2ZpZm9fbGlzdCA9IGNvcHlfZmlmb19saXN0ICgoaW50ICopJm9zaXplKTsKLSAgICAg ICAgYmVnaW5fdW53aW5kX2ZyYW1lICgiaW50ZXJuYWxfZmlmb3MiKTsKLSEgICAgICAgYWRkX3Vu d2luZF9wcm90ZWN0ICh4ZnJlZSwgb2ZpZm9fbGlzdCk7Ci0gICAgICAgIHNhdmVkX2ZpZm8gPSAx OwotICAgICAgfQotLS0tIDc1MSw3NjIgLS0tLQotICAjICBlbmRpZgotICAKLSEgICAvKiBYWFgg LSBhbHNvIGlmIHNvdXJjZWxldmVsICE9IDA/ICovCi0hICAgaWYgKHZhcmlhYmxlX2NvbnRleHQg IT0gMCkKLSAgICAgIHsKLSAgICAgICAgb2ZpZm8gPSBudW1fZmlmb3MgKCk7Ci0gICAgICAgIG9m aWZvX2xpc3QgPSBjb3B5X2ZpZm9fbGlzdCAoKGludCAqKSZvc2l6ZSk7Ci0gICAgICAgIGJlZ2lu X3Vud2luZF9mcmFtZSAoImludGVybmFsX2ZpZm9zIik7Ci0hICAgICAgIGlmIChvZmlmb19saXN0 KQotISAJYWRkX3Vud2luZF9wcm90ZWN0ICh4ZnJlZSwgb2ZpZm9fbGlzdCk7Ci0gICAgICAgIHNh dmVkX2ZpZm8gPSAxOwotICAgICAgfQotKioqKioqKioqKioqKioqCi0qKiogMTEwMCwxMTIzICoq KioKLSAgICAgICAgbmZpZm8gPSBudW1fZmlmb3MgKCk7Ci0gICAgICAgIGlmIChuZmlmbyA+IG9m aWZvKQotISAJY2xvc2VfbmV3X2ZpZm9zICgoY2hhciAqKW9maWZvX2xpc3QsIG9zaXplKTsKLSAg ICAgICAgZnJlZSAoKHZvaWQgKilvZmlmb19saXN0KTsKLSAgICAgICAgZGlzY2FyZF91bndpbmRf ZnJhbWUgKCJpbnRlcm5hbF9maWZvcyIpOwotICAgICAgfQotLSAjIGlmIGRlZmluZWQgKEhBVkVf REVWX0ZEKQotLSAgIC8qIFJlYXAgcHJvY2VzcyBzdWJzdGl0dXRpb25zIGF0IHRoZSBlbmQgb2Yg bG9vcHMgKi8KLS0gICBzd2l0Y2ggKGNvbW1hbmQtPnR5cGUpCi0tICAgICB7Ci0tICAgICBjYXNl IGNtX3doaWxlOgotLSAgICAgY2FzZSBjbV91bnRpbDoKLS0gICAgIGNhc2UgY21fZm9yOgotLSAg ICAgY2FzZSBjbV9ncm91cDoKLS0gIyAgICBpZiBkZWZpbmVkIChBUklUSF9GT1JfQ09NTUFORCkK LS0gICAgIGNhc2UgY21fYXJpdGhfZm9yOgotLSAjICAgIGVuZGlmCi0tICAgICAgIHJlYXBfcHJv Y3N1YnMgKCk7Ci0tICAgICBkZWZhdWx0OgotLSAgICAgICBicmVhazsKLS0gICAgIH0KLS0gIyAg ZW5kaWYgLyogSEFWRV9ERVZfRkQgKi8KLSAgI2VuZGlmCi0gIAotLS0tIDExMDIsMTEwOSAtLS0t Ci0gICAgICAgIG5maWZvID0gbnVtX2ZpZm9zICgpOwotICAgICAgICBpZiAobmZpZm8gPiBvZmlm bykKLSEgCWNsb3NlX25ld19maWZvcyAoKHZvaWQgKilvZmlmb19saXN0LCBvc2l6ZSk7Ci0gICAg ICAgIGZyZWUgKCh2b2lkICopb2ZpZm9fbGlzdCk7Ci0gICAgICAgIGRpc2NhcmRfdW53aW5kX2Zy YW1lICgiaW50ZXJuYWxfZmlmb3MiKTsKLSAgICAgIH0KLSAgI2VuZGlmCi0gIAotCi0qKiogLi4v YmFzaC01LjAvcGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAw Ci0tLS0gcGF0Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0q KioqKioqKioqKioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRo ZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNk ZWZpbmUgUEFUQ0hMRVZFTCAxNgotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCi0t LS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZv ciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwg MTcKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9iYXNoL2ZpbGVzL3VwZGF0ZS1iYXNoLXBhdGNoZXMuc2ggYi9zcmNwa2dzL2Jhc2gvZmlsZXMv dXBkYXRlLWJhc2gtcGF0Y2hlcy5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjNj NWUyMGMyMzMuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy91cGRhdGUtYmFz aC1wYXRjaGVzLnNoCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0jIS9iaW4vYmFzaAot c291cmNlIC4uL3RlbXBsYXRlCi0KLWZvciBpIGluICQoc2VxIC13IDAwMSAke19iYXNoX3BhdGNo bGV2ZWx9KTsgZG8KLQljdXJsIGh0dHBzOi8vZnRwLmdudS5vcmcvZ251L2Jhc2gvYmFzaC0kX2Jh c2hfZGlzdHZlci1wYXRjaGVzL2Jhc2gke19iYXNoX2Rpc3R2ZXIvLy4vfS0kaSBcCi0JCT4gYmFz aCR7X2Jhc2hfZGlzdHZlci8vLi99LSR7X2Jhc2hfcGF0Y2hsZXZlbH0KLWRvbmUKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvYmFzaC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYmFzaC90ZW1wbGF0ZQppbmRleCA5 MWUyZTRjMWNhMy4uYWMwYzlkNDQwOWQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYmFzaC90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2Jhc2gvdGVtcGxhdGUKQEAgLTEsNyArMSw5IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdiYXNoJwogcGtnbmFtZT1iYXNoCi1fYmFzaF9kaXN0dmVyPTUuMAotX2Jhc2hf cGF0Y2hsZXZlbD0wMTcKK19tYWpvcj01CitfbWlub3I9MAorX2Jhc2hfZGlzdHZlcj0iJHtfbWFq b3J9LiR7X21pbm9yfSIKK19iYXNoX3BhdGNobGV2ZWw9MDE4CiB2ZXJzaW9uPSIke19iYXNoX2Rp c3R2ZXJ9LiR7X2Jhc2hfcGF0Y2hsZXZlbH0iCiByZXZpc2lvbj0xCiB3cmtzcmM9IiR7cGtnbmFt ZX0tJHtfYmFzaF9kaXN0dmVyfSIKQEAgLTE1LDkgKzE3LDM2IEBAIG1haW50YWluZXI9IkVubm8g Qm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVy IgogaG9tZXBhZ2U9Imh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYmFzaC9iYXNoLmh0bWwi CiBkaXN0ZmlsZXM9IiR7R05VX1NJVEV9LyR7cGtnbmFtZX0vJHtwa2duYW1lfS0ke19iYXNoX2Rp c3R2ZXJ9LnRhci5neiIKLW1ha2VfZGlycz0iL2V0Yy9iYXNoL2Jhc2hyYy5kIDc1NSByb290IHJv b3QiCi1jaGVja3N1bT1iNGE4MGYyYWM2NjE3MGIyOTEzZWZiZmI5ZjI1OTRmMWY3NmM3YjFhZmQx MWY3OTllMjIwMzVkNjMwNzdmYjRkCiAKK191cmw9IiR7R05VX1NJVEV9L2Jhc2gvYmFzaC0ke19i YXNoX2Rpc3R2ZXJ9LXBhdGNoZXMiCitmb3IgX3AgaW4gJChzZXEgLXcgMDAxICR7X2Jhc2hfcGF0 Y2hsZXZlbH0pOyBkbworCWRpc3RmaWxlcys9IiAke191cmx9L2Jhc2gke19tYWpvcn0ke19taW5v cn0tJHtfcH0iCisJc2tpcF9leHRyYWN0aW9uKz0iIGJhc2gke19tYWpvcn0ke19taW5vcn0tJHtf cH0iCitkb25lCit1bnNldCBfdXJsCit1bnNldCBfcAorCitjaGVja3N1bT0iYjRhODBmMmFjNjYx NzBiMjkxM2VmYmZiOWYyNTk0ZjFmNzZjN2IxYWZkMTFmNzk5ZTIyMDM1ZDYzMDc3ZmI0ZAorIGYy ZmU5ZTFmMGZhZGRmMTRhYjliZmE4OGQ0NTBhNzVlNWQwMjhmZWRhZmFkMjNiODg3MTZiZDY1N2M3 MzcyODkKKyA4N2U4N2QzNTQyZTU5ODc5OWFkYjNlN2UwMWM4MTY1YmM3NDNlMTM2YTQwMGVkMGRl MDE1ODQ1ZjdmZjY4NzA3CisgNGVlYmNkYzM3YjEzNzkzYTIzMmM1ZjJmNDk4YTVmY2JmN2RhMGVj YjNkYTIwNTkzOTFjMDk2ZGI2MjBlYzg1YgorIDE0NDQ3YWQ4MzJhZGQ4ZWNmYWZkY2U1Mzg0YmFk ZDkzMzY5N2I1NTljNDY4OGQ2YjllM2QzNmZmMzZjNjJmMDgKKyA1YmY1NGRkOWJkMmMyMTFkMmJm YjM0YTQ5ZTJjNzQxZjJlZDVlMzM4NzY3ZTljZTlmNGQ0MTI1NGJmOWY4Mjc2CisgZDY4NTI5YTZm ZjIwMWI2ZmY1OTE1MzE4YWIxMmZjMTZiOGEwZWJiNzdmZGEzMzA4MzAzZmNjMWUxMzM5ODQyMAor IDE3YjQxZTdlZTM2NzNkODg4N2RkMjU5OTI0MTdhMzk4Njc3NTMzYWI4ODI3OTM4YWE0MWZhZDcw ZGYxOWFmOWIKKyBlZWM2NDU4ODYyMmE4MmE1MDI5YjI3NzZlMjE4YTc1YTM2NDBiZWY0OTUzZjA5 ZDZlZTFmNDE5OTY3MGFkN2UzCisgZWQzY2EyMTc2NzMwM2ZjM2RlOTM5MzRhYTUyNGMyZTkyMDc4 N2M1MDZiNjAxY2M0MGE0ODk3ZDRiMDk0ZDkwMworIGQ2ZmJjMzI1ZjBiNWRjNTRkZGJlOGVlNDMw MjBiY2VkOGJkNTg5ZGRmZmVhNTlkMTI4ZGIxNGIyZTUyYThhMTEKKyAyYzRkZTMzMmI5MWVhZjc5 N2FiYmJkNmM3OTcwOTY5MGI1Y2JkNDhiMTJlOGRmZTc0ODA5NmRiZDdiZjQ3NGVhCisgMjk0M2Vl MTk2ODgwMTgyOTZmMmEwNGRiZmUzMGI3MTM4Yjg4OTcwMGVmYThmZjFjMDUyNGFmMjcxZTBlZTIz MworIGY1ZDcxNzhkOGRhMzA3OTllMDFiODNhMDgwMjAxOGQ5MTNkNmFhOTcyZGQyZGRhZDNiOTI3 ZjNmM2ViNzA5OWEKKyA1ZDZlZWU2NTE0ZWU2ZTIyYTg3YmJhOGQyMmJlMGE4NjIxYTBhZTExOTI0 NmYxYzVhOWEzNWRiMWY3MmFmNTg5CisgYTUxN2RmMmRkYTkzYjI2ZDVjYmYwMGVmZmVmZWE5M2Uz YTRjY2Q2NjUyZjE1MmY0MTA5MTcwNTQ0ZWJmYTA1ZQorIGZmZDFkN2E1NGE5OWZhN2Y1YjE4MjVl NGY3ZTk1ZDhjODg3NmJjMmNhMTUxZjE1MGU3NTFkNDI5YzY1MGIwNmQKKyA0Y2YzYjlmYWZiOGE2 NmQ0MTFkZDVmYzkxMjAwMzI1MzNhNDAxMmRmMWRjNmVlMDI0Yzc4MzMzNzNlMmRkYzMxCisgN2Mz MTRlMzc1YTEwNWE2NjQyZThlZDQ0ZjM4MDhiOWRlZjg5ZDE1Zjc0OTJmZTIwMjlhMjFiYTljMGRl ODFkMyIKKworbWFrZV9kaXJzPSIvZXRjL2Jhc2gvYmFzaHJjLmQgNzU1IHJvb3Qgcm9vdCIKIGNv bmZsaWN0cz0iY2hyb290LWJhc2g+PTAiCiByZWdpc3Rlcl9zaGVsbD0iL3Vzci9iaW4vYmFzaCAv YmluL2Jhc2giCiAKQEAgLTI3LDEzICs1NiwxMSBAQCBhbHRlcm5hdGl2ZXM9IgogCiBDRkxBR1M9 Ii1EU1lTX0JBU0hSQz0nXCIvZXRjL2Jhc2gvYmFzaHJjXCInIgogCi1wcmVfY29uZmlndXJlKCkg ewotCWxvY2FsIHZlcj0kKGVjaG8gJHtfYmFzaF9kaXN0dmVyfXxzZWQgInN8XC58fGciKQotCitw b3N0X3BhdGNoKCkgewogCWNkICR7d3Jrc3JjfQogCWZvciBwIGluICQoc2VxIC13IDAwMSAke19i YXNoX3BhdGNobGV2ZWx9KTsgZG8KLQkJcGF0Y2ggLXNOcDAgLWkgJHtGSUxFU0RJUn0vYmFzaCR7 dmVyfS0ke3B9Ci0JCW1zZ19ub3JtYWwgIiBBcHBseWluZyBwYXRjaCBiYXNoJHt2ZXJ9LSRwLlxu IgorCQltc2dfbm9ybWFsICIgQXBwbHlpbmcgcGF0Y2ggYmFzaCR7X21ham9yfSR7X21pbm9yfS0k cC5cbiIKKwkJcGF0Y2ggLXNOcDAgLWkgJHtYQlBTX1NSQ0RJU1RESVJ9L2Jhc2gtJHZlcnNpb24v YmFzaCR7X21ham9yfSR7X21pbm9yfS0ke3B9CiAJZG9uZQogfQogCgpGcm9tIDRmMzNmMjFhZmUz NzE1NmQ5NDQwZjc3YTQ5YmQ5MjI1Njg3NmZlMjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206ID0/VVRGLTg/cT89QzQ9OTBvPUMzPUEwbj0yMFRyPUUxPUJBPUE3bj0yMEM9QzM9QjRuZz0y MERhbmg/PQogPGNvbmdkYW5ocXhAZ21haWwuY29tPgpEYXRlOiBTYXQsIDI1IEp1bCAyMDIwIDEw OjI4OjU3ICswNzAwClN1YmplY3Q6IFtQQVRDSCAzLzRdIGNocm9vdC1iYXNoOiB1cGRhdGUgdG8g NS4wLjAxOC4KCi0tLQogc3JjcGtncy9jaHJvb3QtYmFzaC90ZW1wbGF0ZSB8IDQ0ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDM2IGluc2VydGlv bnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvb3QtYmFzaC90 ZW1wbGF0ZSBiL3NyY3BrZ3MvY2hyb290LWJhc2gvdGVtcGxhdGUKaW5kZXggOTdiOGE5YmU4MWYu LmJkMmVhYWJkZjUyIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Nocm9vdC1iYXNoL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvY2hyb290LWJhc2gvdGVtcGxhdGUKQEAgLTEsNyArMSw5IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdjaHJvb3QtYmFzaCcKIHBrZ25hbWU9Y2hyb290LWJhc2gKLV9iYXNoX2Rp c3R2ZXI9NS4wCi1fYmFzaF9wYXRjaGxldmVsPTAxNgorX21ham9yPTUKK19taW5vcj0wCitfYmFz aF9kaXN0dmVyPSIke19tYWpvcn0uJHtfbWlub3J9IgorX2Jhc2hfcGF0Y2hsZXZlbD0wMTgKIHZl cnNpb249IiR7X2Jhc2hfZGlzdHZlcn0uJHtfYmFzaF9wYXRjaGxldmVsfSIKIHJldmlzaW9uPTEK IHdya3NyYz0iYmFzaC0ke19iYXNoX2Rpc3R2ZXJ9IgpAQCAtMTUsMTggKzE3LDQ0IEBAIG1haW50 YWluZXI9IkVubm8gQm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwt My4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9iYXNo L2Jhc2guaHRtbCIKIGRpc3RmaWxlcz0iJHtHTlVfU0lURX0vYmFzaC9iYXNoLSR7X2Jhc2hfZGlz dHZlcn0udGFyLmd6IgotY2hlY2tzdW09YjRhODBmMmFjNjYxNzBiMjkxM2VmYmZiOWYyNTk0ZjFm NzZjN2IxYWZkMTFmNzk5ZTIyMDM1ZDYzMDc3ZmI0ZAorCitfdXJsPSIke0dOVV9TSVRFfS9iYXNo L2Jhc2gtJHtfYmFzaF9kaXN0dmVyfS1wYXRjaGVzIgorZm9yIF9wIGluICQoc2VxIC13IDAwMSAk e19iYXNoX3BhdGNobGV2ZWx9KTsgZG8KKwlkaXN0ZmlsZXMrPSIgJHtfdXJsfS9iYXNoJHtfbWFq b3J9JHtfbWlub3J9LSR7X3B9IgorCXNraXBfZXh0cmFjdGlvbis9IiBiYXNoJHtfbWFqb3J9JHtf bWlub3J9LSR7X3B9IgorZG9uZQordW5zZXQgX3VybAordW5zZXQgX3AKKworY2hlY2tzdW09ImI0 YTgwZjJhYzY2MTcwYjI5MTNlZmJmYjlmMjU5NGYxZjc2YzdiMWFmZDExZjc5OWUyMjAzNWQ2MzA3 N2ZiNGQKKyBmMmZlOWUxZjBmYWRkZjE0YWI5YmZhODhkNDUwYTc1ZTVkMDI4ZmVkYWZhZDIzYjg4 NzE2YmQ2NTdjNzM3Mjg5CisgODdlODdkMzU0MmU1OTg3OTlhZGIzZTdlMDFjODE2NWJjNzQzZTEz NmE0MDBlZDBkZTAxNTg0NWY3ZmY2ODcwNworIDRlZWJjZGMzN2IxMzc5M2EyMzJjNWYyZjQ5OGE1 ZmNiZjdkYTBlY2IzZGEyMDU5MzkxYzA5NmRiNjIwZWM4NWIKKyAxNDQ0N2FkODMyYWRkOGVjZmFm ZGNlNTM4NGJhZGQ5MzM2OTdiNTU5YzQ2ODhkNmI5ZTNkMzZmZjM2YzYyZjA4CisgNWJmNTRkZDli ZDJjMjExZDJiZmIzNGE0OWUyYzc0MWYyZWQ1ZTMzODc2N2U5Y2U5ZjRkNDEyNTRiZjlmODI3Ngor IGQ2ODUyOWE2ZmYyMDFiNmZmNTkxNTMxOGFiMTJmYzE2YjhhMGViYjc3ZmRhMzMwODMwM2ZjYzFl MTMzOTg0MjAKKyAxN2I0MWU3ZWUzNjczZDg4ODdkZDI1OTkyNDE3YTM5ODY3NzUzM2FiODgyNzkz OGFhNDFmYWQ3MGRmMTlhZjliCisgZWVjNjQ1ODg2MjJhODJhNTAyOWIyNzc2ZTIxOGE3NWEzNjQw YmVmNDk1M2YwOWQ2ZWUxZjQxOTk2NzBhZDdlMworIGVkM2NhMjE3NjczMDNmYzNkZTkzOTM0YWE1 MjRjMmU5MjA3ODdjNTA2YjYwMWNjNDBhNDg5N2Q0YjA5NGQ5MDMKKyBkNmZiYzMyNWYwYjVkYzU0 ZGRiZThlZTQzMDIwYmNlZDhiZDU4OWRkZmZlYTU5ZDEyOGRiMTRiMmU1MmE4YTExCisgMmM0ZGUz MzJiOTFlYWY3OTdhYmJiZDZjNzk3MDk2OTBiNWNiZDQ4YjEyZThkZmU3NDgwOTZkYmQ3YmY0NzRl YQorIDI5NDNlZTE5Njg4MDE4Mjk2ZjJhMDRkYmZlMzBiNzEzOGI4ODk3MDBlZmE4ZmYxYzA1MjRh ZjI3MWUwZWUyMzMKKyBmNWQ3MTc4ZDhkYTMwNzk5ZTAxYjgzYTA4MDIwMThkOTEzZDZhYTk3MmRk MmRkYWQzYjkyN2YzZjNlYjcwOTlhCisgNWQ2ZWVlNjUxNGVlNmUyMmE4N2JiYThkMjJiZTBhODYy MWEwYWUxMTkyNDZmMWM1YTlhMzVkYjFmNzJhZjU4OQorIGE1MTdkZjJkZGE5M2IyNmQ1Y2JmMDBl ZmZlZmVhOTNlM2E0Y2NkNjY1MmYxNTJmNDEwOTE3MDU0NGViZmEwNWUKKyBmZmQxZDdhNTRhOTlm YTdmNWIxODI1ZTRmN2U5NWQ4Yzg4NzZiYzJjYTE1MWYxNTBlNzUxZDQyOWM2NTBiMDZkCisgNGNm M2I5ZmFmYjhhNjZkNDExZGQ1ZmM5MTIwMDMyNTMzYTQwMTJkZjFkYzZlZTAyNGM3ODMzMzczZTJk ZGMzMQorIDdjMzE0ZTM3NWExMDVhNjY0MmU4ZWQ0NGYzODA4YjlkZWY4OWQxNWY3NDkyZmUyMDI5 YTIxYmE5YzBkZTgxZDMiCiAKIGJvb3RzdHJhcD15ZXMKIHByb3ZpZGVzPSJiYXNoLSR7dmVyc2lv bn1fJHtyZXZpc2lvbn0iCi1jb25mbGljdHM9ImJhc2g+PTAgZGFzaD49MCIKK2NvbmZsaWN0cz0i YmFzaD49MCBkYXNoPj0wIGJ1c3lib3g+PTAgbG9rc2g+PTAgbWtzaD49MCBva3NoPj0wIHlhc2g+ PTAiCiAKLXByZV9jb25maWd1cmUoKSB7Ci0JbG9jYWwgdmVyPSR7X2Jhc2hfZGlzdHZlci8vLi99 IHAKK3Bvc3RfcGF0Y2goKSB7CiAJY2QgJHt3cmtzcmN9CiAJZm9yIHAgaW4gJChzZXEgLXcgMDAx ICR7X2Jhc2hfcGF0Y2hsZXZlbH0pOyBkbwotCQltc2dfbm9ybWFsICIgQXBwbHlpbmcgcGF0Y2gg YmFzaCR7dmVyfS0kcC5cbiIKLQkJcGF0Y2ggLXNOcDAgLWkgJHtYQlBTX1NSQ1BLR0RJUn0vYmFz aC9maWxlcy9iYXNoJHt2ZXJ9LSR7cH0KKwkJbXNnX25vcm1hbCAiIEFwcGx5aW5nIHBhdGNoIGJh c2gke19tYWpvcn0ke19taW5vcn0tJHAuXG4iCisJCXBhdGNoIC1zTnAwIC1pICR7WEJQU19TUkNE SVNURElSfS9iYXNoLSR2ZXJzaW9uL2Jhc2gke19tYWpvcn0ke19taW5vcn0tJHtwfQogCWRvbmUK IH0KIAoKRnJvbSBkMzBiOTg5NTdkZmI1Mjg1N2NlMmRhNWRhNTIwNmMzYWY2MmFjMGJmIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/PUM0PTkwbz1DMz1BMG49MjBUcj1F MT1CQT1BN249MjBDPUMzPUI0bmc9MjBEYW5oPz0KIDxjb25nZGFuaHF4QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyNSBKdWwgMjAyMCAxMjoxMzowNyArMDcwMApTdWJqZWN0OiBbUEFUQ0ggNC80XSBs aWJyZWFkbGluZTg6IHZlcmlmeSBwYXRjaCdzIGNoZWNrc3VtCgotLS0KIHNyY3BrZ3MvbGlicmVh ZGxpbmU4L3RlbXBsYXRlIHwgMjQgKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9saWJyZWFkbGluZTgvdGVtcGxhdGUgYi9zcmNwa2dzL2xpYnJlYWRsaW5lOC90ZW1wbGF0 ZQppbmRleCA2MjAwMTk1YmU5ZS4uNTdjNGEzZWMzNDggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGli cmVhZGxpbmU4L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGlicmVhZGxpbmU4L3RlbXBsYXRlCkBA IC0xNCwyMiArMTQsMTggQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgu b3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly90aXN3 d3cuY3dydS5lZHUvcGhwL2NoZXQvcmVhZGxpbmUvcmx0b3AuaHRtbCIKIGRpc3RmaWxlcz0iJHtH TlVfU0lURX0vcmVhZGxpbmUvcmVhZGxpbmUtJHtfZGlzdF92ZXJ9LnRhci5neiIKLWNoZWNrc3Vt PWUzMzlmNTE5NzE0NzhkMzY5ZjhhMDUzYTMzMGExOTA3ODFhY2I5ODY0Y2Y0YzU0MTA2MGYxMjA3 ODk0OGU0NjEKIAotcHJlX2NvbmZpZ3VyZSgpIHsKLQlsb2NhbCB1cmw9IiR7R05VX1NJVEV9L3Jl YWRsaW5lL3JlYWRsaW5lLSR7X2Rpc3RfdmVyfS1wYXRjaGVzIgorX3VybD0iJHtHTlVfU0lURX0v cmVhZGxpbmUvcmVhZGxpbmUtJHtfZGlzdF92ZXJ9LXBhdGNoZXMiCitmb3IgX3AgaW4gJChzZXEg LXcgMDAxICR7X3BhdGNoX3Zlcn0pOyBkbworCWRpc3RmaWxlcys9IiAke191cmx9L3JlYWRsaW5l JHtfZGlzdF92ZXIvLi99LSR7X3B9IgorZG9uZQordW5zZXQgX3VybAordW5zZXQgX3AKIAotCWNk ICR7WEJQU19TUkNESVNURElSfS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0KLQlpZiBbICIke19wYXRj aF92ZXJ9IiAtZ3QgMDAwIF07IHRoZW4KLQkJZm9yIHAgaW4gJChzZXEgLXcgMDAxICR7X3BhdGNo X3Zlcn0pOyBkbwotCQkJaWYgWyAtZiByZWFkbGluZSR7dmVyc2lvbi8uL30tJHtwfSBdOyB0aGVu Ci0JCQkJY29udGludWUKLQkJCWZpCi0JCQlsb2NhbCBwYXRjaF91cmw9IiR7dXJsfS9yZWFkbGlu ZSR7X2Rpc3RfdmVyLy4vfS0ke3B9IgotCQkJbXNnX25vcm1hbCAiIEZldGNoaW5nICR7cGF0Y2hf dXJsfSAuLi5cbiIKLQkJCSRYQlBTX0ZFVENIX0NNRCAiJHtwYXRjaF91cmx9IgotCQlkb25lCi0J ZmkKK2NoZWNrc3VtPSJlMzM5ZjUxOTcxNDc4ZDM2OWY4YTA1M2EzMzBhMTkwNzgxYWNiOTg2NGNm NGM1NDEwNjBmMTIwNzg5NDhlNDYxCisgZDhlNWU5ODkzM2NmNTc1NmY4NjIyNDNjMDYwMWNiNjlk MzY2N2JiMzNmMmM3Yjc1MWZlNGU0MGIyYzNmZDA2OSIKKworcG9zdF9wYXRjaCgpIHsKIAljZCAk e3dya3NyY30KIAlmb3IgcCBpbiAkKHNlcSAtdyAwMDEgJHtfcGF0Y2hfdmVyfSk7IGRvCiAJCXBh dGNoIC1zIC1OcDAgLWkgJHtYQlBTX1NSQ0RJU1RESVJ9LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS9y ZWFkbGluZSR7X2Rpc3RfdmVyLy4vfS0ke3B9Cg== --===============0889230504003198100==--