ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2V2YWwudHh0IGIvcnVudGltZS9kb2MvZXZhbC50eHQKaW5kZXggNjA1N2Q2MS4uNzU5NGVhOSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZhbC50eHQKKysrIGIvcnVudGltZS9kb2MvZXZhbC50eHQKQEAgLTE3MTYsNyArMTcxNiw3IEBACiAJCQkJYW55CWNhbGwge2Z1bmN9IHdpdGggYXJndW1lbnRzIHthcmdsaXN0fQogY2VpbCgge2V4cHJ9KQkJCUZsb2F0CXJvdW5kIHtleHByfSB1cAogY2hhbmdlbnIoKQkJCU51bWJlcgljdXJyZW50IGNoYW5nZSBudW1iZXIKLWNoYXIybnIoIHtleHByfSkJCU51bWJlcglBU0NJSSB2YWx1ZSBvZiBmaXJzdCBjaGFyIGluIHtleHByfQorY2hhcjJucigge2V4cHJ9Wywge3V0Zjh9XSkJTnVtYmVyCUFTQ0lJL1VURjggdmFsdWUgb2YgZmlyc3QgY2hhciBpbiB7ZXhwcn0KIGNpbmRlbnQoIHtsbnVtfSkJCU51bWJlcglDIGluZGVudCBmb3IgbGluZSB7bG51bX0KIGNsZWFybWF0Y2hlcygpCQkJbm9uZQljbGVhciBhbGwgbWF0Y2hlcwogY29sKCB7ZXhwcn0pCQkJTnVtYmVyCWNvbHVtbiBuciBvZiBjdXJzb3Igb3IgbWFyawpAQCAtMTg3Myw3ICsxODczLDcgQEAKIG1vZGUoIFtleHByXSkJCQlTdHJpbmcJY3VycmVudCBlZGl0aW5nIG1vZGUKIG16ZXZhbCgge2V4cHJ9KQkJCWFueQlldmFsdWF0ZSB8TXpTY2hlbWV8IGV4cHJlc3Npb24KIG5leHRub25ibGFuaygge2xudW19KQkJTnVtYmVyCWxpbmUgbnIgb2Ygbm9uLWJsYW5rIGxpbmUgPj0ge2xudW19Ci1ucjJjaGFyKCB7ZXhwcn0pCQlTdHJpbmcJc2luZ2xlIGNoYXIgd2l0aCBBU0NJSSB2YWx1ZSB7ZXhwcn0KK25yMmNoYXIoIHtleHByfVssIHt1dGY4fV0pCVN0cmluZwlzaW5nbGUgY2hhciB3aXRoIEFTQ0lJL1VURjggdmFsdWUge2V4cHJ9CiBvcigge2V4cHJ9LCB7ZXhwcn0pCQlOdW1iZXIgIGJpdHdpc2UgT1IKIHBhdGhzaG9ydGVuKCB7ZXhwcn0pCQlTdHJpbmcJc2hvcnRlbiBkaXJlY3RvcnkgbmFtZXMgaW4gYSBwYXRoCiBwb3coIHt4fSwge3l9KQkJCUZsb2F0CXt4fSB0byB0aGUgcG93ZXIgb2Yge3l9CkBAIC0yMjk0LDE0ICsyMjk0LDE2IEBACiAJCXJlZG8gaXQgaXMgdGhlIG51bWJlciBvZiB0aGUgcmVkb25lIGNoYW5nZS4gIEFmdGVyIHVuZG8gaXQgaXMKIAkJb25lIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIHRoZSB1bmRvbmUgY2hhbmdlLgogCi1jaGFyMm5yKHtleHByfSkJCQkJCQkqY2hhcjJucigpKgorY2hhcjJucih7ZXhwcn1bLCB7dXRmOH1dKQkJCQkJKmNoYXIybnIoKSoKIAkJUmV0dXJuIG51bWJlciB2YWx1ZSBvZiB0aGUgZmlyc3QgY2hhciBpbiB7ZXhwcn0uICBFeGFtcGxlczogPgogCQkJY2hhcjJucigiICIpCQlyZXR1cm5zIDMyCiAJCQljaGFyMm5yKCJBQkMiKQkJcmV0dXJucyA2NQotPAkJVGhlIGN1cnJlbnQgJ2VuY29kaW5nJyBpcyB1c2VkLiAgRXhhbXBsZSBmb3IgInV0Zi04IjogPgorPAkJV2hlbiB7dXRmOH0gaXMgb21pdHRlZCBvciB6ZXJvLCB0aGUgY3VycmVudCAnZW5jb2RpbmcnIGlzIHVzZWQuCisJCUV4YW1wbGUgZm9yICJ1dGYtOCI6ID4KIAkJCWNoYXIybnIoIuEiKQkJcmV0dXJucyAyMjUKIAkJCWNoYXIybnIoIuEiWzBdKQkJcmV0dXJucyAxOTUKLTwJCUEgY29tYmluaW5nIGNoYXJhY3RlciBpcyBhIHNlcGFyYXRlIGNoYXJhY3Rlci4KKzwJCVdpdGgge3V0Zjh9IHNldCB0byAxLCBhbHdheXMgdHJlYXQgYXMgdXRmLTggY2hhcmFjdGVycy4KKwkJQSBjb21iaW5pbmcgY2hhcmFjdGVyIGlzIGEgc2VwYXJhdGUgY2hhcmFjdGVyLgogCQl8bnIyY2hhcigpfCBkb2VzIHRoZSBvcHBvc2l0ZS4KIAogY2luZGVudCh7bG51bX0pCQkJCQkJKmNpbmRlbnQoKSoKQEAgLTQzNzEsMTQgKzQzNzMsMTYgQEAKIAkJYmVsb3cgaXQsIHplcm8gaXMgcmV0dXJuZWQuCiAJCVNlZSBhbHNvIHxwcmV2bm9uYmxhbmsoKXwuCiAKLW5yMmNoYXIoe2V4cHJ9KQkJCQkJCSpucjJjaGFyKCkqCitucjJjaGFyKHtleHByfVssIHt1dGY4fV0pCQkJCSpucjJjaGFyKCkqCiAJCVJldHVybiBhIHN0cmluZyB3aXRoIGEgc2luZ2xlIGNoYXJhY3Rlciwgd2hpY2ggaGFzIHRoZSBudW1iZXIKIAkJdmFsdWUge2V4cHJ9LiAgRXhhbXBsZXM6ID4KIAkJCW5yMmNoYXIoNjQpCQlyZXR1cm5zICJAIgogCQkJbnIyY2hhcigzMikJCXJldHVybnMgIiAiCi08CQlUaGUgY3VycmVudCAnZW5jb2RpbmcnIGlzIHVzZWQuICBFeGFtcGxlIGZvciAidXRmLTgiOiA+Cis8CQlXaGVuIHt1dGY4fSBpcyBvbWl0dGVkIG9yIHplcm8sIHRoZSBjdXJyZW50ICdlbmNvZGluZycgaXMgdXNlZC4KKwkJRXhhbXBsZSBmb3IgInV0Zi04IjogPgogCQkJbnIyY2hhcigzMDApCQlyZXR1cm5zIEkgd2l0aCBib3cgY2hhcmFjdGVyCi08CQlOb3RlIHRoYXQgYSBOVUwgY2hhcmFjdGVyIGluIHRoZSBmaWxlIGlzIHNwZWNpZmllZCB3aXRoCis8CQlXaXRoIHt1dGY4fSBzZXQgdG8gMSwgYWx3YXlzIHJldHVybiB1dGYtOCBjaGFyYWN0ZXJzLgorCQlOb3RlIHRoYXQgYSBOVUwgY2hhcmFjdGVyIGluIHRoZSBmaWxlIGlzIHNwZWNpZmllZCB3aXRoCiAJCW5yMmNoYXIoMTApLCBiZWNhdXNlIE5VTHMgYXJlIHJlcHJlc2VudGVkIHdpdGggbmV3bGluZQogCQljaGFyYWN0ZXJzLiAgbnIyY2hhcigwKSBpcyBhIHJlYWwgTlVMIGFuZCB0ZXJtaW5hdGVzIHRoZQogCQlzdHJpbmcsIHRodXMgcmVzdWx0cyBpbiBhbiBlbXB0eSBzdHJpbmcuCmRpZmYgLS1naXQgYS9zcmMvZXZhbC5jIGIvc3JjL2V2YWwuYwppbmRleCBmNjQ1ZTk2Li40NmExOTYzIDEwMDY0NAotLS0gYS9zcmMvZXZhbC5jCisrKyBiL3NyYy9ldmFsLmMKQEAgLTc4NTQsNyArNzg1NCw3IEBACiAgICAgeyJjZWlsIiwJCTEsIDEsIGZfY2VpbH0sCiAjZW5kaWYKICAgICB7ImNoYW5nZW5yIiwJMCwgMCwgZl9jaGFuZ2Vucn0sCi0gICAgeyJjaGFyMm5yIiwJCTEsIDEsIGZfY2hhcjJucn0sCisgICAgeyJjaGFyMm5yIiwJCTEsIDIsIGZfY2hhcjJucn0sCiAgICAgeyJjaW5kZW50IiwJCTEsIDEsIGZfY2luZGVudH0sCiAgICAgeyJjbGVhcm1hdGNoZXMiLAkwLCAwLCBmX2NsZWFybWF0Y2hlc30sCiAgICAgeyJjb2wiLAkJMSwgMSwgZl9jb2x9LApAQCAtODAwMyw3ICs4MDAzLDcgQEAKICAgICB7Im16ZXZhbCIsCQkxLCAxLCBmX216ZXZhbH0sCiAjZW5kaWYKICAgICB7Im5leHRub25ibGFuayIsCTEsIDEsIGZfbmV4dG5vbmJsYW5rfSwKLSAgICB7Im5yMmNoYXIiLAkJMSwgMSwgZl9ucjJjaGFyfSwKKyAgICB7Im5yMmNoYXIiLAkJMSwgMiwgZl9ucjJjaGFyfSwKICAgICB7Im9yIiwJCTIsIDIsIGZfb3J9LAogICAgIHsicGF0aHNob3J0ZW4iLAkxLCAxLCBmX3BhdGhzaG9ydGVufSwKICNpZmRlZiBGRUFUX0ZMT0FUCkBAIC05MzAzLDcgKzkzMDMsMTcgQEAKIHsKICNpZmRlZiBGRUFUX01CWVRFCiAgICAgaWYgKGhhc19tYnl0ZSkKLQlyZXR0di0+dnZhbC52X251bWJlciA9ICgqbWJfcHRyMmNoYXIpKGdldF90dl9zdHJpbmcoJmFyZ3ZhcnNbMF0pKTsKKyAgICB7CisJaW50CXV0ZjggPSAwOworCisJaWYgKGFyZ3ZhcnNbMV0udl90eXBlICE9IFZBUl9VTktOT1dOKQorCSAgICB1dGY4ID0gZ2V0X3R2X251bWJlcl9jaGsoJmFyZ3ZhcnNbMV0sIE5VTEwpOworCisJaWYgKHV0ZjgpCisJICAgIHJldHR2LT52dmFsLnZfbnVtYmVyID0gKCp1dGZfcHRyMmNoYXIpKGdldF90dl9zdHJpbmcoJmFyZ3ZhcnNbMF0pKTsKKwllbHNlCisJICAgIHJldHR2LT52dmFsLnZfbnVtYmVyID0gKCptYl9wdHIyY2hhcikoZ2V0X3R2X3N0cmluZygmYXJndmFyc1swXSkpOworICAgIH0KICAgICBlbHNlCiAjZW5kaWYKICAgICByZXR0di0+dnZhbC52X251bWJlciA9IGdldF90dl9zdHJpbmcoJmFyZ3ZhcnNbMF0pWzBdOwpAQCAtMTQzNjAsNyArMTQzNzAsMTYgQEAKIAogI2lmZGVmIEZFQVRfTUJZVEUKICAgICBpZiAoaGFzX21ieXRlKQotCWJ1ZlsoKm1iX2NoYXIyYnl0ZXMpKChpbnQpZ2V0X3R2X251bWJlcigmYXJndmFyc1swXSksIGJ1ZildID0gTlVMOworICAgIHsKKwlpbnQJdXRmOCA9IDA7CisKKwlpZiAoYXJndmFyc1sxXS52X3R5cGUgIT0gVkFSX1VOS05PV04pCisJICAgIHV0ZjggPSBnZXRfdHZfbnVtYmVyX2NoaygmYXJndmFyc1sxXSwgTlVMTCk7CisJaWYgKHV0ZjgpCisJICAgIGJ1ZlsoKnV0Zl9jaGFyMmJ5dGVzKSgoaW50KWdldF90dl9udW1iZXIoJmFyZ3ZhcnNbMF0pLCBidWYpXSA9IE5VTDsKKwllbHNlCisJICAgIGJ1ZlsoKm1iX2NoYXIyYnl0ZXMpKChpbnQpZ2V0X3R2X251bWJlcigmYXJndmFyc1swXSksIGJ1ZildID0gTlVMOworICAgIH0KICAgICBlbHNlCiAjZW5kaWYKICAgICB7CmRpZmYgLS1naXQgYS9zcmMvdmVyc2lvbi5jIGIvc3JjL3ZlcnNpb24uYwppbmRleCBhOGNmZGM1Li43MmI1NTJhIDEwMDY0NAotLS0gYS9zcmMvdmVyc2lvbi5jCisrKyBiL3NyYy92ZXJzaW9uLmMKQEAgLTcyNiw2ICs3MjYsOCBAQAogc3RhdGljIGludCBpbmNsdWRlZF9wYXRjaGVzW10gPQogeyAgIC8qIEFkZCBuZXcgcGF0Y2ggbnVtYmVyIGJlbG93IHRoaXMgbGluZSAqLwogLyoqLworICAgIDc4MCwKKy8qKi8KICAgICA3NzksCiAvKiovCiAgICAgNzc4LAo=