From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: 4.8.0-0.15 Date: Mon, 29 Jun 2026 12:25:48 GMT Message-ID: <178273594854.1.5574604206843707788.rpms-gcc-2bea4b26c1cc@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 2bea4b26c1cc060c0ab0b5077863f6c97824cd2f QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogMmJlYTRiMjZjMWNjMDYwYzBhYjBiNTA3Nzg2M2Y2Yzk3 ODI0Y2QyZgpBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPgpEYXRlICAg OiAyMDEzLTAzLTA0VDEzOjQ3OjMxKzAxOjAwClN0YXRzICA6ICsxNzYvLTEwOTUgaW4gMTAgZmls ZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2djYy9jLzJi ZWE0YjI2YzFjYzA2MGMwYWIwYjUwNzc4NjNmNmM5NzgyNGNkMmY/YnJhbmNoPXJoZWwtZjQxLWJh c2UKCkxvZzoKNC44LjAtMC4xNQoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGln bm9yZQppbmRleCA3ZjVkMjA1Li41OTBiZmUxIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBi Ly5naXRpZ25vcmUKQEAgLTYzLDMgKzYzLDQgQEAKIC9nY2MtNC44LjAtMjAxMzAyMTMudGFyLmJ6 MgogL2djYy00LjguMC0yMDEzMDIxNS50YXIuYnoyCiAvZ2NjLTQuOC4wLTIwMTMwMjIwLnRhci5i ejIKKy9nY2MtNC44LjAtMjAxMzAzMDQudGFyLmJ6MgoKZGlmZiAtLWdpdCBhL2djYy5zcGVjIGIv Z2NjLnNwZWMKaW5kZXggODg2MTI5Ny4uMmE3MTU5NyAxMDA2NDQKLS0tIGEvZ2NjLnNwZWMKKysr IGIvZ2NjLnNwZWMKQEAgLTEsOSArMSw5IEBACi0lZ2xvYmFsIERBVEUgMjAxMzAyMjAKLSVnbG9i YWwgU1ZOUkVWIDE5NjE3MworJWdsb2JhbCBEQVRFIDIwMTMwMzA0CislZ2xvYmFsIFNWTlJFViAx OTY0MzAKICVnbG9iYWwgZ2NjX3ZlcnNpb24gNC44LjAKICMgTm90ZSwgZ2NjX3JlbGVhc2UgbXVz dCBiZSBpbnRlZ2VyLCBpZiB5b3Ugd2FudCB0byBhZGQgc3VmZml4ZXMgdG8KICMgJXtyZWxlYXNl fSwgYXBwZW5kIHRoZW0gYWZ0ZXIgJXtnY2NfcmVsZWFzZX0gb24gUmVsZWFzZTogbGluZS4KLSVn bG9iYWwgZ2NjX3JlbGVhc2UgMC4xNAorJWdsb2JhbCBnY2NfcmVsZWFzZSAwLjE1CiAlZ2xvYmFs IF91bnBhY2thZ2VkX2ZpbGVzX3Rlcm1pbmF0ZV9idWlsZCAwCiAlZ2xvYmFsIG11bHRpbGliXzY0 X2FyY2hzIHNwYXJjNjQgcHBjNjQgczM5MHggeDg2XzY0CiAlaWZhcmNoICV7aXg4Nn0geDg2XzY0 IGlhNjQgcHBjIHBwYzY0IGFscGhhCkBAIC0xOTQsMTEgKzE5NCw4IEBAIFBhdGNoMTA6IGdjYzQ4 LXByMzg3NTcucGF0Y2gKIFBhdGNoMTE6IGdjYzQ4LWxpYnN0ZGMrKy1kb2NzLnBhdGNoCiBQYXRj aDEyOiBnY2M0OC1uby1hZGQtbmVlZGVkLnBhdGNoCiBQYXRjaDEzOiBnY2M0OC1wcjU1NjA4LnBh dGNoCi1QYXRjaDE0OiBnY2M0OC1hc2FuLXNwZWVkdXAucGF0Y2gKLVBhdGNoMTU6IGdjYzQ4LXBy NTYyNTgucGF0Y2gKLVBhdGNoMTY6IGdjYzQ4LXByNTY0MDUucGF0Y2gKLVBhdGNoMTc6IGdjYzQ4 LXVudXNlZC1sb2NhbHMucGF0Y2gKLVBhdGNoMTg6IGdjYzQ4LXByNTYyNjUucGF0Y2gKK1BhdGNo MTQ6IGdjYzQ4LXByNTY0MjQucGF0Y2gKK1BhdGNoMTU6IGdjYzQ4LXByNTY1MDkucGF0Y2gKIAog UGF0Y2gxMDAwOiBmYXN0amFyLTAuOTctc2VnZmF1bHQucGF0Y2gKIFBhdGNoMTAwMTogZmFzdGph ci0wLjk3LWxlbjEucGF0Y2gKQEAgLTc1MSwxMSArNzQ4LDggQEAgcGFja2FnZSBvciB3aGVuIGRl YnVnZ2luZyB0aGlzIHBhY2thZ2UuCiAlZW5kaWYKICVwYXRjaDEyIC1wMCAtYiAubm8tYWRkLW5l ZWRlZH4KICVwYXRjaDEzIC1wMCAtYiAucHI1NTYwOH4KLSVwYXRjaDE0IC1wMCAtYiAuYXNhbi1z cGVlZHVwfgotJXBhdGNoMTUgLXAwIC1iIC5wcjU2MjU4fgotJXBhdGNoMTYgLXAwIC1iIC5wcjU2 NDA1fgotJXBhdGNoMTcgLXAwIC1iIC51bnVzZWQtbG9jYWxzfgotJXBhdGNoMTggLXAwIC1iIC5w cjU2MjY1fgorJXBhdGNoMTQgLXAwIC1iIC5wcjU2NDI0fgorJXBhdGNoMTUgLXAwIC1iIC5wcjU2 NTA5fgogCiAlaWYgMCV7P19lbmFibGVfZGVidWdfcGFja2FnZXN9CiBjYXQgPiBzcGxpdC1kZWJ1 Z2luZm8uc2ggPDxcRU9GCkBAIC0yOTc5LDYgKzI5NzMsMjQgQEAgZmkKICV7X3ByZWZpeH0vbGli ZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9wbHVnaW4KIAog JWNoYW5nZWxvZworKiBNb24gTWFyICA0IDIwMTMgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0 LmNvbT4gNC44LjAtMC4xNQorLSB1cGRhdGVkIGZyb20gdHJ1bmsKKyAgLSBQUnMgYysrLzEwMjkx LCBjKysvNDA0MDUsIGMrKy81MjY4OCwgYysrLzU1NjMyLCBjKysvNTU4MTMsIGMrKy81NjI0MywK KwljKysvNTYzNTgsIGMrKy81NjM1OSwgYysrLzU2Mzc3LCBjKysvNTYzOTUsIGMrKy81NjQwMywg YysrLzU2NDE5LAorCWMrKy81NjQzOCwgYysrLzU2NDgxLCBmb3J0cmFuLzU0NzMwLCBmb3J0cmFu LzU2Mzg1LCBmb3J0cmFuLzU2NDE2LAorCWZvcnRyYW4vNTY0NzcsIGZvcnRyYW4vNTY0OTEsIGxp YmZvcnRyYW4vMzAxNjIsIGxpYnN0ZGMrKy81NjAxMSwKKwlsaWJzdGRjKysvNTYwMTIsIG1pZGRs ZS1lbmQvNDU0NzIsIG1pZGRsZS1lbmQvNTYwNzcsCisJbWlkZGxlLWVuZC81NjEwOCwgbWlkZGxl LWVuZC81NjQyMCwgbWlkZGxlLWVuZC81NjQ2MSwKKwlydGwtb3B0aW1pemF0aW9uLzUwMzM5LCBy dGwtb3B0aW1pemF0aW9uLzU2NDY2LCBzYW5pdGl6ZXIvNTYzOTMsCisJc2FuaXRpemVyLzU2NDU0 LCB0YXJnZXQvNDg5MDEsIHRhcmdldC81MjUwMCwgdGFyZ2V0LzUyNTAxLAorCXRhcmdldC81MjU1 MCwgdGFyZ2V0LzU0NjM5LCB0YXJnZXQvNTQ2NDAsIHRhcmdldC81NDY2MiwgdGFyZ2V0LzU2NDQ0 LAorCXRhcmdldC81NjQ0NSwgdGFyZ2V0LzU2NDU1LCB0ZXN0c3VpdGUvNTI2NDEsIHRyZWUtb3B0 aW1pemF0aW9uLzU1NDgxLAorCXRyZWUtb3B0aW1pemF0aW9uLzU2MTc1LCB0cmVlLW9wdGltaXph dGlvbi81NjI5NCwKKwl0cmVlLW9wdGltaXphdGlvbi81NjMxMCwgdHJlZS1vcHRpbWl6YXRpb24v NTY0MTUsCisJdHJlZS1vcHRpbWl6YXRpb24vNTY0MjYsIHRyZWUtb3B0aW1pemF0aW9uLzU2NDQz LAorCXRyZWUtb3B0aW1pemF0aW9uLzU2NDQ4CistIGZuc3BsaXQgZml4IChQUiB0cmVlLW9wdGlt aXphdGlvbi81NjQyNCkKKwogKiBXZWQgRmViIDIwIDIwMTMgSmFrdWIgSmVsaW5layA8amFrdWJA cmVkaGF0LmNvbT4gNC44LjAtMC4xNAogLSB1cGRhdGVkIGZyb20gdHJ1bmsKICAgLSBQUnMgYXNh bi81NjMzMCwgYysrLzUxMjQyLCBjKysvNTQyNzYsIGMrKy81NjM3MywgbGlicXVhZG1hdGgvNTYz NzksCgpkaWZmIC0tZ2l0IGEvZ2NjNDgtYXNhbi1zcGVlZHVwLnBhdGNoIGIvZ2NjNDgtYXNhbi1z cGVlZHVwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2EzM2YzLi4wMDAw MDAwCi0tLSBhL2djYzQ4LWFzYW4tc3BlZWR1cC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUz NSArMCwwIEBACi0yMDEzLTAyLTE1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4K LQotCSogY29uZmlnL2kzODYvaTM4Ni5jOiBVc2UgMHg3ZmZmODAwMCBhcyBhc2FuX3NoYWRvd19v ZmZzZXQgb24geDg2XzY0Ci0JbGludXguCi0KLQkqIEFsbCBzb3VyY2UgZmlsZXM6IE1lcmdlIGZy b20gdXBzdHJlYW0uCi0KLS0tLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jLmpqCTIwMTMtMDItMTMg MTc6MDQ6MzQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwkyMDEz LTAyLTE1IDEzOjI3OjQ3LjY3NDgzMjk5NCArMDEwMAotQEAgLTU0MzYsNyArNTQzNiw4IEBAIGl4 ODZfbGVnaXRpbWF0ZV9jb21iaW5lZF9pbnNuIChydHggaW5zbikKLSBzdGF0aWMgdW5zaWduZWQg SE9TVF9XSURFX0lOVAotIGl4ODZfYXNhbl9zaGFkb3dfb2Zmc2V0ICh2b2lkKQotIHsKLS0gIHJl dHVybiBUQVJHRVRfTFA2NCA/IChIT1NUX1dJREVfSU5UXzEgPDwgNDQpCi0rICByZXR1cm4gVEFS R0VUX0xQNjQgPyAoVEFSR0VUX01BQ0hPID8gKEhPU1RfV0lERV9JTlRfMSA8PCA0NCkKLSsJCQkJ ICAgICA6IEhPU1RfV0lERV9JTlRfQyAoMHg3ZmZmODAwMCkpCi0gCQkgICAgIDogKEhPU1RfV0lE RV9JTlRfMSA8PCAyOSk7Ci0gfQotIAwKLS0tLSBsaWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1v bi9zYW5pdGl6ZXJfaW50ZXJuYWxfZGVmcy5oLmpqCTIwMTMtMDItMTMgMTE6NTM6NDMuNDAzMzM2 MzQyICswMTAwCi0rKysgbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2lu dGVybmFsX2RlZnMuaAkyMDEzLTAyLTE1IDEzOjI0OjE3LjQxMDAzMzEzNyArMDEwMAotQEAgLTI5 LDcgKzI5LDcgQEAKLSAjIGRlZmluZSBTQU5JVElaRVJfU1VQUE9SVFNfV0VBS19IT09LUyAwCi0g I2VuZGlmCi0gCi0tLy8gX19oYXNfZmVhdHVyZQotKy8vIEdDQyBkb2VzIG5vdCB1bmRlcnN0YW5k IF9faGFzX2ZlYXR1cmUKLSAjaWYgIWRlZmluZWQoX19oYXNfZmVhdHVyZSkKLSAjIGRlZmluZSBf X2hhc19mZWF0dXJlKHgpIDAKLSAjZW5kaWYKLS0tLSBsaWJzYW5pdGl6ZXIvc2FuaXRpemVyX2Nv bW1vbi9zYW5pdGl6ZXJfbGludXguY2MuamoJMjAxMy0wMi0xMyAxMTo1Mzo0My40MDIzMzYzNDcg KzAxMDAKLSsrKyBsaWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXgu Y2MJMjAxMy0wMi0xNSAxMzoyNDoxNy40MTAwMzMxMzcgKzAxMDAKLUBAIC0yMzIsNiArMjMyLDIx IEBAIGNvbnN0IGNoYXIgKkdldEVudihjb25zdCBjaGFyICpuYW1lKSB7Ci0gICByZXR1cm4gMDsg IC8vIE5vdCBmb3VuZC4KLSB9Ci0gCi0rI2lmZGVmIF9fR0xJQkNfXwotKwotK2V4dGVybiAiQyIg ewotKyAgZXh0ZXJuIHZvaWQgKl9fbGliY19zdGFja19lbmQ7Ci0rfQotKwotK3N0YXRpYyB2b2lk IEdldEFyZ3NBbmRFbnYoY2hhciAqKiphcmd2LCBjaGFyICoqKmVudnApIHsKLSsgIHVwdHIgKnN0 YWNrX2VuZCA9ICh1cHRyICopX19saWJjX3N0YWNrX2VuZDsKLSsgIGludCBhcmdjID0gKnN0YWNr X2VuZDsKLSsgICphcmd2ID0gKGNoYXIqKikoc3RhY2tfZW5kICsgMSk7Ci0rICAqZW52cCA9IChj aGFyKiopKHN0YWNrX2VuZCArIGFyZ2MgKyAyKTsKLSt9Ci0rCi0rI2Vsc2UgIC8vIF9fR0xJQkNf XwotKwotIHN0YXRpYyB2b2lkIFJlYWROdWxsU2VwRmlsZVRvQXJyYXkoY29uc3QgY2hhciAqcGF0 aCwgY2hhciAqKiphcnIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg YXJyX3NpemUpIHsKLSAgIGNoYXIgKmJ1ZmY7Ci1AQCAtMjUxLDExICsyNjYsMTcgQEAgc3RhdGlj IHZvaWQgUmVhZE51bGxTZXBGaWxlVG9BcnJheShjb25zdAotICAgKCphcnIpW2NvdW50XSA9IDA7 Ci0gfQotIAotK3N0YXRpYyB2b2lkIEdldEFyZ3NBbmRFbnYoY2hhciAqKiphcmd2LCBjaGFyICoq KmVudnApIHsKLSsgIHN0YXRpYyBjb25zdCBpbnQga01heEFyZ3YgPSAyMDAwLCBrTWF4RW52cCA9 IDIwMDA7Ci0rICBSZWFkTnVsbFNlcEZpbGVUb0FycmF5KCIvcHJvYy9zZWxmL2NtZGxpbmUiLCBh cmd2LCBrTWF4QXJndik7Ci0rICBSZWFkTnVsbFNlcEZpbGVUb0FycmF5KCIvcHJvYy9zZWxmL2Vu dmlyb24iLCBlbnZwLCBrTWF4RW52cCk7Ci0rfQotKwotKyNlbmRpZiAgLy8gX19HTElCQ19fCi0r Ci0gdm9pZCBSZUV4ZWMoKSB7Ci0tICBzdGF0aWMgY29uc3QgaW50IGtNYXhBcmd2ID0gMTAwLCBr TWF4RW52cCA9IDEwMDA7Ci0gICBjaGFyICoqYXJndiwgKiplbnZwOwotLSAgUmVhZE51bGxTZXBG aWxlVG9BcnJheSgiL3Byb2Mvc2VsZi9jbWRsaW5lIiwgJmFyZ3YsIGtNYXhBcmd2KTsKLS0gIFJl YWROdWxsU2VwRmlsZVRvQXJyYXkoIi9wcm9jL3NlbGYvZW52aXJvbiIsICZlbnZwLCBrTWF4RW52 cCk7Ci0rICBHZXRBcmdzQW5kRW52KCZhcmd2LCAmZW52cCk7Ci0gICBleGVjdmUoYXJndlswXSwg YXJndiwgZW52cCk7Ci0gfQotIAotLS0tIGxpYnNhbml0aXplci9hc2FuL2FzYW5faW50ZXJuYWwu aC5qagkyMDEzLTAyLTEzIDExOjUzOjQ0LjM3NzMzMDkzOCArMDEwMAotKysrIGxpYnNhbml0aXpl ci9hc2FuL2FzYW5faW50ZXJuYWwuaAkyMDEzLTAyLTE1IDEzOjI0OjE3LjQxMjAzMzMxOSArMDEw MAotQEAgLTUyLDcgKzUyLDcgQEAKLSAKLSAjZGVmaW5lIEFTQU5fUE9TSVggKEFTQU5fTElOVVgg fHwgQVNBTl9NQUMpCi0gCi0tI2lmIF9faGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpCi0r I2lmIF9faGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpIHx8IGRlZmluZWQoX19TQU5JVEla RV9BRERSRVNTX18pCi0gIyBlcnJvciAiVGhlIEFkZHJlc3NTYW5pdGl6ZXIgcnVuLXRpbWUgc2hv dWxkIG5vdCBiZSIKLSAgICAgICAgICIgaW5zdHJ1bWVudGVkIGJ5IEFkZHJlc3NTYW5pdGl6ZXIi Ci0gI2VuZGlmCi0tLS0gbGlic2FuaXRpemVyL2FzYW4vYXNhbl9tYWMuY2MuamoJMjAxMy0wMi0x MyAxMTo1Mzo0NC4zOTczMzA4MzIgKzAxMDAKLSsrKyBsaWJzYW5pdGl6ZXIvYXNhbi9hc2FuX21h Yy5jYwkyMDEzLTAyLTE1IDEzOjI0OjE3LjQxMjAzMzMxOSArMDEwMAotQEAgLTEwNCw3ICsxMDQs MjQgQEAgdm9pZCBNYXliZVJlZXhlYygpIHsKLSAgICAgX05TR2V0RXhlY3V0YWJsZVBhdGgocHJv Z3JhbV9uYW1lLCAmYnVmX3NpemUpOwotICAgICAvLyBPayB0byB1c2Ugc2V0ZW52KCkgc2luY2Ug dGhlIHdyYXBwZXJzIGRvbid0IGRlcGVuZCBvbiB0aGUgdmFsdWUgb2YKLSAgICAgLy8gYXNhbl9p bml0ZWQuCi0tICAgIHNldGVudihrRHlsZEluc2VydExpYnJhcmllcywgaW5mby5kbGlfZm5hbWUs IC8qb3ZlcndyaXRlKi8wKTsKLSsgICAgaWYgKGR5bGRfaW5zZXJ0X2xpYnJhcmllcykgewotKyAg ICAgIC8vIEFwcGVuZCB0aGUgcnVudGltZSBkeWxpYiBuYW1lIHRvIHRoZSBleGlzdGluZyB2YWx1 ZSBvZgotKyAgICAgIC8vIERZTERfSU5TRVJUX0xJQlJBUklFUy4KLSsgICAgICB1cHRyIG9sZF9l bnZfbGVuID0gaW50ZXJuYWxfc3RybGVuKGR5bGRfaW5zZXJ0X2xpYnJhcmllcyk7Ci0rICAgICAg dXB0ciBmbmFtZV9sZW4gPSBpbnRlcm5hbF9zdHJsZW4oaW5mby5kbGlfZm5hbWUpOwotKyAgICAg IExvd0xldmVsQWxsb2NhdG9yIGFsbG9jYXRvcl9mb3JfZW52OwotKyAgICAgIGNoYXIgKm5ld19l bnYgPQotKyAgICAgICAgICAoY2hhciopYWxsb2NhdG9yX2Zvcl9lbnYuQWxsb2NhdGUob2xkX2Vu dl9sZW4gKyBmbmFtZV9sZW4gKyAyKTsKLSsgICAgICBpbnRlcm5hbF9zdHJuY3B5KG5ld19lbnYs IGR5bGRfaW5zZXJ0X2xpYnJhcmllcywgb2xkX2Vudl9sZW4pOwotKyAgICAgIG5ld19lbnZbb2xk X2Vudl9sZW5dID0gJzonOwotKyAgICAgIC8vIENvcHkgZm5hbWVfbGVuIGFuZCBhZGQgYSB0cmFp bGluZyB6ZXJvLgotKyAgICAgIGludGVybmFsX3N0cm5jcHkobmV3X2VudiArIG9sZF9lbnZfbGVu ICsgMSwgaW5mby5kbGlfZm5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICBmbmFtZV9sZW4g KyAxKTsKLSsgICAgICBzZXRlbnYoa0R5bGRJbnNlcnRMaWJyYXJpZXMsIG5ld19lbnYsIC8qb3Zl cndyaXRlKi8xKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAvLyBTZXQgRFlMRF9JTlNFUlRfTElC UkFSSUVTIGVxdWFsIHRvIHRoZSBydW50aW1lIGR5bGliIG5hbWUuCi0rICAgICAgc2V0ZW52KGtE eWxkSW5zZXJ0TGlicmFyaWVzLCBpbmZvLmRsaV9mbmFtZSwgLypvdmVyd3JpdGUqLzApOwotKyAg ICB9Ci0gICAgIGlmIChmbGFncygpLT52ZXJib3NpdHkgPj0gMSkgewotICAgICAgIFJlcG9ydCgi ZXhlYygpLWluZyB0aGUgcHJvZ3JhbSB3aXRoXG4iKTsKLSAgICAgICBSZXBvcnQoIiVzPSVzXG4i LCBrRHlsZEluc2VydExpYnJhcmllcywgaW5mby5kbGlfZm5hbWUpOwotLS0tIGxpYnNhbml0aXpl ci9hc2FuL2FzYW5fbWFwcGluZy5oLmpqCTIwMTMtMDItMTMgMTc6MDQ6MzQuNjgwMTk4NzUzICsw MTAwCi0rKysgbGlic2FuaXRpemVyL2FzYW4vYXNhbl9tYXBwaW5nLmgJMjAxMy0wMi0xNSAxMzoy NjoyNS44NDYzMDE3NDkgKzAxMDAKLUBAIC0xLDcgKzEsNSBAQAotIC8vPT09LS0gYXNhbl9tYXBw aW5nLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0q LT09PS8vCi0gLy8KLS0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIElu ZnJhc3RydWN0dXJlCi0tLy8KLSAvLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl IFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLSAvLyBMaWNlbnNlLiBTZWUgTElD RU5TRS5UWFQgZm9yIGRldGFpbHMuCi0gLy8KLUBAIC0xOCw2ICsxNiwzNyBAQAotIAotIC8vIFRo ZSBmdWxsIGV4cGxhbmF0aW9uIG9mIHRoZSBtZW1vcnkgbWFwcGluZyBjb3VsZCBiZSBmb3VuZCBo ZXJlOgotIC8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9hZGRyZXNzLXNhbml0aXplci93aWtp L0FkZHJlc3NTYW5pdGl6ZXJBbGdvcml0aG0KLSsvLwotKy8vIFR5cGljYWwgc2hhZG93IG1hcHBp bmcgb24gTGludXgveDg2XzY0IHdpdGggU0hBRE9XX09GRlNFVCA9PSAweDAwMDA3ZmZmODAwMDoK LSsvLyB8fCBgWzB4MTAwMDdmZmY4MDAwLCAweDdmZmZmZmZmZmZmZl1gIHx8IEhpZ2hNZW0gICAg fHwKLSsvLyB8fCBgWzB4MDIwMDhmZmY3MDAwLCAweDEwMDA3ZmZmN2ZmZl1gIHx8IEhpZ2hTaGFk b3cgfHwKLSsvLyB8fCBgWzB4MDAwMDhmZmY3MDAwLCAweDAyMDA4ZmZmNmZmZl1gIHx8IFNoYWRv d0dhcCAgfHwKLSsvLyB8fCBgWzB4MDAwMDdmZmY4MDAwLCAweDAwMDA4ZmZmNmZmZl1gIHx8IExv d1NoYWRvdyAgfHwKLSsvLyB8fCBgWzB4MDAwMDAwMDAwMDAwLCAweDAwMDA3ZmZmN2ZmZl1gIHx8 IExvd01lbSAgICAgfHwKLSsvLwotKy8vIFdoZW4gU0hBRE9XX09GRlNFVCBpcyB6ZXJvICgtcGll KToKLSsvLyB8fCBgWzB4MTAwMDAwMDAwMDAwLCAweDdmZmZmZmZmZmZmZl1gIHx8IEhpZ2hNZW0g ICAgfHwKLSsvLyB8fCBgWzB4MDIwMDAwMDAwMDAwLCAweDBmZmZmZmZmZmZmZl1gIHx8IEhpZ2hT aGFkb3cgfHwKLSsvLyB8fCBgWzB4MDAwMDAwMDQwMDAwLCAweDAxZmZmZmZmZmZmZl1gIHx8IFNo YWRvd0dhcCAgfHwKLSsvLwotKy8vIFNwZWNpYWwgY2FzZSB3aGVuIHNvbWV0aGluZyBpcyBhbHJl YWR5IG1hcHBlZCBiZXR3ZWVuCi0rLy8gMHgwMDMwMDAwMDAwMDAgYW5kIDB4MDA0MDAwMDAwMDAw IChlLmcuIHdoZW4gcHJlbGluayBpcyBpbnN0YWxsZWQpOgotKy8vIHx8IGBbMHgxMDAwN2ZmZjgw MDAsIDB4N2ZmZmZmZmZmZmZmXWAgfHwgSGlnaE1lbSAgICB8fAotKy8vIHx8IGBbMHgwMjAwOGZm ZjcwMDAsIDB4MTAwMDdmZmY3ZmZmXWAgfHwgSGlnaFNoYWRvdyB8fAotKy8vIHx8IGBbMHgwMDQw MDAwMDAwMDAsIDB4MDIwMDhmZmY2ZmZmXWAgfHwgU2hhZG93R2FwMyB8fAotKy8vIHx8IGBbMHgw MDMwMDAwMDAwMDAsIDB4MDAzZmZmZmZmZmZmXWAgfHwgTWlkTWVtICAgICB8fAotKy8vIHx8IGBb MHgwMDA4N2ZmZjgwMDAsIDB4MDAyZmZmZmZmZmZmXWAgfHwgU2hhZG93R2FwMiB8fAotKy8vIHx8 IGBbMHgwMDA2N2ZmZjgwMDAsIDB4MDAwODdmZmY3ZmZmXWAgfHwgTWlkU2hhZG93ICB8fAotKy8v IHx8IGBbMHgwMDAwOGZmZjcwMDAsIDB4MDAwNjdmZmY3ZmZmXWAgfHwgU2hhZG93R2FwICB8fAot Ky8vIHx8IGBbMHgwMDAwN2ZmZjgwMDAsIDB4MDAwMDhmZmY2ZmZmXWAgfHwgTG93U2hhZG93ICB8 fAotKy8vIHx8IGBbMHgwMDAwMDAwMDAwMDAsIDB4MDAwMDdmZmY3ZmZmXWAgfHwgTG93TWVtICAg ICB8fAotKy8vCi0rLy8gRGVmYXVsdCBMaW51eC9pMzg2IG1hcHBpbmc6Ci0rLy8gfHwgYFsweDQw MDAwMDAwLCAweGZmZmZmZmZmXWAgfHwgSGlnaE1lbSAgICB8fAotKy8vIHx8IGBbMHgyODAwMDAw MCwgMHgzZmZmZmZmZl1gIHx8IEhpZ2hTaGFkb3cgfHwKLSsvLyB8fCBgWzB4MjQwMDAwMDAsIDB4 MjdmZmZmZmZdYCB8fCBTaGFkb3dHYXAgIHx8Ci0rLy8gfHwgYFsweDIwMDAwMDAwLCAweDIzZmZm ZmZmXWAgfHwgTG93U2hhZG93ICB8fAotKy8vIHx8IGBbMHgwMDAwMDAwMCwgMHgxZmZmZmZmZl1g IHx8IExvd01lbSAgICAgfHwKLSAKLSAjaWYgQVNBTl9GTEVYSUJMRV9NQVBQSU5HX0FORF9PRkZT RVQgPT0gMQotIGV4dGVybiBTQU5JVElaRVJfSU5URVJGQUNFX0FUVFJJQlVURSB1cHRyIF9fYXNh bl9tYXBwaW5nX3NjYWxlOwotQEAgLTM2LDcgKzY1LDExIEBAIGV4dGVybiBTQU5JVElaRVJfSU5U RVJGQUNFX0FUVFJJQlVURSB1cHQKLSAjICAgaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICMg ICAgZGVmaW5lIFNIQURPV19PRkZTRVQgKDFVTEwgPDwgNDEpCi0gIyAgIGVsc2UKLS0jICAgIGRl ZmluZSBTSEFET1dfT0ZGU0VUICgxVUxMIDw8IDQ0KQotKyMgICAgaWYgQVNBTl9NQUMKLSsjICAg ICBkZWZpbmUgU0hBRE9XX09GRlNFVCAoMVVMTCA8PCA0NCkKLSsjICAgIGVsc2UKLSsjICAgICBk ZWZpbmUgU0hBRE9XX09GRlNFVCAweDdmZmY4MDAwVUxMCi0rIyAgICBlbmRpZgotICMgICBlbmRp ZgotICMgIGVuZGlmCi0gIyBlbmRpZgotQEAgLTU3LDQ5ICs5MCwxMDUgQEAgZXh0ZXJuIFNBTklU SVpFUl9JTlRFUkZBQ0VfQVRUUklCVVRFIHVwdAotICNkZWZpbmUga0hpZ2hTaGFkb3dCZWcgIE1F TV9UT19TSEFET1coa0hpZ2hNZW1CZWcpCi0gI2RlZmluZSBrSGlnaFNoYWRvd0VuZCAgTUVNX1RP X1NIQURPVyhrSGlnaE1lbUVuZCkKLSAKLSsjIGRlZmluZSBrTWlkU2hhZG93QmVnIE1FTV9UT19T SEFET1coa01pZE1lbUJlZykKLSsjIGRlZmluZSBrTWlkU2hhZG93RW5kIE1FTV9UT19TSEFET1co a01pZE1lbUVuZCkKLSsKLSAvLyBXaXRoIHRoZSB6ZXJvIHNoYWRvdyBiYXNlIHdlIGNhbiBub3Qg YWN0dWFsbHkgbWFwIHBhZ2VzIHN0YXJ0aW5nIGZyb20gMC4KLSAvLyBUaGlzIGNvbnN0YW50IGlz IHNvbWV3aGF0IGFyYml0cmFyeS4KLSAjZGVmaW5lIGtaZXJvQmFzZVNoYWRvd1N0YXJ0ICgxIDw8 IDE4KQotIAotICNkZWZpbmUga1NoYWRvd0dhcEJlZyAgIChrTG93U2hhZG93RW5kID8ga0xvd1No YWRvd0VuZCArIDEgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog a1plcm9CYXNlU2hhZG93U3RhcnQpCi0tI2RlZmluZSBrU2hhZG93R2FwRW5kICAgKGtIaWdoU2hh ZG93QmVnIC0gMSkKLSsjZGVmaW5lIGtTaGFkb3dHYXBFbmQgICAoKGtNaWRNZW1CZWcgPyBrTWlk U2hhZG93QmVnIDoga0hpZ2hTaGFkb3dCZWcpIC0gMSkKLSsKLSsjZGVmaW5lIGtTaGFkb3dHYXAy QmVnIChrTWlkTWVtQmVnID8ga01pZFNoYWRvd0VuZCArIDEgOiAwKQotKyNkZWZpbmUga1NoYWRv d0dhcDJFbmQgKGtNaWRNZW1CZWcgPyBrTWlkTWVtQmVnIC0gMSA6IDApCi0rCi0rI2RlZmluZSBr U2hhZG93R2FwM0JlZyAoa01pZE1lbUJlZyA/IGtNaWRNZW1FbmQgKyAxIDogMCkKLSsjZGVmaW5l IGtTaGFkb3dHYXAzRW5kIChrTWlkTWVtQmVnID8ga0hpZ2hTaGFkb3dCZWcgLSAxIDogMCkKLSsK LSsjZGVmaW5lIERPX0FTQU5fTUFQUElOR19QUk9GSUxFIDAgIC8vIFNldCB0byAxIHRvIHByb2Zp bGUgdGhlIGZ1bmN0aW9ucyBiZWxvdy4KLSsKLSsjaWYgRE9fQVNBTl9NQVBQSU5HX1BST0ZJTEUK LSsjIGRlZmluZSBQUk9GSUxFX0FTQU5fTUFQUElORygpIEFzYW5NYXBwaW5nUHJvZmlsZVtfX0xJ TkVfX10rKzsKLSsjZWxzZQotKyMgZGVmaW5lIFBST0ZJTEVfQVNBTl9NQVBQSU5HKCkKLSsjZW5k aWYKLSsKLSsvLyBJZiAxLCBhbGwgc2hhZG93IGJvdW5kYXJpZXMgYXJlIGNvbnN0YW50cy4KLSsv LyBEb24ndCBzZXQgdG8gMSBvdGhlciB0aGFuIGZvciB0ZXN0aW5nLgotKyNkZWZpbmUgQVNBTl9G SVhFRF9NQVBQSU5HIDAKLSAKLSBuYW1lc3BhY2UgX19hc2FuIHsKLSAKLStleHRlcm4gdXB0ciBB c2FuTWFwcGluZ1Byb2ZpbGVbXTsKLSsKLSsjaWYgQVNBTl9GSVhFRF9NQVBQSU5HCi0rLy8gRml4 ZWQgbWFwcGluZyBmb3IgNjQtYml0IExpbnV4LiBNb3N0bHkgdXNlZCBmb3IgcGVyZm9ybWFuY2Ug Y29tcGFyaXNvbgotKy8vIHdpdGggbm9uLWZpeGVkIG1hcHBpbmcuIEFzIG9mIHIxNzUyNTMgKEZl YiAyMDEzKSB0aGUgcGVyZm9ybWFuY2UKLSsvLyBkaWZmZXJlbmNlIGJldHdlZW4gZml4ZWQgYW5k IG5vbi1maXhlZCBtYXBwaW5nIGlzIGJlbG93IHRoZSBub2lzZSBsZXZlbC4KLStzdGF0aWMgdXB0 ciBrSGlnaE1lbUVuZCA9IDB4N2ZmZmZmZmZmZmZmVUxMOwotK3N0YXRpYyB1cHRyIGtNaWRNZW1C ZWcgPSAgICAweDMwMDAwMDAwMDBVTEw7Ci0rc3RhdGljIHVwdHIga01pZE1lbUVuZCA9ICAgIDB4 M2ZmZmZmZmZmZlVMTDsKLSsjZWxzZQotIFNBTklUSVpFUl9JTlRFUkZBQ0VfQVRUUklCVVRFCi0t ZXh0ZXJuIHVwdHIga0hpZ2hNZW1FbmQ7ICAvLyBJbml0aWFsaXplZCBpbiBfX2FzYW5faW5pdC4K LStleHRlcm4gdXB0ciBrSGlnaE1lbUVuZCwga01pZE1lbUJlZywga01pZE1lbUVuZDsgIC8vIElu aXRpYWxpemVkIGluIF9fYXNhbl9pbml0LgotKyNlbmRpZgotIAotIHN0YXRpYyBpbmxpbmUgYm9v bCBBZGRySXNJbkxvd01lbSh1cHRyIGEpIHsKLSsgIFBST0ZJTEVfQVNBTl9NQVBQSU5HKCk7Ci0g ICByZXR1cm4gYSA8IGtMb3dNZW1FbmQ7Ci0gfQotIAotIHN0YXRpYyBpbmxpbmUgYm9vbCBBZGRy SXNJbkxvd1NoYWRvdyh1cHRyIGEpIHsKLSsgIFBST0ZJTEVfQVNBTl9NQVBQSU5HKCk7Ci0gICBy ZXR1cm4gYSA+PSBrTG93U2hhZG93QmVnICYmIGEgPD0ga0xvd1NoYWRvd0VuZDsKLSB9Ci0gCi0g c3RhdGljIGlubGluZSBib29sIEFkZHJJc0luSGlnaE1lbSh1cHRyIGEpIHsKLSsgIFBST0ZJTEVf QVNBTl9NQVBQSU5HKCk7Ci0gICByZXR1cm4gYSA+PSBrSGlnaE1lbUJlZyAmJiBhIDw9IGtIaWdo TWVtRW5kOwotIH0KLSAKLStzdGF0aWMgaW5saW5lIGJvb2wgQWRkcklzSW5NaWRNZW0odXB0ciBh KSB7Ci0rICBQUk9GSUxFX0FTQU5fTUFQUElORygpOwotKyAgcmV0dXJuIGtNaWRNZW1CZWcgJiYg YSA+PSBrTWlkTWVtQmVnICYmIGEgPD0ga01pZE1lbUVuZDsKLSt9Ci0rCi0gc3RhdGljIGlubGlu ZSBib29sIEFkZHJJc0luTWVtKHVwdHIgYSkgewotLSAgcmV0dXJuIEFkZHJJc0luTG93TWVtKGEp IHx8IEFkZHJJc0luSGlnaE1lbShhKTsKLSsgIFBST0ZJTEVfQVNBTl9NQVBQSU5HKCk7Ci0rICBy ZXR1cm4gQWRkcklzSW5Mb3dNZW0oYSkgfHwgQWRkcklzSW5NaWRNZW0oYSkgfHwgQWRkcklzSW5I aWdoTWVtKGEpOwotIH0KLSAKLSBzdGF0aWMgaW5saW5lIHVwdHIgTWVtVG9TaGFkb3codXB0ciBw KSB7Ci0rICBQUk9GSUxFX0FTQU5fTUFQUElORygpOwotICAgQ0hFQ0soQWRkcklzSW5NZW0ocCkp OwotICAgcmV0dXJuIE1FTV9UT19TSEFET1cocCk7Ci0gfQotIAotIHN0YXRpYyBpbmxpbmUgYm9v bCBBZGRySXNJbkhpZ2hTaGFkb3codXB0ciBhKSB7Ci0tICByZXR1cm4gYSA+PSBrSGlnaFNoYWRv d0JlZyAmJiBhIDw9ICBrSGlnaE1lbUVuZDsKLSsgIFBST0ZJTEVfQVNBTl9NQVBQSU5HKCk7Ci0r ICByZXR1cm4gYSA+PSBrSGlnaFNoYWRvd0JlZyAmJiBhIDw9IGtIaWdoTWVtRW5kOwotK30KLSsK LStzdGF0aWMgaW5saW5lIGJvb2wgQWRkcklzSW5NaWRTaGFkb3codXB0ciBhKSB7Ci0rICBQUk9G SUxFX0FTQU5fTUFQUElORygpOwotKyAgcmV0dXJuIGtNaWRNZW1CZWcgJiYgYSA+PSBrTWlkU2hh ZG93QmVnICYmIGEgPD0ga01pZE1lbUVuZDsKLSB9Ci0gCi0gc3RhdGljIGlubGluZSBib29sIEFk ZHJJc0luU2hhZG93KHVwdHIgYSkgewotLSAgcmV0dXJuIEFkZHJJc0luTG93U2hhZG93KGEpIHx8 IEFkZHJJc0luSGlnaFNoYWRvdyhhKTsKLSsgIFBST0ZJTEVfQVNBTl9NQVBQSU5HKCk7Ci0rICBy ZXR1cm4gQWRkcklzSW5Mb3dTaGFkb3coYSkgfHwgQWRkcklzSW5NaWRTaGFkb3coYSkgfHwgQWRk cklzSW5IaWdoU2hhZG93KGEpOwotIH0KLSAKLSBzdGF0aWMgaW5saW5lIGJvb2wgQWRkcklzSW5T aGFkb3dHYXAodXB0ciBhKSB7Ci0rICBQUk9GSUxFX0FTQU5fTUFQUElORygpOwotKyAgaWYgKGtN aWRNZW1CZWcpIHsKLSsgICAgaWYgKGEgPD0ga1NoYWRvd0dhcEVuZCkKLSsgICAgICByZXR1cm4g U0hBRE9XX09GRlNFVCA9PSAwIHx8IGEgPj0ga1NoYWRvd0dhcEJlZzsKLSsgICAgcmV0dXJuIChh ID49IGtTaGFkb3dHYXAyQmVnICYmIGEgPD0ga1NoYWRvd0dhcDJFbmQpIHx8Ci0rICAgICAgICAg ICAoYSA+PSBrU2hhZG93R2FwM0JlZyAmJiBhIDw9IGtTaGFkb3dHYXAzRW5kKTsKLSsgIH0KLSAg IC8vIEluIHplcm8tYmFzZWQgc2hhZG93IG1vZGUgd2UgdHJlYXQgYWRkcmVzc2VzIG5lYXIgemVy byBhcyBhZGRyZXNzZXMKLSAgIC8vIGluIHNoYWRvdyBnYXAgYXMgd2VsbC4KLSAgIGlmIChTSEFE T1dfT0ZGU0VUID09IDApCi1AQCAtMTA4LDEwICsxOTcsMTIgQEAgc3RhdGljIGlubGluZSBib29s IEFkZHJJc0luU2hhZG93R2FwKHVwdAotIH0KLSAKLSBzdGF0aWMgaW5saW5lIGJvb2wgQWRkcklz QWxpZ25lZEJ5R3JhbnVsYXJpdHkodXB0ciBhKSB7Ci0rICBQUk9GSUxFX0FTQU5fTUFQUElORygp OwotICAgcmV0dXJuIChhICYgKFNIQURPV19HUkFOVUxBUklUWSAtIDEpKSA9PSAwOwotIH0KLSAK LSBzdGF0aWMgaW5saW5lIGJvb2wgQWRkcmVzc0lzUG9pc29uZWQodXB0ciBhKSB7Ci0rICBQUk9G SUxFX0FTQU5fTUFQUElORygpOwotICAgY29uc3QgdXB0ciBrQWNjZXNzU2l6ZSA9IDE7Ci0gICB1 OCAqc2hhZG93X2FkZHJlc3MgPSAodTgqKU1lbVRvU2hhZG93KGEpOwotICAgczggc2hhZG93X3Zh bHVlID0gKnNoYWRvd19hZGRyZXNzOwotQEAgLTEyMyw2ICsyMTQsOSBAQCBzdGF0aWMgaW5saW5l IGJvb2wgQWRkcmVzc0lzUG9pc29uZWQodXB0Ci0gICByZXR1cm4gZmFsc2U7Ci0gfQotIAotKy8v IE11c3QgYmUgYWZ0ZXIgYWxsIGNhbGxzIHRvIFBST0ZJTEVfQVNBTl9NQVBQSU5HKCkuCi0rc3Rh dGljIGNvbnN0IHVwdHIga0FzYW5NYXBwaW5nUHJvZmlsZVNpemUgPSBfX0xJTkVfXzsKLSsKLSB9 ICAvLyBuYW1lc3BhY2UgX19hc2FuCi0gCi0gI2VuZGlmICAvLyBBU0FOX01BUFBJTkdfSAotLS0t IGxpYnNhbml0aXplci9hc2FuL2FzYW5fcnRsLmNjLmpqCTIwMTMtMDItMTMgMTc6MDQ6MjUuNjg4 MjQwMTEzICswMTAwCi0rKysgbGlic2FuaXRpemVyL2FzYW4vYXNhbl9ydGwuY2MJMjAxMy0wMi0x NSAxMzoyNDoxNy40MTEwMzMyMjkgKzAxMDAKLUBAIC0yNSw2ICsyNSw4IEBACi0gCi0gbmFtZXNw YWNlIF9fYXNhbiB7Ci0gCi0rdXB0ciBBc2FuTWFwcGluZ1Byb2ZpbGVba0FzYW5NYXBwaW5nUHJv ZmlsZVNpemVdOwotKwotIHN0YXRpYyB2b2lkIEFzYW5EaWUoKSB7Ci0gICBzdGF0aWMgYXRvbWlj X3VpbnQzMl90IG51bV9jYWxsczsKLSAgIGlmIChhdG9taWNfZmV0Y2hfYWRkKCZudW1fY2FsbHMs IDEsIG1lbW9yeV9vcmRlcl9yZWxheGVkKSAhPSAwKSB7Ci1AQCAtMzUsOCArMzcsMTQgQEAgc3Rh dGljIHZvaWQgQXNhbkRpZSgpIHsKLSAgICAgUmVwb3J0KCJTbGVlcGluZyBmb3IgJWQgc2Vjb25k KHMpXG4iLCBmbGFncygpLT5zbGVlcF9iZWZvcmVfZHlpbmcpOwotICAgICBTbGVlcEZvclNlY29u ZHMoZmxhZ3MoKS0+c2xlZXBfYmVmb3JlX2R5aW5nKTsKLSAgIH0KLS0gIGlmIChmbGFncygpLT51 bm1hcF9zaGFkb3dfb25fZXhpdCkKLS0gICAgVW5tYXBPckRpZSgodm9pZCopa0xvd1NoYWRvd0Jl Zywga0hpZ2hTaGFkb3dFbmQgLSBrTG93U2hhZG93QmVnKTsKLSsgIGlmIChmbGFncygpLT51bm1h cF9zaGFkb3dfb25fZXhpdCkgewotKyAgICBpZiAoa01pZE1lbUJlZykgewotKyAgICAgIFVubWFw T3JEaWUoKHZvaWQqKWtMb3dTaGFkb3dCZWcsIGtNaWRNZW1CZWcgLSBrTG93U2hhZG93QmVnKTsK LSsgICAgICBVbm1hcE9yRGllKCh2b2lkKilrTWlkTWVtRW5kLCBrSGlnaFNoYWRvd0VuZCAtIGtN aWRNZW1FbmQpOwotKyAgICB9IGVsc2UgewotKyAgICAgIFVubWFwT3JEaWUoKHZvaWQqKWtMb3dT aGFkb3dCZWcsIGtIaWdoU2hhZG93RW5kIC0ga0xvd1NoYWRvd0JlZyk7Ci0rICAgIH0KLSsgIH0K LSAgIGlmIChkZWF0aF9jYWxsYmFjaykKLSAgICAgZGVhdGhfY2FsbGJhY2soKTsKLSAgIGlmIChm bGFncygpLT5hYm9ydF9vbl9lcnJvcikKLUBAIC0xNjEsNyArMTY5LDEwIEBAIHZvaWQgSW5pdGlh bGl6ZUZsYWdzKEZsYWdzICpmLCBjb25zdCBjaGEKLSBpbnQgYXNhbl9pbml0ZWQ7Ci0gYm9vbCBh c2FuX2luaXRfaXNfcnVubmluZzsKLSB2b2lkICgqZGVhdGhfY2FsbGJhY2spKHZvaWQpOwotLXVw dHIga0hpZ2hNZW1FbmQ7Ci0rCi0rI2lmICFBU0FOX0ZJWEVEX01BUFBJTkcKLSt1cHRyIGtIaWdo TWVtRW5kLCBrTWlkTWVtQmVnLCBrTWlkTWVtRW5kOwotKyNlbmRpZgotIAotIC8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tIE1pc2MgLS0tLS0tLS0tLS0tLS0tLSB7e3sxCi0gdm9pZCBTaG93 U3RhdHNBbmRBYm9ydCgpIHsKLUBAIC0yNTksOSArMjcwLDE1IEBAIHN0YXRpYyBOT0lOTElORSB2 b2lkIGZvcmNlX2ludGVyZmFjZV9zeW0KLSBzdGF0aWMgdm9pZCBhc2FuX2F0ZXhpdCgpIHsKLSAg IFByaW50ZigiQWRkcmVzc1Nhbml0aXplciBleGl0IHN0YXRzOlxuIik7Ci0gICBfX2FzYW5fcHJp bnRfYWNjdW11bGF0ZWRfc3RhdHMoKTsKLSsgIC8vIFByaW50IEFzYW5NYXBwaW5nUHJvZmlsZS4K LSsgIGZvciAodXB0ciBpID0gMDsgaSA8IGtBc2FuTWFwcGluZ1Byb2ZpbGVTaXplOyBpKyspIHsK LSsgICAgaWYgKEFzYW5NYXBwaW5nUHJvZmlsZVtpXSA9PSAwKSBjb250aW51ZTsKLSsgICAgUHJp bnRmKCJhc2FuX21hcHBpbmcuaDolemQgLS0gJXpkXG4iLCBpLCBBc2FuTWFwcGluZ1Byb2ZpbGVb aV0pOwotKyAgfQotIH0KLSAKLSBzdGF0aWMgdm9pZCBJbml0aWFsaXplSGlnaE1lbUVuZCgpIHsK LSsjaWYgIUFTQU5fRklYRURfTUFQUElORwotICNpZiBTQU5JVElaRVJfV09SRFNJWkUgPT0gNjQK LSAjIGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIC8vIEZJWE1FOgotQEAgLTI3Nyw2ICsy OTQsNTggQEAgc3RhdGljIHZvaWQgSW5pdGlhbGl6ZUhpZ2hNZW1FbmQoKSB7Ci0gI2Vsc2UgIC8v IFNBTklUSVpFUl9XT1JEU0laRSA9PSAzMgotICAga0hpZ2hNZW1FbmQgPSAoMVVMTCA8PCAzMikg LSAxOyAgLy8gMHhmZmZmZmZmZjsKLSAjZW5kaWYgIC8vIFNBTklUSVpFUl9XT1JEU0laRQotKyNl bmRpZiAgLy8gIUFTQU5fRklYRURfTUFQUElORwotK30KLSsKLStzdGF0aWMgdm9pZCBQcm90ZWN0 R2FwKHVwdHIgYSwgdXB0ciBzaXplKSB7Ci0rICBDSEVDS19FUShhLCAodXB0cilNcHJvdGVjdChh LCBzaXplKSk7Ci0rfQotKwotK3N0YXRpYyB2b2lkIFByaW50QWRkcmVzc1NwYWNlTGF5b3V0KCkg ewotKyAgUHJpbnRmKCJ8fCBgWyVwLCAlcF1gIHx8IEhpZ2hNZW0gICAgfHxcbiIsCi0rICAgICAg ICAgKHZvaWQqKWtIaWdoTWVtQmVnLCAodm9pZCopa0hpZ2hNZW1FbmQpOwotKyAgUHJpbnRmKCJ8 fCBgWyVwLCAlcF1gIHx8IEhpZ2hTaGFkb3cgfHxcbiIsCi0rICAgICAgICAgKHZvaWQqKWtIaWdo U2hhZG93QmVnLCAodm9pZCopa0hpZ2hTaGFkb3dFbmQpOwotKyAgaWYgKGtNaWRNZW1CZWcpIHsK LSsgICAgUHJpbnRmKCJ8fCBgWyVwLCAlcF1gIHx8IFNoYWRvd0dhcDMgfHxcbiIsCi0rICAgICAg ICAgICAodm9pZCopa1NoYWRvd0dhcDNCZWcsICh2b2lkKilrU2hhZG93R2FwM0VuZCk7Ci0rICAg IFByaW50ZigifHwgYFslcCwgJXBdYCB8fCBNaWRNZW0gICAgIHx8XG4iLAotKyAgICAgICAgICAg KHZvaWQqKWtNaWRNZW1CZWcsICh2b2lkKilrTWlkTWVtRW5kKTsKLSsgICAgUHJpbnRmKCJ8fCBg WyVwLCAlcF1gIHx8IFNoYWRvd0dhcDIgfHxcbiIsCi0rICAgICAgICAgICAodm9pZCopa1NoYWRv d0dhcDJCZWcsICh2b2lkKilrU2hhZG93R2FwMkVuZCk7Ci0rICAgIFByaW50ZigifHwgYFslcCwg JXBdYCB8fCBNaWRTaGFkb3cgIHx8XG4iLAotKyAgICAgICAgICAgKHZvaWQqKWtNaWRTaGFkb3dC ZWcsICh2b2lkKilrTWlkU2hhZG93RW5kKTsKLSsgIH0KLSsgIFByaW50ZigifHwgYFslcCwgJXBd YCB8fCBTaGFkb3dHYXAgIHx8XG4iLAotKyAgICAgICAgICh2b2lkKilrU2hhZG93R2FwQmVnLCAo dm9pZCopa1NoYWRvd0dhcEVuZCk7Ci0rICBpZiAoa0xvd1NoYWRvd0JlZykgewotKyAgICBQcmlu dGYoInx8IGBbJXAsICVwXWAgfHwgTG93U2hhZG93ICB8fFxuIiwKLSsgICAgICAgICAgICh2b2lk KilrTG93U2hhZG93QmVnLCAodm9pZCopa0xvd1NoYWRvd0VuZCk7Ci0rICAgIFByaW50ZigifHwg YFslcCwgJXBdYCB8fCBMb3dNZW0gICAgIHx8XG4iLAotKyAgICAgICAgICAgKHZvaWQqKWtMb3dN ZW1CZWcsICh2b2lkKilrTG93TWVtRW5kKTsKLSsgIH0KLSsgIFByaW50ZigiTWVtVG9TaGFkb3co c2hhZG93KTogJXAgJXAgJXAgJXAiLAotKyAgICAgICAgICh2b2lkKilNRU1fVE9fU0hBRE9XKGtM b3dTaGFkb3dCZWcpLAotKyAgICAgICAgICh2b2lkKilNRU1fVE9fU0hBRE9XKGtMb3dTaGFkb3dF bmQpLAotKyAgICAgICAgICh2b2lkKilNRU1fVE9fU0hBRE9XKGtIaWdoU2hhZG93QmVnKSwKLSsg ICAgICAgICAodm9pZCopTUVNX1RPX1NIQURPVyhrSGlnaFNoYWRvd0VuZCkpOwotKyAgaWYgKGtN aWRNZW1CZWcpIHsKLSsgICAgUHJpbnRmKCIgJXAgJXAiLAotKyAgICAgICAgICAgKHZvaWQqKU1F TV9UT19TSEFET1coa01pZFNoYWRvd0JlZyksCi0rICAgICAgICAgICAodm9pZCopTUVNX1RPX1NI QURPVyhrTWlkU2hhZG93RW5kKSk7Ci0rICB9Ci0rICBQcmludGYoIlxuIik7Ci0rICBQcmludGYo InJlZF96b25lPSV6dVxuIiwgKHVwdHIpZmxhZ3MoKS0+cmVkem9uZSk7Ci0rICBQcmludGYoIm1h bGxvY19jb250ZXh0X3NpemU9JXp1XG4iLCAodXB0cilmbGFncygpLT5tYWxsb2NfY29udGV4dF9z aXplKTsKLSsKLSsgIFByaW50ZigiU0hBRE9XX1NDQUxFOiAlenhcbiIsICh1cHRyKVNIQURPV19T Q0FMRSk7Ci0rICBQcmludGYoIlNIQURPV19HUkFOVUxBUklUWTogJXp4XG4iLCAodXB0cilTSEFE T1dfR1JBTlVMQVJJVFkpOwotKyAgUHJpbnRmKCJTSEFET1dfT0ZGU0VUOiAlenhcbiIsICh1cHRy KVNIQURPV19PRkZTRVQpOwotKyAgQ0hFQ0soU0hBRE9XX1NDQUxFID49IDMgJiYgU0hBRE9XX1ND QUxFIDw9IDcpOwotKyAgaWYgKGtNaWRNZW1CZWcpCi0rICAgIENIRUNLKGtNaWRTaGFkb3dCZWcg PiBrTG93U2hhZG93RW5kICYmCi0rICAgICAgICAgIGtNaWRNZW1CZWcgPiBrTWlkU2hhZG93RW5k ICYmCi0rICAgICAgICAgIGtIaWdoU2hhZG93QmVnID4ga01pZE1lbUVuZCk7Ci0gfQotIAotIH0g IC8vIG5hbWVzcGFjZSBfX2FzYW4KLUBAIC0zNTIsNDkgKzQyMSw0OCBAQCB2b2lkIF9fYXNhbl9p bml0KCkgewotICAgUmVwbGFjZVN5c3RlbU1hbGxvYygpOwotICAgUmVwbGFjZU9wZXJhdG9yc05l d0FuZERlbGV0ZSgpOwotIAotLSAgaWYgKGZsYWdzKCktPnZlcmJvc2l0eSkgewotLSAgICBQcmlu dGYoInx8IGBbJXAsICVwXWAgfHwgSGlnaE1lbSAgICB8fFxuIiwKLS0gICAgICAgICAgICh2b2lk KilrSGlnaE1lbUJlZywgKHZvaWQqKWtIaWdoTWVtRW5kKTsKLS0gICAgUHJpbnRmKCJ8fCBgWyVw LCAlcF1gIHx8IEhpZ2hTaGFkb3cgfHxcbiIsCi0tICAgICAgICAgICAodm9pZCopa0hpZ2hTaGFk b3dCZWcsICh2b2lkKilrSGlnaFNoYWRvd0VuZCk7Ci0tICAgIFByaW50ZigifHwgYFslcCwgJXBd YCB8fCBTaGFkb3dHYXAgIHx8XG4iLAotLSAgICAgICAgICAgKHZvaWQqKWtTaGFkb3dHYXBCZWcs ICh2b2lkKilrU2hhZG93R2FwRW5kKTsKLS0gICAgUHJpbnRmKCJ8fCBgWyVwLCAlcF1gIHx8IExv d1NoYWRvdyAgfHxcbiIsCi0tICAgICAgICAgICAodm9pZCopa0xvd1NoYWRvd0JlZywgKHZvaWQq KWtMb3dTaGFkb3dFbmQpOwotLSAgICBQcmludGYoInx8IGBbJXAsICVwXWAgfHwgTG93TWVtICAg ICB8fFxuIiwKLS0gICAgICAgICAgICh2b2lkKilrTG93TWVtQmVnLCAodm9pZCopa0xvd01lbUVu ZCk7Ci0tICAgIFByaW50ZigiTWVtVG9TaGFkb3coc2hhZG93KTogJXAgJXAgJXAgJXBcbiIsCi0t ICAgICAgICAgICAodm9pZCopTUVNX1RPX1NIQURPVyhrTG93U2hhZG93QmVnKSwKLS0gICAgICAg ICAgICh2b2lkKilNRU1fVE9fU0hBRE9XKGtMb3dTaGFkb3dFbmQpLAotLSAgICAgICAgICAgKHZv aWQqKU1FTV9UT19TSEFET1coa0hpZ2hTaGFkb3dCZWcpLAotLSAgICAgICAgICAgKHZvaWQqKU1F TV9UT19TSEFET1coa0hpZ2hTaGFkb3dFbmQpKTsKLS0gICAgUHJpbnRmKCJyZWRfem9uZT0lenVc biIsICh1cHRyKWZsYWdzKCktPnJlZHpvbmUpOwotLSAgICBQcmludGYoIm1hbGxvY19jb250ZXh0 X3NpemU9JXp1XG4iLCAodXB0cilmbGFncygpLT5tYWxsb2NfY29udGV4dF9zaXplKTsKLS0KLS0g ICAgUHJpbnRmKCJTSEFET1dfU0NBTEU6ICV6eFxuIiwgKHVwdHIpU0hBRE9XX1NDQUxFKTsKLS0g ICAgUHJpbnRmKCJTSEFET1dfR1JBTlVMQVJJVFk6ICV6eFxuIiwgKHVwdHIpU0hBRE9XX0dSQU5V TEFSSVRZKTsKLS0gICAgUHJpbnRmKCJTSEFET1dfT0ZGU0VUOiAlenhcbiIsICh1cHRyKVNIQURP V19PRkZTRVQpOwotLSAgICBDSEVDSyhTSEFET1dfU0NBTEUgPj0gMyAmJiBTSEFET1dfU0NBTEUg PD0gNyk7Ci0rICB1cHRyIHNoYWRvd19zdGFydCA9IGtMb3dTaGFkb3dCZWc7Ci0rICBpZiAoa0xv d1NoYWRvd0JlZykgc2hhZG93X3N0YXJ0IC09IEdldE1tYXBHcmFudWxhcml0eSgpOwotKyAgdXB0 ciBzaGFkb3dfZW5kID0ga0hpZ2hTaGFkb3dFbmQ7Ci0rICBib29sIGZ1bGxfc2hhZG93X2lzX2F2 YWlsYWJsZSA9Ci0rICAgICAgTWVtb3J5UmFuZ2VJc0F2YWlsYWJsZShzaGFkb3dfc3RhcnQsIHNo YWRvd19lbmQpOwotKwotKyNpZiBBU0FOX0xJTlVYICYmIGRlZmluZWQoX194ODZfNjRfXykgJiYg IUFTQU5fRklYRURfTUFQUElORwotKyAgaWYgKCFmdWxsX3NoYWRvd19pc19hdmFpbGFibGUpIHsK LSsgICAga01pZE1lbUJlZyA9IGtMb3dNZW1FbmQgPCAweDMwMDAwMDAwMDBVTEwgPyAweDMwMDAw MDAwMDBVTEwgOiAwOwotKyAgICBrTWlkTWVtRW5kID0ga0xvd01lbUVuZCA8IDB4MzAwMDAwMDAw MFVMTCA/IDB4M2ZmZmZmZmZmZlVMTCA6IDA7Ci0gICB9Ci0rI2VuZGlmCi0rCi0rICBpZiAoZmxh Z3MoKS0+dmVyYm9zaXR5KQotKyAgICBQcmludEFkZHJlc3NTcGFjZUxheW91dCgpOwotIAotICAg aWYgKGZsYWdzKCktPmRpc2FibGVfY29yZSkgewotICAgICBEaXNhYmxlQ29yZUR1bXBlcigpOwot ICAgfQotIAotLSAgdXB0ciBzaGFkb3dfc3RhcnQgPSBrTG93U2hhZG93QmVnOwotLSAgaWYgKGtM b3dTaGFkb3dCZWcgPiAwKSBzaGFkb3dfc3RhcnQgLT0gR2V0TW1hcEdyYW51bGFyaXR5KCk7Ci0t ICB1cHRyIHNoYWRvd19lbmQgPSBrSGlnaFNoYWRvd0VuZDsKLS0gIGlmIChNZW1vcnlSYW5nZUlz QXZhaWxhYmxlKHNoYWRvd19zdGFydCwgc2hhZG93X2VuZCkpIHsKLS0gICAgaWYgKGtMb3dTaGFk b3dCZWcgIT0ga0xvd1NoYWRvd0VuZCkgewotLSAgICAgIC8vIG1tYXAgdGhlIGxvdyBzaGFkb3cg cGx1cyBhdCBsZWFzdCBvbmUgcGFnZS4KLS0gICAgICBSZXNlcnZlU2hhZG93TWVtb3J5UmFuZ2Uo a0xvd1NoYWRvd0JlZyAtIEdldE1tYXBHcmFudWxhcml0eSgpLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBrTG93U2hhZG93RW5kKTsKLS0gICAgfQotKyAgaWYgKGZ1bGxfc2hhZG93 X2lzX2F2YWlsYWJsZSkgewotKyAgICAvLyBtbWFwIHRoZSBsb3cgc2hhZG93IHBsdXMgYXQgbGVh c3Qgb25lIHBhZ2UgYXQgdGhlIGxlZnQuCi0rICAgIGlmIChrTG93U2hhZG93QmVnKQotKyAgICAg IFJlc2VydmVTaGFkb3dNZW1vcnlSYW5nZShzaGFkb3dfc3RhcnQsIGtMb3dTaGFkb3dFbmQpOwot KyAgICAvLyBtbWFwIHRoZSBoaWdoIHNoYWRvdy4KLSsgICAgUmVzZXJ2ZVNoYWRvd01lbW9yeVJh bmdlKGtIaWdoU2hhZG93QmVnLCBrSGlnaFNoYWRvd0VuZCk7Ci0rICAgIC8vIHByb3RlY3QgdGhl IGdhcC4KLSsgICAgUHJvdGVjdEdhcChrU2hhZG93R2FwQmVnLCBrU2hhZG93R2FwRW5kIC0ga1No YWRvd0dhcEJlZyArIDEpOwotKyAgfSBlbHNlIGlmIChrTWlkTWVtQmVnICYmCi0rICAgICAgTWVt b3J5UmFuZ2VJc0F2YWlsYWJsZShzaGFkb3dfc3RhcnQsIGtNaWRNZW1CZWcgLSAxKSAmJgotKyAg ICAgIE1lbW9yeVJhbmdlSXNBdmFpbGFibGUoa01pZE1lbUVuZCArIDEsIHNoYWRvd19lbmQpKSB7 Ci0rICAgIENIRUNLKGtMb3dTaGFkb3dCZWcgIT0ga0xvd1NoYWRvd0VuZCk7Ci0rICAgIC8vIG1t YXAgdGhlIGxvdyBzaGFkb3cgcGx1cyBhdCBsZWFzdCBvbmUgcGFnZSBhdCB0aGUgbGVmdC4KLSsg ICAgUmVzZXJ2ZVNoYWRvd01lbW9yeVJhbmdlKHNoYWRvd19zdGFydCwga0xvd1NoYWRvd0VuZCk7 Ci0rICAgIC8vIG1tYXAgdGhlIG1pZCBzaGFkb3cuCi0rICAgIFJlc2VydmVTaGFkb3dNZW1vcnlS YW5nZShrTWlkU2hhZG93QmVnLCBrTWlkU2hhZG93RW5kKTsKLSAgICAgLy8gbW1hcCB0aGUgaGln aCBzaGFkb3cuCi0gICAgIFJlc2VydmVTaGFkb3dNZW1vcnlSYW5nZShrSGlnaFNoYWRvd0JlZywg a0hpZ2hTaGFkb3dFbmQpOwotLSAgICAvLyBwcm90ZWN0IHRoZSBnYXAKLS0gICAgdm9pZCAqcHJv dCA9IE1wcm90ZWN0KGtTaGFkb3dHYXBCZWcsIGtTaGFkb3dHYXBFbmQgLSBrU2hhZG93R2FwQmVn ICsgMSk7Ci0tICAgIENIRUNLKHByb3QgPT0gKHZvaWQqKWtTaGFkb3dHYXBCZWcpOwotKyAgICAv LyBwcm90ZWN0IHRoZSBnYXBzLgotKyAgICBQcm90ZWN0R2FwKGtTaGFkb3dHYXBCZWcsIGtTaGFk b3dHYXBFbmQgLSBrU2hhZG93R2FwQmVnICsgMSk7Ci0rICAgIFByb3RlY3RHYXAoa1NoYWRvd0dh cDJCZWcsIGtTaGFkb3dHYXAyRW5kIC0ga1NoYWRvd0dhcDJCZWcgKyAxKTsKLSsgICAgUHJvdGVj dEdhcChrU2hhZG93R2FwM0JlZywga1NoYWRvd0dhcDNFbmQgLSBrU2hhZG93R2FwM0JlZyArIDEp OwotICAgfSBlbHNlIHsKLSAgICAgUmVwb3J0KCJTaGFkb3cgbWVtb3J5IHJhbmdlIGludGVybGVh dmVzIHdpdGggYW4gZXhpc3RpbmcgbWVtb3J5IG1hcHBpbmcuICIKLSAgICAgICAgICAgICJBU2Fu IGNhbm5vdCBwcm9jZWVkIGNvcnJlY3RseS4gQUJPUlRJTkcuXG4iKTsKLS0tLSBsaWJzYW5pdGl6 ZXIvaW5jbHVkZS9zYW5pdGl6ZXIvY29tbW9uX2ludGVyZmFjZV9kZWZzLmguamoJMjAxMy0wMi0x MyAxMTo1Mzo0NC41MzEzMzAwNDQgKzAxMDAKLSsrKyBsaWJzYW5pdGl6ZXIvaW5jbHVkZS9zYW5p dGl6ZXIvY29tbW9uX2ludGVyZmFjZV9kZWZzLmgJMjAxMy0wMi0xNSAxMzoyNDoxNy40MDMwMzI0 NTAgKzAxMDAKLUBAIC0xNCw2ICsxNCwxMSBAQAotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5j bHVkZSA8c3RkaW50Lmg+Ci0gCi0rLy8gR0NDIGRvZXMgbm90IHVuZGVyc3RhbmQgX19oYXNfZmVh dHVyZS4KLSsjaWYgIWRlZmluZWQoX19oYXNfZmVhdHVyZSkKLSsjIGRlZmluZSBfX2hhc19mZWF0 dXJlKHgpIDAKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsK LSAjZW5kaWYKLS0tLSBsaWJzYW5pdGl6ZXIvaW5jbHVkZS9zYW5pdGl6ZXIvYXNhbl9pbnRlcmZh Y2UuaC5qagkyMDEzLTAyLTEzIDExOjUzOjQ0LjUzMTMzMDA0NCArMDEwMAotKysrIGxpYnNhbml0 aXplci9pbmNsdWRlL3Nhbml0aXplci9hc2FuX2ludGVyZmFjZS5oCTIwMTMtMDItMTUgMTM6MjQ6 MTcuNDAzMDMyNDUwICswMTAwCi1AQCAtMzUsOCArMzUsOCBAQCBleHRlcm4gIkMiIHsKLSAgIC8v ICh1bilwb2lzb24gbWVtb3J5IGluIHRoZSBzYW1lIG1lbW9yeSByZWdpb24gc2ltdWx0YW5lb3Vz bHkuCi0gICB2b2lkIF9fYXNhbl91bnBvaXNvbl9tZW1vcnlfcmVnaW9uKHZvaWQgY29uc3Qgdm9s YXRpbGUgKmFkZHIsIHNpemVfdCBzaXplKTsKLSAKLS0gIC8vIFVzZXIgY29kZSBzaG91bGQgdXNl IG1hY3JvIGluc3RlYWQgb2YgZnVuY3Rpb25zLgotLSNpZiBfX2hhc19mZWF0dXJlKGFkZHJlc3Nf c2FuaXRpemVyKQotKy8vIFVzZXIgY29kZSBzaG91bGQgdXNlIG1hY3JvcyBpbnN0ZWFkIG9mIGZ1 bmN0aW9ucy4KLSsjaWYgX19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikgfHwgZGVmaW5l ZChfX1NBTklUSVpFX0FERFJFU1NfXykKLSAjZGVmaW5lIEFTQU5fUE9JU09OX01FTU9SWV9SRUdJ T04oYWRkciwgc2l6ZSkgXAotICAgX19hc2FuX3BvaXNvbl9tZW1vcnlfcmVnaW9uKChhZGRyKSwg KHNpemUpKQotICNkZWZpbmUgQVNBTl9VTlBPSVNPTl9NRU1PUllfUkVHSU9OKGFkZHIsIHNpemUp IFwKCmRpZmYgLS1naXQgYS9nY2M0OC1wcjU2MjU4LnBhdGNoIGIvZ2NjNDgtcHI1NjI1OC5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjViMGNhMC4uMDAwMDAwMAotLS0gYS9n Y2M0OC1wcjU2MjU4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotMjAxMy0w Mi0yMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQlQUiBib290c3RyYXAv NTYyNTgKLQkqIGRvYy9pbnZva2UudGV4aSAoLWZkdW1wLXJ0bC1wcm9fYW5kX2VwaWxvZ3VlKTog VXNlIEBpdGVtCi0JaW5zdGVhZCBvZiBAaXRlbXguCi0KLQkqIGduYXQtc3R5bGUudGV4aSAoQHRp dGxlKTogUmVtb3ZlIEBoZmlsbC4KLQkqIHByb2plY3RzLnRleGk6IEF2b2lkIGxpbmUgd3JhcHBp bmcgaW5zaWRlIG9mIEBweHJlZiBvcgotCUB4cmVmLgotCi0JKiBkb2MvY3AtdG9vbHMudGV4aW5m byAoVmlydHVhbCBNYWNoaW5lIE9wdGlvbnMpOiBVc2UganVzdAotCW9uZSBAZ2Njb3B0bGlzdCBp bnN0ZWFkIG9mIDMgc2VwYXJhdGUgb25lcy4KLQotLS0tIGdjYy9kb2MvaW52b2tlLnRleGkuamoJ MjAxMy0wMS0zMSAyMjo1NzoyMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnY2MvZG9jL2ludm9rZS50 ZXhpCTIwMTMtMDItMjAgMTM6MDY6NDcuNTE2NDA1NzM5ICswMTAwCi1AQCAtNTYxMiw3ICs1NjEy LDcgQEAgRHVtcCBhZnRlciB0aGUgcGVlcGhvbGUgcGFzcy4KLSBAb3BpbmRleCBmZHVtcC1ydGwt cG9zdHJlbG9hZAotIER1bXAgYWZ0ZXIgcG9zdC1yZWxvYWQgb3B0aW1pemF0aW9ucy4KLSAKLS1A aXRlbXggLWZkdW1wLXJ0bC1wcm9fYW5kX2VwaWxvZ3VlCi0rQGl0ZW0gLWZkdW1wLXJ0bC1wcm9f YW5kX2VwaWxvZ3VlCi0gQG9waW5kZXggZmR1bXAtcnRsLXByb19hbmRfZXBpbG9ndWUKLSBEdW1w IGFmdGVyIGdlbmVyYXRpbmcgdGhlIGZ1bmN0aW9uIHByb2xvZ3VlcyBhbmQgZXBpbG9ndWVzLgot IAotLS0tIGdjYy9hZGEvZ25hdC1zdHlsZS50ZXhpLmpqCTIwMTItMDgtMTAgMTI6NTc6MzMuMDAw MDAwMDAwICswMjAwCi0rKysgZ2NjL2FkYS9nbmF0LXN0eWxlLnRleGkJMjAxMy0wMi0yMCAxMzow NjowMy4wNDI2NjczMDAgKzAxMDAKLUBAIC00Miw3ICs0Miw3IEBAIFRleHRzLiAgQSBjb3B5IG9m IHRoZSBsaWNlbnNlIGlzIGluY2x1ZGUKLSBAdGl0bGVwYWdlCi0gQHRpdGxlZm9udHtHTkFUIENv ZGluZyBTdHlsZTp9Ci0gQHNwIDEKLS1AdGl0bGUgQGhmaWxsIEEgR3VpZGUgZm9yIEdOQVQgRGV2 ZWxvcGVycwotK0B0aXRsZSBBIEd1aWRlIGZvciBHTkFUIERldmVsb3BlcnMKLSBAc3VidGl0bGUg R05BVCwgVGhlIEdOVSBBZGEgQ29tcGlsZXIKLSBAdmVyc2lvbnN1YnRpdGxlCi0gQGF1dGhvciBB ZGEgQ29yZSBUZWNobm9sb2dpZXMsIEluYy4KLS0tLSBnY2MvYWRhL3Byb2plY3RzLnRleGkuamoJ MjAxMy0wMS0wNCAxMToxNjoyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnY2MvYWRhL3Byb2plY3Rz LnRleGkJMjAxMy0wMi0yMCAxNzo0ODo0MS41ODI2NDUxNTkgKzAxMDAKLUBAIC00OCw4ICs0OCw3 IEBAIHByb2plY3QgZmlsZXMgYWxsb3cgeW91IHRvIHNwZWNpZnk6Ci0gQGl0ZW0gU291cmNlIGZp bGUgbmFtaW5nIGNvbnZlbnRpb25zOyB5b3UgY2FuIHNwZWNpZnkgdGhlc2UgZWl0aGVyIGdsb2Jh bGx5IG9yIGZvcgotICAgaW5kaXZpZHVhbCBjb21waWxhdGlvbiB1bml0cyAoQHB4cmVme05hbWlu ZyBTY2hlbWVzfSkuCi0gQGl0ZW0gQ2hhbmdlIGFueSBvZiB0aGUgYWJvdmUgc2V0dGluZ3MgZGVw ZW5kaW5nIG9uIGV4dGVybmFsIHZhbHVlcywgdGh1cyBlbmFibGluZwotLSAgdGhlIHJldXNlIG9m IHRoZSBwcm9qZWN0cyBpbiB2YXJpb3VzIEBie3NjZW5hcmlvc30gKEBweHJlZntTY2VuYXJpb3MK LS0gIGluIFByb2plY3RzfSkuCi0rICB0aGUgcmV1c2Ugb2YgdGhlIHByb2plY3RzIGluIHZhcmlv dXMgQGJ7c2NlbmFyaW9zfSAoQHB4cmVme1NjZW5hcmlvcyBpbiBQcm9qZWN0c30pLgotIEBpdGVt IEF1dG9tYXRpY2FsbHkgYnVpbGQgbGlicmFyaWVzIGFzIHBhcnQgb2YgdGhlIGJ1aWxkIHByb2Nl c3MKLSAgIChAcHhyZWZ7TGlicmFyeSBQcm9qZWN0c30pLgotIAotQEAgLTM2MCw4ICszNTksOCBA QCBsb2NhdGluZyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlcyBpbiB0Ci0gCi0gQGl0ZW0gRm9y IHZhcmlvdXMgcmVhc29ucywgaXQgaXMgc29tZXRpbWVzIHVzZWZ1bCB0byBoYXZlIGEgcHJvamVj dCB3aXRoIG5vCi0gICBzb3VyY2VzIChtb3N0IG9mIHRoZSB0aW1lIGJlY2F1c2UgdGhlIGF0dHJp YnV0ZXMgZGVmaW5lZCBpbiB0aGUgcHJvamVjdAotLSAgZmlsZSB3aWxsIGJlIHJldXNlZCBpbiBv dGhlciBwcm9qZWN0cywgYXMgZXhwbGFpbmVkIGluIEBweHJlZntPcmdhbml6aW5nCi0tICBQcm9q ZWN0cyBpbnRvIFN1YnN5c3RlbXN9LiBUbyBkbyB0aGlzLCB0aGUgYXR0cmlidXRlCi0rICBmaWxl IHdpbGwgYmUgcmV1c2VkIGluIG90aGVyIHByb2plY3RzLCBhcyBleHBsYWluZWQgaW4KLSsgIEBw eHJlZntPcmdhbml6aW5nIFByb2plY3RzIGludG8gU3Vic3lzdGVtc30uIFRvIGRvIHRoaXMsIHRo ZSBhdHRyaWJ1dGUKLSAgIEBlbXBoe1NvdXJjZV9GaWxlc30gaXMgc2V0IHRvIHRoZSBlbXB0eSBs aXN0LCBpLmUuIEBjb2RleygpfS4gQWx0ZXJuYXRpdmVseSwKLSAgIEBlbXBoe1NvdXJjZV9EaXJz fSBjYW4gYmUgc2V0IHRvIHRoZSBlbXB0eSBsaXN0LCB3aXRoIHRoZSBzYW1lCi0gICByZXN1bHQu Ci1AQCAtMzg4LDggKzM4Nyw5IEBAIGxvY2F0aW5nIHRoZSBzcGVjaWZpZWQgc291cmNlIGZpbGVz IGluIHQKLSAgIFRoaXMgY2FuIGJlIGRvbmUgdGhhbmtzIHRvIHRoZSBhdHRyaWJ1dGUgQGJ7RXhj bHVkZWRfU291cmNlX0ZpbGVzfQotICAgKG9yIGl0cyBzeW5vbnltIEBie0xvY2FsbHlfUmVtb3Zl ZF9GaWxlc30pLgotICAgSXRzIHZhbHVlIGlzIHRoZSBsaXN0IG9mIGZpbGUgbmFtZXMgdGhhdCBz aG91bGQgbm90IGJlIHRha2VuIGludG8gYWNjb3VudC4KLS0gIFRoaXMgYXR0cmlidXRlIGlzIG9m dGVuIHVzZWQgd2hlbiBleHRlbmRpbmcgYSBwcm9qZWN0LCBAeHJlZntQcm9qZWN0Ci0tICBFeHRl bnNpb259LiBBIHNpbWlsYXIgYXR0cmlidXRlIEBie0V4Y2x1ZGVkX1NvdXJjZV9MaXN0X0ZpbGV9 IHBsYXlzIHRoZSBzYW1lCi0rICBUaGlzIGF0dHJpYnV0ZSBpcyBvZnRlbiB1c2VkIHdoZW4gZXh0 ZW5kaW5nIGEgcHJvamVjdCwKLSsgIEB4cmVme1Byb2plY3QgRXh0ZW5zaW9ufS4gQSBzaW1pbGFy IGF0dHJpYnV0ZQotKyAgQGJ7RXhjbHVkZWRfU291cmNlX0xpc3RfRmlsZX0gcGxheXMgdGhlIHNh bWUKLSAgIHJvbGUgYnV0IHRha2VzIHRoZSBuYW1lIG9mIGZpbGUgY29udGFpbmluZyBmaWxlIG5h bWVzIHNpbWlsYXJseSB0bwotICAgQGNvZGV7U291cmNlX0xpc3RfRmlsZX0uCi0gCi0tLS0gbGli amF2YS9jbGFzc3BhdGgvZG9jL2NwLXRvb2xzLnRleGluZm8uamoJMjAxMi0xMi0yMCAxMTozODo1 MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBsaWJqYXZhL2NsYXNzcGF0aC9kb2MvY3AtdG9vbHMudGV4 aW5mbwkyMDEzLTAyLTIwIDE5OjEwOjQyLjU3MzkyNTE2NSArMDEwMAotQEAgLTIwMjUsNyArMjAy NSw3IEBAIERvY2xldCwgZ3JvdXBlZCBieSB0eXBlLiAgRXhwbGFuYXRpb25zIGEKLSAKLSBAaXRl bSBWaXJ0dWFsIE1hY2hpbmUgT3B0aW9ucwotIEB4cmVme1ZpcnR1YWwgTWFjaGluZSBPcHRpb25z LCxPcHRpb25zIENvbnRyb2xsaW5nIEdqZG9jIEJlaGF2aW9yfS4KLS1AZ2Njb3B0bGlzdHstY2xh c3NwYXRofSAgQGdjY29wdGxpc3R7LWJvb3RjbGFzc3BhdGh9ICBAZ2Njb3B0bGlzdHstSn1AdmFy e3Ztb3B0fQotK0BnY2NvcHRsaXN0ey1jbGFzc3BhdGggIC1ib290Y2xhc3NwYXRoICAtSiBAdmFy e3Ztb3B0fX0KLSAKLSBAZW5kIHRhYmxlCi0gCgpkaWZmIC0tZ2l0IGEvZ2NjNDgtcHI1NjI2NS5w YXRjaCBiL2djYzQ4LXByNTYyNjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGQ2NTFkYTYuLjAwMDAwMDAKLS0tIGEvZ2NjNDgtcHI1NjI2NS5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDEzMiArMCwwIEBACi0yMDEzLTAyLTIwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+ Ci0KLQlQUiB0cmVlLW9wdGltaXphdGlvbi81NjI2NQotCSogaXBhLXByb3AuYyAoaXBhX21ha2Vf ZWRnZV9kaXJlY3RfdG9fdGFyZ2V0KTogRml4dXAgY2FsbGdyYXBoIHdoZW4gdGFyZ2V0IGlzCi0J cmVmZXJlbmNlZCBmb3IgZmlycyB0dGltZS4KLQotCSogdGVzdHN1aXRlL2crKy5kZy9pcGEvZGV2 aXJ0LTExLkM6IE5ldyB0ZXN0Y2FzZS4KLQotLS0tIGdjYy9pcGEtcHJvcC5jCShyZXZpc2lvbiAx OTYxNzYpCi0rKysgZ2NjL2lwYS1wcm9wLmMJKHJldmlzaW9uIDE5NjE3NykKLUBAIC0yMTAwLDEw ICsyMTAwLDY1IEBAIGlwYV9tYWtlX2VkZ2VfZGlyZWN0X3RvX3RhcmdldCAoc3RydWN0IGMKLSAg IGlmIChUUkVFX0NPREUgKHRhcmdldCkgPT0gQUREUl9FWFBSKQotICAgICB0YXJnZXQgPSBUUkVF X09QRVJBTkQgKHRhcmdldCwgMCk7Ci0gICBpZiAoVFJFRV9DT0RFICh0YXJnZXQpICE9IEZVTkNU SU9OX0RFQ0wpCi0tICAgIHJldHVybiBOVUxMOwotKyAgICB7Ci0rICAgICAgdGFyZ2V0ID0gY2Fu b25pY2FsaXplX2NvbnN0cnVjdG9yX3ZhbCAodGFyZ2V0LCBOVUxMKTsKLSsgICAgICBpZiAoIXRh cmdldCB8fCBUUkVFX0NPREUgKHRhcmdldCkgIT0gRlVOQ1RJT05fREVDTCkKLSsJewotKwkgIGlm IChkdW1wX2ZpbGUpCi0rCSAgICBmcHJpbnRmIChkdW1wX2ZpbGUsICJpcGEtcHJvcDogRGlzY292 ZXJlZCBkaXJlY3QgY2FsbCB0byBub24tZnVuY3Rpb24iCi0rCQkJCSIgaW4gKCVzLyVpKS5cbiIs Ci0rCQkgICAgIGNncmFwaF9ub2RlX25hbWUgKGllLT5jYWxsZXIpLCBpZS0+Y2FsbGVyLT51aWQp OwotKwkgIHJldHVybiBOVUxMOwotKwl9Ci0rICAgIH0KLSAgIGNhbGxlZSA9IGNncmFwaF9nZXRf bm9kZSAodGFyZ2V0KTsKLS0gIGlmICghY2FsbGVlKQotLSAgICByZXR1cm4gTlVMTDsKLSsKLSsg IC8qIEJlY2F1c2UgbWF5LWVkZ2VzIGFyZSBub3QgZXhwbGljaXRlbHkgcmVwcmVzZW50ZWQgYW5k IHZ0YWJsZSBtYXkgYmUgZXh0ZXJuYWwsCi0rICAgICB3ZSBtYXkgY3JlYXRlIHRoZSBmaXJzdCBy ZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBpbiB0aGUgdW5pdC4gICovCi0rICBpZiAoIWNhbGxlZSB8 fCBjYWxsZWUtPmdsb2JhbC5pbmxpbmVkX3RvKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGNncmFw aF9ub2RlICpmaXJzdF9jbG9uZSA9IGNhbGxlZTsKLSsKLSsgICAgICAvKiBXZSBhcmUgYmV0dGVy IHRvIGVuc3VyZSB3ZSBjYW4gcmVmZXIgdG8gaXQuCi0rCSBJbiB0aGUgY2FzZSBvZiBzdGF0aWMg ZnVuY3Rpb25zIHdlIGFyZSBvdXQgb2YgbHVjaywgc2luY2Ugd2UgYWxyZWFkeQkKLSsJIHJlbW92 ZWQgaXRzIGJvZHkuICBJbiB0aGUgY2FzZSBvZiBwdWJsaWMgZnVuY3Rpb25zIHdlIG1heSBvciBt YXkKLSsJIG5vdCBpbnRyb2R1Y2UgdGhlIHJlZmVyZW5jZS4gICovCi0rICAgICAgaWYgKCFjYW5v bmljYWxpemVfY29uc3RydWN0b3JfdmFsICh0YXJnZXQsIE5VTEwpCi0rCSAgfHwgIVRSRUVfUFVC TElDICh0YXJnZXQpKQotKwl7Ci0rCSAgaWYgKGR1bXBfZmlsZSkKLSsJICAgIGZwcmludGYgKGR1 bXBfZmlsZSwgImlwYS1wcm9wOiBEaXNjb3ZlcmVkIGNhbGwgdG8gYSBrbm93biB0YXJnZXQgIgot KwkJICAgICAiKCVzLyVpIC0+ICVzLyVpKSBidXQgY2FuIG5vdCByZWZlciB0byBpdC4gR2l2aW5n IHVwLlxuIiwKLSsJCSAgICAgeHN0cmR1cCAoY2dyYXBoX25vZGVfbmFtZSAoaWUtPmNhbGxlcikp LCBpZS0+Y2FsbGVyLT51aWQsCi0rCQkgICAgIHhzdHJkdXAgKGNncmFwaF9ub2RlX25hbWUgKGll LT5jYWxsZWUpKSwgaWUtPmNhbGxlZS0+dWlkKTsKLSsJICByZXR1cm4gTlVMTDsKLSsJfQotKwot KyAgICAgIC8qIENyZWF0ZSBzeW1ib2wgdGFibGUgbm9kZS4gIEV2ZW4gaWYgaW5saW5lIGNsb25l IGV4aXN0cywgd2UgY2FuIG5vdCB0YWtlCi0rCSBpdCBhcyBhIHRhcmdldCBvZiBub24taW5saW5l ZCBjYWxsLiAgKi8KLSsgICAgICBjYWxsZWUgPSBjZ3JhcGhfY3JlYXRlX25vZGUgKHRhcmdldCk7 Ci0rCi0rICAgICAgLyogT0ssIHdlIHByZXZpb3VzbHkgaW5saW5lZCB0aGUgZnVuY3Rpb24sIHRo ZW4gcmVtb3ZlZCB0aGUgb2ZmbGluZSBjb3B5IGFuZAotKwkgbm93IHdlIHdhbnQgaXQgYmFjayBm b3IgZXh0ZXJuYWwgY2FsbC4gIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGRldmlydHVhbGl6aW5nCi0r CSB3aGlsZSBpbmxpbmluZyBmdW5jdGlvbiBjYWxsZWQgb25jZSB0aGF0IGhhcHBlbnMgYWZ0ZXIg ZXh0ZXJuIGlubGluZWQgYW5kCi0rCSB2aXJ0dWFscyBhcmUgYWxyZWFkeSByZW1vdmVkLiAgSW4g dGhpcyBjYXNlIGludHJvZHVjZSB0aGUgZXh0ZXJuYWwgbm9kZQotKwkgYW5kIG1ha2UgaXQgYXZh aWxhYmxlIGZvciBjYWxsLiAgKi8KLSsgICAgICBpZiAoZmlyc3RfY2xvbmUpCi0rCXsKLSsJICBm aXJzdF9jbG9uZS0+Y2xvbmVfb2YgPSBjYWxsZWU7Ci0rCSAgY2FsbGVlLT5jbG9uZXMgPSBmaXJz dF9jbG9uZTsKLSsJICBzeW10YWJfcHJldmFpbF9pbl9hc21fbmFtZV9oYXNoICgoc3ltdGFiX25v ZGUpY2FsbGVlKTsKLSsJICBzeW10YWJfaW5zZXJ0X25vZGVfdG9faGFzaHRhYmxlICgoc3ltdGFi X25vZGUpY2FsbGVlKTsKLSsJICBpZiAoZHVtcF9maWxlKQotKwkgICAgZnByaW50ZiAoZHVtcF9m aWxlLCAiaXBhLXByb3A6IEludHJvZHVjZWQgbmV3IGV4dGVybmFsIG5vZGUgIgotKwkJICAgICAi KCVzLyVpKSBhbmQgdHVybmVkIGludG8gcm9vdCBvZiB0aGUgY2xvbmUgdHJlZS5cbiIsCi0rCQkg ICAgIHhzdHJkdXAgKGNncmFwaF9ub2RlX25hbWUgKGNhbGxlZSkpLCBjYWxsZWUtPnVpZCk7Ci0r CX0KLSsgICAgICBlbHNlIGlmIChkdW1wX2ZpbGUpCi0rCWZwcmludGYgKGR1bXBfZmlsZSwgImlw YS1wcm9wOiBJbnRyb2R1Y2VkIG5ldyBleHRlcm5hbCBub2RlICIKLSsJCSAiKCVzLyVpKS5cbiIs Ci0rCQkgeHN0cmR1cCAoY2dyYXBoX25vZGVfbmFtZSAoY2FsbGVlKSksIGNhbGxlZS0+dWlkKTsK LSsgICAgfQotICAgaXBhX2NoZWNrX2NyZWF0ZV9ub2RlX3BhcmFtcyAoKTsKLSAKLSAgIC8qIFdl IGNhbiBub3QgbWFrZSBlZGdlcyB0byBpbmxpbmUgY2xvbmVzLiAgSXQgaXMgYnVnIHRoYXQgc29t ZW9uZSByZW1vdmVkCi0tLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvaXBhL2RldmlydC0xMS5DCShy ZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2lwYS9kZXZpcnQtMTEuQwkocmV2 aXNpb24gMTk2MTc3KQotQEAgLTAsMCArMSw1MCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICov Ci0rLyogeyBkZy1vcHRpb25zICItTzIgLWZkdW1wLWlwYS1pbmxpbmUiIH0gKi8KLStpbnQgYmF6 ICgpOwotK3N0cnVjdCBBCi0rewotKyAgdmlydHVhbCBpbnQgZm4yICgpID0gMDsKLSsgIHZpcnR1 YWwgaW50ICpmbjMgKCk7Ci0rICBkb3VibGUgKmZuNCAoKTsKLSsgIGludCBmbjUgKGludCk7Ci0r ICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSsgIHZvaWQgZm4xIChBICYsIFQpIHsgZm4zICgpOyBmbjQg KCk7IGZuMiAoKTsgfQotK307Ci0rc3RydWN0IEIgOiBBCi0rewotKyAgaW50IGZuMiAoKSB7IHJl dHVybiA2OyB9Ci0rICB2b2lkIGZuMyAoaW50LCBkb3VibGUpOwotKyAgQiAoYm9vbCA9IHRydWUp OwotKyAgQiAoaW50LCBpbnQpOwotK307Ci0rdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0rdm9pZAot K2ZvbyAoQiAmeCwgQSAmeSwgQSAmeikKLSt7Ci0rICB5LmZuMiAoKTsKLSsgIHouZm4yICgpOwot KyAgaW50IGkgPSBiYXogKCk7Ci0rICBpbnQgaiA9ICh5LmZuMyAoKSlbaV07Ci0rICB4LmZuMyAo aiwgKHkuZm40ICgpKVtpXSArICh6LmZuNCAoKSlbei5mbjUgKGopXSk7Ci0rfQotK2lubGluZSBC Ci0rb3BlcmF0b3IrIChBICZ5LCBBICZ6KQotK3sKLSsgIEIgeDsKLSsgIGZvbzxpbnQ+ICh4LCB5 LCB6KTsKLSsgIHJldHVybiB4OwotK30KLSt2b2lkCi0rYmFyICgpCi0rewotKyAgQiBhLCBiLCBj ICg0LCAwKSwgZDsKLSsgIGEuZm4xIChiLCAuNik7Ci0rICBiYXogKCk7Ci0rICBjICsgZDsKLSt9 Ci0rLyogV2hpbGUgaW5saW5pbmcgZnVuY3Rpb24gY2FsbGVkIG9uY2Ugd2Ugc2hvdWxkIGRldmly dHVhbGl6ZSBhIG5ldyBjYWxsIHRvIGZuMgotKyAgIGFuZCB0d28gdG8gZm4zLiBXaGlsZSBkb2lu ZyBzbyB0aGUgbmV3IHN5bWJvbCBmb3IgZm4yIG5lZWRzIHRvIGJlCi0rICAgaW50cm9kdWNlZC4g ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4taXBhLWR1bXAtdGltZXMgIkRpc2NvdmVyZWQgYSB2 aXJ0dWFsIGNhbGwgdG8gYSBrbm93biB0YXJnZXQiIDMgImlubGluZSIgIH0gfSAqLwotKy8qIHsg ZGctZmluYWwgeyBzY2FuLWlwYS1kdW1wLXRpbWVzICJhbmQgdHVybmVkIGludG8gcm9vdCBvZiB0 aGUgY2xvbmUgdHJlZSIgMSAiaW5saW5lIiAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IGNsZWFu dXAtaXBhLWR1bXAgImlubGluZSIgfSB9ICovCgpkaWZmIC0tZ2l0IGEvZ2NjNDgtcHI1NjQwNS5w YXRjaCBiL2djYzQ4LXByNTY0MDUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGQxY2RkYjEuLjAwMDAwMDAKLS0tIGEvZ2NjNDgtcHI1NjQwNS5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDM2ICswLDAgQEAKLTIwMTMtMDItMjAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRo YXQuY29tPgotCi0JUFIgaW5saW5lLWFzbS81NjQwNQotCSogZXhwci5jIChleHBhbmRfZXhwcl9y ZWFsXzEpIDxjYXNlIFRBUkdFVF9NRU1fUkVGLCBNRU1fUkVGPjogRG9uJ3QKLQl1c2UgbW92bWlz YWxpZ24gb3IgZXh0cmFjdF9iaXRfZmllbGQgZm9yIEVYUEFORF9NRU1PUlkgbW9kaWZpZXIuCi0K LQkqIGdjYy5jLXRvcnR1cmUvY29tcGlsZS9wcjU2NDA1LmM6IE5ldyB0ZXN0LgotCi0tLS0gZ2Nj L2V4cHIuYy5qagkyMDEzLTAxLTE4IDE4OjA5OjQwLjAwMDAwMDAwMCArMDEwMAotKysrIGdjYy9l eHByLmMJMjAxMy0wMi0yMCAxMDoyOTozNC41MTMxNDM2MzQgKzAxMDAKLUBAIC05NTUxLDYgKzk1 NTEsNyBAQCBleHBhbmRfZXhwcl9yZWFsXzEgKHRyZWUgZXhwLCBydHggdGFyZ2V0Ci0gCXNldF9t ZW1fYWRkcl9zcGFjZSAodGVtcCwgYXMpOwotIAlhbGlnbiA9IGdldF9vYmplY3RfYWxpZ25tZW50 IChleHApOwotIAlpZiAobW9kaWZpZXIgIT0gRVhQQU5EX1dSSVRFCi0rCSAgICAmJiBtb2RpZmll ciAhPSBFWFBBTkRfTUVNT1JZCi0gCSAgICAmJiBtb2RlICE9IEJMS21vZGUKLSAJICAgICYmIGFs aWduIDwgR0VUX01PREVfQUxJR05NRU5UIChtb2RlKQotIAkgICAgLyogSWYgdGhlIHRhcmdldCBk b2VzIG5vdCBoYXZlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHVuYWxpZ25lZAotQEAgLTk2MzksNiAr OTY0MCw3IEBAIGV4cGFuZF9leHByX3JlYWxfMSAodHJlZSBleHAsIHJ0eCB0YXJnZXQKLSAJaWYg KFRSRUVfVEhJU19WT0xBVElMRSAoZXhwKSkKLSAJICBNRU1fVk9MQVRJTEVfUCAodGVtcCkgPSAx OwotIAlpZiAobW9kaWZpZXIgIT0gRVhQQU5EX1dSSVRFCi0rCSAgICAmJiBtb2RpZmllciAhPSBF WFBBTkRfTUVNT1JZCi0gCSAgICAmJiBtb2RlICE9IEJMS21vZGUKLSAJICAgICYmIGFsaWduIDwg R0VUX01PREVfQUxJR05NRU5UIChtb2RlKSkKLSAJICB7Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2Mu Yy10b3J0dXJlL2NvbXBpbGUvcHI1NjQwNS5jLmpqCTIwMTMtMDItMjAgMTA6MzI6MTcuODA3MjUw OTc5ICswMTAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuYy10b3J0dXJlL2NvbXBpbGUvcHI1NjQw NS5jCTIwMTMtMDItMjAgMTA6MzI6NDYuOTYzMDkwODczICswMTAwCi1AQCAtMCwwICsxLDcgQEAK LSsvKiBQUiBpbmxpbmUtYXNtLzU2NDA1ICovCi0rCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0r ICBhc20gdm9sYXRpbGUgKCIiIDogIittIiAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAw eDEwMDFVTCkpOwotK30KCmRpZmYgLS1naXQgYS9nY2M0OC1wcjU2NDI0LnBhdGNoIGIvZ2NjNDgt cHI1NjQyNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDRhZmY1 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjNDgtcHI1NjQyNC5wYXRjaApAQCAtMCwwICsxLDU3IEBA CisyMDEzLTAzLTA0ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgorCisJ UFIgdHJlZS1vcHRpbWl6YXRpb24vNTY0MjQKKwkqIGlwYS1zcGxpdC5jIChzcGxpdF9mdW5jdGlv bik6IERvIG5vdCBzZXQgdGhlIFJTTyBmbGFnIGlmIHJlc3VsdCBpcworCW5vdCBieSByZWZlcmVu Y2UgYW5kIGl0cyB0eXBlIGlzIG5vdCBhIHJlZ2lzdGVyIHR5cGUuCisKKwkqIGdjYy5kZy9wcjU2 NDI0LmM6IE5ldyB0ZXN0LgorCistLS0gZ2NjL2lwYS1zcGxpdC5jCShyZXZpc2lvbiAxOTYyNTMp CisrKysgZ2NjL2lwYS1zcGxpdC5jCSh3b3JraW5nIGNvcHkpCitAQCAtMTMwOSw3ICsxMzA5LDkg QEAgc3BsaXRfZnVuY3Rpb24gKHN0cnVjdCBzcGxpdF9wb2ludCAqc3BsaQorICAgICAgc28gcmV0 dXJuIHNsb3Qgb3B0aW1pemF0aW9uIGlzIGFsd2F5cyBwb3NzaWJsZS4gIE1vcmVvdmVyIHRoaXMg aXMKKyAgICAgIHJlcXVpcmVkIHRvIG1ha2UgREVDTF9CWV9SRUZFUkVOQ0Ugd29yay4gICovCisg ICBpZiAoYWdncmVnYXRlX3ZhbHVlX3AgKERFQ0xfUkVTVUxUIChjdXJyZW50X2Z1bmN0aW9uX2Rl Y2wpLAorLQkJCSBUUkVFX1RZUEUgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkpKQorKwkJCSBUUkVF X1RZUEUgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkpCisrICAgICAgJiYgKCFpc19naW1wbGVfcmVn X3R5cGUgKFRSRUVfVFlQRSAoREVDTF9SRVNVTFQgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkpKQor KwkgIHx8IERFQ0xfQllfUkVGRVJFTkNFIChERUNMX1JFU1VMVCAoY3VycmVudF9mdW5jdGlvbl9k ZWNsKSkpKQorICAgICBnaW1wbGVfY2FsbF9zZXRfcmV0dXJuX3Nsb3Rfb3B0IChjYWxsLCB0cnVl KTsKKyAKKyAgIC8qIFVwZGF0ZSByZXR1cm4gdmFsdWUuICBUaGlzIGlzIGJpdCB0cmlja3kuICBX aGVuIHdlIGRvIG5vdCByZXR1cm4sCistLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjQyNC5j CTIwMTMtMDItMTMgMjE6NTA6NTcuMTUwNjczMTU4ICswMTAwCisrKysgZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvcHI1NjQyNC5jCTIwMTMtMDMtMDQgMTI6NTk6MjQuMTMzODg4NjgzICswMTAwCitAQCAt MCwwICsxLDMzIEBACisrLyogUFIgdHJlZS1vcHRpbWl6YXRpb24vNTY0MjQgKi8KKysKKysvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZXhjZXB0aW9ucyAt Zm5vbi1jYWxsLWV4Y2VwdGlvbnMiIH0gKi8KKysKKytleHRlcm4gbG9uZyBkb3VibGUgY29zbCAo bG9uZyBkb3VibGUpOworK2V4dGVybiBsb25nIGRvdWJsZSBzaW5sIChsb25nIGRvdWJsZSk7Cisr ZXh0ZXJuIGxvbmcgZG91YmxlIHJlbWwgKGxvbmcgZG91YmxlLCBsb25nIGRvdWJsZSk7CisrCisr bG9uZyBkb3VibGUgbXlfY29zIChsb25nIGRvdWJsZSBhcmcpCisreworKyAgcmV0dXJuIGNvc2wg KGFyZyk7CisrfQorKworK2xvbmcgZG91YmxlIG15X3NpbiAobG9uZyBkb3VibGUgYXJnKQorK3sK KysgIGlmIChfX2J1aWx0aW5fZmFicyAoYXJnKSA8IDEuMCkKKysgICAgcmV0dXJuIGFyZzsKKysK KysgIHJldHVybiBzaW5sIChhcmcpOworK30KKysKKytsb25nIGRvdWJsZSBteV9jb3QgKGxvbmcg ZG91YmxlIGFyZywgbG9uZyBkb3VibGUgY3ljbGUpCisreworKyAgbG9uZyBkb3VibGUgdCA9IHJl bWwgKGFyZywgY3ljbGUpOworKyAgcmV0dXJuIG15X2NvcyAodCkgLyBteV9zaW4gKHQpOworK30K KysKKytsb25nIGRvdWJsZSBteV90YW4gKGxvbmcgZG91YmxlIGFyZywgbG9uZyBkb3VibGUgY3lj bGUpCisreworKyAgbG9uZyBkb3VibGUgdCA9IHJlbWwgKGFyZywgY3ljbGUpOworKyAgcmV0dXJu IG15X3NpbiAodCkgLyBteV9jb3MgKHQpOworK30KCmRpZmYgLS1naXQgYS9nY2M0OC1wcjU2NTA5 LnBhdGNoIGIvZ2NjNDgtcHI1NjUwOS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi43Y2Y2ODM5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjNDgtcHI1NjUwOS5wYXRjaApA QCAtMCwwICsxLDkyIEBACisyMDEzLTAzLTA0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0 LmNvbT4KKworCVBSIGJvb3RzdHJhcC81NjUwOQorCSogb3B0cy5jIChvcHRzX29ic3RhY2ssIG9w dHNfY29uY2F0KTogTW92ZWQgdG8uLi4KKwkqIG9wdHMtY29tbW9uLmMgKG9wdHNfb2JzdGFjaywg b3B0c19jb25jYXQpOiAuLi4gaGVyZS4KKworLS0tIGdjYy9vcHRzLWNvbW1vbi5jLmpqCTIwMTMt MDItMjcgMDg6Mjc6MjYuMDAwMDAwMDAwICswMTAwCisrKysgZ2NjL29wdHMtY29tbW9uLmMJMjAx My0wMy0wNCAxMDowMjo1OC4wMTYwOTY1NDIgKzAxMDAKK0BAIC02OTIsNiArNjkyLDQwIEBAIGRl Y29kZV9jbWRsaW5lX29wdGlvbiAoY29uc3QgY2hhciAqKmFyZ3YKKyAgIHJldHVybiByZXN1bHQ7 CisgfQorIAorKy8qIE9ic3RhY2sgZm9yIG9wdGlvbiBzdHJpbmdzLiAgKi8KKysKKytzdHJ1Y3Qg b2JzdGFjayBvcHRzX29ic3RhY2s7CisrCisrLyogTGlrZSBsaWJpYmVydHkgY29uY2F0LCBidXQg YWxsb2NhdGUgdXNpbmcgb3B0c19vYnN0YWNrLiAgKi8KKysKKytjaGFyICoKKytvcHRzX2NvbmNh dCAoY29uc3QgY2hhciAqZmlyc3QsIC4uLikKKyt7CisrICBjaGFyICpuZXdzdHIsICplbmQ7Cisr ICBzaXplX3QgbGVuZ3RoID0gMDsKKysgIGNvbnN0IGNoYXIgKmFyZzsKKysgIHZhX2xpc3QgYXA7 CisrCisrICAvKiBGaXJzdCBjb21wdXRlIHRoZSBzaXplIG9mIHRoZSByZXN1bHQgYW5kIGdldCBz dWZmaWNpZW50IG1lbW9yeS4gICovCisrICB2YV9zdGFydCAoYXAsIGZpcnN0KTsKKysgIGZvciAo YXJnID0gZmlyc3Q7IGFyZzsgYXJnID0gdmFfYXJnIChhcCwgY29uc3QgY2hhciAqKSkKKysgICAg bGVuZ3RoICs9IHN0cmxlbiAoYXJnKTsKKysgIG5ld3N0ciA9IFhPQk5FV1ZFQyAoJm9wdHNfb2Jz dGFjaywgY2hhciwgbGVuZ3RoICsgMSk7CisrICB2YV9lbmQgKGFwKTsKKysKKysgIC8qIE5vdyBj b3B5IHRoZSBpbmRpdmlkdWFsIHBpZWNlcyB0byB0aGUgcmVzdWx0IHN0cmluZy4gKi8KKysgIHZh X3N0YXJ0IChhcCwgZmlyc3QpOworKyAgZm9yIChhcmcgPSBmaXJzdCwgZW5kID0gbmV3c3RyOyBh cmc7IGFyZyA9IHZhX2FyZyAoYXAsIGNvbnN0IGNoYXIgKikpCisrICAgIHsKKysgICAgICBsZW5n dGggPSBzdHJsZW4gKGFyZyk7CisrICAgICAgbWVtY3B5IChlbmQsIGFyZywgbGVuZ3RoKTsKKysg ICAgICBlbmQgKz0gbGVuZ3RoOworKyAgICB9CisrICAqZW5kID0gJ1wwJzsKKysgIHZhX2VuZCAo YXApOworKyAgcmV0dXJuIG5ld3N0cjsKKyt9CisrCisgLyogRGVjb2RlIGNvbW1hbmQtbGluZSBv cHRpb25zIChBUkdDIGFuZCBBUkdWIGJlaW5nIHRoZSBhcmd1bWVudHMgb2YKKyAgICBtYWluKSBp bnRvIGFuIGFycmF5LCBzZXR0aW5nICpERUNPREVEX09QVElPTlMgdG8gYSBwb2ludGVyIHRvIHRo YXQKKyAgICBhcnJheSBhbmQgKkRFQ09ERURfT1BUSU9OU19DT1VOVCB0byB0aGUgbnVtYmVyIG9m IGVudHJpZXMgaW4gdGhlCistLS0gZ2NjL29wdHMuYy5qagkyMDEzLTAyLTI3IDA4OjI3OjI2LjAw MDAwMDAwMCArMDEwMAorKysrIGdjYy9vcHRzLmMJMjAxMy0wMy0wNCAxMDowMjoxNi40MDEzNDY5 OTIgKzAxMDAKK0BAIC0yNjgsNDAgKzI2OCw2IEBAIGFkZF9jb21tYV9zZXBhcmF0ZWRfdG9fdmVj dG9yICh2b2lkICoqcHYKKyAgICpwdmVjID0gdjsKKyB9CisgCistLyogTGlrZSBsaWJpYmVydHkg Y29uY2F0LCBidXQgYWxsb2NhdGUgdXNpbmcgb3B0c19vYnN0YWNrLiAgKi8KKy0KKy1jaGFyICoK Ky1vcHRzX2NvbmNhdCAoY29uc3QgY2hhciAqZmlyc3QsIC4uLikKKy17CistICBjaGFyICpuZXdz dHIsICplbmQ7CistICBzaXplX3QgbGVuZ3RoID0gMDsKKy0gIGNvbnN0IGNoYXIgKmFyZzsKKy0g IHZhX2xpc3QgYXA7CistCistICAvKiBGaXJzdCBjb21wdXRlIHRoZSBzaXplIG9mIHRoZSByZXN1 bHQgYW5kIGdldCBzdWZmaWNpZW50IG1lbW9yeS4gICovCistICB2YV9zdGFydCAoYXAsIGZpcnN0 KTsKKy0gIGZvciAoYXJnID0gZmlyc3Q7IGFyZzsgYXJnID0gdmFfYXJnIChhcCwgY29uc3QgY2hh ciAqKSkKKy0gICAgbGVuZ3RoICs9IHN0cmxlbiAoYXJnKTsKKy0gIG5ld3N0ciA9IFhPQk5FV1ZF QyAoJm9wdHNfb2JzdGFjaywgY2hhciwgbGVuZ3RoICsgMSk7CistICB2YV9lbmQgKGFwKTsKKy0K Ky0gIC8qIE5vdyBjb3B5IHRoZSBpbmRpdmlkdWFsIHBpZWNlcyB0byB0aGUgcmVzdWx0IHN0cmlu Zy4gKi8KKy0gIHZhX3N0YXJ0IChhcCwgZmlyc3QpOworLSAgZm9yIChhcmcgPSBmaXJzdCwgZW5k ID0gbmV3c3RyOyBhcmc7IGFyZyA9IHZhX2FyZyAoYXAsIGNvbnN0IGNoYXIgKikpCistICAgIHsK Ky0gICAgICBsZW5ndGggPSBzdHJsZW4gKGFyZyk7CistICAgICAgbWVtY3B5IChlbmQsIGFyZywg bGVuZ3RoKTsKKy0gICAgICBlbmQgKz0gbGVuZ3RoOworLSAgICB9CistICAqZW5kID0gJ1wwJzsK Ky0gIHZhX2VuZCAoYXApOworLSAgcmV0dXJuIG5ld3N0cjsKKy19CistCistLyogT2JzdGFjayBm b3Igb3B0aW9uIHN0cmluZ3MuICAqLworLQorLXN0cnVjdCBvYnN0YWNrIG9wdHNfb2JzdGFjazsK Ky0KKyAvKiBJbml0aWFsaXplIE9QVFMgYW5kIE9QVFNfU0VUIGJlZm9yZSB1c2luZyB0aGVtIGlu IHBhcnNpbmcgb3B0aW9ucy4gICovCisgCisgdm9pZAoKZGlmZiAtLWdpdCBhL2djYzQ4LXVudXNl ZC1sb2NhbHMucGF0Y2ggYi9nY2M0OC11bnVzZWQtbG9jYWxzLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBkZmYxNmRlLi4wMDAwMDAwCi0tLSBhL2djYzQ4LXVudXNlZC1sb2Nh bHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOTcgKzAsMCBAQAotMjAxMy0wMi0yMCAgUmlj aGFyZCBCaWVuZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KLQotCSogdHJlZS1jYWxsLWNkY2UuYyAo dHJlZV9jYWxsX2NkY2UpOiBEbyBub3QgcmVtb3ZlIHVudXNlZCBsb2NhbHMuCi0JKiB0cmVlLXNz YS1mb3J3cHJvcC5jIChzc2FfZm9yd2FyZF9wcm9wYWdhdGVfYW5kX2NvbWJpbmUpOiBMaWtld2lz ZS4KLQkqIHRyZWUtc3NhLWRjZS5jIChwZXJmb3JtX3RyZWVfc3NhX2RjZSk6IExpa2V3aXNlLgot CSogdHJlZS1zc2EtY29weXJlbmFtZS5jIChjb3B5X3JlbmFtZV9wYXJ0aXRpb25fY29hbGVzY2Up OiBEbwotCW5vdCByZXR1cm4gYW55dGhpbmcuCi0JKHJlbmFtZV9zc2FfY29waWVzKTogRG8gbm90 IHJlbW92ZSB1bnVzZWQgbG9jYWxzLgotCSogdHJlZS1zc2EtY2NwLmMgKGRvX3NzYV9jY3ApOiBM aWtld2lzZS4KLQkqIHRyZWUtc3NhbmFtZXMuYyAocGFzc19yZWxlYXNlX3NzYV9uYW1lcyk6IFJl bW92ZSB1bnVzZWQKLQlsb2NhbHMgZmlyc3QuCi0JKiBwYXNzZXMuYyAoZXhlY3V0ZV9mdW5jdGlv bl90b2RvKTogRG8gbm90IHNjaGVkdWxlIHVudXNlZCBsb2NhbHMKLQlyZW1vdmFsIGlmIGNsZWFu dXBfdHJlZV9jZmcgZGlkIHNvbWV0aGluZy4KLQkqIHRyZWUtc3NhLWxpdmUuYyAocmVtb3ZlX3Vu dXNlZF9sb2NhbHMpOiBEdW1wIHN0YXRpc3RpY3MKLQlhYm91dCB0aGUgbnVtYmVyIG9mIHJlbW92 ZWQgbG9jYWxzLgotCi0JKiBnY2MuZGcvdHJlZS1zc2EvZm9yd3Byb3AtOC5jOiBBZGp1c3QuCi0K LS0tLSBnY2MvdHJlZS1zc2EtY29weXJlbmFtZS5jCShyZXZpc2lvbiAxOTYxNzMpCi0rKysgZ2Nj L3RyZWUtc3NhLWNvcHlyZW5hbWUuYwkocmV2aXNpb24gMTk2MTc0KQotQEAgLTExMyw3ICsxMTMs NyBAQCBzdGF0aWMgc3RydWN0Ci0gLyogQ29hbGVzY2UgdGhlIHBhcnRpdGlvbnMgaW4gTUFQIHJl cHJlc2VudGluZyBWQVIxIGFuZCBWQVIyIGlmIGl0IGlzIHZhbGlkLgotICAgIENob29zZSBhIHJl cHJlc2VudGF0aXZlIGZvciB0aGUgcGFydGl0aW9uLCBhbmQgc2VuZCBkZWJ1ZyBpbmZvIHRvIERF QlVHLiAgKi8KLSAKLS1zdGF0aWMgYm9vbAotK3N0YXRpYyB2b2lkCi0gY29weV9yZW5hbWVfcGFy dGl0aW9uX2NvYWxlc2NlICh2YXJfbWFwIG1hcCwgdHJlZSB2YXIxLCB0cmVlIHZhcjIsIEZJTEUg KmRlYnVnKQotIHsKLSAgIGludCBwMSwgcDIsIHAzOwotQEAgLTE0Niw3ICsxNDYsNyBAQCBjb3B5 X3JlbmFtZV9wYXJ0aXRpb25fY29hbGVzY2UgKHZhcl9tYXAKLSAgICAgewotICAgICAgIGlmIChk ZWJ1ZykKLSAJZnByaW50ZiAoZGVidWcsICIgOiBBbHJlYWR5IGNvYWxlc2NlZC5cbiIpOwotLSAg ICAgIHJldHVybiBmYWxzZTsKLSsgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLSAgIHJlcDEgPSBw YXJ0aXRpb25fdG9fdmFyIChtYXAsIHAxKTsKLUBAIC0xNTQsNyArMTU0LDcgQEAgY29weV9yZW5h bWVfcGFydGl0aW9uX2NvYWxlc2NlICh2YXJfbWFwCi0gICByb290MSA9IFNTQV9OQU1FX1ZBUiAo cmVwMSk7Ci0gICByb290MiA9IFNTQV9OQU1FX1ZBUiAocmVwMik7Ci0gICBpZiAoIXJvb3QxICYm ICFyb290MikKLS0gICAgcmV0dXJuIGZhbHNlOwotKyAgICByZXR1cm47Ci0gCi0gICAvKiBEb24n dCBjb2FsZXNjZSBpZiBvbmUgb2YgdGhlIHZhcmlhYmxlcyBvY2N1cnMgaW4gYW4gYWJub3JtYWwg UEhJLiAgKi8KLSAgIGFibm9ybSA9IChTU0FfTkFNRV9PQ0NVUlNfSU5fQUJOT1JNQUxfUEhJIChy ZXAxKQotQEAgLTE2Myw3ICsxNjMsNyBAQCBjb3B5X3JlbmFtZV9wYXJ0aXRpb25fY29hbGVzY2Ug KHZhcl9tYXAKLSAgICAgewotICAgICAgIGlmIChkZWJ1ZykKLSAJZnByaW50ZiAoZGVidWcsICIg OiBBYm5vcm1hbCBQSEkgYmFycmllci4gIE5vIGNvYWxlc2NlLlxuIik7Ci0tICAgICAgcmV0dXJu IGZhbHNlOwotKyAgICAgIHJldHVybjsKLSAgICAgfQotIAotICAgLyogUGFydGl0aW9ucyBhbHJl YWR5IGhhdmUgdGhlIHNhbWUgcm9vdCwgc2ltcGx5IG1lcmdlIHRoZW0uICAqLwotQEAgLTE3Miw3 ICsxNzIsNyBAQCBjb3B5X3JlbmFtZV9wYXJ0aXRpb25fY29hbGVzY2UgKHZhcl9tYXAKLSAgICAg ICBwMSA9IHBhcnRpdGlvbl91bmlvbiAobWFwLT52YXJfcGFydGl0aW9uLCBwMSwgcDIpOwotICAg ICAgIGlmIChkZWJ1ZykKLSAJZnByaW50ZiAoZGVidWcsICIgOiBTYW1lIHJvb3QsIGNvYWxlc2Nl ZCAtLT4gUCVkLlxuIiwgcDEpOwotLSAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgICByZXR1cm47 Ci0gICAgIH0KLSAKLSAgIC8qIE5ldmVyIGF0dGVtcHQgdG8gY29hbGVzY2UgMiBkaWZmZXJlbnQg cGFyYW1ldGVycy4gICovCi1AQCAtMTgxLDcgKzE4MSw3IEBAIGNvcHlfcmVuYW1lX3BhcnRpdGlv bl9jb2FsZXNjZSAodmFyX21hcAotICAgICB7Ci0gICAgICAgaWYgKGRlYnVnKQotICAgICAgICAg ZnByaW50ZiAoZGVidWcsICIgOiAyIGRpZmZlcmVudCBQQVJNX0RFQ0xTLiBObyBjb2FsZXNjZS5c biIpOwotLSAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLSAg IGlmICgocm9vdDEgJiYgVFJFRV9DT0RFIChyb290MSkgPT0gUkVTVUxUX0RFQ0wpCi1AQCAtMTg5 LDcgKzE4OSw3IEBAIGNvcHlfcmVuYW1lX3BhcnRpdGlvbl9jb2FsZXNjZSAodmFyX21hcAotICAg ICB7Ci0gICAgICAgaWYgKGRlYnVnKQotICAgICAgICAgZnByaW50ZiAoZGVidWcsICIgOiBPbmUg cm9vdCBhIFJFU1VMVF9ERUNMLiBObyBjb2FsZXNjZS5cbiIpOwotLSAgICAgIHJldHVybiBmYWxz ZTsKLSsgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLSAgIGlnbjEgPSAhcm9vdDEgfHwgKFRSRUVf Q09ERSAocm9vdDEpID09IFZBUl9ERUNMICYmIERFQ0xfSUdOT1JFRF9QIChyb290MSkpOwotQEAg LTIwNiw3ICsyMDYsNyBAQCBjb3B5X3JlbmFtZV9wYXJ0aXRpb25fY29hbGVzY2UgKHZhcl9tYXAK LSAJewotIAkgIGlmIChkZWJ1ZykKLSAJICAgIGZwcmludGYgKGRlYnVnLCAiIDogMiBkaWZmZXJl bnQgVVNFUiB2YXJzLiBObyBjb2FsZXNjZS5cbiIpOwotLQkgIHJldHVybiBmYWxzZTsKLSsJICBy ZXR1cm47Ci0gCX0KLSAgICAgICBlbHNlCi0gCWlnbjIgPSB0cnVlOwotQEAgLTIyMCw3ICsyMjAs NyBAQCBjb3B5X3JlbmFtZV9wYXJ0aXRpb25fY29hbGVzY2UgKHZhcl9tYXAKLSAJewotIAkgIGlm IChkZWJ1ZykKLSAJICAgIGZwcmludGYgKGRlYnVnLCAiIDogMiBkZWZhdWx0IGRlZnMuIE5vIGNv YWxlc2NlLlxuIik7Ci0tCSAgcmV0dXJuIGZhbHNlOwotKwkgIHJldHVybjsKLSAJfQotICAgICAg IGVsc2UKLSAgICAgICAgIHsKLUBAIC0yNDAsNyArMjQwLDcgQEAgY29weV9yZW5hbWVfcGFydGl0 aW9uX2NvYWxlc2NlICh2YXJfbWFwCi0gICAgIHsKLSAgICAgICBpZiAoZGVidWcpCi0gCWZwcmlu dGYgKGRlYnVnLCAiIDogQ2hvb3NlbiB2YXJpYWJsZSBoYXMgbm8gcm9vdC4gIE5vIGNvYWxlc2Nl LlxuIik7Ci0tICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICAgIHJldHVybjsKLSAgICAgfQotIAot ICAgLyogRG9uJ3QgY29hbGVzY2UgaWYgdGhlIG5ldyBjaG9zZW4gcm9vdCB2YXJpYWJsZSB3b3Vs ZCBiZSByZWFkLW9ubHkuCi1AQCAtMjUzLDcgKzI1Myw3IEBAIGNvcHlfcmVuYW1lX3BhcnRpdGlv bl9jb2FsZXNjZSAodmFyX21hcAotICAgICB7Ci0gICAgICAgaWYgKGRlYnVnKQotIAlmcHJpbnRm IChkZWJ1ZywgIiA6IFJlYWRvbmx5IHZhcmlhYmxlLiAgTm8gY29hbGVzY2UuXG4iKTsKLS0gICAg ICByZXR1cm4gZmFsc2U7Ci0rICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0gICAvKiBEb24ndCBj b2FsZXNjZSBpZiB0aGUgdHdvIHZhcmlhYmxlcyBhcmVuJ3QgdHlwZSBjb21wYXRpYmxlIC4gICov Ci1AQCAtMjY2LDcgKzI2Niw3IEBAIGNvcHlfcmVuYW1lX3BhcnRpdGlvbl9jb2FsZXNjZSAodmFy X21hcAotICAgICB7Ci0gICAgICAgaWYgKGRlYnVnKQotIAlmcHJpbnRmIChkZWJ1ZywgIiA6IElu Y29tcGF0aWJsZSB0eXBlcy4gIE5vIGNvYWxlc2NlLlxuIik7Ci0tICAgICAgcmV0dXJuIGZhbHNl OwotKyAgICAgIHJldHVybjsKLSAgICAgfQotIAotICAgLyogTWVyZ2UgdGhlIHR3byBwYXJ0aXRp b25zLiAgKi8KLUBAIC0yODgsNyArMjg4LDYgQEAgY29weV9yZW5hbWVfcGFydGl0aW9uX2NvYWxl c2NlICh2YXJfbWFwCi0gCQkJICBUREZfU0xJTSk7Ci0gICAgICAgZnByaW50ZiAoZGVidWcsICJc biIpOwotICAgICB9Ci0tICByZXR1cm4gdHJ1ZTsKLSB9Ci0gCi0gCi1AQCAtMzA4LDcgKzMwNyw2 IEBAIHJlbmFtZV9zc2FfY29waWVzICh2b2lkKQotICAgZ2ltcGxlIHN0bXQsIHBoaTsKLSAgIHVu c2lnbmVkIHg7Ci0gICBGSUxFICpkZWJ1ZzsKLS0gIGJvb2wgdXBkYXRlZCA9IGZhbHNlOwotIAot ICAgbWVtc2V0ICgmc3RhdHMsIDAsIHNpemVvZiAoc3RhdHMpKTsKLSAKLUBAIC0zMzAsNyArMzI4 LDcgQEAgcmVuYW1lX3NzYV9jb3BpZXMgKHZvaWQpCi0gCSAgICAgIHRyZWUgbGhzID0gZ2ltcGxl X2Fzc2lnbl9saHMgKHN0bXQpOwotIAkgICAgICB0cmVlIHJocyA9IGdpbXBsZV9hc3NpZ25fcmhz MSAoc3RtdCk7Ci0gCi0tCSAgICAgIHVwZGF0ZWQgfD0gY29weV9yZW5hbWVfcGFydGl0aW9uX2Nv YWxlc2NlIChtYXAsIGxocywgcmhzLCBkZWJ1Zyk7Ci0rCSAgICAgIGNvcHlfcmVuYW1lX3BhcnRp dGlvbl9jb2FsZXNjZSAobWFwLCBsaHMsIHJocywgZGVidWcpOwotIAkgICAgfQotIAl9Ci0gICAg IH0KLUBAIC0zNTgsOCArMzU2LDggQEAgcmVuYW1lX3NzYV9jb3BpZXMgKHZvaWQpCi0gCSAgICAg IHsKLSAJCXRyZWUgYXJnID0gUEhJX0FSR19ERUYgKHBoaSwgaSk7Ci0gCQlpZiAoVFJFRV9DT0RF IChhcmcpID09IFNTQV9OQU1FKQotLQkJICB1cGRhdGVkIHw9IGNvcHlfcmVuYW1lX3BhcnRpdGlv bl9jb2FsZXNjZSAobWFwLCByZXMsIGFyZywKLS0JCQkJCQkJICAgICBkZWJ1Zyk7Ci0rCQkgIGNv cHlfcmVuYW1lX3BhcnRpdGlvbl9jb2FsZXNjZSAobWFwLCByZXMsIGFyZywKLSsJCQkJCQkgIGRl YnVnKTsKLSAJICAgICAgfQotIAkgIC8qIEVsc2UgaWYgYWxsIGFyZ3VtZW50cyBhcmUgaW4gdGhl IHNhbWUgcGFydGl0aW9uIHRyeSB0byBtZXJnZQotIAkgICAgIGl0IHdpdGggdGhlIHJlc3VsdC4g ICovCi1AQCAtMzkwLDkgKzM4OCw5IEBAIHJlbmFtZV9zc2FfY29waWVzICh2b2lkKQotIAkJICAg IH0KLSAJCX0KLSAJICAgICAgaWYgKGFsbF9wX3NhbWUgPT0gMSkKLS0JCXVwZGF0ZWQgfD0gY29w eV9yZW5hbWVfcGFydGl0aW9uX2NvYWxlc2NlIChtYXAsIHJlcywKLS0JCQkJCQkJICAgUEhJX0FS R19ERUYgKHBoaSwgMCksCi0tCQkJCQkJCSAgIGRlYnVnKTsKLSsJCWNvcHlfcmVuYW1lX3BhcnRp dGlvbl9jb2FsZXNjZSAobWFwLCByZXMsCi0rCQkJCQkJUEhJX0FSR19ERUYgKHBoaSwgMCksCi0r CQkJCQkJZGVidWcpOwotIAkgICAgfQotICAgICAgICAgfQotICAgICB9Ci1AQCAtNDI2LDcgKzQy NCw3IEBAIHJlbmFtZV9zc2FfY29waWVzICh2b2lkKQotICAgc3RhdGlzdGljc19jb3VudGVyX2V2 ZW50IChjZnVuLCAiY29waWVzIGNvYWxlc2NlZCIsCi0gCQkJICAgIHN0YXRzLmNvYWxlc2NlZCk7 Ci0gICBkZWxldGVfdmFyX21hcCAobWFwKTsKLS0gIHJldHVybiB1cGRhdGVkID8gVE9ET19yZW1v dmVfdW51c2VkX2xvY2FscyA6IDA7Ci0rICByZXR1cm4gMDsKLSB9Ci0gCi0gLyogUmV0dXJuIHRy dWUgaWYgY29weSByZW5hbWUgaXMgdG8gYmUgcGVyZm9ybWVkLiAgKi8KLS0tLSBnY2MvdHJlZS1z c2EtY2NwLmMJKHJldmlzaW9uIDE5NjE3MykKLSsrKyBnY2MvdHJlZS1zc2EtY2NwLmMJKHJldmlz aW9uIDE5NjE3NCkKLUBAIC0yMTA4LDcgKzIxMDgsNyBAQCBkb19zc2FfY2NwICh2b2lkKQotICAg Y2NwX2luaXRpYWxpemUgKCk7Ci0gICBzc2FfcHJvcGFnYXRlIChjY3BfdmlzaXRfc3RtdCwgY2Nw X3Zpc2l0X3BoaV9ub2RlKTsKLSAgIGlmIChjY3BfZmluYWxpemUgKCkpCi0tICAgIHRvZG8gPSAo VE9ET19jbGVhbnVwX2NmZyB8IFRPRE9fdXBkYXRlX3NzYSB8IFRPRE9fcmVtb3ZlX3VudXNlZF9s b2NhbHMpOwotKyAgICB0b2RvID0gKFRPRE9fY2xlYW51cF9jZmcgfCBUT0RPX3VwZGF0ZV9zc2Ep OwotICAgZnJlZV9kb21pbmFuY2VfaW5mbyAoQ0RJX0RPTUlOQVRPUlMpOwotICAgcmV0dXJuIHRv ZG87Ci0gfQotLS0tIGdjYy90cmVlLWNhbGwtY2RjZS5jCShyZXZpc2lvbiAxOTYxNzMpCi0rKysg Z2NjL3RyZWUtY2FsbC1jZGNlLmMJKHJldmlzaW9uIDE5NjE3NCkKLUBAIC04OTgsMTEgKzg5OCwx MCBAQCB0cmVlX2NhbGxfY2RjZSAodm9pZCkKLSAgICAgICAvKiBBcyB3ZSBpbnRyb2R1Y2VkIG5l dyBjb250cm9sLWZsb3cgd2UgbmVlZCB0byBpbnNlcnQgUEhJLW5vZGVzCi0gICAgICAgICAgZm9y IHRoZSBjYWxsLWNsb2JiZXJzIG9mIHRoZSByZW1haW5pbmcgY2FsbC4gICovCi0gICAgICAgbWFy a192aXJ0dWFsX29wZXJhbmRzX2Zvcl9yZW5hbWluZyAoY2Z1bik7Ci0tICAgICAgcmV0dXJuIChU T0RPX3VwZGF0ZV9zc2EgfCBUT0RPX2NsZWFudXBfY2ZnIHwgVE9ET19nZ2NfY29sbGVjdAotLSAg ICAgICAgICAgICAgfCBUT0RPX3JlbW92ZV91bnVzZWRfbG9jYWxzKTsKLSsgICAgICByZXR1cm4g VE9ET191cGRhdGVfc3NhOwotICAgICB9Ci0tICBlbHNlCi0tICAgIHJldHVybiAwOwotKwotKyAg cmV0dXJuIDA7Ci0gfQotIAotIHN0YXRpYyBib29sCi0tLS0gZ2NjL3RyZWUtc3NhLWxpdmUuYwko cmV2aXNpb24gMTk2MTczKQotKysrIGdjYy90cmVlLXNzYS1saXZlLmMJKHJldmlzaW9uIDE5NjE3 NCkKLUBAIC04ODksNyArODg5LDEwIEBAIHJlbW92ZV91bnVzZWRfbG9jYWxzICh2b2lkKQotICAg ICAgIGRzdGlkeCsrOwotICAgICB9Ci0gICBpZiAoZHN0aWR4ICE9IG51bSkKLS0gICAgY2Z1bi0+ bG9jYWxfZGVjbHMtPnRydW5jYXRlIChkc3RpZHgpOwotKyAgICB7Ci0rICAgICAgc3RhdGlzdGlj c19jb3VudGVyX2V2ZW50IChjZnVuLCAidW51c2VkIFZBUl9ERUNMcyByZW1vdmVkIiwgbnVtIC0g ZHN0aWR4KTsKLSsgICAgICBjZnVuLT5sb2NhbF9kZWNscy0+dHJ1bmNhdGUgKGRzdGlkeCk7Ci0r ICAgIH0KLSAKLSAgIHJlbW92ZV91bnVzZWRfc2NvcGVfYmxvY2tfcCAoREVDTF9JTklUSUFMIChj dXJyZW50X2Z1bmN0aW9uX2RlY2wpKTsKLSAgIGNsZWFyX3VudXNlZF9ibG9ja19wb2ludGVyICgp OwotLS0tIGdjYy90cmVlLXNzYS1mb3J3cHJvcC5jCShyZXZpc2lvbiAxOTYxNzMpCi0rKysgZ2Nj L3RyZWUtc3NhLWZvcndwcm9wLmMJKHJldmlzaW9uIDE5NjE3NCkKLUBAIC0yOTM2LDcgKzI5MzYs NiBAQCBzc2FfZm9yd2FyZF9wcm9wYWdhdGVfYW5kX2NvbWJpbmUgKHZvaWQpCi0gCQkgICYmIGZv cndhcmRfcHJvcGFnYXRlX2FkZHJfZXhwciAobGhzLCByaHMpKQotIAkJewotIAkJICByZWxlYXNl X2RlZnMgKHN0bXQpOwotLQkJICB0b2RvZmxhZ3MgfD0gVE9ET19yZW1vdmVfdW51c2VkX2xvY2Fs czsKLSAJCSAgZ3NpX3JlbW92ZSAoJmdzaSwgdHJ1ZSk7Ci0gCQl9Ci0gCSAgICAgIGVsc2UKLUBA IC0yOTYxLDcgKzI5NjAsNiBAQCBzc2FfZm9yd2FyZF9wcm9wYWdhdGVfYW5kX2NvbWJpbmUgKHZv aWQpCi0gCQkJCQkJCSAgICAgICBvZmYpKSkpKQotIAkJewotIAkJICByZWxlYXNlX2RlZnMgKHN0 bXQpOwotLQkJICB0b2RvZmxhZ3MgfD0gVE9ET19yZW1vdmVfdW51c2VkX2xvY2FsczsKLSAJCSAg Z3NpX3JlbW92ZSAoJmdzaSwgdHJ1ZSk7Ci0gCQl9Ci0gCSAgICAgIGVsc2UgaWYgKGlzX2dpbXBs ZV9taW5faW52YXJpYW50IChyaHMpKQotLS0tIGdjYy90cmVlLXNzYS1kY2UuYwkocmV2aXNpb24g MTk2MTczKQotKysrIGdjYy90cmVlLXNzYS1kY2UuYwkocmV2aXNpb24gMTk2MTc0KQotQEAgLTE2 MDcsMTAgKzE2MDcsOCBAQCBwZXJmb3JtX3RyZWVfc3NhX2RjZSAoYm9vbCBhZ2dyZXNzaXZlKQot ICAgZnJlZV9lZGdlX2xpc3QgKGVsKTsKLSAKLSAgIGlmIChzb21ldGhpbmdfY2hhbmdlZCkKLS0g ICAgcmV0dXJuIChUT0RPX3VwZGF0ZV9zc2EgfCBUT0RPX2NsZWFudXBfY2ZnIHwgVE9ET19nZ2Nf Y29sbGVjdAotLQkgICAgfCBUT0RPX3JlbW92ZV91bnVzZWRfbG9jYWxzKTsKLS0gIGVsc2UKLS0g ICAgcmV0dXJuIDA7Ci0rICAgIHJldHVybiBUT0RPX3VwZGF0ZV9zc2EgfCBUT0RPX2NsZWFudXBf Y2ZnOwotKyAgcmV0dXJuIDA7Ci0gfQotIAotIC8qIFBhc3MgZW50cnkgcG9pbnRzLiAgKi8KLS0t LSBnY2MvcGFzc2VzLmMJKHJldmlzaW9uIDE5NjE3MykKLSsrKyBnY2MvcGFzc2VzLmMJKHJldmlz aW9uIDE5NjE3NCkKLUBAIC0xOTE4LDEwICsxOTE4LDcgQEAgZXhlY3V0ZV9mdW5jdGlvbl90b2Rv ICh2b2lkICpkYXRhKQotICAgLyogQWx3YXlzIGNsZWFudXAgdGhlIENGRyBiZWZvcmUgdHJ5aW5n IHRvIHVwZGF0ZSBTU0EuICAqLwotICAgaWYgKGZsYWdzICYgVE9ET19jbGVhbnVwX2NmZykKLSAg ICAgewotLSAgICAgIGJvb2wgY2xlYW51cCA9IGNsZWFudXBfdHJlZV9jZmcgKCk7Ci0tCi0tICAg ICAgaWYgKGNsZWFudXAgJiYgKGNmdW4tPmN1cnJfcHJvcGVydGllcyAmIFBST1Bfc3NhKSkKLS0J ZmxhZ3MgfD0gVE9ET19yZW1vdmVfdW51c2VkX2xvY2FsczsKLSsgICAgICBjbGVhbnVwX3RyZWVf Y2ZnICgpOwotIAotICAgICAgIC8qIFdoZW4gY2xlYW51cF90cmVlX2NmZyBtZXJnZXMgY29uc2Vj dXRpdmUgYmxvY2tzLCBpdCBtYXkKLSAJIHBlcmZvcm0gc29tZSBzaW1wbGlzdGljIHByb3BhZ2F0 aW9uIHdoZW4gcmVtb3Zpbmcgc2luZ2xlCi0tLS0gZ2NjL3RyZWUtc3NhbmFtZXMuYwkocmV2aXNp b24gMTk2MTczKQotKysrIGdjYy90cmVlLXNzYW5hbWVzLmMJKHJldmlzaW9uIDE5NjE3NCkKLUBA IC00NTUsNyArNDU1LDcgQEAgc3RydWN0IGdpbXBsZV9vcHRfcGFzcyBwYXNzX3JlbGVhc2Vfc3Nh XwotICAgUFJPUF9zc2EsCQkJCS8qIHByb3BlcnRpZXNfcmVxdWlyZWQgKi8KLSAgIDAsCQkJCQkv KiBwcm9wZXJ0aWVzX3Byb3ZpZGVkICovCi0gICAwLAkJCQkJLyogcHJvcGVydGllc19kZXN0cm95 ZWQgKi8KLS0gIDAsCQkJCQkvKiB0b2RvX2ZsYWdzX3N0YXJ0ICovCi0tICAwICAgICAgICAgICAg ICAJCQkvKiB0b2RvX2ZsYWdzX2ZpbmlzaCAqLwotKyAgVE9ET19yZW1vdmVfdW51c2VkX2xvY2Fs cywJCS8qIHRvZG9fZmxhZ3Nfc3RhcnQgKi8KLSsgIDAJCQkJCS8qIHRvZG9fZmxhZ3NfZmluaXNo ICovCi0gIH0KLSB9OwotLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL2Zvcndwcm9w LTguYwkocmV2aXNpb24gMTk2MTczKQotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3Nh L2Zvcndwcm9wLTguYwkocmV2aXNpb24gMTk2MTc0KQotQEAgLTExLDYgKzExLDUgQEAgaW50IGZv byhzdHJ1Y3QgWCAqcSkKLSAKLSAKLSAvKiBXZSBzaG91bGQgaGF2ZSBwcm9wcmFnYXRlZCAmcS0+ YSBpbnRvICgqcG9pbnRlcikuICAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10 aW1lcyAicG9pbnRlciIgMCAiZm9yd3Byb3AxIn0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiXFxcWzBcXFxdIiAiZm9yd3Byb3AxIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAgInFfLlxcXChEXFxcKVxcXF1cXFxbMFxcXF07IiAiZm9yd3Byb3Ax IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgY2xlYW51cC10cmVlLWR1bXAgImZvcndwcm9wMSIg fSB9ICovCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggNzMyMjVlZi4uZGM2 NDQxOCAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xLDQgKzEsNCBAQAog YmU3OGE0N2JkODI1MjMyNTBlYjNlOTE2NDZkYjViM2QgIGNsb29nLTAuMTguMC50YXIuZ3oKIDI2 NTlmMDljMmU0M2VmOGI3ZDQ0MDYzMjE3NTNmMWIyICBmYXN0amFyLTAuOTcudGFyLmd6Ci1kMTg2 MzA1MDk0NjA5MzRkZmQ3MTYzYTg4NGI2M2VjZCAgZ2NjLTQuOC4wLTIwMTMwMjIwLnRhci5iejIK IGJjZTE1ODYzODRkODYzNWE3NmQyZjAxN2ZiMDY3Y2QyICBpc2wtMC4xMS4xLnRhci5iejIKKzRm ODk0MDk1NThiYmEwODU2ZmJkMjY3NzhmZDQ5ODQxICBnY2MtNC44LjAtMjAxMzAzMDQudGFyLmJ6 Mgo=