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: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Bundle readline-6.2 with a workaround of skipped "ask" (BZ 701131). Date: Sat, 27 Jun 2026 23:55:08 GMT Message-ID: <178260450894.1.5881721208113752451.rpms-gdb-7180591ac5d1@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 7180591ac5d19b95b0a424feb56d7fd41c231966 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogNzE4MDU5MWFjNWQxOWI5NWIwYTQyNGZlYjU2ZDdmZDQxYzIz MTk2NgogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMS0wNS0wMlQxNjoxNzo1MCswMjow MAogICAgICAgICAgICBTdGF0cyAgOiArMjEzMTAvLTQ0NyBpbiA2IGZpbGUocykKICAgICAgICAg ICAgVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nZGIvYy83MTgw NTkxYWM1ZDE5Yjk1YjBhNDI0ZmViNTZkN2ZkNDFjMjMxOTY2P2JyYW5jaD1nZGItMTcuMi1yZWJh c2UtZjQ0CgogICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIEJ1bmRsZSByZWFkbGluZS02LjIg d2l0aCBhIHdvcmthcm91bmQgb2Ygc2tpcHBlZCAiYXNrIiAoQlogNzAxMTMxKS4KVXNlIC0td2l0 aG91dC1zeXN0ZW0tcmVhZGxpbmUsIGRpc2FibGUgUmVxdWlyZXMgYW5kIEJ1aWxkUmVxdWlyZXMg b2YgcmVhZGxpbmUuCkRyb3AgZ2RiLTYuNS1yZWFkbGluZS1sb25nLWxpbmUtY3Jhc2gucGF0Y2gg YW5kIGdkYi1yZWFkbGluZS02LjAtc2lnbmFsLnBhdGNoLgoKLS0tCmRpZmYgLS1naXQgYS9nZGIt Ni41LXJlYWRsaW5lLWxvbmctbGluZS1jcmFzaC5wYXRjaCBiL2dkYi02LjUtcmVhZGxpbmUtbG9u Zy1saW5lLWNyYXNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzc2MTc5 Li4wMDAwMDAwCi0tLSBhL2dkYi02LjUtcmVhZGxpbmUtbG9uZy1saW5lLWNyYXNoLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLUZpeCBWYWxncmluZCBwYXN0ZSBvZiA+PSAy NTYgKiAoc2NyZWVuIHdpZHRoKSBjaGFyYWN0ZXJzIChhcyAxMzAwMDEpLgotCi1JbnZhbGlkIHdy aXRlIG9mIHNpemUgNAotICAgYXQgMHg4MjAzQkQ5OiBybF9yZWRpc3BsYXkgKGRpc3BsYXkuYzo4 MTIpCi0gICBieSAweDgxRjUxMzA6IF9ybF9pbnRlcm5hbF9jaGFyX2NsZWFudXAgKHJlYWRsaW5l LmM6NDI3KQotICAgYnkgMHg4MUY1MkIzOiByZWFkbGluZV9pbnRlcm5hbF9jaGFyIChyZWFkbGlu ZS5jOjUwOCkKLSAgIGJ5IDB4ODIwOTgxNzogcmxfY2FsbGJhY2tfcmVhZF9jaGFyIChjYWxsYmFj ay5jOjE4NCkKLSAgIGJ5IDB4ODEzNTMxMjogcmxfY2FsbGJhY2tfcmVhZF9jaGFyX3dyYXBwZXIg KGV2ZW50LXRvcC5jOjE3OSkKLSAgIGJ5IDB4ODEzNUI3Qjogc3RkaW5fZXZlbnRfaGFuZGxlciAo ZXZlbnQtdG9wLmM6NDMyKQotICAgYnkgMHg4MTM0OUYyOiBoYW5kbGVfZmlsZV9ldmVudCAoZXZl bnQtbG9vcC5jOjczMCkKLSAgIGJ5IDB4ODEzNDJBQjogcHJvY2Vzc19ldmVudCAoZXZlbnQtbG9v cC5jOjM0MykKLSAgIGJ5IDB4ODEzNDJGNDogZ2RiX2RvX29uZV9ldmVudCAoZXZlbnQtbG9vcC5j OjM4MCkKLSAgIGJ5IDB4ODEzMTNBQzogY2F0Y2hfZXJyb3JzIChleGNlcHRpb25zLmM6NTE1KQot ICAgYnkgMHg4MENFOENBOiB0dWlfY29tbWFuZF9sb29wICh0dWktaW50ZXJwLmM6MTUxKQotICAg YnkgMHg4MTMxOEI5OiBjdXJyZW50X2ludGVycF9jb21tYW5kX2xvb3AgKGludGVycHMuYzoyNzgp Ci0gQWRkcmVzcyAweDQzRENFQjggaXMgMCBieXRlcyBhZnRlciBhIGJsb2NrIG9mIHNpemUgMSww MjQgYWxsb2MnZAotICAgYXQgMHg0MDA1NDAwOiBtYWxsb2MgKHZnX3JlcGxhY2VfbWFsbG9jLmM6 MTQ5KQotICAgYnkgMHg4MDg3MDg0OiB4bWFsbG9jICh1dGlscy5jOjk1OSkKLSAgIGJ5IDB4ODIw MkNBNzogaW5pdF9saW5lX3N0cnVjdHVyZXMgKGRpc3BsYXkuYzo0NDApCi0gICBieSAweDgyMDJE MTQ6IHJsX3JlZGlzcGxheSAoZGlzcGxheS5jOjQ3MSkKLSAgIGJ5IDB4ODFGNEY1MzogcmVhZGxp bmVfaW50ZXJuYWxfc2V0dXAgKHJlYWRsaW5lLmM6MzYzKQotICAgYnkgMHg4MjA5NThDOiBfcmxf Y2FsbGJhY2tfbmV3bGluZSAoY2FsbGJhY2suYzo4OSkKLSAgIGJ5IDB4ODIwOTVCQjogcmxfY2Fs bGJhY2tfaGFuZGxlcl9pbnN0YWxsIChjYWxsYmFjay5jOjEwMSkKLSAgIGJ5IDB4ODBDRTg5Njog dHVpX2NvbW1hbmRfbG9vcCAodHVpLWludGVycC5jOjEzOCkKLSAgIGJ5IDB4ODEzMThCOTogY3Vy cmVudF9pbnRlcnBfY29tbWFuZF9sb29wIChpbnRlcnBzLmM6Mjc4KQotICAgYnkgMHg4MDdFNjlB OiBjYXB0dXJlZF9jb21tYW5kX2xvb3AgKG1haW4uYzoxMDEpCi0gICBieSAweDgxMzEzQUM6IGNh dGNoX2Vycm9ycyAoZXhjZXB0aW9ucy5jOjUxNSkKLSAgIGJ5IDB4ODA3RjU1QTogY2FwdHVyZWRf bWFpbiAobWFpbi5jOjgyNikKLQotCi0yMDA2LTExLTA4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIHJlYWRsaW5lL2Rpc3BsYXkuYyAobGluZV9zdGF0 ZSwgbGluZV9zdGF0ZV9hcnJheSwgbGluZV9zdGF0ZV92aXNpYmxlLAotCWxpbmVfc3RhdGVfaW52 aXNpYmxlKTogRW5jYXBzdWxhdGUgX3JsX3dyYXBwZWRfbGluZSwgaW52X2xicmVha3MsCi0JaW52 X2xic2l6ZSwgdmlzX2xicmVha3MsIHZpc19sYnNpemUsIHZpc2libGVfbGluZSwgaW52aXNpYmxl X2xpbmUuCi0JKGluaXRfbGluZV9zdHJ1Y3R1cmVzKTogSW5pdGlhbGl6ZSBib3RoIF9ybF93cmFw cGVkX2xpbmUgb25lcyBub3cuCi0JKHJsX3JlZGlzcGxheSk6IEZpeCBfcmxfd3JhcHBlZF9saW5l IGhhbmRsaW5nIGJ5IHVzaW5nIGl0cyBvd24gc2l6ZS4KLQlTd2FwIHdob2xlIGBsaW5lX3N0YXRl X3Zpc2libGUnIC8gYGxpbmVfc3RhdGVfaW52aXNpYmxlJyBzdHJ1Y3R1cmVzLgotCSh1cGRhdGVf bGluZSk6IFVwZGF0ZSBmb3IgbmV3IGBfcmxfd3JhcHBlZF9saW5lJy4KLQotCi1JbmRleDogLi9y ZWFkbGluZS9kaXNwbGF5LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAuL3JlYWRsaW5lL2Rpc3BsYXkuYwk1 IE1heSAyMDA2IDE4OjI2OjEyIC0wMDAwCTEuMTEKLSsrKyAuL3JlYWRsaW5lL2Rpc3BsYXkuYwk4 IE5vdiAyMDA2IDE4OjIzOjMzIC0wMDAwCi1AQCAtNzMsMTUgKzczLDMxIEBAIHN0YXRpYyB2b2lk IGRlbGV0ZV9jaGFycyBQQVJBTVMoKGludCkpOwotIHN0YXRpYyB2b2lkIGluc2VydF9zb21lX2No YXJzIFBBUkFNUygoY2hhciAqLCBpbnQsIGludCkpOwotIHN0YXRpYyB2b2lkIGNyIFBBUkFNUygo dm9pZCkpOwotIAotK3N0cnVjdCBsaW5lX3N0YXRlCi0rICB7Ci0rICAgIGNoYXIgKmxpbmU7Ci0r ICAgIGludCAqbGJyZWFrczsKLSsgICAgaW50IGxicmVha3Nfc2l6ZTsKLSsjaWYgZGVmaW5lZCAo SEFORExFX01VTFRJQllURSkKLSsgICAgaW50ICp3cmFwcGVkX2xpbmU7Ci0rICAgIGludCB3cmFw cGVkX2xpbmVfc2l6ZTsKLSsjZW5kaWYKLSsgIH07Ci0rc3RhdGljIHN0cnVjdCBsaW5lX3N0YXRl IGxpbmVfc3RhdGVfYXJyYXlbMl07Ci0rc3RhdGljIHN0cnVjdCBsaW5lX3N0YXRlICpsaW5lX3N0 YXRlX3Zpc2libGUgPSAmbGluZV9zdGF0ZV9hcnJheVswXTsKLStzdGF0aWMgc3RydWN0IGxpbmVf c3RhdGUgKmxpbmVfc3RhdGVfaW52aXNpYmxlID0gJmxpbmVfc3RhdGVfYXJyYXlbMV07Ci0rCi0g I2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCi0gc3RhdGljIGludCBfcmxfY29sX3dpZHRo IFBBUkFNUygoY29uc3QgY2hhciAqLCBpbnQsIGludCkpOwotLXN0YXRpYyBpbnQgKl9ybF93cmFw cGVkX2xpbmU7Ci0gI2Vsc2UKLSAjICBkZWZpbmUgX3JsX2NvbF93aWR0aChsLCBzLCBlKQkoKChl KSA8PSAocykpID8gMCA6IChlKSAtIChzKSkKLSAjZW5kaWYKLSAKLS1zdGF0aWMgaW50ICppbnZf bGJyZWFrcywgKnZpc19sYnJlYWtzOwotLXN0YXRpYyBpbnQgaW52X2xic2l6ZSwgdmlzX2xic2l6 ZTsKLSsvKiBGSVhNRTogQmFja3dhcmQgY29tcGF0aWJsZSBuYW1pbmcuICovCi0rI2RlZmluZSBp bnZfbGJyZWFrcyAobGluZV9zdGF0ZV9pbnZpc2libGUtPmxicmVha3MpCi0rI2RlZmluZSBpbnZf bGJzaXplIChsaW5lX3N0YXRlX2ludmlzaWJsZS0+bGJyZWFrc19zaXplKQotKyNkZWZpbmUgdmlz X2xicmVha3MgKGxpbmVfc3RhdGVfdmlzaWJsZS0+bGJyZWFrcykKLSsjZGVmaW5lIHZpc19sYnNp emUgKGxpbmVfc3RhdGVfdmlzaWJsZS0+bGJyZWFrc19zaXplKQotIAotIC8qIEhldXJpc3RpYyB1 c2VkIHRvIGRlY2lkZSB3aGV0aGVyIGl0IGlzIGZhc3RlciB0byBtb3ZlIGZyb20gQ1VSIHRvIE5F VwotICAgIGJ5IGJhY2tpbmcgdXAgb3Igb3V0cHV0dGluZyBhIGNhcnJpYWdlIHJldHVybiBhbmQg bW92aW5nIGZvcndhcmQuICovCi1AQCAtMTUwLDggKzE2Niw5IEBAIHN0YXRpYyBpbnQgbGFzdF9s bWFyZ2luOwotIAotIC8qIFRoZSBsaW5lIGRpc3BsYXkgYnVmZmVycy4gIE9uZSBpcyB0aGUgbGlu ZSBjdXJyZW50bHkgZGlzcGxheWVkIG9uCi0gICAgdGhlIHNjcmVlbi4gIFRoZSBvdGhlciBpcyB0 aGUgbGluZSBhYm91dCB0byBiZSBkaXNwbGF5ZWQuICovCi0tc3RhdGljIGNoYXIgKnZpc2libGVf bGluZSA9IChjaGFyICopTlVMTDsKLS1zdGF0aWMgY2hhciAqaW52aXNpYmxlX2xpbmUgPSAoY2hh ciAqKU5VTEw7Ci0rLyogRklYTUU6IEJhY2t3YXJkIGNvbXBhdGlibGUgbmFtaW5nLiAqLwotKyNk ZWZpbmUgdmlzaWJsZV9saW5lIChsaW5lX3N0YXRlX3Zpc2libGUtPmxpbmUpCi0rI2RlZmluZSBp bnZpc2libGVfbGluZSAobGluZV9zdGF0ZV9pbnZpc2libGUtPmxpbmUpCi0gCi0gLyogQSBidWZm ZXIgZm9yIGBtb2RlbGluZScgbWVzc2FnZXMuICovCi0gc3RhdGljIGNoYXIgbXNnX2J1ZlsxMjhd OwotQEAgLTQzNyw3ICs0NTQsMTAgQEAgaW5pdF9saW5lX3N0cnVjdHVyZXMgKG1pbnNpemUpCi0g ICAgICAgaW52X2xicmVha3MgPSAoaW50ICopeG1hbGxvYyAoaW52X2xic2l6ZSAqIHNpemVvZiAo aW50KSk7Ci0gICAgICAgdmlzX2xicmVha3MgPSAoaW50ICopeG1hbGxvYyAodmlzX2xic2l6ZSAq IHNpemVvZiAoaW50KSk7Ci0gI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCi0tICAgICAg X3JsX3dyYXBwZWRfbGluZSA9IChpbnQgKil4bWFsbG9jICh2aXNfbGJzaXplICogc2l6ZW9mIChp bnQpKTsKLSsgICAgICBsaW5lX3N0YXRlX3Zpc2libGUtPndyYXBwZWRfbGluZV9zaXplID0gdmlz X2xic2l6ZTsKLSsgICAgICBsaW5lX3N0YXRlX3Zpc2libGUtPndyYXBwZWRfbGluZSA9IChpbnQg Kil4bWFsbG9jIChsaW5lX3N0YXRlX3Zpc2libGUtPndyYXBwZWRfbGluZV9zaXplICogc2l6ZW9m IChpbnQpKTsKLSsgICAgICBsaW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lX3NpemUg PSBpbnZfbGJzaXplOwotKyAgICAgIGxpbmVfc3RhdGVfaW52aXNpYmxlLT53cmFwcGVkX2xpbmUg PSAoaW50ICopeG1hbGxvYyAobGluZV9zdGF0ZV9pbnZpc2libGUtPndyYXBwZWRfbGluZV9zaXpl ICogc2l6ZW9mIChpbnQpKTsKLSAjZW5kaWYKLSAgICAgICBpbnZfbGJyZWFrc1swXSA9IHZpc19s YnJlYWtzWzBdID0gMDsKLSAgICAgfQotQEAgLTU3MiwxMCArNTkyLDE1IEBAIHJsX3JlZGlzcGxh eSAoKQotIAkgICAgICB7IFwKLSAJCWludl9sYnNpemUgKj0gMjsgXAotIAkJaW52X2xicmVha3Mg PSAoaW50ICopeHJlYWxsb2MgKGludl9sYnJlYWtzLCBpbnZfbGJzaXplICogc2l6ZW9mIChpbnQp KTsgXAotLQkJX3JsX3dyYXBwZWRfbGluZSA9IChpbnQgKil4cmVhbGxvYyAoX3JsX3dyYXBwZWRf bGluZSwgaW52X2xic2l6ZSAqIHNpemVvZiAoaW50KSk7IFwKLSAJICAgICAgfSBcCi0gCSAgICBp bnZfbGJyZWFrc1srK25ld2xpbmVzXSA9IG91dDsgXAotLQkgICAgX3JsX3dyYXBwZWRfbGluZVtu ZXdsaW5lc10gPSBfcmxfd3JhcHBlZF9tdWx0aWNvbHVtbjsgXAotKwkgICAgaWYgKG5ld2xpbmVz ID49IChsaW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lX3NpemUgLSAxKSkgXAotKwkg ICAgICB7IFwKLSsJCWxpbmVfc3RhdGVfaW52aXNpYmxlLT53cmFwcGVkX2xpbmVfc2l6ZSAqPSAy OyBcCi0rCQlsaW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lID0gKGludCAqKXhyZWFs bG9jIChsaW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lLCBcCi0rCQkgIGxpbmVfc3Rh dGVfaW52aXNpYmxlLT53cmFwcGVkX2xpbmVfc2l6ZSAqIHNpemVvZiAoaW50KSk7IFwKLSsJICAg ICAgfSBcCi0rCSAgICBsaW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lW25ld2xpbmVz XSA9IF9ybF93cmFwcGVkX211bHRpY29sdW1uOyBcCi0gCSAgICBscG9zID0gMDsgXAotIAkgIH0g XAotICAgICAgIH0gd2hpbGUgKDApCi1AQCAtNjA1LDcgKzYzMCw3IEBAIHJsX3JlZGlzcGxheSAo KQotICNlbmRpZgotIAotICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotLSAgbWVtc2V0 IChfcmxfd3JhcHBlZF9saW5lLCAwLCB2aXNfbGJzaXplKTsKLSsgIG1lbXNldCAobGluZV9zdGF0 ZV9pbnZpc2libGUtPndyYXBwZWRfbGluZSwgMCwgbGluZV9zdGF0ZV9pbnZpc2libGUtPndyYXBw ZWRfbGluZV9zaXplICogc2l6ZW9mIChpbnQpKTsKLSAgIG51bSA9IDA7Ci0gI2VuZGlmCi0gCi1A QCAtMTExOCwxNyArMTE0MywxMCBAQCBybF9yZWRpc3BsYXkgKCkKLSAKLSAgIC8qIFN3YXAgdmlz aWJsZSBhbmQgbm9uLXZpc2libGUgbGluZXMuICovCi0gICB7Ci0tICAgIGNoYXIgKnZ0ZW1wID0g dmlzaWJsZV9saW5lOwotLSAgICBpbnQgKml0ZW1wID0gdmlzX2xicmVha3MsIG50ZW1wID0gdmlz X2xic2l6ZTsKLS0KLS0gICAgdmlzaWJsZV9saW5lID0gaW52aXNpYmxlX2xpbmU7Ci0tICAgIGlu dmlzaWJsZV9saW5lID0gdnRlbXA7Ci0tCi0tICAgIHZpc19sYnJlYWtzID0gaW52X2xicmVha3M7 Ci0tICAgIGludl9sYnJlYWtzID0gaXRlbXA7Ci0tCi0tICAgIHZpc19sYnNpemUgPSBpbnZfbGJz aXplOwotLSAgICBpbnZfbGJzaXplID0gbnRlbXA7Ci0rICAgIHN0cnVjdCBsaW5lX3N0YXRlICps aW5lX3N0YXRlX3RlbXAgPSBsaW5lX3N0YXRlX3Zpc2libGU7Ci0rICAgIAotKyAgICBsaW5lX3N0 YXRlX3Zpc2libGUgPSBsaW5lX3N0YXRlX2ludmlzaWJsZTsKLSsgICAgbGluZV9zdGF0ZV9pbnZp c2libGUgPSBsaW5lX3N0YXRlX3RlbXA7Ci0gCi0gICAgIHJsX2Rpc3BsYXlfZml4ZWQgPSAwOwot ICAgICAvKiBJZiB3ZSBhcmUgZGlzcGxheWluZyBvbiBhIHNpbmdsZSBsaW5lLCBhbmQgbGFzdF9s bWFyZ2luIGlzID4gMCwgd2UKLUBAIC0xMTk0LDggKzEyMTIsOSBAQCB1cGRhdGVfbGluZSAob2xk LCBuZXcsIGN1cnJlbnRfbGluZSwgb21hCi0gCSAgLyogVGhpcyBmaXhlcyBvbmx5IGRvdWJsZS1j b2x1bW4gY2hhcmFjdGVycywgYnV0IGlmIHRoZSB3cmFwcGVkCi0gCSAgICAgY2hhcmFjdGVyIGNv bXN1bWVzIG1vcmUgdGhhbiB0aHJlZSBjb2x1bW5zLCBzcGFjZXMgd2lsbCBiZQotIAkgICAgIGlu c2VydGVkIGluIHRoZSBzdHJpbmcgYnVmZmVyLiAqLwotLQkgIGlmIChfcmxfd3JhcHBlZF9saW5l W2N1cnJlbnRfbGluZV0gPiAwKQotLQkgICAgX3JsX2NsZWFyX3RvX2VvbCAoX3JsX3dyYXBwZWRf bGluZVtjdXJyZW50X2xpbmVdKTsKLSsJICBpZiAoY3VycmVudF9saW5lIDwgbGluZV9zdGF0ZV92 aXNpYmxlLT53cmFwcGVkX2xpbmVfc2l6ZQotKwkgICAgICAmJiBsaW5lX3N0YXRlX3Zpc2libGUt PndyYXBwZWRfbGluZVtjdXJyZW50X2xpbmVdID4gMCkKLSsJICAgIF9ybF9jbGVhcl90b19lb2wg KGxpbmVfc3RhdGVfdmlzaWJsZS0+d3JhcHBlZF9saW5lW2N1cnJlbnRfbGluZV0pOwotIAotIAkg IG1lbXNldCAoJnBzLCAwLCBzaXplb2YgKG1ic3RhdGVfdCkpOwotIAkgIHJldCA9IG1icnRvd2Mg KCZ3YywgbmV3LCBNQl9DVVJfTUFYLCAmcHMpOwoKZGlmZiAtLWdpdCBhL2dkYi1iejcwMTEzMS1y ZWFkbGluZTYyLTFvZjMucGF0Y2ggYi9nZGItYno3MDExMzEtcmVhZGxpbmU2Mi0xb2YzLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5M2ViZTMKLS0tIC9kZXYvbnVs bAorKysgYi9nZGItYno3MDExMzEtcmVhZGxpbmU2Mi0xb2YzLnBhdGNoCkBAIC0wLDAgKzEsMjA5 NDQgQEAKK2FyY2hlci1qYW5rcmF0b2NodmlsLXJlYWRsaW5lNjIKK2IxMzcwNmFiYmVlOTY0NmY0 ZGU1MjJjMDU1MmRkZDY4ZDFhNGY0M2EKKworLS0tIGEvZ2RiL2NvbmZpZy5pbgorKysrIGIvZ2Ri L2NvbmZpZy5pbgorQEAgLTk0Nyw5ICs5NDcsNiBAQAorIC8qIERlZmluZSB0byBgaW50JyBpZiA8 c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KKyAjdW5kZWYgcGlkX3QKKyAKKy0vKiBy ZWFkbGluZS02LjAgc3RhcnRlZCB0byB1c2UgZGlmZmVyZW50IG5hbWUuICovCistI3VuZGVmIHJl YWRsaW5lX2VjaG9pbmdfcAorLQorIC8qIERlZmluZSB0byB0aGUgZXF1aXZhbGVudCBvZiB0aGUg Qzk5ICdyZXN0cmljdCcga2V5d29yZCwgb3IgdG8KKyAgICBub3RoaW5nIGlmIHRoaXMgaXMgbm90 IHN1cHBvcnRlZC4gIERvIG5vdCBkZWZpbmUgaWYgcmVzdHJpY3QgaXMKKyAgICBzdXBwb3J0ZWQg ZGlyZWN0bHkuICAqLworLS0tIGEvZ2RiL2NvbmZpZ3VyZQorKysrIGIvZ2RiL2NvbmZpZ3VyZQor QEAgLTk3NDMsMzkgKzk3NDMsNiBAQCBpZiB0ZXN0ICIkd2l0aF9zeXN0ZW1fcmVhZGxpbmUiID0g eWVzOyB0aGVuCisgICBSRUFETElORV9ERVBTPQorICAgUkVBRExJTkVfQ0ZMQUdTPQorICAgUkVB RExJTkVfVEVYSV9JTkNGTEFHPQorLQorLSAgIyByZWFkbGluZS02LjAgc3RhcnRlZCB0byB1c2Ug dGhlIG5hbWUgYF9ybF9lY2hvaW5nX3AnLgorLSAgIyBgJChSRUFETElORV9ESVIpLycgb2YgYnVu ZGxlZCByZWFkbGluZSB3b3VsZCBub3QgcmVzb2x2ZSBpbiBjb25maWd1cmUuCistCistICB7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciByZWFkbGlu ZV9lY2hvaW5nX3AiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciByZWFkbGluZV9lY2hv aW5nX3AuLi4gIiA+JjY7IH0KKy0gIHNhdmVfTElCUz0kTElCUworLSAgTElCUz0iJExJQlMgJFJF QURMSU5FIgorLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAor LS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy1pbnQKKy1tYWluICgpCisteworLWV4dGVybiBp bnQgcmVhZGxpbmVfZWNob2luZ19wOworLQkJCQkgICAgcmV0dXJuIHJlYWRsaW5lX2VjaG9pbmdf cDsKKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9saW5r ICIkTElORU5PIjsgdGhlbiA6CistICBSRUFETElORV9FQ0hPSU5HX1A9eWVzCistZWxzZQorLSAg UkVBRExJTkVfRUNIT0lOR19QPW5vCistCistJGFzX2VjaG8gIiNkZWZpbmUgcmVhZGxpbmVfZWNo b2luZ19wIF9ybF9lY2hvaW5nX3AiID4+Y29uZmRlZnMuaAorLQorLWZpCistcm0gLWYgY29yZSBj b25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4 dCBjb25mdGVzdC4kYWNfZXh0CistICBMSUJTPSIkc2F2ZV9MSUJTIgorLSAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRSRUFETElORV9FQ0hPSU5HX1Ai ID4mNQorLSRhc19lY2hvICIkUkVBRExJTkVfRUNIT0lOR19QIiA+JjY7IH0KKyBlbHNlCisgICBS RUFETElORT0nJChSRUFETElORV9ESVIpL2xpYnJlYWRsaW5lLmEnCisgICBSRUFETElORV9ERVBT PSckKFJFQURMSU5FKScKKy0tLSBhL2dkYi9jb25maWd1cmUuYWMKKysrKyBiL2dkYi9jb25maWd1 cmUuYWMKK0BAIC01MzksMjEgKzUzOSw2IEBAIGlmIHRlc3QgIiR3aXRoX3N5c3RlbV9yZWFkbGlu ZSIgPSB5ZXM7IHRoZW4KKyAgIFJFQURMSU5FX0RFUFM9CisgICBSRUFETElORV9DRkxBR1M9Cisg ICBSRUFETElORV9URVhJX0lOQ0ZMQUc9CistCistICAjIHJlYWRsaW5lLTYuMCBzdGFydGVkIHRv IHVzZSB0aGUgbmFtZSBgX3JsX2VjaG9pbmdfcCcuCistICAjIGAkKFJFQURMSU5FX0RJUikvJyBv ZiBidW5kbGVkIHJlYWRsaW5lIHdvdWxkIG5vdCByZXNvbHZlIGluIGNvbmZpZ3VyZS4KKy0KKy0g IEFDX01TR19DSEVDS0lORyhbZm9yIHJlYWRsaW5lX2VjaG9pbmdfcF0pCistICBzYXZlX0xJQlM9 JExJQlMKKy0gIExJQlM9IiRMSUJTICRSRUFETElORSIKKy0gIEFDX0xJTktfSUZFTFNFKEFDX0xB TkdfUFJPR1JBTSgsW1tleHRlcm4gaW50IHJlYWRsaW5lX2VjaG9pbmdfcDsKKy0JCQkJICAgIHJl dHVybiByZWFkbGluZV9lY2hvaW5nX3A7XV0pLAorLQkJIFtSRUFETElORV9FQ0hPSU5HX1A9eWVz XSwKKy0JCSBbUkVBRExJTkVfRUNIT0lOR19QPW5vCistCQkgIEFDX0RFRklORShbcmVhZGxpbmVf ZWNob2luZ19wXSwgW19ybF9lY2hvaW5nX3BdLAorLQkJCSAgICBbcmVhZGxpbmUtNi4wIHN0YXJ0 ZWQgdG8gdXNlIGRpZmZlcmVudCBuYW1lLl0pXSkKKy0gIExJQlM9IiRzYXZlX0xJQlMiCistICBB Q19NU0dfUkVTVUxUKFskUkVBRExJTkVfRUNIT0lOR19QXSkKKyBlbHNlCisgICBSRUFETElORT0n JChSRUFETElORV9ESVIpL2xpYnJlYWRsaW5lLmEnCisgICBSRUFETElORV9ERVBTPSckKFJFQURM SU5FKScKKy0tLSBhL2dkYi90dWkvdHVpLWlvLmMKKysrKyBiL2dkYi90dWkvdHVpLWlvLmMKK0BA IC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIEZ1bmN0aW9uICp0dWlfb2xkX3JsX2dldGNfZnVuY3Rp b247Cisgc3RhdGljIFZGdW5jdGlvbiAqdHVpX29sZF9ybF9yZWRpc3BsYXlfZnVuY3Rpb247Cisg c3RhdGljIFZGdW5jdGlvbiAqdHVpX29sZF9ybF9wcmVwX3Rlcm1pbmFsOworIHN0YXRpYyBWRnVu Y3Rpb24gKnR1aV9vbGRfcmxfZGVwcmVwX3Rlcm1pbmFsOworLXN0YXRpYyBpbnQgdHVpX29sZF9y ZWFkbGluZV9lY2hvaW5nX3A7Cisrc3RhdGljIGludCB0dWlfb2xkX3JsX2VjaG9pbmdfcDsKKyAK KyAvKiBSZWFkbGluZSBvdXRwdXQgc3RyZWFtLgorICAgIFNob3VsZCBiZSByZW1vdmVkIHdoZW4g cmVhZGxpbmUgaXMgY2xlYW4uICAqLworQEAgLTUwNiw4ICs1MDYsOCBAQCB0dWlfcmxfZGlzcGxh eV9tYXRjaF9saXN0IChjaGFyICoqbWF0Y2hlcywgaW50IGxlbiwgaW50IG1heCkKKyB2b2lkCisg dHVpX3NldHVwX2lvIChpbnQgbW9kZSkKKyB7CistICBleHRlcm4gaW50IHJlYWRsaW5lX2VjaG9p bmdfcDsKKy0gCisrICBleHRlcm4gaW50IF9ybF9lY2hvaW5nX3A7CisrCisgICBpZiAobW9kZSkK KyAgICAgeworICAgICAgIC8qIFJlZGlyZWN0IHJlYWRsaW5lIHRvIFRVSS4gICovCitAQCAtNTE2 LDEyICs1MTYsMTIgQEAgdHVpX3NldHVwX2lvIChpbnQgbW9kZSkKKyAgICAgICB0dWlfb2xkX3Js X3ByZXBfdGVybWluYWwgPSBybF9wcmVwX3Rlcm1fZnVuY3Rpb247CisgICAgICAgdHVpX29sZF9y bF9nZXRjX2Z1bmN0aW9uID0gcmxfZ2V0Y19mdW5jdGlvbjsKKyAgICAgICB0dWlfb2xkX3JsX291 dHN0cmVhbSA9IHJsX291dHN0cmVhbTsKKy0gICAgICB0dWlfb2xkX3JlYWRsaW5lX2VjaG9pbmdf cCA9IHJlYWRsaW5lX2VjaG9pbmdfcDsKKysgICAgICB0dWlfb2xkX3JsX2VjaG9pbmdfcCA9IF9y bF9lY2hvaW5nX3A7CisgICAgICAgcmxfcmVkaXNwbGF5X2Z1bmN0aW9uID0gdHVpX3JlZGlzcGxh eV9yZWFkbGluZTsKKyAgICAgICBybF9kZXByZXBfdGVybV9mdW5jdGlvbiA9IHR1aV9kZXByZXBf dGVybWluYWw7CisgICAgICAgcmxfcHJlcF90ZXJtX2Z1bmN0aW9uID0gdHVpX3ByZXBfdGVybWlu YWw7CisgICAgICAgcmxfZ2V0Y19mdW5jdGlvbiA9IHR1aV9nZXRjOworLSAgICAgIHJlYWRsaW5l X2VjaG9pbmdfcCA9IDA7CisrICAgICAgX3JsX2VjaG9pbmdfcCA9IDA7CisgICAgICAgcmxfb3V0 c3RyZWFtID0gdHVpX3JsX291dHN0cmVhbTsKKyAgICAgICBybF9wcm9tcHQgPSAwOworICAgICAg IHJsX2NvbXBsZXRpb25fZGlzcGxheV9tYXRjaGVzX2hvb2sgPSB0dWlfcmxfZGlzcGxheV9tYXRj aF9saXN0OworQEAgLTU2MCw3ICs1NjAsNyBAQCB0dWlfc2V0dXBfaW8gKGludCBtb2RlKQorICAg ICAgIHJsX2dldGNfZnVuY3Rpb24gPSB0dWlfb2xkX3JsX2dldGNfZnVuY3Rpb247CisgICAgICAg cmxfb3V0c3RyZWFtID0gdHVpX29sZF9ybF9vdXRzdHJlYW07CisgICAgICAgcmxfY29tcGxldGlv bl9kaXNwbGF5X21hdGNoZXNfaG9vayA9IDA7CistICAgICAgcmVhZGxpbmVfZWNob2luZ19wID0g dHVpX29sZF9yZWFkbGluZV9lY2hvaW5nX3A7CisrICAgICAgX3JsX2VjaG9pbmdfcCA9IHR1aV9v bGRfcmxfZWNob2luZ19wOworICAgICAgIHJsX2FscmVhZHlfcHJvbXB0ZWQgPSAwOworIAorICAg ICAgIC8qIFNhdmUgdHR5IGZvciBTSUdDT05ULiAgKi8KKy0tLSBhL3JlYWRsaW5lL0NIQU5HRUxP RworKysrIGIvcmVhZGxpbmUvQ0hBTkdFTE9HCitAQCAtOTE4LDMgKzkxOCwxNzggQEAgY29uZmln dXJlLmluCisgCS0gY2hhbmdlZCByZWxlYXNlIHN0YXR1cyB0byBgcmVsZWFzZScKKyAKKyBbcmVh ZGxpbmUtNS4xIGZyb3plbl0KKysKKysJCQkJICAgMTIvOQorKwkJCQkgICAtLS0tCisrW3JlYWRs aW5lLTUuMSByZWxlYXNlZF0KKysKKysJCQkJICAgMTIvMTQKKysJCQkJICAgLS0tLS0KKytleGFt cGxlcy9ybGZlL01ha2VmaWxlLmluCisrCS0gYWRkIEBMSUJTQCB0byBMSUJTIGFzc2lnbm1lbnQg dG8gcGljayB1cCBleHRyYSBsaWJyYXJpZXMgZnJvbQorKwkgIGNvbmZpZ3VyZQorKworKwkJCQkg MS8zLzIwMDYKKysJCQkJIC0tLS0tLS0tCisrc3VwcG9ydC9zaGxpYi1pbnN0YWxsCisrCS0gSW5z dGFsbCBzaGFyZWQgbGlicmFyaWVzIHdpdGggZXhlY3V0ZSBiaXQgc2V0IG9uIExpbnV4CisrCisr CQkJCSAgICA2LzkKKysJCQkJICAgIC0tLQorK1tyZWFkbGluZS01LjItYWxwaGEgZnJvemVuXQor KworKwkJCQkgICA2LzI2CisrCQkJCSAgIC0tLS0KKytjb25maWd1cmUuaW4KKysJLSBzZXQgQ1JP U1NfQ09NUElMRSB0byB0aGUgZW1wdHkgc3RyaW5nIGJ5IGRlZmF1bHQsIHNvIHdlIGRvbid0IGlu aGVyaXQKKysJICBhIHJhbmRvbSB2YWx1ZSBmcm9tIHRoZSBlbnZpcm9ubWVudAorKworKwkJCQkg ICAgNy84CisrCQkJCSAgICAtLS0KKytbcmVhZGxpbmUtNS4yLWFscGhhIHJlbGVhc2VkXQorKwor KworK1tyZWFkbGluZS01LjItYmV0YSByZWxlYXNlZF0KKysKKysJCQkJICAgOS8xMgorKwkJCQkg ICAtLS0tCisrY29uZmlnLmguaW4KKysgICAgICAgIC0gYWRkIGRlZmluZXMgZm9yIHdjc2NvbGws IGlzd2N0eXBlLCBpc3d1cHBlciwgaXN3bG93ZXIsIHRvd3VwcGVyLAorKyAgICAgICAgICB0b3ds b3dlciBmdW5jdGlvbnMKKysgICAgICAgIC0gcmVwbGFjZSBkZWZpbmUgZm9yIHdjdG9tYiB3aXRo IG9uZSBmb3Igd2NydG9tYgorKyAgICAgICAgLSBhZGQgZGVmaW5lcyBmb3Igd2NoYXJfdCwgd2lu dF90LCB3Y3R5cGVfdCB0eXBlcworKworKwkJCQkgICAxMC8xMQorKwkJCQkgICAtLS0tLQorK1ty ZWFkbGluZS01LjIgcmVsZWFzZWRdCisrCisrCQkJCSAgIDExLzkKKysJCQkJICAgLS0tLQorK2V4 YW1wbGVzL3JsZmUve2NvbmZpZ3VyZS5pbixNYWtlZmlsZS5pbixjb25maWcuaC5pbixybGZlLmMs cHR5LmN9CisrCS0gcG9ydGFiaWxpdHkgZml4ZXMgZnJvbSBNaWtlIEZyeXNpbmdlciA8dmFwaWVy QGdlbnRvby5vcmc+CisrCisrCQkJCSAgIDExLzIxCisrCQkJCSAgIC0tLS0tCisrTWFrZWZpbGUu aW4KKysJLSBhZGQgYGluc3RhbGwtZXhhbXBsZXMnIGFuZCBgdW5pbnN0YWxsLWV4YW1wbGVzJyB0 YXJnZXRzCisrCisrZXhhbXBsZXMvTWFrZWZpbGUuaW4KKysJLSBhZGQgY29ycmVjdCB2YXJpYWJs ZXMgdG8gYnVpbGQgZXhhbXBsZXMgb24gV2luZG93cworKwktIGFkZCBhcHByb3ByaWF0ZSBydWxl cyB0byBpbnN0YWxsIGFuZCB1bmluc3RhbGwgZXhhbXBsZSBzb3VyY2VzIGluCisrCSAgJChkYXRh ZGlyKS9yZWFkbGluZSAKKysKKysJCQkJICAgMTEvMjcKKysJCQkJICAgLS0tLS0KKytjb25maWcu aC5pbgorKwktIG1vdmUgI3VuZGVmIG9mIEhBVkVfU1RSQ09MTCBvdXQgb2YgY29uZmlnLmguaW4s IHNpbmNlIGF1dG9jb25mIHRyaWVzCisrCSAgdG8gc3Vic3RpdHV0ZSBpdCBiYXNlZCBvbiBjb25m aWd1cmUgdGVzdHMKKysKKysJCQkJIDQvMjcvMjAwNworKwkJCQkgLS0tLS0tLS0tCisrZXhhbXBs ZXMvYXV0b2NvbmYKKysJLSBuZXcgZGlyZWN0b3J5IHdpdGggZXhhbXBsZSBhdXRvY29uZiBtYWNy b3MgdG8gZGV0ZWN0IHJlYWRsaW5lIGFuZAorKwkgIHJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0 aGUgaW5zdGFsbGVkIHZlcnNpb24KKysKKysJCQkJICAgNi8xMworKwkJCQkgICAtLS0tCisrc3Vw cG9ydC9zaGxpYi1pbnN0YWxsCisrCS0gY2hhbmdlcyB0byBzdXBwb3J0IEFJWCA1Lnggc2hhcmVk IGxpYnJhcnkgaW5zdGFsbGF0aW9uCisrCisrCQkJCSAzLzIwLzIwMDgKKysJCQkJIC0tLS0tLS0t LQorK3N1cHBvcnQvc2hsaWItaW5zdGFsbAorKwktIGFkZCBzdXBwb3J0IGZvciBOZXRCU0QgYW5k IEludGVyaXggc2hhcmVkIGxpYnJhcnkgaW5zdGFsbGF0aW9uCisrCisrCQkJCSAgIDQvMjIKKysJ CQkJICAgLS0tLQorK3N1cHBvcnQvd2N3aWR0aC5jCisrCS0gdXBkYXRlZCBpbXBsZW1lbnRhdGlv biBmcm9tIDIwMDctMDUKKysKKysJCQkJICAgNy8xOAorKwkJCQkgICAtLS0tCisrc3VwcG9ydC9z aGxpYi1pbnN0YWxsCisrCS0gc3VwcG9ydCBmb3IgbWluZ3czMiwgY29udHJpYnV0ZWQgYnkgQ2Fy bG8gQnJhbWl4IDxjYXJsby5icmFtaXhAbGliZXJvLml0PgorKworKwkJCQkgICAgOC80CisrCQkJ CSAgICAtLS0KKytjb25maWd1cmUuaW4KKysJLSBjaGFuZ2VkIHRvIHJlYWRsaW5lLTYuMAorKwor KwkJCQkgICA4LzE4CisrCQkJCSAgIC0tLS0KKytzdXBwb3J0L2NvbmZpZy57Z3Vlc3Msc3VifQor KwktIHVwZGF0ZWQgdG8gbmV3ZXIgdmVyc2lvbnMgZnJvbSBhdXRvY29uZi0yLjYyIGRpc3RyaWJ1 dGlvbgorKworKwkJCQkgMy81LzIwMDkKKysJCQkJIC0tLS0tLS0tCisrc3VwcG9ydC9zaGxpYi1p bnN0YWxsCisrCS0gdGFrZSBhIG5ldyAtViBob3N0X3ZlbmRvciBhcmd1bWVudAorKwktIGFkZCAk e2hvc3RfdmVuZG9yfSB0byBzdHJpbmcgdGVzdGVkIGluIGNhc2Ugc3RhdGVtZW50IGZvciBzeW1s aW5rCisrCSAgY3JlYXRpb24gc2VjdGlvbgorKwktIGFkZCBzdXBwb3J0IGZvciBGcmVlQlNEL2dl bnRvbywgd2hpY2ggdXNlcyBMaW51eCBsaWJyYXJ5IG5hbWluZworKwkgIHNjaGVtZQorKwktIGNo YW5nZSBGcmVlQlNEIHN5bWxpbmsgcnVsZXMsIHNpbmNlIEZyZWVCU0QgNysgaGFzIG9ubHkgRUxG IHNoYXJlZAorKwkgIGxpYnJhcmllcy4gIERyYWdvbmZseUJTRCBydWxlcyBhcmUgdGhlIHNhbWUu ICBGaXggZnJvbSBUaW1vdGh5CisrCSAgUmVkYWVsbGkgPGRyaXp6dEBnZW50b28ub3JnPgorKwor K3NobGliL01ha2VmaWxlLmluCisrCS0gYWRkIGRlZmluaXRpb24gb2YgaG9zdF92ZW5kb3IsIHN1 YnN0aXR1dGVkIGJ5IGNvbmZpZ3VyZQorKwktIGFkZCAtViBob3N0X3ZlbmRvciBhcmd1bWVudCB0 byBhbGwgaW52b2NhdGlvbnMgb2Ygc2hsaWItaW5zdGFsbC4KKysJICBGaXggZnJvbSBUaW1vdGh5 IFJlZGFlbGxpIDxkcml6enRAZ2VudG9vLm9yZz4KKysKKysJCQkJICAgMy8xMAorKwkJCQkgICAt LS0tCisrY29uZmlndXJlLmluCisrCS0gYWRkIGNhbGwgdG8gQUNfU1lTX0xBUkdFRklMRSBmb3Ig cmVhZGRpciBhbmQgbGFyZ2VmaWxlIHN1cHBvcnQgb24KKysJICBMaW51eAorKworK2NvbmZpZy5o LmluCisrCS0gYWRkIF9GSUxFX09GRlNFVF9CSVRTIGRlZmluZQorKworKwkJCQkgICA0LzE5Cisr CQkJCSAgIC0tLS0KKytNYWtlZmlsZS5pbgorKwktIGFkZCB0YXJnZXRzIGZvciBtYWtpbmcgYW5k IGluc3RhbGxpbmcgZG9jdW1lbnRhdGlvbiByZXF1aXJlZCBieSBHTlUKKysJICBjb2Rpbmcgc3Rh bmRhcmRzLiAgRml4IGZyb20gSm9zZXBoIE15ZXJzIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4K KysKKytwb3NpeHNlbGVjdC5oCisrCS0gcGljayB1cCBmcm9tIGJhc2guICBJbnNwaXJlZCBieSBN aWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CisrCisrCQkJCSAgIDEwLzI4CisrCQkJ CSAgIC0tLS0tCisrc3VwcG9ydC9zaGxpYi1pbnN0YWxsCisrCS0gZGVjcmVhc2UgdGhlIGRlZmF1 bHQgdmVyc2lvbiBvZiBGcmVlQlNEIHRoYXQgaW5zdGFsbHMgc2hhcmVkIGxpYnJhcmllcworKwkg IHRvIDQueC4gIEFkdmljZSBmcm9tIFBldGVyIEplcmVteSA8cGV0ZXJqZXJlbXlAYWNtLm9yZz4K KysKKysJCQkJICAgMTIvMTgKKysJCQkJICAgLS0tLS0KKytbcmVhZGxpbmUtNi4xLXJjMSByZWxl YXNlZF0KKysKKysJCQkJICAgMTIvMjMKKysJCQkJICAgLS0tLS0KKytkb2MvTWFrZWZpbGUuaW4K KysJLSBtYWtlIHN1cmUgJCh0b3BkaXIpIGlzIG5vdCAiLi4iIGJlZm9yZSByZW1vdmluZyBhbGwg b2YgdGhlIGZvcm1hdHRlZAorKwkgIGRvY3VtZW50YXRpb24gaW4gYG1ha2UgZGlzdGNsZWFuJy4g ICQodG9wZGlyKSBpcyBzZXQgdG8gYC4uJyBpZgorKwkgIHJlYWRsaW5lIGlzIGJlaW5nIGJ1aWx0 IGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5LiAgRml4ZXMgcHJvYmxlbQorKwkgIG5vdGljZWQgYnkg VEhPVU1JTiBEYW1pZW4gPHRob3VtaW5AaXBhbmVtYXRlY2guY29tPgorKworKwkJCQkgICAxMi8y OQorKwkJCQkgICAtLS0tLQorK1tyZWFkbGluZS02LjEgZnJvemVuXQorKworKwkJCQkgMi81LzIw MTAKKysJCQkJIC0tLS0tLS0tCisrZXhhbXBsZXMvTWFrZWZpbGUuaW4KKysgICAgICAgIC0gbWFr ZSBzdXJlIHRvIGluc3RhbGwgZXhhbXBsZSBDIGZpbGVzIHVzaW5nICQoc3JjZGlyKS8kJGYgaW4g Y2FzZQorKyAgICAgICAgICB3ZSdyZSBidWlsZGluZyBvdXRzaWRlIHRoZSBzb3VyY2UgZGlyZWN0 b3J5LiAgQnVnIHJlcG9ydCBhbmQgZml4CisrICAgICAgICAgIGZyb20gUGV0ZXIgQnJlaXRlbmxv aG5lciA8cGViQG1wcG11Lm1wZy5kZT4KKysKKysJCQkJICAgNy8yNQorKwkJCQkgICAtLS0tCisr eGZyZWUuYworKwktIG5ldyBmaWxlIHdpdGggeGZyZWUoKSBpbXBsZW1lbnRhdGlvbiwgbW92ZWQg ZnJvbSB4bWFsbG9jLmMKKysKKysJCQkJICAgMTIvMjgKKysJCQkJICAgLS0tLS0KKyt7ZXhhbXBs ZXMsc2hsaWJ9L01ha2VmaWxlLmluCisrCS0gQ3lnd2luLWJhc2VkIGNoYW5nZXMgZnJvbSBFcmlj IEJsYWtlIDxlYmxha2VAcmVkaGF0LmNvbT4KKy0tLSBhL3JlYWRsaW5lL0NIQU5HRVMKKysrKyBi L3JlYWRsaW5lL0NIQU5HRVMKK0BAIC0xLDMgKzEsMzIwIEBACisrVGhpcyBkb2N1bWVudCBkZXRh aWxzIHRoZSBjaGFuZ2VzIGJldHdlZW4gdGhpcyB2ZXJzaW9uLCByZWFkbGluZS02LjIsCisrYW5k IHRoZSBwcmV2aW91cyB2ZXJzaW9uLCByZWFkbGluZS02LjEuCisrCisrMS4gIENoYW5nZXMgdG8g UmVhZGxpbmUKKysKKythLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgdGhlIHVuY29udmVydGVk IGZpbGVuYW1lIHRvIGJlIGFkZGVkIHRvIHRoZSBsaXN0IG9mCisrICAgIGNvbXBsZXRpb25zIHdo ZW4gdGhlIGFwcGxpY2F0aW9uIHNwZWNpZmllZCBmaWxlbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9u cy4KKysKKytiLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgdGhlIHdyb25nIGZpbGVuYW1lIHRv IGJlIHBhc3NlZCB0byBvcGVuZGlyIHdoZW4gdGhlCisrICAgIGFwcGxpY2F0aW9uIGhhcyBzcGVj aWZpZWQgYSBmaWxlbmFtZSBkZXF1b3RpbmcgZnVuY3Rpb24uCisrCisrYy4gIEZpeGVkIGEgYnVn IHdoZW4gcmVwZWF0aW5nIGEgY2hhcmFjdGVyIHNlYXJjaCBpbiB2aSBtb2RlIGluIHRoZSBjYXNl IHdoZXJlCisrICAgIHRoZXJlIHdhcyBubyBzZWFyY2ggdG8gcmVwZWF0LgorKworK2QuICBXaGVu IHNob3ctYWxsLWlmLWFtYmlndW91cyBpcyBzZXQsIHRoZSBjb21wbGV0aW9uIHJvdXRpbmVzIG5v IGxvbmdlciBpbnNlcnQKKysgICAgYSBjb21tb24gbWF0Y2ggcHJlZml4IHRoYXQgaXMgc2hvcnRl ciB0aGFuIHRoZSB0ZXh0IGJlaW5nIGNvbXBsZXRlZC4KKysKKytlLiAgVGhlIGZ1bGwgc2V0IG9m IHZpIGVkaXRpbmcgY29tbWFuZHMgbWF5IG5vdyBiZSB1c2VkIGluIGNhbGxiYWNrIG1vZGUuCisr CisrZi4gIEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkIHJlYWRsaW5lIHRvIG5vdCB1cGRhdGUgaXRz IGlkZWEgb2YgdGhlIHRlcm1pbmFsCisrICAgIGRpbWVuc2lvbnMgd2hpbGUgcnVubmluZyBpbiBg bm8tZWNobycgbW9kZS4KKysKKytoLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgcmVhZGxpbmUg dG8gZHVtcCBjb3JlIGlmIGFuIGFwcGxpY2F0aW9uIGNhbGxlZAorKyAgICBybF9wcmVwX3Rlcm1p bmFsIHdpdGhvdXQgc2V0dGluZyBybF9pbnN0cmVhbS4KKysKKytpLiAgRml4ZWQgYSBidWcgdGhh dCBjYXVzZWQgbWV0YS1wcmVmaXhlZCBjaGFyYWN0ZXJzIGJvdW5kIHRvIGluY3JlbWVudGFsCisr ICAgIHNlYXJjaCBmb3J3YXJkIG9yIGJhY2t3YXJkIHRvIG5vdCBiZSByZWNvZ25pemVkIGlmIHRo ZXkgd2VyZSB0eXBlZAorKyAgICBzdWJzZXF1ZW50bHkuCisrCisrai4gIFRoZSBpbmNyZW1lbnRh bCBzZWFyY2ggY29kZSB0cmVhdHMga2V5IHNlcXVlbmNlcyB0aGF0IG1hcCB0byB0aGUgc2FtZQor KyAgICBmdW5jdGlvbnMgYXMgKGRlZmF1bHQpIF5HLCBeVywgYW5kIF5ZIGFzIGVxdWl2YWxlbnQg dG8gdGhvc2UgY2hhcmFjdGVycy4KKysKKytrLiAgRml4ZWQgYSBidWcgaW4gbWVudS1jb21wbGV0 ZSB0aGF0IGNhdXNlZCBpdCB0byBtaXNiZWhhdmUgd2l0aCBsYXJnZQorKyAgICBuZWdhdGl2ZSBh cmd1bWVudC4KKysKKytsLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgdmktbW9kZSB5YW5rLWxh c3QtYXJnIHRvIHJpbmcgdGhlIGJlbGwgd2hlbiBpbnZva2VkCisrICAgIGF0IHRoZSBlbmQgb2Yg dGhlIGxpbmUuCisrCisrbS4gIEZpeGVkIGEgYnVnIHRoYXQgbWFkZSBhbiBleHBsaWNpdCBhcmd1 bWVudCBvZiAwIHRvIHlhbmstbGFzdC1hcmcgYmVoYXZlCisrICAgIGFzIGlmIGl0IHdlcmUgYSBu ZWdhdGl2ZSBhcmd1bWVudC4KKysKKytuLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgZGlyZWN0 b3J5IG5hbWVzIGluIHdvcmRzIHRvIGJlIGNvbXBsZXRlZCB0byBub3QKKysgICAgYmUgZGVxdW90 ZWQgY29ycmVjdGx5LgorKworKzIuICBOZXcgRmVhdHVyZXMgaW4gUmVhZGxpbmUKKysKKythLiAg VGhlIGhpc3RvcnkgbGlicmFyeSBkb2VzIG5vdCB0cnkgdG8gd3JpdGUgdGhlIGhpc3RvcnkgZmls ZW5hbWUgaW4gdGhlCisrICAgIGN1cnJlbnQgZGlyZWN0b3J5IGlmICRIT01FIGlzIHVuc2V0LiAg VGhpcyBjbG9zZXMgYSBwb3RlbnRpYWwgc2VjdXJpdHkKKysgICAgcHJvYmxlbSBpZiB0aGUgYXBw bGljYXRpb24gZG9lcyBub3Qgc3BlY2lmeSBhIGhpc3RvcnkgZmlsZW5hbWUuCisrCisrYi4gIE5l dyBiaW5kYWJsZSB2YXJpYWJsZSBgY29tcGxldGlvbi1kaXNwbGF5LXdpZHRoJyB0byBzZXQgdGhl IG51bWJlciBvZgorKyAgICBjb2x1bW5zIHVzZWQgd2hlbiBkaXNwbGF5aW5nIGNvbXBsZXRpb25z LgorKworK2MuICBOZXcgYmluZGFibGUgdmFyaWFibGUgYGNvbXBsZXRpb24tY2FzZS1tYXAnIHRv IGNhdXNlIGNhc2UtaW5zZW5zaXRpdmUKKysgICAgY29tcGxldGlvbiB0byB0cmVhdCBgLScgYW5k IGBfJyBhcyBpZGVudGljYWwuCisrCisrZC4gIFRoZXJlIGFyZSBuZXcgYmluZGFibGUgdmktbW9k ZSBjb21tYW5kIG5hbWVzIHRvIGF2b2lkIHJlYWRsaW5lJ3MgY2FzZS0KKysgICAgaW5zZW5zaXRp dmUgbWF0Y2hpbmcgbm90IGFsbG93aW5nIHRoZW0gdG8gYmUgYm91bmQgc2VwYXJhdGVseS4KKysK KytlLiAgTmV3IGJpbmRhYmxlIHZhcmlhYmxlIGBtZW51LWNvbXBsZXRlLWRpc3BsYXktcHJlZml4 JyBjYXVzZXMgdGhlIG1lbnUKKysgICAgY29tcGxldGlvbiBjb2RlIHRvIGRpc3BsYXkgdGhlIGNv bW1vbiBwcmVmaXggb2YgdGhlIHBvc3NpYmxlIGNvbXBsZXRpb25zCisrICAgIGJlZm9yZSBjeWNs aW5nIHRocm91Z2ggdGhlIGxpc3QsIGluc3RlYWQgb2YgYWZ0ZXIuCisrCisrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorK1RoaXMgZG9jdW1lbnQgZGV0YWlscyB0aGUgY2hhbmdlcyBiZXR3ZWVuIHRo aXMgdmVyc2lvbiwgcmVhZGxpbmUtNi4xLAorK2FuZCB0aGUgcHJldmlvdXMgdmVyc2lvbiwgcmVh ZGxpbmUtNi4wLgorKworKzEuICBDaGFuZ2VzIHRvIFJlYWRsaW5lCisrCisrYS4gIFRoZSBTSUdX SU5DSCBzaWduYWwgaGFuZGxlciBub3cgYXZvaWRzIGNhbGxpbmcgdGhlIHJlZGlzcGxheSBjb2Rl IGlmCisrICAgIG9uZSBhcnJpdmVzIHdoaWxlIGluIHRoZSBtaWRkbGUgb2YgcmVkaXNwbGF5Lgor KworK2IuICBDaGFuZ2VzIHRvIHRoZSB0aW1lb3V0IGNvZGUgdG8gbWFrZSBzdXJlIHRoYXQgdGlt ZW91dCB2YWx1ZXMgZ3JlYXRlcgorKyAgICB0aGFuIG9uZSBzZWNvbmQgYXJlIGhhbmRsZWQgYmV0 dGVyLgorKworK2MuICBGaXhlZCBhIGJ1ZyBpbiB0aGUgcmVkaXNwbGF5IGNvZGUgdGhhdCB3YXMg dHJpZ2dlcmVkIGJ5IGEgcHJvbXB0CisrICAgIGNvbnRhaW5pbmcgaW52aXNpYmxlIGNoYXJhY3Rl cnMgZXhhY3RseSB0aGUgd2lkdGggb2YgdGhlIHNjcmVlbi4KKysKKytkLiAgRml4ZWQgYSBidWcg aW4gdGhlIHJlZGlzcGxheSBjb2RlIGVuY291bnRlcmVkIHdoZW4gcnVubmluZyBpbiBob3Jpem9u dGFsCisrICAgIHNjcm9sbCBtb2RlLgorKworK2UuICBGaXhlZCBhIGJ1ZyB0aGF0IHByZXZlbnRl ZCBtZW51IGNvbXBsZXRpb24gZnJvbSBwcm9wZXJseSBjb21wbGV0aW5nCisrICAgIGZpbGVuYW1l cy4KKysKKytmLiAgRml4ZWQgYSByZWRpc3BsYXkgYnVnIGNhdXNlZCBieSBhIG11bHRpYnl0ZSBj aGFyYWN0ZXIgY2F1c2luZyBhIGxpbmUgdG8KKysgICAgd3JhcC4KKysKKytnLiAgRml4ZWQgYSBi dWcgdGhhdCBjYXVzZWQga2V5IHNlcXVlbmNlcyBvZiB0d28gY2hhcmFjdGVycyB0byBub3QgYmUK KysgICAgcmVjb2duaXplZCB3aGVuIGEgbG9uZ2VyIHNlcXVlbmNlIGlkZW50aWNhbCBpbiB0aGUg Zmlyc3QgdHdvIGNoYXJhY3RlcnMKKysgICAgd2FzIGJvdW5kLgorKworK2guICBGaXhlZCBhIGJ1 ZyB0aGF0IGNhdXNlZCBoaXN0b3J5IGV4cGFuc2lvbiB0byBiZSBhdHRlbXB0ZWQgb24gJCcuLi4n CisrICAgIHNpbmdsZS1xdW90ZWQgc3RyaW5ncy4KKysKKytpLiAgRml4ZWQgYSBidWcgdGhhdCBj YXVzZWQgaW5jb3JyZWN0IHJlZGlzcGxheSB3aGVuIHRoZSBwcm9tcHQgY29udGFpbmVkCisrICAg IG11bHRpYnl0ZSBjaGFyYWN0ZXJzIGluIGFuIGBpbnZpc2libGUnIHNlcXVlbmNlIGJyYWNrZXRl ZCBieSBcWyBhbmQKKysgICAgXF0uCisrCisrai4gIEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkIGhp c3RvcnkgZXhwYW5zaW9uIHRvIHNob3J0LWNpcmN1aXQgYWZ0ZXIKKysgICAgZW5jb3VudGVyaW5n IGEgbXVsdGlieXRlIGNoYXJhY3Rlci4KKysKKytrLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQg YXBwbGljYXRpb25zIHVzaW5nIHRoZSBjYWxsYmFjayBpbnRlcmZhY2UgdG8gbm90CisrICAgIHJl YWN0IHRvIFNJR0lOVCAob3Igb3RoZXIgc2lnbmFscykgdW50aWwgYW5vdGhlciBjaGFyYWN0ZXIg YXJyaXZlZC4KKysKKysyLiAgTmV3IEZlYXR1cmVzIGluIFJlYWRsaW5lCisrCisrYS4gIE5ldyBi aW5kYWJsZSBmdW5jdGlvbjogbWVudS1jb21wbGV0ZS1iYWNrd2FyZC4KKysKKytiLiAgSW4gdGhl IHZpIGluc2VydGlvbiBrZXltYXAsIEMtbiBpcyBub3cgYm91bmQgdG8gbWVudS1jb21wbGV0ZSBi eSBkZWZhdWx0LAorKyAgICBhbmQgQy1wIHRvIG1lbnUtY29tcGxldGUtYmFja3dhcmQuCisrCisr Yy4gIFdoZW4gaW4gdmkgY29tbWFuZCBtb2RlLCByZXBlYXRlZGx5IGhpdHRpbmcgRVNDIG5vdyBk b2VzIG5vdGhpbmcsIGV2ZW4KKysgICAgd2hlbiBFU0MgaW50cm9kdWNlcyBhIGJvdW5kIGtleSBz ZXF1ZW5jZS4gIFRoaXMgaXMgY2xvc2VyIHRvIGhvdworKyAgICBoaXN0b3JpY2FsIHZpIGJlaGF2 ZXMuCisrCisrZC4gIE5ldyBiaW5kYWJsZSBmdW5jdGlvbjogc2tpcC1jc2ktc2VxdWVuY2UuICBD YW4gYmUgdXNlZCBhcyBhIGRlZmF1bHQgdG8KKysgICAgY29uc3VtZSBrZXkgc2VxdWVuY2VzIGdl bmVyYXRlZCBieSBrZXlzIGxpa2UgSG9tZSBhbmQgRW5kIHdpdGhvdXQgaGF2aW5nCisrICAgIHRv IGJpbmQgYWxsIGtleXMuCisrCisrZS4gIE5ldyBhcHBsaWNhdGlvbi1zZXR0YWJsZSBmdW5jdGlv bjogcmxfZmlsZW5hbWVfcmV3cml0ZV9ob29rLiAgQ2FuIGJlIHVzZWQKKysgICAgdG8gcmV3aXRl IG9yIG1vZGlmeSBmaWxlbmFtZXMgcmVhZCBmcm9tIHRoZSBmaWxlIHN5c3RlbSBiZWZvcmUgdGhl eSBhcmUKKysgICAgY29tcGFyZWQgdG8gdGhlIHdvcmQgdG8gYmUgY29tcGxldGVkLgorKworK2Yu ICBOZXcgYmluZGFibGUgdmFyaWFibGU6IHNraXAtY29tcGxldGVkLXRleHQsIGFjdGl2ZSB3aGVu IGNvbXBsZXRpbmcgaW4gdGhlCisrICAgIG1pZGRsZSBvZiBhIHdvcmQuICBJZiBlbmFibGVkLCBp dCBtZWFucyB0aGF0IGNoYXJhY3RlcnMgaW4gdGhlIGNvbXBsZXRpb24KKysgICAgdGhhdCBtYXRj aCBjaGFyYWN0ZXJzIGluIHRoZSByZW1haW5kZXIgb2YgdGhlIHdvcmQgYXJlICJza2lwcGVkIiBy YXRoZXIKKysgICAgdGhhbiBpbnNlcnRlZCBpbnRvIHRoZSBsaW5lLgorKworK2cuICBUaGUgcHJl LXJlYWRsaW5lLTYuMCB2ZXJzaW9uIG9mIG1lbnUgY29tcGxldGlvbiBpcyBhdmFpbGFibGUgYXMK KysgICAgIm9sZC1tZW51LWNvbXBsZXRlIiBmb3IgdXNlcnMgd2hvIGRvIG5vdCBsaWtlIHRoZSBy ZWFkbGluZS02LjAgdmVyc2lvbi4KKysKKytoLiAgTmV3IGJpbmRhYmxlIHZhcmlhYmxlOiBlY2hv LWNvbnRyb2wtY2hhcmFjdGVycy4gIElmIGVuYWJsZWQsIGFuZCB0aGUKKysgICAgdHR5IEVDSE9D VEwgYml0IGlzIHNldCwgY29udHJvbHMgdGhlIGVjaG9pbmcgb2YgY2hhcmFjdGVycyBjb3JyZXNw b25kaW5nCisrICAgIHRvIGtleWJvYXJkLWdlbmVyYXRlZCBzaWduYWxzLgorKworK2kuICBOZXcg YmluZGFibGUgdmFyaWFibGU6IGVuYWJsZS1tZXRhLWtleS4gIENvbnRyb2xzIHdoZXRoZXIgb3Ig bm90IHJlYWRsaW5lCisrICAgIHNlbmRzIHRoZSBzbW0vcm1tIHNlcXVlbmNlcyBpZiB0aGUgdGVy bWluYWwgaW5kaWNhdGVzIGl0IGhhcyBhIG1ldGEga2V5CisrICAgIHRoYXQgZW5hYmxlcyBlaWdo dC1iaXQgY2hhcmFjdGVycy4KKysKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrVGhpcyBkb2N1 bWVudCBkZXRhaWxzIHRoZSBjaGFuZ2VzIGJldHdlZW4gdGhpcyB2ZXJzaW9uLCByZWFkbGluZS02 LjAsCisrYW5kIHRoZSBwcmV2aW91cyB2ZXJzaW9uLCByZWFkbGluZS01LjIuCisrCisrMS4gIENo YW5nZXMgdG8gUmVhZGxpbmUKKysKKythLiAgRml4ZWQgYSBudW1iZXIgb2YgcmVkaXNwbGF5IGVy cm9ycyBpbiBlbnZpcm9ubWVudHMgc3VwcG9ydGluZyBtdWx0aWJ5dGUgCisrICAgIGNoYXJhY3Rl cnMuCisrCisrYi4gIEZpeGVkIGJ1Z3MgaW4gdmkgY29tbWFuZCBtb2RlIHRoYXQgY2F1c2VkIG1v dGlvbiBjb21tYW5kcyB0byBpbmFwcHJvcHJpYXRlbHkKKysgICAgc2V0IHRoZSBtYXJrLgorKwor K2MuICBXaGVuIHVzaW5nIHRoZSBhcnJvdyBrZXlzIGluIHZpIGluc2VydGlvbiBtb2RlLCByZWFk bGluZSBhbGxvd3MgbW92ZW1lbnQKKysgICAgYmV5b25kIHRoZSBjdXJyZW50IGVuZCBvZiB0aGUg bGluZSAodW5saWtlIGNvbW1hbmQgbW9kZSkuCisrCisrZC4gIEZpeGVkIGJ1Z3MgdGhhdCBjYXVz ZWQgcmVhZGxpbmUgdG8gbG9vcCB3aGVuIHRoZSB0ZXJtaW5hbCBoYXMgYmVlbiB0YWtlbgorKyAg ICBhd2F5IGFuZCByZWFkcyByZXR1cm4gLTEvRUlPLgorKworK2UuICBGaXhlZCBidWdzIGluIHJl ZGlzcGxheSBvY2N1cnJpbmcgd2hlbiBkaXNwbGF5aW5nIHByb21wdHMgY29udGFpbmluZworKyAg ICBpbnZpc2libGUgY2hhcmFjdGVycy4KKysKKytmLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQg dGhlIGNvbXBsZXRpb24gYXBwZW5kIGNoYXJhY3RlciB0byBub3QgYmUgcmVzZXQgdG8KKysgICAg dGhlIGRlZmF1bHQgYWZ0ZXIgYW4gYXBwbGljYXRpb24tc3BlY2lmaWVkIGNvbXBsZXRpb24gZnVu Y3Rpb24gY2hhbmdlZCBpdC4KKysKKytnLiAgRml4ZWQgYSBwcm9ibGVtIHRoYXQgY2F1c2VkIGlu Y29ycmVjdCBwb3NpdGlvbmluZyBvZiB0aGUgY3Vyc29yIHdoaWxlIGluCisrICAgIGVtYWNzIGVk aXRpbmcgbW9kZSB3aGVuIG1vdmluZyBmb3J3YXJkIGF0IHRoZSBlbmQgb2YgYSBsaW5lIHdoaWxl IHVzaW5nCisrICAgIGEgbG9jYWxlIHN1cHBvcnRpbmcgbXVsdGlieXRlIGNoYXJhY3RlcnMuCisr CisraC4gIEZpeGVkIGFuIG9mZi1ieS1vbmUgZXJyb3IgdGhhdCBjYXVzZWQgcmVhZGxpbmUgdG8g ZHJvcCBldmVyeSA1MTF0aAorKyAgICBjaGFyYWN0ZXIgb2YgYnVmZmVyZWQgaW5wdXQuCisrCisr aS4gIEZpeGVkIGEgYnVnIHRoYXQgcmVzdWx0ZWQgaW4gU0lHVEVSTSBub3QgYmVpbmcgY2F1Z2h0 IG9yIGNsZWFuZWQgdXAuCisrCisrai4gIEZpeGVkIHJlZGlzcGxheSBidWdzIGNhdXNlZCBieSBt dWx0aWxpbmUgcHJvbXB0cyB3aXRoIGludmlzaWJsZSBjaGFyYWN0ZXJzCisrICAgIG9yIG5vIGNo YXJhY3RlcnMgZm9sbG93aW5nIHRoZSBmaW5hbCBuZXdsaW5lLgorKworK2suICBGaXhlZCByZWRp c3BsYXkgYnVnIGNhdXNlZCBieSBwcm9tcHRzIGNvbnNpc3Rpbmcgc29sZWx5IG9mIGludmlzaWJs ZQorKyAgICBjaGFyYWN0ZXJzLgorKworK2wuICBGaXhlZCBhIGJ1ZyBpbiB0aGUgY29kZSB0aGF0 IGJ1ZmZlcnMgY2hhcmFjdGVycyByZWNlaXZlZCB2ZXJ5IHF1aWNrbHkgaW4KKysgICAgc3VjY2Vz c2lvbiB3aGljaCBjYXVzZWQgY2hhcmFjdGVycyB0byBiZSBkcm9wcGVkLgorKworK20uICBGaXhl ZCBhIGJ1ZyB0aGF0IGNhdXNlZCByZWFkbGluZSB0byByZWZlcmVuY2UgdW5pbml0aWFsaXplZCBk YXRhIHN0cnVjdHVyZXMKKysgICAgaWYgaXQgcmVjZWl2ZWQgYSBTSUdXSU5DSCBiZWZvcmUgY29t cGxldGluZyBpbml0aWFsemF0aW9uLgorKworK24uICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCB0 aGUgdmktbW9kZSBgbGFzdCBjb21tYW5kJyB0byBiZSBzZXQgaW5jb3JyZWN0bHkKKysgICAgYW5k IHRoZXJlZm9yZSB1bnJlcGVhdGFibGUuCisrCisrby4gIEZpeGVkIGEgYnVnIHRoYXQgY2F1c2Vk IHJlYWRsaW5lIHRvIGRpc2FibGUgZWNob2luZyB3aGVuIGl0IHdhcyBiZWluZyB1c2VkCisrICAg IHdpdGggYW4gb3V0cHV0IGZpbGUgZGVzY3JpcHRvciB0aGF0IHdhcyBub3QgYSB0ZXJtaW5hbC4K KysKKytwLiAgUmVhZGxpbmUgbm93IGJsb2NrcyBTSUdJTlQgd2hpbGUgbWFuaXB1bGF0aW5nIGlu dGVybmFsIGRhdGEgc3RydWN0dXJlcworKyAgICBkdXJpbmcgcmVkaXNwbGF5LgorKworK3EuICBG aXhlZCBhIGJ1ZyBpbiByZWRpc3BsYXkgdGhhdCBjYXVzZWQgcmVhZGxpbmUgdG8gc2VnZmF1bHQg d2hlbiBwYXN0aW5nIGEKKysgICAgdmVyeSBsb25nIGxpbmUgKG92ZXIgMTMwLDAwMCBjaGFyYWN0 ZXJzKS4KKysKKytyLiAgRml4ZWQgYnVncyBpbiByZWRpc3BsYXkgd2hlbiB1c2luZyBwcm9tcHRz IHdpdGggbm8gdmlzaWJsZSBwcmludGluZworKyAgICBjaGFyYWN0ZXJzLgorKworK3MuICBGaXhl ZCBhIGJ1ZyB0aGF0IGNhdXNlZCByZWRpc3BsYXkgZXJyb3JzIHdoZW4gdXNpbmcgcHJvbXB0cyB3 aXRoIGludmlzaWJsZQorKyAgICBjaGFyYWN0ZXJzIGFuZCBudW1lcmljIGFyZ3VtZW50cyB0byBh IGNvbW1hbmQgaW4gYSBtdWx0aWJ5dGUgbG9jYWxlLgorKworK3QuICBGaXhlZCBhIGJ1ZyB0aGF0 IGNhdXNlZCByZWRpc3BsYXkgZXJyb3JzIHdoZW4gdXNpbmcgcHJvbXB0cyB3aXRoIGludmlzaWJs ZQorKyAgICBjaGFyYWN0ZXJzIHNwYW5uaW5nIG1vcmUgdGhhbiB0d28gcGh5c2ljYWwgc2NyZWVu IGxpbmVzLgorKworKzIuICBOZXcgRmVhdHVyZXMgaW4gUmVhZGxpbmUKKysKKythLiAgQSBuZXcg dmFyaWFibGUsIHJsX3NvcnRfY29tcGxldGlvbl9tYXRjaGVzOyBhbGxvd3MgYXBwbGljYXRpb25z IHRvIGluaGliaXQKKysgICAgbWF0Y2ggbGlzdCBzb3J0aW5nIChidXQgYmV3YXJlOiBzb21lIHRo aW5ncyBkb24ndCB3b3JrIHJpZ2h0IGlmCisrICAgIGFwcGxpY2F0aW9ucyBkbyB0aGlzKS4KKysK KytiLiAgQSBuZXcgdmFyaWFibGUsIHJsX2NvbXBsZXRpb25faW52b2tpbmdfa2V5OyBhbGxvd3Mg YXBwbGljYXRpb25zIHRvIGRpc2NvdmVyCisrICAgIHRoZSBrZXkgdGhhdCBpbnZva2VkIHJsX2Nv bXBsZXRlIG9yIHJsX21lbnVfY29tcGxldGUuCisrCisrYy4gIFRoZSBmdW5jdGlvbnMgcmxfYmxv Y2tfc2lnaW50IGFuZCBybF9yZWxlYXNlX3NpZ2ludCBhcmUgbm93IHB1YmxpYyBhbmQKKysgICAg YXZhaWxhYmxlIHRvIGNhbGxpbmcgYXBwbGljYXRpb25zIHdobyB3YW50IHRvIHByb3RlY3QgY3Jp dGljYWwgc2VjdGlvbnMKKysgICAgKGxpa2UgcmVkaXNwbGF5KS4KKysKKytkLiAgVGhlIGZ1bmN0 aW9ucyBybF9zYXZlX3N0YXRlIGFuZCBybF9yZXN0b3JlX3N0YXRlIGFyZSBub3cgcHVibGljIGFu ZAorKyAgICBhdmFpbGFibGUgdG8gY2FsbGluZyBhcHBsaWNhdGlvbnM7IGRvY3VtZW50ZWQgcmVz dCBvZiByZWFkbGluZSdzIHN0YXRlCisrICAgIGZsYWcgdmFsdWVzLgorKworK2UuICBBIG5ldyB1 c2VyLXNldHRhYmxlIHZhcmlhYmxlLCBgaGlzdG9yeS1zaXplJywgYWxsb3dzIHNldHRpbmcgdGhl IG1heGltdW0KKysgICAgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGhpc3RvcnkgbGlzdC4KKysK KytmLiAgVGhlcmUgaXMgYSBuZXcgaW1wbGVtZW50YXRpb24gb2YgbWVudSBjb21wbGV0aW9uLCB3 aXRoIHNldmVyYWwgaW1wcm92ZW1lbnRzCisrICAgIG92ZXIgdGhlIG9sZDsgdGhlIG1vc3Qgbm90 YWJsZSBpbXByb3ZlbWVudCBpcyBhIGJldHRlciBgY29tcGxldGlvbnMKKysgICAgYnJvd3Npbmcn IG1vZGUuCisrCisrZy4gIFRoZSBtZW51IGNvbXBsZXRpb24gY29kZSBub3cgdXNlcyB0aGUgcmxf bWVudV9jb21wbGV0aW9uX2VudHJ5X2Z1bmN0aW9uCisrICAgIHZhcmlhYmxlLCBhbGxvd2luZyBh cHBsaWNhdGlvbnMgdG8gcHJvdmlkZSB0aGVpciBvd24gbWVudSBjb21wbGV0aW9uCisrICAgIGdl bmVyYXRvcnMuCisrCisraC4gIFRoZXJlIGlzIHN1cHBvcnQgZm9yIHJlcGxhY2luZyBhIHByZWZp eCAgb2YgYSBwYXRobmFtZSB3aXRoIGEgYC4uLicgd2hlbgorKyAgICBkaXNwbGF5aW5nIHBvc3Np YmxlIGNvbXBsZXRpb25zLiAgVGhpcyBpcyBjb250cm9sbGFibGUgYnkgc2V0dGluZyB0aGUKKysg ICAgYGNvbXBsZXRpb24tcHJlZml4LWRpc3BsYXktbGVuZ3RoJyB2YXJpYWJsZS4gIE1hdGNoZXMg d2l0aCBhIGNvbW1vbiBwcmVmaXgKKysgICAgbG9uZ2VyIHRoYW4gdGhpcyB2YWx1ZSBoYXZlIHRo ZSBjb21tb24gcHJlZml4IHJlcGxhY2VkIHdpdGggYC4uLicuCisrCisraS4gIFRoZXJlIGlzIGEg bmV3IGByZXZlcnQtYWxsLWF0LW5ld2xpbmUnIHZhcmlhYmxlLiAgSWYgZW5hYmxlZCwgcmVhZGxp bmUgd2lsbAorKyAgICB1bmRvIGFsbCBvdXRzdGFuZGluZyBjaGFuZ2VzIHRvIGFsbCBoaXN0b3J5 IGxpbmVzIHdoZW4gYGFjY2VwdC1saW5lJyBpcworKyAgICBleGVjdXRlZC4KKysKKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisrVGhpcyBkb2N1bWVudCBkZXRhaWxzIHRoZSBjaGFuZ2VzIGJldHdl ZW4gdGhpcyB2ZXJzaW9uLCByZWFkbGluZS01LjIsCisrYW5kIHRoZSBwcmV2aW91cyB2ZXJzaW9u LCByZWFkbGluZS01LjEuCisrCisrMS4gIENoYW5nZXMgdG8gUmVhZGxpbmUKKysKKythLiAgRml4 ZWQgYSBwcm9ibGVtIHRoYXQgY2F1c2VkIHNlZ21lbnRhdGlvbiBmYXVsdHMgd2hlbiB1c2luZyBy ZWFkbGluZSBpbgorKyAgICBjYWxsYmFjayBtb2RlIGFuZCB0eXBpbmcgY29uc2VjdXRpdmUgREVM IGNoYXJhY3RlcnMgb24gYW4gZW1wdHkgbGluZS4KKysKKytiLiAgRml4ZWQgc2V2ZXJhbCByZWRp c3BsYXkgcHJvYmxlbXMgd2l0aCBtdWx0aWJ5dGUgY2hhcmFjdGVycywgYWxsIGhhdmluZyB0bwor KyAgICBkbyB3aXRoIHRoZSBkaWZmZXJlbnQgY29kZSBwYXRocyBhbmQgdmFyaWFibGUgbWVhbmlu Z3MgYmV0d2VlbiBzaW5nbGUtYnl0ZQorKyAgICBhbmQgbXVsdGlieXRlIGNoYXJhY3RlciByZWRp c3BsYXkuCisrCisrYy4gIEZpeGVkIGEgcHJvYmxlbSB3aXRoIGtleSBzZXF1ZW5jZSB0cmFuc2xh dGlvbiB3aGVuIHByZXNlbnRlZCB3aXRoIHRoZQorKyAgICBzZXF1ZW5jZSBcTS1cQy14LgorKwor K2QuICBGaXhlZCBhIHByb2JsZW0gdGhhdCBwcmV2ZW50ZWQgdGhlIGBhJyBjb21tYW5kIGluIHZp IG1vZGUgZnJvbSBiZWluZworKyAgICB1bmRvbmUgYW5kIHJlZG9uZSBwcm9wZXJseS4KKysKKytl LiAgRml4ZWQgYSBwcm9ibGVtIHRoYXQgcHJldmVudGVkIGVtcHR5IGluc2VydHMgaW4gdmkgbW9k ZSBmcm9tIGJlaW5nIHVuZG9uZQorKyAgICBwcm9wZXJseS4KKysKKytmLiAgRml4ZWQgYSBwcm9i bGVtIHRoYXQgY2F1c2VkIHJlYWRsaW5lIHRvIGluaXRpYWxpemUgd2l0aCBhbiBpbmNvcnJlY3Qg aWRlYQorKyAgICBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgdGVybWluYWwgY2FuIGF1dG93cmFwLgor KworK2cuICBGaXhlZCBvdXRwdXQgb2Yga2V5IGJpbmRpbmdzIChsaWtlIGJhc2ggYGJpbmQgLXAn KSB0byBob25vciB0aGUgc2V0dGluZyBvZgorKyAgICBjb252ZXJ0LW1ldGEgYW5kIHVzZSBcZSB3 aGVyZSBhcHByb3ByaWF0ZS4KKysKKytoLiAgQ2hhbmdlZCB0aGUgZGVmYXVsdCBmaWxlbmFtZSBj b21wbGV0aW9uIGZ1bmN0aW9uIHRvIGNhbGwgdGhlIGZpbGVuYW1lCisrICAgIGRlcXVvdGluZyBm dW5jdGlvbiBpZiB0aGUgZGlyZWN0b3J5IGNvbXBsZXRpb24gaG9vayBpc24ndCBzZXQuICBUaGlz IG1lYW5zCisrICAgIHRoYXQgYW55IGRpcmVjdG9yeSBjb21wbGV0aW9uIGhvb2tzIG5lZWQgdG8g ZGVxdW90ZSB0aGUgZGlyZWN0b3J5IG5hbWUsCisrICAgIHNpbmNlIGFwcGxpY2F0aW9uLXNwZWNp ZmljIGhvb2tzIG5lZWQgdG8ga25vdyBob3cgdGhlIHdvcmQgd2FzIHF1b3RlZCwKKysgICAgZXZl biBpZiBubyBvdGhlciBjaGFuZ2VzIGFyZSBtYWRlLgorKworK2kuICBGaXhlZCBhIGJ1ZyB3aXRo IGNyZWF0aW5nIHRoZSBwcm9tcHQgZm9yIGEgbm9uLWludGVyYWN0aXZlIHNlYXJjaCBzdHJpbmcK KysgICAgd2hlbiB0aGVyZSBhcmUgbm9uLXByaW50aW5nIGNoYXJhY3RlcnMgaW4gdGhlIHByaW1h cnkgcHJvbXB0LgorKworK2ouICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCBwcm9tcHRzIHdpdGgg aW52aXNpYmxlIGNoYXJhY3RlcnMgdG8gYmUgcmVkcmF3bgorKyAgICBtdWx0aXBsZSB0aW1lcyBp biBhIG11bHRpYnl0ZSBsb2NhbGUuCisrCisray4gIEZpeGVkIGEgYnVnIHRoYXQgY291bGQgY2F1 c2UgdGhlIGtleSBzZXF1ZW5jZSBzY2FubmluZyBjb2RlIHRvIHJldHVybiB0aGUKKysgICAgd3Jv bmcgZnVuY3Rpb24uCisrCisrbC4gIEZpeGVkIGEgcHJvYmxlbSB3aXRoIHRoZSBjYWxsYmFjayBp bnRlcmZhY2UgdGhhdCBjYXVzZWQgaXQgdG8gZmFpbCB3aGVuCisrICAgIHVzaW5nIG11bHRpLWNo YXJhY3RlciBrZXlib2FyZCBtYWNyb3MuCisrCisrbS4gIEZpeGVkIGEgYnVnIHRoYXQgY291bGQg Y2F1c2UgYSBjb3JlIGR1bXAgd2hlbiBhbiBlZGl0ZWQgaGlzdG9yeSBlbnRyeSB3YXMKKysgICAg cmUtZXhlY3V0ZWQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLgorKworK24uICBGaXhlZCBhIGJ1 ZyB0aGF0IGNhdXNlZCByZWFkbGluZSB0byByZWZlcmVuY2UgZnJlZWQgbWVtb3J5IHdoZW4gYXR0 bXB0aW5nCisrICAgIHRvIGRpc3BsYXkgYSBwb3J0aW9uIG9mIHRoZSBwcm9tcHQuCisrCisrby4g IEZpeGVkIGEgYnVnIHdpdGggcHJvbXB0IHJlZGlzcGxheSBpbiBhIG11bHRpLWJ5dGUgbG9jYWxl IHRvIGF2b2lkIHJlZHJhd2luZworKyAgICB0aGUgcHJvbXB0IGFuZCBpbnB1dCBsaW5lIG11bHRp cGxlIHRpbWVzLgorKworK3AuICBGaXhlZCBoaXN0b3J5IGV4cGFuc2lvbiB0byBub3QgYmUgY29u ZnVzZWQgYnkgaGVyZS1zdHJpbmcgcmVkaXJlY3Rpb24uCisrCisrcS4gIFJlYWRsaW5lIG5vIGxv bmdlciB0cmVhdHMgcmVhZCBlcnJvcnMgYnkgY29udmVydGluZyB0aGVtIHRvIG5ld2xpbmVzLCBh cworKyAgICBpdCBkb2VzIHdpdGggRU9GLiAgVGhpcyBjYXVzZWQgcGFydGlhbCBsaW5lcyB0byBi ZSByZXR1cm5lZCBmcm9tIHJlYWRsaW5lKCkuCisrCisrci4gIEZpeGVkIGEgcmVkaXNwbGF5IGJ1 ZyB0aGF0IG9jY3VycmVkIGluIG11bHRpYnl0ZS1jYXBhYmxlIGxvY2FsZXMgd2hlbiB0aGUKKysg ICAgcHJvbXB0IHdhcyBvbmUgY2hhcmFjdGVyIGxvbmdlciB0aGFuIHRoZSBzY3JlZW4gd2lkdGgu CisrCisrMi4gIE5ldyBGZWF0dXJlcyBpbiBSZWFkbGluZQorKworK2EuICBDYWxsaW5nIGFwcGxp Y2F0aW9ucyBjYW4gbm93IHNldCB0aGUga2V5Ym9hcmQgdGltZW91dCB0byAwLCBhbGxvd2luZwor KyAgICBwb2xsLWxpa2UgYmVoYXZpb3IuCisrCisrYi4gIFRoZSB2YWx1ZSBvZiBTWVNfSU5QVVRS QyAoY29uZmlndXJhYmxlIGF0IGNvbXBpbGF0aW9uIHRpbWUpIGlzIG5vdyB1c2VkIGFzCisrICAg IHRoZSBkZWZhdWx0IGxhc3QtZGl0Y2ggc3RhcnR1cCBmaWxlLgorKworK2MuICBUaGUgaGlzdG9y eSBmaWxlIHJlYWRpbmcgZnVuY3Rpb25zIG5vdyBhbGxvdyB3aW5kb3dzLWxpa2UgXHJcbiBsaW5l CisrICAgIHRlcm1pbmF0b3JzLgorKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBUaGlzIGRv Y3VtZW50IGRldGFpbHMgdGhlIGNoYW5nZXMgYmV0d2VlbiB0aGlzIHZlcnNpb24sIHJlYWRsaW5l LTUuMSwKKyBhbmQgdGhlIHByZXZpb3VzIHZlcnNpb24sIHJlYWRsaW5lLTUuMC4KKyAKKy0tLSBh L3JlYWRsaW5lL0NPUFlJTkcKKysrKyBiL3JlYWRsaW5lL0NPUFlJTkcKK0BAIC0xLDI4NSArMSw2 MjYgQEAKKy0JCSAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQorLQkJICAgICAgIFZlcnNp b24gMiwgSnVuZSAxOTkxCisrICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMg TElDRU5TRQorKyAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDcK KyAKKy0gQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAz MzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBCisrIENvcHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4gPGh0dHA6Ly9mc2Yub3JnLz4KKyAgRXZlcnlvbmUgaXMgcGVy bWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCisgIG9mIHRoaXMg bGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgorIAorLQkJ CSAgICBQcmVhbWJsZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVhbWJsZQorIAor LSAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3 YXkgeW91cgorLWZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0LCB0 aGUgR05VIEdlbmVyYWwgUHVibGljCistTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUg eW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgZnJlZQorLXNvZnR3YXJlLS10byBtYWtl IHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCistR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcHBsaWVzIHRvIG1vc3Qgb2YgdGhlIEZyZWUgU29mdHdhcmUK Ky1Gb3VuZGF0aW9uJ3Mgc29mdHdhcmUgYW5kIHRvIGFueSBvdGhlciBwcm9ncmFtIHdob3NlIGF1 dGhvcnMgY29tbWl0IHRvCistdXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQorLXRoZSBHTlUgTGlicmFyeSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bworKyAgVGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGEgZnJlZSwgY29weWxlZnQgbGljZW5zZSBmb3IK Kytzb2Z0d2FyZSBhbmQgb3RoZXIga2luZHMgb2Ygd29ya3MuCisrCisrICBUaGUgbGljZW5zZXMg Zm9yIG1vc3Qgc29mdHdhcmUgYW5kIG90aGVyIHByYWN0aWNhbCB3b3JrcyBhcmUgZGVzaWduZWQK Kyt0byB0YWtlIGF3YXkgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgdGhlIHdvcmtz LiAgQnkgY29udHJhc3QsCisrdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGludGVu ZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8KKytzaGFyZSBhbmQgY2hhbmdlIGFsbCB2 ZXJzaW9ucyBvZiBhIHByb2dyYW0tLXRvIG1ha2Ugc3VyZSBpdCByZW1haW5zIGZyZWUKKytzb2Z0 d2FyZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFdlLCB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCB1c2UgdGhlCisrR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vc3Qgb2Ygb3VyIHNv ZnR3YXJlOyBpdCBhcHBsaWVzIGFsc28gdG8KKythbnkgb3RoZXIgd29yayByZWxlYXNlZCB0aGlz IHdheSBieSBpdHMgYXV0aG9ycy4gIFlvdSBjYW4gYXBwbHkgaXQgdG8KKyB5b3VyIHByb2dyYW1z LCB0b28uCisgCisgICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZl cnJpbmcgdG8gZnJlZWRvbSwgbm90CisgcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQorIGhhdmUgdGhlIGZyZWVkb20g dG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3IKKy10 aGlzIHNlcnZpY2UgaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9y IGNhbiBnZXQgaXQKKy1pZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29m dHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAorLWluIG5ldyBmcmVlIHByb2dyYW1zOyBhbmQgdGhh dCB5b3Uga25vdyB5b3UgY2FuIGRvIHRoZXNlIHRoaW5ncy4KKyt0aGVtIGlmIHlvdSB3aXNoKSwg dGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0IGl0IGlmIHlvdQorK3dhbnQg aXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQg aW4gbmV3CisrZnJlZSBwcm9ncmFtcywgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVz ZSB0aGluZ3MuCisgCistICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2Ug cmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCistYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0 cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgorLVRoZXNlIHJlc3RyaWN0 aW9ucyB0cmFuc2xhdGUgdG8gY2VydGFpbiByZXNwb25zaWJpbGl0aWVzIGZvciB5b3UgaWYgeW91 CistZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0 LgorKyAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBwcmV2ZW50IG90aGVycyBm cm9tIGRlbnlpbmcgeW91CisrdGhlc2UgcmlnaHRzIG9yIGFza2luZyB5b3UgdG8gc3VycmVuZGVy IHRoZSByaWdodHMuICBUaGVyZWZvcmUsIHlvdSBoYXZlCisrY2VydGFpbiByZXNwb25zaWJpbGl0 aWVzIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmCisreW91 IG1vZGlmeSBpdDogcmVzcG9uc2liaWxpdGllcyB0byByZXNwZWN0IHRoZSBmcmVlZG9tIG9mIG90 aGVycy4KKyAKKyAgIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3Vj aCBhIHByb2dyYW0sIHdoZXRoZXIKKy1ncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZl IHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQKKy15b3UgaGF2ZS4gIFlvdSBtdXN0 IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZQorLXNvdXJj ZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cg dGhlaXIKKy1yaWdodHMuCistCistICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0 ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCistKDIpIG9mZmVyIHlvdSB0aGlz IGxpY2Vuc2Ugd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwKKy1kaXN0 cmlidXRlIGFuZC9vciBtb2RpZnkgdGhlIHNvZnR3YXJlLgorLQorLSAgQWxzbywgZm9yIGVhY2gg YXV0aG9yJ3MgcHJvdGVjdGlvbiBhbmQgb3Vycywgd2Ugd2FudCB0byBtYWtlIGNlcnRhaW4KKy10 aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRo aXMgZnJlZQorLXNvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVv bmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQorLXdhbnQgaXRzIHJlY2lwaWVudHMgdG8ga25vdyB0 aGF0IHdoYXQgdGhleSBoYXZlIGlzIG5vdCB0aGUgb3JpZ2luYWwsIHNvCistdGhhdCBhbnkgcHJv YmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUgb3JpZ2lu YWwKKy1hdXRob3JzJyByZXB1dGF0aW9ucy4KKy0KKy0gIEZpbmFsbHksIGFueSBmcmVlIHByb2dy YW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlCistcGF0ZW50cy4gIFdlIHdp c2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQorLXBy b2dyYW0gd2lsbCBpbmRpdmlkdWFsbHkgb2J0YWluIHBhdGVudCBsaWNlbnNlcywgaW4gZWZmZWN0 IG1ha2luZyB0aGUKKy1wcm9ncmFtIHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB3ZSBo YXZlIG1hZGUgaXQgY2xlYXIgdGhhdCBhbnkKKy1wYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3Ig ZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgorK2dyYXRpcyBvciBm b3IgYSBmZWUsIHlvdSBtdXN0IHBhc3Mgb24gdG8gdGhlIHJlY2lwaWVudHMgdGhlIHNhbWUKKytm cmVlZG9tcyB0aGF0IHlvdSByZWNlaXZlZC4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXks IHRvbywgcmVjZWl2ZQorK29yIGNhbiBnZXQgdGhlIHNvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0 IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5Cisra25vdyB0aGVpciByaWdodHMuCisrCisr ICBEZXZlbG9wZXJzIHRoYXQgdXNlIHRoZSBHTlUgR1BMIHByb3RlY3QgeW91ciByaWdodHMgd2l0 aCB0d28gc3RlcHM6CisrKDEpIGFzc2VydCBjb3B5cmlnaHQgb24gdGhlIHNvZnR3YXJlLCBhbmQg KDIpIG9mZmVyIHlvdSB0aGlzIExpY2Vuc2UKKytnaXZpbmcgeW91IGxlZ2FsIHBlcm1pc3Npb24g dG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IGl0LgorKworKyAgRm9yIHRoZSBkZXZl bG9wZXJzJyBhbmQgYXV0aG9ycycgcHJvdGVjdGlvbiwgdGhlIEdQTCBjbGVhcmx5IGV4cGxhaW5z CisrdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlIHNvZnR3YXJlLiAgRm9y IGJvdGggdXNlcnMnIGFuZAorK2F1dGhvcnMnIHNha2UsIHRoZSBHUEwgcmVxdWlyZXMgdGhhdCBt b2RpZmllZCB2ZXJzaW9ucyBiZSBtYXJrZWQgYXMKKytjaGFuZ2VkLCBzbyB0aGF0IHRoZWlyIHBy b2JsZW1zIHdpbGwgbm90IGJlIGF0dHJpYnV0ZWQgZXJyb25lb3VzbHkgdG8KKythdXRob3JzIG9m IHByZXZpb3VzIHZlcnNpb25zLgorKworKyAgU29tZSBkZXZpY2VzIGFyZSBkZXNpZ25lZCB0byBk ZW55IHVzZXJzIGFjY2VzcyB0byBpbnN0YWxsIG9yIHJ1bgorK21vZGlmaWVkIHZlcnNpb25zIG9m IHRoZSBzb2Z0d2FyZSBpbnNpZGUgdGhlbSwgYWx0aG91Z2ggdGhlIG1hbnVmYWN0dXJlcgorK2Nh biBkbyBzby4gIFRoaXMgaXMgZnVuZGFtZW50YWxseSBpbmNvbXBhdGlibGUgd2l0aCB0aGUgYWlt IG9mCisrcHJvdGVjdGluZyB1c2VycycgZnJlZWRvbSB0byBjaGFuZ2UgdGhlIHNvZnR3YXJlLiAg VGhlIHN5c3RlbWF0aWMKKytwYXR0ZXJuIG9mIHN1Y2ggYWJ1c2Ugb2NjdXJzIGluIHRoZSBhcmVh IG9mIHByb2R1Y3RzIGZvciBpbmRpdmlkdWFscyB0bworK3VzZSwgd2hpY2ggaXMgcHJlY2lzZWx5 IHdoZXJlIGl0IGlzIG1vc3QgdW5hY2NlcHRhYmxlLiAgVGhlcmVmb3JlLCB3ZQorK2hhdmUgZGVz aWduZWQgdGhpcyB2ZXJzaW9uIG9mIHRoZSBHUEwgdG8gcHJvaGliaXQgdGhlIHByYWN0aWNlIGZv ciB0aG9zZQorK3Byb2R1Y3RzLiAgSWYgc3VjaCBwcm9ibGVtcyBhcmlzZSBzdWJzdGFudGlhbGx5 IGluIG90aGVyIGRvbWFpbnMsIHdlCisrc3RhbmQgcmVhZHkgdG8gZXh0ZW5kIHRoaXMgcHJvdmlz aW9uIHRvIHRob3NlIGRvbWFpbnMgaW4gZnV0dXJlIHZlcnNpb25zCisrb2YgdGhlIEdQTCwgYXMg bmVlZGVkIHRvIHByb3RlY3QgdGhlIGZyZWVkb20gb2YgdXNlcnMuCisrCisrICBGaW5hbGx5LCBl dmVyeSBwcm9ncmFtIGlzIHRocmVhdGVuZWQgY29uc3RhbnRseSBieSBzb2Z0d2FyZSBwYXRlbnRz LgorK1N0YXRlcyBzaG91bGQgbm90IGFsbG93IHBhdGVudHMgdG8gcmVzdHJpY3QgZGV2ZWxvcG1l bnQgYW5kIHVzZSBvZgorK3NvZnR3YXJlIG9uIGdlbmVyYWwtcHVycG9zZSBjb21wdXRlcnMsIGJ1 dCBpbiB0aG9zZSB0aGF0IGRvLCB3ZSB3aXNoIHRvCisrYXZvaWQgdGhlIHNwZWNpYWwgZGFuZ2Vy IHRoYXQgcGF0ZW50cyBhcHBsaWVkIHRvIGEgZnJlZSBwcm9ncmFtIGNvdWxkCisrbWFrZSBpdCBl ZmZlY3RpdmVseSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgdGhlIEdQTCBhc3N1cmVz IHRoYXQKKytwYXRlbnRzIGNhbm5vdCBiZSB1c2VkIHRvIHJlbmRlciB0aGUgcHJvZ3JhbSBub24t ZnJlZS4KKyAKKyAgIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5n LCBkaXN0cmlidXRpb24gYW5kCisgbW9kaWZpY2F0aW9uIGZvbGxvdy4KKy0MCistCQkgICAgR05V IEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKKy0gICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09Q WUlORywgRElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KKy0KKy0gIDAuIFRoaXMgTGljZW5z ZSBhcHBsaWVzIHRvIGFueSBwcm9ncmFtIG9yIG90aGVyIHdvcmsgd2hpY2ggY29udGFpbnMKKy1h IG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBk aXN0cmlidXRlZAorLXVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIEdlbmVyYWwgUHVibGljIExpY2Vu c2UuICBUaGUgIlByb2dyYW0iLCBiZWxvdywKKy1yZWZlcnMgdG8gYW55IHN1Y2ggcHJvZ3JhbSBv ciB3b3JrLCBhbmQgYSAid29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSIKKy1tZWFucyBlaXRoZXIg dGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlciBjb3B5cmlnaHQgbGF3Ogor LXRoYXQgaXMgdG8gc2F5LCBhIHdvcmsgY29udGFpbmluZyB0aGUgUHJvZ3JhbSBvciBhIHBvcnRp b24gb2YgaXQsCistZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3Ig dHJhbnNsYXRlZCBpbnRvIGFub3RoZXIKKy1sYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNs YXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluCistdGhlIHRlcm0gIm1vZGlm aWNhdGlvbiIuKSAgRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCistCistQWN0 aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9u IGFyZSBub3QKKy1jb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZTsgdGhleSBhcmUgb3V0c2lkZSBpdHMg c2NvcGUuICBUaGUgYWN0IG9mCistcnVubmluZyB0aGUgUHJvZ3JhbSBpcyBub3QgcmVzdHJpY3Rl ZCwgYW5kIHRoZSBvdXRwdXQgZnJvbSB0aGUgUHJvZ3JhbQorLWlzIGNvdmVyZWQgb25seSBpZiBp dHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24gdGhlCistUHJvZ3JhbSAoaW5k ZXBlbmRlbnQgb2YgaGF2aW5nIGJlZW4gbWFkZSBieSBydW5uaW5nIHRoZSBQcm9ncmFtKS4KKy1X aGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIFByb2dyYW0gZG9lcy4KKy0K Ky0gIDEuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhl IFByb2dyYW0ncworLXNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVt LCBwcm92aWRlZCB0aGF0IHlvdQorLWNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkgcHVi bGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUKKy1jb3B5cmlnaHQgbm90aWNlIGFuZCBk aXNjbGFpbWVyIG9mIHdhcnJhbnR5OyBrZWVwIGludGFjdCBhbGwgdGhlCistbm90aWNlcyB0aGF0 IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5 OworLWFuZCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBv ZiB0aGlzIExpY2Vuc2UKKy1hbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgorLQorLVlvdSBtYXkgY2hh cmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFu ZAorLXlvdSBtYXkgYXQgeW91ciBvcHRpb24gb2ZmZXIgd2FycmFudHkgcHJvdGVjdGlvbiBpbiBl eGNoYW5nZSBmb3IgYSBmZWUuCistCistICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3Ig Y29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uCistb2YgaXQsIHRodXMgZm9ybWlu ZyBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0sIGFuZCBjb3B5IGFuZAorLWRpc3RyaWJ1dGUg c3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQor LWFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlv bnM6CistCistICAgIGEpIFlvdSBtdXN0IGNhdXNlIHRoZSBtb2RpZmllZCBmaWxlcyB0byBjYXJy eSBwcm9taW5lbnQgbm90aWNlcworLSAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZp bGVzIGFuZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLgorLQorLSAgICBiKSBZb3UgbXVzdCBjYXVz ZSBhbnkgd29yayB0aGF0IHlvdSBkaXN0cmlidXRlIG9yIHB1Ymxpc2gsIHRoYXQgaW4KKy0gICAg d2hvbGUgb3IgaW4gcGFydCBjb250YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0g b3IgYW55CistICAgIHBhcnQgdGhlcmVvZiwgdG8gYmUgbGljZW5zZWQgYXMgYSB3aG9sZSBhdCBu byBjaGFyZ2UgdG8gYWxsIHRoaXJkCistICAgIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRo aXMgTGljZW5zZS4KKy0KKy0gICAgYykgSWYgdGhlIG1vZGlmaWVkIHByb2dyYW0gbm9ybWFsbHkg cmVhZHMgY29tbWFuZHMgaW50ZXJhY3RpdmVseQorLSAgICB3aGVuIHJ1biwgeW91IG11c3QgY2F1 c2UgaXQsIHdoZW4gc3RhcnRlZCBydW5uaW5nIGZvciBzdWNoCistICAgIGludGVyYWN0aXZlIHVz ZSBpbiB0aGUgbW9zdCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkgYW4KKy0gICAg YW5ub3VuY2VtZW50IGluY2x1ZGluZyBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCBhCistICAgIG5vdGljZSB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IChvciBlbHNlLCBzYXlp bmcgdGhhdCB5b3UgcHJvdmlkZQorLSAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkg cmVkaXN0cmlidXRlIHRoZSBwcm9ncmFtIHVuZGVyCistICAgIHRoZXNlIGNvbmRpdGlvbnMsIGFu ZCB0ZWxsaW5nIHRoZSB1c2VyIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzCistICAgIExpY2Vu c2UuICAoRXhjZXB0aW9uOiBpZiB0aGUgUHJvZ3JhbSBpdHNlbGYgaXMgaW50ZXJhY3RpdmUgYnV0 CistICAgIGRvZXMgbm90IG5vcm1hbGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3Vy IHdvcmsgYmFzZWQgb24KKy0gICAgdGhlIFByb2dyYW0gaXMgbm90IHJlcXVpcmVkIHRvIHByaW50 IGFuIGFubm91bmNlbWVudC4pCistDAorLVRoZXNlIHJlcXVpcmVtZW50cyBhcHBseSB0byB0aGUg bW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiAgSWYKKy1pZGVudGlmaWFibGUgc2VjdGlvbnMgb2Yg dGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLAorLWFuZCBjYW4gYmUg cmVhc29uYWJseSBjb25zaWRlcmVkIGluZGVwZW5kZW50IGFuZCBzZXBhcmF0ZSB3b3JrcyBpbgor LXRoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQgaXRzIHRlcm1zLCBkbyBub3QgYXBw bHkgdG8gdGhvc2UKKy1zZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJh dGUgd29ya3MuICBCdXQgd2hlbiB5b3UKKy1kaXN0cmlidXRlIHRoZSBzYW1lIHNlY3Rpb25zIGFz IHBhcnQgb2YgYSB3aG9sZSB3aGljaCBpcyBhIHdvcmsgYmFzZWQKKy1vbiB0aGUgUHJvZ3JhbSwg dGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd2hvbGUgbXVzdCBiZSBvbiB0aGUgdGVybXMgb2YKKy10 aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5k IHRvIHRoZQorLWVudGlyZSB3aG9sZSwgYW5kIHRodXMgdG8gZWFjaCBhbmQgZXZlcnkgcGFydCBy ZWdhcmRsZXNzIG9mIHdobyB3cm90ZSBpdC4KKy0KKy1UaHVzLCBpdCBpcyBub3QgdGhlIGludGVu dCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKKy15b3VyIHJpZ2h0 cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMg dG8KKy1leGVyY2lzZSB0aGUgcmlnaHQgdG8gY29udHJvbCB0aGUgZGlzdHJpYnV0aW9uIG9mIGRl cml2YXRpdmUgb3IKKy1jb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgorLQor LUluIGFkZGl0aW9uLCBtZXJlIGFnZ3JlZ2F0aW9uIG9mIGFub3RoZXIgd29yayBub3QgYmFzZWQg b24gdGhlIFByb2dyYW0KKy13aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBv biB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YKKy1hIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9u IG1lZGl1bSBkb2VzIG5vdCBicmluZyB0aGUgb3RoZXIgd29yayB1bmRlcgorLXRoZSBzY29wZSBv ZiB0aGlzIExpY2Vuc2UuCistCistICAzLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdGhl IFByb2dyYW0gKG9yIGEgd29yayBiYXNlZCBvbiBpdCwKKy11bmRlciBTZWN0aW9uIDIpIGluIG9i amVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB1bmRlciB0aGUgdGVybXMgb2YKKy1TZWN0aW9u cyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xs b3dpbmc6CistCistICAgIGEpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNw b25kaW5nIG1hY2hpbmUtcmVhZGFibGUKKy0gICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUg ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zCistICAgIDEgYW5kIDIgYWJv dmUgb24gYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7 IG9yLAorLQorLSAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlk IGZvciBhdCBsZWFzdCB0aHJlZQorLSAgICB5ZWFycywgdG8gZ2l2ZSBhbnkgdGhpcmQgcGFydHks IGZvciBhIGNoYXJnZSBubyBtb3JlIHRoYW4geW91cgorLSAgICBjb3N0IG9mIHBoeXNpY2FsbHkg cGVyZm9ybWluZyBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNvbXBsZXRlCistICAgIG1hY2hpbmUt cmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUKKy0g ICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUg b24gYSBtZWRpdW0KKy0gICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFu Z2U7IG9yLAorLQorLSAgICBjKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91 IHJlY2VpdmVkIGFzIHRvIHRoZSBvZmZlcgorLSAgICB0byBkaXN0cmlidXRlIGNvcnJlc3BvbmRp bmcgc291cmNlIGNvZGUuICAoVGhpcyBhbHRlcm5hdGl2ZSBpcworLSAgICBhbGxvd2VkIG9ubHkg Zm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQorLSAgICByZWNl aXZlZCB0aGUgcHJvZ3JhbSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0gd2l0aCBz dWNoCistICAgIGFuIG9mZmVyLCBpbiBhY2NvcmQgd2l0aCBTdWJzZWN0aW9uIGIgYWJvdmUuKQor LQorLVRoZSBzb3VyY2UgY29kZSBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBv ZiB0aGUgd29yayBmb3IKKy1tYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gIEZvciBhbiBleGVj dXRhYmxlIHdvcmssIGNvbXBsZXRlIHNvdXJjZQorLWNvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2Ug Y29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55CistYXNzb2NpYXRlZCBp bnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxlcywgcGx1cyB0aGUgc2NyaXB0cyB1c2VkIHRvCistY29u dHJvbCBjb21waWxhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIG9mIHRoZSBleGVjdXRhYmxlLiAgSG93 ZXZlciwgYXMgYQorLXNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0 ZWQgbmVlZCBub3QgaW5jbHVkZQorLWFueXRoaW5nIHRoYXQgaXMgbm9ybWFsbHkgZGlzdHJpYnV0 ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5CistZm9ybSkgd2l0aCB0aGUgbWFqb3IgY29t cG9uZW50cyAoY29tcGlsZXIsIGtlcm5lbCwgYW5kIHNvIG9uKSBvZiB0aGUKKy1vcGVyYXRpbmcg c3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVu dAorLWl0c2VsZiBhY2NvbXBhbmllcyB0aGUgZXhlY3V0YWJsZS4KKy0KKy1JZiBkaXN0cmlidXRp b24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nCistYWNj ZXNzIHRvIGNvcHkgZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZh bGVudAorLWFjY2VzcyB0byBjb3B5IHRoZSBzb3VyY2UgY29kZSBmcm9tIHRoZSBzYW1lIHBsYWNl IGNvdW50cyBhcworLWRpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdo IHRoaXJkIHBhcnRpZXMgYXJlIG5vdAorLWNvbXBlbGxlZCB0byBjb3B5IHRoZSBzb3VyY2UgYWxv bmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuCistDAorLSAgNC4gWW91IG1heSBub3QgY29weSwgbW9k aWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCistZXhjZXB0IGFzIGV4 cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdAorLW90aGVy d2lzZSB0byBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2Ugb3IgZGlzdHJpYnV0ZSB0aGUgUHJvZ3Jh bSBpcworLXZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRz IHVuZGVyIHRoaXMgTGljZW5zZS4KKy1Ib3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVk IGNvcGllcywgb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlcgorLXRoaXMgTGljZW5zZSB3aWxsIG5v dCBoYXZlIHRoZWlyIGxpY2Vuc2VzIHRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoCistcGFydGll cyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgorLQorLSAgNS4gWW91IGFyZSBub3QgcmVxdWly ZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90Cistc2lnbmVkIGl0 LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkg b3IKKy1kaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhl c2UgYWN0aW9ucyBhcmUKKy1wcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0 aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5CistbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0 aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCistUHJvZ3JhbSksIHlvdSBpbmRp Y2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKKy1hbGwg aXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9k aWZ5aW5nCistdGhlIFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuCistCistICA2LiBFYWNo IHRpbWUgeW91IHJlZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24g dGhlCistUHJvZ3JhbSksIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGxp Y2Vuc2UgZnJvbSB0aGUKKy1vcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9y IG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvCistdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlv bnMuICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKKy1yZXN0cmljdGlvbnMgb24gdGhl IHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCistWW91 IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBh cnRpZXMgdG8KKysKKysgICAgICAgICAgICAgICAgICAgICAgIFRFUk1TIEFORCBDT05ESVRJT05T CisrCisrICAwLiBEZWZpbml0aW9ucy4KKysKKysgICJUaGlzIExpY2Vuc2UiIHJlZmVycyB0byB2 ZXJzaW9uIDMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorKworKyAgIkNvcHly aWdodCIgYWxzbyBtZWFucyBjb3B5cmlnaHQtbGlrZSBsYXdzIHRoYXQgYXBwbHkgdG8gb3RoZXIg a2luZHMgb2YKKyt3b3Jrcywgc3VjaCBhcyBzZW1pY29uZHVjdG9yIG1hc2tzLgorKworKyAgIlRo ZSBQcm9ncmFtIiByZWZlcnMgdG8gYW55IGNvcHlyaWdodGFibGUgd29yayBsaWNlbnNlZCB1bmRl ciB0aGlzCisrTGljZW5zZS4gIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLiAg IkxpY2Vuc2VlcyIgYW5kCisrInJlY2lwaWVudHMiIG1heSBiZSBpbmRpdmlkdWFscyBvciBvcmdh bml6YXRpb25zLgorKworKyAgVG8gIm1vZGlmeSIgYSB3b3JrIG1lYW5zIHRvIGNvcHkgZnJvbSBv ciBhZGFwdCBhbGwgb3IgcGFydCBvZiB0aGUgd29yaworK2luIGEgZmFzaGlvbiByZXF1aXJpbmcg Y29weXJpZ2h0IHBlcm1pc3Npb24sIG90aGVyIHRoYW4gdGhlIG1ha2luZyBvZiBhbgorK2V4YWN0 IGNvcHkuICBUaGUgcmVzdWx0aW5nIHdvcmsgaXMgY2FsbGVkIGEgIm1vZGlmaWVkIHZlcnNpb24i IG9mIHRoZQorK2VhcmxpZXIgd29yayBvciBhIHdvcmsgImJhc2VkIG9uIiB0aGUgZWFybGllciB3 b3JrLgorKworKyAgQSAiY292ZXJlZCB3b3JrIiBtZWFucyBlaXRoZXIgdGhlIHVubW9kaWZpZWQg UHJvZ3JhbSBvciBhIHdvcmsgYmFzZWQKKytvbiB0aGUgUHJvZ3JhbS4KKysKKysgIFRvICJwcm9w YWdhdGUiIGEgd29yayBtZWFucyB0byBkbyBhbnl0aGluZyB3aXRoIGl0IHRoYXQsIHdpdGhvdXQK KytwZXJtaXNzaW9uLCB3b3VsZCBtYWtlIHlvdSBkaXJlY3RseSBvciBzZWNvbmRhcmlseSBsaWFi bGUgZm9yCisraW5mcmluZ2VtZW50IHVuZGVyIGFwcGxpY2FibGUgY29weXJpZ2h0IGxhdywgZXhj ZXB0IGV4ZWN1dGluZyBpdCBvbiBhCisrY29tcHV0ZXIgb3IgbW9kaWZ5aW5nIGEgcHJpdmF0ZSBj b3B5LiAgUHJvcGFnYXRpb24gaW5jbHVkZXMgY29weWluZywKKytkaXN0cmlidXRpb24gKHdpdGgg b3Igd2l0aG91dCBtb2RpZmljYXRpb24pLCBtYWtpbmcgYXZhaWxhYmxlIHRvIHRoZQorK3B1Ymxp YywgYW5kIGluIHNvbWUgY291bnRyaWVzIG90aGVyIGFjdGl2aXRpZXMgYXMgd2VsbC4KKysKKysg IFRvICJjb252ZXkiIGEgd29yayBtZWFucyBhbnkga2luZCBvZiBwcm9wYWdhdGlvbiB0aGF0IGVu YWJsZXMgb3RoZXIKKytwYXJ0aWVzIHRvIG1ha2Ugb3IgcmVjZWl2ZSBjb3BpZXMuICBNZXJlIGlu dGVyYWN0aW9uIHdpdGggYSB1c2VyIHRocm91Z2gKKythIGNvbXB1dGVyIG5ldHdvcmssIHdpdGgg bm8gdHJhbnNmZXIgb2YgYSBjb3B5LCBpcyBub3QgY29udmV5aW5nLgorKworKyAgQW4gaW50ZXJh Y3RpdmUgdXNlciBpbnRlcmZhY2UgZGlzcGxheXMgIkFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXMi CisrdG8gdGhlIGV4dGVudCB0aGF0IGl0IGluY2x1ZGVzIGEgY29udmVuaWVudCBhbmQgcHJvbWlu ZW50bHkgdmlzaWJsZQorK2ZlYXR1cmUgdGhhdCAoMSkgZGlzcGxheXMgYW4gYXBwcm9wcmlhdGUg Y29weXJpZ2h0IG5vdGljZSwgYW5kICgyKQorK3RlbGxzIHRoZSB1c2VyIHRoYXQgdGhlcmUgaXMg bm8gd2FycmFudHkgZm9yIHRoZSB3b3JrIChleGNlcHQgdG8gdGhlCisrZXh0ZW50IHRoYXQgd2Fy cmFudGllcyBhcmUgcHJvdmlkZWQpLCB0aGF0IGxpY2Vuc2VlcyBtYXkgY29udmV5IHRoZQorK3dv cmsgdW5kZXIgdGhpcyBMaWNlbnNlLCBhbmQgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgTGlj ZW5zZS4gIElmCisrdGhlIGludGVyZmFjZSBwcmVzZW50cyBhIGxpc3Qgb2YgdXNlciBjb21tYW5k cyBvciBvcHRpb25zLCBzdWNoIGFzIGEKKyttZW51LCBhIHByb21pbmVudCBpdGVtIGluIHRoZSBs aXN0IG1lZXRzIHRoaXMgY3JpdGVyaW9uLgorKworKyAgMS4gU291cmNlIENvZGUuCisrCisrICBU aGUgInNvdXJjZSBjb2RlIiBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0 aGUgd29yaworK2ZvciBtYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gICJPYmplY3QgY29kZSIg bWVhbnMgYW55IG5vbi1zb3VyY2UKKytmb3JtIG9mIGEgd29yay4KKysKKysgIEEgIlN0YW5kYXJk IEludGVyZmFjZSIgbWVhbnMgYW4gaW50ZXJmYWNlIHRoYXQgZWl0aGVyIGlzIGFuIG9mZmljaWFs Cisrc3RhbmRhcmQgZGVmaW5lZCBieSBhIHJlY29nbml6ZWQgc3RhbmRhcmRzIGJvZHksIG9yLCBp biB0aGUgY2FzZSBvZgorK2ludGVyZmFjZXMgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgcHJv Z3JhbW1pbmcgbGFuZ3VhZ2UsIG9uZSB0aGF0CisraXMgd2lkZWx5IHVzZWQgYW1vbmcgZGV2ZWxv cGVycyB3b3JraW5nIGluIHRoYXQgbGFuZ3VhZ2UuCisrCisrICBUaGUgIlN5c3RlbSBMaWJyYXJp ZXMiIG9mIGFuIGV4ZWN1dGFibGUgd29yayBpbmNsdWRlIGFueXRoaW5nLCBvdGhlcgorK3RoYW4g dGhlIHdvcmsgYXMgYSB3aG9sZSwgdGhhdCAoYSkgaXMgaW5jbHVkZWQgaW4gdGhlIG5vcm1hbCBm b3JtIG9mCisrcGFja2FnaW5nIGEgTWFqb3IgQ29tcG9uZW50LCBidXQgd2hpY2ggaXMgbm90IHBh cnQgb2YgdGhhdCBNYWpvcgorK0NvbXBvbmVudCwgYW5kIChiKSBzZXJ2ZXMgb25seSB0byBlbmFi bGUgdXNlIG9mIHRoZSB3b3JrIHdpdGggdGhhdAorK01ham9yIENvbXBvbmVudCwgb3IgdG8gaW1w bGVtZW50IGEgU3RhbmRhcmQgSW50ZXJmYWNlIGZvciB3aGljaCBhbgorK2ltcGxlbWVudGF0aW9u IGlzIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluIHNvdXJjZSBjb2RlIGZvcm0uICBBCisrIk1h am9yIENvbXBvbmVudCIsIGluIHRoaXMgY29udGV4dCwgbWVhbnMgYSBtYWpvciBlc3NlbnRpYWwg Y29tcG9uZW50CisrKGtlcm5lbCwgd2luZG93IHN5c3RlbSwgYW5kIHNvIG9uKSBvZiB0aGUgc3Bl Y2lmaWMgb3BlcmF0aW5nIHN5c3RlbQorKyhpZiBhbnkpIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxl IHdvcmsgcnVucywgb3IgYSBjb21waWxlciB1c2VkIHRvCisrcHJvZHVjZSB0aGUgd29yaywgb3Ig YW4gb2JqZWN0IGNvZGUgaW50ZXJwcmV0ZXIgdXNlZCB0byBydW4gaXQuCisrCisrICBUaGUgIkNv cnJlc3BvbmRpbmcgU291cmNlIiBmb3IgYSB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gbWVhbnMg YWxsCisrdGhlIHNvdXJjZSBjb2RlIG5lZWRlZCB0byBnZW5lcmF0ZSwgaW5zdGFsbCwgYW5kIChm b3IgYW4gZXhlY3V0YWJsZQorK3dvcmspIHJ1biB0aGUgb2JqZWN0IGNvZGUgYW5kIHRvIG1vZGlm eSB0aGUgd29yaywgaW5jbHVkaW5nIHNjcmlwdHMgdG8KKytjb250cm9sIHRob3NlIGFjdGl2aXRp ZXMuICBIb3dldmVyLCBpdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB3b3JrJ3MKKytTeXN0ZW0gTGli cmFyaWVzLCBvciBnZW5lcmFsLXB1cnBvc2UgdG9vbHMgb3IgZ2VuZXJhbGx5IGF2YWlsYWJsZSBm cmVlCisrcHJvZ3JhbXMgd2hpY2ggYXJlIHVzZWQgdW5tb2RpZmllZCBpbiBwZXJmb3JtaW5nIHRo b3NlIGFjdGl2aXRpZXMgYnV0Cisrd2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHRoZSB3b3JrLiAgRm9y IGV4YW1wbGUsIENvcnJlc3BvbmRpbmcgU291cmNlCisraW5jbHVkZXMgaW50ZXJmYWNlIGRlZmlu aXRpb24gZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHNvdXJjZSBmaWxlcyBmb3IKKyt0aGUgd29yaywg YW5kIHRoZSBzb3VyY2UgY29kZSBmb3Igc2hhcmVkIGxpYnJhcmllcyBhbmQgZHluYW1pY2FsbHkK KytsaW5rZWQgc3VicHJvZ3JhbXMgdGhhdCB0aGUgd29yayBpcyBzcGVjaWZpY2FsbHkgZGVzaWdu ZWQgdG8gcmVxdWlyZSwKKytzdWNoIGFzIGJ5IGludGltYXRlIGRhdGEgY29tbXVuaWNhdGlvbiBv ciBjb250cm9sIGZsb3cgYmV0d2VlbiB0aG9zZQorK3N1YnByb2dyYW1zIGFuZCBvdGhlciBwYXJ0 cyBvZiB0aGUgd29yay4KKysKKysgIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBuZWVkIG5vdCBp bmNsdWRlIGFueXRoaW5nIHRoYXQgdXNlcnMKKytjYW4gcmVnZW5lcmF0ZSBhdXRvbWF0aWNhbGx5 IGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIENvcnJlc3BvbmRpbmcKKytTb3VyY2UuCisrCisrICBU aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGEgd29yayBpbiBzb3VyY2UgY29kZSBmb3JtIGlz IHRoYXQKKytzYW1lIHdvcmsuCisrCisrICAyLiBCYXNpYyBQZXJtaXNzaW9ucy4KKysKKysgIEFs bCByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UgYXJlIGdyYW50ZWQgZm9yIHRoZSB0 ZXJtIG9mCisrY29weXJpZ2h0IG9uIHRoZSBQcm9ncmFtLCBhbmQgYXJlIGlycmV2b2NhYmxlIHBy b3ZpZGVkIHRoZSBzdGF0ZWQKKytjb25kaXRpb25zIGFyZSBtZXQuICBUaGlzIExpY2Vuc2UgZXhw bGljaXRseSBhZmZpcm1zIHlvdXIgdW5saW1pdGVkCisrcGVybWlzc2lvbiB0byBydW4gdGhlIHVu bW9kaWZpZWQgUHJvZ3JhbS4gIFRoZSBvdXRwdXQgZnJvbSBydW5uaW5nIGEKKytjb3ZlcmVkIHdv cmsgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vuc2Ugb25seSBpZiB0aGUgb3V0cHV0LCBnaXZlbiBp dHMKKytjb250ZW50LCBjb25zdGl0dXRlcyBhIGNvdmVyZWQgd29yay4gIFRoaXMgTGljZW5zZSBh Y2tub3dsZWRnZXMgeW91cgorK3JpZ2h0cyBvZiBmYWlyIHVzZSBvciBvdGhlciBlcXVpdmFsZW50 LCBhcyBwcm92aWRlZCBieSBjb3B5cmlnaHQgbGF3LgorKworKyAgWW91IG1heSBtYWtlLCBydW4g YW5kIHByb3BhZ2F0ZSBjb3ZlcmVkIHdvcmtzIHRoYXQgeW91IGRvIG5vdAorK2NvbnZleSwgd2l0 aG91dCBjb25kaXRpb25zIHNvIGxvbmcgYXMgeW91ciBsaWNlbnNlIG90aGVyd2lzZSByZW1haW5z CisraW4gZm9yY2UuICBZb3UgbWF5IGNvbnZleSBjb3ZlcmVkIHdvcmtzIHRvIG90aGVycyBmb3Ig dGhlIHNvbGUgcHVycG9zZQorK29mIGhhdmluZyB0aGVtIG1ha2UgbW9kaWZpY2F0aW9ucyBleGNs dXNpdmVseSBmb3IgeW91LCBvciBwcm92aWRlIHlvdQorK3dpdGggZmFjaWxpdGllcyBmb3IgcnVu bmluZyB0aG9zZSB3b3JrcywgcHJvdmlkZWQgdGhhdCB5b3UgY29tcGx5IHdpdGgKKyt0aGUgdGVy bXMgb2YgdGhpcyBMaWNlbnNlIGluIGNvbnZleWluZyBhbGwgbWF0ZXJpYWwgZm9yIHdoaWNoIHlv dSBkbworK25vdCBjb250cm9sIGNvcHlyaWdodC4gIFRob3NlIHRodXMgbWFraW5nIG9yIHJ1bm5p bmcgdGhlIGNvdmVyZWQgd29ya3MKKytmb3IgeW91IG11c3QgZG8gc28gZXhjbHVzaXZlbHkgb24g eW91ciBiZWhhbGYsIHVuZGVyIHlvdXIgZGlyZWN0aW9uCisrYW5kIGNvbnRyb2wsIG9uIHRlcm1z IHRoYXQgcHJvaGliaXQgdGhlbSBmcm9tIG1ha2luZyBhbnkgY29waWVzIG9mCisreW91ciBjb3B5 cmlnaHRlZCBtYXRlcmlhbCBvdXRzaWRlIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoIHlvdS4KKysK KysgIENvbnZleWluZyB1bmRlciBhbnkgb3RoZXIgY2lyY3Vtc3RhbmNlcyBpcyBwZXJtaXR0ZWQg c29sZWx5IHVuZGVyCisrdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGJlbG93LiAgU3VibGljZW5zaW5n IGlzIG5vdCBhbGxvd2VkOyBzZWN0aW9uIDEwCisrbWFrZXMgaXQgdW5uZWNlc3NhcnkuCisrCisr ICAzLiBQcm90ZWN0aW5nIFVzZXJzJyBMZWdhbCBSaWdodHMgRnJvbSBBbnRpLUNpcmN1bXZlbnRp b24gTGF3LgorKworKyAgTm8gY292ZXJlZCB3b3JrIHNoYWxsIGJlIGRlZW1lZCBwYXJ0IG9mIGFu IGVmZmVjdGl2ZSB0ZWNobm9sb2dpY2FsCisrbWVhc3VyZSB1bmRlciBhbnkgYXBwbGljYWJsZSBs YXcgZnVsZmlsbGluZyBvYmxpZ2F0aW9ucyB1bmRlciBhcnRpY2xlCisrMTEgb2YgdGhlIFdJUE8g Y29weXJpZ2h0IHRyZWF0eSBhZG9wdGVkIG9uIDIwIERlY2VtYmVyIDE5OTYsIG9yCisrc2ltaWxh ciBsYXdzIHByb2hpYml0aW5nIG9yIHJlc3RyaWN0aW5nIGNpcmN1bXZlbnRpb24gb2Ygc3VjaAor K21lYXN1cmVzLgorKworKyAgV2hlbiB5b3UgY29udmV5IGEgY292ZXJlZCB3b3JrLCB5b3Ugd2Fp dmUgYW55IGxlZ2FsIHBvd2VyIHRvIGZvcmJpZAorK2NpcmN1bXZlbnRpb24gb2YgdGVjaG5vbG9n aWNhbCBtZWFzdXJlcyB0byB0aGUgZXh0ZW50IHN1Y2ggY2lyY3VtdmVudGlvbgorK2lzIGVmZmVj dGVkIGJ5IGV4ZXJjaXNpbmcgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZSB3aXRoIHJlc3BlY3Qg dG8KKyt0aGUgY292ZXJlZCB3b3JrLCBhbmQgeW91IGRpc2NsYWltIGFueSBpbnRlbnRpb24gdG8g bGltaXQgb3BlcmF0aW9uIG9yCisrbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGFzIGEgbWVhbnMg b2YgZW5mb3JjaW5nLCBhZ2FpbnN0IHRoZSB3b3JrJ3MKKyt1c2VycywgeW91ciBvciB0aGlyZCBw YXJ0aWVzJyBsZWdhbCByaWdodHMgdG8gZm9yYmlkIGNpcmN1bXZlbnRpb24gb2YKKyt0ZWNobm9s b2dpY2FsIG1lYXN1cmVzLgorKworKyAgNC4gQ29udmV5aW5nIFZlcmJhdGltIENvcGllcy4KKysK KysgIFlvdSBtYXkgY29udmV5IHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzIHNvdXJj ZSBjb2RlIGFzIHlvdQorK3JlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQg eW91IGNvbnNwaWN1b3VzbHkgYW5kCisrYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29w eSBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlOworK2tlZXAgaW50YWN0IGFsbCBub3Rp Y2VzIHN0YXRpbmcgdGhhdCB0aGlzIExpY2Vuc2UgYW5kIGFueQorK25vbi1wZXJtaXNzaXZlIHRl cm1zIGFkZGVkIGluIGFjY29yZCB3aXRoIHNlY3Rpb24gNyBhcHBseSB0byB0aGUgY29kZTsKKytr ZWVwIGludGFjdCBhbGwgbm90aWNlcyBvZiB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7IGFu ZCBnaXZlIGFsbAorK3JlY2lwaWVudHMgYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRo IHRoZSBQcm9ncmFtLgorKworKyAgWW91IG1heSBjaGFyZ2UgYW55IHByaWNlIG9yIG5vIHByaWNl IGZvciBlYWNoIGNvcHkgdGhhdCB5b3UgY29udmV5LAorK2FuZCB5b3UgbWF5IG9mZmVyIHN1cHBv cnQgb3Igd2FycmFudHkgcHJvdGVjdGlvbiBmb3IgYSBmZWUuCisrCisrICA1LiBDb252ZXlpbmcg TW9kaWZpZWQgU291cmNlIFZlcnNpb25zLgorKworKyAgWW91IG1heSBjb252ZXkgYSB3b3JrIGJh c2VkIG9uIHRoZSBQcm9ncmFtLCBvciB0aGUgbW9kaWZpY2F0aW9ucyB0bworK3Byb2R1Y2UgaXQg ZnJvbSB0aGUgUHJvZ3JhbSwgaW4gdGhlIGZvcm0gb2Ygc291cmNlIGNvZGUgdW5kZXIgdGhlCisr dGVybXMgb2Ygc2VjdGlvbiA0LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRo ZXNlIGNvbmRpdGlvbnM6CisrCisrICAgIGEpIFRoZSB3b3JrIG11c3QgY2FycnkgcHJvbWluZW50 IG5vdGljZXMgc3RhdGluZyB0aGF0IHlvdSBtb2RpZmllZAorKyAgICBpdCwgYW5kIGdpdmluZyBh IHJlbGV2YW50IGRhdGUuCisrCisrICAgIGIpIFRoZSB3b3JrIG11c3QgY2FycnkgcHJvbWluZW50 IG5vdGljZXMgc3RhdGluZyB0aGF0IGl0IGlzCisrICAgIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGlj ZW5zZSBhbmQgYW55IGNvbmRpdGlvbnMgYWRkZWQgdW5kZXIgc2VjdGlvbgorKyAgICA3LiAgVGhp cyByZXF1aXJlbWVudCBtb2RpZmllcyB0aGUgcmVxdWlyZW1lbnQgaW4gc2VjdGlvbiA0IHRvCisr ICAgICJrZWVwIGludGFjdCBhbGwgbm90aWNlcyIuCisrCisrICAgIGMpIFlvdSBtdXN0IGxpY2Vu c2UgdGhlIGVudGlyZSB3b3JrLCBhcyBhIHdob2xlLCB1bmRlciB0aGlzCisrICAgIExpY2Vuc2Ug dG8gYW55b25lIHdobyBjb21lcyBpbnRvIHBvc3Nlc3Npb24gb2YgYSBjb3B5LiAgVGhpcworKyAg ICBMaWNlbnNlIHdpbGwgdGhlcmVmb3JlIGFwcGx5LCBhbG9uZyB3aXRoIGFueSBhcHBsaWNhYmxl IHNlY3Rpb24gNworKyAgICBhZGRpdGlvbmFsIHRlcm1zLCB0byB0aGUgd2hvbGUgb2YgdGhlIHdv cmssIGFuZCBhbGwgaXRzIHBhcnRzLAorKyAgICByZWdhcmRsZXNzIG9mIGhvdyB0aGV5IGFyZSBw YWNrYWdlZC4gIFRoaXMgTGljZW5zZSBnaXZlcyBubworKyAgICBwZXJtaXNzaW9uIHRvIGxpY2Vu c2UgdGhlIHdvcmsgaW4gYW55IG90aGVyIHdheSwgYnV0IGl0IGRvZXMgbm90CisrICAgIGludmFs aWRhdGUgc3VjaCBwZXJtaXNzaW9uIGlmIHlvdSBoYXZlIHNlcGFyYXRlbHkgcmVjZWl2ZWQgaXQu CisrCisrICAgIGQpIElmIHRoZSB3b3JrIGhhcyBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZXMs IGVhY2ggbXVzdCBkaXNwbGF5CisrICAgIEFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXM7IGhvd2V2 ZXIsIGlmIHRoZSBQcm9ncmFtIGhhcyBpbnRlcmFjdGl2ZQorKyAgICBpbnRlcmZhY2VzIHRoYXQg ZG8gbm90IGRpc3BsYXkgQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcywgeW91cgorKyAgICB3b3Jr IG5lZWQgbm90IG1ha2UgdGhlbSBkbyBzby4KKysKKysgIEEgY29tcGlsYXRpb24gb2YgYSBjb3Zl cmVkIHdvcmsgd2l0aCBvdGhlciBzZXBhcmF0ZSBhbmQgaW5kZXBlbmRlbnQKKyt3b3Jrcywgd2hp Y2ggYXJlIG5vdCBieSB0aGVpciBuYXR1cmUgZXh0ZW5zaW9ucyBvZiB0aGUgY292ZXJlZCB3b3Jr LAorK2FuZCB3aGljaCBhcmUgbm90IGNvbWJpbmVkIHdpdGggaXQgc3VjaCBhcyB0byBmb3JtIGEg bGFyZ2VyIHByb2dyYW0sCisraW4gb3Igb24gYSB2b2x1bWUgb2YgYSBzdG9yYWdlIG9yIGRpc3Ry aWJ1dGlvbiBtZWRpdW0sIGlzIGNhbGxlZCBhbgorKyJhZ2dyZWdhdGUiIGlmIHRoZSBjb21waWxh dGlvbiBhbmQgaXRzIHJlc3VsdGluZyBjb3B5cmlnaHQgYXJlIG5vdAorK3VzZWQgdG8gbGltaXQg dGhlIGFjY2VzcyBvciBsZWdhbCByaWdodHMgb2YgdGhlIGNvbXBpbGF0aW9uJ3MgdXNlcnMKKyti ZXlvbmQgd2hhdCB0aGUgaW5kaXZpZHVhbCB3b3JrcyBwZXJtaXQuICBJbmNsdXNpb24gb2YgYSBj b3ZlcmVkIHdvcmsKKytpbiBhbiBhZ2dyZWdhdGUgZG9lcyBub3QgY2F1c2UgdGhpcyBMaWNlbnNl IHRvIGFwcGx5IHRvIHRoZSBvdGhlcgorK3BhcnRzIG9mIHRoZSBhZ2dyZWdhdGUuCisrCisrICA2 LiBDb252ZXlpbmcgTm9uLVNvdXJjZSBGb3Jtcy4KKysKKysgIFlvdSBtYXkgY29udmV5IGEgY292 ZXJlZCB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gdW5kZXIgdGhlIHRlcm1zCisrb2Ygc2VjdGlv bnMgNCBhbmQgNSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBjb252ZXkgdGhlCisrbWFjaGluZS1y ZWFkYWJsZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNl bnNlLAorK2luIG9uZSBvZiB0aGVzZSB3YXlzOgorKworKyAgICBhKSBDb252ZXkgdGhlIG9iamVj dCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0CisrICAgIChpbmNs dWRpbmcgYSBwaHlzaWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwgYWNjb21wYW5pZWQgYnkgdGhl CisrICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZpeGVkIG9uIGEgZHVyYWJsZSBwaHlzaWNhbCBt ZWRpdW0KKysgICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UuCisr CisrICAgIGIpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBo eXNpY2FsIHByb2R1Y3QKKysgICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBt ZWRpdW0pLCBhY2NvbXBhbmllZCBieSBhCisrICAgIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBh dCBsZWFzdCB0aHJlZSB5ZWFycyBhbmQgdmFsaWQgZm9yIGFzCisrICAgIGxvbmcgYXMgeW91IG9m ZmVyIHNwYXJlIHBhcnRzIG9yIGN1c3RvbWVyIHN1cHBvcnQgZm9yIHRoYXQgcHJvZHVjdAorKyAg ICBtb2RlbCwgdG8gZ2l2ZSBhbnlvbmUgd2hvIHBvc3Nlc3NlcyB0aGUgb2JqZWN0IGNvZGUgZWl0 aGVyICgxKSBhCisrICAgIGNvcHkgb2YgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGZvciBhbGwg dGhlIHNvZnR3YXJlIGluIHRoZQorKyAgICBwcm9kdWN0IHRoYXQgaXMgY292ZXJlZCBieSB0aGlz IExpY2Vuc2UsIG9uIGEgZHVyYWJsZSBwaHlzaWNhbAorKyAgICBtZWRpdW0gY3VzdG9tYXJpbHkg dXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UsIGZvciBhIHByaWNlIG5vCisrICAgIG1vcmUg dGhhbiB5b3VyIHJlYXNvbmFibGUgY29zdCBvZiBwaHlzaWNhbGx5IHBlcmZvcm1pbmcgdGhpcwor KyAgICBjb252ZXlpbmcgb2Ygc291cmNlLCBvciAoMikgYWNjZXNzIHRvIGNvcHkgdGhlCisrICAg IENvcnJlc3BvbmRpbmcgU291cmNlIGZyb20gYSBuZXR3b3JrIHNlcnZlciBhdCBubyBjaGFyZ2Uu CisrCisrICAgIGMpIENvbnZleSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGUgb2JqZWN0IGNvZGUg d2l0aCBhIGNvcHkgb2YgdGhlCisrICAgIHdyaXR0ZW4gb2ZmZXIgdG8gcHJvdmlkZSB0aGUgQ29y cmVzcG9uZGluZyBTb3VyY2UuICBUaGlzCisrICAgIGFsdGVybmF0aXZlIGlzIGFsbG93ZWQgb25s eSBvY2Nhc2lvbmFsbHkgYW5kIG5vbmNvbW1lcmNpYWxseSwgYW5kCisrICAgIG9ubHkgaWYgeW91 IHJlY2VpdmVkIHRoZSBvYmplY3QgY29kZSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZAor KyAgICB3aXRoIHN1YnNlY3Rpb24gNmIuCisrCisrICAgIGQpIENvbnZleSB0aGUgb2JqZWN0IGNv ZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIGZyb20gYSBkZXNpZ25hdGVkCisrICAgIHBsYWNlIChncmF0 aXMgb3IgZm9yIGEgY2hhcmdlKSwgYW5kIG9mZmVyIGVxdWl2YWxlbnQgYWNjZXNzIHRvIHRoZQor KyAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBpbiB0aGUgc2FtZSB3YXkgdGhyb3VnaCB0aGUgc2Ft ZSBwbGFjZSBhdCBubworKyAgICBmdXJ0aGVyIGNoYXJnZS4gIFlvdSBuZWVkIG5vdCByZXF1aXJl IHJlY2lwaWVudHMgdG8gY29weSB0aGUKKysgICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgYWxvbmcg d2l0aCB0aGUgb2JqZWN0IGNvZGUuICBJZiB0aGUgcGxhY2UgdG8KKysgICAgY29weSB0aGUgb2Jq ZWN0IGNvZGUgaXMgYSBuZXR3b3JrIHNlcnZlciwgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlCisr ICAgIG1heSBiZSBvbiBhIGRpZmZlcmVudCBzZXJ2ZXIgKG9wZXJhdGVkIGJ5IHlvdSBvciBhIHRo aXJkIHBhcnR5KQorKyAgICB0aGF0IHN1cHBvcnRzIGVxdWl2YWxlbnQgY29weWluZyBmYWNpbGl0 aWVzLCBwcm92aWRlZCB5b3UgbWFpbnRhaW4KKysgICAgY2xlYXIgZGlyZWN0aW9ucyBuZXh0IHRv IHRoZSBvYmplY3QgY29kZSBzYXlpbmcgd2hlcmUgdG8gZmluZCB0aGUKKysgICAgQ29ycmVzcG9u ZGluZyBTb3VyY2UuICBSZWdhcmRsZXNzIG9mIHdoYXQgc2VydmVyIGhvc3RzIHRoZQorKyAgICBD b3JyZXNwb25kaW5nIFNvdXJjZSwgeW91IHJlbWFpbiBvYmxpZ2F0ZWQgdG8gZW5zdXJlIHRoYXQg aXQgaXMKKysgICAgYXZhaWxhYmxlIGZvciBhcyBsb25nIGFzIG5lZWRlZCB0byBzYXRpc2Z5IHRo ZXNlIHJlcXVpcmVtZW50cy4KKysKKysgICAgZSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSB1c2lu ZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uLCBwcm92aWRlZAorKyAgICB5b3UgaW5mb3JtIG90 aGVyIHBlZXJzIHdoZXJlIHRoZSBvYmplY3QgY29kZSBhbmQgQ29ycmVzcG9uZGluZworKyAgICBT b3VyY2Ugb2YgdGhlIHdvcmsgYXJlIGJlaW5nIG9mZmVyZWQgdG8gdGhlIGdlbmVyYWwgcHVibGlj IGF0IG5vCisrICAgIGNoYXJnZSB1bmRlciBzdWJzZWN0aW9uIDZkLgorKworKyAgQSBzZXBhcmFi bGUgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGNvZGUsIHdob3NlIHNvdXJjZSBjb2RlIGlzIGV4Y2x1 ZGVkCisrZnJvbSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgYXMgYSBTeXN0ZW0gTGlicmFyeSwg bmVlZCBub3QgYmUKKytpbmNsdWRlZCBpbiBjb252ZXlpbmcgdGhlIG9iamVjdCBjb2RlIHdvcmsu CisrCisrICBBICJVc2VyIFByb2R1Y3QiIGlzIGVpdGhlciAoMSkgYSAiY29uc3VtZXIgcHJvZHVj dCIsIHdoaWNoIG1lYW5zIGFueQorK3RhbmdpYmxlIHBlcnNvbmFsIHByb3BlcnR5IHdoaWNoIGlz IG5vcm1hbGx5IHVzZWQgZm9yIHBlcnNvbmFsLCBmYW1pbHksCisrb3IgaG91c2Vob2xkIHB1cnBv c2VzLCBvciAoMikgYW55dGhpbmcgZGVzaWduZWQgb3Igc29sZCBmb3IgaW5jb3Jwb3JhdGlvbgor K2ludG8gYSBkd2VsbGluZy4gIEluIGRldGVybWluaW5nIHdoZXRoZXIgYSBwcm9kdWN0IGlzIGEg Y29uc3VtZXIgcHJvZHVjdCwKKytkb3VidGZ1bCBjYXNlcyBzaGFsbCBiZSByZXNvbHZlZCBpbiBm YXZvciBvZiBjb3ZlcmFnZS4gIEZvciBhIHBhcnRpY3VsYXIKKytwcm9kdWN0IHJlY2VpdmVkIGJ5 IGEgcGFydGljdWxhciB1c2VyLCAibm9ybWFsbHkgdXNlZCIgcmVmZXJzIHRvIGEKKyt0eXBpY2Fs IG9yIGNvbW1vbiB1c2Ugb2YgdGhhdCBjbGFzcyBvZiBwcm9kdWN0LCByZWdhcmRsZXNzIG9mIHRo ZSBzdGF0dXMKKytvZiB0aGUgcGFydGljdWxhciB1c2VyIG9yIG9mIHRoZSB3YXkgaW4gd2hpY2gg dGhlIHBhcnRpY3VsYXIgdXNlcgorK2FjdHVhbGx5IHVzZXMsIG9yIGV4cGVjdHMgb3IgaXMgZXhw ZWN0ZWQgdG8gdXNlLCB0aGUgcHJvZHVjdC4gIEEgcHJvZHVjdAorK2lzIGEgY29uc3VtZXIgcHJv ZHVjdCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHByb2R1Y3QgaGFzIHN1YnN0YW50aWFsCisr Y29tbWVyY2lhbCwgaW5kdXN0cmlhbCBvciBub24tY29uc3VtZXIgdXNlcywgdW5sZXNzIHN1Y2gg dXNlcyByZXByZXNlbnQKKyt0aGUgb25seSBzaWduaWZpY2FudCBtb2RlIG9mIHVzZSBvZiB0aGUg cHJvZHVjdC4KKysKKysgICJJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24iIGZvciBhIFVzZXIgUHJv ZHVjdCBtZWFucyBhbnkgbWV0aG9kcywKKytwcm9jZWR1cmVzLCBhdXRob3JpemF0aW9uIGtleXMs IG9yIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGluc3RhbGwKKythbmQgZXhlY3V0ZSBt b2RpZmllZCB2ZXJzaW9ucyBvZiBhIGNvdmVyZWQgd29yayBpbiB0aGF0IFVzZXIgUHJvZHVjdCBm cm9tCisrYSBtb2RpZmllZCB2ZXJzaW9uIG9mIGl0cyBDb3JyZXNwb25kaW5nIFNvdXJjZS4gIFRo ZSBpbmZvcm1hdGlvbiBtdXN0Cisrc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgY29udGludWVk IGZ1bmN0aW9uaW5nIG9mIHRoZSBtb2RpZmllZCBvYmplY3QKKytjb2RlIGlzIGluIG5vIGNhc2Ug cHJldmVudGVkIG9yIGludGVyZmVyZWQgd2l0aCBzb2xlbHkgYmVjYXVzZQorK21vZGlmaWNhdGlv biBoYXMgYmVlbiBtYWRlLgorKworKyAgSWYgeW91IGNvbnZleSBhbiBvYmplY3QgY29kZSB3b3Jr IHVuZGVyIHRoaXMgc2VjdGlvbiBpbiwgb3Igd2l0aCwgb3IKKytzcGVjaWZpY2FsbHkgZm9yIHVz ZSBpbiwgYSBVc2VyIFByb2R1Y3QsIGFuZCB0aGUgY29udmV5aW5nIG9jY3VycyBhcworK3BhcnQg b2YgYSB0cmFuc2FjdGlvbiBpbiB3aGljaCB0aGUgcmlnaHQgb2YgcG9zc2Vzc2lvbiBhbmQgdXNl IG9mIHRoZQorK1VzZXIgUHJvZHVjdCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgcmVjaXBpZW50IGlu IHBlcnBldHVpdHkgb3IgZm9yIGEKKytmaXhlZCB0ZXJtIChyZWdhcmRsZXNzIG9mIGhvdyB0aGUg dHJhbnNhY3Rpb24gaXMgY2hhcmFjdGVyaXplZCksIHRoZQorK0NvcnJlc3BvbmRpbmcgU291cmNl IGNvbnZleWVkIHVuZGVyIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGFjY29tcGFuaWVkCisrYnkgdGhl IEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbi4gIEJ1dCB0aGlzIHJlcXVpcmVtZW50IGRvZXMgbm90 IGFwcGx5CisraWYgbmVpdGhlciB5b3Ugbm9yIGFueSB0aGlyZCBwYXJ0eSByZXRhaW5zIHRoZSBh YmlsaXR5IHRvIGluc3RhbGwKKyttb2RpZmllZCBvYmplY3QgY29kZSBvbiB0aGUgVXNlciBQcm9k dWN0IChmb3IgZXhhbXBsZSwgdGhlIHdvcmsgaGFzCisrYmVlbiBpbnN0YWxsZWQgaW4gUk9NKS4K KysKKysgIFRoZSByZXF1aXJlbWVudCB0byBwcm92aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlv biBkb2VzIG5vdCBpbmNsdWRlIGEKKytyZXF1aXJlbWVudCB0byBjb250aW51ZSB0byBwcm92aWRl IHN1cHBvcnQgc2VydmljZSwgd2FycmFudHksIG9yIHVwZGF0ZXMKKytmb3IgYSB3b3JrIHRoYXQg aGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkIGJ5IHRoZSByZWNpcGllbnQsIG9yIGZvcgor K3RoZSBVc2VyIFByb2R1Y3QgaW4gd2hpY2ggaXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFs bGVkLiAgQWNjZXNzIHRvIGEKKytuZXR3b3JrIG1heSBiZSBkZW5pZWQgd2hlbiB0aGUgbW9kaWZp Y2F0aW9uIGl0c2VsZiBtYXRlcmlhbGx5IGFuZAorK2FkdmVyc2VseSBhZmZlY3RzIHRoZSBvcGVy YXRpb24gb2YgdGhlIG5ldHdvcmsgb3IgdmlvbGF0ZXMgdGhlIHJ1bGVzIGFuZAorK3Byb3RvY29s cyBmb3IgY29tbXVuaWNhdGlvbiBhY3Jvc3MgdGhlIG5ldHdvcmsuCisrCisrICBDb3JyZXNwb25k aW5nIFNvdXJjZSBjb252ZXllZCwgYW5kIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBwcm92aWRl ZCwKKytpbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24gbXVzdCBiZSBpbiBhIGZvcm1hdCB0aGF0 IGlzIHB1YmxpY2x5CisrZG9jdW1lbnRlZCAoYW5kIHdpdGggYW4gaW1wbGVtZW50YXRpb24gYXZh aWxhYmxlIHRvIHRoZSBwdWJsaWMgaW4KKytzb3VyY2UgY29kZSBmb3JtKSwgYW5kIG11c3QgcmVx dWlyZSBubyBzcGVjaWFsIHBhc3N3b3JkIG9yIGtleSBmb3IKKyt1bnBhY2tpbmcsIHJlYWRpbmcg b3IgY29weWluZy4KKysKKysgIDcuIEFkZGl0aW9uYWwgVGVybXMuCisrCisrICAiQWRkaXRpb25h bCBwZXJtaXNzaW9ucyIgYXJlIHRlcm1zIHRoYXQgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhp cworK0xpY2Vuc2UgYnkgbWFraW5nIGV4Y2VwdGlvbnMgZnJvbSBvbmUgb3IgbW9yZSBvZiBpdHMg Y29uZGl0aW9ucy4KKytBZGRpdGlvbmFsIHBlcm1pc3Npb25zIHRoYXQgYXJlIGFwcGxpY2FibGUg dG8gdGhlIGVudGlyZSBQcm9ncmFtIHNoYWxsCisrYmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3 ZXJlIGluY2x1ZGVkIGluIHRoaXMgTGljZW5zZSwgdG8gdGhlIGV4dGVudAorK3RoYXQgdGhleSBh cmUgdmFsaWQgdW5kZXIgYXBwbGljYWJsZSBsYXcuICBJZiBhZGRpdGlvbmFsIHBlcm1pc3Npb25z CisrYXBwbHkgb25seSB0byBwYXJ0IG9mIHRoZSBQcm9ncmFtLCB0aGF0IHBhcnQgbWF5IGJlIHVz ZWQgc2VwYXJhdGVseQorK3VuZGVyIHRob3NlIHBlcm1pc3Npb25zLCBidXQgdGhlIGVudGlyZSBQ cm9ncmFtIHJlbWFpbnMgZ292ZXJuZWQgYnkKKyt0aGlzIExpY2Vuc2Ugd2l0aG91dCByZWdhcmQg dG8gdGhlIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMuCisrCisrICBXaGVuIHlvdSBjb252ZXkgYSBj b3B5IG9mIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uCisrcmVtb3ZlIGFu eSBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIGZyb20gdGhhdCBjb3B5LCBvciBmcm9tIGFueSBwYXJ0 IG9mCisraXQuICAoQWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgd3JpdHRlbiB0byByZXF1 aXJlIHRoZWlyIG93bgorK3JlbW92YWwgaW4gY2VydGFpbiBjYXNlcyB3aGVuIHlvdSBtb2RpZnkg dGhlIHdvcmsuKSAgWW91IG1heSBwbGFjZQorK2FkZGl0aW9uYWwgcGVybWlzc2lvbnMgb24gbWF0 ZXJpYWwsIGFkZGVkIGJ5IHlvdSB0byBhIGNvdmVyZWQgd29yaywKKytmb3Igd2hpY2ggeW91IGhh dmUgb3IgY2FuIGdpdmUgYXBwcm9wcmlhdGUgY29weXJpZ2h0IHBlcm1pc3Npb24uCisrCisrICBO b3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0aGlzIExpY2Vuc2UsIGZvciBt YXRlcmlhbCB5b3UKKythZGQgdG8gYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgKGlmIGF1dGhvcml6 ZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXJzIG9mCisrdGhhdCBtYXRlcmlhbCkgc3VwcGxlbWVu dCB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIHdpdGggdGVybXM6CisrCisrICAgIGEpIERpc2Ns YWltaW5nIHdhcnJhbnR5IG9yIGxpbWl0aW5nIGxpYWJpbGl0eSBkaWZmZXJlbnRseSBmcm9tIHRo ZQorKyAgICB0ZXJtcyBvZiBzZWN0aW9ucyAxNSBhbmQgMTYgb2YgdGhpcyBMaWNlbnNlOyBvcgor KworKyAgICBiKSBSZXF1aXJpbmcgcHJlc2VydmF0aW9uIG9mIHNwZWNpZmllZCByZWFzb25hYmxl IGxlZ2FsIG5vdGljZXMgb3IKKysgICAgYXV0aG9yIGF0dHJpYnV0aW9ucyBpbiB0aGF0IG1hdGVy aWFsIG9yIGluIHRoZSBBcHByb3ByaWF0ZSBMZWdhbAorKyAgICBOb3RpY2VzIGRpc3BsYXllZCBi eSB3b3JrcyBjb250YWluaW5nIGl0OyBvcgorKworKyAgICBjKSBQcm9oaWJpdGluZyBtaXNyZXBy ZXNlbnRhdGlvbiBvZiB0aGUgb3JpZ2luIG9mIHRoYXQgbWF0ZXJpYWwsIG9yCisrICAgIHJlcXVp cmluZyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIG9mIHN1Y2ggbWF0ZXJpYWwgYmUgbWFya2VkIGlu CisrICAgIHJlYXNvbmFibGUgd2F5cyBhcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdmVy c2lvbjsgb3IKKysKKysgICAgZCkgTGltaXRpbmcgdGhlIHVzZSBmb3IgcHVibGljaXR5IHB1cnBv c2VzIG9mIG5hbWVzIG9mIGxpY2Vuc29ycyBvcgorKyAgICBhdXRob3JzIG9mIHRoZSBtYXRlcmlh bDsgb3IKKysKKysgICAgZSkgRGVjbGluaW5nIHRvIGdyYW50IHJpZ2h0cyB1bmRlciB0cmFkZW1h cmsgbGF3IGZvciB1c2Ugb2Ygc29tZQorKyAgICB0cmFkZSBuYW1lcywgdHJhZGVtYXJrcywgb3Ig c2VydmljZSBtYXJrczsgb3IKKysKKysgICAgZikgUmVxdWlyaW5nIGluZGVtbmlmaWNhdGlvbiBv ZiBsaWNlbnNvcnMgYW5kIGF1dGhvcnMgb2YgdGhhdAorKyAgICBtYXRlcmlhbCBieSBhbnlvbmUg d2hvIGNvbnZleXMgdGhlIG1hdGVyaWFsIChvciBtb2RpZmllZCB2ZXJzaW9ucyBvZgorKyAgICBp dCkgd2l0aCBjb250cmFjdHVhbCBhc3N1bXB0aW9ucyBvZiBsaWFiaWxpdHkgdG8gdGhlIHJlY2lw aWVudCwgZm9yCisrICAgIGFueSBsaWFiaWxpdHkgdGhhdCB0aGVzZSBjb250cmFjdHVhbCBhc3N1 bXB0aW9ucyBkaXJlY3RseSBpbXBvc2Ugb24KKysgICAgdGhvc2UgbGljZW5zb3JzIGFuZCBhdXRo b3JzLgorKworKyAgQWxsIG90aGVyIG5vbi1wZXJtaXNzaXZlIGFkZGl0aW9uYWwgdGVybXMgYXJl IGNvbnNpZGVyZWQgImZ1cnRoZXIKKytyZXN0cmljdGlvbnMiIHdpdGhpbiB0aGUgbWVhbmluZyBv ZiBzZWN0aW9uIDEwLiAgSWYgdGhlIFByb2dyYW0gYXMgeW91CisrcmVjZWl2ZWQgaXQsIG9yIGFu eSBwYXJ0IG9mIGl0LCBjb250YWlucyBhIG5vdGljZSBzdGF0aW5nIHRoYXQgaXQgaXMKKytnb3Zl cm5lZCBieSB0aGlzIExpY2Vuc2UgYWxvbmcgd2l0aCBhIHRlcm0gdGhhdCBpcyBhIGZ1cnRoZXIK KytyZXN0cmljdGlvbiwgeW91IG1heSByZW1vdmUgdGhhdCB0ZXJtLiAgSWYgYSBsaWNlbnNlIGRv Y3VtZW50IGNvbnRhaW5zCisrYSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGJ1dCBwZXJtaXRzIHJlbGlj ZW5zaW5nIG9yIGNvbnZleWluZyB1bmRlciB0aGlzCisrTGljZW5zZSwgeW91IG1heSBhZGQgdG8g YSBjb3ZlcmVkIHdvcmsgbWF0ZXJpYWwgZ292ZXJuZWQgYnkgdGhlIHRlcm1zCisrb2YgdGhhdCBs aWNlbnNlIGRvY3VtZW50LCBwcm92aWRlZCB0aGF0IHRoZSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGRv ZXMKKytub3Qgc3Vydml2ZSBzdWNoIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZy4KKysKKysgIElm IHlvdSBhZGQgdGVybXMgdG8gYSBjb3ZlcmVkIHdvcmsgaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0 aW9uLCB5b3UKKyttdXN0IHBsYWNlLCBpbiB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzLCBhIHN0 YXRlbWVudCBvZiB0aGUKKythZGRpdGlvbmFsIHRlcm1zIHRoYXQgYXBwbHkgdG8gdGhvc2UgZmls ZXMsIG9yIGEgbm90aWNlIGluZGljYXRpbmcKKyt3aGVyZSB0byBmaW5kIHRoZSBhcHBsaWNhYmxl IHRlcm1zLgorKworKyAgQWRkaXRpb25hbCB0ZXJtcywgcGVybWlzc2l2ZSBvciBub24tcGVybWlz c2l2ZSwgbWF5IGJlIHN0YXRlZCBpbiB0aGUKKytmb3JtIG9mIGEgc2VwYXJhdGVseSB3cml0dGVu IGxpY2Vuc2UsIG9yIHN0YXRlZCBhcyBleGNlcHRpb25zOworK3RoZSBhYm92ZSByZXF1aXJlbWVu dHMgYXBwbHkgZWl0aGVyIHdheS4KKysKKysgIDguIFRlcm1pbmF0aW9uLgorKworKyAgWW91IG1h eSBub3QgcHJvcGFnYXRlIG9yIG1vZGlmeSBhIGNvdmVyZWQgd29yayBleGNlcHQgYXMgZXhwcmVz c2x5CisrcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQgb3RoZXJ3aXNl IHRvIHByb3BhZ2F0ZSBvcgorK21vZGlmeSBpdCBpcyB2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNh bGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlcgorK3RoaXMgTGljZW5zZSAoaW5jbHVkaW5n IGFueSBwYXRlbnQgbGljZW5zZXMgZ3JhbnRlZCB1bmRlciB0aGUgdGhpcmQKKytwYXJhZ3JhcGgg b2Ygc2VjdGlvbiAxMSkuCisrCisrICBIb3dldmVyLCBpZiB5b3UgY2Vhc2UgYWxsIHZpb2xhdGlv biBvZiB0aGlzIExpY2Vuc2UsIHRoZW4geW91cgorK2xpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIg Y29weXJpZ2h0IGhvbGRlciBpcyByZWluc3RhdGVkIChhKQorK3Byb3Zpc2lvbmFsbHksIHVubGVz cyBhbmQgdW50aWwgdGhlIGNvcHlyaWdodCBob2xkZXIgZXhwbGljaXRseSBhbmQKKytmaW5hbGx5 IHRlcm1pbmF0ZXMgeW91ciBsaWNlbnNlLCBhbmQgKGIpIHBlcm1hbmVudGx5LCBpZiB0aGUgY29w eXJpZ2h0CisraG9sZGVyIGZhaWxzIHRvIG5vdGlmeSB5b3Ugb2YgdGhlIHZpb2xhdGlvbiBieSBz b21lIHJlYXNvbmFibGUgbWVhbnMKKytwcmlvciB0byA2MCBkYXlzIGFmdGVyIHRoZSBjZXNzYXRp b24uCisrCisrICBNb3Jlb3ZlciwgeW91ciBsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHly aWdodCBob2xkZXIgaXMKKytyZWluc3RhdGVkIHBlcm1hbmVudGx5IGlmIHRoZSBjb3B5cmlnaHQg aG9sZGVyIG5vdGlmaWVzIHlvdSBvZiB0aGUKKyt2aW9sYXRpb24gYnkgc29tZSByZWFzb25hYmxl IG1lYW5zLCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHlvdSBoYXZlCisrcmVjZWl2ZWQgbm90aWNl IG9mIHZpb2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UgKGZvciBhbnkgd29yaykgZnJvbSB0aGF0Cisr Y29weXJpZ2h0IGhvbGRlciwgYW5kIHlvdSBjdXJlIHRoZSB2aW9sYXRpb24gcHJpb3IgdG8gMzAg ZGF5cyBhZnRlcgorK3lvdXIgcmVjZWlwdCBvZiB0aGUgbm90aWNlLgorKworKyAgVGVybWluYXRp b24gb2YgeW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZSB0 aGUKKytsaWNlbnNlcyBvZiBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcyBvciByaWdo dHMgZnJvbSB5b3UgdW5kZXIKKyt0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZlIGJl ZW4gdGVybWluYXRlZCBhbmQgbm90IHBlcm1hbmVudGx5CisrcmVpbnN0YXRlZCwgeW91IGRvIG5v dCBxdWFsaWZ5IHRvIHJlY2VpdmUgbmV3IGxpY2Vuc2VzIGZvciB0aGUgc2FtZQorK21hdGVyaWFs IHVuZGVyIHNlY3Rpb24gMTAuCisrCisrICA5LiBBY2NlcHRhbmNlIE5vdCBSZXF1aXJlZCBmb3Ig SGF2aW5nIENvcGllcy4KKysKKysgIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlz IExpY2Vuc2UgaW4gb3JkZXIgdG8gcmVjZWl2ZSBvcgorK3J1biBhIGNvcHkgb2YgdGhlIFByb2dy YW0uICBBbmNpbGxhcnkgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkIHdvcmsKKytvY2N1cnJpbmcg c29sZWx5IGFzIGEgY29uc2VxdWVuY2Ugb2YgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lv bgorK3RvIHJlY2VpdmUgYSBjb3B5IGxpa2V3aXNlIGRvZXMgbm90IHJlcXVpcmUgYWNjZXB0YW5j ZS4gIEhvd2V2ZXIsCisrbm90aGluZyBvdGhlciB0aGFuIHRoaXMgTGljZW5zZSBncmFudHMgeW91 IHBlcm1pc3Npb24gdG8gcHJvcGFnYXRlIG9yCisrbW9kaWZ5IGFueSBjb3ZlcmVkIHdvcmsuICBU aGVzZSBhY3Rpb25zIGluZnJpbmdlIGNvcHlyaWdodCBpZiB5b3UgZG8KKytub3QgYWNjZXB0IHRo aXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkgbW9kaWZ5aW5nIG9yIHByb3BhZ2F0aW5nIGEKKytj b3ZlcmVkIHdvcmssIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNl IHRvIGRvIHNvLgorKworKyAgMTAuIEF1dG9tYXRpYyBMaWNlbnNpbmcgb2YgRG93bnN0cmVhbSBS ZWNpcGllbnRzLgorKworKyAgRWFjaCB0aW1lIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHRo ZSByZWNpcGllbnQgYXV0b21hdGljYWxseQorK3JlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZSBv cmlnaW5hbCBsaWNlbnNvcnMsIHRvIHJ1biwgbW9kaWZ5IGFuZAorK3Byb3BhZ2F0ZSB0aGF0IHdv cmssIHN1YmplY3QgdG8gdGhpcyBMaWNlbnNlLiAgWW91IGFyZSBub3QgcmVzcG9uc2libGUKKytm b3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoIHRoaXMgTGljZW5z ZS4KKysKKysgIEFuICJlbnRpdHkgdHJhbnNhY3Rpb24iIGlzIGEgdHJhbnNhY3Rpb24gdHJhbnNm ZXJyaW5nIGNvbnRyb2wgb2YgYW4KKytvcmdhbml6YXRpb24sIG9yIHN1YnN0YW50aWFsbHkgYWxs IGFzc2V0cyBvZiBvbmUsIG9yIHN1YmRpdmlkaW5nIGFuCisrb3JnYW5pemF0aW9uLCBvciBtZXJn aW5nIG9yZ2FuaXphdGlvbnMuICBJZiBwcm9wYWdhdGlvbiBvZiBhIGNvdmVyZWQKKyt3b3JrIHJl c3VsdHMgZnJvbSBhbiBlbnRpdHkgdHJhbnNhY3Rpb24sIGVhY2ggcGFydHkgdG8gdGhhdAorK3Ry YW5zYWN0aW9uIHdobyByZWNlaXZlcyBhIGNvcHkgb2YgdGhlIHdvcmsgYWxzbyByZWNlaXZlcyB3 aGF0ZXZlcgorK2xpY2Vuc2VzIHRvIHRoZSB3b3JrIHRoZSBwYXJ0eSdzIHByZWRlY2Vzc29yIGlu IGludGVyZXN0IGhhZCBvciBjb3VsZAorK2dpdmUgdW5kZXIgdGhlIHByZXZpb3VzIHBhcmFncmFw aCwgcGx1cyBhIHJpZ2h0IHRvIHBvc3Nlc3Npb24gb2YgdGhlCisrQ29ycmVzcG9uZGluZyBTb3Vy Y2Ugb2YgdGhlIHdvcmsgZnJvbSB0aGUgcHJlZGVjZXNzb3IgaW4gaW50ZXJlc3QsIGlmCisrdGhl IHByZWRlY2Vzc29yIGhhcyBpdCBvciBjYW4gZ2V0IGl0IHdpdGggcmVhc29uYWJsZSBlZmZvcnRz LgorKworKyAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyIHJlc3RyaWN0aW9ucyBvbiB0 aGUgZXhlcmNpc2Ugb2YgdGhlCisrcmlnaHRzIGdyYW50ZWQgb3IgYWZmaXJtZWQgdW5kZXIgdGhp cyBMaWNlbnNlLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkKKytub3QgaW1wb3NlIGEgbGljZW5zZSBm ZWUsIHJveWFsdHksIG9yIG90aGVyIGNoYXJnZSBmb3IgZXhlcmNpc2Ugb2YKKytyaWdodHMgZ3Jh bnRlZCB1bmRlciB0aGlzIExpY2Vuc2UsIGFuZCB5b3UgbWF5IG5vdCBpbml0aWF0ZSBsaXRpZ2F0 aW9uCisrKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1 aXQpIGFsbGVnaW5nIHRoYXQKKythbnkgcGF0ZW50IGNsYWltIGlzIGluZnJpbmdlZCBieSBtYWtp bmcsIHVzaW5nLCBzZWxsaW5nLCBvZmZlcmluZyBmb3IKKytzYWxlLCBvciBpbXBvcnRpbmcgdGhl IFByb2dyYW0gb3IgYW55IHBvcnRpb24gb2YgaXQuCisrCisrICAxMS4gUGF0ZW50cy4KKysKKysg IEEgImNvbnRyaWJ1dG9yIiBpcyBhIGNvcHlyaWdodCBob2xkZXIgd2hvIGF1dGhvcml6ZXMgdXNl IHVuZGVyIHRoaXMKKytMaWNlbnNlIG9mIHRoZSBQcm9ncmFtIG9yIGEgd29yayBvbiB3aGljaCB0 aGUgUHJvZ3JhbSBpcyBiYXNlZC4gIFRoZQorK3dvcmsgdGh1cyBsaWNlbnNlZCBpcyBjYWxsZWQg dGhlIGNvbnRyaWJ1dG9yJ3MgImNvbnRyaWJ1dG9yIHZlcnNpb24iLgorKworKyAgQSBjb250cmli dXRvcidzICJlc3NlbnRpYWwgcGF0ZW50IGNsYWltcyIgYXJlIGFsbCBwYXRlbnQgY2xhaW1zCisr b3duZWQgb3IgY29udHJvbGxlZCBieSB0aGUgY29udHJpYnV0b3IsIHdoZXRoZXIgYWxyZWFkeSBh Y3F1aXJlZCBvcgorK2hlcmVhZnRlciBhY3F1aXJlZCwgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQg Ynkgc29tZSBtYW5uZXIsIHBlcm1pdHRlZAorK2J5IHRoaXMgTGljZW5zZSwgb2YgbWFraW5nLCB1 c2luZywgb3Igc2VsbGluZyBpdHMgY29udHJpYnV0b3IgdmVyc2lvbiwKKytidXQgZG8gbm90IGlu Y2x1ZGUgY2xhaW1zIHRoYXQgd291bGQgYmUgaW5mcmluZ2VkIG9ubHkgYXMgYQorK2NvbnNlcXVl bmNlIG9mIGZ1cnRoZXIgbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250cmlidXRvciB2ZXJzaW9uLiAg Rm9yCisrcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAiY29udHJvbCIgaW5jbHVkZXMgdGhl IHJpZ2h0IHRvIGdyYW50CisrcGF0ZW50IHN1YmxpY2Vuc2VzIGluIGEgbWFubmVyIGNvbnNpc3Rl bnQgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mCisgdGhpcyBMaWNlbnNlLgorIAorLSAgNy4gSWYs IGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBh dGVudAorLWluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQg dG8gcGF0ZW50IGlzc3VlcyksCistY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRo ZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgorKyAgRWFjaCBjb250cmlidXRvciBncmFu dHMgeW91IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUKKytwYXRlbnQg bGljZW5zZSB1bmRlciB0aGUgY29udHJpYnV0b3IncyBlc3NlbnRpYWwgcGF0ZW50IGNsYWltcywg dG8KKyttYWtlLCB1c2UsIHNlbGwsIG9mZmVyIGZvciBzYWxlLCBpbXBvcnQgYW5kIG90aGVyd2lz ZSBydW4sIG1vZGlmeSBhbmQKKytwcm9wYWdhdGUgdGhlIGNvbnRlbnRzIG9mIGl0cyBjb250cmli dXRvciB2ZXJzaW9uLgorKworKyAgSW4gdGhlIGZvbGxvd2luZyB0aHJlZSBwYXJhZ3JhcGhzLCBh ICJwYXRlbnQgbGljZW5zZSIgaXMgYW55IGV4cHJlc3MKKythZ3JlZW1lbnQgb3IgY29tbWl0bWVu dCwgaG93ZXZlciBkZW5vbWluYXRlZCwgbm90IHRvIGVuZm9yY2UgYSBwYXRlbnQKKysoc3VjaCBh cyBhbiBleHByZXNzIHBlcm1pc3Npb24gdG8gcHJhY3RpY2UgYSBwYXRlbnQgb3IgY292ZW5hbnQg bm90IHRvCisrc3VlIGZvciBwYXRlbnQgaW5mcmluZ2VtZW50KS4gIFRvICJncmFudCIgc3VjaCBh IHBhdGVudCBsaWNlbnNlIHRvIGEKKytwYXJ0eSBtZWFucyB0byBtYWtlIHN1Y2ggYW4gYWdyZWVt ZW50IG9yIGNvbW1pdG1lbnQgbm90IHRvIGVuZm9yY2UgYQorK3BhdGVudCBhZ2FpbnN0IHRoZSBw YXJ0eS4KKysKKysgIElmIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIGtub3dpbmdseSByZWx5 aW5nIG9uIGEgcGF0ZW50IGxpY2Vuc2UsCisrYW5kIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBv ZiB0aGUgd29yayBpcyBub3QgYXZhaWxhYmxlIGZvciBhbnlvbmUKKyt0byBjb3B5LCBmcmVlIG9m IGNoYXJnZSBhbmQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgdGhyb3VnaCBhCisr cHVibGljbHkgYXZhaWxhYmxlIG5ldHdvcmsgc2VydmVyIG9yIG90aGVyIHJlYWRpbHkgYWNjZXNz aWJsZSBtZWFucywKKyt0aGVuIHlvdSBtdXN0IGVpdGhlciAoMSkgY2F1c2UgdGhlIENvcnJlc3Bv bmRpbmcgU291cmNlIHRvIGJlIHNvCisrYXZhaWxhYmxlLCBvciAoMikgYXJyYW5nZSB0byBkZXBy aXZlIHlvdXJzZWxmIG9mIHRoZSBiZW5lZml0IG9mIHRoZQorK3BhdGVudCBsaWNlbnNlIGZvciB0 aGlzIHBhcnRpY3VsYXIgd29yaywgb3IgKDMpIGFycmFuZ2UsIGluIGEgbWFubmVyCisrY29uc2lz dGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlLCB0byBleHRlbmQgdGhl IHBhdGVudAorK2xpY2Vuc2UgdG8gZG93bnN0cmVhbSByZWNpcGllbnRzLiAgIktub3dpbmdseSBy ZWx5aW5nIiBtZWFucyB5b3UgaGF2ZQorK2FjdHVhbCBrbm93bGVkZ2UgdGhhdCwgYnV0IGZvciB0 aGUgcGF0ZW50IGxpY2Vuc2UsIHlvdXIgY29udmV5aW5nIHRoZQorK2NvdmVyZWQgd29yayBpbiBh IGNvdW50cnksIG9yIHlvdXIgcmVjaXBpZW50J3MgdXNlIG9mIHRoZSBjb3ZlcmVkIHdvcmsKKytp biBhIGNvdW50cnksIHdvdWxkIGluZnJpbmdlIG9uZSBvciBtb3JlIGlkZW50aWZpYWJsZSBwYXRl bnRzIGluIHRoYXQKKytjb3VudHJ5IHRoYXQgeW91IGhhdmUgcmVhc29uIHRvIGJlbGlldmUgYXJl IHZhbGlkLgorKworKyAgSWYsIHB1cnN1YW50IHRvIG9yIGluIGNvbm5lY3Rpb24gd2l0aCBhIHNp bmdsZSB0cmFuc2FjdGlvbiBvcgorK2FycmFuZ2VtZW50LCB5b3UgY29udmV5LCBvciBwcm9wYWdh dGUgYnkgcHJvY3VyaW5nIGNvbnZleWFuY2Ugb2YsIGEKKytjb3ZlcmVkIHdvcmssIGFuZCBncmFu dCBhIHBhdGVudCBsaWNlbnNlIHRvIHNvbWUgb2YgdGhlIHBhcnRpZXMKKytyZWNlaXZpbmcgdGhl IGNvdmVyZWQgd29yayBhdXRob3JpemluZyB0aGVtIHRvIHVzZSwgcHJvcGFnYXRlLCBtb2RpZnkK KytvciBjb252ZXkgYSBzcGVjaWZpYyBjb3B5IG9mIHRoZSBjb3ZlcmVkIHdvcmssIHRoZW4gdGhl IHBhdGVudCBsaWNlbnNlCisreW91IGdyYW50IGlzIGF1dG9tYXRpY2FsbHkgZXh0ZW5kZWQgdG8g YWxsIHJlY2lwaWVudHMgb2YgdGhlIGNvdmVyZWQKKyt3b3JrIGFuZCB3b3JrcyBiYXNlZCBvbiBp dC4KKysKKysgIEEgcGF0ZW50IGxpY2Vuc2UgaXMgImRpc2NyaW1pbmF0b3J5IiBpZiBpdCBkb2Vz IG5vdCBpbmNsdWRlIHdpdGhpbgorK3RoZSBzY29wZSBvZiBpdHMgY292ZXJhZ2UsIHByb2hpYml0 cyB0aGUgZXhlcmNpc2Ugb2YsIG9yIGlzCisrY29uZGl0aW9uZWQgb24gdGhlIG5vbi1leGVyY2lz ZSBvZiBvbmUgb3IgbW9yZSBvZiB0aGUgcmlnaHRzIHRoYXQgYXJlCisrc3BlY2lmaWNhbGx5IGdy YW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgWW91IG1heSBub3QgY29udmV5IGEgY292ZXJlZAor K3dvcmsgaWYgeW91IGFyZSBhIHBhcnR5IHRvIGFuIGFycmFuZ2VtZW50IHdpdGggYSB0aGlyZCBw YXJ0eSB0aGF0IGlzCisraW4gdGhlIGJ1c2luZXNzIG9mIGRpc3RyaWJ1dGluZyBzb2Z0d2FyZSwg dW5kZXIgd2hpY2ggeW91IG1ha2UgcGF5bWVudAorK3RvIHRoZSB0aGlyZCBwYXJ0eSBiYXNlZCBv biB0aGUgZXh0ZW50IG9mIHlvdXIgYWN0aXZpdHkgb2YgY29udmV5aW5nCisrdGhlIHdvcmssIGFu ZCB1bmRlciB3aGljaCB0aGUgdGhpcmQgcGFydHkgZ3JhbnRzLCB0byBhbnkgb2YgdGhlCisrcGFy dGllcyB3aG8gd291bGQgcmVjZWl2ZSB0aGUgY292ZXJlZCB3b3JrIGZyb20geW91LCBhIGRpc2Ny aW1pbmF0b3J5CisrcGF0ZW50IGxpY2Vuc2UgKGEpIGluIGNvbm5lY3Rpb24gd2l0aCBjb3BpZXMg b2YgdGhlIGNvdmVyZWQgd29yaworK2NvbnZleWVkIGJ5IHlvdSAob3IgY29waWVzIG1hZGUgZnJv bSB0aG9zZSBjb3BpZXMpLCBvciAoYikgcHJpbWFyaWx5CisrZm9yIGFuZCBpbiBjb25uZWN0aW9u IHdpdGggc3BlY2lmaWMgcHJvZHVjdHMgb3IgY29tcGlsYXRpb25zIHRoYXQKKytjb250YWluIHRo ZSBjb3ZlcmVkIHdvcmssIHVubGVzcyB5b3UgZW50ZXJlZCBpbnRvIHRoYXQgYXJyYW5nZW1lbnQs Cisrb3IgdGhhdCBwYXRlbnQgbGljZW5zZSB3YXMgZ3JhbnRlZCwgcHJpb3IgdG8gMjggTWFyY2gg MjAwNy4KKysKKysgIE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIGNvbnN0cnVlZCBh cyBleGNsdWRpbmcgb3IgbGltaXRpbmcKKythbnkgaW1wbGllZCBsaWNlbnNlIG9yIG90aGVyIGRl ZmVuc2VzIHRvIGluZnJpbmdlbWVudCB0aGF0IG1heQorK290aGVyd2lzZSBiZSBhdmFpbGFibGUg dG8geW91IHVuZGVyIGFwcGxpY2FibGUgcGF0ZW50IGxhdy4KKysKKysgIDEyLiBObyBTdXJyZW5k ZXIgb2YgT3RoZXJzJyBGcmVlZG9tLgorKworKyAgSWYgY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBv biB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgorIG90aGVyd2lzZSkg dGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBu b3QKKy1leGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYg eW91IGNhbm5vdAorLWRpc3RyaWJ1dGUgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5 b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKKy1MaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGlu ZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91CistbWF5IG5vdCBkaXN0 cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudAorLWxp Y2Vuc2Ugd291bGQgbm90IHBlcm1pdCByb3lhbHR5LWZyZWUgcmVkaXN0cmlidXRpb24gb2YgdGhl IFByb2dyYW0gYnkKKy1hbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGlu ZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4KKy10aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlz ZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCistcmVmcmFpbiBlbnRpcmVs eSBmcm9tIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbS4KKy0KKy1JZiBhbnkgcG9ydGlvbiBv ZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIKKy1h bnkgcGFydGljdWxhciBjaXJjdW1zdGFuY2UsIHRoZSBiYWxhbmNlIG9mIHRoZSBzZWN0aW9uIGlz IGludGVuZGVkIHRvCistYXBwbHkgYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5k ZWQgdG8gYXBwbHkgaW4gb3RoZXIKKy1jaXJjdW1zdGFuY2VzLgorLQorLUl0IGlzIG5vdCB0aGUg cHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKKy1w YXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlk aXR5IG9mIGFueQorLXN1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBzb2xlIHB1cnBv c2Ugb2YgcHJvdGVjdGluZyB0aGUKKy1pbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlz dHJpYnV0aW9uIHN5c3RlbSwgd2hpY2ggaXMKKy1pbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5z ZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKKy1nZW5lcm91cyBjb250cmlidXRp b25zIHRvIHRoZSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkCistdGhyb3VnaCB0 aGF0IHN5c3RlbSBpbiByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQK Ky1zeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9y IHNoZSBpcyB3aWxsaW5nCistdG8gZGlzdHJpYnV0ZSBzb2Z0d2FyZSB0aHJvdWdoIGFueSBvdGhl ciBzeXN0ZW0gYW5kIGEgbGljZW5zZWUgY2Fubm90CistaW1wb3NlIHRoYXQgY2hvaWNlLgorLQor LVRoaXMgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBtYWtlIHRob3JvdWdobHkgY2xlYXIgd2hhdCBp cyBiZWxpZXZlZCB0bworLWJlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNl bnNlLgorLQwKKy0gIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJv Z3JhbSBpcyByZXN0cmljdGVkIGluCistY2VydGFpbiBjb3VudHJpZXMgZWl0aGVyIGJ5IHBhdGVu dHMgb3IgYnkgY29weXJpZ2h0ZWQgaW50ZXJmYWNlcywgdGhlCistb3JpZ2luYWwgY29weXJpZ2h0 IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgTGljZW5zZQorLW1heSBh ZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1 ZGluZworLXRob3NlIGNvdW50cmllcywgc28gdGhhdCBkaXN0cmlidXRpb24gaXMgcGVybWl0dGVk IG9ubHkgaW4gb3IgYW1vbmcKKy1jb3VudHJpZXMgbm90IHRodXMgZXhjbHVkZWQuICBJbiBzdWNo IGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMKKy10aGUgbGltaXRhdGlvbiBhcyBpZiB3 cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KKy0KKy0gIDkuIFRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25z Cistb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNo IG5ldyB2ZXJzaW9ucyB3aWxsCisrZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRo aXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QgY29udmV5IGEKKytjb3ZlcmVkIHdvcmsgc28gYXMg dG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKKytM aWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29u c2VxdWVuY2UgeW91IG1heQorK25vdCBjb252ZXkgaXQgYXQgYWxsLiAgRm9yIGV4YW1wbGUsIGlm IHlvdSBhZ3JlZSB0byB0ZXJtcyB0aGF0IG9ibGlnYXRlIHlvdQorK3RvIGNvbGxlY3QgYSByb3lh bHR5IGZvciBmdXJ0aGVyIGNvbnZleWluZyBmcm9tIHRob3NlIHRvIHdob20geW91IGNvbnZleQor K3RoZSBQcm9ncmFtLCB0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCB0aG9zZSB0 ZXJtcyBhbmQgdGhpcworK0xpY2Vuc2Ugd291bGQgYmUgdG8gcmVmcmFpbiBlbnRpcmVseSBmcm9t IGNvbnZleWluZyB0aGUgUHJvZ3JhbS4KKysKKysgIDEzLiBVc2Ugd2l0aCB0aGUgR05VIEFmZmVy byBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorKworKyAgTm90d2l0aHN0YW5kaW5nIGFueSBvdGhl ciBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNlLCB5b3UgaGF2ZQorK3Blcm1pc3Npb24gdG8gbGlu ayBvciBjb21iaW5lIGFueSBjb3ZlcmVkIHdvcmsgd2l0aCBhIHdvcmsgbGljZW5zZWQKKyt1bmRl ciB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpbnRv IGEgc2luZ2xlCisrY29tYmluZWQgd29yaywgYW5kIHRvIGNvbnZleSB0aGUgcmVzdWx0aW5nIHdv cmsuICBUaGUgdGVybXMgb2YgdGhpcworK0xpY2Vuc2Ugd2lsbCBjb250aW51ZSB0byBhcHBseSB0 byB0aGUgcGFydCB3aGljaCBpcyB0aGUgY292ZXJlZCB3b3JrLAorK2J1dCB0aGUgc3BlY2lhbCBy ZXF1aXJlbWVudHMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKytz ZWN0aW9uIDEzLCBjb25jZXJuaW5nIGludGVyYWN0aW9uIHRocm91Z2ggYSBuZXR3b3JrIHdpbGwg YXBwbHkgdG8gdGhlCisrY29tYmluYXRpb24gYXMgc3VjaC4KKysKKysgIDE0LiBSZXZpc2VkIFZl cnNpb25zIG9mIHRoaXMgTGljZW5zZS4KKysKKysgIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24gbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zIG9mCisrdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lv bnMgd2lsbAorIGJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1 dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bworIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNl cm5zLgorIAorLUVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24g bnVtYmVyLiAgSWYgdGhlIFByb2dyYW0KKy1zcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0 aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQgImFueQorLWxhdGVyIHZlcnNpb24i LCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlv bnMKKy1laXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxp c2hlZCBieSB0aGUgRnJlZQorLVNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBk b2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YKKy10aGlzIExpY2Vuc2UsIHlvdSBt YXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl CistRm91bmRhdGlvbi4KKy0KKy0gIDEwLiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0 cyBvZiB0aGUgUHJvZ3JhbSBpbnRvIG90aGVyIGZyZWUKKy1wcm9ncmFtcyB3aG9zZSBkaXN0cmli dXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCistdG8g YXNrIGZvciBwZXJtaXNzaW9uLiAgRm9yIHNvZnR3YXJlIHdoaWNoIGlzIGNvcHlyaWdodGVkIGJ5 IHRoZSBGcmVlCistU29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgd2Ugc29tZXRpbWVzCistbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAg T3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKKy1vZiBwcmVzZXJ2 aW5nIHRoZSBmcmVlIHN0YXR1cyBvZiBhbGwgZGVyaXZhdGl2ZXMgb2Ygb3VyIGZyZWUgc29mdHdh cmUgYW5kCistb2YgcHJvbW90aW5nIHRoZSBzaGFyaW5nIGFuZCByZXVzZSBvZiBzb2Z0d2FyZSBn ZW5lcmFsbHkuCistCistCQkJICAgIE5PIFdBUlJBTlRZCistCistICAxMS4gQkVDQVVTRSBUSEUg UFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkK Ky1GT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZIEFQUExJQ0FCTEUg TEFXLiAgRVhDRVBUIFdIRU4KKy1PVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlS SUdIVCBIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTCistUFJPVklERSBUSEUgUFJPR1JBTSAi QVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKKy1P UiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS UkFOVElFUyBPRgorLU1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMKKy1UTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9S TUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFCistUFJPR1JBTSBQ Uk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJW SUNJTkcsCistUkVQQUlSIE9SIENPUlJFQ1RJT04uCistCistICAxMi4gSU4gTk8gRVZFTlQgVU5M RVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTiBXUklUSU5HCist V0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNQVkgTU9E SUZZIEFORC9PUgorLVJFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUs IEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCistSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBT UEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HCistT1VU IE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRAorLVRPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElO QUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQorLVlPVSBPUiBUSElSRCBQQVJUSUVTIE9S IEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSCistUFJP R1JBTVMpLCBFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklT RUQgT0YgVEhFCistUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgorLQorLQkJICAgICBFTkQg T0YgVEVSTVMgQU5EIENPTkRJVElPTlMKKy0MCistCUFwcGVuZGl4OiBIb3cgdG8gQXBwbHkgVGhl c2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKKysgIEVhY2ggdmVyc2lvbiBpcyBnaXZlbiBh IGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlCisrUHJvZ3JhbSBzcGVjaWZp ZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwKKytQ dWJsaWMgTGljZW5zZSAib3IgYW55IGxhdGVyIHZlcnNpb24iIGFwcGxpZXMgdG8gaXQsIHlvdSBo YXZlIHRoZQorK29wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGVp dGhlciBvZiB0aGF0IG51bWJlcmVkCisrdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKytGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dy YW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mIHRoZQorK0dOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlLCB5b3UgbWF5IGNob29zZSBhbnkgdmVyc2lvbiBldmVyIHB1Ymxpc2hl ZAorK2J5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisrCisrICBJZiB0aGUgUHJvZ3Jh bSBzcGVjaWZpZXMgdGhhdCBhIHByb3h5IGNhbiBkZWNpZGUgd2hpY2ggZnV0dXJlCisrdmVyc2lv bnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHBy b3h5J3MKKytwdWJsaWMgc3RhdGVtZW50IG9mIGFjY2VwdGFuY2Ugb2YgYSB2ZXJzaW9uIHBlcm1h bmVudGx5IGF1dGhvcml6ZXMgeW91CisrdG8gY2hvb3NlIHRoYXQgdmVyc2lvbiBmb3IgdGhlIFBy b2dyYW0uCisrCisrICBMYXRlciBsaWNlbnNlIHZlcnNpb25zIG1heSBnaXZlIHlvdSBhZGRpdGlv bmFsIG9yIGRpZmZlcmVudAorK3Blcm1pc3Npb25zLiAgSG93ZXZlciwgbm8gYWRkaXRpb25hbCBv YmxpZ2F0aW9ucyBhcmUgaW1wb3NlZCBvbiBhbnkKKythdXRob3Igb3IgY29weXJpZ2h0IGhvbGRl ciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhCisrbGF0ZXIgdmVyc2lv bi4KKysKKysgIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LgorKworKyAgVEhFUkUgSVMgTk8g V0FSUkFOVFkgRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWQorK0FQ UExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRI RSBDT1BZUklHSFQKKytIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTIFBST1ZJREUgVEhFIFBS T0dSQU0gIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZCisrT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBS RVNTRUQgT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisrVEhFIElN UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUgorK1BVUlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMgVE8gVEhFIFFVQUxJVFkgQU5E IFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFNCisrSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFIFBS T0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GCisrQUxMIE5FQ0VT U0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgorKworKyAgMTYuIExpbWl0YXRp b24gb2YgTGlhYmlsaXR5LgorKworKyAgSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQ UExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTiBXUklUSU5HCisrV0lMTCBBTlkgQ09QWVJJR0hU IEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNT0RJRklFUyBBTkQvT1IgQ09OVkVZUwor K1RIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFN QUdFUywgSU5DTFVESU5HIEFOWQorK0dFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09O U0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcgT1VUIE9GIFRIRQorK1VTRSBPUiBJTkFCSUxJVFkg VE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIExPU1MgT0YK KytEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJ TkVEIEJZIFlPVSBPUiBUSElSRAorK1BBUlRJRVMgT1IgQSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFN IFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIgUFJPR1JBTVMpLAorK0VWRU4gSUYgU1VDSCBIT0xE RVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YK KytTVUNIIERBTUFHRVMuCisrCisrICAxNy4gSW50ZXJwcmV0YXRpb24gb2YgU2VjdGlvbnMgMTUg YW5kIDE2LgorKworKyAgSWYgdGhlIGRpc2NsYWltZXIgb2Ygd2FycmFudHkgYW5kIGxpbWl0YXRp b24gb2YgbGlhYmlsaXR5IHByb3ZpZGVkCisrYWJvdmUgY2Fubm90IGJlIGdpdmVuIGxvY2FsIGxl Z2FsIGVmZmVjdCBhY2NvcmRpbmcgdG8gdGhlaXIgdGVybXMsCisrcmV2aWV3aW5nIGNvdXJ0cyBz aGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzCisrYW4g YWJzb2x1dGUgd2FpdmVyIG9mIGFsbCBjaXZpbCBsaWFiaWxpdHkgaW4gY29ubmVjdGlvbiB3aXRo IHRoZQorK1Byb2dyYW0sIHVubGVzcyBhIHdhcnJhbnR5IG9yIGFzc3VtcHRpb24gb2YgbGlhYmls aXR5IGFjY29tcGFuaWVzIGEKKytjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBm ZWUuCisrCisrICAgICAgICAgICAgICAgICAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05T CisrCisrICAgICAgICAgICAgSG93IHRvIEFwcGx5IFRoZXNlIFRlcm1zIHRvIFlvdXIgTmV3IFBy b2dyYW1zCisgCisgICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQg aXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0CisgcG9zc2libGUgdXNlIHRvIHRoZSBwdWJsaWMsIHRo ZSBiZXN0IHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdG8gbWFrZSBpdAorQEAgLTI4NywxNSArNjI4 LDE1IEBAIGZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQg Y2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgorIAorICAgVG8gZG8gc28sIGF0dGFjaCB0aGUgZm9s bG93aW5nIG5vdGljZXMgdG8gdGhlIHByb2dyYW0uICBJdCBpcyBzYWZlc3QKKyB0byBhdHRhY2gg dGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5 CistY29udmV5IHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxk IGhhdmUgYXQgbGVhc3QKKytzdGF0ZSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFj aCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0CisgdGhlICJjb3B5cmlnaHQiIGxpbmUgYW5kIGEg cG9pbnRlciB0byB3aGVyZSB0aGUgZnVsbCBub3RpY2UgaXMgZm91bmQuCisgCisgICAgIDxvbmUg bGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQg aXQgZG9lcy4+CistICAgIENvcHlyaWdodCAoQykgMTl5eSAgPG5hbWUgb2YgYXV0aG9yPgorKyAg ICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgorIAorLSAgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgor KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorICAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor IAorICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKK0BAIC0zMDQsMzYgKzY0NSwzMCBAQCB0aGUgImNvcHlyaWdodCIgbGlu ZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KKyAgICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyAgICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKy0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKKy0gICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQQorKyAgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KyAKKyBBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ry b25pYyBhbmQgcGFwZXIgbWFpbC4KKyAKKy1JZiB0aGUgcHJvZ3JhbSBpcyBpbnRlcmFjdGl2ZSwg bWFrZSBpdCBvdXRwdXQgYSBzaG9ydCBub3RpY2UgbGlrZSB0aGlzCistd2hlbiBpdCBzdGFydHMg aW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKKysgIElmIHRoZSBwcm9ncmFtIGRvZXMgdGVybWluYWwg aW50ZXJhY3Rpb24sIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQKKytub3RpY2UgbGlrZSB0aGlzIHdo ZW4gaXQgc3RhcnRzIGluIGFuIGludGVyYWN0aXZlIG1vZGU6CisgCistICAgIEdub21vdmlzaW9u IHZlcnNpb24gNjksIENvcHlyaWdodCAoQykgMTl5eSBuYW1lIG9mIGF1dGhvcgorLSAgICBHbm9t b3Zpc2lvbiBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5 cGUgYHNob3cgdycuCisrICAgIDxwcm9ncmFtPiAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1l IG9mIGF1dGhvcj4KKysgICAgVGhpcyBwcm9ncmFtIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBX QVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KKyAgICAgVGhpcyBpcyBmcmVlIHNv ZnR3YXJlLCBhbmQgeW91IGFyZSB3ZWxjb21lIHRvIHJlZGlzdHJpYnV0ZSBpdAorICAgICB1bmRl ciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCisgCisgVGhl IGh5cG90aGV0aWNhbCBjb21tYW5kcyBgc2hvdyB3JyBhbmQgYHNob3cgYycgc2hvdWxkIHNob3cg dGhlIGFwcHJvcHJpYXRlCistcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBP ZiBjb3Vyc2UsIHRoZSBjb21tYW5kcyB5b3UgdXNlIG1heQorLWJlIGNhbGxlZCBzb21ldGhpbmcg b3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQorLW1v dXNlLWNsaWNrcyBvciBtZW51IGl0ZW1zLS13aGF0ZXZlciBzdWl0cyB5b3VyIHByb2dyYW0uCist CistWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHBy b2dyYW1tZXIpIG9yIHlvdXIKKy1zY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQg ZGlzY2xhaW1lciIgZm9yIHRoZSBwcm9ncmFtLCBpZgorLW5lY2Vzc2FyeS4gIEhlcmUgaXMgYSBz YW1wbGU7IGFsdGVyIHRoZSBuYW1lczoKKy0KKy0gIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlz Y2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlIHByb2dyYW0KKy0gIGBHbm9tb3Zp c2lvbicgKHdoaWNoIG1ha2VzIHBhc3NlcyBhdCBjb21waWxlcnMpIHdyaXR0ZW4gYnkgSmFtZXMg SGFja2VyLgorLQorLSAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTg5CistICBU eSBDb29uLCBQcmVzaWRlbnQgb2YgVmljZQorLQorLVRoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBkb2VzIG5vdCBwZXJtaXQgaW5jb3Jwb3JhdGluZyB5b3VyIHByb2dyYW0gaW50bworLXByb3By aWV0YXJ5IHByb2dyYW1zLiAgSWYgeW91ciBwcm9ncmFtIGlzIGEgc3Vicm91dGluZSBsaWJyYXJ5 LCB5b3UgbWF5CistY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJv cHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCistbGlicmFyeS4gIElmIHRoaXMgaXMgd2hh dCB5b3Ugd2FudCB0byBkbywgdXNlIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsCistUHVibGljIExp Y2Vuc2UgaW5zdGVhZCBvZiB0aGlzIExpY2Vuc2UuCisrcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHlvdXIgcHJvZ3JhbSdzIGNvbW1hbmRzCisrbWlnaHQg YmUgZGlmZmVyZW50OyBmb3IgYSBHVUkgaW50ZXJmYWNlLCB5b3Ugd291bGQgdXNlIGFuICJhYm91 dCBib3giLgorKworKyAgWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ug d29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHNjaG9vbCwKKytpZiBhbnksIHRvIHNpZ24gYSAiY29w eXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYgbmVjZXNzYXJ5LgorK0ZvciBt b3JlIGluZm9ybWF0aW9uIG9uIHRoaXMsIGFuZCBob3cgdG8gYXBwbHkgYW5kIGZvbGxvdyB0aGUg R05VIEdQTCwgc2VlCisrPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyAgVGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGRvZXMgbm90IHBlcm1pdCBpbmNvcnBvcmF0aW5n IHlvdXIgcHJvZ3JhbQorK2ludG8gcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dy YW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdQorK21heSBjb25zaWRlciBpdCBtb3JlIHVz ZWZ1bCB0byBwZXJtaXQgbGlua2luZyBwcm9wcmlldGFyeSBhcHBsaWNhdGlvbnMgd2l0aAorK3Ro ZSBsaWJyYXJ5LiAgSWYgdGhpcyBpcyB3aGF0IHlvdSB3YW50IHRvIGRvLCB1c2UgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbAorK1B1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLiAg QnV0IGZpcnN0LCBwbGVhc2UgcmVhZAorKzxodHRwOi8vd3d3LmdudS5vcmcvcGhpbG9zb3BoeS93 aHktbm90LWxncGwuaHRtbD4uCistLS0gYS9yZWFkbGluZS9DaGFuZ2VMb2cuZ2RiCisrKysgYi9y ZWFkbGluZS9DaGFuZ2VMb2cuZ2RiCitAQCAtMSwzICsxLDEyIEBACisrMjAxMS0wNC0zMCAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlXb3JrYXJvdW5k IGdkYi5iYXNlL2NvbXBsZXRpb24uZXhwIHJlZ3Jlc3Npb24gb24gcmVhZGxpbmUtNi4yLgorKwkq IGNvbXBsZXRlLmMgKGdldF95X29yX24pOiBEaXNhYmxlIHRoZSByZXR1cm4gb24gUkxfU1RBVEVf Q0FMTEJBQ0suCisrCisrMjAxMS0wNC0yNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgorKworKwlJbXBvcnRlZCByZWFkbGluZSA2LjIsIGFuZCB1cHN0cmVhbSBw YXRjaCAwMDEuCisrCisgMjAxMS0wMy0wNCAgTWljaGFlbCBTbnlkZXIgIDxtc255ZGVyQHZtd2Fy ZS5jb20+CisgCisgCSogYmluZC5jIChybF9mdW5jdGlvbl9kdW1wZXIpOiBGcmVlIGFsbG9jYXRl ZCBtZW1vcnkuCistLS0gYS9yZWFkbGluZS9JTlNUQUxMCisrKysgYi9yZWFkbGluZS9JTlNUQUxM CitAQCAtMSw3ICsxLDcgQEAKKyBCYXNpYyBJbnN0YWxsYXRpb24KKyA9PT09PT09PT09PT09PT09 PT0KKyAKKy1UaGVzZSBhcmUgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucyBmb3IgUmVhZGxpbmUt NS4xLgorK1RoZXNlIGFyZSBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zIGZvciBSZWFkbGluZS02 LjIuCisgCisgVGhlIHNpbXBsZXN0IHdheSB0byBjb21waWxlIHJlYWRsaW5lIGlzOgorIAorLS0t IGEvcmVhZGxpbmUvTUFOSUZFU1QKKysrKyBiL3JlYWRsaW5lL01BTklGRVNUCitAQCAtMyw2ICsz LDcgQEAKKyAjCisgZG9jCQlkCisgZXhhbXBsZXMJZAorK2V4YW1wbGVzL2F1dG9jb25mCWQKKyBl eGFtcGxlcy9ybGZlCWQKKyBzdXBwb3J0CQlkCisgc2hsaWIJCWQKK0BAIC0yNiw2ICsyNyw3IEBA IGhpc3RsaWIuaAlmCisga2V5bWFwcy5oCWYKKyBwb3NpeGRpci5oCWYKKyBwb3NpeGptcC5oCWYK Kytwb3NpeHNlbGVjdC5oCWYKKyBwb3NpeHN0YXQuaAlmCisgcmVhZGxpbmUuaAlmCisgcmxjb25m LmgJZgorQEAgLTY5LDExICs3MSwxMyBAQCB1bmRvLmMJCWYKKyB1dGlsLmMJCWYKKyB2aV9rZXlt YXAuYwlmCisgdmlfbW9kZS5jCWYKKyt4ZnJlZS5jCQlmCisgeG1hbGxvYy5jCWYKKyBoaXN0b3J5 LmMJZgorIGhpc3RleHBhbmQuYwlmCisgaGlzdGZpbGUuYwlmCisgaGlzdHNlYXJjaC5jCWYKKytw YXRjaGxldmVsCWYKKyBzaGxpYi9NYWtlZmlsZS5pbglmCisgc3VwcG9ydC9jb25maWcuZ3Vlc3MJ ZgorIHN1cHBvcnQvY29uZmlnLnJwYXRoCWYKK0BAIC0xMDcsMTIgKzExMSwxNiBAQCBleGFtcGxl cy9tYW5leGFtcC5jCWYKKyBleGFtcGxlcy9yZWFkbGluZWJ1Zi5oCWYKKyBleGFtcGxlcy9ybC1m Z2V0cy5jCWYKKyBleGFtcGxlcy9ybGNhdC5jCWYKKytleGFtcGxlcy9ybGV2ZW50LmMJZgorIGV4 YW1wbGVzL3JsdGVzdC5jCWYKKyBleGFtcGxlcy9ybC5jCQlmCisgZXhhbXBsZXMvcmxwdHl0ZXN0 LmMJZgorIGV4YW1wbGVzL3JsdmVyc2lvbi5jCWYKKyBleGFtcGxlcy9oaXN0ZXhhbXAuYwlmCisg ZXhhbXBsZXMvSW5wdXRyYwlmCisrZXhhbXBsZXMvYXV0b2NvbmYvQkFTSF9DSEVDS19MSUJfVEVS TUNBUAlmCisrZXhhbXBsZXMvYXV0b2NvbmYvUkxfTElCX1JFQURMSU5FX1ZFUlNJT04JZgorK2V4 YW1wbGVzL2F1dG9jb25mL3dpX0xJQl9SRUFETElORQlmCisgZXhhbXBsZXMvcmxmZS9DaGFuZ2VM b2cJCWYKKyBleGFtcGxlcy9ybGZlL01ha2VmaWxlLmluCWYKKyBleGFtcGxlcy9ybGZlL1JFQURN RQkJZgorQEAgLTEyNCw2ICsxMzIsNyBAQCBleGFtcGxlcy9ybGZlL29zLmgJCWYKKyBleGFtcGxl cy9ybGZlL3B0eS5jCQlmCisgZXhhbXBsZXMvcmxmZS9ybGZlLmMJCWYKKyBleGFtcGxlcy9ybGZl L3NjcmVlbi5oCQlmCisrZXhhbXBsZXMvcmx3cmFwLTAuMzAudGFyLmd6CWYKKyAjIGZvcm1hdHRl ZCBkb2N1bWVudGF0aW9uLCBmcm9tIE1BTklGRVNULmRvYworIGRvYy9yZWFkbGluZS5wcwkJZgor IGRvYy9oaXN0b3J5LnBzCQlmCistLS0gYS9yZWFkbGluZS9NYWtlZmlsZS5pbgorKysrIGIvcmVh ZGxpbmUvTWFrZWZpbGUuaW4KK0BAIC0xLDIwICsxLDIwIEBACisgIyMgLSotIHRleHQgLSotICMj CisgIyBNYXN0ZXIgTWFrZWZpbGUgZm9yIHRoZSBHTlUgcmVhZGxpbmUgbGlicmFyeS4KKy0jIENv cHlyaWdodCAoQykgMTk5NC0yMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMg Q29weXJpZ2h0IChDKSAxOTk0LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisg CistIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0jIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0jIGFueSBs YXRlciB2ZXJzaW9uLgorKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyMgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCistIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysj ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysjICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysjICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0jIEZv dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExIFVTQS4KKyBSTF9MSUJSQVJZX1ZFUlNJT04gPSBATElCVkVSU0lPTkAKKyBSTF9MSUJSQVJZ X05BTUUgPSByZWFkbGluZQorIAorQEAgLTU4LDcgKzU4LDcgQEAgbGliZGlyID0gQGxpYmRpckAK KyBtYW5kaXIgPSBAbWFuZGlyQAorIGluY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKKyBkYXRhZGly ID0gQGRhdGFkaXJACistbG9jYWxlZGlyID0gJChkYXRhZGlyKS9sb2NhbGUKKytsb2NhbGVkaXIg PSBAbG9jYWxlZGlyQAorIAorIGluZm9kaXIgPSBAaW5mb2RpckAKKyAKK0BAIC02OCw3ICs2OCw3 IEBAIG1hbjNkaXIgPSAkKG1hbmRpcikvbWFuMworIERFU1RESVIgPQorIAorICMgUHJvZ3JhbXMg dG8gbWFrZSB0YWdzIGZpbGVzLgorLUVUQUdTID0gZXRhZ3MgLXR3CisrRVRBR1MgPSBldGFncwor IENUQUdTID0gY3RhZ3MgLXR3CisgCisgQ0ZMQUdTID0gQENGTEFHU0AKK0BAIC0xMDAsOCArMTAw LDYgQEAgR0NDX0xJTlRfQ0ZMQUdTID0gJChYQ0NGTEFHUykgJChHQ0NfTElOVF9GTEFHUykgQENG TEFHU0AgQExPQ0FMX0NGTEFHU0AKKyBMSUJSQVJZX05BTUUgPSBsaWJyZWFkbGluZS5hCisgU1RB VElDX0xJQlMgPSBsaWJyZWFkbGluZS5hIGxpYmhpc3RvcnkuYQorIAorLVdDV0lEVEhfT0JKID0g QFdDV0lEVEhfT0JKQAorLQorICMgVGhlIEMgY29kZSBzb3VyY2UgZmlsZXMgZm9yIHRoaXMgbGli cmFyeS4KKyBDU09VUkNFUyA9ICQoc3JjZGlyKS9yZWFkbGluZS5jICQoc3JjZGlyKS9mdW5tYXAu YyAkKHNyY2Rpcikva2V5bWFwcy5jIFwKKyAJICAgJChzcmNkaXIpL3ZpX21vZGUuYyAkKHNyY2Rp cikvcGFyZW5zLmMgJChzcmNkaXIpL3JsdHR5LmMgXAorQEAgLTEwOSwyNiArMTA3LDI4IEBAIENT T1VSQ0VTID0gJChzcmNkaXIpL3JlYWRsaW5lLmMgJChzcmNkaXIpL2Z1bm1hcC5jICQoc3JjZGly KS9rZXltYXBzLmMgXAorIAkgICAkKHNyY2RpcikvZGlzcGxheS5jICQoc3JjZGlyKS9zaWduYWxz LmMgJChzcmNkaXIpL2VtYWNzX2tleW1hcC5jIFwKKyAJICAgJChzcmNkaXIpL3ZpX2tleW1hcC5j ICQoc3JjZGlyKS91dGlsLmMgJChzcmNkaXIpL2tpbGwuYyBcCisgCSAgICQoc3JjZGlyKS91bmRv LmMgJChzcmNkaXIpL21hY3JvLmMgJChzcmNkaXIpL2lucHV0LmMgXAorLQkgICAkKHNyY2Rpcikv Y2FsbGJhY2suYyAkKHNyY2RpcikvdGVybWluYWwuYyAkKHNyY2RpcikveG1hbGxvYy5jIFwKKysJ ICAgJChzcmNkaXIpL2NhbGxiYWNrLmMgJChzcmNkaXIpL3Rlcm1pbmFsLmMgJChzcmNkaXIpL3ht YWxsb2MuYyAkKHNyY2RpcikveGZyZWUuYyBcCisgCSAgICQoc3JjZGlyKS9oaXN0b3J5LmMgJChz cmNkaXIpL2hpc3RzZWFyY2guYyAkKHNyY2RpcikvaGlzdGV4cGFuZC5jIFwKKyAJICAgJChzcmNk aXIpL2hpc3RmaWxlLmMgJChzcmNkaXIpL25scy5jICQoc3JjZGlyKS9zZWFyY2guYyBcCisgCSAg ICQoc3JjZGlyKS9zaGVsbC5jICQoc3JjZGlyKS9zYXZlc3RyaW5nLmMgJChzcmNkaXIpL3RpbGRl LmMgXAorIAkgICAkKHNyY2RpcikvdGV4dC5jICQoc3JjZGlyKS9taXNjLmMgJChzcmNkaXIpL2Nv bXBhdC5jIFwKKy0JICAgJChzcmNkaXIpL21idXRpbC5jICQoc3JjZGlyKS9zdXBwb3J0L3djd2lk dGguYworKwkgICAkKHNyY2RpcikvbWJ1dGlsLmMKKyAKKyAjIFRoZSBoZWFkZXIgZmlsZXMgZm9y IHRoaXMgbGlicmFyeS4KKy1IU09VUkNFUyA9IHJlYWRsaW5lLmggcmxkZWZzLmggY2hhcmRlZnMu aCBrZXltYXBzLmggaGlzdG9yeS5oIGhpc3RsaWIuaCBcCistCSAgIHBvc2l4c3RhdC5oIHBvc2l4 ZGlyLmggcG9zaXhqbXAuaCB0aWxkZS5oIHJsY29uZi5oIHJsdHR5LmggXAorLQkgICBhbnNpX3N0 ZGxpYi5oIHRjYXAuaCBybHN0ZGMuaCB4bWFsbG9jLmggcmxwcml2YXRlLmggcmxzaGVsbC5oIFwK Ky0JICAgcmx0eXBlZGVmcy5oIHJsbWJ1dGlsLmgKKytIU09VUkNFUyA9ICQoc3JjZGlyKS9yZWFk bGluZS5oICQoc3JjZGlyKS9ybGRlZnMuaCAkKHNyY2RpcikvY2hhcmRlZnMuaCBcCisrCSAgICQo c3JjZGlyKS9rZXltYXBzLmggJChzcmNkaXIpL2hpc3RvcnkuaCAkKHNyY2RpcikvaGlzdGxpYi5o IFwKKysJICAgJChzcmNkaXIpL3Bvc2l4c3RhdC5oICQoc3JjZGlyKS9wb3NpeGRpci5oICQoc3Jj ZGlyKS9wb3NpeGptcC5oIFwKKysJICAgJChzcmNkaXIpL3RpbGRlLmggJChzcmNkaXIpL3JsY29u Zi5oICQoc3JjZGlyKS9ybHR0eS5oIFwKKysJICAgJChzcmNkaXIpL2Fuc2lfc3RkbGliLmggJChz cmNkaXIpL3RjYXAuaCAkKHNyY2RpcikvcmxzdGRjLmggXAorKwkgICAkKHNyY2RpcikveG1hbGxv Yy5oICQoc3JjZGlyKS9ybHByaXZhdGUuaCAkKHNyY2RpcikvcmxzaGVsbC5oIFwKKysJICAgJChz cmNkaXIpL3JsdHlwZWRlZnMuaCAkKHNyY2RpcikvcmxtYnV0aWwuaAorIAorIEhJU1RPQkogPSBo aXN0b3J5Lm8gaGlzdGV4cGFuZC5vIGhpc3RmaWxlLm8gaGlzdHNlYXJjaC5vIHNoZWxsLm8gbWJ1 dGlsLm8KKyBUSUxERU9CSiA9IHRpbGRlLm8KKyBPQkpFQ1RTID0gcmVhZGxpbmUubyB2aV9tb2Rl Lm8gZnVubWFwLm8ga2V5bWFwcy5vIHBhcmVucy5vIHNlYXJjaC5vIFwKKyAJICBybHR0eS5vIGNv bXBsZXRlLm8gYmluZC5vIGlzZWFyY2gubyBkaXNwbGF5Lm8gc2lnbmFscy5vIFwKKyAJICB1dGls Lm8ga2lsbC5vIHVuZG8ubyBtYWNyby5vIGlucHV0Lm8gY2FsbGJhY2subyB0ZXJtaW5hbC5vIFwK Ky0JICB0ZXh0Lm8gbmxzLm8gbWlzYy5vIGNvbXBhdC5vIHhtYWxsb2MubyAkKEhJU1RPQkopICQo VElMREVPQkopIFwKKy0JICAkKFdDV0lEVEhfT0JKKQorKwkgIHRleHQubyBubHMubyBtaXNjLm8g Y29tcGF0Lm8geGZyZWUubyB4bWFsbG9jLm8gJChISVNUT0JKKSAkKFRJTERFT0JKKQorIAorICMg VGhlIHRleGluZm8gZmlsZXMgd2hpY2ggZG9jdW1lbnQgdGhpcyBsaWJyYXJ5LgorIERPQ1NPVVJD RSA9IGRvYy9ybG1hbi50ZXhpbmZvIGRvYy9ybHRlY2gudGV4aW5mbyBkb2Mvcmx1c2VyLnRleGlu Zm8KK0BAIC0xNTksMTUgKzE1OSwxMSBAQCBsaWJyZWFkbGluZS5hOiAkKE9CSkVDVFMpCisgCSQo QVIpICQoQVJGTEFHUykgJEAgJChPQkpFQ1RTKQorIAktdGVzdCAtbiAiJChSQU5MSUIpIiAmJiAk KFJBTkxJQikgJEAKKyAKKy1saWJoaXN0b3J5LmE6ICQoSElTVE9CSikgeG1hbGxvYy5vCisrbGli aGlzdG9yeS5hOiAkKEhJU1RPQkopIHhtYWxsb2MubyB4ZnJlZS5vCisgCSQoUk0pICRACistCSQo QVIpICQoQVJGTEFHUykgJEAgJChISVNUT0JKKSB4bWFsbG9jLm8KKysJJChBUikgJChBUkZMQUdT KSAkQCAkKEhJU1RPQkopIHhtYWxsb2MubyB4ZnJlZS5vCisgCS10ZXN0IC1uICIkKFJBTkxJQiki ICYmICQoUkFOTElCKSAkQAorIAorLXdjd2lkdGgubzogJChzcmNkaXIpL3N1cHBvcnQvd2N3aWR0 aC5jCistCSQoUk0pICRACistCSQoQ0MpICQoQ0NGTEFHUykgLWMgJChzcmNkaXIpL3N1cHBvcnQv d2N3aWR0aC5jCistCisgIyBTaW5jZSB0aWxkZS5jIGlzIHNoYXJlZCBiZXR3ZWVuIHJlYWRsaW5l IGFuZCBiYXNoLCBtYWtlIHN1cmUgd2UgY29tcGlsZQorICMgaXQgd2l0aCB0aGUgcmlnaHQgZmxh Z3Mgd2hlbiBpdCdzIGJ1aWx0IGFzIHBhcnQgb2YgcmVhZGxpbmUKKyB0aWxkZS5vOgl0aWxkZS5j CitAQCAtMTc1LDcgKzE3MSw3IEBAIHRpbGRlLm86CXRpbGRlLmMKKyAJJChDQykgJChDQ0ZMQUdT KSAtRFJFQURMSU5FX0xJQlJBUlkgLWMgJChzcmNkaXIpL3RpbGRlLmMKKyAKKyByZWFkbGluZTog JChPQkpFQ1RTKSByZWFkbGluZS5oIHJsZGVmcy5oIGNoYXJkZWZzLmggLi9saWJyZWFkbGluZS5h CistCSQoQ0MpICQoQ0NGTEFHUykgLW8gJEAgLi9leGFtcGxlcy9ybC5jIC4vbGlicmVhZGxpbmUu YSAke1RFUk1DQVBfTElCfQorKwkkKENDKSAkKENDRkxBR1MpIC1EUkVBRExJTkVfTElCUkFSWSAt byAkQCAkKHRvcF9zcmNkaXIpL2V4YW1wbGVzL3JsLmMgLi9saWJyZWFkbGluZS5hICR7VEVSTUNB UF9MSUJ9CisgCisgbGludDoJZm9yY2UKKyAJJChNQUtFKSAkKE1GTEFHUykgQ0NGTEFHUz0nJChH Q0NfTElOVF9DRkxBR1MpJyBzdGF0aWMKK0BAIC0yMDAsNiArMTk2LDcgQEAgc3RhbXAtaDogY29u ZmlnLnN0YXR1cyAkKHNyY2RpcikvY29uZmlnLmguaW4KKyAjJChzcmNkaXIpL2NvbmZpZ3VyZTog JChzcmNkaXIpL2NvbmZpZ3VyZS5pbgkjIyBDb21tZW50LW1lLW91dCBpbiBkaXN0cmlidXRpb24K KyAjCWNkICQoc3JjZGlyKSAmJiBhdXRvY29uZgkjIyBDb21tZW50LW1lLW91dCBpbiBkaXN0cmli dXRpb24KKyAKKysKKyBzaGFyZWQ6CWZvcmNlCisgCS10ZXN0IC1kIHNobGliIHx8IG1rZGlyIHNo bGliCisgCS0oIGNkIHNobGliIDsgJHtNQUtFfSAke01GTEFHU30gYWxsICkKK0BAIC0yMTQsMTcg KzIxMSw2IEBAIGV4YW1wbGVzOiBmb3JjZQorIAorIGZvcmNlOgorIAorLWluc3RhbGwtaGVhZGVy czogaW5zdGFsbGRpcnMgJHtJTlNUQUxMRURfSEVBREVSU30KKy0JZm9yIGYgaW4gJHtJTlNUQUxM RURfSEVBREVSU307IGRvIFwKKy0JCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvJCRmICQoREVT VERJUikkKGluY2x1ZGVkaXIpL3JlYWRsaW5lIDsgXAorLQlkb25lCistCistdW5pbnN0YWxsLWhl YWRlcnM6CistCS10ZXN0IC1uICIkKGluY2x1ZGVkaXIpIiAmJiBjZCAkKERFU1RESVIpJChpbmNs dWRlZGlyKS9yZWFkbGluZSAmJiBcCistCQkke1JNfSAke0lOU1RBTExFRF9IRUFERVJTfQorLQor LW1heWJlLXVuaW5zdGFsbC1oZWFkZXJzOiB1bmluc3RhbGwtaGVhZGVycworLQorICMjIEdEQiBM T0NBTAorICMjIERvbid0IG1lc3Mgd2l0aCBwZW9wbGUncyBpbnN0YWxsZWQgcmVhZGxpbmUncy4K KyAjIyBUaGlzIHRyaWVzIHRvIGluc3RhbGwgdGhpcyB2ZXJzaW9uIG9mIHJlYWRsaW5lIG92ZXIg d2hhdGV2ZXIKK0BAIC0yMzcsNyArMjIzLDE4IEBAIGluc3RhbGw6CisgCisgI2luc3RhbGw6CSQo SU5TVEFMTF9UQVJHRVRTKQorIAorLWluc3RhbGwtc3RhdGljOiBpbnN0YWxsZGlycyAkKFNUQVRJ Q19MSUJTKSBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1kb2MKKytpbnN0YWxsLWhlYWRlcnM6IGlu c3RhbGxkaXJzICR7SU5TVEFMTEVEX0hFQURFUlN9CisrCWZvciBmIGluICR7SU5TVEFMTEVEX0hF QURFUlN9OyBkbyBcCisrCQkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpLyQkZiAkKERFU1RESVIp JChpbmNsdWRlZGlyKS9yZWFkbGluZSA7IFwKKysJZG9uZQorKworK3VuaW5zdGFsbC1oZWFkZXJz OgorKwktdGVzdCAtbiAiJChpbmNsdWRlZGlyKSIgJiYgY2QgJChERVNURElSKSQoaW5jbHVkZWRp cikvcmVhZGxpbmUgJiYgXAorKwkJJHtSTX0gJHtJTlNUQUxMRURfSEVBREVSU30KKysKKyttYXli ZS11bmluc3RhbGwtaGVhZGVyczogdW5pbnN0YWxsLWhlYWRlcnMKKysKKytpbnN0YWxsLXN0YXRp YzogaW5zdGFsbGRpcnMgJChTVEFUSUNfTElCUykgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtZG9j IGluc3RhbGwtZXhhbXBsZXMKKyAJLSQoTVYpICQoREVTVERJUikkKGxpYmRpcikvbGlicmVhZGxp bmUuYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYnJlYWRsaW5lLm9sZAorIAkkKElOU1RBTExfREFU QSkgbGlicmVhZGxpbmUuYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYnJlYWRsaW5lLmEKKyAJLXRl c3QgLW4gIiQoUkFOTElCKSIgJiYgJChSQU5MSUIpICQoREVTVERJUikkKGxpYmRpcikvbGlicmVh ZGxpbmUuYQorQEAgLTI1MCw3ICsyNDcsNyBAQCBpbnN0YWxsZGlyczogJChzcmNkaXIpL3N1cHBv cnQvbWtpbnN0YWxsZGlycworIAkJJChERVNURElSKSQoaW5jbHVkZWRpcikvcmVhZGxpbmUgJChE RVNURElSKSQobGliZGlyKSBcCisgCQkkKERFU1RESVIpJChpbmZvZGlyKSAkKERFU1RESVIpJCht YW4zZGlyKQorIAorLXVuaW5zdGFsbDogdW5pbnN0YWxsLWhlYWRlcnMgdW5pbnN0YWxsLWRvYwor K3VuaW5zdGFsbDogdW5pbnN0YWxsLWhlYWRlcnMgdW5pbnN0YWxsLWRvYyB1bmluc3RhbGwtZXhh bXBsZXMKKyAJLXRlc3QgLW4gIiQoREVTVERJUikkKGxpYmRpcikiICYmIGNkICQoREVTVERJUikk KGxpYmRpcikgJiYgXAorIAkJJHtSTX0gbGlicmVhZGxpbmUuYSBsaWJyZWFkbGluZS5vbGQgbGli aGlzdG9yeS5hIGxpYmhpc3Rvcnkub2xkICQoU0hBUkVEX0xJQlMpCisgCS0oIGNkIHNobGliOyAk e01BS0V9ICR7TUZMQUdTfSBERVNURElSPSR7REVTVERJUn0gdW5pbnN0YWxsICkKK0BAIC0yNjEs NiArMjU4LDEyIEBAIGluc3RhbGwtc2hhcmVkOiBpbnN0YWxsZGlycyBpbnN0YWxsLWhlYWRlcnMg c2hhcmVkIGluc3RhbGwtZG9jCisgdW5pbnN0YWxsLXNoYXJlZDogbWF5YmUtdW5pbnN0YWxsLWhl YWRlcnMKKyAJLSggY2Qgc2hsaWI7ICR7TUFLRX0gJHtNRkxBR1N9IERFU1RESVI9JHtERVNURElS fSB1bmluc3RhbGwgKQorIAorK2luc3RhbGwtZXhhbXBsZXM6IGluc3RhbGxkaXJzIGluc3RhbGwt aGVhZGVycyBzaGFyZWQKKysJLSggY2QgZXhhbXBsZXMgOyAke01BS0V9ICR7TUZMQUdTfSBERVNU RElSPSR7REVTVERJUn0gaW5zdGFsbCApCisrCQorK3VuaW5zdGFsbC1leGFtcGxlczogbWF5YmUt dW5pbnN0YWxsLWhlYWRlcnMKKysJLSggY2QgZXhhbXBsZXM7ICR7TUFLRX0gJHtNRkxBR1N9IERF U1RESVI9JHtERVNURElSfSB1bmluc3RhbGwgKQorKworIGluc3RhbGwtZG9jOglpbnN0YWxsZGly cworIAktKCBpZiB0ZXN0IC1kIGRvYyA7IHRoZW4gXAorIAkJY2QgZG9jICYmIFwKK0BAIC0yNzQs MTAgKzI3NywxMCBAQCB1bmluc3RhbGwtZG9jOgorIAkgIGZpICkKKyAKKyBUQUdTOglmb3JjZQor LQkkKEVUQUdTKSAkKENTT1VSQ0VTKSAkKEhTT1VSQ0VTKQorKwktKCBjZCAkKHNyY2RpcikgJiYg JChFVEFHUykgJChDU09VUkNFUykgJChIU09VUkNFUykgKQorIAorIHRhZ3M6CWZvcmNlCistCSQo Q1RBR1MpICQoQ1NPVVJDRVMpICQoSFNPVVJDRVMpCisrCS0oIGNkICQoc3JjZGlyKSAmJiAkKENU QUdTKSAkKENTT1VSQ0VTKSAkKEhTT1VSQ0VTKSApCisgCisgY2xlYW46CWZvcmNlCisgCSQoUk0p ICQoT0JKRUNUUykgJChTVEFUSUNfTElCUykKK0BAIC0yOTksMTIgKzMwMiwxNCBAQCBkaXN0Y2xl YW4gbWFpbnRhaW5lci1jbGVhbjogY2xlYW4KKyAJJChSTSkgJChDUkVBVEVEX0NPTkZJR1VSRSkK KyAJJChSTSkgJChDUkVBVEVEX1RBR1MpCisgCistaW5mbyBkdmkgaHRtbCBwZGY6CisraW5mbyBk dmkgaHRtbCBwZGYgcHM6CisgCS0oIGNkIGRvYyAmJiAkKE1BS0UpICQoTUZMQUdTKSAkQCApCisg CisgaW5zdGFsbC1pbmZvOgorK2luc3RhbGwtZHZpOgorIGluc3RhbGwtaHRtbDoKKyBpbnN0YWxs LXBkZjoKKytpbnN0YWxsLXBzOgorIGNoZWNrOgorIGluc3RhbGxjaGVjazoKKyAKK0BAIC00MTYs NiArNDIxLDggQEAgdXRpbC5vOiByZWFkbGluZS5oIGtleW1hcHMuaCBybHR5cGVkZWZzLmggY2hh cmRlZnMuaCB0aWxkZS5oIHJsc3RkYy5oCisgdmlfbW9kZS5vOiBybGRlZnMuaCAke0JVSUxEX0RJ Un0vY29uZmlnLmggcmxjb25mLmgKKyB2aV9tb2RlLm86IHJlYWRsaW5lLmgga2V5bWFwcy5oIHJs dHlwZWRlZnMuaCBjaGFyZGVmcy5oIHRpbGRlLmgKKyB2aV9tb2RlLm86IGhpc3RvcnkuaCBhbnNp X3N0ZGxpYi5oIHJsc3RkYy5oCisreGZyZWUubzogJHtCVUlMRF9ESVJ9L2NvbmZpZy5oCisreGZy ZWUubzogYW5zaV9zdGRsaWIuaAorIHhtYWxsb2MubzogJHtCVUlMRF9ESVJ9L2NvbmZpZy5oCisg eG1hbGxvYy5vOiBhbnNpX3N0ZGxpYi5oCisgCitAQCAtNDc0LDYgKzQ4MSw3IEBAIHRpbGRlLm86 IHhtYWxsb2MuaAorIHVuZG8ubzogeG1hbGxvYy5oCisgdXRpbC5vOiB4bWFsbG9jLmgKKyB2aV9t b2RlLm86IHhtYWxsb2MuaAorK3hmcmVlLm86IHhtYWxsb2MuaAorIHhtYWxsb2MubzogeG1hbGxv Yy5oCisgCisgY29tcGxldGUubzogcmxtYnV0aWwuaAorQEAgLTUxNSw2ICs1MjMsNyBAQCB0aWxk ZS5vOiAkKHNyY2RpcikvdGlsZGUuYworIHVuZG8ubzogJChzcmNkaXIpL3VuZG8uYworIHV0aWwu bzogJChzcmNkaXIpL3V0aWwuYworIHZpX21vZGUubzogJChzcmNkaXIpL3ZpX21vZGUuYworK3hm cmVlLm86ICQoc3JjZGlyKS94ZnJlZS5jCisgeG1hbGxvYy5vOiAkKHNyY2RpcikveG1hbGxvYy5j CisgCisgaGlzdGV4cGFuZC5vOiAkKHNyY2RpcikvaGlzdGV4cGFuZC5jCitAQCAtNTQ5LDYgKzU1 OCw3IEBAIHRpbGRlLm86IHRpbGRlLmMKKyB1bmRvLm86IHVuZG8uYworIHV0aWwubzogdXRpbC5j CisgdmlfbW9kZS5vOiB2aV9tb2RlLmMKKyt4ZnJlZS5vOiB4ZnJlZS5jCisgeG1hbGxvYy5vOiB4 bWFsbG9jLmMKKyAKKyBoaXN0ZXhwYW5kLm86IGhpc3RleHBhbmQuYworLS0tIGEvcmVhZGxpbmUv TkVXUworKysrIGIvcmVhZGxpbmUvTkVXUworQEAgLTEsMzIgKzEsMTkgQEAKKy1UaGlzIGlzIGEg dGVyc2UgZGVzY3JpcHRpb24gb2YgdGhlIG5ldyBmZWF0dXJlcyBhZGRlZCB0byByZWFkbGluZS01 LjEgc2luY2UKKy10aGUgcmVsZWFzZSBvZiByZWFkbGluZS01LjAuCisrVGhpcyBpcyBhIHRlcnNl IGRlc2NyaXB0aW9uIG9mIHRoZSBuZXcgZmVhdHVyZXMgYWRkZWQgdG8gcmVhZGxpbmUtNi4yIHNp bmNlCisrdGhlIHJlbGVhc2Ugb2YgcmVhZGxpbmUtNi4xLgorIAorLTEuICBOZXcgRmVhdHVyZXMg aW4gUmVhZGxpbmUKKythLiAgVGhlIGhpc3RvcnkgbGlicmFyeSBkb2VzIG5vdCB0cnkgdG8gd3Jp dGUgdGhlIGhpc3RvcnkgZmlsZW5hbWUgaW4gdGhlCisrICAgIGN1cnJlbnQgZGlyZWN0b3J5IGlm ICRIT01FIGlzIHVuc2V0LiAgVGhpcyBjbG9zZXMgYSBwb3RlbnRpYWwgc2VjdXJpdHkKKysgICAg cHJvYmxlbSBpZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3BlY2lmeSBhIGhpc3RvcnkgZmls ZW5hbWUuCisgCistYS4gIFRoZSBrZXkgc2VxdWVuY2Ugc2VudCBieSB0aGUga2V5cGFkIGBkZWxl dGUnIGtleSBpcyBub3cgYXV0b21hdGljYWxseSAgIAorLSAgICBib3VuZCB0byBkZWxldGUtY2hh ci4KKytiLiAgTmV3IGJpbmRhYmxlIHZhcmlhYmxlIGBjb21wbGV0aW9uLWRpc3BsYXktd2lkdGgn IHRvIHNldCB0aGUgbnVtYmVyIG9mCisrICAgIGNvbHVtbnMgdXNlZCB3aGVuIGRpc3BsYXlpbmcg Y29tcGxldGlvbnMuCisgCistYi4gIEEgbmVnYXRpdmUgYXJndW1lbnQgdG8gbWVudS1jb21wbGV0 ZSBub3cgY3ljbGVzIGJhY2t3YXJkIHRocm91Z2ggdGhlCistICAgIGNvbXBsZXRpb24gbGlzdC4K KytjLiAgTmV3IGJpbmRhYmxlIHZhcmlhYmxlIGBjb21wbGV0aW9uLWNhc2UtbWFwJyB0byBjYXVz ZSBjYXNlLWluc2Vuc2l0aXZlCisrICAgIGNvbXBsZXRpb24gdG8gdHJlYXQgYC0nIGFuZCBgXycg YXMgaWRlbnRpY2FsLgorIAorLWMuICBBIG5ldyBiaW5kYWJsZSByZWFkbGluZSB2YXJpYWJsZTog IGJpbmQtdHR5LXNwZWNpYWwtY2hhcnMuICBJZiBub24temVybywKKy0gICAgcmVhZGxpbmUgd2ls bCBiaW5kIHRoZSB0ZXJtaW5hbCBzcGVjaWFsIGNoYXJhY3RlcnMgdG8gdGhlaXIgcmVhZGxpbmUK Ky0gICAgZXF1aXZhbGVudHMgd2hlbiBpdCdzIGNhbGxlZCAob24gYnkgZGVmYXVsdCkuCisrZC4g IFRoZXJlIGFyZSBuZXcgYmluZGFibGUgdmktbW9kZSBjb21tYW5kIG5hbWVzIHRvIGF2b2lkIHJl YWRsaW5lJ3MgY2FzZS0KKysgICAgaW5zZW5zaXRpdmUgbWF0Y2hpbmcgbm90IGFsbG93aW5nIHRo ZW0gdG8gYmUgYm91bmQgc2VwYXJhdGVseS4KKyAKKy1kLiAgTmV3IGJpbmRhYmxlIGNvbW1hbmQ6 IHZpLXJ1Ym91dC4gIFNhdmVzIGRlbGV0ZWQgdGV4dCBmb3IgcG9zc2libGUgIAorLSAgICByZWlu c2VydGlvbiwgYXMgd2l0aCBhbnkgdmktbW9kZSBgdGV4dCBtb2RpZmljYXRpb24nIGNvbW1hbmQ7 IGBYJyBpcyBib3VuZAorLSAgICB0byB0aGlzIGluIHZpIGNvbW1hbmQgbW9kZS4KKy0KKy1lLiAg SWYgdGhlIHJsX2NvbXBsZXRpb25fcXVlcnlfaXRlbXMgaXMgc2V0IHRvIGEgdmFsdWUgPCAwLCBy ZWFkbGluZSBuZXZlcgorLSAgICBhc2tzIHRoZSB1c2VyIHdoZXRoZXIgb3Igbm90IHRvIHZpZXcg dGhlIHBvc3NpYmxlIGNvbXBsZXRpb25zLgorLQorLWYuICBOZXcgYXBwbGljYXRpb24tY2FsbGFi bGUgYXV4aWxpYXJ5IGZ1bmN0aW9uLCBybF92YXJpYWJsZV92YWx1ZSwgcmV0dXJucworLSAgICBh IHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIGEgcmVhZGxpbmUgdmFyaWFibGUncyB2YWx1ZS4KKy0K Ky1nLiAgV2hlbiBwYXJzaW5nIGlucHV0cmMgZmlsZXMgYW5kIHZhcmlhYmxlIGJpbmRpbmcgY29t bWFuZHMsIHRoZSBwYXJzZXIKKy0gICAgc3RyaXBzIHRyYWlsaW5nIHdoaXRlc3BhY2UgZnJvbSB2 YWx1ZXMgYXNzaWduZWQgdG8gYm9vbGVhbiB2YXJpYWJsZXMKKy0gICAgYmVmb3JlIGNoZWNraW5n IHRoZW0uCistCistaC4gIEEgbmV3IGV4dGVybmFsIGFwcGxpY2F0aW9uLWNvbnRyb2xsYWJsZSB2 YXJpYWJsZSB0aGF0IGFsbG93cyB0aGUgTElORVMKKy0gICAgYW5kIENPTFVNTlMgZW52aXJvbm1l bnQgdmFyaWFibGVzIHRvIHNldCB0aGUgd2luZG93IHNpemUgcmVnYXJkbGVzcyBvZgorLSAgICB3 aGF0IHRoZSBrZXJuZWwgcmV0dXJucy4KKytlLiAgTmV3IGJpbmRhYmxlIHZhcmlhYmxlIGBtZW51 LWNvbXBsZXRlLWRpc3BsYXktcHJlZml4JyBjYXVzZXMgdGhlIG1lbnUKKysgICAgY29tcGxldGlv biBjb2RlIHRvIGRpc3BsYXkgdGhlIGNvbW1vbiBwcmVmaXggb2YgdGhlIHBvc3NpYmxlIGNvbXBs ZXRpb25zCisrICAgIGJlZm9yZSBjeWNsaW5nIHRocm91Z2ggdGhlIGxpc3QsIGluc3RlYWQgb2Yg YWZ0ZXIuCistLS0gYS9yZWFkbGluZS9SRUFETUUKKysrKyBiL3JlYWRsaW5lL1JFQURNRQorQEAg LTEsNyArMSw3IEBACisgSW50cm9kdWN0aW9uCisgPT09PT09PT09PT09CisgCistVGhpcyBpcyB0 aGUgR251IFJlYWRsaW5lIGxpYnJhcnksIHZlcnNpb24gNS4xLgorK1RoaXMgaXMgdGhlIEdudSBS ZWFkbGluZSBsaWJyYXJ5LCB2ZXJzaW9uIDYuMi4KKyAKKyBUaGUgUmVhZGxpbmUgbGlicmFyeSBw cm92aWRlcyBhIHNldCBvZiBmdW5jdGlvbnMgZm9yIHVzZSBieSBhcHBsaWNhdGlvbnMKKyB0aGF0 IGFsbG93IHVzZXJzIHRvIGVkaXQgY29tbWFuZCBsaW5lcyBhcyB0aGV5IGFyZSB0eXBlZCBpbi4g IEJvdGgKK0BAIC0xNiw4ICsxNiw5IEBAIG1heSBiZSB1c2VkIHdpdGhvdXQgUmVhZGxpbmUgaW4g YXBwbGljYXRpb25zIHdoaWNoIGRlc2lyZSBpdHMKKyBjYXBhYmlsaXRpZXMuCisgCisgVGhlIFJl YWRsaW5lIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRl cm1zIG9mCistdGhlIFtHTlVdIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4gIEZv ciBtb3JlIGluZm9ybWF0aW9uLCBzZWUKKy10aGUgZmlsZSBDT1BZSU5HLgorK3RoZSBbR05VXSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQor K0ZvdW5kYXRpb24sIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZS4gIEZvciBtb3JlIGluZm9ybWF0 aW9uLCBzZWUgdGhlCisrZmlsZSBDT1BZSU5HLgorIAorIFRvIGJ1aWxkIHRoZSBsaWJyYXJ5LCB0 cnkgdHlwaW5nIGAuL2NvbmZpZ3VyZScsIHRoZW4gYG1ha2UnLiAgVGhlCisgY29uZmlndXJhdGlv biBwcm9jZXNzIGlzIGF1dG9tYXRlZCwgc28gbm8gZnVydGhlciBpbnRlcnZlbnRpb24gc2hvdWxk CitAQCAtMTgzLDQgKzE4NCw0IEBAIGxpc3QgKG1pcnJvcmVkIHRvIHRoZSBVc2VuZXQgbmV3c2dy b3VwIGdudS5iYXNoLmJ1Zykgb2Z0ZW4gY29udGFpbnMKKyBSZWFkbGluZSBidWcgcmVwb3J0cyBh bmQgZml4ZXMuIAorIAorIENoZXQgUmFtZXkKKy1jaGV0QHBvLmN3cnUuZWR1CisrY2hldC5yYW1l eUBjYXNlLmVkdQorLS0tIGEvcmVhZGxpbmUvYWNsb2NhbC5tNAorKysrIGIvcmVhZGxpbmUvYWNs b2NhbC5tNAorQEAgLTgwLDYgKzgwLDkgQEAgQUNfQ0FDSEVfVkFMKGJhc2hfY3ZfdHlwZV8kMSwK KyAjaWYgSEFWRV9JTlRUWVBFU19ICisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2VuZGlmCisr I2lmIEhBVkVfU1RESU5UX0gKKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrI2VuZGlmCisgJDIKKyBd LCBiYXNoX2N2X3R5cGVfJDE9eWVzLCBiYXNoX2N2X3R5cGVfJDE9bm8pXSkKKyBBQ19NU0dfUkVT VUxUKCRiYXNoX2N2X3R5cGVfJDEpCitAQCAtMjE1LDcgKzIxOCw3IEBAIEFDX0NBQ0hFX1ZBTChi YXNoX2N2X3N5c19zaWdsaXN0LAorICNpZmRlZiBIQVZFX1VOSVNURF9ICisgI2luY2x1ZGUgPHVu aXN0ZC5oPgorICNlbmRpZgorLSNpZm5kZWYgU1lTX1NJR0xJU1RfREVDTEFSRUQKKysjaWYgIUhB VkVfREVDTF9TWVNfU0lHTElTVAorIGV4dGVybiBjaGFyICpzeXNfc2lnbGlzdFtdOworICNlbmRp ZgorIG1haW4oKQorQEAgLTMzNiwxOCArMzM5LDE4IEBAIG1haW4oKQorIHsKKyBESVIgKmRpcjsK KyBpbnQgZmQsIGVycjsKKy1lcnIgPSBta2RpcigiL3RtcC9iYXNoLWFjbG9jYWwiLCAwNzAwKTsK KytlcnIgPSBta2RpcigiYmFzaC1hY2xvY2FsIiwgMDcwMCk7CisgaWYgKGVyciA8IDApIHsKKyAg IHBlcnJvcigibWtkaXIiKTsKKyAgIGV4aXQoMSk7CisgfQorLXVubGluaygiL3RtcC9iYXNoLWFj bG9jYWwvbm90X2FfZGlyZWN0b3J5Iik7CistZmQgPSBvcGVuKCIvdG1wL2Jhc2gtYWNsb2NhbC9u b3RfYV9kaXJlY3RvcnkiLCBPX1dST05MWXxPX0NSRUFUfE9fRVhDTCwgMDY2Nik7CisrdW5saW5r KCJiYXNoLWFjbG9jYWwvbm90X2FfZGlyZWN0b3J5Iik7CisrZmQgPSBvcGVuKCJiYXNoLWFjbG9j YWwvbm90X2FfZGlyZWN0b3J5IiwgT19XUk9OTFl8T19DUkVBVHxPX0VYQ0wsIDA2NjYpOworIHdy aXRlKGZkLCAiXG4iLCAxKTsKKyBjbG9zZShmZCk7CistZGlyID0gb3BlbmRpcigiL3RtcC9iYXNo LWFjbG9jYWwvbm90X2FfZGlyZWN0b3J5Iik7CistdW5saW5rKCIvdG1wL2Jhc2gtYWNsb2NhbC9u b3RfYV9kaXJlY3RvcnkiKTsKKy1ybWRpcigiL3RtcC9iYXNoLWFjbG9jYWwiKTsKKytkaXIgPSBv cGVuZGlyKCJiYXNoLWFjbG9jYWwvbm90X2FfZGlyZWN0b3J5Iik7CisrdW5saW5rKCJiYXNoLWFj bG9jYWwvbm90X2FfZGlyZWN0b3J5Iik7Cisrcm1kaXIoImJhc2gtYWNsb2NhbCIpOworIGV4aXQg KGRpciA9PSAwKTsKKyB9XSwgYmFzaF9jdl9vcGVuZGlyX25vdF9yb2J1c3Q9eWVzLGJhc2hfY3Zf b3BlbmRpcl9ub3Rfcm9idXN0PW5vLAorICAgICBbQUNfTVNHX1dBUk4oY2Fubm90IGNoZWNrIG9w ZW5kaXIgaWYgY3Jvc3MgY29tcGlsaW5nIC0tIGRlZmF1bHRpbmcgdG8gbm8pCitAQCAtNTMxLDYg KzUzNCwxOCBAQCBBQ19ERUZJTkUoUkxJTVRZUEUsIHJsaW1fdCkKKyBmaQorIF0pCisgCisrQUNf REVGVU4oQkFTSF9UWVBFX1NJR19BVE9NSUNfVCwKKytbQUNfQ0FDSEVfQ0hFQ0soW2ZvciBzaWdf YXRvbWljX3QgaW4gc2lnbmFsLmhdLCBhY19jdl9oYXZlX3NpZ19hdG9taWNfdCwKKytbQUNfVFJZ X0xJTksoWworKyNpbmNsdWRlIDxzaWduYWwuaD4KKytdLFsgc2lnX2F0b21pY190IHg7IF0sCisr YWNfY3ZfaGF2ZV9zaWdfYXRvbWljX3Q9eWVzLCBhY19jdl9oYXZlX3NpZ19hdG9taWNfdD1ubyld KQorK2lmIHRlc3QgIiRhY19jdl9oYXZlX3NpZ19hdG9taWNfdCIgPSAibm8iCisrdGhlbgorKyAg ICBBQ19DSEVDS19UWVBFKHNpZ19hdG9taWNfdCxpbnQpCisrZmkKKytdKQorKworIEFDX0RFRlVO KEJBU0hfRlVOQ19MU1RBVCwKKyBbZG5sIENhbm5vdCB1c2UgQUNfQ0hFQ0tfRlVOQ1MobHN0YXQp IGJlY2F1c2UgTGludXggZGVmaW5lcyBsc3RhdCgpIGFzIGFuCisgZG5sIGlubGluZSBmdW5jdGlv biBpbiA8c3lzL3N0YXQuaD4uCitAQCAtNjg1LDcgKzcwMCw3IEBAIGZpCisgXSkKKyAKKyBBQ19E RUZVTihCQVNIX0ZVTkNfR0VUQ1dELAorLVtBQ19NU0dfQ0hFQ0tJTkcoW2lmIGdldGN3ZCgpIHdp bGwgZHluYW1pY2FsbHkgYWxsb2NhdGUgbWVtb3J5XSkKKytbQUNfTVNHX0NIRUNLSU5HKFtpZiBn ZXRjd2QoKSB3aWxsIGR5bmFtaWNhbGx5IGFsbG9jYXRlIG1lbW9yeSB3aXRoIDAgc2l6ZV0pCisg QUNfQ0FDSEVfVkFMKGJhc2hfY3ZfZ2V0Y3dkX21hbGxvYywKKyBbQUNfVFJZX1JVTihbCisgI2lu Y2x1ZGUgPHN0ZGlvLmg+CitAQCAtOTMzLDcgKzk0OCw3IEBAIEFDX0RFRklORShIQVZFX1NUUlVD VF9TVEFUX1NUX0JMT0NLUykKKyBmaQorIF0pCisgCistQUNfREVGVU4oQkFTSF9DSEVDS19MSUJf VEVSTUNBUCwKKytBQ19ERUZVTihbQkFTSF9DSEVDS19MSUJfVEVSTUNBUF0sCisgWworIGlmIHRl c3QgIlgkYmFzaF9jdl90ZXJtY2FwX2xpYiIgPSAiWCI7IHRoZW4KKyBfYmFzaF9uZWVkbXNnPXll cworQEAgLTE0MjMsMTkgKzE0MzgsMTkgQEAgZXhpdCAoMSk7CisgI2lmIGRlZmluZWQgKE5lWFQp CisgZXhpdCAoMSk7CisgI2VuZGlmCistZXJyID0gbWtkaXIoIi90bXAvYmFzaC1hY2xvY2FsIiwg MDcwMCk7CisrZXJyID0gbWtkaXIoImJhc2gtYWNsb2NhbCIsIDA3MDApOworIGlmIChlcnIgPCAw KSB7CisgICBwZXJyb3IgKCJta2RpciIpOworICAgZXhpdCgxKTsKKyB9CistZmQgPSBta25vZCAo Ii90bXAvYmFzaC1hY2xvY2FsL3NoLW5wLWF1dG9jb25mIiwgMDY2NiB8IFNfSUZJRk8sIDApOwor K2ZkID0gbWtub2QgKCJiYXNoLWFjbG9jYWwvc2gtbnAtYXV0b2NvbmYiLCAwNjY2IHwgU19JRklG TywgMCk7CisgaWYgKGZkID09IC0xKSB7CistICBybWRpciAoIi90bXAvYmFzaC1hY2xvY2FsIik7 CisrICBybWRpciAoImJhc2gtYWNsb2NhbCIpOworICAgZXhpdCAoMSk7CisgfQorIGNsb3NlKGZk KTsKKy11bmxpbmsgKCIvdG1wL2Jhc2gtYWNsb2NhbC9zaC1ucC1hdXRvY29uZiIpOworLXJtZGly ICgiL3RtcC9iYXNoLWFjbG9jYWwiKTsKKyt1bmxpbmsgKCJiYXNoLWFjbG9jYWwvc2gtbnAtYXV0 b2NvbmYiKTsKKytybWRpciAoImJhc2gtYWNsb2NhbCIpOworIGV4aXQoMCk7CisgfV0sIGJhc2hf Y3Zfc3lzX25hbWVkX3BpcGVzPXByZXNlbnQsIGJhc2hfY3Zfc3lzX25hbWVkX3BpcGVzPW1pc3Np bmcsCisgICAgIFtBQ19NU0dfV0FSTihjYW5ub3QgY2hlY2sgZm9yIG5hbWVkIHBpcGVzIGlmIGNy b3NzLWNvbXBpbGluZyAtLSBkZWZhdWx0aW5nIHRvIG1pc3NpbmcpCitAQCAtMTU0MCwyMCArMTU1 NSwyMiBAQCBmaQorIEFDX0RFRlVOKEJBU0hfQ0hFQ0tfREVWX0ZELAorIFtBQ19NU0dfQ0hFQ0tJ Tkcod2hldGhlciAvZGV2L2ZkIGlzIGF2YWlsYWJsZSkKKyBBQ19DQUNIRV9WQUwoYmFzaF9jdl9k ZXZfZmQsCistW2lmIHRlc3QgLWQgL2Rldi9mZCAgJiYgdGVzdCAtciAvZGV2L2ZkLzAgPCAvZGV2 L251bGw7IHRoZW4KKytbYmFzaF9jdl9kZXZfZmQ9IiIKKytpZiB0ZXN0IC1kIC9kZXYvZmQgICYm IChleGVjIHRlc3QgLXIgL2Rldi9mZC8wIDwgL2Rldi9udWxsKSA7IHRoZW4KKyAjIGNoZWNrIGZv ciBzeXN0ZW1zIGxpa2UgRnJlZUJTRCA1IHRoYXQgb25seSBwcm92aWRlIC9kZXYvZmQvWzAxMl0K Ky0gICBleGVjIDM8JjAKKy0gICBpZiB0ZXN0IC1yIC9kZXYvZmQvMzsgdGhlbgorKyAgIGlmIChl eGVjIHRlc3QgLXIgL2Rldi9mZC8zIDM8L2Rldi9udWxsKSA7IHRoZW4KKyAgICAgIGJhc2hfY3Zf ZGV2X2ZkPXN0YW5kYXJkCisgICAgZWxzZQorICAgICAgYmFzaF9jdl9kZXZfZmQ9YWJzZW50Cisg ICAgZmkKKy0gICBleGVjIDM8Ji0KKy0gZWxpZiB0ZXN0IC1kIC9wcm9jL3NlbGYvZmQgJiYgdGVz dCAtciAvcHJvYy9zZWxmL2ZkLzAgPCAvZGV2L251bGw7IHRoZW4KKy0gICBiYXNoX2N2X2Rldl9m ZD13aGFja3kKKy0gZWxzZQorLSAgIGJhc2hfY3ZfZGV2X2ZkPWFic2VudAorLSBmaQorK2ZpCisr aWYgdGVzdCAteiAiJGJhc2hfY3ZfZGV2X2ZkIiA7IHRoZW4gCisrICBpZiB0ZXN0IC1kIC9wcm9j L3NlbGYvZmQgJiYgKGV4ZWMgdGVzdCAtciAvcHJvYy9zZWxmL2ZkLzAgPCAvZGV2L251bGwpIDsg dGhlbgorKyAgICBiYXNoX2N2X2Rldl9mZD13aGFja3kKKysgIGVsc2UKKysgICAgYmFzaF9jdl9k ZXZfZmQ9YWJzZW50CisrICBmaQorK2ZpCisgXSkKKyBBQ19NU0dfUkVTVUxUKCRiYXNoX2N2X2Rl dl9mZCkKKyBpZiB0ZXN0ICRiYXNoX2N2X2Rldl9mZCA9ICJzdGFuZGFyZCI7IHRoZW4KK0BAIC0x NTY4LDkgKzE1ODUsOSBAQCBmaQorIEFDX0RFRlVOKEJBU0hfQ0hFQ0tfREVWX1NURElOLAorIFtB Q19NU0dfQ0hFQ0tJTkcod2hldGhlciAvZGV2L3N0ZGluIHN0ZG91dCBzdGRlcnIgYXJlIGF2YWls YWJsZSkKKyBBQ19DQUNIRV9WQUwoYmFzaF9jdl9kZXZfc3RkaW4sCistW2lmIHRlc3QgLWQgL2Rl di9mZCAmJiB0ZXN0IC1yIC9kZXYvc3RkaW4gPCAvZGV2L251bGw7IHRoZW4KKytbaWYgdGVzdCAt ZCAvZGV2L2ZkICYmIChleGVjIHRlc3QgLXIgL2Rldi9zdGRpbiA8IC9kZXYvbnVsbCkgOyB0aGVu CisgICAgYmFzaF9jdl9kZXZfc3RkaW49cHJlc2VudAorLSBlbGlmIHRlc3QgLWQgL3Byb2Mvc2Vs Zi9mZCAmJiB0ZXN0IC1yIC9kZXYvc3RkaW4gPCAvZGV2L251bGw7IHRoZW4KKysgZWxpZiB0ZXN0 IC1kIC9wcm9jL3NlbGYvZmQgJiYgKGV4ZWMgdGVzdCAtciAvZGV2L3N0ZGluIDwgL2Rldi9udWxs KSA7IHRoZW4KKyAgICBiYXNoX2N2X2Rldl9zdGRpbj1wcmVzZW50CisgIGVsc2UKKyAgICBiYXNo X2N2X2Rldl9zdGRpbj1hYnNlbnQKK0BAIC0xNjY3LDM3ICsxNjg0LDM5IEBAIGZpCisgZG5sCisg ZG5sIGNoZWNrIGZvciBhdmFpbGFiaWxpdHkgb2YgbXVsdGlieXRlIGNoYXJhY3RlcnMgYW5kIGZ1 bmN0aW9ucworIGRubAorK2RubCBnZWV6LCBJIHdpc2ggSSBkaWRuJ3QgaGF2ZSB0byBjaGVjayBm b3IgYWxsIG9mIHRoaXMgc3R1ZmYgc2VwYXJhdGVseQorK2RubAorIEFDX0RFRlVOKEJBU0hfQ0hF Q0tfTVVMVElCWVRFLAorIFsKKyBBQ19DSEVDS19IRUFERVJTKHdjdHlwZS5oKQorIEFDX0NIRUNL X0hFQURFUlMod2NoYXIuaCkKKyBBQ19DSEVDS19IRUFERVJTKGxhbmdpbmZvLmgpCisgCistQUNf Q0hFQ0tfRlVOQyhtYnNydG93Y3MsIEFDX0RFRklORShIQVZFX01CU1JUT1dDUykpCistQUNfQ0hF Q0tfRlVOQyhtYnJ0b3djLCBBQ19ERUZJTkUoSEFWRV9NQlJUT1dDKSkKKyBBQ19DSEVDS19GVU5D KG1icmxlbiwgQUNfREVGSU5FKEhBVkVfTUJSTEVOKSkKKy1BQ19DSEVDS19GVU5DKHdjdG9tYiwg QUNfREVGSU5FKEhBVkVfV0NUT01CKSkKKy1BQ19DSEVDS19GVU5DKHdjd2lkdGgsIEFDX0RFRklO RShIQVZFX1dDV0lEVEgpKQorK0FDX0NIRUNLX0ZVTkMobWJzY2FzZWNtcCwgQUNfREVGSU5FKEhB VkVfTUJTQ01QKSkKKytBQ19DSEVDS19GVU5DKG1ic2NtcCwgQUNfREVGSU5FKEhBVkVfTUJTQ01Q KSkKKytBQ19DSEVDS19GVU5DKG1ic25ydG93Y3MsIEFDX0RFRklORShIQVZFX01CU05SVE9XQ1Mp KQorK0FDX0NIRUNLX0ZVTkMobWJzcnRvd2NzLCBBQ19ERUZJTkUoSEFWRV9NQlNSVE9XQ1MpKQor KworKworK0FDX1JFUExBQ0VfRlVOQ1MobWJzY2hyKQorKworK0FDX0NIRUNLX0ZVTkMod2NydG9t YiwgQUNfREVGSU5FKEhBVkVfV0NSVE9NQikpCisrQUNfQ0hFQ0tfRlVOQyh3Y3Njb2xsLCBBQ19E RUZJTkUoSEFWRV9XQ1NDT0xMKSkKKyBBQ19DSEVDS19GVU5DKHdjc2R1cCwgQUNfREVGSU5FKEhB VkVfV0NTRFVQKSkKKytBQ19DSEVDS19GVU5DKHdjd2lkdGgsIEFDX0RFRklORShIQVZFX1dDV0lE VEgpKQorK0FDX0NIRUNLX0ZVTkMod2N0eXBlLCBBQ19ERUZJTkUoSEFWRV9XQ1RZUEUpKQorIAor LWlmIHRlc3QgIiRhY19jdl9mdW5jX3djd2lkdGgiID0gbm8gJiYgdGVzdCAiJGFjX2N2X2hlYWRl cl93Y2hhcl9oIiA9IHllczsgdGhlbgorLSAgV0NXSURUSF9PQko9d2N3aWR0aC5vCistZWxzZQor LSAgV0NXSURUSF9PQko9CistZmkKKy1BQ19TVUJTVChXQ1dJRFRIX09CSikKKytBQ19SRVBMQUNF X0ZVTkNTKHdjc3dpZHRoKQorIAorLUFDX0NBQ0hFX0NIRUNLKFtmb3IgbWJzdGF0ZV90XSwgYmFz aF9jdl9oYXZlX21ic3RhdGVfdCwKKy1bQUNfVFJZX0NPTVBJTEUoWworLSNpbmNsdWRlIDx3Y2hh ci5oPl0sIFsKKy0gIG1ic3RhdGVfdCBwczsKKy0gIG1ic3RhdGVfdCAqcHNwOworLSAgcHNwID0g KG1ic3RhdGVfdCAqKTA7CistXSwgYmFzaF9jdl9oYXZlX21ic3RhdGVfdD15ZXMsICBiYXNoX2N2 X2hhdmVfbWJzdGF0ZV90PW5vKV0pCistaWYgdGVzdCAkYmFzaF9jdl9oYXZlX21ic3RhdGVfdCA9 IHllczsgdGhlbgorK2RubCBjaGVja3MgZm9yIGJvdGggbWJydG93YyBhbmQgbWJzdGF0ZV90Cisr QUNfRlVOQ19NQlJUT1dDCisraWYgdGVzdCAkYWNfY3ZfZnVuY19tYnJ0b3djID0geWVzOyB0aGVu CisgCUFDX0RFRklORShIQVZFX01CU1RBVEVfVCkKKyBmaQorIAorK0FDX0NIRUNLX0ZVTkNTKGlz d2xvd2VyIGlzd3VwcGVyIHRvd2xvd2VyIHRvd3VwcGVyIGlzd2N0eXBlKQorKworIEFDX0NBQ0hF X0NIRUNLKFtmb3IgbmxfbGFuZ2luZm8gYW5kIENPREVTRVRdLCBiYXNoX2N2X2xhbmdpbmZvX2Nv ZGVzZXQsCisgW0FDX1RSWV9MSU5LKAorIFsjaW5jbHVkZSA8bGFuZ2luZm8uaD5dLAorQEAgLTE3 MDcsNiArMTcyNiw1MCBAQCBpZiB0ZXN0ICRiYXNoX2N2X2xhbmdpbmZvX2NvZGVzZXQgPSB5ZXM7 IHRoZW4KKyAgIEFDX0RFRklORShIQVZFX0xBTkdJTkZPX0NPREVTRVQpCisgZmkKKyAKKytkbmwg Y2hlY2sgZm9yIHdjaGFyX3QgaW4gPHdjaGFyLmg+CisrQUNfQ0FDSEVfQ0hFQ0soW2ZvciB3Y2hh cl90IGluIHdjaGFyLmhdLCBiYXNoX2N2X3R5cGVfd2NoYXJfdCwKKytbQUNfVFJZX0NPTVBJTEUo CisrWyNpbmNsdWRlIDx3Y2hhci5oPgorK10sCisrWworKyAgICAgICAgd2NoYXJfdCBmb287Cisr ICAgICAgICBmb28gPSAwOworK10sIGJhc2hfY3ZfdHlwZV93Y2hhcl90PXllcywgYmFzaF9jdl90 eXBlX3djaGFyX3Q9bm8pXSkKKytpZiB0ZXN0ICRiYXNoX2N2X3R5cGVfd2NoYXJfdCA9IHllczsg dGhlbgorKyAgICAgICAgQUNfREVGSU5FKEhBVkVfV0NIQVJfVCwgMSwgW3N5c3RlbXMgc2hvdWxk IGRlZmluZSB0aGlzIHR5cGUgaGVyZV0pCisrZmkKKysKKytkbmwgY2hlY2sgZm9yIHdjdHlwZV90 IGluIDx3Y3R5cGUuaD4KKytBQ19DQUNIRV9DSEVDSyhbZm9yIHdjdHlwZV90IGluIHdjdHlwZS5o XSwgYmFzaF9jdl90eXBlX3djdHlwZV90LAorK1tBQ19UUllfQ09NUElMRSgKKytbI2luY2x1ZGUg PHdjdHlwZS5oPl0sCisrWworKyAgICAgICAgd2N0eXBlX3QgZm9vOworKyAgICAgICAgZm9vID0g MDsKKytdLCBiYXNoX2N2X3R5cGVfd2N0eXBlX3Q9eWVzLCBiYXNoX2N2X3R5cGVfd2N0eXBlX3Q9 bm8pXSkKKytpZiB0ZXN0ICRiYXNoX2N2X3R5cGVfd2N0eXBlX3QgPSB5ZXM7IHRoZW4KKysgICAg ICAgIEFDX0RFRklORShIQVZFX1dDVFlQRV9ULCAxLCBbc3lzdGVtcyBzaG91bGQgZGVmaW5lIHRo aXMgdHlwZSBoZXJlXSkKKytmaQorKworK2RubCBjaGVjayBmb3Igd2ludF90IGluIDx3Y3R5cGUu aD4KKytBQ19DQUNIRV9DSEVDSyhbZm9yIHdpbnRfdCBpbiB3Y3R5cGUuaF0sIGJhc2hfY3ZfdHlw ZV93aW50X3QsCisrW0FDX1RSWV9DT01QSUxFKAorK1sjaW5jbHVkZSA8d2N0eXBlLmg+XSwKKytb CisrICAgICAgICB3aW50X3QgZm9vOworKyAgICAgICAgZm9vID0gMDsKKytdLCBiYXNoX2N2X3R5 cGVfd2ludF90PXllcywgYmFzaF9jdl90eXBlX3dpbnRfdD1ubyldKQorK2lmIHRlc3QgJGJhc2hf Y3ZfdHlwZV93aW50X3QgPSB5ZXM7IHRoZW4KKysgICAgICAgIEFDX0RFRklORShIQVZFX1dJTlRf VCwgMSwgW3N5c3RlbXMgc2hvdWxkIGRlZmluZSB0aGlzIHR5cGUgaGVyZV0pCisrZmkKKysKKytp ZiB0ZXN0ICIkYW1fY3ZfZnVuY19pY29udiIgPSB5ZXM7IHRoZW4KKysJT0xETElCUz0iJExJQlMi CisrCUxJQlM9IiRMSUJTICRMSUJJQ09OViIKKysJQUNfQ0hFQ0tfRlVOQ1MobG9jYWxlX2NoYXJz ZXQpCisrCUxJQlM9IiRPTERMSUJTIgorK2ZpCisrCisgXSkKKyAKKyBkbmwgbmVlZDogcHJlZml4 IGV4ZWNfcHJlZml4IGxpYmRpciBpbmNsdWRlZGlyIENDIFRFUk1DQVBfTElCCitAQCAtMTcxNCw3 ICsxNzc3LDcgQEAgZG5sIHJlcXVpcmU6CisgZG5sCUFDX1BST0dfQ0MKKyBkbmwJQkFTSF9DSEVD S19MSUJfVEVSTUNBUAorIAorLUFDX0RFRlVOKFJMX0xJQl9SRUFETElORV9WRVJTSU9OLAorK0FD X0RFRlVOKFtSTF9MSUJfUkVBRExJTkVfVkVSU0lPTl0sCisgWworIEFDX1JFUVVJUkUoW0JBU0hf Q0hFQ0tfTElCX1RFUk1DQVBdKQorIAorQEAgLTIzMzEsNyArMjM5NCw3IEBAIEFDX0RFRlVOKFtB TV9JTlRMX1NVQkRJUl0sCisgICBBQ19DSEVDS19IRUFERVJTKFthcmd6LmggbGltaXRzLmggbG9j YWxlLmggbmxfdHlwZXMuaCBtYWxsb2MuaCBzdGRkZWYuaCBcCisgc3RkbGliLmggc3RyaW5nLmgg dW5pc3RkLmggc3lzL3BhcmFtLmhdKQorICAgQUNfQ0hFQ0tfRlVOQ1MoW2Zlb2ZfdW5sb2NrZWQg ZmdldHNfdW5sb2NrZWQgZ2V0Y191bmxvY2tlZCBnZXRjd2QgZ2V0ZWdpZCBcCistZ2V0ZXVpZCBn ZXRnaWQgZ2V0dWlkIG1lbXBjcHkgbXVubWFwIHB1dGVudiBzZXRlbnYgc2V0bG9jYWxlIHN0cGNw eSBcCisrZ2V0ZXVpZCBnZXRnaWQgZ2V0dWlkIG1lbXBjcHkgbXVubWFwIHB1dGVudiBzZXRlbnYg c2V0bG9jYWxlIGxvY2FsZWNvbnYgc3RwY3B5IFwKKyBzdHJjYXNlY21wIHN0cmR1cCBzdHJ0b3Vs IHRzZWFyY2ggX19hcmd6X2NvdW50IF9fYXJnel9zdHJpbmdpZnkgX19hcmd6X25leHQgXAorIF9f ZnNldGxvY2tpbmddKQorIAorQEAgLTM5NjQsMyArNDAyNywxNDMgQEAgQUNfREVGVU4oW2ptX0FD X1RZUEVfVU5TSUdORURfTE9OR19MT05HXSwKKyAgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRo ZSB1bnNpZ25lZCBsb25nIGxvbmcgdHlwZS5dKQorICAgZmkKKyBdKQorKworK2RubCBGcm9tIGdu dWxpYgorK0FDX0RFRlVOKFtCQVNIX0ZVTkNfRlBVUkdFXSwKKytbCisrICBBQ19DSEVDS19GVU5D U19PTkNFKFtmcHVyZ2VdKQorKyAgQUNfQ0hFQ0tfRlVOQ1NfT05DRShbX19mcHVyZ2VdKQorKyAg QUNfQ0hFQ0tfREVDTFMoW2ZwdXJnZV0sICwgLCBbI2luY2x1ZGUgPHN0ZGlvLmg+XSkKKytdKQor KworK0FDX0RFRlVOKFtCQVNIX0ZVTkNfU05QUklOVEZdLAorK1sKKysgIEFDX0NIRUNLX0ZVTkNT X09OQ0UoW3NucHJpbnRmXSkKKysgIGlmIHRlc3QgWCRhY19jdl9mdW5jX3NucHJpbnRmID0gWHll czsgdGhlbgorKyAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIHN0YW5kYXJkLWNvbmZvcm1hbnQgc25w cmludGZdLCBbYmFzaF9jdl9mdW5jX3NucHJpbnRmXSwKKysgICAgICBbQUNfVFJZX1JVTihbCisr I2luY2x1ZGUgPHN0ZGlvLmg+CisrCisrbWFpbigpCisreworKyAgaW50IG47CisrICBuID0gc25w cmludGYgKDAsIDAsICIlcyIsICIwMTIzNDU2Iik7CisrICBleGl0KG4gIT0gNyk7CisrfQorK10s IGJhc2hfY3ZfZnVuY19zbnByaW50Zj15ZXMsIGJhc2hfY3ZfZnVuY19zbnByaW50Zj1ubywKKysg ICBbQUNfTVNHX1dBUk4oW2Nhbm5vdCBjaGVjayBzdGFuZGFyZCBzbnByaW50ZiBpZiBjcm9zcy1j b21waWxpbmddKQorKyAgICBiYXNoX2N2X2Z1bmNfc25wcmludGY9eWVzXQorKyldKQorKyAgICBp ZiB0ZXN0ICRiYXNoX2N2X2Z1bmNfc25wcmludGYgPSBubzsgdGhlbgorKyAgICAgIGFjX2N2X2Z1 bmNfc25wcmludGY9bm8KKysgICAgZmkKKysgIGZpCisrICBpZiB0ZXN0ICRhY19jdl9mdW5jX3Nu cHJpbnRmID0gbm87IHRoZW4KKysgICAgQUNfREVGSU5FKEhBVkVfU05QUklOVEYsIDAsCisrICAg ICAgW0RlZmluZSBpZiB5b3UgaGF2ZSBhIHN0YW5kYXJkLWNvbmZvcm1hbnQgc25wcmludGYgZnVu Y3Rpb24uXSkKKysgIGZpCisrXSkKKysKKytBQ19ERUZVTihbQkFTSF9GVU5DX1ZTTlBSSU5URl0s CisrWworKyAgQUNfQ0hFQ0tfRlVOQ1NfT05DRShbdnNucHJpbnRmXSkKKysgIGlmIHRlc3QgWCRh Y19jdl9mdW5jX3ZzbnByaW50ZiA9IFh5ZXM7IHRoZW4KKysgICAgQUNfQ0FDSEVfQ0hFQ0soW2Zv ciBzdGFuZGFyZC1jb25mb3JtYW50IHZzbnByaW50Zl0sIFtiYXNoX2N2X2Z1bmNfdnNucHJpbnRm XSwKKysgICAgICBbQUNfVFJZX1JVTihbCisrI2lmIEhBVkVfU1REQVJHX0gKKysjaW5jbHVkZSA8 c3RkYXJnLmg+CisrI2Vsc2UKKysjaW5jbHVkZSA8dmFyYXJncy5oPgorKyNlbmRpZgorKyNpbmNs dWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysKKytzdGF0aWMgaW50CisrI2lm IEhBVkVfU1REQVJHX0gKKytmb28oY29uc3QgY2hhciAqZm10LCAuLi4pCisrI2Vsc2UKKytmb28o Zm9ybWF0LCB2YV9hbGlzdCkKKysgICAgIGNvbnN0IGNoYXIgKmZvcm1hdDsKKysgICAgIHZhX2Rj bAorKyNlbmRpZgorK3sKKysgIHZhX2xpc3QgYXJnczsKKysgIGludCBuOworKworKyNpZiBIQVZF X1NUREFSR19ICisrICB2YV9zdGFydChhcmdzLCBmbXQpOworKyNlbHNlCisrICB2YV9zdGFydChh cmdzKTsKKysjZW5kaWYKKysgIG4gPSB2c25wcmludGYoMCwgMCwgZm10LCBhcmdzKTsKKysgIHZh X2VuZCAoYXJncyk7CisrICByZXR1cm4gbjsKKyt9CisrCisrbWFpbigpCisreworKyAgaW50IG47 CisrICBuID0gZm9vKCIlcyIsICIwMTIzNDU2Iik7CisrICBleGl0KG4gIT0gNyk7CisrfQorK10s IGJhc2hfY3ZfZnVuY192c25wcmludGY9eWVzLCBiYXNoX2N2X2Z1bmNfdnNucHJpbnRmPW5vLAor KyAgIFtBQ19NU0dfV0FSTihbY2Fubm90IGNoZWNrIHN0YW5kYXJkIHZzbnByaW50ZiBpZiBjcm9z cy1jb21waWxpbmddKQorKyAgICBiYXNoX2N2X2Z1bmNfdnNucHJpbnRmPXllc10KKyspXSkKKysg ICAgaWYgdGVzdCAkYmFzaF9jdl9mdW5jX3ZzbnByaW50ZiA9IG5vOyB0aGVuCisrICAgICAgYWNf Y3ZfZnVuY192c25wcmludGY9bm8KKysgICAgZmkKKysgIGZpCisrICBpZiB0ZXN0ICRhY19jdl9m dW5jX3ZzbnByaW50ZiA9IG5vOyB0aGVuCisrICAgIEFDX0RFRklORShIQVZFX1ZTTlBSSU5URiwg MCwKKysgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIGEgc3RhbmRhcmQtY29uZm9ybWFudCB2c25w cmludGYgZnVuY3Rpb24uXSkKKysgIGZpCisrXSkKKysKKytBQ19ERUZVTihCQVNIX1NUUlVDVF9X RVhJVFNUQVRVU19PRkZTRVQsCisrW0FDX01TR19DSEVDS0lORyhmb3Igb2Zmc2V0IG9mIGV4aXQg c3RhdHVzIGluIHJldHVybiBzdGF0dXMgZnJvbSB3YWl0KQorK0FDX0NBQ0hFX1ZBTChiYXNoX2N2 X3dleGl0c3RhdHVzX29mZnNldCwKKytbQUNfUlVOX0lGRUxTRShbCisrI2luY2x1ZGUgPHN0ZGxp Yi5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysKKysjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKysK KyttYWluKGMsIHYpCisrICAgICBpbnQgYzsKKysgICAgIGNoYXIgKip2OworK3sKKysgIHBpZF90 IHBpZCwgcDsKKysgIGludCBzLCBpLCBuOworKworKyAgcyA9IDA7CisrICBwaWQgPSBmb3JrKCk7 CisrICBpZiAocGlkID09IDApCisrICAgIGV4aXQgKDQyKTsKKysKKysgIC8qIHdhaXQgZm9yIHRo ZSBwcm9jZXNzICovCisrICBwID0gd2FpdCgmcyk7CisrICBpZiAocCAhPSBwaWQpCisrICAgIGV4 aXQgKDI1NSk7CisrCisrICAvKiBjcmFjayBzICovCisrICBmb3IgKGkgPSAwOyBpIDwgKHNpemVv ZihzKSAtIDgpOyBpKyspCisrICAgIHsKKysgICAgICBuID0gKHMgPj4gaSkgJiAweGZmOworKyAg ICAgIGlmIChuID09IDQyKQorKwlleGl0IChpKTsKKysgICAgfQorKworKyAgZXhpdCAoMjU0KTsK Kyt9CisrXSwgYmFzaF9jdl93ZXhpdHN0YXR1c19vZmZzZXQ9MCwgYmFzaF9jdl93ZXhpdHN0YXR1 c19vZmZzZXQ9JD8sCisrICAgW0FDX01TR19XQVJOKGNhbm5vdCBjaGVjayBXRVhJVFNUQVRVUyBv ZmZzZXQgaWYgY3Jvc3MgY29tcGlsaW5nIC0tIGRlZmF1bHRpbmcgdG8gMCkKKysgICAgYmFzaF9j dl93ZXhpdHN0YXR1c19vZmZzZXQ9MF0KKyspXSkKKytpZiB0ZXN0ICIkYmFzaF9jdl93ZXhpdHN0 YXR1c19vZmZzZXQiIC1ndCAzMiA7IHRoZW4KKysgIEFDX01TR19XQVJOKGJhZCBleGl0IHN0YXR1 cyBmcm9tIHRlc3QgcHJvZ3JhbSAtLSBkZWZhdWx0aW5nIHRvIDApCisrICBiYXNoX2N2X3dleGl0 c3RhdHVzX29mZnNldD0wCisrZmkKKytBQ19NU0dfUkVTVUxUKCRiYXNoX2N2X3dleGl0c3RhdHVz X29mZnNldCkKKytBQ19ERUZJTkVfVU5RVU9URUQoW1dFWElUU1RBVFVTX09GRlNFVF0sIFskYmFz aF9jdl93ZXhpdHN0YXR1c19vZmZzZXRdLCBbT2Zmc2V0IG9mIGV4aXQgc3RhdHVzIGluIHdhaXQg c3RhdHVzIHdvcmRdKQorK10pCistLS0gYS9yZWFkbGluZS9hbnNpX3N0ZGxpYi5oCisrKysgYi9y ZWFkbGluZS9hbnNpX3N0ZGxpYi5oCitAQCAtNiwxOSArNiwxOSBAQAorIAorICAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIEdOVSBCYXNoLCB0aGUgQm91cm5lIEFnYWluIFNIZWxsLgorIAorLSAgIEJh c2ggaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eSBpdCB1bmRlcgorLSAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCistICAgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKKy0gICB2ZXJzaW9u LgorLQorLSAgIEJhc2ggaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCistICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKy0gICBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK Ky0gICBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCistICAgd2l0aCBC YXNoOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKKy0gICBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9u LCBNQSAwMjExMSBVU0EuICovCisrICAgQmFzaCBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgQmFzaCBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIEJhc2guICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgIWRlZmluZWQg KF9TVERMSUJfSF8pCisgI2RlZmluZQlfU1RETElCX0hfIDEKKy0tLSBhL3JlYWRsaW5lL2JpbmQu YworKysrIGIvcmVhZGxpbmUvYmluZC5jCitAQCAtMSwyNCArMSwyMyBAQAorIC8qIGJpbmQuYyAt LSBrZXkgYmluZGluZyBhbmQgc3RhcnR1cCBmaWxlIHN1cHBvcnQgZm9yIHRoZSByZWFkbGluZSBs aWJyYXJ5LiAqLworIAorLS8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDEwIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUg UmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4 dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisrICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGli cmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1 dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor LSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05V IFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg CistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0 aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxs ZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9m IHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAg IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjZGVmaW5lIFJFQURMSU5FX0xJQlJB UlkKKyAKK0BAIC04MCw3ICs3OSw3IEBAIHN0YXRpYyBpbnQgZ2xlYW5fa2V5X2Zyb21fbmFtZSBQ QVJBTVMoKGNoYXIgKikpOworIHN0YXRpYyBpbnQgZmluZF9ib29sZWFuX3ZhciBQQVJBTVMoKGNv bnN0IGNoYXIgKikpOworIAorIHN0YXRpYyBjaGFyICpfcmxfZ2V0X3N0cmluZ192YXJpYWJsZV92 YWx1ZSBQQVJBTVMoKGNvbnN0IGNoYXIgKikpOworLXN0YXRpYyBpbnQgc3Vic3RyaW5nX21lbWJl cl9vZl9hcnJheSBQQVJBTVMoKGNoYXIgKiwgY29uc3QgY2hhciAqKikpOworK3N0YXRpYyBpbnQg c3Vic3RyaW5nX21lbWJlcl9vZl9hcnJheSBQQVJBTVMoKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh ciAqIGNvbnN0ICopKTsKKyAKKyBzdGF0aWMgaW50IGN1cnJlbnRseV9yZWFkaW5nX2luaXRfZmls ZTsKKyAKK0BAIC0zMTcsNyArMzE2LDcgQEAgcmxfbWFjcm9fYmluZCAoa2V5c2VxLCBtYWNybywg bWFwKQorIAorICAgaWYgKHJsX3RyYW5zbGF0ZV9rZXlzZXEgKG1hY3JvLCBtYWNyb19rZXlzLCAm bWFjcm9fa2V5c19sZW4pKQorICAgICB7CistICAgICAgZnJlZSAobWFjcm9fa2V5cyk7CisrICAg ICAgeGZyZWUgKG1hY3JvX2tleXMpOworICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorICAgcmxf Z2VuZXJpY19iaW5kIChJU01BQ1IsIGtleXNlcSwgbWFjcm9fa2V5cywgbWFwKTsKK0BAIC0zNDcs NyArMzQ2LDcgQEAgcmxfZ2VuZXJpY19iaW5kICh0eXBlLCBrZXlzZXEsIGRhdGEsIG1hcCkKKyAg IGlmIChrZXlzZXEgPT0gMCB8fCAqa2V5c2VxID09IDApCisgICAgIHsKKyAgICAgICBpZiAodHlw ZSA9PSBJU01BQ1IpCistCWZyZWUgKGRhdGEpOworKwl4ZnJlZSAoZGF0YSk7CisgICAgICAgcmV0 dXJuIC0xOworICAgICB9CisgCitAQCAtMzU4LDcgKzM1Nyw3IEBAIHJsX2dlbmVyaWNfYmluZCAo dHlwZSwga2V5c2VxLCBkYXRhLCBtYXApCisgICAgICBLRVlTIGludG8gS0VZU19MRU4uICovCisg ICBpZiAocmxfdHJhbnNsYXRlX2tleXNlcSAoa2V5c2VxLCBrZXlzLCAma2V5c19sZW4pKQorICAg ICB7CistICAgICAgZnJlZSAoa2V5cyk7CisrICAgICAgeGZyZWUgKGtleXMpOworICAgICAgIHJl dHVybiAtMTsKKyAgICAgfQorIAorQEAgLTM3MCw3ICszNjksMTAgQEAgcmxfZ2VuZXJpY19iaW5k ICh0eXBlLCBrZXlzZXEsIGRhdGEsIG1hcCkKKyAKKyAgICAgICBpYyA9IHVjOworICAgICAgIGlm IChpYyA8IDAgfHwgaWMgPj0gS0VZTUFQX1NJWkUpCistCXJldHVybiAtMTsKKysgICAgICAgIHsK KysgICAgICAgICAgeGZyZWUgKGtleXMpOworKwkgIHJldHVybiAtMTsKKysgICAgICAgIH0KKyAK KyAgICAgICBpZiAoTUVUQV9DSEFSIChpYykgJiYgX3JsX2NvbnZlcnRfbWV0YV9jaGFyc190b19h c2NpaSkKKyAJeworQEAgLTQxMSwxMSArNDEzLDE4IEBAIHJsX2dlbmVyaWNfYmluZCAodHlwZSwg a2V5c2VxLCBkYXRhLCBtYXApCisgICAgICAgZWxzZQorIAl7CisgCSAgaWYgKG1hcFtpY10udHlw ZSA9PSBJU01BQ1IpCistCSAgICBmcmVlICgoY2hhciAqKW1hcFtpY10uZnVuY3Rpb24pOworKwkg ICAgeGZyZWUgKChjaGFyICopbWFwW2ljXS5mdW5jdGlvbik7CisgCSAgZWxzZSBpZiAobWFwW2lj XS50eXBlID09IElTS01BUCkKKyAJICAgIHsKKyAJICAgICAgbWFwID0gRlVOQ1RJT05fVE9fS0VZ TUFQIChtYXAsIGljKTsKKyAJICAgICAgaWMgPSBBTllPVEhFUktFWTsKKysJICAgICAgLyogSWYg d2UncmUgdHJ5aW5nIHRvIG92ZXJyaWRlIGEga2V5bWFwIHdpdGggYSBudWxsIGZ1bmN0aW9uCisr CQkgKGUuZy4sIHRyeWluZyB0byB1bmJpbmQgaXQpLCB3ZSBjYW4ndCB1c2UgYSBudWxsIHBvaW50 ZXIKKysJCSBoZXJlIGJlY2F1c2UgdGhhdCdzIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gaGF2aW5n IG5vdCBiZWVuCisrCQkgb3ZlcnJpZGRlbi4gIFdlIHVzZSBhIHNwZWNpYWwgYmluZGFibGUgZnVu Y3Rpb24gdGhhdCBkb2VzCisrCQkgbm90aGluZy4gKi8KKysJICAgICAgaWYgKHR5cGUgPT0gSVNG VU5DICYmIGRhdGEgPT0gMCkKKysJCWRhdGEgPSAoY2hhciAqKV9ybF9udWxsX2Z1bmN0aW9uOwor IAkgICAgfQorIAorIAkgIG1hcFtpY10uZnVuY3Rpb24gPSBLRVlNQVBfVE9fRlVOQ1RJT04gKGRh dGEpOworQEAgLTQyNCw3ICs0MzMsNyBAQCBybF9nZW5lcmljX2JpbmQgKHR5cGUsIGtleXNlcSwg ZGF0YSwgbWFwKQorIAorICAgICAgIHJsX2JpbmRpbmdfa2V5bWFwID0gbWFwOworICAgICB9Cist ICBmcmVlIChrZXlzKTsKKysgIHhmcmVlIChrZXlzKTsKKyAgIHJldHVybiAwOworIH0KKyAKK0BA IC00NjIsMTIgKzQ3MSwyMSBAQCBybF90cmFuc2xhdGVfa2V5c2VxIChzZXEsIGFycmF5LCBsZW4p CisgCQl9CisgCSAgICAgIGVsc2UgaWYgKGMgPT0gJ00nKQorIAkJeworLQkJICBpKys7CistCQkg IC8qIFhYWCAtIHNob3VsZCBvYmV5IGNvbnZlcnQtbWV0YSBzZXR0aW5nPyAqLworKwkJICBpKys7 CQkvKiBzZXFbaV0gPT0gJy0nICovCisrCQkgIC8qIFhYWCAtIG9iZXkgY29udmVydC1tZXRhIHNl dHRpbmcgKi8KKyAJCSAgaWYgKF9ybF9jb252ZXJ0X21ldGFfY2hhcnNfdG9fYXNjaWkgJiYgX3Js X2tleW1hcFtFU0NdLnR5cGUgPT0gSVNLTUFQKQorIAkJICAgIGFycmF5W2wrK10gPSBFU0M7CS8q IEVTQyBpcyBtZXRhLXByZWZpeCAqLworKwkJICBlbHNlIGlmIChzZXFbaSsxXSA9PSAnXFwnICYm IHNlcVtpKzJdID09ICdDJyAmJiBzZXFbaSszXSA9PSAnLScpCisrCQkgICAgeworKwkJICAgICAg aSArPSA0OworKwkJICAgICAgdGVtcCA9IChzZXFbaV0gPT0gJz8nKSA/IFJVQk9VVCA6IENUUkwg KF9ybF90b191cHBlciAoc2VxW2ldKSk7CisrCQkgICAgICBhcnJheVtsKytdID0gTUVUQSAodGVt cCk7CisrCQkgICAgfQorIAkJICBlbHNlCisgCQkgICAgeworKwkJICAgICAgLyogVGhpcyBkb2Vz bid0IHlldCBoYW5kbGUgdGhpbmdzIGxpa2UgXE0tXGEsIHdoaWNoIG1heQorKwkJCSBvciBtYXkg bm90IGhhdmUgYW55IHJlYXNvbmFibGUgbWVhbmluZy4gIFlvdSdyZQorKwkJCSBwcm9iYWJseSBi ZXR0ZXIgb2ZmIHVzaW5nIHN0cmFpZ2h0IG9jdGFsIG9yIGhleC4gKi8KKyAJCSAgICAgIGkrKzsK KyAJCSAgICAgIGFycmF5W2wrK10gPSBNRVRBIChzZXFbaV0pOworIAkJICAgIH0KK0BAIC01NjUs NiArNTgzLDExIEBAIHJsX3VudHJhbnNsYXRlX2tleXNlcSAoc2VxKQorICAgICAgIGtzZXFbaSsr XSA9ICctJzsKKyAgICAgICBjID0gVU5NRVRBIChjKTsKKyAgICAgfQorKyAgZWxzZSBpZiAoYyA9 PSBFU0MpCisrICAgIHsKKysgICAgICBrc2VxW2krK10gPSAnXFwnOworKyAgICAgIGMgPSAnZSc7 CisrICAgIH0KKyAgIGVsc2UgaWYgKENUUkxfQ0hBUiAoYykpCisgICAgIHsKKyAgICAgICBrc2Vx W2krK10gPSAnXFwnOworQEAgLTYxMyw3ICs2MzYsMTIgQEAgX3JsX3VudHJhbnNsYXRlX21hY3Jv X3ZhbHVlIChzZXEpCisgCSAgKnIrKyA9ICctJzsKKyAJICBjID0gVU5NRVRBIChjKTsKKyAJfQor LSAgICAgIGVsc2UgaWYgKENUUkxfQ0hBUiAoYykgJiYgYyAhPSBFU0MpCisrICAgICAgZWxzZSBp ZiAoYyA9PSBFU0MpCisrCXsKKysJICAqcisrID0gJ1xcJzsKKysJICBjID0gJ2UnOworKwl9Cisr ICAgICAgZWxzZSBpZiAoQ1RSTF9DSEFSIChjKSkKKyAJeworIAkgICpyKysgPSAnXFwnOworIAkg ICpyKysgPSAnQyc7CitAQCAtNjcyLDcgKzcwMCw3IEBAIHJsX2Z1bmN0aW9uX29mX2tleXNlcSAo a2V5c2VxLCBtYXAsIHR5cGUpCisgeworICAgcmVnaXN0ZXIgaW50IGk7CisgCistICBpZiAoIW1h cCkKKysgIGlmIChtYXAgPT0gMCkKKyAgICAgbWFwID0gX3JsX2tleW1hcDsKKyAKKyAgIGZvciAo aSA9IDA7IGtleXNlcSAmJiBrZXlzZXFbaV07IGkrKykKK0BAIC02ODEsMjUgKzcwOSwyNyBAQCBy bF9mdW5jdGlvbl9vZl9rZXlzZXEgKGtleXNlcSwgbWFwLCB0eXBlKQorIAorICAgICAgIGlmIChN RVRBX0NIQVIgKGljKSAmJiBfcmxfY29udmVydF9tZXRhX2NoYXJzX3RvX2FzY2lpKQorIAl7Cist CSAgaWYgKG1hcFtFU0NdLnR5cGUgIT0gSVNLTUFQKQorKwkgIGlmIChtYXBbRVNDXS50eXBlID09 IElTS01BUCkKKysJICAgIHsKKysJICAgICAgbWFwID0gRlVOQ1RJT05fVE9fS0VZTUFQIChtYXAs IEVTQyk7CisrCSAgICAgIGljID0gVU5NRVRBIChpYyk7CisrCSAgICB9CisrCSAgLyogWFhYIC0g c2hvdWxkIHdlIGp1c3QgcmV0dXJuIE5VTEwgaGVyZSwgc2luY2UgdGhpcyBvYnZpb3VzbHkKKysJ ICAgICBkb2Vzbid0IG1hdGNoPyAqLworKwkgIGVsc2UKKyAJICAgIHsKKyAJICAgICAgaWYgKHR5 cGUpCisgCQkqdHlwZSA9IG1hcFtFU0NdLnR5cGU7CisgCisgCSAgICAgIHJldHVybiAobWFwW0VT Q10uZnVuY3Rpb24pOworIAkgICAgfQorLQkgIGVsc2UKKy0JICAgIHsKKy0JICAgICAgbWFwID0g RlVOQ1RJT05fVE9fS0VZTUFQIChtYXAsIEVTQyk7CistCSAgICAgIGljID0gVU5NRVRBIChpYyk7 CistCSAgICB9CisgCX0KKyAKKyAgICAgICBpZiAobWFwW2ljXS50eXBlID09IElTS01BUCkKKyAJ eworIAkgIC8qIElmIHRoaXMgaXMgdGhlIGxhc3Qga2V5IGluIHRoZSBrZXkgc2VxdWVuY2UsIHJl dHVybiB0aGUKKyAJICAgICBtYXAuICovCistCSAgaWYgKCFrZXlzZXFbaSArIDFdKQorKwkgIGlm IChrZXlzZXFbaSArIDFdID09ICdcMCcpCisgCSAgICB7CisgCSAgICAgIGlmICh0eXBlKQorIAkJ KnR5cGUgPSBJU0tNQVA7CitAQCAtNzA5LDcgKzczOSwxMiBAQCBybF9mdW5jdGlvbl9vZl9rZXlz ZXEgKGtleXNlcSwgbWFwLCB0eXBlKQorIAkgIGVsc2UKKyAJICAgIG1hcCA9IEZVTkNUSU9OX1RP X0tFWU1BUCAobWFwLCBpYyk7CisgCX0KKy0gICAgICBlbHNlCisrICAgICAgLyogSWYgd2UncmUg bm90IGF0IHRoZSBlbmQgb2YgdGhlIGtleSBzZXF1ZW5jZSwgYW5kIHRoZSBjdXJyZW50IGtleQor KwkgaXMgYm91bmQgdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gYSBrZXltYXAsIHRoZW4gdGhlIGVu dGlyZSBrZXkKKysJIHNlcXVlbmNlIGlzIG5vdCBib3VuZC4gKi8KKysgICAgICBlbHNlIGlmICht YXBbaWNdLnR5cGUgIT0gSVNLTUFQICYmIGtleXNlcVtpKzFdKQorKwlyZXR1cm4gKChybF9jb21t YW5kX2Z1bmNfdCAqKU5VTEwpOworKyAgICAgIGVsc2UJLyogbWFwW2ljXS50eXBlICE9IElTS01B UCAmJiBrZXlzZXFbaSsxXSA9PSAwICovCisgCXsKKyAJICBpZiAodHlwZSkKKyAJICAgICp0eXBl ID0gbWFwW2ljXS50eXBlOworQEAgLTc2NCwxMCArNzk5LDEyIEBAIF9ybF9yZWFkX2ZpbGUgKGZp bGVuYW1lLCBzaXplcCkKKyAKKyAgIGlmIChpIDwgMCkKKyAgICAgeworLSAgICAgIGZyZWUgKGJ1 ZmZlcik7CisrICAgICAgeGZyZWUgKGJ1ZmZlcik7CisgICAgICAgcmV0dXJuICgoY2hhciAqKU5V TEwpOworICAgICB9CisgCisrICBSTF9DSEVDS19TSUdOQUxTICgpOworKworICAgYnVmZmVyW2ld ID0gJ1wwJzsKKyAgIGlmIChzaXplcCkKKyAgICAgKnNpemVwID0gaTsKK0BAIC03OTEsNiArODI4 LDcgQEAgcmxfcmVfcmVhZF9pbml0X2ZpbGUgKGNvdW50LCBpZ25vcmUpCisgICAgICAxLiB0aGUg ZmlsZW5hbWUgdXNlZCBmb3IgdGhlIHByZXZpb3VzIGNhbGwKKyAgICAgIDIuIHRoZSB2YWx1ZSBv ZiB0aGUgc2hlbGwgdmFyaWFibGUgYElOUFVUUkMnCisgICAgICAzLiB+Ly5pbnB1dHJjCisrICAg ICA0LiAvZXRjL2lucHV0cmMKKyAgICBJZiB0aGUgZmlsZSBleGlzdGVkIGFuZCBjb3VsZCBiZSBv cGVuZWQgYW5kIHJlYWQsIDAgaXMgcmV0dXJuZWQsCisgICAgb3RoZXJ3aXNlIGVycm5vIGlzIHJl dHVybmVkLiAqLworIGludAorQEAgLTc5OSwxNyArODM3LDE4IEBAIHJsX3JlYWRfaW5pdF9maWxl IChmaWxlbmFtZSkKKyB7CisgICAvKiBEZWZhdWx0IHRoZSBmaWxlbmFtZS4gKi8KKyAgIGlmIChm aWxlbmFtZSA9PSAwKQorKyAgICBmaWxlbmFtZSA9IGxhc3RfcmVhZGxpbmVfaW5pdF9maWxlOwor KyAgaWYgKGZpbGVuYW1lID09IDApCisrICAgIGZpbGVuYW1lID0gc2hfZ2V0X2Vudl92YWx1ZSAo IklOUFVUUkMiKTsKKysgIGlmIChmaWxlbmFtZSA9PSAwIHx8ICpmaWxlbmFtZSA9PSAwKQorICAg ICB7CistICAgICAgZmlsZW5hbWUgPSBsYXN0X3JlYWRsaW5lX2luaXRfZmlsZTsKKy0gICAgICBp ZiAoZmlsZW5hbWUgPT0gMCkKKy0gICAgICAgIGZpbGVuYW1lID0gc2hfZ2V0X2Vudl92YWx1ZSAo IklOUFVUUkMiKTsKKy0gICAgICBpZiAoZmlsZW5hbWUgPT0gMCkKKy0JZmlsZW5hbWUgPSBERUZB VUxUX0lOUFVUUkM7CisrICAgICAgZmlsZW5hbWUgPSBERUZBVUxUX0lOUFVUUkM7CisrICAgICAg LyogVHJ5IHRvIHJlYWQgREVGQVVMVF9JTlBVVFJDOyBmYWxsIGJhY2sgdG8gU1lTX0lOUFVUUkMg b24gZmFpbHVyZSAqLworKyAgICAgIGlmIChfcmxfcmVhZF9pbml0X2ZpbGUgKGZpbGVuYW1lLCAw KSA9PSAwKQorKwlyZXR1cm4gMDsKKysgICAgICBmaWxlbmFtZSA9IFNZU19JTlBVVFJDOworICAg ICB9CisgCistICBpZiAoKmZpbGVuYW1lID09IDApCistICAgIGZpbGVuYW1lID0gREVGQVVMVF9J TlBVVFJDOworLQorICNpZiBkZWZpbmVkIChfX01TRE9TX18pCisgICBpZiAoX3JsX3JlYWRfaW5p dF9maWxlIChmaWxlbmFtZSwgMCkgPT0gMCkKKyAgICAgcmV0dXJuIDA7CitAQCAtODMyLDggKzg3 MSw5IEBAIF9ybF9yZWFkX2luaXRfZmlsZSAoZmlsZW5hbWUsIGluY2x1ZGVfbGV2ZWwpCisgCisg ICBvcGVubmFtZSA9IHRpbGRlX2V4cGFuZCAoZmlsZW5hbWUpOworICAgYnVmZmVyID0gX3JsX3Jl YWRfZmlsZSAob3Blbm5hbWUsICZmaWxlX3NpemUpOworLSAgZnJlZSAob3Blbm5hbWUpOworKyAg eGZyZWUgKG9wZW5uYW1lKTsKKyAKKysgIFJMX0NIRUNLX1NJR05BTFMgKCk7CisgICBpZiAoYnVm ZmVyID09IDApCisgICAgIHJldHVybiAoZXJybm8pOworICAgCitAQCAtODgwLDcgKzkyMCw3IEBA IF9ybF9yZWFkX2luaXRfZmlsZSAoZmlsZW5hbWUsIGluY2x1ZGVfbGV2ZWwpCisgICAgICAgY3Vy cmVudF9yZWFkbGluZV9pbml0X2xpbmVubysrOworICAgICB9CisgCistICBmcmVlIChidWZmZXIp OworKyAgeGZyZWUgKGJ1ZmZlcik7CisgICBjdXJyZW50bHlfcmVhZGluZ19pbml0X2ZpbGUgPSAw OworICAgcmV0dXJuICgwKTsKKyB9CitAQCAtODkwLDEwICs5MzAsMTAgQEAgX3JsX2luaXRfZmls ZV9lcnJvciAobXNnKQorICAgICAgY29uc3QgY2hhciAqbXNnOworIHsKKyAgIGlmIChjdXJyZW50 bHlfcmVhZGluZ19pbml0X2ZpbGUpCistICAgIGZwcmludGYgKHN0ZGVyciwgInJlYWRsaW5lOiAl czogbGluZSAlZDogJXNcbiIsIGN1cnJlbnRfcmVhZGxpbmVfaW5pdF9maWxlLAorKyAgICBfcmxf ZXJybXNnICgiJXM6IGxpbmUgJWQ6ICVzXG4iLCBjdXJyZW50X3JlYWRsaW5lX2luaXRfZmlsZSwK KyAJCSAgICAgY3VycmVudF9yZWFkbGluZV9pbml0X2xpbmVubywgbXNnKTsKKyAgIGVsc2UKKy0g ICAgZnByaW50ZiAoc3RkZXJyLCAicmVhZGxpbmU6ICVzXG4iLCBtc2cpOworKyAgICBfcmxfZXJy bXNnICgiJXMiLCBtc2cpOworIH0KKyAKKyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCitAQCAtOTA1LDExICs5NDUs MTEgQEAgX3JsX2luaXRfZmlsZV9lcnJvciAobXNnKQorIHR5cGVkZWYgaW50IF9ybF9wYXJzZXJf ZnVuY190IFBBUkFNUygoY2hhciAqKSk7CisgCisgLyogVGhpbmdzIHRoYXQgbWVhbiBgQ29udHJv bCcuICovCistY29uc3QgY2hhciAqX3JsX3Bvc3NpYmxlX2NvbnRyb2xfcHJlZml4ZXNbXSA9IHsK Kytjb25zdCBjaGFyICogY29uc3QgX3JsX3Bvc3NpYmxlX2NvbnRyb2xfcHJlZml4ZXNbXSA9IHsK KyAgICJDb250cm9sLSIsICJDLSIsICJDVFJMLSIsIChjb25zdCBjaGFyICopTlVMTAorIH07Cisg CistY29uc3QgY2hhciAqX3JsX3Bvc3NpYmxlX21ldGFfcHJlZml4ZXNbXSA9IHsKKytjb25zdCBj aGFyICogY29uc3QgX3JsX3Bvc3NpYmxlX21ldGFfcHJlZml4ZXNbXSA9IHsKKyAgICJNZXRhIiwg Ik0tIiwgKGNvbnN0IGNoYXIgKilOVUxMCisgfTsKKyAKK0BAIC05NzEsNyArMTAxMSw3IEBAIHBh cnNlcl9pZiAoYXJncykKKyAJIGAkaWYgdGVybT1zdW4tY21kJyBpbnRvIHRoZWlyIC5pbnB1dHJj LiAqLworICAgICAgIF9ybF9wYXJzaW5nX2NvbmRpdGlvbmFsaXplZF9vdXQgPSBfcmxfc3RyaWNt cCAoYXJncyArIDUsIHRuYW1lKSAmJgorIAkJCQkJX3JsX3N0cmljbXAgKGFyZ3MgKyA1LCBybF90 ZXJtaW5hbF9uYW1lKTsKKy0gICAgICBmcmVlICh0bmFtZSk7CisrICAgICAgeGZyZWUgKHRuYW1l KTsKKyAgICAgfQorICNpZiBkZWZpbmVkIChWSV9NT0RFKQorICAgZWxzZSBpZiAoX3JsX3N0cm5p Y21wIChhcmdzLCAibW9kZT0iLCA1KSA9PSAwKQorQEAgLTEwNjgsOCArMTEwOCw4IEBAIHBhcnNl cl9pbmNsdWRlIChhcmdzKQorIH0KKyAgIAorIC8qIEFzc29jaWF0ZSB0ZXh0dWFsIG5hbWVzIHdp dGggYWN0dWFsIGZ1bmN0aW9ucy4gKi8KKy1zdGF0aWMgc3RydWN0IHsKKy0gIGNvbnN0IGNoYXIg Km5hbWU7Cisrc3RhdGljIGNvbnN0IHN0cnVjdCB7CisrICBjb25zdCBjaGFyICogY29uc3QgbmFt ZTsKKyAgIF9ybF9wYXJzZXJfZnVuY190ICpmdW5jdGlvbjsKKyB9IHBhcnNlcl9kaXJlY3RpdmVz IFtdID0geworICAgeyAiaWYiLCBwYXJzZXJfaWYgfSwKK0BAIC0xMzIxLDcgKzEzNjEsNyBAQCBy bF9wYXJzZV9hbmRfYmluZCAoc3RyaW5nKQorICAgICAgIGVsc2UKKyAJcmxfYmluZF9rZXlzZXEg KHNlcSwgcmxfbmFtZWRfZnVuY3Rpb24gKGZ1bm5hbWUpKTsKKyAKKy0gICAgICBmcmVlIChzZXEp OworKyAgICAgIHhmcmVlIChzZXEpOworICAgICAgIHJldHVybiAwOworICAgICB9CisgCitAQCAt MTM3NSw4ICsxNDE1LDggQEAgcmxfcGFyc2VfYW5kX2JpbmQgKHN0cmluZykKKyAKKyAjZGVmaW5l IFZfU1BFQ0lBTAkweDEKKyAKKy1zdGF0aWMgc3RydWN0IHsKKy0gIGNvbnN0IGNoYXIgKm5hbWU7 Cisrc3RhdGljIGNvbnN0IHN0cnVjdCB7CisrICBjb25zdCBjaGFyICogY29uc3QgbmFtZTsKKyAg IGludCAqdmFsdWU7CisgICBpbnQgZmxhZ3M7CisgfSBib29sZWFuX3Zhcmxpc3QgW10gPSB7CitA QCAtMTM4NCw5ICsxNDI0LDEyIEBAIHN0YXRpYyBzdHJ1Y3QgeworICAgeyAiYmxpbmstbWF0Y2hp bmctcGFyZW4iLAkmcmxfYmxpbmtfbWF0Y2hpbmdfcGFyZW4sCVZfU1BFQ0lBTCB9LAorICAgeyAi Ynl0ZS1vcmllbnRlZCIsCQkmcmxfYnl0ZV9vcmllbnRlZCwJCTAgfSwKKyAgIHsgImNvbXBsZXRp b24taWdub3JlLWNhc2UiLAkmX3JsX2NvbXBsZXRpb25fY2FzZV9mb2xkLAkwIH0sCisrICB7ICJj b21wbGV0aW9uLW1hcC1jYXNlIiwJJl9ybF9jb21wbGV0aW9uX2Nhc2VfbWFwLAkwIH0sCisgICB7 ICJjb252ZXJ0LW1ldGEiLAkJJl9ybF9jb252ZXJ0X21ldGFfY2hhcnNfdG9fYXNjaWksIDAgfSwK KyAgIHsgImRpc2FibGUtY29tcGxldGlvbiIsCSZybF9pbmhpYml0X2NvbXBsZXRpb24sCQkwIH0s CisrICB7ICJlY2hvLWNvbnRyb2wtY2hhcmFjdGVycyIsCSZfcmxfZWNob19jb250cm9sX2NoYXJz LAkwIH0sCisgICB7ICJlbmFibGUta2V5cGFkIiwJCSZfcmxfZW5hYmxlX2tleXBhZCwJCTAgfSwK KysgIHsgImVuYWJsZS1tZXRhLWtleSIsCQkmX3JsX2VuYWJsZV9tZXRhLAkJMCB9LAorICAgeyAi ZXhwYW5kLXRpbGRlIiwJCSZybF9jb21wbGV0ZV93aXRoX3RpbGRlX2V4cGFuc2lvbiwgMCB9LAor ICAgeyAiaGlzdG9yeS1wcmVzZXJ2ZS1wb2ludCIsCSZfcmxfaGlzdG9yeV9wcmVzZXJ2ZV9wb2lu dCwJMCB9LAorICAgeyAiaG9yaXpvbnRhbC1zY3JvbGwtbW9kZSIsCSZfcmxfaG9yaXpvbnRhbF9z Y3JvbGxfbW9kZSwJMCB9LAorQEAgLTEzOTUsMTcgKzE0MzgsMjAgQEAgc3RhdGljIHN0cnVjdCB7 CisgICB7ICJtYXJrLW1vZGlmaWVkLWxpbmVzIiwJJl9ybF9tYXJrX21vZGlmaWVkX2xpbmVzLAkw IH0sCisgICB7ICJtYXJrLXN5bWxpbmtlZC1kaXJlY3RvcmllcyIsICZfcmxfY29tcGxldGVfbWFy a19zeW1saW5rX2RpcnMsIDAgfSwKKyAgIHsgIm1hdGNoLWhpZGRlbi1maWxlcyIsCSZfcmxfbWF0 Y2hfaGlkZGVuX2ZpbGVzLAkwIH0sCisrICB7ICJtZW51LWNvbXBsZXRlLWRpc3BsYXktcHJlZml4 IiwgJl9ybF9tZW51X2NvbXBsZXRlX3ByZWZpeF9maXJzdCwgMCB9LAorICAgeyAibWV0YS1mbGFn IiwJCSZfcmxfbWV0YV9mbGFnLAkJCTAgfSwKKyAgIHsgIm91dHB1dC1tZXRhIiwJCSZfcmxfb3V0 cHV0X21ldGFfY2hhcnMsCQkwIH0sCisgICB7ICJwYWdlLWNvbXBsZXRpb25zIiwJCSZfcmxfcGFn ZV9jb21wbGV0aW9ucywJCTAgfSwKKyAgIHsgInByZWZlci12aXNpYmxlLWJlbGwiLAkmX3JsX3By ZWZlcl92aXNpYmxlX2JlbGwsCVZfU1BFQ0lBTCB9LAorICAgeyAicHJpbnQtY29tcGxldGlvbnMt aG9yaXpvbnRhbGx5IiwgJl9ybF9wcmludF9jb21wbGV0aW9uc19ob3Jpem9udGFsbHksIDAgfSwK KysgIHsgInJldmVydC1hbGwtYXQtbmV3bGluZSIsCSZfcmxfcmV2ZXJ0X2FsbF9hdF9uZXdsaW5l LAkwIH0sCisgICB7ICJzaG93LWFsbC1pZi1hbWJpZ3VvdXMiLAkmX3JsX2NvbXBsZXRlX3Nob3df YWxsLAkJMCB9LAorICAgeyAic2hvdy1hbGwtaWYtdW5tb2RpZmllZCIsCSZfcmxfY29tcGxldGVf c2hvd191bm1vZGlmaWVkLAkwIH0sCisrICB7ICJza2lwLWNvbXBsZXRlZC10ZXh0IiwJJl9ybF9z a2lwX2NvbXBsZXRlZF90ZXh0LAkwIH0sCisgI2lmIGRlZmluZWQgKFZJU0lCTEVfU1RBVFMpCisg ICB7ICJ2aXNpYmxlLXN0YXRzIiwJCSZybF92aXNpYmxlX3N0YXRzLAkJMCB9LAorICNlbmRpZiAv KiBWSVNJQkxFX1NUQVRTICovCistICB7IChjaGFyICopTlVMTCwgKGludCAqKU5VTEwgfQorKyAg eyAoY2hhciAqKU5VTEwsIChpbnQgKilOVUxMLCAwIH0KKyB9OworIAorIHN0YXRpYyBpbnQKK0BA IC0xNDU4LDIzICsxNTA0LDI5IEBAIHR5cGVkZWYgaW50IF9ybF9zdl9mdW5jX3QgUEFSQU1TKChj b25zdCBjaGFyICopKTsKKyAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAqLworIHN0YXRpYyBpbnQg c3ZfYmVsbF9zdHlsZSBQQVJBTVMoKGNvbnN0IGNoYXIgKikpOworIHN0YXRpYyBpbnQgc3ZfY29t YmVnaW4gUEFSQU1TKChjb25zdCBjaGFyICopKTsKKytzdGF0aWMgaW50IHN2X2Rpc3BwcmVmaXgg UEFSQU1TKChjb25zdCBjaGFyICopKTsKKyBzdGF0aWMgaW50IHN2X2NvbXBxdWVyeSBQQVJBTVMo KGNvbnN0IGNoYXIgKikpOworK3N0YXRpYyBpbnQgc3ZfY29tcHdpZHRoIFBBUkFNUygoY29uc3Qg Y2hhciAqKSk7Cisgc3RhdGljIGludCBzdl9lZGl0bW9kZSBQQVJBTVMoKGNvbnN0IGNoYXIgKikp OworK3N0YXRpYyBpbnQgc3ZfaGlzdHNpemUgUEFSQU1TKChjb25zdCBjaGFyICopKTsKKyBzdGF0 aWMgaW50IHN2X2lzcmNodGVybSBQQVJBTVMoKGNvbnN0IGNoYXIgKikpOworIHN0YXRpYyBpbnQg c3Zfa2V5bWFwIFBBUkFNUygoY29uc3QgY2hhciAqKSk7CisgCistc3RhdGljIHN0cnVjdCB7Cist ICBjb25zdCBjaGFyICpuYW1lOworK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeworKyAgY29uc3QgY2hh ciAqIGNvbnN0IG5hbWU7CisgICBpbnQgZmxhZ3M7CisgICBfcmxfc3ZfZnVuY190ICpzZXRfZnVu YzsKKyB9IHN0cmluZ192YXJsaXN0W10gPSB7CisgICB7ICJiZWxsLXN0eWxlIiwJVl9TVFJJTkcs CXN2X2JlbGxfc3R5bGUgfSwKKyAgIHsgImNvbW1lbnQtYmVnaW4iLAlWX1NUUklORywJc3ZfY29t YmVnaW4gfSwKKysgIHsgImNvbXBsZXRpb24tZGlzcGxheS13aWR0aCIsIFZfSU5ULAlzdl9jb21w d2lkdGggfSwKKysgIHsgImNvbXBsZXRpb24tcHJlZml4LWRpc3BsYXktbGVuZ3RoIiwgVl9JTlQs CXN2X2Rpc3BwcmVmaXggfSwKKyAgIHsgImNvbXBsZXRpb24tcXVlcnktaXRlbXMiLCBWX0lOVCwJ c3ZfY29tcHF1ZXJ5IH0sCisgICB7ICJlZGl0aW5nLW1vZGUiLAlWX1NUUklORywJc3ZfZWRpdG1v ZGUgfSwKKysgIHsgImhpc3Rvcnktc2l6ZSIsCVZfSU5ULAkJc3ZfaGlzdHNpemUgfSwKKyAgIHsg ImlzZWFyY2gtdGVybWluYXRvcnMiLCBWX1NUUklORywJc3ZfaXNyY2h0ZXJtIH0sCisgICB7ICJr ZXltYXAiLAkJVl9TVFJJTkcsCXN2X2tleW1hcCB9LAorLSAgeyAoY2hhciAqKU5VTEwsCTAgfQor KyAgeyAoY2hhciAqKU5VTEwsCTAsIChfcmxfc3ZfZnVuY190ICopMCB9CisgfTsKKyAKKyBzdGF0 aWMgaW50CitAQCAtMTUwNiw4ICsxNTU4LDYgQEAgcmxfdmFyaWFibGVfdmFsdWUgKG5hbWUpCisg ICAgICBjb25zdCBjaGFyICpuYW1lOworIHsKKyAgIHJlZ2lzdGVyIGludCBpOworLSAgaW50CXY7 CistICBjaGFyICpyZXQ7CisgCisgICAvKiBDaGVjayBmb3Igc2ltcGxlIHZhcmlhYmxlcyBmaXJz dC4gKi8KKyAgIGkgPSBmaW5kX2Jvb2xlYW5fdmFyIChuYW1lKTsKK0BAIC0xNTg1LDYgKzE2MzUs MjIgQEAgc3ZfY29tYmVnaW4gKHZhbHVlKQorIH0KKyAKKyBzdGF0aWMgaW50Cisrc3ZfZGlzcHBy ZWZpeCAodmFsdWUpCisrICAgICBjb25zdCBjaGFyICp2YWx1ZTsKKyt7CisrICBpbnQgbnZhbCA9 IDA7CisrCisrICBpZiAodmFsdWUgJiYgKnZhbHVlKQorKyAgICB7CisrICAgICAgbnZhbCA9IGF0 b2kgKHZhbHVlKTsKKysgICAgICBpZiAobnZhbCA8IDApCisrCW52YWwgPSAwOworKyAgICB9Cisr ICBfcmxfY29tcGxldGlvbl9wcmVmaXhfZGlzcGxheV9sZW5ndGggPSBudmFsOworKyAgcmV0dXJu IDA7CisrfQorKworK3N0YXRpYyBpbnQKKyBzdl9jb21wcXVlcnkgKHZhbHVlKQorICAgICAgY29u c3QgY2hhciAqdmFsdWU7CisgeworQEAgLTE2MDEsNiArMTY2NywzNSBAQCBzdl9jb21wcXVlcnkg KHZhbHVlKQorIH0KKyAKKyBzdGF0aWMgaW50Cisrc3ZfY29tcHdpZHRoICh2YWx1ZSkKKysgICAg IGNvbnN0IGNoYXIgKnZhbHVlOworK3sKKysgIGludCBudmFsID0gLTE7CisrCisrICBpZiAodmFs dWUgJiYgKnZhbHVlKQorKyAgICBudmFsID0gYXRvaSAodmFsdWUpOworKworKyAgX3JsX2NvbXBs ZXRpb25fY29sdW1ucyA9IG52YWw7CisrICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludAor K3N2X2hpc3RzaXplICh2YWx1ZSkKKysgICAgIGNvbnN0IGNoYXIgKnZhbHVlOworK3sKKysgIGlu dCBudmFsID0gNTAwOworKworKyAgaWYgKHZhbHVlICYmICp2YWx1ZSkKKysgICAgeworKyAgICAg IG52YWwgPSBhdG9pICh2YWx1ZSk7CisrICAgICAgaWYgKG52YWwgPCAwKQorKwlyZXR1cm4gMTsK KysgICAgfQorKyAgc3RpZmxlX2hpc3RvcnkgKG52YWwpOworKyAgcmV0dXJuIDA7CisrfQorKwor K3N0YXRpYyBpbnQKKyBzdl9rZXltYXAgKHZhbHVlKQorICAgICAgY29uc3QgY2hhciAqdmFsdWU7 CisgeworQEAgLTE2NjQsNyArMTc1OSw3IEBAIHN2X2lzcmNodGVybSAodmFsdWUpCisgICBybF90 cmFuc2xhdGVfa2V5c2VxICh2ICsgYmVnLCBfcmxfaXNlYXJjaF90ZXJtaW5hdG9ycywgJmVuZCk7 CisgICBfcmxfaXNlYXJjaF90ZXJtaW5hdG9yc1tlbmRdID0gJ1wwJzsKKyAKKy0gIGZyZWUgKHYp OworKyAgeGZyZWUgKHYpOworICAgcmV0dXJuIDA7CisgfQorICAgICAgIAorQEAgLTE2NzIsMTEg KzE3NjcsMTEgQEAgc3ZfaXNyY2h0ZXJtICh2YWx1ZSkKKyAgICBGb3IgZXhhbXBsZSwgYFNwYWNl JyByZXR1cm5zICcgJy4gKi8KKyAKKyB0eXBlZGVmIHN0cnVjdCB7CistICBjb25zdCBjaGFyICpu YW1lOworKyAgY29uc3QgY2hhciAqIGNvbnN0IG5hbWU7CisgICBpbnQgdmFsdWU7CisgfSBhc3Nv Y19saXN0OworIAorLXN0YXRpYyBhc3NvY19saXN0IG5hbWVfa2V5X2FsaXN0W10gPSB7Cisrc3Rh dGljIGNvbnN0IGFzc29jX2xpc3QgbmFtZV9rZXlfYWxpc3RbXSA9IHsKKyAgIHsgIkRFTCIsIDB4 N2YgfSwKKyAgIHsgIkVTQyIsICdcMDMzJyB9LAorICAgeyAiRXNjYXBlIiwgJ1wwMzMnIH0sCitA QCAtMTcwNSw4ICsxODAwLDggQEAgZ2xlYW5fa2V5X2Zyb21fbmFtZSAobmFtZSkKKyB9CisgCisg LyogQXV4aWxpYXJ5IGZ1bmN0aW9ucyB0byBtYW5hZ2Uga2V5bWFwcy4gKi8KKy1zdGF0aWMgc3Ry dWN0IHsKKy0gIGNvbnN0IGNoYXIgKm5hbWU7Cisrc3RhdGljIGNvbnN0IHN0cnVjdCB7CisrICBj b25zdCBjaGFyICogY29uc3QgbmFtZTsKKyAgIEtleW1hcCBtYXA7CisgfSBrZXltYXBfbmFtZXNb XSA9IHsKKyAgIHsgImVtYWNzIiwgZW1hY3Nfc3RhbmRhcmRfa2V5bWFwIH0sCitAQCAtMTgwOSw3 ICsxOTA0LDcgQEAgcmxfbGlzdF9mdW5tYXBfbmFtZXMgKCkKKyAgIGZvciAoaSA9IDA7IGZ1bm1h cF9uYW1lc1tpXTsgaSsrKQorICAgICBmcHJpbnRmIChybF9vdXRzdHJlYW0sICIlc1xuIiwgZnVu bWFwX25hbWVzW2ldKTsKKyAKKy0gIGZyZWUgKGZ1bm1hcF9uYW1lcyk7CisrICB4ZnJlZSAoZnVu bWFwX25hbWVzKTsKKyB9CisgCisgc3RhdGljIGNoYXIgKgorQEAgLTE5NDgsMTIgKzIwNDMsMTYg QEAgcmxfaW52b2tpbmdfa2V5c2Vxc19pbl9tYXAgKGZ1bmN0aW9uLCBtYXApCisgCQljaGFyICpr ZXluYW1lID0gKGNoYXIgKil4bWFsbG9jICg2ICsgc3RybGVuIChzZXFzW2ldKSk7CisgCisgCQlp ZiAoa2V5ID09IEVTQykKKy0jaWYgMAorLQkJICBzcHJpbnRmIChrZXluYW1lLCAiXFxlIik7Cist I2Vsc2UKKy0JCS8qIFhYWCAtIGV4cGVyaW1lbnRhbCAqLworLQkJICBzcHJpbnRmIChrZXluYW1l LCAiXFxNLSIpOworLSNlbmRpZgorKwkJICB7CisrCQkgICAgLyogSWYgRVNDIGlzIHRoZSBtZXRh IHByZWZpeCBhbmQgd2UncmUgY29udmVydGluZyBjaGFycworKwkJICAgICAgIHdpdGggdGhlIGVp Z2h0aCBiaXQgc2V0IHRvIEVTQy1wcmVmaXhlZCBzZXF1ZW5jZXMsIHRoZW4KKysJCSAgICAgICB3 ZSBjYW4gdXNlIFxNLS4gIE90aGVyd2lzZSB3ZSBuZWVkIHRvIHVzZSB0aGUgc2VxdWVuY2UKKysJ CSAgICAgICBmb3IgRVNDLiAqLworKwkJICAgIGlmIChfcmxfY29udmVydF9tZXRhX2NoYXJzX3Rv X2FzY2lpICYmIG1hcFtFU0NdLnR5cGUgPT0gSVNLTUFQKQorKwkJICAgICAgc3ByaW50ZiAoa2V5 bmFtZSwgIlxcTS0iKTsKKysJCSAgICBlbHNlCisrCQkgICAgICBzcHJpbnRmIChrZXluYW1lLCAi XFxlIik7CisrCQkgIH0KKyAJCWVsc2UgaWYgKENUUkxfQ0hBUiAoa2V5KSkKKyAJCSAgc3ByaW50 ZiAoa2V5bmFtZSwgIlxcQy0lYyIsIF9ybF90b19sb3dlciAoVU5DVFJMIChrZXkpKSk7CisgCQll bHNlIGlmIChrZXkgPT0gUlVCT1VUKQorQEAgLTE5NzEsNyArMjA3MCw3IEBAIHJsX2ludm9raW5n X2tleXNlcXNfaW5fbWFwIChmdW5jdGlvbiwgbWFwKQorIAkJICB9CisgCQkKKyAJCXN0cmNhdCAo a2V5bmFtZSwgc2Vxc1tpXSk7CistCQlmcmVlIChzZXFzW2ldKTsKKysJCXhmcmVlIChzZXFzW2ld KTsKKyAKKyAJCWlmIChyZXN1bHRfaW5kZXggKyAyID4gcmVzdWx0X3NpemUpCisgCQkgIHsKK0BA IC0xOTgzLDcgKzIwODIsNyBAQCBybF9pbnZva2luZ19rZXlzZXFzX2luX21hcCAoZnVuY3Rpb24s IG1hcCkKKyAJCXJlc3VsdFtyZXN1bHRfaW5kZXhdID0gKGNoYXIgKilOVUxMOworIAkgICAgICB9 CisgCistCSAgICBmcmVlIChzZXFzKTsKKysJICAgIHhmcmVlIChzZXFzKTsKKyAJICB9CisgCSAg YnJlYWs7CisgCX0KK0BAIC0yMDM1LDEwICsyMTM0LDEwIEBAIHJsX2Z1bmN0aW9uX2R1bXBlciAo cHJpbnRfcmVhZGFibHkpCisgCQl7CisgCQkgIGZwcmludGYgKHJsX291dHN0cmVhbSwgIlwiJXNc IjogJXNcbiIsCisgCQkJICAgaW52b2tlcnNbal0sIG5hbWUpOworLQkJICBmcmVlIChpbnZva2Vy c1tqXSk7CisrCQkgIHhmcmVlIChpbnZva2Vyc1tqXSk7CisgCQl9CisgCistCSAgICAgIGZyZWUg KGludm9rZXJzKTsKKysJICAgICAgeGZyZWUgKGludm9rZXJzKTsKKyAJICAgIH0KKyAJfQorICAg ICAgIGVsc2UKK0BAIC0yMDYyLDkgKzIxNjEsOSBAQCBybF9mdW5jdGlvbl9kdW1wZXIgKHByaW50 X3JlYWRhYmx5KQorIAkJZnByaW50ZiAocmxfb3V0c3RyZWFtLCAiLi4uXG4iKTsKKyAKKyAJICAg ICAgZm9yIChqID0gMDsgaW52b2tlcnNbal07IGorKykKKy0JCWZyZWUgKGludm9rZXJzW2pdKTsK KysJCXhmcmVlIChpbnZva2Vyc1tqXSk7CisgCistCSAgICAgIGZyZWUgKGludm9rZXJzKTsKKysJ ICAgICAgeGZyZWUgKGludm9rZXJzKTsKKyAJICAgIH0KKyAJfQorICAgICB9CitAQCAtMjExMSw4 ICsyMjEwLDggQEAgX3JsX21hY3JvX2R1bXBlcl9pbnRlcm5hbCAocHJpbnRfcmVhZGFibHksIG1h cCwgcHJlZml4KQorIAkgICAgZnByaW50ZiAocmxfb3V0c3RyZWFtLCAiJXMlcyBvdXRwdXRzICVz XG4iLCBwcmVmaXggPyBwcmVmaXggOiAiIiwKKyAJCQkJCQkJa2V5bmFtZSwKKyAJCQkJCQkJb3V0 ID8gb3V0IDogIiIpOworLQkgIGZyZWUgKGtleW5hbWUpOworLQkgIGZyZWUgKG91dCk7CisrCSAg eGZyZWUgKGtleW5hbWUpOworKwkgIHhmcmVlIChvdXQpOworIAkgIGJyZWFrOworIAljYXNlIElT RlVOQzoKKyAJICBicmVhazsKK0BAIC0yMTM1LDEzICsyMjM0LDEzIEBAIF9ybF9tYWNyb19kdW1w ZXJfaW50ZXJuYWwgKHByaW50X3JlYWRhYmx5LCBtYXAsIHByZWZpeCkKKyAJCSAgb3V0ID0gKGNo YXIgKil4bWFsbG9jIChzdHJsZW4gKGtleW5hbWUpICsgcHJlZml4X2xlbiArIDEpOworIAkJICBz dHJjcHkgKG91dCwgcHJlZml4KTsKKyAJCSAgc3RyY3B5IChvdXQgKyBwcmVmaXhfbGVuLCBrZXlu YW1lKTsKKy0JCSAgZnJlZSAoa2V5bmFtZSk7CisrCQkgIHhmcmVlIChrZXluYW1lKTsKKyAJCSAg a2V5bmFtZSA9IG91dDsKKyAJCX0KKyAJICAgIH0KKyAKKyAJICBfcmxfbWFjcm9fZHVtcGVyX2lu dGVybmFsIChwcmludF9yZWFkYWJseSwgRlVOQ1RJT05fVE9fS0VZTUFQIChtYXAsIGtleSksIGtl eW5hbWUpOworLQkgIGZyZWUgKGtleW5hbWUpOworKwkgIHhmcmVlIChrZXluYW1lKTsKKyAJICBi cmVhazsKKyAJfQorICAgICB9CitAQCAtMjE3MSw3ICsyMjcwLDYgQEAgX3JsX2dldF9zdHJpbmdf dmFyaWFibGVfdmFsdWUgKG5hbWUpCisgeworICAgc3RhdGljIGNoYXIgbnVtYnVmWzMyXTsKKyAg IGNoYXIgKnJldDsKKy0gIGludCBuOworIAorICAgaWYgKF9ybF9zdHJpY21wIChuYW1lLCAiYmVs bC1zdHlsZSIpID09IDApCisgICAgIHsKK0BAIC0yMTg4LDYgKzIyODYsMTYgQEAgX3JsX2dldF9z dHJpbmdfdmFyaWFibGVfdmFsdWUgKG5hbWUpCisgICAgIH0KKyAgIGVsc2UgaWYgKF9ybF9zdHJp Y21wIChuYW1lLCAiY29tbWVudC1iZWdpbiIpID09IDApCisgICAgIHJldHVybiAoX3JsX2NvbW1l bnRfYmVnaW4gPyBfcmxfY29tbWVudF9iZWdpbiA6IFJMX0NPTU1FTlRfQkVHSU5fREVGQVVMVCk7 CisrICBlbHNlIGlmIChfcmxfc3RyaWNtcCAobmFtZSwgImNvbXBsZXRpb24tZGlzcGxheS13aWR0 aCIpID09IDApCisrICAgIHsKKysgICAgICBzcHJpbnRmIChudW1idWYsICIlZCIsIF9ybF9jb21w bGV0aW9uX2NvbHVtbnMpOworKyAgICAgIHJldHVybiAobnVtYnVmKTsKKysgICAgfQorKyAgZWxz ZSBpZiAoX3JsX3N0cmljbXAgKG5hbWUsICJjb21wbGV0aW9uLXByZWZpeC1kaXNwbGF5LWxlbmd0 aCIpID09IDApCisrICAgIHsKKysgICAgICBzcHJpbnRmIChudW1idWYsICIlZCIsIF9ybF9jb21w bGV0aW9uX3ByZWZpeF9kaXNwbGF5X2xlbmd0aCk7CisrICAgICAgcmV0dXJuIChudW1idWYpOwor KyAgICB9CisgICBlbHNlIGlmIChfcmxfc3RyaWNtcCAobmFtZSwgImNvbXBsZXRpb24tcXVlcnkt aXRlbXMiKSA9PSAwKQorICAgICB7CisgICAgICAgc3ByaW50ZiAobnVtYnVmLCAiJWQiLCBybF9j b21wbGV0aW9uX3F1ZXJ5X2l0ZW1zKTsKK0BAIC0yMTk1LDYgKzIzMDMsMTEgQEAgX3JsX2dldF9z dHJpbmdfdmFyaWFibGVfdmFsdWUgKG5hbWUpCisgICAgIH0KKyAgIGVsc2UgaWYgKF9ybF9zdHJp Y21wIChuYW1lLCAiZWRpdGluZy1tb2RlIikgPT0gMCkKKyAgICAgcmV0dXJuIChybF9nZXRfa2V5 bWFwX25hbWVfZnJvbV9lZGl0X21vZGUgKCkpOworKyAgZWxzZSBpZiAoX3JsX3N0cmljbXAgKG5h bWUsICJoaXN0b3J5LXNpemUiKSA9PSAwKQorKyAgICB7CisrICAgICAgc3ByaW50ZiAobnVtYnVm LCAiJWQiLCBoaXN0b3J5X2lzX3N0aWZsZWQoKSA/IGhpc3RvcnlfbWF4X2VudHJpZXMgOiAwKTsK KysgICAgICByZXR1cm4gKG51bWJ1Zik7CisrICAgIH0KKyAgIGVsc2UgaWYgKF9ybF9zdHJpY21w IChuYW1lLCAiaXNlYXJjaC10ZXJtaW5hdG9ycyIpID09IDApCisgICAgIHsKKyAgICAgICBpZiAo X3JsX2lzZWFyY2hfdGVybWluYXRvcnMgPT0gMCkKK0BAIC0yMjAzLDcgKzIzMTYsNyBAQCBfcmxf Z2V0X3N0cmluZ192YXJpYWJsZV92YWx1ZSAobmFtZSkKKyAgICAgICBpZiAocmV0KQorIAl7Cisg CSAgc3RybmNweSAobnVtYnVmLCByZXQsIHNpemVvZiAobnVtYnVmKSAtIDEpOworLQkgIGZyZWUg KHJldCk7CisrCSAgeGZyZWUgKHJldCk7CisgCSAgbnVtYnVmW3NpemVvZihudW1idWYpIC0gMV0g PSAnXDAnOworIAl9CisgICAgICAgZWxzZQorQEAgLTIyNjcsOCArMjM4MCw4IEBAIHJsX2R1bXBf dmFyaWFibGVzIChjb3VudCwga2V5KQorIC8qIFJldHVybiBub24temVybyBpZiBhbnkgbWVtYmVy cyBvZiBBUlJBWSBhcmUgYSBzdWJzdHJpbmcgaW4gU1RSSU5HLiAqLworIHN0YXRpYyBpbnQKKyBz dWJzdHJpbmdfbWVtYmVyX29mX2FycmF5IChzdHJpbmcsIGFycmF5KQorLSAgICAgY2hhciAqc3Ry aW5nOworLSAgICAgY29uc3QgY2hhciAqKmFycmF5OworKyAgICAgY29uc3QgY2hhciAqc3RyaW5n OworKyAgICAgY29uc3QgY2hhciAqIGNvbnN0ICphcnJheTsKKyB7CisgICB3aGlsZSAoKmFycmF5 KQorICAgICB7CistLS0gYS9yZWFkbGluZS9jYWxsYmFjay5jCisrKysgYi9yZWFkbGluZS9jYWxs YmFjay5jCitAQCAtMSwyNCArMSwyNCBAQAorIC8qIGNhbGxiYWNrLmMgLS0gZnVuY3Rpb25zIHRv IHVzZSByZWFkbGluZSBhcyBhbiBYIGBjYWxsYmFjaycgbWVjaGFuaXNtLiAqLworIAorLS8qIENv cHlyaWdodCAoQykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8q IENvcHlyaWdodCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor IAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBs aWJyYXJ5IGZvcgorLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlu cHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5n IGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5n LgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJl YWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQor LSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAor LSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNF LiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3Vp dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25n IHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisrKi8KKysKKyAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKKyAKKyAjaWYgZGVmaW5lZCAo SEFWRV9DT05GSUdfSCkKK0BAIC04Nyw2ICs4Nyw3IEBAIF9ybF9jYWxsYmFja19uZXdsaW5lICgp CisgICAgIH0KKyAKKyAgIHJlYWRsaW5lX2ludGVybmFsX3NldHVwICgpOworKyAgUkxfQ0hFQ0tf U0lHTkFMUyAoKTsKKyB9CisgCisgLyogSW5zdGFsbCBhIHJlYWRsaW5lIGhhbmRsZXIsIHNldCB1 cCB0aGUgdGVybWluYWwsIGFuZCBpc3N1ZSB0aGUgcHJvbXB0LiAqLworQEAgLTExMSw4NyArMTEy LDEwMSBAQCBybF9jYWxsYmFja19yZWFkX2NoYXIgKCkKKyAKKyAgIGlmIChybF9saW5lZnVuYyA9 PSBOVUxMKQorICAgICB7CistICAgICAgZnByaW50ZiAoc3RkZXJyLCAicmVhZGxpbmU6IHJlYWRs aW5lX2NhbGxiYWNrX3JlYWRfY2hhcigpIGNhbGxlZCB3aXRoIG5vIGhhbmRsZXIhXHJcbiIpOwor KyAgICAgIF9ybF9lcnJtc2cgKCJyZWFkbGluZV9jYWxsYmFja19yZWFkX2NoYXIoKSBjYWxsZWQg d2l0aCBubyBoYW5kbGVyISIpOworICAgICAgIGFib3J0ICgpOworICAgICB9CisgCistICBtZW1j cHkgKCh2b2lkICopb2xldmVsLCAodm9pZCAqKXJlYWRsaW5lX3RvcF9sZXZlbCwgc2l6ZW9mIChw cm9jZW52X3QpKTsKKy0gIGpjb2RlID0gc2V0am1wIChyZWFkbGluZV90b3BfbGV2ZWwpOworKyAg bWVtY3B5ICgodm9pZCAqKW9sZXZlbCwgKHZvaWQgKilfcmxfdG9wX2xldmVsLCBzaXplb2YgKHBy b2NlbnZfdCkpOworKyAgamNvZGUgPSBzZXRqbXAgKF9ybF90b3BfbGV2ZWwpOworICAgaWYgKGpj b2RlKQorICAgICB7CisgICAgICAgKCpybF9yZWRpc3BsYXlfZnVuY3Rpb24pICgpOworICAgICAg IF9ybF93YW50X3JlZGlzcGxheSA9IDA7CistICAgICAgbWVtY3B5ICgodm9pZCAqKXJlYWRsaW5l X3RvcF9sZXZlbCwgKHZvaWQgKilvbGV2ZWwsIHNpemVvZiAocHJvY2Vudl90KSk7CisrICAgICAg bWVtY3B5ICgodm9pZCAqKV9ybF90b3BfbGV2ZWwsICh2b2lkICopb2xldmVsLCBzaXplb2YgKHBy b2NlbnZfdCkpOworICAgICAgIHJldHVybjsKKyAgICAgfQorIAorLSAgaWYgIChSTF9JU1NUQVRF IChSTF9TVEFURV9JU0VBUkNIKSkKKysgIGRvCisgICAgIHsKKy0gICAgICBlb2YgPSBfcmxfaXNl YXJjaF9jYWxsYmFjayAoX3JsX2lzY3h0KTsKKy0gICAgICBpZiAoZW9mID09IDAgJiYgKFJMX0lT U1RBVEUgKFJMX1NUQVRFX0lTRUFSQ0gpID09IDApICYmIFJMX0lTU1RBVEUgKFJMX1NUQVRFX0lO UFVUUEVORElORykpCistCXJsX2NhbGxiYWNrX3JlYWRfY2hhciAoKTsKKysgICAgICBSTF9DSEVD S19TSUdOQUxTICgpOworKyAgICAgIGlmICAoUkxfSVNTVEFURSAoUkxfU1RBVEVfSVNFQVJDSCkp CisrCXsKKysJICBlb2YgPSBfcmxfaXNlYXJjaF9jYWxsYmFjayAoX3JsX2lzY3h0KTsKKysJICBp ZiAoZW9mID09IDAgJiYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0lTRUFSQ0gpID09IDApICYmIFJM X0lTU1RBVEUgKFJMX1NUQVRFX0lOUFVUUEVORElORykpCisrCSAgICBybF9jYWxsYmFja19yZWFk X2NoYXIgKCk7CisgCistICAgICAgcmV0dXJuOworLSAgICB9CistICBlbHNlIGlmICAoUkxfSVNT VEFURSAoUkxfU1RBVEVfTlNFQVJDSCkpCistICAgIHsKKy0gICAgICBlb2YgPSBfcmxfbnNlYXJj aF9jYWxsYmFjayAoX3JsX25zY3h0KTsKKy0gICAgICByZXR1cm47CistICAgIH0KKy0gIGVsc2Ug aWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX05VTUVSSUNBUkcpKQorLSAgICB7CistICAgICAgZW9m ID0gX3JsX2FyZ19jYWxsYmFjayAoX3JsX2FyZ2N4dCk7CistICAgICAgaWYgKGVvZiA9PSAwICYm IChSTF9JU1NUQVRFIChSTF9TVEFURV9OVU1FUklDQVJHKSA9PSAwKSAmJiBSTF9JU1NUQVRFIChS TF9TVEFURV9JTlBVVFBFTkRJTkcpKQorLQlybF9jYWxsYmFja19yZWFkX2NoYXIgKCk7CistICAg ICAgLyogWFhYIC0gdGhpcyBzaG91bGQgaGFuZGxlIF9ybF9sYXN0X2NvbW1hbmRfd2FzX2tpbGwg YmV0dGVyICovCistICAgICAgZWxzZSBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTlVNRVJJQ0FS RykgPT0gMCkKKy0JX3JsX2ludGVybmFsX2NoYXJfY2xlYW51cCAoKTsKKysJICByZXR1cm47Cisr CX0KKysgICAgICBlbHNlIGlmICAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTlNFQVJDSCkpCisrCXsK KysJICBlb2YgPSBfcmxfbnNlYXJjaF9jYWxsYmFjayAoX3JsX25zY3h0KTsKKysJICByZXR1cm47 CisrCX0KKysjaWYgZGVmaW5lZCAoVklfTU9ERSkKKysgICAgICBlbHNlIGlmIChSTF9JU1NUQVRF IChSTF9TVEFURV9WSU1PVElPTikpCisrCXsKKysJICBlb2YgPSBfcmxfdmlfZG9tb3ZlX2NhbGxi YWNrIChfcmxfdmltdmN4dCk7CisrCSAgLyogU2hvdWxkIGhhbmRsZSBldmVyeXRoaW5nLCBpbmNs dWRpbmcgY2xlYW51cCwgbnVtZXJpYyBhcmd1bWVudHMsCisrCSAgICAgYW5kIHR1cm5pbmcgb2Zm IFJMX1NUQVRFX1ZJTU9USU9OICovCisrCSAgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX05VTUVS SUNBUkcpID09IDApCisrCSAgICBfcmxfaW50ZXJuYWxfY2hhcl9jbGVhbnVwICgpOworIAorLSAg ICAgIHJldHVybjsKKy0gICAgfQorLSAgZWxzZSBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTVVM VElLRVkpKQorLSAgICB7CistICAgICAgZW9mID0gX3JsX2Rpc3BhdGNoX2NhbGxiYWNrIChfcmxf a3NjeHQpOwkvKiBGb3Igbm93ICovCistICAgICAgd2hpbGUgKChlb2YgPT0gLTEgfHwgZW9mID09 IC0yKSAmJiBSTF9JU1NUQVRFIChSTF9TVEFURV9NVUxUSUtFWSkgJiYgX3JsX2tzY3h0ICYmIChf cmxfa3NjeHQtPmZsYWdzICYgS1NFUV9ESVNQQVRDSEVEKSkKKy0JZW9mID0gX3JsX2Rpc3BhdGNo X2NhbGxiYWNrIChfcmxfa3NjeHQpOworLSAgICAgIGlmIChSTF9JU1NUQVRFIChSTF9TVEFURV9N VUxUSUtFWSkgPT0gMCkKKysJICByZXR1cm47CisrCX0KKysjZW5kaWYKKysgICAgICBlbHNlIGlm IChSTF9JU1NUQVRFIChSTF9TVEFURV9OVU1FUklDQVJHKSkKKyAJeworLQkgIF9ybF9pbnRlcm5h bF9jaGFyX2NsZWFudXAgKCk7CistCSAgX3JsX3dhbnRfcmVkaXNwbGF5ID0gMTsKKysJICBlb2Yg PSBfcmxfYXJnX2NhbGxiYWNrIChfcmxfYXJnY3h0KTsKKysJICBpZiAoZW9mID09IDAgJiYgKFJM X0lTU1RBVEUgKFJMX1NUQVRFX05VTUVSSUNBUkcpID09IDApICYmIFJMX0lTU1RBVEUgKFJMX1NU QVRFX0lOUFVUUEVORElORykpCisrCSAgICBybF9jYWxsYmFja19yZWFkX2NoYXIgKCk7CisrCSAg LyogWFhYIC0gdGhpcyBzaG91bGQgaGFuZGxlIF9ybF9sYXN0X2NvbW1hbmRfd2FzX2tpbGwgYmV0 dGVyICovCisrCSAgZWxzZSBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTlVNRVJJQ0FSRykgPT0g MCkKKysJICAgIF9ybF9pbnRlcm5hbF9jaGFyX2NsZWFudXAgKCk7CisrCisrCSAgcmV0dXJuOwor IAl9CistICAgIH0KKy0gIGVsc2UgaWYgKF9ybF9jYWxsYmFja19mdW5jKQorLSAgICB7CistICAg ICAgLyogVGhpcyBhbGxvd3MgZnVuY3Rpb25zIHRoYXQgc2ltcGx5IG5lZWQgdG8gcmVhZCBhbiBh ZGRpdGlvbmFsIGNoYXJhY3RlcgorLQkgKGxpa2UgcXVvdGVkLWluc2VydCkgdG8gcmVnaXN0ZXIg YSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBpbnB1dCBpcworLQkgYXZhaWxhYmxlLiAgX3Js X2NhbGxiYWNrX2RhdGEgaXMgc2ltcGx5IGEgcG9pbnRlciB0byBhIHN0cnVjdCB0aGF0IGhhcwor LQkgdGhlIGFyZ3VtZW50IGNvdW50IG9yaWdpbmFsbHkgcGFzc2VkIHRvIHRoZSByZWdpc3Rlcmlu ZyBmdW5jdGlvbiBhbmQKKy0JIHNwYWNlIGZvciBhbnkgYWRkaXRpb25hbCBwYXJhbWV0ZXJzLiAg Ki8KKy0gICAgICBlb2YgPSAoKl9ybF9jYWxsYmFja19mdW5jKSAoX3JsX2NhbGxiYWNrX2RhdGEp OworLSAgICAgIC8qIElmIHRoZSBmdW5jdGlvbiBgZGVyZWdpc3RlcnMnIGl0c2VsZiwgbWFrZSBz dXJlIHRoZSBkYXRhIGlzIGNsZWFuZWQKKy0JIHVwLiAqLworLSAgICAgIGlmIChfcmxfY2FsbGJh Y2tfZnVuYyA9PSAwKQorKyAgICAgIGVsc2UgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX01VTFRJ S0VZKSkKKyAJeworLQkgIGlmIChfcmxfY2FsbGJhY2tfZGF0YSkgCQorKwkgIGVvZiA9IF9ybF9k aXNwYXRjaF9jYWxsYmFjayAoX3JsX2tzY3h0KTsJLyogRm9yIG5vdyAqLworKwkgIHdoaWxlICgo ZW9mID09IC0xIHx8IGVvZiA9PSAtMikgJiYgUkxfSVNTVEFURSAoUkxfU1RBVEVfTVVMVElLRVkp ICYmIF9ybF9rc2N4dCAmJiAoX3JsX2tzY3h0LT5mbGFncyAmIEtTRVFfRElTUEFUQ0hFRCkpCisr CSAgICBlb2YgPSBfcmxfZGlzcGF0Y2hfY2FsbGJhY2sgKF9ybF9rc2N4dCk7CisrCSAgaWYgKFJM X0lTU1RBVEUgKFJMX1NUQVRFX01VTFRJS0VZKSA9PSAwKQorIAkgICAgeworLQkgICAgICBfcmxf Y2FsbGJhY2tfZGF0YV9kaXNwb3NlIChfcmxfY2FsbGJhY2tfZGF0YSk7CistCSAgICAgIF9ybF9j YWxsYmFja19kYXRhID0gMDsKKysJICAgICAgX3JsX2ludGVybmFsX2NoYXJfY2xlYW51cCAoKTsK KysJICAgICAgX3JsX3dhbnRfcmVkaXNwbGF5ID0gMTsKKyAJICAgIH0KKy0JICBfcmxfaW50ZXJu YWxfY2hhcl9jbGVhbnVwICgpOworIAl9CistICAgIH0KKy0gIGVsc2UKKy0gICAgZW9mID0gcmVh ZGxpbmVfaW50ZXJuYWxfY2hhciAoKTsKKysgICAgICBlbHNlIGlmIChfcmxfY2FsbGJhY2tfZnVu YykKKysJeworKwkgIC8qIFRoaXMgYWxsb3dzIGZ1bmN0aW9ucyB0aGF0IHNpbXBseSBuZWVkIHRv IHJlYWQgYW4gYWRkaXRpb25hbAorKwkgICAgIGNoYXJhY3RlciAobGlrZSBxdW90ZWQtaW5zZXJ0 KSB0byByZWdpc3RlciBhIGZ1bmN0aW9uIHRvIGJlCisrCSAgICAgY2FsbGVkIHdoZW4gaW5wdXQg aXMgYXZhaWxhYmxlLiAgX3JsX2NhbGxiYWNrX2RhdGEgaXMgc2ltcGx5IGEKKysJICAgICBwb2lu dGVyIHRvIGEgc3RydWN0IHRoYXQgaGFzIHRoZSBhcmd1bWVudCBjb3VudCBvcmlnaW5hbGx5Cisr CSAgICAgcGFzc2VkIHRvIHRoZSByZWdpc3RlcmluZyBmdW5jdGlvbiBhbmQgc3BhY2UgZm9yIGFu eSBhZGRpdGlvbmFsCisrCSAgICAgcGFyYW1ldGVycy4gICovCisrCSAgZW9mID0gKCpfcmxfY2Fs bGJhY2tfZnVuYykgKF9ybF9jYWxsYmFja19kYXRhKTsKKysJICAvKiBJZiB0aGUgZnVuY3Rpb24g YGRlcmVnaXN0ZXJzJyBpdHNlbGYsIG1ha2Ugc3VyZSB0aGUgZGF0YSBpcworKwkgICAgIGNsZWFu ZWQgdXAuICovCisrCSAgaWYgKF9ybF9jYWxsYmFja19mdW5jID09IDApCisrCSAgICB7CisrCSAg ICAgIGlmIChfcmxfY2FsbGJhY2tfZGF0YSkgCQorKwkJeworKwkJICBfcmxfY2FsbGJhY2tfZGF0 YV9kaXNwb3NlIChfcmxfY2FsbGJhY2tfZGF0YSk7CisrCQkgIF9ybF9jYWxsYmFja19kYXRhID0g MDsKKysJCX0KKysJICAgICAgX3JsX2ludGVybmFsX2NoYXJfY2xlYW51cCAoKTsKKysJICAgIH0K KysJfQorKyAgICAgIGVsc2UKKysJZW9mID0gcmVhZGxpbmVfaW50ZXJuYWxfY2hhciAoKTsKKyAK Ky0gIGlmIChybF9kb25lID09IDAgJiYgX3JsX3dhbnRfcmVkaXNwbGF5KQorLSAgICB7CistICAg ICAgKCpybF9yZWRpc3BsYXlfZnVuY3Rpb24pICgpOworLSAgICAgIF9ybF93YW50X3JlZGlzcGxh eSA9IDA7CistICAgIH0KKysgICAgICBSTF9DSEVDS19TSUdOQUxTICgpOworKyAgICAgIGlmIChy bF9kb25lID09IDAgJiYgX3JsX3dhbnRfcmVkaXNwbGF5KQorKwl7CisrCSAgKCpybF9yZWRpc3Bs YXlfZnVuY3Rpb24pICgpOworKwkgIF9ybF93YW50X3JlZGlzcGxheSA9IDA7CisrCX0KKyAKKy0g IC8qIFdlIGxvb3AgaW4gY2FzZSBzb21lIGZ1bmN0aW9uIGhhcyBwdXNoZWQgaW5wdXQgYmFjayB3 aXRoIHJsX2V4ZWN1dGVfbmV4dC4gKi8KKy0gIGZvciAoOzspCistICAgIHsKKyAgICAgICBpZiAo cmxfZG9uZSkKKyAJeworIAkgIGxpbmUgPSByZWFkbGluZV9pbnRlcm5hbF90ZWFyZG93biAoZW9m KTsKK0BAIC0yMTMsMTEgKzIyOCw4IEBAIHJsX2NhbGxiYWNrX3JlYWRfY2hhciAoKQorIAkgIGlm IChpbl9oYW5kbGVyID09IDAgJiYgcmxfbGluZWZ1bmMpCisgCSAgICBfcmxfY2FsbGJhY2tfbmV3 bGluZSAoKTsKKyAJfQorLSAgICAgIGlmIChybF9wZW5kaW5nX2lucHV0IHx8IF9ybF9wdXNoZWRf aW5wdXRfYXZhaWxhYmxlICgpIHx8IFJMX0lTU1RBVEUgKFJMX1NUQVRFX01BQ1JPSU5QVVQpKQor LQllb2YgPSByZWFkbGluZV9pbnRlcm5hbF9jaGFyICgpOworLSAgICAgIGVsc2UKKy0JYnJlYWs7 CisgICAgIH0KKysgIHdoaWxlIChybF9wZW5kaW5nX2lucHV0IHx8IF9ybF9wdXNoZWRfaW5wdXRf YXZhaWxhYmxlICgpIHx8IFJMX0lTU1RBVEUgKFJMX1NUQVRFX01BQ1JPSU5QVVQpKTsKKyB9Cisg CisgLyogUmVtb3ZlIHRoZSBoYW5kbGVyLCBhbmQgbWFrZSBzdXJlIHRoZSB0ZXJtaW5hbCBpcyBp biBpdHMgbm9ybWFsIHN0YXRlLiAqLworQEAgLTIyNiw2ICsyMzgsNyBAQCBybF9jYWxsYmFja19o YW5kbGVyX3JlbW92ZSAoKQorIHsKKyAgIHJsX2xpbmVmdW5jID0gTlVMTDsKKyAgIFJMX1VOU0VU U1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKTsKKysgIFJMX0NIRUNLX1NJR05BTFMgKCk7CisgICBp ZiAoaW5faGFuZGxlcikKKyAgICAgeworICAgICAgIGluX2hhbmRsZXIgPSAwOworQEAgLTI1NCw4 ICsyNjcsNyBAQCBfcmxfY2FsbGJhY2tfZGF0YV9hbGxvYyAoY291bnQpCisgdm9pZCBfcmxfY2Fs bGJhY2tfZGF0YV9kaXNwb3NlIChhcmcpCisgICAgICBfcmxfY2FsbGJhY2tfZ2VuZXJpY19hcmcg KmFyZzsKKyB7CistICBpZiAoYXJnKQorLSAgICBmcmVlIChhcmcpOworKyAgeGZyZWUgKGFyZyk7 CisgfQorIAorICNlbmRpZgorLS0tIGEvcmVhZGxpbmUvY2hhcmRlZnMuaAorKysrIGIvcmVhZGxp bmUvY2hhcmRlZnMuaAorQEAgLTEsMjQgKzEsMjMgQEAKKyAvKiBjaGFyZGVmcy5oIC0tIENoYXJh Y3RlciBkZWZpbml0aW9ucyBmb3IgcmVhZGxpbmUuICovCisgCistLyogQ29weXJpZ2h0IChDKSAx OTk0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk5 NC0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJl YWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVk aXRpbmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5 IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0 aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorIAorLSAgIFRoZSBHTlUg UmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29m dHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBS ZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlz IG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBr ZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAor LSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1B IDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWZu ZGVmIF9DSEFSREVGU19IXworICNkZWZpbmUgX0NIQVJERUZTX0hfCistLS0gYS9yZWFkbGluZS9j b21wYXQuYworKysrIGIvcmVhZGxpbmUvY29tcGF0LmMKK0BAIC0xLDI0ICsxLDI0IEBACisgLyog Y29tcGF0LmMgLS0gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZnVuY3Rpb25zLiAqLworIAorLS8q IENvcHlyaWdodCAoQykgMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBD b3B5cmlnaHQgKEMpIDIwMDAtMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAK Ky0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGli cmFyeSBmb3IKKy0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1 dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUg UmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBs aW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4K KyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFk bGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0g ICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0g ICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4g IElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl IDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3 aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorKyovCisrCisgI2RlZmluZSBSRUFETElORV9MSUJSQVJZCisgCisgI2lmIGRlZmluZWQgKEhB VkVfQ09ORklHX0gpCistLS0gYS9yZWFkbGluZS9jb21wbGV0ZS5jCisrKysgYi9yZWFkbGluZS9j b21wbGV0ZS5jCitAQCAtMSwyNCArMSwyNCBAQAorIC8qIGNvbXBsZXRlLmMgLS0gZmlsZW5hbWUg Y29tcGxldGlvbiBmb3IgcmVhZGxpbmUuICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTg3LTIw MDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTg3 LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCistICAgcmVh ZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRp dGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkg KFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRo IGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisgCistICAgVGhlIEdOVSBS ZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0 d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIFJl YWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMg b2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5IGtl cHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90Cist ICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg MDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworKworICNkZWZp bmUgUkVBRExJTkVfTElCUkFSWQorIAorICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19IKQorQEAg LTExMCw4ICsxMTAsOCBAQCBzdGF0aWMgaW50IGdldF95X29yX24gUEFSQU1TKChpbnQpKTsKKyBz dGF0aWMgaW50IF9ybF9pbnRlcm5hbF9wYWdlciBQQVJBTVMoKGludCkpOworIHN0YXRpYyBjaGFy ICpwcmludGFibGVfcGFydCBQQVJBTVMoKGNoYXIgKikpOworIHN0YXRpYyBpbnQgZm53aWR0aCBQ QVJBTVMoKGNvbnN0IGNoYXIgKikpOworLXN0YXRpYyBpbnQgZm5wcmludCBQQVJBTVMoKGNvbnN0 IGNoYXIgKikpOworLXN0YXRpYyBpbnQgcHJpbnRfZmlsZW5hbWUgUEFSQU1TKChjaGFyICosIGNo YXIgKikpOworK3N0YXRpYyBpbnQgZm5wcmludCBQQVJBTVMoKGNvbnN0IGNoYXIgKiwgaW50KSk7 Cisrc3RhdGljIGludCBwcmludF9maWxlbmFtZSBQQVJBTVMoKGNoYXIgKiwgY2hhciAqLCBpbnQp KTsKKyAKKyBzdGF0aWMgY2hhciAqKmdlbl9jb21wbGV0aW9uX21hdGNoZXMgUEFSQU1TKChjaGFy ICosIGludCwgaW50LCBybF9jb21wZW50cnlfZnVuY190ICosIGludCwgaW50KSk7CisgCitAQCAt MTE5LDkgKzExOSwxMSBAQCBzdGF0aWMgY2hhciAqKnJlbW92ZV9kdXBsaWNhdGVfbWF0Y2hlcyBQ QVJBTVMoKGNoYXIgKiopKTsKKyBzdGF0aWMgdm9pZCBpbnNlcnRfbWF0Y2ggUEFSQU1TKChjaGFy ICosIGludCwgaW50LCBjaGFyICopKTsKKyBzdGF0aWMgaW50IGFwcGVuZF90b19tYXRjaCBQQVJB TVMoKGNoYXIgKiwgaW50LCBpbnQsIGludCkpOworIHN0YXRpYyB2b2lkIGluc2VydF9hbGxfbWF0 Y2hlcyBQQVJBTVMoKGNoYXIgKiosIGludCwgY2hhciAqKSk7Cisrc3RhdGljIGludCBjb21wbGV0 ZV9mbmNtcCBQQVJBTVMoKGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICosIGludCkpOwor IHN0YXRpYyB2b2lkIGRpc3BsYXlfbWF0Y2hlcyBQQVJBTVMoKGNoYXIgKiopKTsKKyBzdGF0aWMg aW50IGNvbXB1dGVfbGNkX29mX21hdGNoZXMgUEFSQU1TKChjaGFyICoqLCBpbnQsIGNvbnN0IGNo YXIgKikpOworIHN0YXRpYyBpbnQgcG9zdHByb2Nlc3NfbWF0Y2hlcyBQQVJBTVMoKGNoYXIgKioq LCBpbnQpKTsKKytzdGF0aWMgaW50IGNvbXBsZXRlX2dldF9zY3JlZW53aWR0aCBQQVJBTVMoKHZv aWQpKTsKKyAKKyBzdGF0aWMgY2hhciAqbWFrZV9xdW90ZWRfcmVwbGFjZW1lbnQgUEFSQU1TKChj aGFyICosIGludCwgY2hhciAqKSk7CisgCitAQCAtMTU3LDEzICsxNTksMjcgQEAgaW50IF9ybF9w cmludF9jb21wbGV0aW9uc19ob3Jpem9udGFsbHk7CisgI2lmIGRlZmluZWQgKF9fTVNET1NfXykg JiYgIWRlZmluZWQgKF9fREpHUFBfXykKKyBpbnQgX3JsX2NvbXBsZXRpb25fY2FzZV9mb2xkID0g MTsKKyAjZWxzZQorLWludCBfcmxfY29tcGxldGlvbl9jYXNlX2ZvbGQ7CisraW50IF9ybF9jb21w bGV0aW9uX2Nhc2VfZm9sZCA9IDA7CisgI2VuZGlmCisgCistLyogSWYgbm9uLXplcm8sIGRvbid0 IG1hdGNoIGhpZGRlbiBmaWxlcyAoZmlsZW5hbWVzIGJlZ2lubmluZyB3aXRoIGEgYC4nIG9uCisr LyogTm9uLXplcm8gbWVhbnMgdGhhdCBgLScgYW5kIGBfJyBhcmUgZXF1aXZhbGVudCB3aGVuIGNv bXBhcmluZyBmaWxlbmFtZXMKKysgIGZvciBjb21wbGV0aW9uLiAqLworK2ludCBfcmxfY29tcGxl dGlvbl9jYXNlX21hcCA9IDA7CisrCisrLyogSWYgemVybywgZG9uJ3QgbWF0Y2ggaGlkZGVuIGZp bGVzIChmaWxlbmFtZXMgYmVnaW5uaW5nIHdpdGggYSBgLicgb24KKyAgICBVbml4KSB3aGVuIGRv aW5nIGZpbGVuYW1lIGNvbXBsZXRpb24uICovCisgaW50IF9ybF9tYXRjaF9oaWRkZW5fZmlsZXMg PSAxOworIAorKy8qIExlbmd0aCBpbiBjaGFyYWN0ZXJzIG9mIGEgY29tbW9uIHByZWZpeCByZXBs YWNlZCB3aXRoIGFuIGVsbGlwc2lzIChgLi4uJykKKysgICB3aGVuIGRpc3BsYXlpbmcgY29tcGxl dGlvbiBtYXRjaGVzLiAgTWF0Y2hlcyB3aG9zZSBwcmludGFibGUgcG9ydGlvbiBoYXMKKysgICBt b3JlIHRoYW4gdGhpcyBudW1iZXIgb2YgZGlzcGxheWluZyBjaGFyYWN0ZXJzIGluIGNvbW1vbiB3 aWxsIGhhdmUgdGhlIGNvbW1vbgorKyAgIGRpc3BsYXkgcHJlZml4IHJlcGxhY2VkIHdpdGggYW4g ZWxsaXBzaXMuICovCisraW50IF9ybF9jb21wbGV0aW9uX3ByZWZpeF9kaXNwbGF5X2xlbmd0aCA9 IDA7CisrCisrLyogVGhlIHJlYWRsaW5lLXByaXZhdGUgbnVtYmVyIG9mIHNjcmVlbiBjb2x1bW5z IHRvIHVzZSB3aGVuIGRpc3BsYXlpbmcKKysgICBtYXRjaGVzLiAgSWYgPCAwIG9yID4gX3JsX3Nj cmVlbndpZHRoLCBpdCBpcyBpZ25vcmVkLiAqLworK2ludCBfcmxfY29tcGxldGlvbl9jb2x1bW5z ID0gLTE7CisrCisgLyogR2xvYmFsIHZhcmlhYmxlcyBhdmFpbGFibGUgdG8gYXBwbGljYXRpb25z IHVzaW5nIHJlYWRsaW5lLiAqLworIAorICNpZiBkZWZpbmVkIChWSVNJQkxFX1NUQVRTKQorQEAg LTE3Myw2ICsxODksMTYgQEAgaW50IF9ybF9tYXRjaF9oaWRkZW5fZmlsZXMgPSAxOworIGludCBy bF92aXNpYmxlX3N0YXRzID0gMDsKKyAjZW5kaWYgLyogVklTSUJMRV9TVEFUUyAqLworIAorKy8q IElmIG5vbi16ZXJvLCB3aGVuIGNvbXBsZXRpbmcgaW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQsIGRv bid0IGluc2VydAorKyAgIGNoYXJhY3RlcnMgZnJvbSB0aGUgbWF0Y2ggdGhhdCBtYXRjaCBjaGFy YWN0ZXJzIGZvbGxvd2luZyBwb2ludCBpbgorKyAgIHRoZSB3b3JkLiAgVGhpcyBtZWFucywgZm9y IGluc3RhbmNlLCBjb21wbGV0aW5nIHdoZW4gdGhlIGN1cnNvciBpcworKyAgIGFmdGVyIHRoZSBg ZScgaW4gYE1ha2VmaWxlJyB3b24ndCByZXN1bHQgaW4gYE1ha2VmaWxlZmlsZScuICovCisraW50 IF9ybF9za2lwX2NvbXBsZXRlZF90ZXh0ID0gMDsKKysKKysvKiBJZiBub24temVybywgbWVudSBj b21wbGV0aW9uIGRpc3BsYXlzIHRoZSBjb21tb24gcHJlZml4IGZpcnN0IGluIHRoZQorKyAgIGN5 Y2xlIG9mIHBvc3NpYmxlIGNvbXBsZXRpb25zIGluc3RlYWQgb2YgdGhlIGxhc3QuICovCisraW50 IF9ybF9tZW51X2NvbXBsZXRlX3ByZWZpeF9maXJzdCA9IDA7CisrCisgLyogSWYgbm9uLXplcm8s IHRoZW4gdGhpcyBpcyB0aGUgYWRkcmVzcyBvZiBhIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbgorICAg IGNvbXBsZXRpbmcgb24gYSBkaXJlY3RvcnkgbmFtZS4gIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQg d2l0aAorICAgIHRoZSBhZGRyZXNzIG9mIGEgc3RyaW5nICh0aGUgY3VycmVudCBkaXJlY3Rvcnkg bmFtZSkgYXMgYW4gYXJnLiAqLworQEAgLTE4MCw2ICsyMDYsMTcgQEAgcmxfaWNwcGZ1bmNfdCAq cmxfZGlyZWN0b3J5X2NvbXBsZXRpb25faG9vayA9IChybF9pY3BwZnVuY190ICopTlVMTDsKKyAK KyBybF9pY3BwZnVuY190ICpybF9kaXJlY3RvcnlfcmV3cml0ZV9ob29rID0gKHJsX2ljcHBmdW5j X3QgKilOVUxMOworIAorKy8qIElmIG5vbi16ZXJvLCB0aGlzIGlzIHRoZSBhZGRyZXNzIG9mIGEg ZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHJlYWRpbmcKKysgICBkaXJlY3RvcnkgZW50cmllcyBmcm9t IHRoZSBmaWxlc3lzdGVtIGZvciBjb21wbGV0aW9uIGFuZCBjb21wYXJpbmcKKysgICB0aGVtIHRv IHRoZSBwYXJ0aWFsIHdvcmQgdG8gYmUgY29tcGxldGVkLiAgVGhlIGZ1bmN0aW9uIHNob3VsZAor KyAgIGVpdGhlciByZXR1cm4gaXRzIGZpcnN0IGFyZ3VtZW50IChpZiBubyBjb252ZXJzaW9uIHRh a2VzIHBsYWNlKSBvcgorKyAgIG5ld2x5LWFsbG9jYXRlZCBtZW1vcnkuICBUaGlzIGNhbiwgZm9y IGluc3RhbmNlLCBjb252ZXJ0IGZpbGVuYW1lcworKyAgIGJldHdlZW4gY2hhcmFjdGVyIHNldHMg Zm9yIGNvbXBhcmlzb24gYWdhaW5zdCB3aGF0J3MgdHlwZWQgYXQgdGhlCisrICAga2V5Ym9hcmQu ICBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgd2hhdCBpcyBhZGRlZCB0byB0aGUgbGlzdCBvZgorKyAg IG1hdGNoZXMuICBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBsZW5ndGggb2YgdGhlIGZpbGVu YW1lIHRvIGJlCisrICAgY29udmVydGVkLiAqLworK3JsX2RlcXVvdGVfZnVuY190ICpybF9maWxl bmFtZV9yZXdyaXRlX2hvb2sgPSAocmxfZGVxdW90ZV9mdW5jX3QgKilOVUxMOworKworIC8qIE5v bi16ZXJvIG1lYW5zIHJlYWRsaW5lIGNvbXBsZXRpb24gZnVuY3Rpb25zIHBlcmZvcm0gdGlsZGUg ZXhwYW5zaW9uLiAqLworIGludCBybF9jb21wbGV0ZV93aXRoX3RpbGRlX2V4cGFuc2lvbiA9IDA7 CisgCitAQCAtMTg4LDYgKzIyNSwxMCBAQCBpbnQgcmxfY29tcGxldGVfd2l0aF90aWxkZV9leHBh bnNpb24gPSAwOworICAgIGNvbXBsZXRlci4gKi8KKyBybF9jb21wZW50cnlfZnVuY190ICpybF9j b21wbGV0aW9uX2VudHJ5X2Z1bmN0aW9uID0gKHJsX2NvbXBlbnRyeV9mdW5jX3QgKilOVUxMOwor IAorKy8qIFBvaW50ZXIgdG8gZ2VuZXJhdG9yIGZ1bmN0aW9uIGZvciBybF9tZW51X2NvbXBsZXRl ICgpLiAgTlVMTCBtZWFucyB0byB1c2UKKysgICAqcmxfY29tcGxldGlvbl9lbnRyeV9mdW5jdGlv biAoc2VlIGFib3ZlKS4gKi8KKytybF9jb21wZW50cnlfZnVuY190ICpybF9tZW51X2NvbXBsZXRp b25fZW50cnlfZnVuY3Rpb24gPSAocmxfY29tcGVudHJ5X2Z1bmNfdCAqKU5VTEw7CisrCisgLyog UG9pbnRlciB0byBhbHRlcm5hdGl2ZSBmdW5jdGlvbiB0byBjcmVhdGUgbWF0Y2hlcy4KKyAgICBG dW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBURVhULCBTVEFSVCwgYW5kIEVORC4KKyAgICBTVEFSVCBh bmQgRU5EIGFyZSBpbmRpY2VzIGluIFJMX0xJTkVfQlVGRkVSIHNheWluZyB3aGF0IHRoZSBib3Vu ZGFyaWVzCitAQCAtMzI1LDExICszNjYsMjAgQEAgaW50IHJsX2NvbXBsZXRpb25fbWFya19zeW1s aW5rX2RpcnM7CisgLyogSWYgbm9uLXplcm8sIGluaGliaXQgY29tcGxldGlvbiAodGVtcG9yYXJp bHkpLiAqLworIGludCBybF9pbmhpYml0X2NvbXBsZXRpb247CisgCisrLyogU2V0IHRvIHRoZSBs YXN0IGtleSB1c2VkIHRvIGludm9rZSBvbmUgb2YgdGhlIGNvbXBsZXRpb24gZnVuY3Rpb25zICov CisraW50IHJsX2NvbXBsZXRpb25faW52b2tpbmdfa2V5OworKworKy8qIElmIG5vbi16ZXJvLCBz b3J0IHRoZSBjb21wbGV0aW9uIG1hdGNoZXMuICBPbiBieSBkZWZhdWx0LiAqLworK2ludCBybF9z b3J0X2NvbXBsZXRpb25fbWF0Y2hlcyA9IDE7CisrCisgLyogVmFyaWFibGVzIGxvY2FsIHRvIHRo aXMgZmlsZS4gKi8KKyAKKyAvKiBMb2NhbCB2YXJpYWJsZSBzdGF0ZXMgd2hhdCBoYXBwZW5lZCBk dXJpbmcgdGhlIGxhc3QgY29tcGxldGlvbiBhdHRlbXB0LiAqLworIHN0YXRpYyBpbnQgY29tcGxl dGlvbl9jaGFuZ2VkX2J1ZmZlcjsKKyAKKysvKiBUaGUgcmVzdWx0IG9mIHRoZSBxdWVyeSB0byB0 aGUgdXNlciBhYm91dCBkaXNwbGF5aW5nIGNvbXBsZXRpb24gbWF0Y2hlcyAqLworK3N0YXRpYyBp bnQgY29tcGxldGlvbl95X29yX247CisrCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisgLyoJCQkJICAgICAqLworIC8qICAgIEJpbmRhYmxlIGNvbXBsZXRpb24gZnVu Y3Rpb25zICAqLworQEAgLTM0Myw2ICszOTMsOCBAQCBpbnQKKyBybF9jb21wbGV0ZSAoaWdub3Jl LCBpbnZva2luZ19rZXkpCisgICAgICBpbnQgaWdub3JlLCBpbnZva2luZ19rZXk7CisgeworKyAg cmxfY29tcGxldGlvbl9pbnZva2luZ19rZXkgPSBpbnZva2luZ19rZXk7CisrCisgICBpZiAocmxf aW5oaWJpdF9jb21wbGV0aW9uKQorICAgICByZXR1cm4gKF9ybF9pbnNlcnRfY2hhciAoaWdub3Jl LCBpbnZva2luZ19rZXkpKTsKKyAgIGVsc2UgaWYgKHJsX2xhc3RfZnVuYyA9PSBybF9jb21wbGV0 ZSAmJiAhY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlcikKK0BAIC0zNjAsNiArNDEyLDcgQEAgaW50 CisgcmxfcG9zc2libGVfY29tcGxldGlvbnMgKGlnbm9yZSwgaW52b2tpbmdfa2V5KQorICAgICAg aW50IGlnbm9yZSwgaW52b2tpbmdfa2V5OworIHsKKysgIHJsX2NvbXBsZXRpb25faW52b2tpbmdf a2V5ID0gaW52b2tpbmdfa2V5OworICAgcmV0dXJuIChybF9jb21wbGV0ZV9pbnRlcm5hbCAoJz8n KSk7CisgfQorIAorQEAgLTM2Nyw2ICs0MjAsNyBAQCBpbnQKKyBybF9pbnNlcnRfY29tcGxldGlv bnMgKGlnbm9yZSwgaW52b2tpbmdfa2V5KQorICAgICAgaW50IGlnbm9yZSwgaW52b2tpbmdfa2V5 OworIHsKKysgIHJsX2NvbXBsZXRpb25faW52b2tpbmdfa2V5ID0gaW52b2tpbmdfa2V5OworICAg cmV0dXJuIChybF9jb21wbGV0ZV9pbnRlcm5hbCAoJyonKSk7CisgfQorIAorQEAgLTM5NSw2ICs0 NDksMTQgQEAgcmxfY29tcGxldGlvbl9tb2RlIChjZnVuYykKKyAvKgkJCQkgICAgKi8KKyAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAorKy8qIFJlc2V0IHJlYWRsaW5l IHN0YXRlIG9uIGEgc2lnbmFsIG9yIG90aGVyIGV2ZW50LiAqLworK3ZvaWQKKytfcmxfcmVzZXRf Y29tcGxldGlvbl9zdGF0ZSAoKQorK3sKKysgIHJsX2NvbXBsZXRpb25fZm91bmRfcXVvdGUgPSAw OworKyAgcmxfY29tcGxldGlvbl9xdW90ZV9jaGFyYWN0ZXIgPSAwOworK30KKysKKyAvKiBTZXQg ZGVmYXVsdCB2YWx1ZXMgZm9yIHJlYWRsaW5lIHdvcmQgY29tcGxldGlvbi4gIFRoZXNlIGFyZSB0 aGUgdmFyaWFibGVzCisgICAgdGhhdCBhcHBsaWNhdGlvbiBjb21wbGV0aW9uIGZ1bmN0aW9ucyBj YW4gY2hhbmdlIG9yIGluc3BlY3QuICovCisgc3RhdGljIHZvaWQKK0BAIC00MDYsNiArNDY4LDcg QEAgc2V0X2NvbXBsZXRpb25fZGVmYXVsdHMgKHdoYXRfdG9fZG8pCisgICBybF9maWxlbmFtZV9x dW90aW5nX2Rlc2lyZWQgPSAxOworICAgcmxfY29tcGxldGlvbl90eXBlID0gd2hhdF90b19kbzsK KyAgIHJsX2NvbXBsZXRpb25fc3VwcHJlc3NfYXBwZW5kID0gcmxfY29tcGxldGlvbl9zdXBwcmVz c19xdW90ZSA9IDA7CisrICBybF9jb21wbGV0aW9uX2FwcGVuZF9jaGFyYWN0ZXIgPSAnICc7Cisg CisgICAvKiBUaGUgY29tcGxldGlvbiBlbnRyeSBmdW5jdGlvbiBtYXkgb3B0aW9uYWxseSBjaGFu Z2UgdGhpcy4gKi8KKyAgIHJsX2NvbXBsZXRpb25fbWFya19zeW1saW5rX2RpcnMgPSBfcmxfY29t cGxldGVfbWFya19zeW1saW5rX2RpcnM7CitAQCAtNDE4LDYgKzQ4MSwxOSBAQCBnZXRfeV9vcl9u IChmb3JfcGFnZXIpCisgeworICAgaW50IGM7CisgCisrLyogRGlzYWJsZWQgZm9yIEdEQiBkdWUg dG8gdGhlIGdkYi5iYXNlL3JlYWRsaW5lLWFzay5leHAgcmVncmVzc2lvbi4KKysgICBbcGF0Y2hd IHRlc3RzdWl0ZTogVGVzdCByZWFkbGluZS02LjIgImFzayIgcmVncmVzc2lvbgorKyAgIGh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDExLTA1L21zZzAwMDAyLmh0bWwgICov CisrI2lmIDAKKysgIC8qIEZvciBub3csIGRpc2FibGUgcGFnZXIgaW4gY2FsbGJhY2sgbW9kZSwg dW50aWwgd2UgbGF0ZXIgY29udmVydCB0byBzdGF0ZQorKyAgICAgZHJpdmVuIGZ1bmN0aW9ucy4g IEhhdmUgdG8gd2FpdCB1bnRpbCBuZXh0IG1ham9yIHZlcnNpb24gdG8gYWRkIG5ldworKyAgICAg c3RhdGUgZGVmaW5pdGlvbiwgc2luY2UgaXQgd2lsbCBjaGFuZ2UgdmFsdWUgb2YgUkxfU1RBVEVf RE9ORS4gKi8KKysjaWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FMTEJBQ0tTKQorKyAgaWYgKFJMX0lT U1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSkKKysgICAgcmV0dXJuIDE7CisrI2VuZGlmCisrI2Vu ZGlmCisrCisgICBmb3IgKDs7KQorICAgICB7CisgICAgICAgUkxfU0VUU1RBVEUoUkxfU1RBVEVf TU9SRUlOUFVUKTsKK0BAIC00MjgsNyArNTA0LDcgQEAgZ2V0X3lfb3JfbiAoZm9yX3BhZ2VyKQor IAlyZXR1cm4gKDEpOworICAgICAgIGlmIChjID09ICduJyB8fCBjID09ICdOJyB8fCBjID09IFJV Qk9VVCkKKyAJcmV0dXJuICgwKTsKKy0gICAgICBpZiAoYyA9PSBBQk9SVF9DSEFSKQorKyAgICAg IGlmIChjID09IEFCT1JUX0NIQVIgfHwgYyA8IDApCisgCV9ybF9hYm9ydF9pbnRlcm5hbCAoKTsK KyAgICAgICBpZiAoZm9yX3BhZ2VyICYmIChjID09IE5FV0xJTkUgfHwgYyA9PSBSRVRVUk4pKQor IAlyZXR1cm4gKDIpOworQEAgLTQ4MSw2ICs1NTcsMTMgQEAgc3RhdF9jaGFyIChmaWxlbmFtZSkK KyAgIHN0cnVjdCBzdGF0IGZpbmZvOworICAgaW50IGNoYXJhY3RlciwgcjsKKyAKKysgIC8qIFNo b3J0LWNpcmN1aXQgYSAvL3NlcnZlciBvbiBjeWd3aW4sIHNpbmNlIHRoYXQgd2lsbCBhbHdheXMg YmVoYXZlIGFzCisrICAgICBhIGRpcmVjdG9yeS4gKi8KKysjaWYgX19DWUdXSU5fXworKyAgaWYg KGZpbGVuYW1lWzBdID09ICcvJyAmJiBmaWxlbmFtZVsxXSA9PSAnLycgJiYgc3RyY2hyIChmaWxl bmFtZSsyLCAnLycpID09IDApCisrICAgIHJldHVybiAnLyc7CisrI2VuZGlmCisrCisgI2lmIGRl ZmluZWQgKEhBVkVfTFNUQVQpICYmIGRlZmluZWQgKFNfSVNMTkspCisgICByID0gbHN0YXQgKGZp bGVuYW1lLCAmZmluZm8pOworICNlbHNlCitAQCAtNTgxLDcgKzY2NCw3IEBAIGZud2lkdGggKHN0 cmluZykKKyAgIHdpZHRoID0gcG9zID0gMDsKKyAgIHdoaWxlIChzdHJpbmdbcG9zXSkKKyAgICAg eworLSAgICAgIGlmIChDVFJMX0NIQVIgKCpzdHJpbmcpIHx8ICpzdHJpbmcgPT0gUlVCT1VUKQor KyAgICAgIGlmIChDVFJMX0NIQVIgKHN0cmluZ1twb3NdKSB8fCBzdHJpbmdbcG9zXSA9PSBSVUJP VVQpCisgCXsKKyAJICB3aWR0aCArPSAyOworIAkgIHBvcysrOworQEAgLTYxNCwxNyArNjk3LDIw IEBAIGZud2lkdGggKHN0cmluZykKKyAgIHJldHVybiB3aWR0aDsKKyB9CisgCisrI2RlZmluZSBF TExJUFNJU19MRU4JMworKworIHN0YXRpYyBpbnQKKy1mbnByaW50ICh0b19wcmludCkKKytmbnBy aW50ICh0b19wcmludCwgcHJlZml4X2J5dGVzKQorICAgICAgY29uc3QgY2hhciAqdG9fcHJpbnQ7 CisrICAgICBpbnQgcHJlZml4X2J5dGVzOworIHsKKy0gIGludCBwcmludGVkX2xlbjsKKysgIGlu dCBwcmludGVkX2xlbiwgdzsKKyAgIGNvbnN0IGNoYXIgKnM7CisgI2lmIGRlZmluZWQgKEhBTkRM RV9NVUxUSUJZVEUpCisgICBtYnN0YXRlX3QgcHM7CisgICBjb25zdCBjaGFyICplbmQ7CisgICBz aXplX3QgdGxlbjsKKy0gIGludCB3aWR0aCwgdzsKKysgIGludCB3aWR0aDsKKyAgIHdjaGFyX3Qg d2M7CisgCisgICBlbmQgPSB0b19wcmludCArIHN0cmxlbiAodG9fcHJpbnQpICsgMTsKK0BAIC02 MzIsNyArNzE4LDIzIEBAIGZucHJpbnQgKHRvX3ByaW50KQorICNlbmRpZgorIAorICAgcHJpbnRl ZF9sZW4gPSAwOworLSAgcyA9IHRvX3ByaW50OworKworKyAgLyogRG9uJ3QgcHJpbnQgb25seSB0 aGUgZWxsaXBzaXMgaWYgdGhlIGNvbW1vbiBwcmVmaXggaXMgb25lIG9mIHRoZQorKyAgICAgcG9z c2libGUgY29tcGxldGlvbnMgKi8KKysgIGlmICh0b19wcmludFtwcmVmaXhfYnl0ZXNdID09ICdc MCcpCisrICAgIHByZWZpeF9ieXRlcyA9IDA7CisrCisrICBpZiAocHJlZml4X2J5dGVzKQorKyAg ICB7CisrICAgICAgY2hhciBlbGxpcHNpczsKKysKKysgICAgICBlbGxpcHNpcyA9ICh0b19wcmlu dFtwcmVmaXhfYnl0ZXNdID09ICcuJykgPyAnXycgOiAnLic7CisrICAgICAgZm9yICh3ID0gMDsg dyA8IEVMTElQU0lTX0xFTjsgdysrKQorKwlwdXRjIChlbGxpcHNpcywgcmxfb3V0c3RyZWFtKTsK KysgICAgICBwcmludGVkX2xlbiA9IEVMTElQU0lTX0xFTjsKKysgICAgfQorKworKyAgcyA9IHRv X3ByaW50ICsgcHJlZml4X2J5dGVzOworICAgd2hpbGUgKCpzKQorICAgICB7CisgICAgICAgaWYg KENUUkxfQ0hBUiAoKnMpKQorQEAgLTY5MSwxNCArNzkzLDE1IEBAIGZucHJpbnQgKHRvX3ByaW50 KQorICAgIGZpbGVuYW1lcy4gIFJldHVybiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd2Ugb3V0 cHV0LiAqLworIAorIHN0YXRpYyBpbnQKKy1wcmludF9maWxlbmFtZSAodG9fcHJpbnQsIGZ1bGxf cGF0aG5hbWUpCisrcHJpbnRfZmlsZW5hbWUgKHRvX3ByaW50LCBmdWxsX3BhdGhuYW1lLCBwcmVm aXhfYnl0ZXMpCisgICAgICBjaGFyICp0b19wcmludCwgKmZ1bGxfcGF0aG5hbWU7CisrICAgICBp bnQgcHJlZml4X2J5dGVzOworIHsKKyAgIGludCBwcmludGVkX2xlbiwgZXh0ZW5zaW9uX2NoYXIs IHNsZW4sIHRsZW47CisgICBjaGFyICpzLCBjLCAqbmV3X2Z1bGxfcGF0aG5hbWUsICpkbjsKKyAK KyAgIGV4dGVuc2lvbl9jaGFyID0gMDsKKy0gIHByaW50ZWRfbGVuID0gZm5wcmludCAodG9fcHJp bnQpOworKyAgcHJpbnRlZF9sZW4gPSBmbnByaW50ICh0b19wcmludCwgcHJlZml4X2J5dGVzKTsK KyAKKyAjaWYgZGVmaW5lZCAoVklTSUJMRV9TVEFUUykKKyAgaWYgKHJsX2ZpbGVuYW1lX2NvbXBs ZXRpb25fZGVzaXJlZCAmJiAocmxfdmlzaWJsZV9zdGF0cyB8fCBfcmxfY29tcGxldGVfbWFya19k aXJlY3RvcmllcykpCitAQCAtNzUzLDcgKzg1Niw3IEBAIHByaW50X2ZpbGVuYW1lICh0b19wcmlu dCwgZnVsbF9wYXRobmFtZSkKKyAJICBpZiAocGF0aF9pc2RpciAobmV3X2Z1bGxfcGF0aG5hbWUp KQorIAkgICAgZXh0ZW5zaW9uX2NoYXIgPSAnLyc7CisgCistCSAgZnJlZSAobmV3X2Z1bGxfcGF0 aG5hbWUpOworKwkgIHhmcmVlIChuZXdfZnVsbF9wYXRobmFtZSk7CisgCSAgdG9fcHJpbnRbLTFd ID0gYzsKKyAJfQorICAgICAgIGVsc2UKK0BAIC03NjgsNyArODcxLDcgQEAgcHJpbnRfZmlsZW5h bWUgKHRvX3ByaW50LCBmdWxsX3BhdGhuYW1lKQorIAkgICAgICBleHRlbnNpb25fY2hhciA9ICcv JzsKKyAJfQorIAorLSAgICAgIGZyZWUgKHMpOworKyAgICAgIHhmcmVlIChzKTsKKyAgICAgICBp ZiAoZXh0ZW5zaW9uX2NoYXIpCisgCXsKKyAJICBwdXRjIChleHRlbnNpb25fY2hhciwgcmxfb3V0 c3RyZWFtKTsKK0BAIC05NTAsNyArMTA1Myw3IEBAIGdlbl9jb21wbGV0aW9uX21hdGNoZXMgKHRl eHQsIHN0YXJ0LCBlbmQsIG91cl9mdW5jLCBmb3VuZF9xdW90ZSwgcXVvdGVfY2hhcikKKyAgICAg IHJsX2NvbXBlbnRyeV9mdW5jX3QgKm91cl9mdW5jOworICAgICAgaW50IGZvdW5kX3F1b3RlLCBx dW90ZV9jaGFyOworIHsKKy0gIGNoYXIgKiptYXRjaGVzLCAqdGVtcDsKKysgIGNoYXIgKiptYXRj aGVzOworIAorICAgcmxfY29tcGxldGlvbl9mb3VuZF9xdW90ZSA9IGZvdW5kX3F1b3RlOworICAg cmxfY29tcGxldGlvbl9xdW90ZV9jaGFyYWN0ZXIgPSBxdW90ZV9jaGFyOworQEAgLTk2MCw3ICsx MDYzLDEwIEBAIGdlbl9jb21wbGV0aW9uX21hdGNoZXMgKHRleHQsIHN0YXJ0LCBlbmQsIG91cl9m dW5jLCBmb3VuZF9xdW90ZSwgcXVvdGVfY2hhcikKKyAgICAgIHZhcmlhYmxlIHJsX2F0dGVtcHRl ZF9jb21wbGV0aW9uX2Z1bmN0aW9uLiAqLworICAgaWYgKHJsX2F0dGVtcHRlZF9jb21wbGV0aW9u X2Z1bmN0aW9uKQorICAgICB7CisrICAgICAgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSsrOwor ICAgICAgIG1hdGNoZXMgPSAoKnJsX2F0dGVtcHRlZF9jb21wbGV0aW9uX2Z1bmN0aW9uKSAodGV4 dCwgc3RhcnQsIGVuZCk7CisrICAgICAgaWYgKF9ybF9pbnRlcnJ1cHRfaW1tZWRpYXRlbHkgPiAw KQorKwlfcmxfaW50ZXJydXB0X2ltbWVkaWF0ZWx5LS07CisgCisgICAgICAgaWYgKG1hdGNoZXMg fHwgcmxfYXR0ZW1wdGVkX2NvbXBsZXRpb25fb3ZlcikKKyAJeworQEAgLTk2OSwyMSArMTA3NSw5 IEBAIGdlbl9jb21wbGV0aW9uX21hdGNoZXMgKHRleHQsIHN0YXJ0LCBlbmQsIG91cl9mdW5jLCBm b3VuZF9xdW90ZSwgcXVvdGVfY2hhcikKKyAJfQorICAgICB9CisgCistICAvKiBCZXdhcmUgLS0g d2UncmUgc3RyaXBwaW5nIHRoZSBxdW90ZXMgaGVyZS4gIERvIHRoaXMgb25seSBpZiB3ZSBrbm93 CistICAgICB3ZSBhcmUgZG9pbmcgZmlsZW5hbWUgY29tcGxldGlvbiBhbmQgdGhlIGFwcGxpY2F0 aW9uIGhhcyBkZWZpbmVkIGEKKy0gICAgIGZpbGVuYW1lIGRlcXVvdGluZyBmdW5jdGlvbi4gKi8K Ky0gIHRlbXAgPSAoY2hhciAqKU5VTEw7CistCistICBpZiAoZm91bmRfcXVvdGUgJiYgb3VyX2Z1 bmMgPT0gcmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5jdGlvbiAmJgorLSAgICAgIHJsX2ZpbGVu YW1lX2RlcXVvdGluZ19mdW5jdGlvbikKKy0gICAgeworLSAgICAgIC8qIGRlbGV0ZSBzaW5nbGUg YW5kIGRvdWJsZSBxdW90ZXMgKi8KKy0gICAgICB0ZW1wID0gKCpybF9maWxlbmFtZV9kZXF1b3Rp bmdfZnVuY3Rpb24pICh0ZXh0LCBxdW90ZV9jaGFyKTsKKy0gICAgICB0ZXh0ID0gdGVtcDsJLyog bm90IGZyZWVpbmcgdGV4dCBpcyBub3QgYSBtZW1vcnkgbGVhayAqLworLSAgICB9CisrICAvKiBY WFggLS0gZmlsZW5hbWUgZGVxdW90aW5nIG1vdmVkIGludG8gcmxfZmlsZW5hbWVfY29tcGxldGlv bl9mdW5jdGlvbiAqLworIAorICAgbWF0Y2hlcyA9IHJsX2NvbXBsZXRpb25fbWF0Y2hlcyAodGV4 dCwgb3VyX2Z1bmMpOworLSAgRlJFRSAodGVtcCk7CisgICByZXR1cm4gbWF0Y2hlczsgIAorIH0K KyAKK0BAIC0xMDA0LDcgKzEwOTgsNyBAQCByZW1vdmVfZHVwbGljYXRlX21hdGNoZXMgKG1hdGNo ZXMpCisgCisgICAvKiBTb3J0IHRoZSBhcnJheSB3aXRob3V0IG1hdGNoZXNbMF0sIHNpbmNlIHdl IG5lZWQgaXQgdG8KKyAgICAgIHN0YXkgaW4gcGxhY2Ugbm8gbWF0dGVyIHdoYXQuICovCistICBp ZiAoaSkKKysgIGlmIChpICYmIHJsX3NvcnRfY29tcGxldGlvbl9tYXRjaGVzKQorICAgICBxc29y dCAobWF0Y2hlcysxLCBpLTEsIHNpemVvZiAoY2hhciAqKSwgKFFTRlVOQyAqKV9ybF9xc29ydF9z dHJpbmdfY29tcGFyZSk7CisgCisgICAvKiBSZW1lbWJlciB0aGUgbG93ZXN0IGNvbW1vbiBkZW5v bWluYXRvciBmb3IgaXQgbWF5IGJlIHVuaXF1ZS4gKi8KK0BAIC0xMDE0LDcgKzExMDgsNyBAQCBy ZW1vdmVfZHVwbGljYXRlX21hdGNoZXMgKG1hdGNoZXMpCisgICAgIHsKKyAgICAgICBpZiAoc3Ry Y21wIChtYXRjaGVzW2ldLCBtYXRjaGVzW2kgKyAxXSkgPT0gMCkKKyAJeworLQkgIGZyZWUgKG1h dGNoZXNbaV0pOworKwkgIHhmcmVlIChtYXRjaGVzW2ldKTsKKyAJICBtYXRjaGVzW2ldID0gKGNo YXIgKikmZGVhZF9zbG90OworIAl9CisgICAgICAgZWxzZQorQEAgLTEwMzIsNyArMTEyNiw3IEBA IHJlbW92ZV9kdXBsaWNhdGVfbWF0Y2hlcyAobWF0Y2hlcykKKyAgIHRlbXBfYXJyYXlbal0gPSAo Y2hhciAqKU5VTEw7CisgCisgICBpZiAobWF0Y2hlc1swXSAhPSAoY2hhciAqKSZkZWFkX3Nsb3Qp CistICAgIGZyZWUgKG1hdGNoZXNbMF0pOworKyAgICB4ZnJlZSAobWF0Y2hlc1swXSk7CisgCisg ICAvKiBQbGFjZSB0aGUgbG93ZXN0IGNvbW1vbiBkZW5vbWluYXRvciBiYWNrIGluIFswXS4gKi8K KyAgIHRlbXBfYXJyYXlbMF0gPSBsb3dlc3RfY29tbW9uOworQEAgLTEwNDIsNyArMTEzNiw3IEBA IHJlbW92ZV9kdXBsaWNhdGVfbWF0Y2hlcyAobWF0Y2hlcykKKyAgICAgIGluc2VydC4gKi8KKyAg IGlmIChqID09IDIgJiYgc3RyY21wICh0ZW1wX2FycmF5WzBdLCB0ZW1wX2FycmF5WzFdKSA9PSAw KQorICAgICB7CistICAgICAgZnJlZSAodGVtcF9hcnJheVsxXSk7CisrICAgICAgeGZyZWUgKHRl bXBfYXJyYXlbMV0pOworICAgICAgIHRlbXBfYXJyYXlbMV0gPSAoY2hhciAqKU5VTEw7CisgICAg IH0KKyAgIHJldHVybiAodGVtcF9hcnJheSk7CitAQCAtMTExNiw3ICsxMjEwLDggQEAgY29tcHV0 ZV9sY2Rfb2ZfbWF0Y2hlcyAobWF0Y2hfbGlzdCwgbWF0Y2hlcywgdGV4dCkKKyAjaWYgZGVmaW5l ZCAoSEFORExFX01VTFRJQllURSkKKyAJICAgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRl X29yaWVudGVkID09IDApCisgCSAgICAgIHsKKy0JCW1ic3RhdGVfdCBwc19iYWNrID0gcHMxOwor KwkJbWJzdGF0ZV90IHBzX2JhY2s7CisrCQlwc19iYWNrID0gcHMxOworIAkJaWYgKCFfcmxfY29t cGFyZV9jaGFycyAobWF0Y2hfbGlzdFtpXSwgc2ksICZwczEsIG1hdGNoX2xpc3RbaSsxXSwgc2ks ICZwczIpKQorIAkJICBicmVhazsKKyAJCWVsc2UgaWYgKCh2ID0gX3JsX2dldF9jaGFyX2xlbiAo Jm1hdGNoX2xpc3RbaV1bc2ldLCAmcHNfYmFjaykpID4gMSkKK0BAIC0xMjIwLDcgKzEzMTUsNyBA QCBwb3N0cHJvY2Vzc19tYXRjaGVzIChtYXRjaGVzcCwgbWF0Y2hpbmdfZmlsZW5hbWVzKQorICAg aWYgKHJsX2lnbm9yZV9jb21wbGV0aW9uX2R1cGxpY2F0ZXMpCisgICAgIHsKKyAgICAgICB0ZW1w X21hdGNoZXMgPSByZW1vdmVfZHVwbGljYXRlX21hdGNoZXMgKG1hdGNoZXMpOworLSAgICAgIGZy ZWUgKG1hdGNoZXMpOworKyAgICAgIHhmcmVlIChtYXRjaGVzKTsKKyAgICAgICBtYXRjaGVzID0g dGVtcF9tYXRjaGVzOworICAgICB9CisgCitAQCAtMTI1Nyw2ICsxMzUyLDIzIEBAIHBvc3Rwcm9j ZXNzX21hdGNoZXMgKG1hdGNoZXNwLCBtYXRjaGluZ19maWxlbmFtZXMpCisgICByZXR1cm4gKDEp OworIH0KKyAKKytzdGF0aWMgaW50CisrY29tcGxldGVfZ2V0X3NjcmVlbndpZHRoICgpCisrewor KyAgaW50IGNvbHM7CisrICBjaGFyICplbnZjb2xzOworKworKyAgY29scyA9IF9ybF9jb21wbGV0 aW9uX2NvbHVtbnM7CisrICBpZiAoY29scyA+PSAwICYmIGNvbHMgPD0gX3JsX3NjcmVlbndpZHRo KQorKyAgICByZXR1cm4gY29sczsKKysgIGVudmNvbHMgPSBnZXRlbnYgKCJDT0xVTU5TIik7Cisr ICBpZiAoZW52Y29scyAmJiAqZW52Y29scykKKysgICAgY29scyA9IGF0b2kgKGVudmNvbHMpOwor KyAgaWYgKGNvbHMgPj0gMCAmJiBjb2xzIDw9IF9ybF9zY3JlZW53aWR0aCkKKysgICAgcmV0dXJu IGNvbHM7CisrICByZXR1cm4gX3JsX3NjcmVlbndpZHRoOworK30KKysKKyAvKiBBIGNvbnZlbmll bmNlIGZ1bmN0aW9uIGZvciBkaXNwbGF5aW5nIGEgbGlzdCBvZiBzdHJpbmdzIGluCisgICAgY29s dW1uYXIgZm9ybWF0IG9uIHJlYWRsaW5lJ3Mgb3V0cHV0IHN0cmVhbS4gIE1BVENIRVMgaXMgdGhl IGxpc3QKKyAgICBvZiBzdHJpbmdzLCBpbiBhcmd2IGZvcm1hdCwgTEVOIGlzIHRoZSBudW1iZXIg b2Ygc3RyaW5ncyBpbiBNQVRDSEVTLAorQEAgLTEyNjYsMTcgKzEzNzgsMzggQEAgcmxfZGlzcGxh eV9tYXRjaF9saXN0IChtYXRjaGVzLCBsZW4sIG1heCkKKyAgICAgIGNoYXIgKiptYXRjaGVzOwor ICAgICAgaW50IGxlbiwgbWF4OworIHsKKy0gIGludCBjb3VudCwgbGltaXQsIHByaW50ZWRfbGVu LCBsaW5lczsKKy0gIGludCBpLCBqLCBrLCBsOworLSAgY2hhciAqdGVtcDsKKysgIGludCBjb3Vu dCwgbGltaXQsIHByaW50ZWRfbGVuLCBsaW5lcywgY29sczsKKysgIGludCBpLCBqLCBrLCBsLCBj b21tb25fbGVuZ3RoLCBzaW5kOworKyAgY2hhciAqdGVtcCwgKnQ7CisrCisrICAvKiBGaW5kIHRo ZSBsZW5ndGggb2YgdGhlIHByZWZpeCBjb21tb24gdG8gYWxsIGl0ZW1zOiBsZW5ndGggYXMgZGlz cGxheWVkCisrICAgICBjaGFyYWN0ZXJzIChjb21tb25fbGVuZ3RoKSBhbmQgYXMgYSBieXRlIGlu ZGV4IGludG8gdGhlIG1hdGNoZXMgKHNpbmQpICovCisrICBjb21tb25fbGVuZ3RoID0gc2luZCA9 IDA7CisrICBpZiAoX3JsX2NvbXBsZXRpb25fcHJlZml4X2Rpc3BsYXlfbGVuZ3RoID4gMCkKKysg ICAgeworKyAgICAgIHQgPSBwcmludGFibGVfcGFydCAobWF0Y2hlc1swXSk7CisrICAgICAgdGVt cCA9IHN0cnJjaHIgKHQsICcvJyk7CisrICAgICAgY29tbW9uX2xlbmd0aCA9IHRlbXAgPyBmbndp ZHRoICh0ZW1wKSA6IGZud2lkdGggKHQpOworKyAgICAgIHNpbmQgPSB0ZW1wID8gc3RybGVuICh0 ZW1wKSA6IHN0cmxlbiAodCk7CisrCisrICAgICAgaWYgKGNvbW1vbl9sZW5ndGggPiBfcmxfY29t cGxldGlvbl9wcmVmaXhfZGlzcGxheV9sZW5ndGggJiYgY29tbW9uX2xlbmd0aCA+IEVMTElQU0lT X0xFTikKKysJbWF4IC09IGNvbW1vbl9sZW5ndGggLSBFTExJUFNJU19MRU47CisrICAgICAgZWxz ZQorKwljb21tb25fbGVuZ3RoID0gc2luZCA9IDA7CisrICAgIH0KKyAKKyAgIC8qIEhvdyBtYW55 IGl0ZW1zIG9mIE1BWCBsZW5ndGggY2FuIHdlIGZpdCBpbiB0aGUgc2NyZWVuIHdpbmRvdz8gKi8K KysgIGNvbHMgPSBjb21wbGV0ZV9nZXRfc2NyZWVud2lkdGggKCk7CisgICBtYXggKz0gMjsKKy0g IGxpbWl0ID0gX3JsX3NjcmVlbndpZHRoIC8gbWF4OworLSAgaWYgKGxpbWl0ICE9IDEgJiYgKGxp bWl0ICogbWF4ID09IF9ybF9zY3JlZW53aWR0aCkpCisrICBsaW1pdCA9IGNvbHMgLyBtYXg7Cisr ICBpZiAobGltaXQgIT0gMSAmJiAobGltaXQgKiBtYXggPT0gY29scykpCisgICAgIGxpbWl0LS07 CisgCistICAvKiBBdm9pZCBhIHBvc3NpYmxlIGZsb2F0aW5nIGV4Y2VwdGlvbi4gIElmIG1heCA+ IF9ybF9zY3JlZW53aWR0aCwKKysgIC8qIElmIGNvbHMgPT0gMCwgbGltaXQgd2lsbCBlbmQgdXAg LTEgKi8KKysgIGlmIChjb2xzIDwgX3JsX3NjcmVlbndpZHRoICYmIGxpbWl0IDwgMCkKKysgICAg bGltaXQgPSAxOworKworKyAgLyogQXZvaWQgYSBwb3NzaWJsZSBmbG9hdGluZyBleGNlcHRpb24u ICBJZiBtYXggPiBjb2xzLAorICAgICAgbGltaXQgd2lsbCBiZSAwIGFuZCBhIGRpdmlkZS1ieS16 ZXJvIGZhdWx0IHdpbGwgcmVzdWx0LiAqLworICAgaWYgKGxpbWl0ID09IDApCisgICAgIGxpbWl0 ID0gMTsKK0BAIC0xMjg5LDcgKzE0MjIsNyBAQCBybF9kaXNwbGF5X21hdGNoX2xpc3QgKG1hdGNo ZXMsIGxlbiwgbWF4KQorIAkgICAwIDwgbGVuIDw9IGxpbWl0ICBpbXBsaWVzICBjb3VudCA9IDEu ICovCisgCisgICAvKiBTb3J0IHRoZSBpdGVtcyBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeSBzb3J0 ZWQuICovCistICBpZiAocmxfaWdub3JlX2NvbXBsZXRpb25fZHVwbGljYXRlcyA9PSAwKQorKyAg aWYgKHJsX2lnbm9yZV9jb21wbGV0aW9uX2R1cGxpY2F0ZXMgPT0gMCAmJiBybF9zb3J0X2NvbXBs ZXRpb25fbWF0Y2hlcykKKyAgICAgcXNvcnQgKG1hdGNoZXMgKyAxLCBsZW4sIHNpemVvZiAoY2hh ciAqKSwgKFFTRlVOQyAqKV9ybF9xc29ydF9zdHJpbmdfY29tcGFyZSk7CisgCisgICBybF9jcmxm ICgpOworQEAgLTEzMDcsNyArMTQ0MCw3IEBAIHJsX2Rpc3BsYXlfbWF0Y2hfbGlzdCAobWF0Y2hl cywgbGVuLCBtYXgpCisgCSAgICAgIGVsc2UKKyAJCXsKKyAJCSAgdGVtcCA9IHByaW50YWJsZV9w YXJ0IChtYXRjaGVzW2xdKTsKKy0JCSAgcHJpbnRlZF9sZW4gPSBwcmludF9maWxlbmFtZSAodGVt cCwgbWF0Y2hlc1tsXSk7CisrCQkgIHByaW50ZWRfbGVuID0gcHJpbnRfZmlsZW5hbWUgKHRlbXAs IG1hdGNoZXNbbF0sIHNpbmQpOworIAorIAkJICBpZiAoaiArIDEgPCBsaW1pdCkKKyAJCSAgICBm b3IgKGsgPSAwOyBrIDwgbWF4IC0gcHJpbnRlZF9sZW47IGsrKykKK0BAIC0xMzMxLDcgKzE0NjQs NyBAQCBybF9kaXNwbGF5X21hdGNoX2xpc3QgKG1hdGNoZXMsIGxlbiwgbWF4KQorICAgICAgIGZv ciAoaSA9IDE7IG1hdGNoZXNbaV07IGkrKykKKyAJeworIAkgIHRlbXAgPSBwcmludGFibGVfcGFy dCAobWF0Y2hlc1tpXSk7CistCSAgcHJpbnRlZF9sZW4gPSBwcmludF9maWxlbmFtZSAodGVtcCwg bWF0Y2hlc1tpXSk7CisrCSAgcHJpbnRlZF9sZW4gPSBwcmludF9maWxlbmFtZSAodGVtcCwgbWF0 Y2hlc1tpXSwgc2luZCk7CisgCSAgLyogSGF2ZSB3ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhpcyBs aW5lPyAqLworIAkgIGlmIChtYXRjaGVzW2krMV0pCisgCSAgICB7CitAQCAtMTM4MSw3ICsxNTE0 LDcgQEAgZGlzcGxheV9tYXRjaGVzIChtYXRjaGVzKQorICAgICB7CisgICAgICAgdGVtcCA9IHBy aW50YWJsZV9wYXJ0IChtYXRjaGVzWzBdKTsKKyAgICAgICBybF9jcmxmICgpOworLSAgICAgIHBy aW50X2ZpbGVuYW1lICh0ZW1wLCBtYXRjaGVzWzBdKTsKKysgICAgICBwcmludF9maWxlbmFtZSAo dGVtcCwgbWF0Y2hlc1swXSwgMCk7CisgICAgICAgcmxfY3JsZiAoKTsKKyAKKyAgICAgICBybF9m b3JjZWRfdXBkYXRlX2Rpc3BsYXkgKCk7CitAQCAtMTQxNyw3ICsxNTUwLDcgQEAgZGlzcGxheV9t YXRjaGVzIChtYXRjaGVzKQorICAgICAgIHJsX2NybGYgKCk7CisgICAgICAgZnByaW50ZiAocmxf b3V0c3RyZWFtLCAiRGlzcGxheSBhbGwgJWQgcG9zc2liaWxpdGllcz8gKHkgb3IgbikiLCBsZW4p OworICAgICAgIGZmbHVzaCAocmxfb3V0c3RyZWFtKTsKKy0gICAgICBpZiAoZ2V0X3lfb3JfbiAo MCkgPT0gMCkKKysgICAgICBpZiAoKGNvbXBsZXRpb25feV9vcl9uID0gZ2V0X3lfb3JfbiAoMCkp ID09IDApCisgCXsKKyAJICBybF9jcmxmICgpOworIAorQEAgLTE0ODUsOCArMTYxOCw5IEBAIGlu c2VydF9tYXRjaCAobWF0Y2gsIHN0YXJ0LCBtdHlwZSwgcWMpCisgICAgICBpbnQgc3RhcnQsIG10 eXBlOworICAgICAgY2hhciAqcWM7CisgeworLSAgY2hhciAqcmVwbGFjZW1lbnQ7CisrICBjaGFy ICpyZXBsYWNlbWVudCwgKnI7CisgICBjaGFyIG9xYzsKKysgIGludCBlbmQsIHJsZW47CisgCisg ICBvcWMgPSBxYyA/ICpxYyA6ICdcMCc7CisgICByZXBsYWNlbWVudCA9IG1ha2VfcXVvdGVkX3Jl cGxhY2VtZW50IChtYXRjaCwgbXR5cGUsIHFjKTsKK0BAIC0xNDk0LDYgKzE2MjgsNyBAQCBpbnNl cnRfbWF0Y2ggKG1hdGNoLCBzdGFydCwgbXR5cGUsIHFjKQorICAgLyogTm93IGluc2VydCB0aGUg bWF0Y2guICovCisgICBpZiAocmVwbGFjZW1lbnQpCisgICAgIHsKKysgICAgICBybGVuID0gc3Ry bGVuIChyZXBsYWNlbWVudCk7CisgICAgICAgLyogRG9uJ3QgZG91YmxlIGFuIG9wZW5pbmcgcXVv dGUgY2hhcmFjdGVyLiAqLworICAgICAgIGlmIChxYyAmJiAqcWMgJiYgc3RhcnQgJiYgcmxfbGlu ZV9idWZmZXJbc3RhcnQgLSAxXSA9PSAqcWMgJiYKKyAJICAgIHJlcGxhY2VtZW50WzBdID09ICpx YykKK0BAIC0xNTAzLDkgKzE2MzgsMjYgQEAgaW5zZXJ0X21hdGNoIChtYXRjaCwgc3RhcnQsIG10 eXBlLCBxYykKKyAgICAgICBlbHNlIGlmIChxYyAmJiAoKnFjICE9IG9xYykgJiYgc3RhcnQgJiYg cmxfbGluZV9idWZmZXJbc3RhcnQgLSAxXSA9PSBvcWMgJiYKKyAJICAgIHJlcGxhY2VtZW50WzBd ICE9IG9xYykKKyAJc3RhcnQtLTsKKy0gICAgICBfcmxfcmVwbGFjZV90ZXh0IChyZXBsYWNlbWVu dCwgc3RhcnQsIHJsX3BvaW50IC0gMSk7CisrICAgICAgZW5kID0gcmxfcG9pbnQgLSAxOworKyAg ICAgIC8qIERvbid0IGRvdWJsZSBhIGNsb3NpbmcgcXVvdGUgY2hhcmFjdGVyICovCisrICAgICAg aWYgKHFjICYmICpxYyAmJiBlbmQgJiYgcmxfbGluZV9idWZmZXJbcmxfcG9pbnRdID09ICpxYyAm JiByZXBsYWNlbWVudFtybGVuIC0gMV0gPT0gKnFjKQorKyAgICAgICAgZW5kKys7CisrICAgICAg aWYgKF9ybF9za2lwX2NvbXBsZXRlZF90ZXh0KQorKwl7CisrCSAgciA9IHJlcGxhY2VtZW50Owor KwkgIHdoaWxlIChzdGFydCA8IHJsX2VuZCAmJiAqciAmJiBybF9saW5lX2J1ZmZlcltzdGFydF0g PT0gKnIpCisrCSAgICB7CisrCSAgICAgIHN0YXJ0Kys7CisrCSAgICAgIHIrKzsKKysJICAgIH0K KysJICBpZiAoc3RhcnQgPD0gZW5kIHx8ICpyKQorKwkgICAgX3JsX3JlcGxhY2VfdGV4dCAociwg c3RhcnQsIGVuZCk7CisrCSAgcmxfcG9pbnQgPSBzdGFydCArIHN0cmxlbiAocik7CisrCX0KKysg ICAgICBlbHNlCisrCV9ybF9yZXBsYWNlX3RleHQgKHJlcGxhY2VtZW50LCBzdGFydCwgZW5kKTsK KyAgICAgICBpZiAocmVwbGFjZW1lbnQgIT0gbWF0Y2gpCistICAgICAgICBmcmVlIChyZXBsYWNl bWVudCk7CisrICAgICAgICB4ZnJlZSAocmVwbGFjZW1lbnQpOworICAgICB9CisgfQorIAorQEAg LTE1NzIsNyArMTcyNCw3IEBAIGFwcGVuZF90b19tYXRjaCAodGV4dCwgZGVsaW1pdGVyLCBxdW90 ZV9jaGFyLCBub250cml2aWFsX21hdGNoKQorIAkgIGlmIChybF9wb2ludCA9PSBybF9lbmQgJiYg dGVtcF9zdHJpbmdfaW5kZXgpCisgCSAgICBybF9pbnNlcnRfdGV4dCAodGVtcF9zdHJpbmcpOwor IAl9CistICAgICAgZnJlZSAoZmlsZW5hbWUpOworKyAgICAgIHhmcmVlIChmaWxlbmFtZSk7Cisg ICAgIH0KKyAgIGVsc2UKKyAgICAgeworQEAgLTE2MDgsNyArMTc2MCw3IEBAIGluc2VydF9hbGxf bWF0Y2hlcyAobWF0Y2hlcywgcG9pbnQsIHFjKQorIAkgIHJsX2luc2VydF90ZXh0IChycCk7Cisg CSAgcmxfaW5zZXJ0X3RleHQgKCIgIik7CisgCSAgaWYgKHJwICE9IG1hdGNoZXNbaV0pCistCSAg ICBmcmVlIChycCk7CisrCSAgICB4ZnJlZSAocnApOworIAl9CisgICAgIH0KKyAgIGVsc2UKK0BA IC0xNjE3LDcgKzE3NjksNyBAQCBpbnNlcnRfYWxsX21hdGNoZXMgKG1hdGNoZXMsIHBvaW50LCBx YykKKyAgICAgICBybF9pbnNlcnRfdGV4dCAocnApOworICAgICAgIHJsX2luc2VydF90ZXh0ICgi ICIpOworICAgICAgIGlmIChycCAhPSBtYXRjaGVzWzBdKQorLQlmcmVlIChycCk7CisrCXhmcmVl IChycCk7CisgICAgIH0KKyAgIHJsX2VuZF91bmRvX2dyb3VwICgpOworIH0KK0BAIC0xNjMyLDgg KzE3ODQsOCBAQCBfcmxfZnJlZV9tYXRjaF9saXN0IChtYXRjaGVzKQorICAgICByZXR1cm47Cisg CisgICBmb3IgKGkgPSAwOyBtYXRjaGVzW2ldOyBpKyspCistICAgIGZyZWUgKG1hdGNoZXNbaV0p OworLSAgZnJlZSAobWF0Y2hlcyk7CisrICAgIHhmcmVlIChtYXRjaGVzW2ldKTsKKysgIHhmcmVl IChtYXRjaGVzKTsKKyB9CisgCisgLyogQ29tcGxldGUgdGhlIHdvcmQgYXQgb3IgYmVmb3JlIHBv aW50LgorQEAgLTE2NTQsNiArMTgwNiw5IEBAIHJsX2NvbXBsZXRlX2ludGVybmFsICh3aGF0X3Rv X2RvKQorICAgaW50IHN0YXJ0LCBlbmQsIGRlbGltaXRlciwgZm91bmRfcXVvdGUsIGksIG5vbnRy aXZpYWxfbGNkOworICAgY2hhciAqdGV4dCwgKnNhdmVkX2xpbmVfYnVmZmVyOworICAgY2hhciBx dW90ZV9jaGFyOworKyNpZiAxCisrICBpbnQgdGxlbiwgbWxlbjsKKysjZW5kaWYKKyAKKyAgIFJM X1NFVFNUQVRFKFJMX1NUQVRFX0NPTVBMRVRJTkcpOworIAorQEAgLTE2ODEsNyArMTgzNiwxMSBA QCBybF9jb21wbGV0ZV9pbnRlcm5hbCAod2hhdF90b19kbykKKyAgIC8qIG5vbnRyaXZpYWxfbGNk IGlzIHNldCBpZiB0aGUgY29tbW9uIHByZWZpeCBhZGRzIHNvbWV0aGluZyB0byB0aGUgd29yZAor ICAgICAgYmVpbmcgY29tcGxldGVkLiAqLworICAgbm9udHJpdmlhbF9sY2QgPSBtYXRjaGVzICYm IHN0cmNtcCAodGV4dCwgbWF0Y2hlc1swXSkgIT0gMDsKKy0gIGZyZWUgKHRleHQpOworKyNpZiAx CisrICBpZiAod2hhdF90b19kbyA9PSAnIScgfHwgd2hhdF90b19kbyA9PSAnQCcpCisrICAgIHRs ZW4gPSBzdHJsZW4gKHRleHQpOworKyNlbmRpZgorKyAgeGZyZWUgKHRleHQpOworIAorICAgaWYg KG1hdGNoZXMgPT0gMCkKKyAgICAgeworQEAgLTE2ODksNiArMTg0OCw3IEBAIHJsX2NvbXBsZXRl X2ludGVybmFsICh3aGF0X3RvX2RvKQorICAgICAgIEZSRUUgKHNhdmVkX2xpbmVfYnVmZmVyKTsK KyAgICAgICBjb21wbGV0aW9uX2NoYW5nZWRfYnVmZmVyID0gMDsKKyAgICAgICBSTF9VTlNFVFNU QVRFKFJMX1NUQVRFX0NPTVBMRVRJTkcpOworKyAgICAgIF9ybF9yZXNldF9jb21wbGV0aW9uX3N0 YXRlICgpOworICAgICAgIHJldHVybiAoMCk7CisgICAgIH0KKyAKK0BAIC0xNzAzLDYgKzE4NjMs NyBAQCBybF9jb21wbGV0ZV9pbnRlcm5hbCAod2hhdF90b19kbykKKyAgICAgICBGUkVFIChzYXZl ZF9saW5lX2J1ZmZlcik7CisgICAgICAgY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9IDA7Cisg ICAgICAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9DT01QTEVUSU5HKTsKKysgICAgICBfcmxfcmVz ZXRfY29tcGxldGlvbl9zdGF0ZSAoKTsKKyAgICAgICByZXR1cm4gKDApOworICAgICB9CisgCitA QCAtMTcxMiw4ICsxODczLDI1IEBAIHJsX2NvbXBsZXRlX2ludGVybmFsICh3aGF0X3RvX2RvKQor ICAgICBjYXNlICchJzoKKyAgICAgY2FzZSAnQCc6CisgICAgICAgLyogSW5zZXJ0IHRoZSBmaXJz dCBtYXRjaCB3aXRoIHByb3BlciBxdW90aW5nLiAqLworKyNpZiAwCisgICAgICAgaWYgKCptYXRj aGVzWzBdKQorIAlpbnNlcnRfbWF0Y2ggKG1hdGNoZXNbMF0sIHN0YXJ0LCBtYXRjaGVzWzFdID8g TVVMVF9NQVRDSCA6IFNJTkdMRV9NQVRDSCwgJnF1b3RlX2NoYXIpOworKyNlbHNlCisrICAgICAg aWYgKHdoYXRfdG9fZG8gPT0gVEFCKQorKyAgICAgICAgeworKyAgICAgICAgICBpZiAoKm1hdGNo ZXNbMF0pCisrCSAgICBpbnNlcnRfbWF0Y2ggKG1hdGNoZXNbMF0sIHN0YXJ0LCBtYXRjaGVzWzFd ID8gTVVMVF9NQVRDSCA6IFNJTkdMRV9NQVRDSCwgJnF1b3RlX2NoYXIpOworKyAgICAgICAgfQor KyAgICAgIGVsc2UgaWYgKCptYXRjaGVzWzBdICYmIG1hdGNoZXNbMV0gPT0gMCkKKysJLyogc2hv dWxkIHdlIHBlcmZvcm0gdGhlIGNoZWNrIG9ubHkgaWYgdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNo ZXM/ICovCisrCWluc2VydF9tYXRjaCAobWF0Y2hlc1swXSwgc3RhcnQsIG1hdGNoZXNbMV0gPyBN VUxUX01BVENIIDogU0lOR0xFX01BVENILCAmcXVvdGVfY2hhcik7CisrICAgICAgZWxzZSBpZiAo Km1hdGNoZXNbMF0pCS8qIHdoYXRfdG9fZG8gIT0gVEFCICYmIG11bHRpcGxlIG1hdGNoZXMgKi8K KysJeworKwkgIG1sZW4gPSAqbWF0Y2hlc1swXSA/IHN0cmxlbiAobWF0Y2hlc1swXSkgOiAwOwor KwkgIGlmIChtbGVuID49IHRsZW4pCisrCSAgICBpbnNlcnRfbWF0Y2ggKG1hdGNoZXNbMF0sIHN0 YXJ0LCBtYXRjaGVzWzFdID8gTVVMVF9NQVRDSCA6IFNJTkdMRV9NQVRDSCwgJnF1b3RlX2NoYXIp OworKwl9CisrI2VuZGlmCisgCisgICAgICAgLyogSWYgdGhlcmUgYXJlIG1vcmUgbWF0Y2hlcywg cmluZyB0aGUgYmVsbCB0byBpbmRpY2F0ZS4KKyAJIElmIHdlIGFyZSBpbiB2aSBtb2RlLCBQb3Np eC4yIHNheXMgdG8gbm90IHJpbmcgdGhlIGJlbGwuCitAQCAtMTc1MywxMCArMTkzMSwxMSBAQCBy bF9jb21wbGV0ZV9pbnRlcm5hbCAod2hhdF90b19kbykKKyAgICAgICBicmVhazsKKyAKKyAgICAg ZGVmYXVsdDoKKy0gICAgICBmcHJpbnRmIChzdGRlcnIsICJcclxucmVhZGxpbmU6IGJhZCB2YWx1 ZSAlZCBmb3Igd2hhdF90b19kbyBpbiBybF9jb21wbGV0ZVxuIiwgd2hhdF90b19kbyk7CisrICAg ICAgX3JsX3R0eW1zZyAoImJhZCB2YWx1ZSAlZCBmb3Igd2hhdF90b19kbyBpbiBybF9jb21wbGV0 ZSIsIHdoYXRfdG9fZG8pOworICAgICAgIHJsX2RpbmcgKCk7CisgICAgICAgRlJFRSAoc2F2ZWRf bGluZV9idWZmZXIpOworICAgICAgIFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfQ09NUExFVElORyk7 CisrICAgICAgX3JsX3Jlc2V0X2NvbXBsZXRpb25fc3RhdGUgKCk7CisgICAgICAgcmV0dXJuIDE7 CisgICAgIH0KKyAKK0BAIC0xNzY2LDEwICsxOTQ1LDExIEBAIHJsX2NvbXBsZXRlX2ludGVybmFs ICh3aGF0X3RvX2RvKQorICAgaWYgKHNhdmVkX2xpbmVfYnVmZmVyKQorICAgICB7CisgICAgICAg Y29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9IHN0cmNtcCAocmxfbGluZV9idWZmZXIsIHNhdmVk X2xpbmVfYnVmZmVyKSAhPSAwOworLSAgICAgIGZyZWUgKHNhdmVkX2xpbmVfYnVmZmVyKTsKKysg ICAgICB4ZnJlZSAoc2F2ZWRfbGluZV9idWZmZXIpOworICAgICB9CisgCisgICBSTF9VTlNFVFNU QVRFKFJMX1NUQVRFX0NPTVBMRVRJTkcpOworKyAgX3JsX3Jlc2V0X2NvbXBsZXRpb25fc3RhdGUg KCk7CisgICByZXR1cm4gMDsKKyB9CisgCitAQCAtMTgxMyw2ICsxOTkzLDcgQEAgcmxfY29tcGxl dGlvbl9tYXRjaGVzICh0ZXh0LCBlbnRyeV9mdW5jdGlvbikKKyAgIG1hdGNoX2xpc3QgPSAoY2hh ciAqKil4bWFsbG9jICgobWF0Y2hfbGlzdF9zaXplICsgMSkgKiBzaXplb2YgKGNoYXIgKikpOwor ICAgbWF0Y2hfbGlzdFsxXSA9IChjaGFyICopTlVMTDsKKyAKKysgIF9ybF9pbnRlcnJ1cHRfaW1t ZWRpYXRlbHkrKzsKKyAgIHdoaWxlIChzdHJpbmcgPSAoKmVudHJ5X2Z1bmN0aW9uKSAodGV4dCwg bWF0Y2hlcykpCisgICAgIHsKKyAgICAgICBpZiAobWF0Y2hlcyArIDEgPT0gbWF0Y2hfbGlzdF9z aXplKQorQEAgLTE4MjIsNiArMjAwMyw4IEBAIHJsX2NvbXBsZXRpb25fbWF0Y2hlcyAodGV4dCwg ZW50cnlfZnVuY3Rpb24pCisgICAgICAgbWF0Y2hfbGlzdFsrK21hdGNoZXNdID0gc3RyaW5nOwor ICAgICAgIG1hdGNoX2xpc3RbbWF0Y2hlcyArIDFdID0gKGNoYXIgKilOVUxMOworICAgICB9Cisr ICBpZiAoX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSA+IDApCisrICAgIF9ybF9pbnRlcnJ1cHRf aW1tZWRpYXRlbHktLTsKKyAKKyAgIC8qIElmIHRoZXJlIHdlcmUgYW55IG1hdGNoZXMsIHRoZW4g bG9vayB0aHJvdWdoIHRoZW0gZmluZGluZyBvdXQgdGhlCisgICAgICBsb3dlc3QgY29tbW9uIGRl bm9taW5hdG9yLiAgVGhhdCB0aGVuIGJlY29tZXMgbWF0Y2hfbGlzdFswXS4gKi8KK0BAIC0xODI5 LDcgKzIwMTIsNyBAQCBybF9jb21wbGV0aW9uX21hdGNoZXMgKHRleHQsIGVudHJ5X2Z1bmN0aW9u KQorICAgICBjb21wdXRlX2xjZF9vZl9tYXRjaGVzIChtYXRjaF9saXN0LCBtYXRjaGVzLCB0ZXh0 KTsKKyAgIGVsc2UJCQkJLyogVGhlcmUgd2VyZSBubyBtYXRjaGVzLiAqLworICAgICB7CistICAg ICAgZnJlZSAobWF0Y2hfbGlzdCk7CisrICAgICAgeGZyZWUgKG1hdGNoX2xpc3QpOworICAgICAg IG1hdGNoX2xpc3QgPSAoY2hhciAqKilOVUxMOworICAgICB9CisgICByZXR1cm4gKG1hdGNoX2xp c3QpOworQEAgLTE4OTUsNiArMjA3OCw2MiBAQCBybF91c2VybmFtZV9jb21wbGV0aW9uX2Z1bmN0 aW9uICh0ZXh0LCBzdGF0ZSkKKyAjZW5kaWYgLyogIV9fV0lOMzJfXyAmJiAhX19PUEVOTlQgKi8K KyB9CisgCisrLyogUmV0dXJuIG5vbi16ZXJvIGlmIENPTlZGTiBtYXRjaGVzIEZJTEVOQU1FIHVw IHRvIHRoZSBsZW5ndGggb2YgRklMRU5BTUUKKysgICAoRklMRU5BTUVfTEVOKS4gIElmIF9ybF9j b21wbGV0aW9uX2Nhc2VfZm9sZCBpcyBzZXQsIGNvbXBhcmUgd2l0aG91dAorKyAgIHJlZ2FyZCB0 byB0aGUgYWxwaGFiZXRpYyBjYXNlIG9mIGNoYXJhY3RlcnMuICBDT05WRk4gaXMgdGhlIHBvc3Np Ymx5LQorKyAgIGNvbnZlcnRlZCBkaXJlY3RvcnkgZW50cnk7IEZJTEVOQU1FIGlzIHdoYXQgdGhl IHVzZXIgdHlwZWQuICovCisrc3RhdGljIGludAorK2NvbXBsZXRlX2ZuY21wIChjb252Zm4sIGNv bnZsZW4sIGZpbGVuYW1lLCBmaWxlbmFtZV9sZW4pCisrICAgICBjb25zdCBjaGFyICpjb252Zm47 CisrICAgICBpbnQgY29udmxlbjsKKysgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOworKyAgICAg aW50IGZpbGVuYW1lX2xlbjsKKyt7CisrICByZWdpc3RlciBjaGFyICpzMSwgKnMyOworKyAgaW50 IGQsIGxlbjsKKysKKysgIC8qIE90aGVyd2lzZSwgaWYgdGhlc2UgbWF0Y2ggdXAgdG8gdGhlIGxl bmd0aCBvZiBmaWxlbmFtZSwgdGhlbgorKyAgICAgaXQgaXMgYSBtYXRjaC4gKi8KKysgIGlmIChf cmxfY29tcGxldGlvbl9jYXNlX2ZvbGQgJiYgX3JsX2NvbXBsZXRpb25fY2FzZV9tYXApCisrICAg IHsKKysgICAgICAvKiBDYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24gdHJlYXRpbmcgXyBhbmQg LSBhcyBlcXVpdmFsZW50ICovCisrICAgICAgaWYgKGZpbGVuYW1lX2xlbiA9PSAwKQorKwlyZXR1 cm4gMTsKKysgICAgICBpZiAoY29udmxlbiA8IGZpbGVuYW1lX2xlbikKKysJcmV0dXJuIDA7Cisr ICAgICAgczEgPSAoY2hhciAqKWNvbnZmbjsKKysgICAgICBzMiA9IChjaGFyICopZmlsZW5hbWU7 CisrICAgICAgbGVuID0gZmlsZW5hbWVfbGVuOworKyAgICAgIGRvCisrCXsKKysJICBkID0gX3Js X3RvX2xvd2VyICgqczEpIC0gX3JsX3RvX2xvd2VyICgqczIpOworKwkgIC8qICpzMSA9PSBbLV9d ICYmICpzMiA9PSBbLV9dICovCisrCSAgaWYgKCgqczEgPT0gJy0nIHx8ICpzMSA9PSAnXycpICYm ICgqczIgPT0gJy0nIHx8ICpzMiA9PSAnXycpKQorKwkgICAgZCA9IDA7CisrCSAgaWYgKGQgIT0g MCkKKysJICAgIHJldHVybiAwOworKwkgIHMxKys7IHMyKys7CS8qIGFscmVhZHkgY2hlY2tlZCBj b252bGVuID49IGZpbGVuYW1lX2xlbiAqLworKwl9CisrICAgICAgd2hpbGUgKC0tbGVuICE9IDAp OworKyAgICAgIHJldHVybiAxOworKyAgICB9CisrICBlbHNlIGlmIChfcmxfY29tcGxldGlvbl9j YXNlX2ZvbGQpCisrICAgIHsKKysgICAgICBpZiAoKF9ybF90b19sb3dlciAoY29udmZuWzBdKSA9 PSBfcmxfdG9fbG93ZXIgKGZpbGVuYW1lWzBdKSkgJiYKKysJICAoY29udmxlbiA+PSBmaWxlbmFt ZV9sZW4pICYmCisrCSAgKF9ybF9zdHJuaWNtcCAoZmlsZW5hbWUsIGNvbnZmbiwgZmlsZW5hbWVf bGVuKSA9PSAwKSkKKysJcmV0dXJuIDE7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAg IGlmICgoY29udmZuWzBdID09IGZpbGVuYW1lWzBdKSAmJgorKwkgIChjb252bGVuID49IGZpbGVu YW1lX2xlbikgJiYKKysJICAoc3RybmNtcCAoZmlsZW5hbWUsIGNvbnZmbiwgZmlsZW5hbWVfbGVu KSA9PSAwKSkKKysJcmV0dXJuIDE7CisrICAgIH0KKysgIHJldHVybiAwOworK30KKysKKyAvKiBP a2F5LCBub3cgd2Ugd3JpdGUgdGhlIGVudHJ5X2Z1bmN0aW9uIGZvciBmaWxlbmFtZSBjb21wbGV0 aW9uLiAgSW4gdGhlCisgICAgZ2VuZXJhbCBjYXNlLiAgTm90ZSB0aGF0IGNvbXBsZXRpb24gaW4g dGhlIHNoZWxsIGlzIGEgbGl0dGxlIGRpZmZlcmVudAorICAgIGJlY2F1c2Ugb2YgYWxsIHRoZSBw YXRobmFtZXMgdGhhdCBtdXN0IGJlIGZvbGxvd2VkIHdoZW4gbG9va2luZyB1cCB0aGUKK0BAIC0x OTA5LDggKzIxNDgsOCBAQCBybF9maWxlbmFtZV9jb21wbGV0aW9uX2Z1bmN0aW9uICh0ZXh0LCBz dGF0ZSkKKyAgIHN0YXRpYyBjaGFyICpkaXJuYW1lID0gKGNoYXIgKilOVUxMOworICAgc3RhdGlj IGNoYXIgKnVzZXJzX2Rpcm5hbWUgPSAoY2hhciAqKU5VTEw7CisgICBzdGF0aWMgaW50IGZpbGVu YW1lX2xlbjsKKy0gIGNoYXIgKnRlbXA7CistICBpbnQgZGlybGVuOworKyAgY2hhciAqdGVtcCwg KmRlbnRyeSwgKmNvbnZmbjsKKysgIGludCBkaXJsZW4sIGRlbnRsZW4sIGNvbnZsZW47CisgICBz dHJ1Y3QgZGlyZW50ICplbnRyeTsKKyAKKyAgIC8qIElmIHdlIGRvbid0IGhhdmUgYW55IHN0YXRl LCB0aGVuIGRvIHNvbWUgaW5pdGlhbGl6YXRpb24uICovCitAQCAtMTk2MSwyNiArMjIwMCw1MiBA QCBybF9maWxlbmFtZV9jb21wbGV0aW9uX2Z1bmN0aW9uICh0ZXh0LCBzdGF0ZSkKKyAKKyAgICAg ICAvKiBXZSBhcmVuJ3QgZG9uZSB5ZXQuICBXZSBhbHNvIHN1cHBvcnQgdGhlICJ+dXNlciIgc3lu dGF4LiAqLworIAorLSAgICAgIC8qIFNhdmUgdGhlIHZlcnNpb24gb2YgdGhlIGRpcmVjdG9yeSB0 aGF0IHRoZSB1c2VyIHR5cGVkLiAqLworLSAgICAgIHVzZXJzX2Rpcm5hbWUgPSBzYXZlc3RyaW5n IChkaXJuYW1lKTsKKysgICAgICAvKiBTYXZlIHRoZSB2ZXJzaW9uIG9mIHRoZSBkaXJlY3Rvcnkg dGhhdCB0aGUgdXNlciB0eXBlZCwgZGVxdW90aW5nCisrCSBpdCBpZiBuZWNlc3NhcnkuICovCisr ICAgICAgaWYgKHJsX2NvbXBsZXRpb25fZm91bmRfcXVvdGUgJiYgcmxfZmlsZW5hbWVfZGVxdW90 aW5nX2Z1bmN0aW9uKQorKwl1c2Vyc19kaXJuYW1lID0gKCpybF9maWxlbmFtZV9kZXF1b3Rpbmdf ZnVuY3Rpb24pIChkaXJuYW1lLCBybF9jb21wbGV0aW9uX3F1b3RlX2NoYXJhY3Rlcik7CisrICAg ICAgZWxzZQorKwl1c2Vyc19kaXJuYW1lID0gc2F2ZXN0cmluZyAoZGlybmFtZSk7CisgCisgICAg ICAgaWYgKCpkaXJuYW1lID09ICd+JykKKyAJeworIAkgIHRlbXAgPSB0aWxkZV9leHBhbmQgKGRp cm5hbWUpOworLQkgIGZyZWUgKGRpcm5hbWUpOworKwkgIHhmcmVlIChkaXJuYW1lKTsKKyAJICBk aXJuYW1lID0gdGVtcDsKKyAJfQorIAorKyAgICAgIC8qIFdlIGhhdmUgc2F2ZWQgdGhlIHBvc3Np Ymx5LWRlcXVvdGVkIHZlcnNpb24gb2YgdGhlIGRpcmVjdG9yeSBuYW1lCisrCSB0aGUgdXNlciB0 eXBlZC4gIE5vdyB0cmFuc2Zvcm0gdGhlIGRpcmVjdG9yeSBuYW1lIHdlJ3JlIGdvaW5nIHRvCisr CSBwYXNzIHRvIG9wZW5kaXIoMikuICBUaGUgZGlyZWN0b3J5IHJld3JpdGUgaG9vayBtb2RpZmll cyBvbmx5IHRoZQorKwkgZGlyZWN0b3J5IG5hbWU7IHRoZSBkaXJlY3RvcnkgY29tcGxldGlvbiBo b29rIG1vZGlmaWVzIGJvdGggdGhlCisrCSBkaXJlY3RvcnkgbmFtZSBwYXNzZWQgdG8gb3BlbmRp cigyKSBhbmQgdGhlIHZlcnNpb24gdGhlIHVzZXIKKysJIHR5cGVkLiAgQm90aCB0aGUgZGlyZWN0 b3J5IGNvbXBsZXRpb24gYW5kIHJld3JpdGUgaG9va3Mgc2hvdWxkIHBlcmZvcm0KKysJIGFueSBu ZWNlc3NhcnkgZGVxdW90aW5nLiAgVGhlIGhvb2sgZnVuY3Rpb25zIHJldHVybiAxIGlmIHRoZXkg bW9kaWZ5CisrCSB0aGUgZGlyZWN0b3J5IG5hbWUgYXJndW1lbnQuICBJZiBlaXRoZXIgaG9vayBy ZXR1cm5zIDAsIGl0IHNob3VsZAorKwkgbm90IG1vZGlmeSB0aGUgZGlyZWN0b3J5IG5hbWUgcG9p bnRlciBwYXNzZWQgYXMgYW4gYXJndW1lbnQuICovCisgICAgICAgaWYgKHJsX2RpcmVjdG9yeV9y ZXdyaXRlX2hvb2spCisgCSgqcmxfZGlyZWN0b3J5X3Jld3JpdGVfaG9vaykgKCZkaXJuYW1lKTsK Ky0KKy0gICAgICBpZiAocmxfZGlyZWN0b3J5X2NvbXBsZXRpb25faG9vayAmJiAoKnJsX2RpcmVj dG9yeV9jb21wbGV0aW9uX2hvb2spICgmZGlybmFtZSkpCisrICAgICAgZWxzZSBpZiAocmxfZGly ZWN0b3J5X2NvbXBsZXRpb25faG9vayAmJiAoKnJsX2RpcmVjdG9yeV9jb21wbGV0aW9uX2hvb2sp ICgmZGlybmFtZSkpCisgCXsKKy0JICBmcmVlICh1c2Vyc19kaXJuYW1lKTsKKysJICB4ZnJlZSAo dXNlcnNfZGlybmFtZSk7CisgCSAgdXNlcnNfZGlybmFtZSA9IHNhdmVzdHJpbmcgKGRpcm5hbWUp OworIAl9CistCisrICAgICAgZWxzZSBpZiAocmxfY29tcGxldGlvbl9mb3VuZF9xdW90ZSAmJiBy bF9maWxlbmFtZV9kZXF1b3RpbmdfZnVuY3Rpb24pCisrCXsKKysJICAvKiBkZWxldGUgc2luZ2xl IGFuZCBkb3VibGUgcXVvdGVzICovCisrCSAgeGZyZWUgKGRpcm5hbWUpOworKwkgIGRpcm5hbWUg PSBzYXZlc3RyaW5nICh1c2Vyc19kaXJuYW1lKTsKKysJfQorICAgICAgIGRpcmVjdG9yeSA9IG9w ZW5kaXIgKGRpcm5hbWUpOworKworKyAgICAgIC8qIE5vdyBkZXF1b3RlIGEgbm9uLW51bGwgZmls ZW5hbWUuICovCisrICAgICAgaWYgKGZpbGVuYW1lICYmICpmaWxlbmFtZSAmJiBybF9jb21wbGV0 aW9uX2ZvdW5kX3F1b3RlICYmIHJsX2ZpbGVuYW1lX2RlcXVvdGluZ19mdW5jdGlvbikKKysJewor KwkgIC8qIGRlbGV0ZSBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZXMgKi8KKysJICB0ZW1wID0gKCpy bF9maWxlbmFtZV9kZXF1b3RpbmdfZnVuY3Rpb24pIChmaWxlbmFtZSwgcmxfY29tcGxldGlvbl9x dW90ZV9jaGFyYWN0ZXIpOworKwkgIHhmcmVlIChmaWxlbmFtZSk7CisrCSAgZmlsZW5hbWUgPSB0 ZW1wOworKwl9CisgICAgICAgZmlsZW5hbWVfbGVuID0gc3RybGVuIChmaWxlbmFtZSk7CisgCisg ICAgICAgcmxfZmlsZW5hbWVfY29tcGxldGlvbl9kZXNpcmVkID0gMTsKK0BAIC0xOTk3LDM3ICsy MjYyLDMxIEBAIHJsX2ZpbGVuYW1lX2NvbXBsZXRpb25fZnVuY3Rpb24gKHRleHQsIHN0YXRlKQor ICAgZW50cnkgPSAoc3RydWN0IGRpcmVudCAqKU5VTEw7CisgICB3aGlsZSAoZGlyZWN0b3J5ICYm IChlbnRyeSA9IHJlYWRkaXIgKGRpcmVjdG9yeSkpKQorICAgICB7CisrICAgICAgY29udmZuID0g ZGVudHJ5ID0gZW50cnktPmRfbmFtZTsKKysgICAgICBjb252bGVuID0gZGVudGxlbiA9IERfTkFN TEVOIChlbnRyeSk7CisrCisrICAgICAgaWYgKHJsX2ZpbGVuYW1lX3Jld3JpdGVfaG9vaykKKysJ eworKwkgIGNvbnZmbiA9ICgqcmxfZmlsZW5hbWVfcmV3cml0ZV9ob29rKSAoZGVudHJ5LCBkZW50 bGVuKTsKKysJICBjb252bGVuID0gKGNvbnZmbiA9PSBkZW50cnkpID8gZGVudGxlbiA6IHN0cmxl biAoY29udmZuKTsKKysJfQorKworICAgICAgIC8qIFNwZWNpYWwgY2FzZSBmb3Igbm8gZmlsZW5h bWUuICBJZiB0aGUgdXNlciBoYXMgZGlzYWJsZWQgdGhlCisgICAgICAgICAgYG1hdGNoLWhpZGRl bi1maWxlcycgdmFyaWFibGUsIHNraXAgZmlsZW5hbWVzIGJlZ2lubmluZyB3aXRoIGAuJy4KKyAJ IEFsbCBvdGhlciBlbnRyaWVzIGV4Y2VwdCAiLiIgYW5kICIuLiIgbWF0Y2guICovCisgICAgICAg aWYgKGZpbGVuYW1lX2xlbiA9PSAwKQorIAl7CistCSAgaWYgKF9ybF9tYXRjaF9oaWRkZW5fZmls ZXMgPT0gMCAmJiBISURERU5fRklMRSAoZW50cnktPmRfbmFtZSkpCisrCSAgaWYgKF9ybF9tYXRj aF9oaWRkZW5fZmlsZXMgPT0gMCAmJiBISURERU5fRklMRSAoY29udmZuKSkKKyAJICAgIGNvbnRp bnVlOworIAorLQkgIGlmIChlbnRyeS0+ZF9uYW1lWzBdICE9ICcuJyB8fAorLQkgICAgICAgKGVu dHJ5LT5kX25hbWVbMV0gJiYKKy0JCSAoZW50cnktPmRfbmFtZVsxXSAhPSAnLicgfHwgZW50cnkt PmRfbmFtZVsyXSkpKQorKwkgIGlmIChjb252Zm5bMF0gIT0gJy4nIHx8CisrCSAgICAgICAoY29u dmZuWzFdICYmIChjb252Zm5bMV0gIT0gJy4nIHx8IGNvbnZmblsyXSkpKQorIAkgICAgYnJlYWs7 CisgCX0KKyAgICAgICBlbHNlCisgCXsKKy0JICAvKiBPdGhlcndpc2UsIGlmIHRoZXNlIG1hdGNo IHVwIHRvIHRoZSBsZW5ndGggb2YgZmlsZW5hbWUsIHRoZW4KKy0JICAgICBpdCBpcyBhIG1hdGNo LiAqLworLQkgIGlmIChfcmxfY29tcGxldGlvbl9jYXNlX2ZvbGQpCistCSAgICB7CistCSAgICAg IGlmICgoX3JsX3RvX2xvd2VyIChlbnRyeS0+ZF9uYW1lWzBdKSA9PSBfcmxfdG9fbG93ZXIgKGZp bGVuYW1lWzBdKSkgJiYKKy0JCSAgKCgoaW50KURfTkFNTEVOIChlbnRyeSkpID49IGZpbGVuYW1l X2xlbikgJiYKKy0JCSAgKF9ybF9zdHJuaWNtcCAoZmlsZW5hbWUsIGVudHJ5LT5kX25hbWUsIGZp bGVuYW1lX2xlbikgPT0gMCkpCistCQlicmVhazsKKy0JICAgIH0KKy0JICBlbHNlCistCSAgICB7 CistCSAgICAgIGlmICgoZW50cnktPmRfbmFtZVswXSA9PSBmaWxlbmFtZVswXSkgJiYKKy0JCSAg KCgoaW50KURfTkFNTEVOIChlbnRyeSkpID49IGZpbGVuYW1lX2xlbikgJiYKKy0JCSAgKHN0cm5j bXAgKGZpbGVuYW1lLCBlbnRyeS0+ZF9uYW1lLCBmaWxlbmFtZV9sZW4pID09IDApKQorLQkJYnJl YWs7CistCSAgICB9CisrCSAgaWYgKGNvbXBsZXRlX2ZuY21wIChjb252Zm4sIGNvbnZsZW4sIGZp bGVuYW1lLCBmaWxlbmFtZV9sZW4pKQorKwkgICAgYnJlYWs7CisgCX0KKyAgICAgfQorIAorQEAg LTIwNDAsMTcgKzIyOTksMTcgQEAgcmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5jdGlvbiAodGV4 dCwgc3RhdGUpCisgCX0KKyAgICAgICBpZiAoZGlybmFtZSkKKyAJeworLQkgIGZyZWUgKGRpcm5h bWUpOworKwkgIHhmcmVlIChkaXJuYW1lKTsKKyAJICBkaXJuYW1lID0gKGNoYXIgKilOVUxMOwor IAl9CisgICAgICAgaWYgKGZpbGVuYW1lKQorIAl7CistCSAgZnJlZSAoZmlsZW5hbWUpOworKwkg IHhmcmVlIChmaWxlbmFtZSk7CisgCSAgZmlsZW5hbWUgPSAoY2hhciAqKU5VTEw7CisgCX0KKyAg ICAgICBpZiAodXNlcnNfZGlybmFtZSkKKyAJeworLQkgIGZyZWUgKHVzZXJzX2Rpcm5hbWUpOwor KwkgIHhmcmVlICh1c2Vyc19kaXJuYW1lKTsKKyAJICB1c2Vyc19kaXJuYW1lID0gKGNoYXIgKilO VUxMOworIAl9CisgCitAQCAtMjA4NCwyNyArMjM0MywzMCBAQCBybF9maWxlbmFtZV9jb21wbGV0 aW9uX2Z1bmN0aW9uICh0ZXh0LCBzdGF0ZSkKKyAJCXRlbXBbZGlybGVuKytdID0gJy8nOworIAkg ICAgfQorIAorLQkgIHN0cmNweSAodGVtcCArIGRpcmxlbiwgZW50cnktPmRfbmFtZSk7CisrCSAg c3RyY3B5ICh0ZW1wICsgZGlybGVuLCBjb252Zm4pOworIAl9CisgICAgICAgZWxzZQorLQl0ZW1w ID0gc2F2ZXN0cmluZyAoZW50cnktPmRfbmFtZSk7CisrCXRlbXAgPSBzYXZlc3RyaW5nIChjb252 Zm4pOworKworKyAgICAgIGlmIChjb252Zm4gIT0gZGVudHJ5KQorKwl4ZnJlZSAoY29udmZuKTsK KyAKKyAgICAgICByZXR1cm4gKHRlbXApOworICAgICB9CisgfQorIAorIC8qIEFuIGluaXRpYWwg aW1wbGVtZW50YXRpb24gb2YgYSBtZW51IGNvbXBsZXRpb24gZnVuY3Rpb24gYSBsYSB0Y3NoLiAg VGhlCistICAgZmlyc3QgdGltZSAoaWYgdGhlIGxhc3QgcmVhZGxpbmUgY29tbWFuZCB3YXMgbm90 IHJsX21lbnVfY29tcGxldGUpLCB3ZQorKyAgIGZpcnN0IHRpbWUgKGlmIHRoZSBsYXN0IHJlYWRs aW5lIGNvbW1hbmQgd2FzIG5vdCBybF9vbGRfbWVudV9jb21wbGV0ZSksIHdlCisgICAgZ2VuZXJh dGUgdGhlIGxpc3Qgb2YgbWF0Y2hlcy4gIFRoaXMgY29kZSBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhl IGNvZGUgaW4KKyAgICBybF9jb21wbGV0ZV9pbnRlcm5hbCAtLSB0aGVyZSBzaG91bGQgYmUgYSB3 YXkgdG8gY29tYmluZSB0aGUgdHdvLiAgVGhlbiwKKyAgICBmb3IgZWFjaCBpdGVtIGluIHRoZSBs aXN0IG9mIG1hdGNoZXMsIHdlIGluc2VydCB0aGUgbWF0Y2ggaW4gYW4gdW5kb2FibGUKKyAgICBm YXNoaW9uLCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBjaGFyYWN0ZXIgYXBwZW5kZWQgKHRoaXMgaGFw cGVucyBvbiB0aGUKKy0gICBzZWNvbmQgYW5kIHN1YnNlcXVlbnQgY29uc2VjdXRpdmUgY2FsbHMg dG8gcmxfbWVudV9jb21wbGV0ZSkuICBXaGVuIHdlCisrICAgc2Vjb25kIGFuZCBzdWJzZXF1ZW50 IGNvbnNlY3V0aXZlIGNhbGxzIHRvIHJsX29sZF9tZW51X2NvbXBsZXRlKS4gIFdoZW4gd2UKKyAg ICBoaXQgdGhlIGVuZCBvZiB0aGUgbWF0Y2ggbGlzdCwgd2UgcmVzdG9yZSB0aGUgb3JpZ2luYWwg dW5tYXRjaGVkIHRleHQsCisgICAgcmluZyB0aGUgYmVsbCwgYW5kIHJlc2V0IHRoZSBjb3VudGVy IHRvIHplcm8uICovCisgaW50CistcmxfbWVudV9jb21wbGV0ZSAoY291bnQsIGlnbm9yZSkKKy0g ICAgIGludCBjb3VudCwgaWdub3JlOworK3JsX29sZF9tZW51X2NvbXBsZXRlIChjb3VudCwgaW52 b2tpbmdfa2V5KQorKyAgICAgaW50IGNvdW50LCBpbnZva2luZ19rZXk7CisgeworICAgcmxfY29t cGVudHJ5X2Z1bmNfdCAqb3VyX2Z1bmM7CisgICBpbnQgbWF0Y2hpbmdfZmlsZW5hbWVzLCBmb3Vu ZF9xdW90ZTsKK0BAIC0yMTE5LDcgKzIzODEsNyBAQCBybF9tZW51X2NvbXBsZXRlIChjb3VudCwg aWdub3JlKQorIAorICAgLyogVGhlIGZpcnN0IHRpbWUgdGhyb3VnaCwgd2UgZ2VuZXJhdGUgdGhl IGxpc3Qgb2YgbWF0Y2hlcyBhbmQgc2V0IHRoaW5ncworICAgICAgdXAgdG8gaW5zZXJ0IHRoZW0u ICovCistICBpZiAocmxfbGFzdF9mdW5jICE9IHJsX21lbnVfY29tcGxldGUpCisrICBpZiAocmxf bGFzdF9mdW5jICE9IHJsX29sZF9tZW51X2NvbXBsZXRlKQorICAgICB7CisgICAgICAgLyogQ2xl YW4gdXAgZnJvbSBwcmV2aW91cyBjYWxsLCBpZiBhbnkuICovCisgICAgICAgRlJFRSAob3JpZ190 ZXh0KTsKK0BAIC0yMTI5LDEwICsyMzkxLDE2IEBAIHJsX21lbnVfY29tcGxldGUgKGNvdW50LCBp Z25vcmUpCisgICAgICAgbWF0Y2hfbGlzdF9pbmRleCA9IG1hdGNoX2xpc3Rfc2l6ZSA9IDA7Cisg ICAgICAgbWF0Y2hlcyA9IChjaGFyICoqKU5VTEw7CisgCisrICAgICAgcmxfY29tcGxldGlvbl9p bnZva2luZ19rZXkgPSBpbnZva2luZ19rZXk7CisrCisrICAgICAgUkxfU0VUU1RBVEUoUkxfU1RB VEVfQ09NUExFVElORyk7CisrCisgICAgICAgLyogT25seSB0aGUgY29tcGxldGlvbiBlbnRyeSBm dW5jdGlvbiBjYW4gY2hhbmdlIHRoZXNlLiAqLworICAgICAgIHNldF9jb21wbGV0aW9uX2RlZmF1 bHRzICgnJScpOworIAorLSAgICAgIG91cl9mdW5jID0gcmxfY29tcGxldGlvbl9lbnRyeV9mdW5j dGlvbgorKyAgICAgIG91cl9mdW5jID0gcmxfbWVudV9jb21wbGV0aW9uX2VudHJ5X2Z1bmN0aW9u OworKyAgICAgIGlmIChvdXJfZnVuYyA9PSAwKQorKwlvdXJfZnVuYyA9IHJsX2NvbXBsZXRpb25f ZW50cnlfZnVuY3Rpb24KKyAJCQk/IHJsX2NvbXBsZXRpb25fZW50cnlfZnVuY3Rpb24KKyAJCQk6 IHJsX2ZpbGVuYW1lX2NvbXBsZXRpb25fZnVuY3Rpb247CisgCitAQCAtMjE2MCwxOSArMjQyOCwy NSBAQCBybF9tZW51X2NvbXBsZXRlIChjb3VudCwgaWdub3JlKQorIAorICAgICAgIGlmIChtYXRj aGVzID09IDAgfHwgcG9zdHByb2Nlc3NfbWF0Y2hlcyAoJm1hdGNoZXMsIG1hdGNoaW5nX2ZpbGVu YW1lcykgPT0gMCkKKyAJeworLSAgICAJICBybF9kaW5nICgpOworKwkgIHJsX2RpbmcgKCk7Cisg CSAgRlJFRSAobWF0Y2hlcyk7CisgCSAgbWF0Y2hlcyA9IChjaGFyICoqKTA7CisgCSAgRlJFRSAo b3JpZ190ZXh0KTsKKyAJICBvcmlnX3RleHQgPSAoY2hhciAqKTA7CistICAgIAkgIGNvbXBsZXRp b25fY2hhbmdlZF9idWZmZXIgPSAwOworLSAgICAgICAgICByZXR1cm4gKDApOworKwkgIGNvbXBs ZXRpb25fY2hhbmdlZF9idWZmZXIgPSAwOworKwkgIFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfQ09N UExFVElORyk7CisrCSAgcmV0dXJuICgwKTsKKyAJfQorIAorKyAgICAgIFJMX1VOU0VUU1RBVEUo UkxfU1RBVEVfQ09NUExFVElORyk7CisrCisgICAgICAgZm9yIChtYXRjaF9saXN0X3NpemUgPSAw OyBtYXRjaGVzW21hdGNoX2xpc3Rfc2l6ZV07IG1hdGNoX2xpc3Rfc2l6ZSsrKQorICAgICAgICAg OworICAgICAgIC8qIG1hdGNoZXNbMF0gaXMgbGNkIGlmIG1hdGNoX2xpc3Rfc2l6ZSA+IDEsIGJ1 dCB0aGUgY2lyY3VsYXIgYnVmZmVyCisgCSBjb2RlIGJlbG93IHNob3VsZCB0YWtlIGNhcmUgb2Yg aXQuICovCisrCisrICAgICAgaWYgKG1hdGNoX2xpc3Rfc2l6ZSA+IDEgJiYgX3JsX2NvbXBsZXRl X3Nob3dfYWxsKQorKwlkaXNwbGF5X21hdGNoZXMgKG1hdGNoZXMpOworICAgICB9CisgCisgICAv KiBOb3cgd2UgaGF2ZSB0aGUgbGlzdCBvZiBtYXRjaGVzLiAgUmVwbGFjZSB0aGUgdGV4dCBiZXR3 ZWVuCitAQCAtMjE5MCw3ICsyNDY0LDEwIEBAIHJsX21lbnVfY29tcGxldGUgKGNvdW50LCBpZ25v cmUpCisgCisgICBtYXRjaF9saXN0X2luZGV4ICs9IGNvdW50OworICAgaWYgKG1hdGNoX2xpc3Rf aW5kZXggPCAwKQorLSAgICBtYXRjaF9saXN0X2luZGV4ICs9IG1hdGNoX2xpc3Rfc2l6ZTsKKysg ICAgeworKyAgICAgIHdoaWxlIChtYXRjaF9saXN0X2luZGV4IDwgMCkKKysJbWF0Y2hfbGlzdF9p bmRleCArPSBtYXRjaF9saXN0X3NpemU7CisrICAgIH0KKyAgIGVsc2UKKyAgICAgbWF0Y2hfbGlz dF9pbmRleCAlPSBtYXRjaF9saXN0X3NpemU7CisgCitAQCAtMjIwOSwzICsyNDg2LDE4MCBAQCBy bF9tZW51X2NvbXBsZXRlIChjb3VudCwgaWdub3JlKQorICAgY29tcGxldGlvbl9jaGFuZ2VkX2J1 ZmZlciA9IDE7CisgICByZXR1cm4gKDApOworIH0KKysKKytpbnQKKytybF9tZW51X2NvbXBsZXRl IChjb3VudCwgaWdub3JlKQorKyAgICAgaW50IGNvdW50LCBpZ25vcmU7CisreworKyAgcmxfY29t cGVudHJ5X2Z1bmNfdCAqb3VyX2Z1bmM7CisrICBpbnQgbWF0Y2hpbmdfZmlsZW5hbWVzLCBmb3Vu ZF9xdW90ZTsKKysKKysgIHN0YXRpYyBjaGFyICpvcmlnX3RleHQ7CisrICBzdGF0aWMgY2hhciAq Km1hdGNoZXMgPSAoY2hhciAqKikwOworKyAgc3RhdGljIGludCBtYXRjaF9saXN0X2luZGV4ID0g MDsKKysgIHN0YXRpYyBpbnQgbWF0Y2hfbGlzdF9zaXplID0gMDsKKysgIHN0YXRpYyBpbnQgbm9u dHJpdmlhbF9sY2QgPSAwOworKyAgc3RhdGljIGludCBmdWxsX2NvbXBsZXRpb24gPSAwOwkvKiBz ZXQgdG8gMSBpZiBtZW51IGNvbXBsZXRpb24gc2hvdWxkIHJlaW5pdGlhbGl6ZSBvbiBuZXh0IGNh bGwgKi8KKysgIHN0YXRpYyBpbnQgb3JpZ19zdGFydCwgb3JpZ19lbmQ7CisrICBzdGF0aWMgY2hh ciBxdW90ZV9jaGFyOworKyAgc3RhdGljIGludCBkZWxpbWl0ZXIsIGNzdGF0ZTsKKysKKysgIC8q IFRoZSBmaXJzdCB0aW1lIHRocm91Z2gsIHdlIGdlbmVyYXRlIHRoZSBsaXN0IG9mIG1hdGNoZXMg YW5kIHNldCB0aGluZ3MKKysgICAgIHVwIHRvIGluc2VydCB0aGVtLiAqLworKyAgaWYgKChybF9s YXN0X2Z1bmMgIT0gcmxfbWVudV9jb21wbGV0ZSAmJiBybF9sYXN0X2Z1bmMgIT0gcmxfYmFja3dh cmRfbWVudV9jb21wbGV0ZSkgfHwgZnVsbF9jb21wbGV0aW9uKQorKyAgICB7CisrICAgICAgLyog Q2xlYW4gdXAgZnJvbSBwcmV2aW91cyBjYWxsLCBpZiBhbnkuICovCisrICAgICAgRlJFRSAob3Jp Z190ZXh0KTsKKysgICAgICBpZiAobWF0Y2hlcykKKysJX3JsX2ZyZWVfbWF0Y2hfbGlzdCAobWF0 Y2hlcyk7CisrCisrICAgICAgbWF0Y2hfbGlzdF9pbmRleCA9IG1hdGNoX2xpc3Rfc2l6ZSA9IDA7 CisrICAgICAgbWF0Y2hlcyA9IChjaGFyICoqKU5VTEw7CisrCisrICAgICAgZnVsbF9jb21wbGV0 aW9uID0gMDsKKysKKysgICAgICBSTF9TRVRTVEFURShSTF9TVEFURV9DT01QTEVUSU5HKTsKKysK KysgICAgICAvKiBPbmx5IHRoZSBjb21wbGV0aW9uIGVudHJ5IGZ1bmN0aW9uIGNhbiBjaGFuZ2Ug dGhlc2UuICovCisrICAgICAgc2V0X2NvbXBsZXRpb25fZGVmYXVsdHMgKCclJyk7CisrCisrICAg ICAgb3VyX2Z1bmMgPSBybF9tZW51X2NvbXBsZXRpb25fZW50cnlfZnVuY3Rpb247CisrICAgICAg aWYgKG91cl9mdW5jID09IDApCisrCW91cl9mdW5jID0gcmxfY29tcGxldGlvbl9lbnRyeV9mdW5j dGlvbgorKwkJCT8gcmxfY29tcGxldGlvbl9lbnRyeV9mdW5jdGlvbgorKwkJCTogcmxfZmlsZW5h bWVfY29tcGxldGlvbl9mdW5jdGlvbjsKKysKKysgICAgICAvKiBXZSBub3cgbG9vayBiYWNrd2Fy ZHMgZm9yIHRoZSBzdGFydCBvZiBhIGZpbGVuYW1lL3ZhcmlhYmxlIHdvcmQuICovCisrICAgICAg b3JpZ19lbmQgPSBybF9wb2ludDsKKysgICAgICBmb3VuZF9xdW90ZSA9IGRlbGltaXRlciA9IDA7 CisrICAgICAgcXVvdGVfY2hhciA9ICdcMCc7CisrCisrICAgICAgaWYgKHJsX3BvaW50KQorKwkv KiBUaGlzIChwb3NzaWJseSkgY2hhbmdlcyBybF9wb2ludC4gIElmIGl0IHJldHVybnMgYSBub24t emVybyBjaGFyLAorKwkgICB3ZSBrbm93IHdlIGhhdmUgYW4gb3BlbiBxdW90ZS4gKi8KKysJcXVv dGVfY2hhciA9IF9ybF9maW5kX2NvbXBsZXRpb25fd29yZCAoJmZvdW5kX3F1b3RlLCAmZGVsaW1p dGVyKTsKKysKKysgICAgICBvcmlnX3N0YXJ0ID0gcmxfcG9pbnQ7CisrICAgICAgcmxfcG9pbnQg PSBvcmlnX2VuZDsKKysKKysgICAgICBvcmlnX3RleHQgPSBybF9jb3B5X3RleHQgKG9yaWdfc3Rh cnQsIG9yaWdfZW5kKTsKKysgICAgICBtYXRjaGVzID0gZ2VuX2NvbXBsZXRpb25fbWF0Y2hlcyAo b3JpZ190ZXh0LCBvcmlnX3N0YXJ0LCBvcmlnX2VuZCwKKysJCQkJCW91cl9mdW5jLCBmb3VuZF9x dW90ZSwgcXVvdGVfY2hhcik7CisrCisrICAgICAgbm9udHJpdmlhbF9sY2QgPSBtYXRjaGVzICYm IHN0cmNtcCAob3JpZ190ZXh0LCBtYXRjaGVzWzBdKSAhPSAwOworKworKyAgICAgIC8qIElmIHdl IGFyZSBtYXRjaGluZyBmaWxlbmFtZXMsIHRoZSBhdHRlbXB0ZWQgY29tcGxldGlvbiBmdW5jdGlv biB3aWxsCisrCSBoYXZlIHNldCBybF9maWxlbmFtZV9jb21wbGV0aW9uX2Rlc2lyZWQgdG8gYSBu b24temVybyB2YWx1ZS4gIFRoZSBiYXNpYworKwkgcmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5j dGlvbiBkb2VzIHRoaXMuICovCisrICAgICAgbWF0Y2hpbmdfZmlsZW5hbWVzID0gcmxfZmlsZW5h bWVfY29tcGxldGlvbl9kZXNpcmVkOworKworKyAgICAgIGlmIChtYXRjaGVzID09IDAgfHwgcG9z dHByb2Nlc3NfbWF0Y2hlcyAoJm1hdGNoZXMsIG1hdGNoaW5nX2ZpbGVuYW1lcykgPT0gMCkKKysJ eworKwkgIHJsX2RpbmcgKCk7CisrCSAgRlJFRSAobWF0Y2hlcyk7CisrCSAgbWF0Y2hlcyA9IChj aGFyICoqKTA7CisrCSAgRlJFRSAob3JpZ190ZXh0KTsKKysJICBvcmlnX3RleHQgPSAoY2hhciAq KTA7CisrCSAgY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9IDA7CisrCSAgUkxfVU5TRVRTVEFU RShSTF9TVEFURV9DT01QTEVUSU5HKTsKKysJICByZXR1cm4gKDApOworKwl9CisrCisrICAgICAg UkxfVU5TRVRTVEFURShSTF9TVEFURV9DT01QTEVUSU5HKTsKKysKKysgICAgICBmb3IgKG1hdGNo X2xpc3Rfc2l6ZSA9IDA7IG1hdGNoZXNbbWF0Y2hfbGlzdF9zaXplXTsgbWF0Y2hfbGlzdF9zaXpl KyspCisrICAgICAgICA7CisrCisrICAgICAgaWYgKG1hdGNoX2xpc3Rfc2l6ZSA9PSAwKSAKKysJ eworKwkgIHJsX2RpbmcgKCk7CisrCSAgRlJFRSAobWF0Y2hlcyk7CisrCSAgbWF0Y2hlcyA9IChj aGFyICoqKTA7CisrCSAgbWF0Y2hfbGlzdF9pbmRleCA9IDA7CisrCSAgY29tcGxldGlvbl9jaGFu Z2VkX2J1ZmZlciA9IDA7CisrCSAgcmV0dXJuICgwKTsKKysgICAgICAgIH0KKysKKysgICAgICAv KiBtYXRjaGVzWzBdIGlzIGxjZCBpZiBtYXRjaF9saXN0X3NpemUgPiAxLCBidXQgdGhlIGNpcmN1 bGFyIGJ1ZmZlcgorKwkgY29kZSBiZWxvdyBzaG91bGQgdGFrZSBjYXJlIG9mIGl0LiAqLworKyAg ICAgIGlmICgqbWF0Y2hlc1swXSkKKysJeworKwkgIGluc2VydF9tYXRjaCAobWF0Y2hlc1swXSwg b3JpZ19zdGFydCwgbWF0Y2hlc1sxXSA/IE1VTFRfTUFUQ0ggOiBTSU5HTEVfTUFUQ0gsICZxdW90 ZV9jaGFyKTsKKysJICBvcmlnX2VuZCA9IG9yaWdfc3RhcnQgKyBzdHJsZW4gKG1hdGNoZXNbMF0p OworKwkgIGNvbXBsZXRpb25fY2hhbmdlZF9idWZmZXIgPSBTVFJFUSAob3JpZ190ZXh0LCBtYXRj aGVzWzBdKSA9PSAwOworKwl9CisrCisrICAgICAgaWYgKG1hdGNoX2xpc3Rfc2l6ZSA+IDEgJiYg X3JsX2NvbXBsZXRlX3Nob3dfYWxsKQorKwl7CisrCSAgZGlzcGxheV9tYXRjaGVzIChtYXRjaGVz KTsKKysJICAvKiBJZiB0aGVyZSBhcmUgc28gbWFueSBtYXRjaGVzIHRoYXQgdGhlIHVzZXIgaGFz IHRvIGJlIGFza2VkCisrCSAgICAgd2hldGhlciBvciBub3QgaGUgd2FudHMgdG8gc2VlIHRoZSBt YXRjaGVzLCBtZW51IGNvbXBsZXRpb24KKysJICAgICBpcyB1bndpZWxkeS4gKi8KKysJICBpZiAo cmxfY29tcGxldGlvbl9xdWVyeV9pdGVtcyA+IDAgJiYgbWF0Y2hfbGlzdF9zaXplID49IHJsX2Nv bXBsZXRpb25fcXVlcnlfaXRlbXMpCisrCSAgICB7CisrCSAgICAgIHJsX2RpbmcgKCk7CisrCSAg ICAgIEZSRUUgKG1hdGNoZXMpOworKwkgICAgICBtYXRjaGVzID0gKGNoYXIgKiopMDsKKysJICAg ICAgZnVsbF9jb21wbGV0aW9uID0gMTsKKysJICAgICAgcmV0dXJuICgwKTsKKysJICAgIH0KKysJ fQorKyAgICAgIGVsc2UgaWYgKG1hdGNoX2xpc3Rfc2l6ZSA8PSAxKQorKwl7CisrCSAgYXBwZW5k X3RvX21hdGNoIChtYXRjaGVzWzBdLCBkZWxpbWl0ZXIsIHF1b3RlX2NoYXIsIG5vbnRyaXZpYWxf bGNkKTsKKysJICBmdWxsX2NvbXBsZXRpb24gPSAxOworKwkgIHJldHVybiAoMCk7CisrCX0KKysg ICAgICBlbHNlIGlmIChfcmxfbWVudV9jb21wbGV0ZV9wcmVmaXhfZmlyc3QgJiYgbWF0Y2hfbGlz dF9zaXplID4gMSkKKysJeworKwkgIHJsX2RpbmcgKCk7CisrCSAgcmV0dXJuICgwKTsKKysJfQor KyAgICB9CisrCisrICAvKiBOb3cgd2UgaGF2ZSB0aGUgbGlzdCBvZiBtYXRjaGVzLiAgUmVwbGFj ZSB0aGUgdGV4dCBiZXR3ZWVuCisrICAgICBybF9saW5lX2J1ZmZlcltvcmlnX3N0YXJ0XSBhbmQg cmxfbGluZV9idWZmZXJbcmxfcG9pbnRdIHdpdGgKKysgICAgIG1hdGNoZXNbbWF0Y2hfbGlzdF9p bmRleF0sIGFuZCBhZGQgYW55IG5lY2Vzc2FyeSBjbG9zaW5nIGNoYXIuICovCisrCisrICBpZiAo bWF0Y2hlcyA9PSAwIHx8IG1hdGNoX2xpc3Rfc2l6ZSA9PSAwKSAKKysgICAgeworKyAgICAgIHJs X2RpbmcgKCk7CisrICAgICAgRlJFRSAobWF0Y2hlcyk7CisrICAgICAgbWF0Y2hlcyA9IChjaGFy ICoqKTA7CisrICAgICAgY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9IDA7CisrICAgICAgcmV0 dXJuICgwKTsKKysgICAgfQorKworKyAgbWF0Y2hfbGlzdF9pbmRleCArPSBjb3VudDsKKysgIGlm IChtYXRjaF9saXN0X2luZGV4IDwgMCkKKysgICAgeworKyAgICAgIHdoaWxlIChtYXRjaF9saXN0 X2luZGV4IDwgMCkKKysJbWF0Y2hfbGlzdF9pbmRleCArPSBtYXRjaF9saXN0X3NpemU7CisrICAg IH0KKysgIGVsc2UKKysgICAgbWF0Y2hfbGlzdF9pbmRleCAlPSBtYXRjaF9saXN0X3NpemU7Cisr CisrICBpZiAobWF0Y2hfbGlzdF9pbmRleCA9PSAwICYmIG1hdGNoX2xpc3Rfc2l6ZSA+IDEpCisr ICAgIHsKKysgICAgICBybF9kaW5nICgpOworKyAgICAgIGluc2VydF9tYXRjaCAobWF0Y2hlc1sw XSwgb3JpZ19zdGFydCwgTVVMVF9NQVRDSCwgJnF1b3RlX2NoYXIpOworKyAgICB9CisrICBlbHNl CisrICAgIHsKKysgICAgICBpbnNlcnRfbWF0Y2ggKG1hdGNoZXNbbWF0Y2hfbGlzdF9pbmRleF0s IG9yaWdfc3RhcnQsIFNJTkdMRV9NQVRDSCwgJnF1b3RlX2NoYXIpOworKyAgICAgIGFwcGVuZF90 b19tYXRjaCAobWF0Y2hlc1ttYXRjaF9saXN0X2luZGV4XSwgZGVsaW1pdGVyLCBxdW90ZV9jaGFy LAorKwkJICAgICAgIHN0cmNtcCAob3JpZ190ZXh0LCBtYXRjaGVzW21hdGNoX2xpc3RfaW5kZXhd KSk7CisrICAgIH0KKysKKysgIGNvbXBsZXRpb25fY2hhbmdlZF9idWZmZXIgPSAxOworKyAgcmV0 dXJuICgwKTsKKyt9CisrCisraW50CisrcmxfYmFja3dhcmRfbWVudV9jb21wbGV0ZSAoY291bnQs IGtleSkKKysgICAgIGludCBjb3VudCwga2V5OworK3sKKysgIC8qIFBvc2l0aXZlIGFyZ3VtZW50 cyB0byBiYWNrd2FyZC1tZW51LWNvbXBsZXRlIHRyYW5zbGF0ZSBpbnRvIG5lZ2F0aXZlCisrICAg ICBhcmd1bWVudHMgZm9yIG1lbnUtY29tcGxldGUsIGFuZCB2aWNlIHZlcnNhLiAqLworKyAgcmV0 dXJuIChybF9tZW51X2NvbXBsZXRlICgtY291bnQsIGtleSkpOworK30KKy0tLSBhL3JlYWRsaW5l L2NvbmZpZy5oLmluCisrKysgYi9yZWFkbGluZS9jb25maWcuaC5pbgorQEAgLTQsNiArNCw4IEBA CisgICAgY2hhcmFjdGVycywgZXZlbiBpZiB0aGUgT1Mgc3VwcG9ydHMgdGhlbS4gKi8KKyAjdW5k ZWYgTk9fTVVMVElCWVRFX1NVUFBPUlQKKyAKKysjdW5kZWYgX0ZJTEVfT0ZGU0VUX0JJVFMKKysK KyAvKiBEZWZpbmUgaWYgb24gTUlOSVguICAqLworICN1bmRlZiBfTUlOSVgKKyAKK0BAIC0xMywx MiArMTUsMTYgQEAKKyAjdW5kZWYgVk9JRF9TSUdIQU5ETEVSCisgCisgLyogQ2hhcmFjdGVyaXN0 aWNzIG9mIHRoZSBjb21waWxlci4gKi8KKy0jdW5kZWYgY29uc3QKKysjdW5kZWYgc2lnX2F0b21p Y190CisgCisgI3VuZGVmIHNpemVfdAorIAorICN1bmRlZiBzc2l6ZV90CisgCisrI3VuZGVmIGNv bnN0CisrCisrI3VuZGVmIHZvbGF0aWxlCisrCisgI3VuZGVmIFBST1RPVFlQRVMKKyAKKyAjdW5k ZWYgX19DSEFSX1VOU0lHTkVEX18KK0BAIC00MSw2ICs0NywxNSBAQAorIC8qIERlZmluZSBpZiB5 b3UgaGF2ZSB0aGUgaXNhc2NpaSBmdW5jdGlvbi4gKi8KKyAjdW5kZWYgSEFWRV9JU0FTQ0lJCisg CisrLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBpc3djdHlwZSBmdW5jdGlvbi4gICovCisrI3Vu ZGVmIEhBVkVfSVNXQ1RZUEUKKysKKysvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGlzd2xvd2Vy IGZ1bmN0aW9uLiAgKi8KKysjdW5kZWYgSEFWRV9JU1dMT1dFUgorKworKy8qIERlZmluZSBpZiB5 b3UgaGF2ZSB0aGUgaXN3dXBwZXIgZnVuY3Rpb24uICAqLworKyN1bmRlZiBIQVZFX0lTV1VQUEVS CisrCisgLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBpc3hkaWdpdCBmdW5jdGlvbi4gKi8KKyAj dW5kZWYgSEFWRV9JU1hESUdJVAorIAorQEAgLTg4LDExICsxMDMsMjMgQEAKKyAvKiBEZWZpbmUg aWYgeW91IGhhdmUgdGhlIHRjZ2V0YXR0ciBmdW5jdGlvbi4gICovCisgI3VuZGVmIEhBVkVfVENH RVRBVFRSCisgCisrLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB0b3dsb3dlciBmdW5jdGlvbi4g ICovCisrI3VuZGVmIEhBVkVfVE9XTE9XRVIKKysKKysvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhl IHRvd3VwcGVyIGZ1bmN0aW9uLiAgKi8KKysjdW5kZWYgSEFWRV9UT1dVUFBFUgorKworIC8qIERl ZmluZSBpZiB5b3UgaGF2ZSB0aGUgdnNucHJpbnRmIGZ1bmN0aW9uLiAgKi8KKyAjdW5kZWYgSEFW RV9WU05QUklOVEYKKyAKKy0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHdjdG9tYiBmdW5jdGlv bi4gICovCistI3VuZGVmIEhBVkVfV0NUT01CIAorKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUg d2NydG9tYiBmdW5jdGlvbi4gICovCisrI3VuZGVmIEhBVkVfV0NSVE9NQiAKKysKKysvKiBEZWZp bmUgaWYgeW91IGhhdmUgdGhlIHdjc2NvbGwgZnVuY3Rpb24uICAqLworKyN1bmRlZiBIQVZFX1dD U0NPTEwKKysKKysvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHdjdHlwZSBmdW5jdGlvbi4gICov CisrI3VuZGVmIEhBVkVfV0NUWVBFCisgCisgLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB3Y3dp ZHRoIGZ1bmN0aW9uLiAgKi8KKyAjdW5kZWYgSEFWRV9XQ1dJRFRICitAQCAtMTc0LDExICsyMDEs MjAgQEAKKyAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx3Y2hhci5oPiBoZWFkZXIgZmlsZS4g ICovCisgI3VuZGVmIEhBVkVfV0NIQVJfSAorIAorLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUg PHZhcmFyZ3MuaD4gaGVhZGVyIGZpbGUuICAqLworKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUg PHdjdHlwZS5oPiBoZWFkZXIgZmlsZS4gICovCisgI3VuZGVmIEhBVkVfV0NUWVBFX0gKKyAKKyAj dW5kZWYgSEFWRV9NQlNUQVRFX1QKKyAKKysvKiBEZWZpbmUgaWYgeW91IGhhdmUgd2NoYXJfdCBp biA8d2N0eXBlLmg+LiAqLworKyN1bmRlZiBIQVZFX1dDSEFSX1QgCisrCisrLyogRGVmaW5lIGlm IHlvdSBoYXZlIHdjdHlwZV90IGluIDx3Y3R5cGUuaD4uICovCisrI3VuZGVmIEhBVkVfV0NUWVBF X1QKKysKKysvKiBEZWZpbmUgaWYgeW91IGhhdmUgd2ludF90IGluIDx3Y3R5cGUuaD4uICovICAK KysjdW5kZWYgSEFWRV9XSU5UX1QgIAorKworIC8qIERlZmluZSBpZiB5b3UgaGF2ZSA8bGFuZ2lu Zm8uaD4gYW5kIG5sX2xhbmdpbmZvKENPREVTRVQpLiAqLworICN1bmRlZiBIQVZFX0xBTkdJTkZP X0NPREVTRVQKKyAKK0BAIC0yMjMsMTAgKzI1OSw2IEBACisgIyAgZGVmaW5lIFRFUk1JT1NfTUlT U0lORworICNlbmRpZgorIAorLSNpZiBkZWZpbmVkIChTVFJDT0xMX0JST0tFTikKKy0jICB1bmRl ZiBIQVZFX1NUUkNPTEwKKy0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZCAoX19TVERDX18pICYmIGRl ZmluZWQgKEhBVkVfU1REQVJHX0gpCisgIyAgZGVmaW5lIFBSRUZFUl9TVERBUkcKKyAjICBkZWZp bmUgVVNFX1ZBUkFSR1MKKy0tLSBhL3JlYWRsaW5lL2NvbmZpZ3VyZQorKysrIGIvcmVhZGxpbmUv Y29uZmlndXJlCitAQCAtMSw3ICsxLDcgQEAKKyAjISAvYmluL3NoCistIyBGcm9tIGNvbmZpZ3Vy ZS5pbiBmb3IgUmVhZGxpbmUgNS4xLCB2ZXJzaW9uIDIuNTkuCisrIyBGcm9tIGNvbmZpZ3VyZS5p biBmb3IgUmVhZGxpbmUgNi4yLCB2ZXJzaW9uIDIuNjcuCisgIyBHdWVzcyB2YWx1ZXMgZm9yIHN5 c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgorLSMgR2VuZXJh dGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY0IGZvciByZWFkbGluZSA1LjEtcmVsZWFzZS4KKysjIEdl bmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NCBmb3IgcmVhZGxpbmUgNi4yLgorICMKKyAjIFJl cG9ydCBidWdzIHRvIDxidWctcmVhZGxpbmVAZ251Lm9yZz4uCisgIworQEAgLTU1MCw4ICs1NTAs OCBAQCBNQUtFRkxBR1M9CisgIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCisgUEFDS0FHRV9O QU1FPSdyZWFkbGluZScKKyBQQUNLQUdFX1RBUk5BTUU9J3JlYWRsaW5lJworLVBBQ0tBR0VfVkVS U0lPTj0nNS4xLXJlbGVhc2UnCistUEFDS0FHRV9TVFJJTkc9J3JlYWRsaW5lIDUuMS1yZWxlYXNl JworK1BBQ0tBR0VfVkVSU0lPTj0nNi4yJworK1BBQ0tBR0VfU1RSSU5HPSdyZWFkbGluZSA2LjIn CisgUEFDS0FHRV9CVUdSRVBPUlQ9J2J1Zy1yZWFkbGluZUBnbnUub3JnJworIFBBQ0tBR0VfVVJM PScnCisgCitAQCAtNTkzLDcgKzU5Myw2IEBAIGFjX2luY2x1ZGVzX2RlZmF1bHQ9IlwKKyAjZW5k aWYiCisgCisgYWNfc3Vic3RfdmFycz0nTFRMSUJPQkpTCistTElCT0JKUworIFRFUk1DQVBfTElC CisgTElCVkVSU0lPTgorIEFSRkxBR1MKK0BAIC02MjMsMTQgKzYyMiwxMyBAQCBTSE9CSl9MREZM QUdTCisgU0hPQkpfTEQKKyBTSE9CSl9DRkxBR1MKKyBTSE9CSl9DQworLVdDV0lEVEhfT0JKCisr TElCT0JKUworIE1BS0VfU0hFTEwKKyBSQU5MSUIKKyBBUgorIElOU1RBTExfREFUQQorIElOU1RB TExfU0NSSVBUCisgSU5TVEFMTF9QUk9HUkFNCistQ0NfRk9SX0JVSUxECisgRUdSRVAKKyBHUkVQ CisgQ1BQCitAQCAtNjk2LDYgKzY5NCw3IEBAIHdpdGhfY3Vyc2VzCisgd2l0aF9wdXJpZnkKKyBl bmFibGVfbXVsdGlieXRlCisgZW5hYmxlX3N0YXRpYworK2VuYWJsZV9sYXJnZWZpbGUKKyAnCisg ICAgICAgYWNfcHJlY2lvdXNfdmFycz0nYnVpbGRfYWxpYXMKKyBob3N0X2FsaWFzCitAQCAtMTI0 Nyw3ICsxMjQ2LDcgQEAgaWYgdGVzdCAiJGFjX2luaXRfaGVscCIgPSAibG9uZyI7IHRoZW4KKyAg ICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlz dCBsZXNzIGltcG9zaW5nLgorICAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBz dHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgorICAgY2F0IDw8X0FDRU9GCistXGBjb25maWd1cmUn IGNvbmZpZ3VyZXMgcmVhZGxpbmUgNS4xLXJlbGVhc2UgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBv ZiBzeXN0ZW1zLgorK1xgY29uZmlndXJlJyBjb25maWd1cmVzIHJlYWRsaW5lIDYuMiB0byBhZGFw dCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCisgCisgVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtW QVI9VkFMVUVdLi4uCisgCitAQCAtMTMxMiw3ICsxMzExLDcgQEAgZmkKKyAKKyBpZiB0ZXN0IC1u ICIkYWNfaW5pdF9oZWxwIjsgdGhlbgorICAgY2FzZSAkYWNfaW5pdF9oZWxwIGluCistICAgICBz aG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgcmVhZGxpbmUgNS4xLXJl bGVhc2U6Ijs7CisrICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24g b2YgcmVhZGxpbmUgNi4yOiI7OworICAgIGVzYWMKKyAgIGNhdCA8PFxfQUNFT0YKKyAKK0BAIC0x MzIyLDYgKzEzMjEsNyBAQCBPcHRpb25hbCBGZWF0dXJlczoKKyAgIC0tZW5hYmxlLUZFQVRVUkVb PUFSR10gIGluY2x1ZGUgRkVBVFVSRSBbQVJHPXllc10KKyAgIC0tZW5hYmxlLW11bHRpYnl0ZSAg ICAgIGVuYWJsZSBtdWx0aWJ5dGUgY2hhcmFjdGVycyBpZiBPUyBzdXBwb3J0cyB0aGVtCisgICAt LWVuYWJsZS1zdGF0aWMgICAgICAgICBidWlsZCBzdGF0aWMgbGlicmFyaWVzIFtkZWZhdWx0PVlF U10KKysgIC0tZGlzYWJsZS1sYXJnZWZpbGUgICAgIG9taXQgc3VwcG9ydCBmb3IgbGFyZ2UgZmls ZXMKKyAKKyBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1QQUNLQUdFWz1BUkddICAgIHVz ZSBQQUNLQUdFIFtBUkc9eWVzXQorQEAgLTE0MDYsNyArMTQwNiw3IEBAIGZpCisgdGVzdCAtbiAi JGFjX2luaXRfaGVscCIgJiYgZXhpdCAkYWNfc3RhdHVzCisgaWYgJGFjX2luaXRfdmVyc2lvbjsg dGhlbgorICAgY2F0IDw8XF9BQ0VPRgorLXJlYWRsaW5lIGNvbmZpZ3VyZSA1LjEtcmVsZWFzZQor K3JlYWRsaW5lIGNvbmZpZ3VyZSA2LjIKKyBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjQK KyAKKyBDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitA QCAtMTgzMSw3ICsxODMxLDcgQEAgY2F0ID5jb25maWcubG9nIDw8X0FDRU9GCisgVGhpcyBmaWxl IGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUKKyBydW5u aW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0 YWtlLgorIAorLUl0IHdhcyBjcmVhdGVkIGJ5IHJlYWRsaW5lICRhc19tZSA1LjEtcmVsZWFzZSwg d2hpY2ggd2FzCisrSXQgd2FzIGNyZWF0ZWQgYnkgcmVhZGxpbmUgJGFzX21lIDYuMiwgd2hpY2gg d2FzCisgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY0LiAgSW52b2NhdGlvbiBjb21tYW5k IGxpbmUgd2FzCisgCisgICAkICQwICRACitAQCAtMjIxMSw3ICsyMjExLDcgQEAgYWNfY29uZmln dXJlPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlndXJlIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRo aXMgdmFyLgorIGFjX2NvbmZpZ19oZWFkZXJzPSIkYWNfY29uZmlnX2hlYWRlcnMgY29uZmlnLmgi CisgCisgCistTElCVkVSU0lPTj01LjEKKytMSUJWRVJTSU9OPTYuMgorIAorICMgTWFrZSBzdXJl IHdlIGNhbiBydW4gY29uZmlnLnN1Yi4KKyAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIi IHN1bjQgPi9kZXYvbnVsbCAyPiYxIHx8CitAQCAtMzYyMiwzOSArMzYyMiw2IEBAICRhc19lY2hv ICIkYWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNpb25zX18iID4mNjsgfQorIAorIAorIAor LQorLWlmIHRlc3QgIngkY3Jvc3NfY29tcGlsaW5nIiA9ICJ4eWVzIjsgdGhlbgorLSAgICBjYXNl ICIke2hvc3R9IiBpbgorLSAgICAqLWN5Z3dpbiopCistCWNyb3NzX2NhY2hlPSR7c3JjZGlyfS9j cm9zcy1idWlsZC9jeWd3aW4uY2FjaGUKKy0JTE9DQUxfQ0ZMQUdTPSIkTE9DQUxfQ0ZMQUdTIC1J JHtzcmNkaXJ9Ly4uL2xpYnRlcm1jYXAiCistCTs7CistICAgKi1taW5ndzMyKikKKy0JY3Jvc3Nf Y2FjaGU9JHtzcmNkaXJ9L2Nyb3NzLWJ1aWxkL21pbmd3LmNhY2hlCistICAgICAgICA7OworLSAg ICAqKSAgZWNobyAiY29uZmlndXJlOiBjcm9zcy1jb21waWxpbmcgZm9yIGEgbm9uLWN5Z3dpbiB0 YXJnZXQgaXMgbm90IHN1cHBvcnRlZCIgPiYyCistCTs7CistICAgIGVzYWMKKy0KKy0gICAgaWYg dGVzdCAieCRjcm9zc19jYWNoZSIgIT0gIngiOyB0aGVuCistCWlmIHRlc3QgLXIgIiR7Y3Jvc3Nf Y2FjaGV9IjsgdGhlbgorLQkgICAgZWNobyAibG9hZGluZyBjcm9zcy1idWlsZCBjYWNoZSBmaWxl ICR7Y3Jvc3NfY2FjaGV9IgorLQkgICAgLiAke2Nyb3NzX2NhY2hlfQorLQlmaQorLQl1bnNldCBj cm9zc19jYWNoZQorLSAgICBmaQorLWZpCistCistaWYgdGVzdCAteiAiJENDX0ZPUl9CVUlMRCI7 IHRoZW4KKy0gICAgaWYgdGVzdCAieCRjcm9zc19jb21waWxpbmciID0gInhubyI7IHRoZW4KKy0g ICAgICAgIENDX0ZPUl9CVUlMRD0nJChDQyknCistICAgIGVsc2UKKy0gICAgICAgIENDX0ZPUl9C VUlMRD1nY2MKKy0gICAgZmkKKy1maQorLQorLQorLQorICMgSWYgd2UncmUgdXNpbmcgZ2NjIGFu ZCB0aGUgdXNlciBoYXNuJ3Qgc3BlY2lmaWVkIENGTEFHUywgYWRkIC1PIHRvIENGTEFHUy4KKyB0 ZXN0IC1uICIkR0NDIiAmJiB0ZXN0IC1uICIkYXV0b19jZmxhZ3MiICYmIENGTEFHUz0iJENGTEFH UyAtTyIKKyAKK0BAIC00MDU2LDYgKzQwMjMsNDAgQEAgaWYgdGVzdCAkYWNfY3ZfY19jaGFyX3Vu c2lnbmVkID0geWVzICYmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorIAorIGZpCisgCisreyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29ya2lu ZyB2b2xhdGlsZSIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgdm9sYXRp bGUuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X2Nfdm9sYXRpbGUrc2V0fSIgPSBzZXQ7 IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29u ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmgu ICAqLworKworK2ludAorK21haW4gKCkKKyt7CisrCisrdm9sYXRpbGUgaW50IHg7CisraW50ICog dm9sYXRpbGUgeSA9IChpbnQgKikgMDsKKytyZXR1cm4gIXggJiYgIXk7CisrICA7CisrICByZXR1 cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRo ZW4gOgorKyAgYWNfY3ZfY192b2xhdGlsZT15ZXMKKytlbHNlCisrICBhY19jdl9jX3ZvbGF0aWxl PW5vCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNv bmZ0ZXN0LiRhY19leHQKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkYWNfY3ZfY192b2xhdGlsZSIgPiY1CisrJGFzX2VjaG8gIiRhY19jdl9j X3ZvbGF0aWxlIiA+JjY7IH0KKytpZiB0ZXN0ICRhY19jdl9jX3ZvbGF0aWxlID0gbm87IHRoZW4K KysKKyskYXNfZWNobyAiI2RlZmluZSB2b2xhdGlsZSAvKiovIiA+PmNvbmZkZWZzLmgKKysKKytm aQorKworIAorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgcmV0dXJuIHR5cGUgb2Ygc2lnbmFsIGhhbmRsZXJzIiA+JjUKKyAkYXNfZWNob19uICJjaGVj a2luZyByZXR1cm4gdHlwZSBvZiBzaWduYWwgaGFuZGxlcnMuLi4gIiA+JjY7IH0KK0BAIC00NTcx LDYgKzQ1NzIsMjA1IEBAIGZpCisgZG9uZQorIAorIAorKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJs ZS1sYXJnZWZpbGUgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7ZW5hYmxlX2xhcmdlZmlsZStzZXR9 IiA9IHNldDsgdGhlbiA6CisrICBlbmFibGV2YWw9JGVuYWJsZV9sYXJnZWZpbGU7CisrZmkKKysK KytpZiB0ZXN0ICIkZW5hYmxlX2xhcmdlZmlsZSIgIT0gbm87IHRoZW4KKysKKysgIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHNwZWNpYWwgQyBj b21waWxlciBvcHRpb25zIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQorKyRhc19lY2hvX24g ImNoZWNraW5nIGZvciBzcGVjaWFsIEMgY29tcGlsZXIgb3B0aW9ucyBuZWVkZWQgZm9yIGxhcmdl IGZpbGVzLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9zeXNfbGFyZ2VmaWxlX0NDK3Nl dH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQor KyAgYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQz1ubworKyAgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVz OyB0aGVuCisrICAgICAgIGFjX3NhdmVfQ0M9JENDCisrICAgICAgIHdoaWxlIDo7IGRvCisrCSAj IElSSVggNi4yIGFuZCBsYXRlciBkbyBub3Qgc3VwcG9ydCBsYXJnZSBmaWxlcyBieSBkZWZhdWx0 LAorKwkgIyBzbyB1c2UgdGhlIEMgY29tcGlsZXIncyAtbjMyIG9wdGlvbiBpZiB0aGF0IGhlbHBz LgorKwkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVu ZCBjb25mZGVmcy5oLiAgKi8KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrIC8qIENoZWNrIHRo YXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgorKyAgICBXZSBjYW4n dCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisr ICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMK KysgICAgaW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLworKyNkZWZp bmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIp KQorKyAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIx CisrCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCisrCQkgICAgICA/ IDEgOiAtMV07CisraW50CisrbWFpbiAoKQorK3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30K KytfQUNFT0YKKysJIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysg IGJyZWFrCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0 CisrCSBDQz0iJENDIC1uMzIiCisrCSBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsg dGhlbiA6CisrICBhY19jdl9zeXNfbGFyZ2VmaWxlX0NDPScgLW4zMic7IGJyZWFrCisrZmkKKyty bSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0CisrCSBicmVhaworKyAg ICAgICBkb25lCisrICAgICAgIENDPSRhY19zYXZlX0NDCisrICAgICAgIHJtIC1mIGNvbmZ0ZXN0 LiRhY19leHQKKysgICAgZmkKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQyIgPiY1CisrJGFzX2VjaG8g IiRhY19jdl9zeXNfbGFyZ2VmaWxlX0NDIiA+JjY7IH0KKysgIGlmIHRlc3QgIiRhY19jdl9zeXNf bGFyZ2VmaWxlX0NDIiAhPSBubzsgdGhlbgorKyAgICBDQz0kQ0MkYWNfY3Zfc3lzX2xhcmdlZmls ZV9DQworKyAgZmkKKysKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2Ug ZmlsZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2 YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19j dl9zeXNfZmlsZV9vZmZzZXRfYml0cytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19u ICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHdoaWxlIDo7IGRvCisrICBjYXQgY29uZmRlZnMu aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLwor KyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVz ZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCisrICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFS R0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKKysgICAgc2luY2Ugc29tZSBDKysg Y29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycworKyAgICBpbmNvcnJlY3RseSBy ZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCisrI2RlZmluZSBMQVJHRV9PRkZfVCAoKChv ZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2MikpCisrICBpbnQgb2ZmX3RfaXNf bGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKKysJCSAgICAgICAmJiBMQVJH RV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKKysJCSAgICAgID8gMSA6IC0xXTsKKytpbnQKKytt YWluICgpCisreworKworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2Zu X2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGFjX2N2X3N5c19maWxlX29mZnNl dF9iaXRzPW5vOyBicmVhaworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3Qu JGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G ID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKyNkZWZpbmUgX0ZJ TEVfT0ZGU0VUX0JJVFMgNjQKKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrIC8qIENoZWNrIHRo YXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgorKyAgICBXZSBjYW4n dCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisr ICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMK KysgICAgaW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLworKyNkZWZp bmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIp KQorKyAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIx CisrCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCisrCQkgICAgICA/ IDEgOiAtMV07CisraW50CisrbWFpbiAoKQorK3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30K KytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBh Y19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz02NDsgYnJlYWsKKytmaQorK3JtIC1mIGNvcmUgY29u ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorKyAgYWNfY3Zf c3lzX2ZpbGVfb2Zmc2V0X2JpdHM9dW5rbm93bgorKyAgYnJlYWsKKytkb25lCisrZmkKKyt7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N5c19m aWxlX29mZnNldF9iaXRzIiA+JjUKKyskYXNfZWNobyAiJGFjX2N2X3N5c19maWxlX29mZnNldF9i aXRzIiA+JjY7IH0KKytjYXNlICRhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cyBpbiAjKAorKyAg bm8gfCB1bmtub3duKSA7OworKyAgKikKKytjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisrI2Rl ZmluZSBfRklMRV9PRkZTRVRfQklUUyAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMKKytfQUNF T0YKKys7OworK2VzYWMKKytybSAtcmYgY29uZnRlc3QqCisrICBpZiB0ZXN0ICRhY19jdl9zeXNf ZmlsZV9vZmZzZXRfYml0cyA9IHVua25vd247IHRoZW4KKysgICAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX0xBUkdFX0ZJTEVTIHZhbHVlIG5l ZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfTEFS R0VfRklMRVMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcy4uLiAiID4mNjsgfQorK2lmIHRl c3QgIiR7YWNfY3Zfc3lzX2xhcmdlX2ZpbGVzK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19l Y2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgd2hpbGUgOjsgZG8KKysgIGNhdCBjb25m ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4g ICovCisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiBy ZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KKysgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmlu ZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAorKyAgICBzaW5jZSBzb21l IEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCisrICAgIGluY29ycmVj dGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KKysjZGVmaW5lIExBUkdFX09GRl9U ICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKKysgIGludCBvZmZf dF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQorKwkJICAgICAgICYm IExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQorKwkJICAgICAgPyAxIDogLTFdOworK2lu dAorK21haW4gKCkKKyt7CisrCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYg YWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgYWNfY3Zfc3lzX2xhcmdl X2ZpbGVzPW5vOyBicmVhaworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3Qu JGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G ID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKyNkZWZpbmUgX0xB UkdFX0ZJTEVTIDEKKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrIC8qIENoZWNrIHRoYXQgb2Zm X3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgorKyAgICBXZSBjYW4ndCBzaW1w bHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisrICAgIHNp bmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKKysgICAg aW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLworKyNkZWZpbmUgTEFS R0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQorKyAg aW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCisrCQkg ICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCisrCQkgICAgICA/IDEgOiAt MV07CisraW50CisrbWFpbiAoKQorK3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNF T0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBhY19jdl9z eXNfbGFyZ2VfZmlsZXM9MTsgYnJlYWsKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNv bmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorKyAgYWNfY3Zfc3lzX2xhcmdlX2Zp bGVzPXVua25vd24KKysgIGJyZWFrCisrZG9uZQorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zeXNfbGFyZ2VfZmlsZXMiID4mNQor KyRhc19lY2hvICIkYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzIiA+JjY7IH0KKytjYXNlICRhY19jdl9z eXNfbGFyZ2VfZmlsZXMgaW4gIygKKysgIG5vIHwgdW5rbm93bikgOzsKKysgICopCisrY2F0ID4+ Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUgX0xBUkdFX0ZJTEVTICRhY19jdl9zeXNfbGFy Z2VfZmlsZXMKKytfQUNFT0YKKys7OworK2VzYWMKKytybSAtcmYgY29uZnRlc3QqCisrICBmaQor K2ZpCisrCisrCisgCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyBmb3IgdHlwZSBvZiBzaWduYWwgZnVuY3Rpb25zIiA+JjUKKyAkYXNfZWNob19uICJj aGVja2luZyBmb3IgdHlwZSBvZiBzaWduYWwgZnVuY3Rpb25zLi4uICIgPiY2OyB9CitAQCAtNTA3 OCw2ICs1Mjc4LDQ5IEBAICRhc19lY2hvICIjZGVmaW5lIEdXSU5TWl9JTl9TWVNfSU9DVEwgMSIg Pj5jb25mZGVmcy5oCisgZmkKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIGZvciBzaWdfYXRvbWljX3QgaW4gc2lnbmFsLmgiID4mNQorKyRh c19lY2hvX24gImNoZWNraW5nIGZvciBzaWdfYXRvbWljX3QgaW4gc2lnbmFsLmguLi4gIiA+JjY7 IH0KKytpZiB0ZXN0ICIke2FjX2N2X2hhdmVfc2lnX2F0b21pY190K3NldH0iID0gc2V0OyB0aGVu IDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8K KysKKysjaW5jbHVkZSA8c2lnbmFsLmg+CisrCisraW50CisrbWFpbiAoKQorK3sKKysgc2lnX2F0 b21pY190IHg7CisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190 cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorKyAgYWNfY3ZfaGF2ZV9zaWdfYXRvbWljX3Q9eWVz CisrZWxzZQorKyAgYWNfY3ZfaGF2ZV9zaWdfYXRvbWljX3Q9bm8KKytmaQorK3JtIC1mIGNvcmUg Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorKyAgICBjb25mdGVzdCRhY19leGVl eHQgY29uZnRlc3QuJGFjX2V4dAorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9oYXZlX3NpZ19hdG9taWNfdCIgPiY1CisrJGFzX2Vj aG8gIiRhY19jdl9oYXZlX3NpZ19hdG9taWNfdCIgPiY2OyB9CisraWYgdGVzdCAiJGFjX2N2X2hh dmVfc2lnX2F0b21pY190IiA9ICJubyIKKyt0aGVuCisrICAgIGFjX2ZuX2NfY2hlY2tfdHlwZSAi JExJTkVOTyIgInNpZ19hdG9taWNfdCIgImFjX2N2X3R5cGVfc2lnX2F0b21pY190IiAiJGFjX2lu Y2x1ZGVzX2RlZmF1bHQiCisraWYgdGVzdCAieCRhY19jdl90eXBlX3NpZ19hdG9taWNfdCIgPSB4 IiJ5ZXM7IHRoZW4gOgorKworK2Vsc2UKKysKKytjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisr I2RlZmluZSBzaWdfYXRvbWljX3QgaW50CisrX0FDRU9GCisrCisrZmkKKysKKytmaQorKworIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBz aWduYWwgaGFuZGxlcnMgYXJlIG9mIHR5cGUgdm9pZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tp bmcgd2hldGhlciBzaWduYWwgaGFuZGxlcnMgYXJlIG9mIHR5cGUgdm9pZC4uLiAiID4mNjsgfQor IGlmIHRlc3QgIiR7YmFzaF9jdl92b2lkX3NpZ2hhbmRsZXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgor QEAgLTUxMTYsNiArNTM1OSw3IEBAICRhc19lY2hvICIjZGVmaW5lIFZPSURfU0lHSEFORExFUiAx IiA+PmNvbmZkZWZzLmgKKyAKKyBmaQorIAorKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIFRJT0NTVEFUIGluIHN5cy9pb2N0bC5oIiA+JjUK KyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgVElPQ1NUQVQgaW4gc3lzL2lvY3RsLmguLi4gIiA+ JjY7IH0KKyBpZiB0ZXN0ICIke2Jhc2hfY3ZfdGlvY3N0YXRfaW5faW9jdGwrc2V0fSIgPSBzZXQ7 IHRoZW4gOgorQEAgLTU2MzgsMjcgKzU4ODIsNzMgQEAgZmkKKyBkb25lCisgCisgCisrYWNfZm5f Y19jaGVja19mdW5jICIkTElORU5PIiAibWJybGVuIiAiYWNfY3ZfZnVuY19tYnJsZW4iCisraWYg dGVzdCAieCRhY19jdl9mdW5jX21icmxlbiIgPSB4IiJ5ZXM7IHRoZW4gOgorKyAgJGFzX2VjaG8g IiNkZWZpbmUgSEFWRV9NQlJMRU4gMSIgPj5jb25mZGVmcy5oCisrCisrZmkKKysKKythY19mbl9j X2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJtYnNjYXNlY21wIiAiYWNfY3ZfZnVuY19tYnNjYXNlY21w IgorK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19tYnNjYXNlY21wIiA9IHgiInllczsgdGhlbiA6Cisr ICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX01CU0NNUCAxIiA+PmNvbmZkZWZzLmgKKysKKytmaQor KworK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1ic2NtcCIgImFjX2N2X2Z1bmNfbWJz Y21wIgorK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19tYnNjbXAiID0geCIieWVzOyB0aGVuIDoKKysg ICRhc19lY2hvICIjZGVmaW5lIEhBVkVfTUJTQ01QIDEiID4+Y29uZmRlZnMuaAorKworK2ZpCisr CisrYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAibWJzbnJ0b3djcyIgImFjX2N2X2Z1bmNf bWJzbnJ0b3djcyIKKytpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbWJzbnJ0b3djcyIgPSB4IiJ5ZXM7 IHRoZW4gOgorKyAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9NQlNOUlRPV0NTIDEiID4+Y29uZmRl ZnMuaAorKworK2ZpCisrCisgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAibWJzcnRvd2Nz IiAiYWNfY3ZfZnVuY19tYnNydG93Y3MiCisgaWYgdGVzdCAieCRhY19jdl9mdW5jX21ic3J0b3dj cyIgPSB4IiJ5ZXM7IHRoZW4gOgorICAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9NQlNSVE9XQ1Mg MSIgPj5jb25mZGVmcy5oCisgCisgZmkKKyAKKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8i ICJtYnJ0b3djIiAiYWNfY3ZfZnVuY19tYnJ0b3djIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19t YnJ0b3djIiA9IHgiInllczsgdGhlbiA6CistICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX01CUlRP V0MgMSIgPj5jb25mZGVmcy5oCisrCisrCisrZm9yIGFjX2Z1bmMgaW4gbWJzY2hyCisrZG8gOgor KyAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAibWJzY2hyIiAiYWNfY3ZfZnVuY19tYnNj aHIiCisraWYgdGVzdCAieCRhY19jdl9mdW5jX21ic2NociIgPSB4IiJ5ZXM7IHRoZW4gOgorKyAg Y2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUgSEFWRV9NQlNDSFIgMQorK19BQ0VP RgorKworK2Vsc2UKKysgIGNhc2UgIiAkTElCT0JKUyAiIGluCisrICAqIiAkYWNfZnVuYy4kYWNf b2JqZXh0ICIqICkgOzsKKysgICopIExJQk9CSlM9IiRMSUJPQkpTICRhY19mdW5jLiRhY19vYmpl eHQiCisrIDs7CisrZXNhYworIAorIGZpCisrZG9uZQorIAorLWFjX2ZuX2NfY2hlY2tfZnVuYyAi JExJTkVOTyIgIm1icmxlbiIgImFjX2N2X2Z1bmNfbWJybGVuIgorLWlmIHRlc3QgIngkYWNfY3Zf ZnVuY19tYnJsZW4iID0geCIieWVzOyB0aGVuIDoKKy0gICRhc19lY2hvICIjZGVmaW5lIEhBVkVf TUJSTEVOIDEiID4+Y29uZmRlZnMuaAorKworKworK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVO TyIgIndjcnRvbWIiICJhY19jdl9mdW5jX3djcnRvbWIiCisraWYgdGVzdCAieCRhY19jdl9mdW5j X3djcnRvbWIiID0geCIieWVzOyB0aGVuIDoKKysgICRhc19lY2hvICIjZGVmaW5lIEhBVkVfV0NS VE9NQiAxIiA+PmNvbmZkZWZzLmgKKyAKKyBmaQorIAorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJ TkVOTyIgIndjdG9tYiIgImFjX2N2X2Z1bmNfd2N0b21iIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVu Y193Y3RvbWIiID0geCIieWVzOyB0aGVuIDoKKy0gICRhc19lY2hvICIjZGVmaW5lIEhBVkVfV0NU T01CIDEiID4+Y29uZmRlZnMuaAorK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIndjc2Nv bGwiICJhY19jdl9mdW5jX3djc2NvbGwiCisraWYgdGVzdCAieCRhY19jdl9mdW5jX3djc2NvbGwi ID0geCIieWVzOyB0aGVuIDoKKysgICRhc19lY2hvICIjZGVmaW5lIEhBVkVfV0NTQ09MTCAxIiA+ PmNvbmZkZWZzLmgKKysKKytmaQorKworK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIndj c2R1cCIgImFjX2N2X2Z1bmNfd2NzZHVwIgorK2lmIHRlc3QgIngkYWNfY3ZfZnVuY193Y3NkdXAi ID0geCIieWVzOyB0aGVuIDoKKysgICRhc19lY2hvICIjZGVmaW5lIEhBVkVfV0NTRFVQIDEiID4+ Y29uZmRlZnMuaAorIAorIGZpCisgCitAQCAtNTY2OCw1NSArNTk1OCw4OSBAQCBpZiB0ZXN0ICJ4 JGFjX2N2X2Z1bmNfd2N3aWR0aCIgPSB4IiJ5ZXM7IHRoZW4gOgorIAorIGZpCisgCistYWNfZm5f Y19jaGVja19mdW5jICIkTElORU5PIiAid2NzZHVwIiAiYWNfY3ZfZnVuY193Y3NkdXAiCistaWYg dGVzdCAieCRhY19jdl9mdW5jX3djc2R1cCIgPSB4IiJ5ZXM7IHRoZW4gOgorLSAgJGFzX2VjaG8g IiNkZWZpbmUgSEFWRV9XQ1NEVVAgMSIgPj5jb25mZGVmcy5oCisrYWNfZm5fY19jaGVja19mdW5j ICIkTElORU5PIiAid2N0eXBlIiAiYWNfY3ZfZnVuY193Y3R5cGUiCisraWYgdGVzdCAieCRhY19j dl9mdW5jX3djdHlwZSIgPSB4IiJ5ZXM7IHRoZW4gOgorKyAgJGFzX2VjaG8gIiNkZWZpbmUgSEFW RV9XQ1RZUEUgMSIgPj5jb25mZGVmcy5oCisgCisgZmkKKyAKKyAKKy1pZiB0ZXN0ICIkYWNfY3Zf ZnVuY193Y3dpZHRoIiA9IG5vICYmIHRlc3QgIiRhY19jdl9oZWFkZXJfd2NoYXJfaCIgPSB5ZXM7 IHRoZW4KKy0gIFdDV0lEVEhfT0JKPXdjd2lkdGgubworK2ZvciBhY19mdW5jIGluIHdjc3dpZHRo CisrZG8gOgorKyAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAid2Nzd2lkdGgiICJhY19j dl9mdW5jX3djc3dpZHRoIgorK2lmIHRlc3QgIngkYWNfY3ZfZnVuY193Y3N3aWR0aCIgPSB4IiJ5 ZXM7IHRoZW4gOgorKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUgSEFWRV9X Q1NXSURUSCAxCisrX0FDRU9GCisrCisgZWxzZQorLSAgV0NXSURUSF9PQko9CisrICBjYXNlICIg JExJQk9CSlMgIiBpbgorKyAgKiIgJGFjX2Z1bmMuJGFjX29iamV4dCAiKiApIDs7CisrICAqKSBM SUJPQkpTPSIkTElCT0JKUyAkYWNfZnVuYy4kYWNfb2JqZXh0IgorKyA7OworK2VzYWMKKysKKyBm aQorK2RvbmUKKysKKysKKyAKKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGZvciBtYnN0YXRlX3QiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5n IGZvciBtYnN0YXRlX3QuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICIke2Jhc2hfY3ZfaGF2ZV9tYnN0 YXRlX3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIG1icnRvd2MgYW5kIG1ic3RhdGVfdCBhcmUg cHJvcGVybHkgZGVjbGFyZWQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgbWJy dG93YyBhbmQgbWJzdGF0ZV90IGFyZSBwcm9wZXJseSBkZWNsYXJlZC4uLiAiID4mNjsgfQorK2lm IHRlc3QgIiR7YWNfY3ZfZnVuY19tYnJ0b3djK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgICRhc19l Y2hvX24gIihjYWNoZWQpICIgPiY2CisgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP RiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKyAjaW5jbHVk ZSA8d2NoYXIuaD4KKyBpbnQKKyBtYWluICgpCisgeworLQorLSAgbWJzdGF0ZV90IHBzOworLSAg bWJzdGF0ZV90ICpwc3A7CistICBwc3AgPSAobWJzdGF0ZV90ICopMDsKKy0KKyt3Y2hhcl90IHdj OworKwkgICAgICBjaGFyIGNvbnN0IHNbXSA9ICIiOworKwkgICAgICBzaXplX3QgbiA9IDE7Cisr CSAgICAgIG1ic3RhdGVfdCBzdGF0ZTsKKysJICAgICAgcmV0dXJuICEgKHNpemVvZiBzdGF0ZSAm JiAobWJydG93YykgKCZ3YywgcywgbiwgJnN0YXRlKSk7CisgICA7CisgICByZXR1cm4gMDsKKyB9 CisgX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorLSAg YmFzaF9jdl9oYXZlX21ic3RhdGVfdD15ZXMKKytpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5P IjsgdGhlbiA6CisrICBhY19jdl9mdW5jX21icnRvd2M9eWVzCisgZWxzZQorLSAgYmFzaF9jdl9o YXZlX21ic3RhdGVfdD1ubworKyAgYWNfY3ZfZnVuY19tYnJ0b3djPW5vCisgZmkKKy1ybSAtZiBj b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyty bSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKysgICAgY29uZnRl c3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyBmaQorLXsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl9oYXZlX21ic3RhdGVfdCIgPiY1 CistJGFzX2VjaG8gIiRiYXNoX2N2X2hhdmVfbWJzdGF0ZV90IiA+JjY7IH0KKy1pZiB0ZXN0ICRi YXNoX2N2X2hhdmVfbWJzdGF0ZV90ID0geWVzOyB0aGVuCisreyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9mdW5jX21icnRvd2MiID4mNQorKyRh c19lY2hvICIkYWNfY3ZfZnVuY19tYnJ0b3djIiA+JjY7IH0KKysgIGlmIHRlc3QgJGFjX2N2X2Z1 bmNfbWJydG93YyA9IHllczsgdGhlbgorKworKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfTUJSVE9X QyAxIiA+PmNvbmZkZWZzLmgKKysKKysgIGZpCisrCisraWYgdGVzdCAkYWNfY3ZfZnVuY19tYnJ0 b3djID0geWVzOyB0aGVuCisgCSRhc19lY2hvICIjZGVmaW5lIEhBVkVfTUJTVEFURV9UIDEiID4+ Y29uZmRlZnMuaAorIAorIGZpCisgCisrZm9yIGFjX2Z1bmMgaW4gaXN3bG93ZXIgaXN3dXBwZXIg dG93bG93ZXIgdG93dXBwZXIgaXN3Y3R5cGUKKytkbyA6CisrICBhc19hY192YXI9YCRhc19lY2hv ICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKKythY19mbl9jX2NoZWNrX2Z1bmMg IiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCisrZXZhbCBhc192YWw9XCQkYXNfYWNf dmFyCisrICAgaWYgdGVzdCAieCRhc192YWwiID0geCIieWVzOyB0aGVuIDoKKysgIGNhdCA+PmNv bmZkZWZzLmggPDxfQUNFT0YKKysjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfZnVuYyIgfCAk YXNfdHJfY3BwYCAxCisrX0FDRU9GCisrCisrZmkKKytkb25lCisrCisrCisgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbmxfbGFuZ2luZm8gYW5k IENPREVTRVQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciBubF9sYW5naW5mbyBhbmQg Q09ERVNFVC4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7YmFzaF9jdl9sYW5naW5mb19jb2Rlc2V0 K3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC01NzQ4LDYgKzYwNzIsMTI2IEBAIGlmIHRlc3QgJGJh c2hfY3ZfbGFuZ2luZm9fY29kZXNldCA9IHllczsgdGhlbgorIAorIGZpCisgCisreyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd2NoYXJfdCBpbiB3 Y2hhci5oIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igd2NoYXJfdCBpbiB3Y2hhci5o Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtiYXNoX2N2X3R5cGVfd2NoYXJfdCtzZXR9IiA9IHNl dDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBj b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMu aC4gICovCisrI2luY2x1ZGUgPHdjaGFyLmg+CisrCisraW50CisrbWFpbiAoKQorK3sKKysKKysg ICAgICAgIHdjaGFyX3QgZm9vOworKyAgICAgICAgZm9vID0gMDsKKysKKysgIDsKKysgIHJldHVy biAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhl biA6CisrICBiYXNoX2N2X3R5cGVfd2NoYXJfdD15ZXMKKytlbHNlCisrICBiYXNoX2N2X3R5cGVf d2NoYXJfdD1ubworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i amV4dCBjb25mdGVzdC4kYWNfZXh0CisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJGJhc2hfY3ZfdHlwZV93Y2hhcl90IiA+JjUKKyskYXNfZWNo byAiJGJhc2hfY3ZfdHlwZV93Y2hhcl90IiA+JjY7IH0KKytpZiB0ZXN0ICRiYXNoX2N2X3R5cGVf d2NoYXJfdCA9IHllczsgdGhlbgorKworKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfV0NIQVJfVCAx IiA+PmNvbmZkZWZzLmgKKysKKytmaQorKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdjdHlwZV90IGluIHdjdHlwZS5oIiA+JjUKKyskYXNf ZWNob19uICJjaGVja2luZyBmb3Igd2N0eXBlX3QgaW4gd2N0eXBlLmguLi4gIiA+JjY7IH0KKytp ZiB0ZXN0ICIke2Jhc2hfY3ZfdHlwZV93Y3R5cGVfdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAk YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxf QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrI2luY2x1 ZGUgPHdjdHlwZS5oPgorK2ludAorK21haW4gKCkKKyt7CisrCisrICAgICAgICB3Y3R5cGVfdCBm b287CisrICAgICAgICBmb28gPSAwOworKworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VP RgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGJhc2hfY3Zf dHlwZV93Y3R5cGVfdD15ZXMKKytlbHNlCisrICBiYXNoX2N2X3R5cGVfd2N0eXBlX3Q9bm8KKytm aQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3Qu JGFjX2V4dAorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRiYXNoX2N2X3R5cGVfd2N0eXBlX3QiID4mNQorKyRhc19lY2hvICIkYmFzaF9jdl90 eXBlX3djdHlwZV90IiA+JjY7IH0KKytpZiB0ZXN0ICRiYXNoX2N2X3R5cGVfd2N0eXBlX3QgPSB5 ZXM7IHRoZW4KKysKKyskYXNfZWNobyAiI2RlZmluZSBIQVZFX1dDVFlQRV9UIDEiID4+Y29uZmRl ZnMuaAorKworK2ZpCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyBmb3Igd2ludF90IGluIHdjdHlwZS5oIiA+JjUKKyskYXNfZWNob19uICJjaGVj a2luZyBmb3Igd2ludF90IGluIHdjdHlwZS5oLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtiYXNo X2N2X3R5cGVfd2ludF90K3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNo ZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu JGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysjaW5jbHVkZSA8d2N0eXBlLmg+Cisr aW50CisrbWFpbiAoKQorK3sKKysKKysgICAgICAgIHdpbnRfdCBmb287CisrICAgICAgICBmb28g PSAwOworKworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5 X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGJhc2hfY3ZfdHlwZV93aW50X3Q9eWVzCisr ZWxzZQorKyAgYmFzaF9jdl90eXBlX3dpbnRfdD1ubworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVz dC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisrZmkKKyt7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGJhc2hfY3ZfdHlwZV93 aW50X3QiID4mNQorKyRhc19lY2hvICIkYmFzaF9jdl90eXBlX3dpbnRfdCIgPiY2OyB9CisraWYg dGVzdCAkYmFzaF9jdl90eXBlX3dpbnRfdCA9IHllczsgdGhlbgorKworKyRhc19lY2hvICIjZGVm aW5lIEhBVkVfV0lOVF9UIDEiID4+Y29uZmRlZnMuaAorKworK2ZpCisrCisraWYgdGVzdCAiJGFt X2N2X2Z1bmNfaWNvbnYiID0geWVzOyB0aGVuCisrCU9MRExJQlM9IiRMSUJTIgorKwlMSUJTPSIk TElCUyAkTElCSUNPTlYiCisrCWZvciBhY19mdW5jIGluIGxvY2FsZV9jaGFyc2V0CisrZG8gOgor KyAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAibG9jYWxlX2NoYXJzZXQiICJhY19jdl9m dW5jX2xvY2FsZV9jaGFyc2V0IgorK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19sb2NhbGVfY2hhcnNl dCIgPSB4IiJ5ZXM7IHRoZW4gOgorKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZp bmUgSEFWRV9MT0NBTEVfQ0hBUlNFVCAxCisrX0FDRU9GCisrCisrZmkKKytkb25lCisrCisrCUxJ QlM9IiRPTERMSUJTIgorK2ZpCisrCisgCisgCisgY2FzZSAiJGhvc3RfY3B1IiBpbgorQEAgLTYz NTcsNyArNjgwMSw3IEBAIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0 ZV9mYWlsPTEKKyAjIHJlcG9ydCBhY3R1YWwgaW5wdXQgdmFsdWVzIG9mIENPTkZJR19GSUxFUyBl dGMuIGluc3RlYWQgb2YgdGhlaXIKKyAjIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5nLgor IGFjX2xvZz0iCistVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSByZWFkbGluZSAkYXNfbWUgNS4x LXJlbGVhc2UsIHdoaWNoIHdhcworK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcmVhZGxpbmUg JGFzX21lIDYuMiwgd2hpY2ggd2FzCisgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY0LiAg SW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCisgCisgICBDT05GSUdfRklMRVMgICAgPSAkQ09O RklHX0ZJTEVTCitAQCAtNjQyMSw3ICs2ODY1LDcgQEAgUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1yZWFk bGluZUBnbnUub3JnPi4iCisgX0FDRU9GCisgY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0Yg fHwgYWNfd3JpdGVfZmFpbD0xCisgYWNfY3NfdmVyc2lvbj0iXFwKKy1yZWFkbGluZSBjb25maWcu c3RhdHVzIDUuMS1yZWxlYXNlCisrcmVhZGxpbmUgY29uZmlnLnN0YXR1cyA2LjIKKyBjb25maWd1 cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjQsCisgICB3aXRoIG9wdGlv bnMgXFwiYCRhc19lY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xc IiJcYFwkXS9cXFxcJi9nJ2BcXCIKKyAKKy0tLSBhL3JlYWRsaW5lL2NvbmZpZ3VyZS5pbgorKysr IGIvcmVhZGxpbmUvY29uZmlndXJlLmluCitAQCAtNSwyOCArNSwyNiBAQCBkbmwgcmVwb3J0IGJ1 Z3MgdG8gY2hldEBwby5jd3J1LmVkdQorIGRubAorIGRubCBQcm9jZXNzIHRoaXMgZmlsZSB3aXRo IGF1dG9jb25mIHRvIHByb2R1Y2UgYSBjb25maWd1cmUgc2NyaXB0LgorIAorLSMgQ29weXJpZ2h0 IChDKSAxOTg3LTIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyBDb3B5cmln aHQgKEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0jIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CistIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSMgYW55IGxhdGVyIHZl cnNpb24uCisrIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisrIyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK Ky0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCistIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCistIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK Ky0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlCistIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAs IEJvc3RvbiwgTUEKKy0jIDAyMTExLTEzMDcsIFVTQS4KKysjICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisgCistQUNfUkVWSVNJT04oW2ZvciBSZWFkbGluZSA1LjEsIHZlcnNpb24gMi41 OV0pCisrQUNfUkVWSVNJT04oW2ZvciBSZWFkbGluZSA2LjIsIHZlcnNpb24gMi42N10pCisgCisg bTRfaW5jbHVkZShbLi4vY29uZmlnL292ZXJyaWRlLm00XSkKKyAKKy1BQ19JTklUKHJlYWRsaW5l LCA1LjEtcmVsZWFzZSwgYnVnLXJlYWRsaW5lQGdudS5vcmcpCisrQUNfSU5JVChyZWFkbGluZSwg Ni4yLCBidWctcmVhZGxpbmVAZ251Lm9yZykKKyAKKyBkbmwgbWFrZSBzdXJlIHdlIGFyZSB1c2lu ZyBhIHJlY2VudCBhdXRvY29uZiB2ZXJzaW9uCisgQUNfUFJFUkVRKDIuNTApCitAQCAtMzgsNyAr MzYsNyBAQCBBQ19DT05GSUdfQVVYX0RJUihgY2QgJHNyY2Rpcjtwd2RgLy4uKQorIEFDX0NPTkZJ R19IRUFERVJTKGNvbmZpZy5oKQorIAorIGRubCB1cGRhdGUgdGhlIHZhbHVlIG9mIFJMX1JFQURM SU5FX1ZFUlNJT04gaW4gcmVhZGxpbmUuaCB3aGVuIHRoaXMgY2hhbmdlcworLUxJQlZFUlNJT049 NS4xCisrTElCVkVSU0lPTj02LjIKKyAKKyBBQ19DQU5PTklDQUxfSE9TVAorIAorQEAgLTExNSw0 NCArMTEzLDYgQEAgQUNfUFJPR19DQworIGRubCBBQ19BSVgKKyBBQ19NSU5JWAorIAorLWRubCBC RUdJTiBjaGFuZ2VzIGZvciBDWUdOVVMgY3Jvc3MtYnVpbGRpbmcgZm9yIEN5Z3dpbgorLWRubCBO T1RFOiBTb21lIG9mIHRoZXNlIGNoYW5nZXMgbWF5IG5vIGxvbmdlciBiZSBuZWNlc3NhcnkuCist CistZG5sIGxvYWQgdXAgdGhlIGNyb3NzLWJ1aWxkaW5nIGNhY2hlIGZpbGUgLS0gYWRkIG1vcmUg Y2FzZXMgYW5kIGNhY2hlCistZG5sIGZpbGVzIGFzIG5lY2Vzc2FyeQorLWlmIHRlc3QgIngkY3Jv c3NfY29tcGlsaW5nIiA9ICJ4eWVzIjsgdGhlbgorLSAgICBjYXNlICIke2hvc3R9IiBpbgorLSAg ICAqLWN5Z3dpbiopCistCWNyb3NzX2NhY2hlPSR7c3JjZGlyfS9jcm9zcy1idWlsZC9jeWd3aW4u Y2FjaGUKKy0JTE9DQUxfQ0ZMQUdTPSIkTE9DQUxfQ0ZMQUdTIC1JJHtzcmNkaXJ9Ly4uL2xpYnRl cm1jYXAiCistCTs7CistICAgKi1taW5ndzMyKikJCistCWNyb3NzX2NhY2hlPSR7c3JjZGlyfS9j cm9zcy1idWlsZC9taW5ndy5jYWNoZQorLSAgICAgICAgOzsKKy0gICAgKikgIGVjaG8gImNvbmZp Z3VyZTogY3Jvc3MtY29tcGlsaW5nIGZvciBhIG5vbi1jeWd3aW4gdGFyZ2V0IGlzIG5vdCBzdXBw b3J0ZWQiID4mMgorLQk7OworLSAgICBlc2FjCistCistICAgIGlmIHRlc3QgIngkY3Jvc3NfY2Fj aGUiICE9ICJ4IjsgdGhlbgorLQlpZiB0ZXN0IC1yICIke2Nyb3NzX2NhY2hlfSI7IHRoZW4KKy0J ICAgIGVjaG8gImxvYWRpbmcgY3Jvc3MtYnVpbGQgY2FjaGUgZmlsZSAke2Nyb3NzX2NhY2hlfSIK Ky0JICAgIC4gJHtjcm9zc19jYWNoZX0KKy0JZmkKKy0JdW5zZXQgY3Jvc3NfY2FjaGUKKy0gICAg ZmkKKy1maQorLQorLWlmIHRlc3QgLXogIiRDQ19GT1JfQlVJTEQiOyB0aGVuCistICAgIGlmIHRl c3QgIngkY3Jvc3NfY29tcGlsaW5nIiA9ICJ4bm8iOyB0aGVuCistICAgICAgICBDQ19GT1JfQlVJ TEQ9JyQoQ0MpJworLSAgICBlbHNlCistICAgICAgICBDQ19GT1JfQlVJTEQ9Z2NjCistICAgIGZp CistZmkKKy1BQ19TVUJTVChDQ19GT1JfQlVJTEQpCistIAorLWRubCBFTkQgY2hhbmdlcyBmb3Ig Q1lHTlVTIGNyb3NzLWJ1aWxkaW5nIGZvciBDeWd3aW4KKy0KKyAjIElmIHdlJ3JlIHVzaW5nIGdj YyBhbmQgdGhlIHVzZXIgaGFzbid0IHNwZWNpZmllZCBDRkxBR1MsIGFkZCAtTyB0byBDRkxBR1Mu CisgdGVzdCAtbiAiJEdDQyIgJiYgdGVzdCAtbiAiJGF1dG9fY2ZsYWdzIiAmJiBDRkxBR1M9IiRD RkxBR1MgLU8iCisgCitAQCAtMTcwLDYgKzEzMCw3IEBAIEFDX1NVQlNUKE1BS0VfU0hFTEwpCisg QUNfQ19DT05TVAorIEFDX0NfUFJPVE9UWVBFUworIEFDX0NfQ0hBUl9VTlNJR05FRAorK0FDX0Nf Vk9MQVRJTEUKKyAKKyBBQ19UWVBFX1NJR05BTAorIAorQEAgLTIwMCw2ICsxNjEsOCBAQCBBQ19D SEVDS19IRUFERVJTKHN5cy9wdGVtLmgsLCwKKyAjZW5kaWYKKyBdXSkKKyAKKytBQ19TWVNfTEFS R0VGSUxFCisrCisgQkFTSF9TWVNfU0lHTkFMX1ZJTlRBR0UKKyBCQVNIX1NZU19SRUlOU1RBTExf U0lHSEFORExFUlMKKyAKK0BAIC0yMTIsNyArMTc1LDkgQEAgQkFTSF9DSEVDS19HRVRQV19GVU5D UworIAorIEFDX0hFQURFUl9USU9DR1dJTlNaCisgCisrQkFTSF9UWVBFX1NJR19BVE9NSUNfVAor IEJBU0hfVFlQRV9TSUdIQU5ETEVSCisrCisgQkFTSF9IQVZFX1RJT0NTVEFUCisgQkFTSF9IQVZF X0ZJT05SRUFECisgQkFTSF9DSEVDS19TUEVFRF9UCistLS0gYS9yZWFkbGluZS9kaXNwbGF5LmMK KysrKyBiL3JlYWRsaW5lL2Rpc3BsYXkuYworQEAgLTEsMjQgKzEsMjQgQEAKKyAvKiBkaXNwbGF5 LmMgLS0gcmVhZGxpbmUgcmVkaXNwbGF5IGZhY2lsaXR5LiAqLworIAorLS8qIENvcHlyaWdodCAo QykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdo dCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZv cgorLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBo aXN0b3J5IGVkaXRpbmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGlu ZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeSAgICAKKysgICBmb3IgcmVhZGluZyBsaW5l cyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKyAK Ky0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFkbGlu ZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0gICBv ZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBp cyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElm IHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMz MCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRo IFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgor KyovCisrCisgI2RlZmluZSBSRUFETElORV9MSUJSQVJZCisgCisgI2lmIGRlZmluZWQgKEhBVkVf Q09ORklHX0gpCitAQCAtNjMsMzAgKzYzLDU5IEBACisgZXh0ZXJuIGNoYXIgKnN0cmNociAoKSwg KnN0cnJjaHIgKCk7CisgI2VuZGlmIC8qICFzdHJjaHIgJiYgIV9fU1REQ19fICovCisgCistI2lm IGRlZmluZWQgKEhBQ0tfVEVSTUNBUF9NT1RJT04pCistZXh0ZXJuIGNoYXIgKl9ybF90ZXJtX2Zv cndhcmRfY2hhcjsKKy0jZW5kaWYKKy0KKyBzdGF0aWMgdm9pZCB1cGRhdGVfbGluZSBQQVJBTVMo KGNoYXIgKiwgY2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQpKTsKKyBzdGF0aWMgdm9pZCBzcGFj ZV90b19lb2wgUEFSQU1TKChpbnQpKTsKKyBzdGF0aWMgdm9pZCBkZWxldGVfY2hhcnMgUEFSQU1T KChpbnQpKTsKKyBzdGF0aWMgdm9pZCBpbnNlcnRfc29tZV9jaGFycyBQQVJBTVMoKGNoYXIgKiwg aW50LCBpbnQpKTsKKyBzdGF0aWMgdm9pZCBjciBQQVJBTVMoKHZvaWQpKTsKKyAKKysvKiBTdGF0 ZSBvZiB2aXNpYmxlIGFuZCBpbnZpc2libGUgbGluZXMuICovCisrc3RydWN0IGxpbmVfc3RhdGUK KysgIHsKKysgICAgY2hhciAqbGluZTsKKysgICAgaW50ICpsYnJlYWtzOworKyAgICBpbnQgbGJz aXplOworICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQorLXN0YXRpYyBpbnQgX3JsX2Nv bF93aWR0aCBQQVJBTVMoKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpKTsKKy1zdGF0aWMgaW50ICpf cmxfd3JhcHBlZF9saW5lOworLSNlbHNlCistIyAgZGVmaW5lIF9ybF9jb2xfd2lkdGgobCwgcywg ZSkJKCgoZSkgPD0gKHMpKSA/IDAgOiAoZSkgLSAocykpCisrICAgIGludCAqd3JhcHBlZF9saW5l OworKyAgICBpbnQgd2JzaXplOworICNlbmRpZgorKyAgfTsKKysKKysvKiBUaGUgbGluZSBkaXNw bGF5IGJ1ZmZlcnMuICBPbmUgaXMgdGhlIGxpbmUgY3VycmVudGx5IGRpc3BsYXllZCBvbgorKyAg IHRoZSBzY3JlZW4uICBUaGUgb3RoZXIgaXMgdGhlIGxpbmUgYWJvdXQgdG8gYmUgZGlzcGxheWVk LiAqLworK3N0YXRpYyBzdHJ1Y3QgbGluZV9zdGF0ZSBsaW5lX3N0YXRlX2FycmF5WzJdOworK3N0 YXRpYyBzdHJ1Y3QgbGluZV9zdGF0ZSAqbGluZV9zdGF0ZV92aXNpYmxlID0gJmxpbmVfc3RhdGVf YXJyYXlbMF07Cisrc3RhdGljIHN0cnVjdCBsaW5lX3N0YXRlICpsaW5lX3N0YXRlX2ludmlzaWJs ZSA9ICZsaW5lX3N0YXRlX2FycmF5WzFdOworK3N0YXRpYyBpbnQgbGluZV9zdHJ1Y3R1cmVzX2lu aXRpYWxpemVkID0gMDsKKyAKKy1zdGF0aWMgaW50ICppbnZfbGJyZWFrcywgKnZpc19sYnJlYWtz OworLXN0YXRpYyBpbnQgaW52X2xic2l6ZSwgdmlzX2xic2l6ZTsKKysvKiBCYWNrd2FyZHMtY29t cGF0aWJsZSBuYW1lcy4gKi8KKysjZGVmaW5lIGludl9sYnJlYWtzCShsaW5lX3N0YXRlX2ludmlz aWJsZS0+bGJyZWFrcykKKysjZGVmaW5lIGludl9sYnNpemUJKGxpbmVfc3RhdGVfaW52aXNpYmxl LT5sYnNpemUpCisrI2RlZmluZSB2aXNfbGJyZWFrcwkobGluZV9zdGF0ZV92aXNpYmxlLT5sYnJl YWtzKQorKyNkZWZpbmUgdmlzX2xic2l6ZQkobGluZV9zdGF0ZV92aXNpYmxlLT5sYnNpemUpCisr CisrI2RlZmluZSB2aXNpYmxlX2xpbmUJKGxpbmVfc3RhdGVfdmlzaWJsZS0+bGluZSkKKysjZGVm aW5lIGludmlzaWJsZV9saW5lCShsaW5lX3N0YXRlX2ludmlzaWJsZS0+bGluZSkKKysKKysjaWYg ZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKKytzdGF0aWMgaW50IF9ybF9jb2xfd2lkdGggUEFS QU1TKChjb25zdCBjaGFyICosIGludCwgaW50LCBpbnQpKTsKKysjZWxzZQorKyMgIGRlZmluZSBf cmxfY29sX3dpZHRoKGwsIHMsIGUsIGYpCSgoKGUpIDw9IChzKSkgPyAwIDogKGUpIC0gKHMpKQor KyNlbmRpZgorIAorIC8qIEhldXJpc3RpYyB1c2VkIHRvIGRlY2lkZSB3aGV0aGVyIGl0IGlzIGZh c3RlciB0byBtb3ZlIGZyb20gQ1VSIHRvIE5FVworLSAgIGJ5IGJhY2tpbmcgdXAgb3Igb3V0cHV0 dGluZyBhIGNhcnJpYWdlIHJldHVybiBhbmQgbW92aW5nIGZvcndhcmQuICovCisrICAgYnkgYmFj a2luZyB1cCBvciBvdXRwdXR0aW5nIGEgY2FycmlhZ2UgcmV0dXJuIGFuZCBtb3ZpbmcgZm9yd2Fy ZC4gIENVUgorKyAgIGFuZCBORVcgYXJlIGVpdGhlciBib3RoIGJ1ZmZlciBwb3NpdGlvbnMgb3Ig YWJzb2x1dGUgc2NyZWVuIHBvc2l0aW9ucy4gKi8KKyAjZGVmaW5lIENSX0ZBU1RFUihuZXcsIGN1 cikgKCgobmV3KSArIDEpIDwgKChjdXIpIC0gKG5ldykpKQorIAorKy8qIF9ybF9sYXN0X2NfcG9z IGlzIGFuIGFic29sdXRlIGN1cnNvciBwb3NpdGlvbiBpbiBtdWx0aWJ5dGUgbG9jYWxlcyBhbmQg YQorKyAgIGJ1ZmZlciBpbmRleCBpbiBvdGhlcnMuICBUaGlzIG1hY3JvIGlzIHVzZWQgd2hlbiBk ZWNpZGluZyB3aGV0aGVyIHRoZQorKyAgIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIGlzIGluIHRo ZSBtaWRkbGUgb2YgYSBwcm9tcHQgc3RyaW5nIGNvbnRhaW5pbmcKKysgICBpbnZpc2libGUgY2hh cmFjdGVycy4gIFhYWCAtIG1pZ2h0IG5lZWQgdG8gdGFrZSBgbW9kbWFyaycgaW50byBhY2NvdW50 LiAqLworKyNkZWZpbmUgUFJPTVBUX0VORElOR19JTkRFWCBcCisrICAoKE1CX0NVUl9NQVggPiAx ICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkgPyBwcm9tcHRfcGh5c2ljYWxfY2hhcnMgOiBwcm9t cHRfbGFzdF9pbnZpc2libGUrMSkKKysgIAorKworIC8qICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKyAvKgkJCQkJCQkJ ICAgICovCisgLyoJCQlEaXNwbGF5IHN0dWZmCQkJCSAgICAqLworQEAgLTEzOSw2ICsxNjgsOCBA QCBpbnQgX3JsX2xhc3RfY19wb3MgPSAwOworIGludCBfcmxfbGFzdF92X3BvcyA9IDA7CisgCisg c3RhdGljIGludCBjcG9zX2FkanVzdGVkOworK3N0YXRpYyBpbnQgY3Bvc19idWZmZXJfcG9zaXRp b247Cisrc3RhdGljIGludCBwcm9tcHRfbXVsdGlieXRlX2NoYXJzOworIAorIC8qIE51bWJlciBv ZiBsaW5lcyBjdXJyZW50bHkgb24gc2NyZWVuIG1pbnVzIDEuICovCisgaW50IF9ybF92aXNfYm90 bGluID0gMDsKK0BAIC0xNDgsMTEgKzE3OSw2IEBAIGludCBfcmxfdmlzX2JvdGxpbiA9IDA7Cisg ICAgZG9pbmcgaG9yaXpvbnRhbCBzY3JvbGxpbmcuICBJdCBzaGlmdHMgaW4gdGhpcmRzIG9mIGEg c2NyZWVud2lkdGguICovCisgc3RhdGljIGludCBsYXN0X2xtYXJnaW47CisgCistLyogVGhlIGxp bmUgZGlzcGxheSBidWZmZXJzLiAgT25lIGlzIHRoZSBsaW5lIGN1cnJlbnRseSBkaXNwbGF5ZWQg b24KKy0gICB0aGUgc2NyZWVuLiAgVGhlIG90aGVyIGlzIHRoZSBsaW5lIGFib3V0IHRvIGJlIGRp c3BsYXllZC4gKi8KKy1zdGF0aWMgY2hhciAqdmlzaWJsZV9saW5lID0gKGNoYXIgKilOVUxMOwor LXN0YXRpYyBjaGFyICppbnZpc2libGVfbGluZSA9IChjaGFyICopTlVMTDsKKy0KKyAvKiBBIGJ1 ZmZlciBmb3IgYG1vZGVsaW5lJyBtZXNzYWdlcy4gKi8KKyBzdGF0aWMgY2hhciBtc2dfYnVmWzEy OF07CisgCitAQCAtMTY2LDYgKzE5Miw3IEBAIHN0YXRpYyBpbnQgbGluZV9zaXplID0gMTAyNDsK KyAgICBpbmNsdWRlIGludmlzaWJsZSBjaGFyYWN0ZXJzLiAqLworIAorIHN0YXRpYyBjaGFyICps b2NhbF9wcm9tcHQsICpsb2NhbF9wcm9tcHRfcHJlZml4OworK3N0YXRpYyBpbnQgbG9jYWxfcHJv bXB0X2xlbjsKKyBzdGF0aWMgaW50IHByb21wdF92aXNpYmxlX2xlbmd0aCwgcHJvbXB0X3ByZWZp eF9sZW5ndGg7CisgCisgLyogVGhlIG51bWJlciBvZiBpbnZpc2libGUgY2hhcmFjdGVycyBpbiB0 aGUgbGluZSBjdXJyZW50bHkgYmVpbmcKK0BAIC0xOTIsNiArMjE5LDEwIEBAIHN0YXRpYyBpbnQg cHJvbXB0X2xhc3Rfc2NyZWVuX2xpbmU7CisgCisgc3RhdGljIGludCBwcm9tcHRfcGh5c2ljYWxf Y2hhcnM7CisgCisrLyogc2V0IHRvIGEgbm9uLXplcm8gdmFsdWUgYnkgcmxfcmVkaXNwbGF5IGlm IHdlIGFyZSBtYXJraW5nIG1vZGlmaWVkIGhpc3RvcnkKKysgICBsaW5lcyBhbmQgdGhlIGN1cnJl bnQgbGluZSBpcyBzbyBtYXJrZWQuICovCisrc3RhdGljIGludCBtb2RtYXJrOworKworIC8qIFZh cmlhYmxlcyB0byBzYXZlIGFuZCByZXN0b3JlIHByb21wdCBhbmQgZGlzcGxheSBpbmZvcm1hdGlv bi4gKi8KKyAKKyAvKiBUaGVzZSBhcmUgZ2V0dGluZyBudW1lcm91cyBlbm91Z2ggdGhhdCBpdCdz IHRpbWUgdG8gY3JlYXRlIGEgc3RydWN0LiAqLworQEAgLTIwMSw2ICsyMzIsNyBAQCBzdGF0aWMg Y2hhciAqc2F2ZWRfbG9jYWxfcHJlZml4OworIHN0YXRpYyBpbnQgc2F2ZWRfbGFzdF9pbnZpc2li bGU7Cisgc3RhdGljIGludCBzYXZlZF92aXNpYmxlX2xlbmd0aDsKKyBzdGF0aWMgaW50IHNhdmVk X3ByZWZpeF9sZW5ndGg7Cisrc3RhdGljIGludCBzYXZlZF9sb2NhbF9sZW5ndGg7Cisgc3RhdGlj IGludCBzYXZlZF9pbnZpc19jaGFyc19maXJzdF9saW5lOworIHN0YXRpYyBpbnQgc2F2ZWRfcGh5 c2ljYWxfY2hhcnM7CisgCitAQCAtMjI0LDcgKzI1Niw3IEBAIGV4cGFuZF9wcm9tcHQgKHBtdCwg bHAsIGxpcCwgbmlmbHAsIHZscCkKKyAgICAgIGNoYXIgKnBtdDsKKyAgICAgIGludCAqbHAsICps aXAsICpuaWZscCwgKnZscDsKKyB7CistICBjaGFyICpyLCAqcmV0LCAqcDsKKysgIGNoYXIgKnIs ICpyZXQsICpwLCAqaWdzdGFydDsKKyAgIGludCBsLCBybCwgbGFzdCwgaWdub3JpbmcsIG5pbnZp cywgaW52ZmwsIGludmZsc2V0LCBpbmQsIHBpbmQsIHBoeXNjaGFyczsKKyAKKyAgIC8qIFNob3J0 LWNpcmN1aXQgaWYgd2UgY2FuLiAqLworQEAgLTI0OCwxOSArMjgwLDIxIEBAIGV4cGFuZF9wcm9t cHQgKHBtdCwgbHAsIGxpcCwgbmlmbHAsIHZscCkKKyAgIGludmZsID0gMDsJLyogaW52aXNpYmxl IGNoYXJzIGluIGZpcnN0IGxpbmUgb2YgcHJvbXB0ICovCisgICBpbnZmbHNldCA9IDA7CS8qIHdl IG9ubHkgd2FudCB0byBzZXQgaW52Zmwgb25jZSAqLworIAorKyAgaWdzdGFydCA9IDA7CisgICBm b3IgKHJsID0gaWdub3JpbmcgPSBsYXN0ID0gbmludmlzID0gcGh5c2NoYXJzID0gMCwgcCA9IHBt dDsgcCAmJiAqcDsgcCsrKQorICAgICB7CisgICAgICAgLyogVGhpcyBjb2RlIHN0cmlwcyB0aGUg aW52aXNpYmxlIGNoYXJhY3RlciBzdHJpbmcgbWFya2VycworIAkgUkxfUFJPTVBUX1NUQVJUX0lH Tk9SRSBhbmQgUkxfUFJPTVBUX0VORF9JR05PUkUgKi8KKy0gICAgICBpZiAoKnAgPT0gUkxfUFJP TVBUX1NUQVJUX0lHTk9SRSkKKysgICAgICBpZiAoaWdub3JpbmcgPT0gMCAmJiAqcCA9PSBSTF9Q Uk9NUFRfU1RBUlRfSUdOT1JFKQkJLyogWFhYIC0gY2hlY2sgaWdub3Jpbmc/ICovCisgCXsKKy0J ICBpZ25vcmluZysrOworKwkgIGlnbm9yaW5nID0gMTsKKysJICBpZ3N0YXJ0ID0gcDsKKyAJICBj b250aW51ZTsKKyAJfQorICAgICAgIGVsc2UgaWYgKGlnbm9yaW5nICYmICpwID09IFJMX1BST01Q VF9FTkRfSUdOT1JFKQorIAl7CisgCSAgaWdub3JpbmcgPSAwOworLQkgIGlmIChwWy0xXSAhPSBS TF9QUk9NUFRfU1RBUlRfSUdOT1JFKQorKwkgIGlmIChwICE9IChpZ3N0YXJ0ICsgMSkpCisgCSAg ICBsYXN0ID0gciAtIHJldCAtIDE7CisgCSAgY29udGludWU7CisgCX0KK0BAIC0yNzYsOCArMzEw LDEzIEBAIGV4cGFuZF9wcm9tcHQgKHBtdCwgbHAsIGxpcCwgbmlmbHAsIHZscCkKKyAJICAgICAg ICAqcisrID0gKnArKzsKKyAJICAgICAgaWYgKCFpZ25vcmluZykKKyAJCXsKKysJCSAgLyogcmwg ZW5kcyB1cCBiZWluZyBhc3NpZ25lZCB0byBwcm9tcHRfdmlzaWJsZV9sZW5ndGgsCisrCQkgICAg IHdoaWNoIGlzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgYnVmZmVyIHRoYXQKKysJ CSAgICAgY29udHJpYnV0ZSB0byBjaGFyYWN0ZXJzIG9uIHRoZSBzY3JlZW4sIHdoaWNoIG1pZ2h0 CisrCQkgICAgIG5vdCBiZSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIHBoeXNpY2FsIGNoYXJh Y3RlcnMKKysJCSAgICAgb24gdGhlIHNjcmVlbiBpbiB0aGUgcHJlc2VuY2Ugb2YgbXVsdGlieXRl IGNoYXJhY3RlcnMgKi8KKyAJCSAgcmwgKz0gaW5kIC0gcGluZDsKKy0JCSAgcGh5c2NoYXJzICs9 IF9ybF9jb2xfd2lkdGggKHBtdCwgcGluZCwgaW5kKTsKKysJCSAgcGh5c2NoYXJzICs9IF9ybF9j b2xfd2lkdGggKHBtdCwgcGluZCwgaW5kLCAwKTsKKyAJCX0KKyAJICAgICAgZWxzZQorIAkJbmlu dmlzICs9IGluZCAtIHBpbmQ7CitAQCAtMzYwLDYgKzM5OSw3IEBAIHJsX2V4cGFuZF9wcm9tcHQg KHByb21wdCkKKyAgIEZSRUUgKGxvY2FsX3Byb21wdF9wcmVmaXgpOworIAorICAgbG9jYWxfcHJv bXB0ID0gbG9jYWxfcHJvbXB0X3ByZWZpeCA9IChjaGFyICopMDsKKysgIGxvY2FsX3Byb21wdF9s ZW4gPSAwOworICAgcHJvbXB0X2xhc3RfaW52aXNpYmxlID0gcHJvbXB0X2ludmlzX2NoYXJzX2Zp cnN0X2xpbmUgPSAwOworICAgcHJvbXB0X3Zpc2libGVfbGVuZ3RoID0gcHJvbXB0X3BoeXNpY2Fs X2NoYXJzID0gMDsKKyAKK0BAIC0zNzUsNiArNDE1LDcgQEAgcmxfZXhwYW5kX3Byb21wdCAocHJv bXB0KQorIAkJCQkJICAgICZwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSwKKyAJCQkJCSAg ICAmcHJvbXB0X3BoeXNpY2FsX2NoYXJzKTsKKyAgICAgICBsb2NhbF9wcm9tcHRfcHJlZml4ID0g KGNoYXIgKikwOworKyAgICAgIGxvY2FsX3Byb21wdF9sZW4gPSBsb2NhbF9wcm9tcHQgPyBzdHJs ZW4gKGxvY2FsX3Byb21wdCkgOiAwOworICAgICAgIHJldHVybiAocHJvbXB0X3Zpc2libGVfbGVu Z3RoKTsKKyAgICAgfQorICAgZWxzZQorQEAgLTM4MywxNiArNDI0LDE3IEBAIHJsX2V4cGFuZF9w cm9tcHQgKHByb21wdCkKKyAgICAgICB0ID0gKytwOworICAgICAgIGxvY2FsX3Byb21wdCA9IGV4 cGFuZF9wcm9tcHQgKHAsICZwcm9tcHRfdmlzaWJsZV9sZW5ndGgsCisgCQkJCSAgICAgICAmcHJv bXB0X2xhc3RfaW52aXNpYmxlLAorLQkJCQkgICAgICAgKGludCAqKU5VTEwsCisrCQkJCSAgICAg ICAmcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUsCisgCQkJCSAgICAgICAmcHJvbXB0X3Bo eXNpY2FsX2NoYXJzKTsKKyAgICAgICBjID0gKnQ7ICp0ID0gJ1wwJzsKKyAgICAgICAvKiBUaGUg cG9ydGlvbiBvZiB0aGUgcHJvbXB0IHN0cmluZyB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZQorIAkg ZmluYWwgbmV3bGluZSBpcyBub3cgbnVsbC10ZXJtaW5hdGVkLiAqLworICAgICAgIGxvY2FsX3By b21wdF9wcmVmaXggPSBleHBhbmRfcHJvbXB0IChwcm9tcHQsICZwcm9tcHRfcHJlZml4X2xlbmd0 aCwKKyAJCQkJCQkgICAoaW50ICopTlVMTCwKKy0JCQkJCQkgICAmcHJvbXB0X2ludmlzX2NoYXJz X2ZpcnN0X2xpbmUsCisrCQkJCQkJICAgKGludCAqKU5VTEwsCisgCQkJCQkJICAgKGludCAqKU5V TEwpOworICAgICAgICp0ID0gYzsKKysgICAgICBsb2NhbF9wcm9tcHRfbGVuID0gbG9jYWxfcHJv bXB0ID8gc3RybGVuIChsb2NhbF9wcm9tcHQpIDogMDsKKyAgICAgICByZXR1cm4gKHByb21wdF9w cmVmaXhfbGVuZ3RoKTsKKyAgICAgfQorIH0KK0BAIC00MzQsMTMgKzQ3NiwyMSBAQCBpbml0X2xp bmVfc3RydWN0dXJlcyAobWluc2l6ZSkKKyAgICAgeworICAgICAgIC8qIHNob3VsZCBiZSBlbm91 Z2guICovCisgICAgICAgaW52X2xic2l6ZSA9IHZpc19sYnNpemUgPSAyNTY7CistICAgICAgaW52 X2xicmVha3MgPSAoaW50ICopeG1hbGxvYyAoaW52X2xic2l6ZSAqIHNpemVvZiAoaW50KSk7Cist ICAgICAgdmlzX2xicmVha3MgPSAoaW50ICopeG1hbGxvYyAodmlzX2xic2l6ZSAqIHNpemVvZiAo aW50KSk7CisrCisgI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCistICAgICAgX3JsX3dy YXBwZWRfbGluZSA9IChpbnQgKil4bWFsbG9jICh2aXNfbGJzaXplICogc2l6ZW9mIChpbnQpKTsK KysgICAgICBsaW5lX3N0YXRlX3Zpc2libGUtPndic2l6ZSA9IHZpc19sYnNpemU7CisrICAgICAg bGluZV9zdGF0ZV92aXNpYmxlLT53cmFwcGVkX2xpbmUgPSAoaW50ICopeG1hbGxvYyAobGluZV9z dGF0ZV92aXNpYmxlLT53YnNpemUgKiBzaXplb2YgKGludCkpOworKworKyAgICAgIGxpbmVfc3Rh dGVfaW52aXNpYmxlLT53YnNpemUgPSBpbnZfbGJzaXplOworKyAgICAgIGxpbmVfc3RhdGVfaW52 aXNpYmxlLT53cmFwcGVkX2xpbmUgPSAoaW50ICopeG1hbGxvYyAobGluZV9zdGF0ZV9pbnZpc2li bGUtPndic2l6ZSAqIHNpemVvZiAoaW50KSk7CisgI2VuZGlmCisrCisrICAgICAgaW52X2xicmVh a3MgPSAoaW50ICopeG1hbGxvYyAoaW52X2xic2l6ZSAqIHNpemVvZiAoaW50KSk7CisrICAgICAg dmlzX2xicmVha3MgPSAoaW50ICopeG1hbGxvYyAodmlzX2xic2l6ZSAqIHNpemVvZiAoaW50KSk7 CisgICAgICAgaW52X2xicmVha3NbMF0gPSB2aXNfbGJyZWFrc1swXSA9IDA7CisgICAgIH0KKysK KysgIGxpbmVfc3RydWN0dXJlc19pbml0aWFsaXplZCA9IDE7CisgfQorICAgCisgLyogQmFzaWMg cmVkaXNwbGF5IGFsZ29yaXRobS4gKi8KK0BAIC00NDksOCArNDk5LDggQEAgcmxfcmVkaXNwbGF5 ICgpCisgeworICAgcmVnaXN0ZXIgaW50IGluLCBvdXQsIGMsIGxpbmVudW0sIGN1cnNvcl9saW5l bnVtOworICAgcmVnaXN0ZXIgY2hhciAqbGluZTsKKy0gIGludCBjX3BvcywgaW52X2JvdGxpbiwg bGJfYm90bGluLCBsYl9saW5lbnVtLCBvX2Nwb3M7CistICBpbnQgbmV3bGluZXMsIGxwb3MsIHRl bXAsIG1vZG1hcmssIG4wLCBudW07CisrICBpbnQgaW52X2JvdGxpbiwgbGJfYm90bGluLCBsYl9s aW5lbnVtLCBvX2Nwb3M7CisrICBpbnQgbmV3bGluZXMsIGxwb3MsIHRlbXAsIG4wLCBudW0sIHBy b21wdF9saW5lc19lc3RpbWF0ZTsKKyAgIGNoYXIgKnByb21wdF90aGlzX2xpbmU7CisgI2lmIGRl ZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCisgICB3Y2hhcl90IHdjOworQEAgLTQ2MCwyNCArNTEw LDI3IEBAIHJsX3JlZGlzcGxheSAoKQorICAgaW50IF9ybF93cmFwcGVkX211bHRpY29sdW1uID0g MDsKKyAjZW5kaWYKKyAKKy0gIGlmICghcmVhZGxpbmVfZWNob2luZ19wKQorKyAgaWYgKF9ybF9l Y2hvaW5nX3AgPT0gMCkKKyAgICAgcmV0dXJuOworIAorLSAgLyogU2lnbmFscyBhcmUgYmxvY2tl ZCB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGdsb2JhbCBkYXRhIHN0cnVjdHVyZXMKKy0g ICAgIGNvdWxkIGdldCBjb3JydXB0ZWQgdXBvbiBtb2RpZmljYXRpb25zIGZyb20gYW4gaW52b2tl ZCBzaWduYWwgaGFuZGxlci4gKi8KKy0gIF9ybF9ibG9ja19zaWdpbnQgKCk7CisrICAvKiBCbG9j ayBrZXlib2FyZCBpbnRlcnJ1cHRzIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBtYW5pcHVsYXRlcyBn bG9iYWwKKysgICAgIGRhdGEgc3RydWN0dXJlcy4gKi8KKysgIF9ybF9ibG9ja19zaWdpbnQgKCk7 ICAKKysgIFJMX1NFVFNUQVRFIChSTF9TVEFURV9SRURJU1BMQVlJTkcpOworIAorICAgaWYgKCFy bF9kaXNwbGF5X3Byb21wdCkKKyAgICAgcmxfZGlzcGxheV9wcm9tcHQgPSAiIjsKKyAKKy0gIGlm IChpbnZpc2libGVfbGluZSA9PSAwIHx8IHZpc19sYnJlYWtzID09IDApCisrICBpZiAobGluZV9z dHJ1Y3R1cmVzX2luaXRpYWxpemVkID09IDApCisgICAgIHsKKyAgICAgICBpbml0X2xpbmVfc3Ry dWN0dXJlcyAoMCk7CisgICAgICAgcmxfb25fbmV3X2xpbmUgKCk7CisgICAgIH0KKyAKKyAgIC8q IERyYXcgdGhlIGxpbmUgaW50byB0aGUgYnVmZmVyLiAqLworLSAgY19wb3MgPSAtMTsKKysgIGNw b3NfYnVmZmVyX3Bvc2l0aW9uID0gLTE7CisrCisrICBwcm9tcHRfbXVsdGlieXRlX2NoYXJzID0g cHJvbXB0X3Zpc2libGVfbGVuZ3RoIC0gcHJvbXB0X3BoeXNpY2FsX2NoYXJzOworIAorICAgbGlu ZSA9IGludmlzaWJsZV9saW5lOworICAgb3V0ID0gaW52X2JvdGxpbiA9IDA7CitAQCAtNTA0LDI0 ICs1NTcsMjMgQEAgcmxfcmVkaXNwbGF5ICgpCisgICAgICBudW1iZXIgb2Ygbm9uLXZpc2libGUg Y2hhcmFjdGVycyBpbiB0aGUgcHJvbXB0IHN0cmluZy4gKi8KKyAgIGlmIChybF9kaXNwbGF5X3By b21wdCA9PSBybF9wcm9tcHQgfHwgbG9jYWxfcHJvbXB0KQorICAgICB7CistICAgICAgaW50IGxv Y2FsX2xlbiA9IGxvY2FsX3Byb21wdCA/IHN0cmxlbiAobG9jYWxfcHJvbXB0KSA6IDA7CisgICAg ICAgaWYgKGxvY2FsX3Byb21wdF9wcmVmaXggJiYgZm9yY2VkX2Rpc3BsYXkpCisgCV9ybF9vdXRw dXRfc29tZV9jaGFycyAobG9jYWxfcHJvbXB0X3ByZWZpeCwgc3RybGVuIChsb2NhbF9wcm9tcHRf cHJlZml4KSk7CisgCistICAgICAgaWYgKGxvY2FsX2xlbiA+IDApCisrICAgICAgaWYgKGxvY2Fs X3Byb21wdF9sZW4gPiAwKQorIAl7CistCSAgdGVtcCA9IGxvY2FsX2xlbiArIG91dCArIDI7Cisr CSAgdGVtcCA9IGxvY2FsX3Byb21wdF9sZW4gKyBvdXQgKyAyOworIAkgIGlmICh0ZW1wID49IGxp bmVfc2l6ZSkKKyAJICAgIHsKKyAJICAgICAgbGluZV9zaXplID0gKHRlbXAgKyAxMDI0KSAtICh0 ZW1wICUgMTAyNCk7CisgCSAgICAgIHZpc2libGVfbGluZSA9IChjaGFyICopeHJlYWxsb2MgKHZp c2libGVfbGluZSwgbGluZV9zaXplKTsKKyAJICAgICAgbGluZSA9IGludmlzaWJsZV9saW5lID0g KGNoYXIgKil4cmVhbGxvYyAoaW52aXNpYmxlX2xpbmUsIGxpbmVfc2l6ZSk7CisgCSAgICB9Cist CSAgc3RybmNweSAobGluZSArIG91dCwgbG9jYWxfcHJvbXB0LCBsb2NhbF9sZW4pOworLQkgIG91 dCArPSBsb2NhbF9sZW47CisrCSAgc3RybmNweSAobGluZSArIG91dCwgbG9jYWxfcHJvbXB0LCBs b2NhbF9wcm9tcHRfbGVuKTsKKysJICBvdXQgKz0gbG9jYWxfcHJvbXB0X2xlbjsKKyAJfQorICAg ICAgIGxpbmVbb3V0XSA9ICdcMCc7CistICAgICAgd3JhcF9vZmZzZXQgPSBsb2NhbF9sZW4gLSBw cm9tcHRfdmlzaWJsZV9sZW5ndGg7CisrICAgICAgd3JhcF9vZmZzZXQgPSBsb2NhbF9wcm9tcHRf bGVuIC0gcHJvbXB0X3Zpc2libGVfbGVuZ3RoOworICAgICB9CisgICBlbHNlCisgICAgIHsKK0BA IC01NzYsMTAgKzYyOCwxNCBAQCBybF9yZWRpc3BsYXkgKCkKKyAJICAgICAgeyBcCisgCQlpbnZf bGJzaXplICo9IDI7IFwKKyAJCWludl9sYnJlYWtzID0gKGludCAqKXhyZWFsbG9jIChpbnZfbGJy ZWFrcywgaW52X2xic2l6ZSAqIHNpemVvZiAoaW50KSk7IFwKKy0JCV9ybF93cmFwcGVkX2xpbmUg PSAoaW50ICopeHJlYWxsb2MgKF9ybF93cmFwcGVkX2xpbmUsIGludl9sYnNpemUgKiBzaXplb2Yg KGludCkpOyBcCisgCSAgICAgIH0gXAorIAkgICAgaW52X2xicmVha3NbKytuZXdsaW5lc10gPSBv dXQ7IFwKKy0JICAgIF9ybF93cmFwcGVkX2xpbmVbbmV3bGluZXNdID0gX3JsX3dyYXBwZWRfbXVs dGljb2x1bW47IFwKKysJICAgIGlmIChuZXdsaW5lcyA+PSAobGluZV9zdGF0ZV9pbnZpc2libGUt Pndic2l6ZSAtIDEpKSBcCisrCSAgICAgIHsgXAorKwkJbGluZV9zdGF0ZV9pbnZpc2libGUtPndi c2l6ZSAqPSAyOyBcCisrCQlsaW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lID0gKGlu dCAqKXhyZWFsbG9jIChsaW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lLCBsaW5lX3N0 YXRlX2ludmlzaWJsZS0+d2JzaXplICogc2l6ZW9mKGludCkpOyBcCisrCSAgICAgIH0gXAorKwkg ICAgbGluZV9zdGF0ZV9pbnZpc2libGUtPndyYXBwZWRfbGluZVtuZXdsaW5lc10gPSBfcmxfd3Jh cHBlZF9tdWx0aWNvbHVtbjsgXAorIAkgICAgbHBvcyA9IDA7IFwKKyAJICB9IFwKKyAgICAgICB9 IHdoaWxlICgwKQorQEAgLTYwMiwyNiArNjU4LDI2IEBAIHJsX3JlZGlzcGxheSAoKQorIAorICAg LyogaW52X2xicmVha3NbaV0gaXMgd2hlcmUgbGluZSBpIHN0YXJ0cyBpbiB0aGUgYnVmZmVyLiAq LworICAgaW52X2xicmVha3NbbmV3bGluZXMgPSAwXSA9IDA7CistI2lmIDAKKy0gIGxwb3MgPSBv dXQgLSB3cmFwX29mZnNldDsKKy0jZWxzZQorICAgbHBvcyA9IHByb21wdF9waHlzaWNhbF9jaGFy cyArIG1vZG1hcms7CistI2VuZGlmCisgCisgI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUp CistICBtZW1zZXQgKF9ybF93cmFwcGVkX2xpbmUsIDAsIHZpc19sYnNpemUpOworKyAgbWVtc2V0 IChsaW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lLCAwLCBsaW5lX3N0YXRlX2ludmlz aWJsZS0+d2JzaXplICogc2l6ZW9mIChpbnQpKTsKKyAgIG51bSA9IDA7CisgI2VuZGlmCisgCisg ICAvKiBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSBpcyB0aGUgbnVtYmVyIG9mIGludmlz aWJsZSBjaGFyYWN0ZXJzIGluCisgICAgICB0aGUgZmlyc3QgcGh5c2ljYWwgbGluZSBvZiB0aGUg cHJvbXB0LgorICAgICAgd3JhcF9vZmZzZXQgLSBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGlu ZSBpcyB0aGUgbnVtYmVyIG9mIGludmlzCistICAgICBjaGFycyBvbiB0aGUgc2Vjb25kIGxpbmUu ICovCisrICAgICBjaGFycyBvbiB0aGUgc2Vjb25kIChvciwgbW9yZSBnZW5lcmFsbHksIGxhc3Qp IGxpbmUuICovCisrCisrICAvKiBUaGlzIGlzIHplcm8tYmFzZWQsIHVzZWQgdG8gc2V0IHRoZSBu ZXdsaW5lcyAqLworKyAgcHJvbXB0X2xpbmVzX2VzdGltYXRlID0gbHBvcyAvIF9ybF9zY3JlZW53 aWR0aDsKKyAKKyAgIC8qIHdoYXQgaWYgbHBvcyBpcyBhbHJlYWR5ID49IF9ybF9zY3JlZW53aWR0 aCBiZWZvcmUgd2Ugc3RhcnQgZHJhd2luZyB0aGUKKyAgICAgIGNvbnRlbnRzIG9mIHRoZSBjb21t YW5kIGxpbmU/ICovCisgICB3aGlsZSAobHBvcyA+PSBfcmxfc2NyZWVud2lkdGgpCisgICAgIHsK KysgICAgICBpbnQgejsKKyAgICAgICAvKiBmaXggZnJvbSBEYXJpbiBKb2huc29uIDxkYXJpbkBh Y3Vzb24uY29tPiBmb3IgcHJvbXB0IHN0cmluZyB3aXRoCisgICAgICAgICAgaW52aXNpYmxlIGNo YXJhY3RlcnMgdGhhdCBpcyBsb25nZXIgdGhhbiB0aGUgc2NyZWVuIHdpZHRoLiAgVGhlCisgICAg ICAgICAgcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUgdmFyaWFibGUgY291bGQgYmUgbWFk ZSBpbnRvIGFuIGFycmF5CitAQCAtNjMwLDM3ICs2ODYsNDggQEAgcmxfcmVkaXNwbGF5ICgpCisg ICAgICAgICAgcHJvbXB0cyB0aGF0IGV4Y2VlZCB0d28gcGh5c2ljYWwgbGluZXM/CisgICAgICAg ICAgQWRkaXRpb25hbCBsb2dpYyBmaXggZnJvbSBFZHdhcmQgQ2F0bXVyIDxlZEBjYXRtdXIuY28u dWs+ICovCisgI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCistICAgICAgbjAgPSBudW07 CistICAgICAgdGVtcCA9IGxvY2FsX3Byb21wdCA/IHN0cmxlbiAobG9jYWxfcHJvbXB0KSA6IDA7 CistICAgICAgd2hpbGUgKG51bSA8IHRlbXApCisrICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYm IHJsX2J5dGVfb3JpZW50ZWQgPT0gMCAmJiBwcm9tcHRfbXVsdGlieXRlX2NoYXJzID4gMCkKKyAJ eworLQkgIGlmIChfcmxfY29sX3dpZHRoICAobG9jYWxfcHJvbXB0LCBuMCwgbnVtKSA+IF9ybF9z Y3JlZW53aWR0aCkKKysJICBuMCA9IG51bTsKKysgICAgICAgICAgdGVtcCA9IGxvY2FsX3Byb21w dF9sZW47CisrICAgICAgICAgIHdoaWxlIChudW0gPCB0ZW1wKQorIAkgICAgeworLQkgICAgICBu dW0gPSBfcmxfZmluZF9wcmV2X21iY2hhciAobG9jYWxfcHJvbXB0LCBudW0sIE1CX0ZJTkRfQU5Z KTsKKy0JICAgICAgYnJlYWs7CisrCSAgICAgIHogPSBfcmxfY29sX3dpZHRoICAobG9jYWxfcHJv bXB0LCBuMCwgbnVtLCAxKTsKKysJICAgICAgaWYgKHogPiBfcmxfc2NyZWVud2lkdGgpCisrCQl7 CisrCSAgICAgICAgICBudW0gPSBfcmxfZmluZF9wcmV2X21iY2hhciAobG9jYWxfcHJvbXB0LCBu dW0sIE1CX0ZJTkRfQU5ZKTsKKysJICAgICAgICAgIGJyZWFrOworKwkJfQorKwkgICAgICBlbHNl IGlmICh6ID09IF9ybF9zY3JlZW53aWR0aCkKKysJICAgICAgICBicmVhazsKKysJICAgICAgbnVt Kys7CisgCSAgICB9CistCSAgbnVtKys7CisrICAgICAgICAgIHRlbXAgPSBudW07CisgCX0KKy0g ICAgICB0ZW1wID0gbnVtICsKKy0jZWxzZQorLSAgICAgIHRlbXAgPSAoKG5ld2xpbmVzICsgMSkg KiBfcmxfc2NyZWVud2lkdGgpICsKKysgICAgICBlbHNlCisgI2VuZGlmIC8qICFIQU5ETEVfTVVM VElCWVRFICovCistICAgICAgICAgICAgICgobG9jYWxfcHJvbXB0X3ByZWZpeCA9PSAwKSA/ICgo bmV3bGluZXMgPT0gMCkgPyBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZQorLQkJCQkJCQkg ICAgOiAoKG5ld2xpbmVzID09IDEpID8gd3JhcF9vZmZzZXQgOiAwKSkKKy0JCQkJCSA6ICgobmV3 bGluZXMgPT0gMCkgPyB3cmFwX29mZnNldCA6MCkpOworKwl0ZW1wID0gKChuZXdsaW5lcyArIDEp ICogX3JsX3NjcmVlbndpZHRoKTsKKysKKysgICAgICAvKiBOb3cgYWNjb3VudCBmb3IgaW52aXNp YmxlIGNoYXJhY3RlcnMgaW4gdGhlIGN1cnJlbnQgbGluZS4gKi8KKysgICAgICAvKiBYWFggLSB0 aGlzIGFzc3VtZXMgdGhhdCB0aGUgaW52aXNpYmxlIGNoYXJhY3RlcnMgbWF5IGJlIHNwbGl0LCBi dXQgb25seQorKwkgYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0IGxpbmVzLiAqLworKyAg ICAgIHRlbXAgKz0gKChsb2NhbF9wcm9tcHRfcHJlZml4ID09IDApID8gKChuZXdsaW5lcyA9PSAw KSA/IHByb21wdF9pbnZpc19jaGFyc19maXJzdF9saW5lCisrCQkJCQkJCSAgICAgOiAoKG5ld2xp bmVzID09IHByb21wdF9saW5lc19lc3RpbWF0ZSkgPyB3cmFwX29mZnNldCA6IHByb21wdF9pbnZp c19jaGFyc19maXJzdF9saW5lKSkKKysJCQkJCSAgOiAoKG5ld2xpbmVzID09IDApID8gd3JhcF9v ZmZzZXQgOiAwKSk7CisgICAgICAgICAgICAgIAorICAgICAgIGludl9sYnJlYWtzWysrbmV3bGlu ZXNdID0gdGVtcDsKKyAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKKy0gICAgICBscG9z IC09IF9ybF9jb2xfd2lkdGggKGxvY2FsX3Byb21wdCwgbjAsIG51bSk7CistI2Vsc2UKKy0gICAg ICBscG9zIC09IF9ybF9zY3JlZW53aWR0aDsKKysgICAgICBpZiAoTUJfQ1VSX01BWCA+IDEgJiYg cmxfYnl0ZV9vcmllbnRlZCA9PSAwICYmIHByb21wdF9tdWx0aWJ5dGVfY2hhcnMgPiAwKQorKwls cG9zIC09IF9ybF9jb2xfd2lkdGggKGxvY2FsX3Byb21wdCwgbjAsIG51bSwgMSk7CisrICAgICAg ZWxzZQorICNlbmRpZgorKwlscG9zIC09IF9ybF9zY3JlZW53aWR0aDsKKyAgICAgfQorIAorICAg cHJvbXB0X2xhc3Rfc2NyZWVuX2xpbmUgPSBuZXdsaW5lczsKKyAKKyAgIC8qIERyYXcgdGhlIHJl c3Qgb2YgdGhlIGxpbmUgKGFmdGVyIHRoZSBwcm9tcHQpIGludG8gaW52aXNpYmxlX2xpbmUsIGtl ZXBpbmcKKy0gICAgIHRyYWNrIG9mIHdoZXJlIHRoZSBjdXJzb3IgaXMgKGNfcG9zKSwgdGhlIG51 bWJlciBvZiB0aGUgbGluZSBjb250YWluaW5nCisrICAgICB0cmFjayBvZiB3aGVyZSB0aGUgY3Vy c29yIGlzIChjcG9zX2J1ZmZlcl9wb3NpdGlvbiksIHRoZSBudW1iZXIgb2YgdGhlIGxpbmUgY29u dGFpbmluZworICAgICAgdGhlIGN1cnNvciAobGJfbGluZW51bSksIHRoZSBsYXN0IGxpbmUgbnVt YmVyIChsYl9ib3RsaW4gYW5kIGludl9ib3RsaW4pLgorICAgICAgSXQgbWFpbnRhaW5zIGFuIGFy cmF5IG9mIGxpbmUgYnJlYWtzIGZvciBkaXNwbGF5IChpbnZfbGJyZWFrcykuCisgICAgICBUaGlz IGhhbmRsZXMgZXhwYW5kaW5nIHRhYnMgZm9yIGRpc3BsYXkgYW5kIGRpc3BsYXlpbmcgbWV0YSBj aGFyYWN0ZXJzLiAqLworQEAgLTY3MCw2ICs3MzcsNyBAQCBybF9yZWRpc3BsYXkgKCkKKyAgIGlm IChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCisgICAgIHsKKyAgICAg ICBtZW1zZXQgKCZwcywgMCwgc2l6ZW9mIChtYnN0YXRlX3QpKTsKKysgICAgICAvKiBYWFggLSB3 aGF0IGlmIHdjX2J5dGVzIGVuZHMgdXAgPD0gMD8gY2hlY2sgZm9yIE1CX0lOVkFMSURDSCAqLwor ICAgICAgIHdjX2J5dGVzID0gbWJydG93YyAoJndjLCBybF9saW5lX2J1ZmZlciwgcmxfZW5kLCAm cHMpOworICAgICB9CisgICBlbHNlCitAQCAtNzEzLDcgKzc4MSw3IEBAIHJsX3JlZGlzcGxheSAo KQorIAorICAgICAgIGlmIChpbiA9PSBybF9wb2ludCkKKyAJeworLQkgIGNfcG9zID0gb3V0Owor KwkgIGNwb3NfYnVmZmVyX3Bvc2l0aW9uID0gb3V0OworIAkgIGxiX2xpbmVudW0gPSBuZXdsaW5l czsKKyAJfQorIAorQEAgLTgwNyw3ICs4NzUsNyBAQCBybF9yZWRpc3BsYXkgKCkKKyAJCSAgfQor IAkgICAgICBpZiAoaW4gPT0gcmxfcG9pbnQpCisgCQl7CistCQkgIGNfcG9zID0gb3V0OworKwkJ ICBjcG9zX2J1ZmZlcl9wb3NpdGlvbiA9IG91dDsKKyAJCSAgbGJfbGluZW51bSA9IG5ld2xpbmVz OworIAkJfQorIAkgICAgICBmb3IgKGkgPSBpbjsgaSA8IGluK3djX2J5dGVzOyBpKyspCitAQCAt ODMwLDYgKzg5OCw3IEBAIHJsX3JlZGlzcGxheSAoKQorICAgICAgIGlmIChNQl9DVVJfTUFYID4g MSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCisgCXsKKyAJICBpbiArPSB3Y19ieXRlczsKKysJ ICAvKiBYWFggLSB3aGF0IGlmIHdjX2J5dGVzIGVuZHMgdXAgPD0gMD8gY2hlY2sgZm9yIE1CX0lO VkFMSURDSCAqLworIAkgIHdjX2J5dGVzID0gbWJydG93YyAoJndjLCBybF9saW5lX2J1ZmZlciAr IGluLCBybF9lbmQgLSBpbiwgJnBzKTsKKyAJfQorICAgICAgIGVsc2UKK0BAIC04MzgsOSArOTA3 LDkgQEAgcmxfcmVkaXNwbGF5ICgpCisgCisgICAgIH0KKyAgIGxpbmVbb3V0XSA9ICdcMCc7Cist ICBpZiAoY19wb3MgPCAwKQorKyAgaWYgKGNwb3NfYnVmZmVyX3Bvc2l0aW9uIDwgMCkKKyAgICAg eworLSAgICAgIGNfcG9zID0gb3V0OworKyAgICAgIGNwb3NfYnVmZmVyX3Bvc2l0aW9uID0gb3V0 OworICAgICAgIGxiX2xpbmVudW0gPSBuZXdsaW5lczsKKyAgICAgfQorIAorQEAgLTg0OSw3ICs5 MTgsNyBAQCBybF9yZWRpc3BsYXkgKCkKKyAgIGludl9sYnJlYWtzW25ld2xpbmVzKzFdID0gb3V0 OworICAgY3Vyc29yX2xpbmVudW0gPSBsYl9saW5lbnVtOworIAorLSAgLyogQ19QT1MgPT0gcG9z aXRpb24gaW4gYnVmZmVyIHdoZXJlIGN1cnNvciBzaG91bGQgYmUgcGxhY2VkLgorKyAgLyogQ1BP U19CVUZGRVJfUE9TSVRJT04gPT0gcG9zaXRpb24gaW4gYnVmZmVyIHdoZXJlIGN1cnNvciBzaG91 bGQgYmUgcGxhY2VkLgorICAgICAgQ1VSU09SX0xJTkVOVU0gPT0gbGluZSBudW1iZXIgd2hlcmUg dGhlIGN1cnNvciBzaG91bGQgYmUgcGxhY2VkLiAqLworIAorICAgLyogUFdQOiBub3cgaXMgd2hl biB0aGluZ3MgZ2V0IGEgYml0IGhhaXJ5LiAgVGhlIHZpc2libGUgYW5kIGludmlzaWJsZQorQEAg LTg4NCw2ICs5NTMsMTAgQEAgcmxfcmVkaXNwbGF5ICgpCisgCSAgICAgc2Vjb25kIGFuZCBzdWJz ZXF1ZW50IGxpbmVzIHN0YXJ0IGF0IGludl9sYnJlYWtzW05dLCBvZmZzZXQgYnkKKyAJICAgICBP RkZTRVQgKHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gY2FsY3VsYXRlZCBhYm92ZSkuICAqLworIAor KyNkZWZpbmUgSU5WSVNfRklSU1QoKQkocHJvbXB0X3BoeXNpY2FsX2NoYXJzID4gX3JsX3NjcmVl bndpZHRoID8gcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUgOiB3cmFwX29mZnNldCkKKysj ZGVmaW5lIFdSQVBfT0ZGU0VUKGxpbmUsIG9mZnNldCkgICgobGluZSA9PSAwKSBcCisrCQkJCQk/ IChvZmZzZXQgPyBJTlZJU19GSVJTVCgpIDogMCkgXAorKwkJCQkJOiAoKGxpbmUgPT0gcHJvbXB0 X2xhc3Rfc2NyZWVuX2xpbmUpID8gd3JhcF9vZmZzZXQtcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0 X2xpbmUgOiAwKSkKKyAjZGVmaW5lIFdfT0ZGU0VUKGxpbmUsIG9mZnNldCkgKChsaW5lKSA9PSAw ID8gb2Zmc2V0IDogMCkKKyAjZGVmaW5lIFZJU19MTEVOKGwpCSgobCkgPiBfcmxfdmlzX2JvdGxp biA/IDAgOiAodmlzX2xicmVha3NbbCsxXSAtIHZpc19sYnJlYWtzW2xdKSkKKyAjZGVmaW5lIElO Vl9MTEVOKGwpCShpbnZfbGJyZWFrc1tsKzFdIC0gaW52X2xicmVha3NbbF0pCitAQCAtODkxLDkg Kzk2NCwxNiBAQCBybF9yZWRpc3BsYXkgKCkKKyAjZGVmaW5lIFZJU19MSU5FKGxpbmUpICgobGlu ZSkgPiBfcmxfdmlzX2JvdGxpbikgPyAiIiA6IFZJU19DSEFSUyhsaW5lKQorICNkZWZpbmUgSU5W X0xJTkUobGluZSkgKGludmlzaWJsZV9saW5lICsgaW52X2xicmVha3NbbGluZV0pCisgCisrI2Rl ZmluZSBPTERfQ1BPU19JTl9QUk9NUFQoKSAoY3Bvc19hZGp1c3RlZCA9PSAwICYmIFwKKysJCQlf cmxfbGFzdF9jX3BvcyAhPSBvX2Nwb3MgJiYgXAorKwkJCV9ybF9sYXN0X2NfcG9zID4gd3JhcF9v ZmZzZXQgJiYgXAorKwkJCW9fY3BvcyA8IHByb21wdF9sYXN0X2ludmlzaWJsZSkKKysKKyAJICAv KiBGb3IgZWFjaCBsaW5lIGluIHRoZSBidWZmZXIsIGRvIHRoZSB1cGRhdGluZyBkaXNwbGF5LiAq LworIAkgIGZvciAobGluZW51bSA9IDA7IGxpbmVudW0gPD0gaW52X2JvdGxpbjsgbGluZW51bSsr KQorIAkgICAgeworKwkgICAgICAvKiBUaGlzIGNhbiBsZWFkIHVzIGFzdHJheSBpZiB3ZSBleGVj dXRlIGEgcHJvZ3JhbSB0aGF0IGNoYW5nZXMKKysJCSB0aGUgbG9jYWxlIGZyb20gYSBub24tbXVs dGlieXRlIHRvIGEgbXVsdGlieXRlIG9uZS4gKi8KKyAJICAgICAgb19jcG9zID0gX3JsX2xhc3Rf Y19wb3M7CisgCSAgICAgIGNwb3NfYWRqdXN0ZWQgPSAwOworIAkgICAgICB1cGRhdGVfbGluZSAo VklTX0xJTkUobGluZW51bSksIElOVl9MSU5FKGxpbmVudW0pLCBsaW5lbnVtLAorQEAgLTkwMywx NiArOTgzLDIyIEBAIHJsX3JlZGlzcGxheSAoKQorIAkJIHRha2UgaW52aXNpYmxlIGNoYXJhY3Rl cnMgaW50byBhY2NvdW50LCBzaW5jZSBfcmxfbGFzdF9jX3BvcworIAkJIGlzIGFuIGFic29sdXRl IGN1cnNvciBwb3NpdGlvbiBpbiBhIG11bHRpYnl0ZSBsb2NhbGUuICBTZWUKKyAJCSBpZiBjb21w ZW5zYXRpbmcgaGVyZSBpcyB0aGUgcmlnaHQgdGhpbmcsIG9yIGlmIHdlIGhhdmUgdG8KKy0JCSBj aGFuZ2UgdXBkYXRlX2xpbmUgaXRzZWxmLiAgVGhlcmUgaXMgb25lIGNhc2UgaW4gd2hpY2gKKysJ CSBjaGFuZ2UgdXBkYXRlX2xpbmUgaXRzZWxmLiAgVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgaW4g d2hpY2gKKyAJCSB1cGRhdGVfbGluZSBhZGp1c3RzIF9ybF9sYXN0X2NfcG9zIGl0c2VsZiAoc28g aXQgY2FuIHBhc3MKKyAJCSBfcmxfbW92ZV9jdXJzb3JfcmVsYXRpdmUgYWNjdXJhdGUgdmFsdWVz KTsgaXQgY29tbXVuaWNhdGVzCistCQkgdGhpcyBiYWNrIGJ5IHNldHRpbmcgY3Bvc19hZGp1c3Rl ZCAqLworLQkgICAgICBpZiAobGluZW51bSA9PSAwICYmIChNQl9DVVJfTUFYID4gMSAmJiBybF9i eXRlX29yaWVudGVkID09IDApICYmCistCQkgIGNwb3NfYWRqdXN0ZWQgPT0gMCAmJgorLQkJICBf cmxfbGFzdF9jX3BvcyAhPSBvX2Nwb3MgJiYKKy0JCSAgX3JsX2xhc3RfY19wb3MgPiB3cmFwX29m ZnNldCAmJgorLQkJICBvX2Nwb3MgPCBwcm9tcHRfbGFzdF9pbnZpc2libGUpCistCQlfcmxfbGFz dF9jX3BvcyAtPSB3cmFwX29mZnNldDsKKysJCSB0aGlzIGJhY2sgYnkgc2V0dGluZyBjcG9zX2Fk anVzdGVkLiAgSWYgd2UgYXNzdW1lIHRoYXQKKysJCSBfcmxfbGFzdF9jX3BvcyBpcyBjb3JyZWN0 IChhbiBhYnNvbHV0ZSBjdXJzb3IgcG9zaXRpb24pIGVhY2gKKysJCSB0aW1lIHVwZGF0ZV9saW5l IGlzIGNhbGxlZCwgdGhlbiB3ZSBjYW4gYXNzdW1lIGluIG91cgorKwkJIGNhbGN1bGF0aW9ucyB0 aGF0IG9fY3BvcyBkb2VzIG5vdCBuZWVkIHRvIGJlIGFkanVzdGVkIGJ5CisrCQkgd3JhcF9vZmZz ZXQuICovCisrCSAgICAgIGlmIChsaW5lbnVtID09IDAgJiYgKE1CX0NVUl9NQVggPiAxICYmIHJs X2J5dGVfb3JpZW50ZWQgPT0gMCkgJiYgT0xEX0NQT1NfSU5fUFJPTVBUKCkpCisrCQlfcmxfbGFz dF9jX3BvcyAtPSBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZTsJLyogWFhYIC0gd2FzIHdy YXBfb2Zmc2V0ICovCisrCSAgICAgIGVsc2UgaWYgKGxpbmVudW0gPT0gcHJvbXB0X2xhc3Rfc2Ny ZWVuX2xpbmUgJiYgcHJvbXB0X3BoeXNpY2FsX2NoYXJzID4gX3JsX3NjcmVlbndpZHRoICYmCisr CQkJKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkgJiYKKysJCQljcG9z X2FkanVzdGVkID09IDAgJiYKKysJCQlfcmxfbGFzdF9jX3BvcyAhPSBvX2Nwb3MgJiYKKysJCQlf cmxfbGFzdF9jX3BvcyA+IChwcm9tcHRfbGFzdF9pbnZpc2libGUgLSBfcmxfc2NyZWVud2lkdGgg LSBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSkpCisrCQlfcmxfbGFzdF9jX3BvcyAtPSAo d3JhcF9vZmZzZXQtcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUpOworIAkJICAKKyAJICAg ICAgLyogSWYgdGhpcyBpcyB0aGUgbGluZSB3aXRoIHRoZSBwcm9tcHQsIHdlIG1pZ2h0IG5lZWQg dG8KKyAJCSBjb21wZW5zYXRlIGZvciBpbnZpc2libGUgY2hhcmFjdGVycyBpbiB0aGUgbmV3IGxp bmUuIERvCitAQCAtOTMyLDYgKzEwMTgsMTkgQEAgcmxfcmVkaXNwbGF5ICgpCisgCQkgIGlmIChu bGVmdCkKKyAJCSAgICBfcmxfY2xlYXJfdG9fZW9sIChubGVmdCk7CisgCQl9CisrI2lmIDAKKysJ ICAgICAgLyogVGhpcyBzZWdtZW50IGlzIGludGVuZGVkIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVy ZSB0aGUgcHJvbXB0CisrCQkgaGFzIGludmlzaWJsZSBjaGFyYWN0ZXJzIG9uIHRoZSBzZWNvbmQg bGluZSBhbmQgdGhlIG5ldyBsaW5lCisrCQkgdG8gYmUgZGlzcGxheWVkIG5lZWRzIHRvIGNsZWFy IHRoZSByZXN0IG9mIHRoZSBvbGQgY2hhcmFjdGVycworKwkJIG91dCAoZS5nLiwgd2hlbiBwcmlu dGluZyB0aGUgaS1zZWFyY2ggcHJvbXB0KS4gIEluIGdlbmVyYWwsCisrCQkgdGhlIGNhc2Ugb2Yg dGhlIG5ldyBsaW5lIGJlaW5nIHNob3J0ZXIgdGhhbiB0aGUgb2xkLgorKwkJIEluY29tcGxldGUg Ki8KKysJICAgICAgZWxzZSBpZiAobGluZW51bSA9PSBwcm9tcHRfbGFzdF9zY3JlZW5fbGluZSAm JgorKwkJICAgICAgIHByb21wdF9waHlzaWNhbF9jaGFycyA+IF9ybF9zY3JlZW53aWR0aCAmJgor KwkJICAgICAgIHdyYXBfb2Zmc2V0ICE9IHByb21wdF9pbnZpc19jaGFyc19maXJzdF9saW5lICYm CisrCQkgICAgICAgX3JsX2xhc3RfY19wb3MgPT0gb3V0ICYmCisrI2VuZGlmCisrCisgCisgCSAg ICAgIC8qIFNpbmNlIHRoZSBuZXcgZmlyc3QgbGluZSBpcyBub3cgdmlzaWJsZSwgc2F2ZSBpdHMg bGVuZ3RoLiAqLworIAkgICAgICBpZiAobGluZW51bSA9PSAwKQorQEAgLTk3NSw3ICsxMDc0LDEx IEBAIHJsX3JlZGlzcGxheSAoKQorIAkgICAgIGludmlzaWJsZSBjaGFyYWN0ZXIgaW4gdGhlIHBy b21wdCBzdHJpbmcuICovCisgCSAgbmxlZnQgPSBwcm9tcHRfdmlzaWJsZV9sZW5ndGggKyB3cmFw X29mZnNldDsKKyAJICBpZiAoY3Vyc29yX2xpbmVudW0gPT0gMCAmJiB3cmFwX29mZnNldCA+IDAg JiYgX3JsX2xhc3RfY19wb3MgPiAwICYmCistCSAgICAgIF9ybF9sYXN0X2NfcG9zIDw9IHByb21w dF9sYXN0X2ludmlzaWJsZSAmJiBsb2NhbF9wcm9tcHQpCisrI2lmIDAKKysJICAgICAgX3JsX2xh c3RfY19wb3MgPD0gUFJPTVBUX0VORElOR19JTkRFWCAmJiBsb2NhbF9wcm9tcHQpCisrI2Vsc2UK KysJICAgICAgX3JsX2xhc3RfY19wb3MgPCBQUk9NUFRfRU5ESU5HX0lOREVYICYmIGxvY2FsX3By b21wdCkKKysjZW5kaWYKKyAJICAgIHsKKyAjaWYgZGVmaW5lZCAoX19NU0RPU19fKQorIAkgICAg ICBwdXRjICgnXHInLCBybF9vdXRzdHJlYW0pOworQEAgLTk4MywxOSArMTA4NiwyMiBAQCBybF9y ZWRpc3BsYXkgKCkKKyAJICAgICAgaWYgKF9ybF90ZXJtX2NyKQorIAkJdHB1dHMgKF9ybF90ZXJt X2NyLCAxLCBfcmxfb3V0cHV0X2NoYXJhY3Rlcl9mdW5jdGlvbik7CisgI2VuZGlmCisrCSAgICAg IGlmIChtb2RtYXJrKQorKwkJX3JsX291dHB1dF9zb21lX2NoYXJzICgiKiIsIDEpOworKworIAkg ICAgICBfcmxfb3V0cHV0X3NvbWVfY2hhcnMgKGxvY2FsX3Byb21wdCwgbmxlZnQpOworIAkgICAg ICBpZiAoTUJfQ1VSX01BWCA+IDEgJiYgcmxfYnl0ZV9vcmllbnRlZCA9PSAwKQorLQkJX3JsX2xh c3RfY19wb3MgPSBfcmxfY29sX3dpZHRoIChsb2NhbF9wcm9tcHQsIDAsIG5sZWZ0KSAtIHdyYXBf b2Zmc2V0OworKwkJX3JsX2xhc3RfY19wb3MgPSBfcmxfY29sX3dpZHRoIChsb2NhbF9wcm9tcHQs IDAsIG5sZWZ0LCAxKSAtIHdyYXBfb2Zmc2V0ICsgbW9kbWFyazsKKyAJICAgICAgZWxzZQorLQkJ X3JsX2xhc3RfY19wb3MgPSBubGVmdDsKKysJCV9ybF9sYXN0X2NfcG9zID0gbmxlZnQgKyBtb2Rt YXJrOworIAkgICAgfQorIAorIAkgIC8qIFdoZXJlIG9uIHRoYXQgbGluZT8gIEFuZCB3aGVyZSBk b2VzIHRoYXQgbGluZSBzdGFydAorIAkgICAgIGluIHRoZSBidWZmZXI/ICovCisgCSAgcG9zID0g aW52X2xicmVha3NbY3Vyc29yX2xpbmVudW1dOworIAkgIC8qIG5sZWZ0ID09IG51bWJlciBvZiBj aGFyYWN0ZXJzIGluIHRoZSBsaW5lIGJ1ZmZlciBiZXR3ZWVuIHRoZQorLQkgICAgIHN0YXJ0IG9m IHRoZSBsaW5lIGFuZCB0aGUgY3Vyc29yIHBvc2l0aW9uLiAqLworLQkgIG5sZWZ0ID0gY19wb3Mg LSBwb3M7CisrCSAgICAgc3RhcnQgb2YgdGhlIGxpbmUgYW5kIHRoZSBkZXNpcmVkIGN1cnNvciBw b3NpdGlvbi4gKi8KKysJICBubGVmdCA9IGNwb3NfYnVmZmVyX3Bvc2l0aW9uIC0gcG9zOworIAor IAkgIC8qIE5MRUZUIGlzIG5vdyBhIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGEgYnVmZmVyLiAg V2hlbiBpbiBhCisgCSAgICAgbXVsdGlieXRlIGxvY2FsZSwgaG93ZXZlciwgX3JsX2xhc3RfY19w b3MgaXMgYW4gYWJzb2x1dGUgY3Vyc29yCitAQCAtMTAwNywxMSArMTExMywxMiBAQCBybF9yZWRp c3BsYXkgKCkKKyAJICAgICB0aG9zZSBjaGFyYWN0ZXJzIGhlcmUgYW5kIGNhbGwgX3JsX2JhY2tz cGFjZSgpIGRpcmVjdGx5LiAqLworIAkgIGlmICh3cmFwX29mZnNldCAmJiBjdXJzb3JfbGluZW51 bSA9PSAwICYmIG5sZWZ0IDwgX3JsX2xhc3RfY19wb3MpCisgCSAgICB7CisrCSAgICAgIC8qIFRY ID09IG5ldyBwaHlzaWNhbCBjdXJzb3IgcG9zaXRpb24gaW4gbXVsdGlieXRlIGxvY2FsZS4gKi8K KyAJICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKKy0J CXR4ID0gX3JsX2NvbF93aWR0aCAoJnZpc2libGVfbGluZVtwb3NdLCAwLCBubGVmdCkgLSB2aXNp YmxlX3dyYXBfb2Zmc2V0OworKwkJdHggPSBfcmxfY29sX3dpZHRoICgmdmlzaWJsZV9saW5lW3Bv c10sIDAsIG5sZWZ0LCAxKSAtIHZpc2libGVfd3JhcF9vZmZzZXQ7CisgCSAgICAgIGVsc2UKKyAJ CXR4ID0gbmxlZnQ7CistCSAgICAgIGlmIChfcmxfbGFzdF9jX3BvcyA+IHR4KQorKwkgICAgICBp ZiAodHggPj0gMCAmJiBfcmxfbGFzdF9jX3BvcyA+IHR4KQorIAkJeworIAkgICAgICAgICAgX3Js X2JhY2tzcGFjZSAoX3JsX2xhc3RfY19wb3MgLSB0eCk7CS8qIFhYWCAqLworIAkgICAgICAgICAg X3JsX2xhc3RfY19wb3MgPSB0eDsKK0BAIC0xMDQwLDExICsxMTQ3LDExIEBAIHJsX3JlZGlzcGxh eSAoKQorIAkgd2lsbCBiZSBMTUFSR0lOLiAqLworIAorICAgICAgIC8qIFRoZSBudW1iZXIgb2Yg Y2hhcmFjdGVycyB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGJlZm9yZSB0aGUgY3Vyc29yLiAqLwor LSAgICAgIG5kaXNwID0gY19wb3MgLSB3cmFwX29mZnNldDsKKysgICAgICBuZGlzcCA9IGNwb3Nf YnVmZmVyX3Bvc2l0aW9uIC0gd3JhcF9vZmZzZXQ7CisgICAgICAgbmxlZnQgID0gcHJvbXB0X3Zp c2libGVfbGVuZ3RoICsgd3JhcF9vZmZzZXQ7CisgICAgICAgLyogV2hlcmUgdGhlIG5ldyBjdXJz b3IgcG9zaXRpb24gd2lsbCBiZSBvbiB0aGUgc2NyZWVuLiAgVGhpcyBjYW4gYmUKKyAJIGxvbmdl ciB0aGFuIFNDUkVFTldJRFRIOyBpZiBpdCBpcywgbG1hcmdpbiB3aWxsIGJlIGFkanVzdGVkLiAq LworLSAgICAgIHBoeXNfY19wb3MgPSBjX3BvcyAtIChsYXN0X2xtYXJnaW4gPyBsYXN0X2xtYXJn aW4gOiB3cmFwX29mZnNldCk7CisrICAgICAgcGh5c19jX3BvcyA9IGNwb3NfYnVmZmVyX3Bvc2l0 aW9uIC0gKGxhc3RfbG1hcmdpbiA/IGxhc3RfbG1hcmdpbiA6IHdyYXBfb2Zmc2V0KTsKKyAgICAg ICB0ID0gX3JsX3NjcmVlbndpZHRoIC8gMzsKKyAKKyAgICAgICAvKiBJZiB0aGUgbnVtYmVyIG9m IGNoYXJhY3RlcnMgaGFkIGFscmVhZHkgZXhjZWVkZWQgdGhlIHNjcmVlbndpZHRoLAorQEAgLTEw NTUsNyArMTE2Miw3IEBAIHJsX3JlZGlzcGxheSAoKQorIAkgdHdvLXRoaXJkcyBvZiB0aGUgd2F5 IGFjcm9zcyB0aGUgc2NyZWVuLiAqLworICAgICAgIGlmIChwaHlzX2NfcG9zID4gX3JsX3NjcmVl bndpZHRoIC0gMikKKyAJeworLQkgIGxtYXJnaW4gPSBjX3BvcyAtICgyICogdCk7CisrCSAgbG1h cmdpbiA9IGNwb3NfYnVmZmVyX3Bvc2l0aW9uIC0gKDIgKiB0KTsKKyAJICBpZiAobG1hcmdpbiA8 IDApCisgCSAgICBsbWFyZ2luID0gMDsKKyAJICAvKiBJZiB0aGUgbGVmdCBtYXJnaW4gd291bGQg YmUgaW4gdGhlIG1pZGRsZSBvZiBhIHByb21wdCB3aXRoCitAQCAtMTA2OSw3ICsxMTc2LDcgQEAg cmxfcmVkaXNwbGF5ICgpCisgCXsKKyAJICAvKiBJZiB3ZSBhcmUgbW92aW5nIGJhY2sgdG93YXJk cyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIGFuZAorIAkgICAgIHRoZSBsYXN0IG1hcmdpbiBp cyBubyBsb25nZXIgY29ycmVjdCwgY29tcHV0ZSBhIG5ldyBvbmUuICovCistCSAgbG1hcmdpbiA9 ICgoY19wb3MgLSAxKSAvIHQpICogdDsJLyogWFhYICovCisrCSAgbG1hcmdpbiA9ICgoY3Bvc19i dWZmZXJfcG9zaXRpb24gLSAxKSAvIHQpICogdDsJLyogWFhYICovCisgCSAgaWYgKHdyYXBfb2Zm c2V0ICYmIGxtYXJnaW4gPiAwICYmIGxtYXJnaW4gPCBubGVmdCkKKyAJICAgIGxtYXJnaW4gPSBu bGVmdDsKKyAJfQorQEAgLTEwODksOSArMTE5NiwxMSBAQCBybF9yZWRpc3BsYXkgKCkKKyAgICAg ICBpZiAodCA8IG91dCkKKyAJbGluZVt0IC0gMV0gPSAnPic7CisgCistICAgICAgaWYgKCFybF9k aXNwbGF5X2ZpeGVkIHx8IGZvcmNlZF9kaXNwbGF5IHx8IGxtYXJnaW4gIT0gbGFzdF9sbWFyZ2lu KQorKyAgICAgIGlmIChybF9kaXNwbGF5X2ZpeGVkID09IDAgfHwgZm9yY2VkX2Rpc3BsYXkgfHwg bG1hcmdpbiAhPSBsYXN0X2xtYXJnaW4pCisgCXsKKyAJICBmb3JjZWRfZGlzcGxheSA9IDA7Cisr CSAgb19jcG9zID0gX3JsX2xhc3RfY19wb3M7CisrCSAgY3Bvc19hZGp1c3RlZCA9IDA7CisgCSAg dXBkYXRlX2xpbmUgKCZ2aXNpYmxlX2xpbmVbbGFzdF9sbWFyZ2luXSwKKyAJCSAgICAgICAmaW52 aXNpYmxlX2xpbmVbbG1hcmdpbl0sCisgCQkgICAgICAgMCwKK0BAIC0xMDk5LDYgKzEyMDgsOSBA QCBybF9yZWRpc3BsYXkgKCkKKyAJCSAgICAgICBfcmxfc2NyZWVud2lkdGggKyAobG1hcmdpbiA/ IDAgOiB3cmFwX29mZnNldCksCisgCQkgICAgICAgMCk7CisgCisrCSAgaWYgKChNQl9DVVJfTUFY ID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApICYmIE9MRF9DUE9TX0lOX1BST01QVCgpKQor KwkgICAgX3JsX2xhc3RfY19wb3MgLT0gcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmU7CS8q IFhYWCAtIHdhcyB3cmFwX29mZnNldCAqLworKworIAkgIC8qIElmIHRoZSB2aXNpYmxlIG5ldyBs aW5lIGlzIHNob3J0ZXIgdGhhbiB0aGUgb2xkLCBidXQgdGhlIG51bWJlcgorIAkgICAgIG9mIGlu dmlzaWJsZSBjaGFyYWN0ZXJzIGlzIGdyZWF0ZXIsIGFuZCB3ZSBhcmUgYXQgdGhlIGVuZCBvZgor IAkgICAgIHRoZSBuZXcgbGluZSwgd2UgbmVlZCB0byBjbGVhciB0byBlb2wuICovCitAQCAtMTEx NCw3ICsxMjI2LDcgQEAgcmxfcmVkaXNwbGF5ICgpCisgCSAgaWYgKHZpc2libGVfZmlyc3RfbGlu ZV9sZW4gPiBfcmxfc2NyZWVud2lkdGgpCisgCSAgICB2aXNpYmxlX2ZpcnN0X2xpbmVfbGVuID0g X3JsX3NjcmVlbndpZHRoOworIAorLQkgIF9ybF9tb3ZlX2N1cnNvcl9yZWxhdGl2ZSAoY19wb3Mg LSBsbWFyZ2luLCAmaW52aXNpYmxlX2xpbmVbbG1hcmdpbl0pOworKwkgIF9ybF9tb3ZlX2N1cnNv cl9yZWxhdGl2ZSAoY3Bvc19idWZmZXJfcG9zaXRpb24gLSBsbWFyZ2luLCAmaW52aXNpYmxlX2xp bmVbbG1hcmdpbl0pOworIAkgIGxhc3RfbG1hcmdpbiA9IGxtYXJnaW47CisgCX0KKyAgICAgfQor QEAgLTExMjIsMTcgKzEyMzQsMTAgQEAgcmxfcmVkaXNwbGF5ICgpCisgCisgICAvKiBTd2FwIHZp c2libGUgYW5kIG5vbi12aXNpYmxlIGxpbmVzLiAqLworICAgeworLSAgICBjaGFyICp2dGVtcCA9 IHZpc2libGVfbGluZTsKKy0gICAgaW50ICppdGVtcCA9IHZpc19sYnJlYWtzLCBudGVtcCA9IHZp c19sYnNpemU7CistCistICAgIHZpc2libGVfbGluZSA9IGludmlzaWJsZV9saW5lOworLSAgICBp bnZpc2libGVfbGluZSA9IHZ0ZW1wOworKyAgICBzdHJ1Y3QgbGluZV9zdGF0ZSAqdnRlbXAgPSBs aW5lX3N0YXRlX3Zpc2libGU7CisgCistICAgIHZpc19sYnJlYWtzID0gaW52X2xicmVha3M7Cist ICAgIGludl9sYnJlYWtzID0gaXRlbXA7CistCistICAgIHZpc19sYnNpemUgPSBpbnZfbGJzaXpl OworLSAgICBpbnZfbGJzaXplID0gbnRlbXA7CisrICAgIGxpbmVfc3RhdGVfdmlzaWJsZSA9IGxp bmVfc3RhdGVfaW52aXNpYmxlOworKyAgICBsaW5lX3N0YXRlX2ludmlzaWJsZSA9IHZ0ZW1wOwor IAorICAgICBybF9kaXNwbGF5X2ZpeGVkID0gMDsKKyAgICAgLyogSWYgd2UgYXJlIGRpc3BsYXlp bmcgb24gYSBzaW5nbGUgbGluZSwgYW5kIGxhc3RfbG1hcmdpbiBpcyA+IDAsIHdlCitAQCAtMTE0 NCw2ICsxMjQ5LDcgQEAgcmxfcmVkaXNwbGF5ICgpCisgICAgICAgdmlzaWJsZV93cmFwX29mZnNl dCA9IHdyYXBfb2Zmc2V0OworICAgfQorIAorKyAgUkxfVU5TRVRTVEFURSAoUkxfU1RBVEVfUkVE SVNQTEFZSU5HKTsKKyAgIF9ybF9yZWxlYXNlX3NpZ2ludCAoKTsKKyB9CisgCitAQCAtMTE2OSwx MiArMTI3NSwxMiBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21heCwg bm1heCwgaW52X2JvdGxpbikKKyAgICAgIGludCBjdXJyZW50X2xpbmUsIG9tYXgsIG5tYXgsIGlu dl9ib3RsaW47CisgeworICAgcmVnaXN0ZXIgY2hhciAqb2ZkLCAqb2xzLCAqb2UsICpuZmQsICpu bHMsICpuZTsKKy0gIGludCB0ZW1wLCBsZW5kaWZmLCB3c2F0ZW5kLCBvZCwgbmQ7CisrICBpbnQg dGVtcCwgbGVuZGlmZiwgd3NhdGVuZCwgb2QsIG5kLCB0d2lkdGgsIG9fY3BvczsKKyAgIGludCBj dXJyZW50X2ludmlzX2NoYXJzOworICAgaW50IGNvbF9sZW5kaWZmLCBjb2xfdGVtcDsKKyAjaWYg ZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKKyAgIG1ic3RhdGVfdCBwc19uZXcsIHBzX29sZDsK Ky0gIGludCBuZXdfb2Zmc2V0LCBvbGRfb2Zmc2V0LCB0bXA7CisrICBpbnQgbmV3X29mZnNldCwg b2xkX29mZnNldDsKKyAjZW5kaWYKKyAKKyAgIC8qIElmIHdlJ3JlIGF0IHRoZSByaWdodCBlZGdl IG9mIGEgdGVybWluYWwgdGhhdCBzdXBwb3J0cyB4biwgd2UncmUKK0BAIC0xMTg1LDcgKzEyOTEs NyBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21heCwgbm1heCwgaW52 X2JvdGxpbikKKyAgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDAp CisgICAgIHRlbXAgPSBfcmxfbGFzdF9jX3BvczsKKyAgIGVsc2UKKy0gICAgdGVtcCA9IF9ybF9s YXN0X2NfcG9zIC0gV19PRkZTRVQoX3JsX2xhc3Rfdl9wb3MsIHZpc2libGVfd3JhcF9vZmZzZXQp OworKyAgICB0ZW1wID0gX3JsX2xhc3RfY19wb3MgLSBXUkFQX09GRlNFVCAoX3JsX2xhc3Rfdl9w b3MsIHZpc2libGVfd3JhcF9vZmZzZXQpOworICAgaWYgKHRlbXAgPT0gX3JsX3NjcmVlbndpZHRo ICYmIF9ybF90ZXJtX2F1dG93cmFwICYmICFfcmxfaG9yaXpvbnRhbF9zY3JvbGxfbW9kZQorIAkm JiBfcmxfbGFzdF92X3BvcyA9PSBjdXJyZW50X2xpbmUgLSAxKQorICAgICB7CitAQCAtMTIwMCw4 ICsxMzA2LDggQEAgdXBkYXRlX2xpbmUgKG9sZCwgbmV3LCBjdXJyZW50X2xpbmUsIG9tYXgsIG5t YXgsIGludl9ib3RsaW4pCisgCSAgLyogVGhpcyBmaXhlcyBvbmx5IGRvdWJsZS1jb2x1bW4gY2hh cmFjdGVycywgYnV0IGlmIHRoZSB3cmFwcGVkCisgCSAgICAgY2hhcmFjdGVyIGNvbXN1bWVzIG1v cmUgdGhhbiB0aHJlZSBjb2x1bW5zLCBzcGFjZXMgd2lsbCBiZQorIAkgICAgIGluc2VydGVkIGlu IHRoZSBzdHJpbmcgYnVmZmVyLiAqLworLQkgIGlmIChfcmxfd3JhcHBlZF9saW5lW2N1cnJlbnRf bGluZV0gPiAwKQorLQkgICAgX3JsX2NsZWFyX3RvX2VvbCAoX3JsX3dyYXBwZWRfbGluZVtjdXJy ZW50X2xpbmVdKTsKKysJICBpZiAoY3VycmVudF9saW5lIDwgbGluZV9zdGF0ZV92aXNpYmxlLT53 YnNpemUgJiYgbGluZV9zdGF0ZV92aXNpYmxlLT53cmFwcGVkX2xpbmVbY3VycmVudF9saW5lXSA+ IDApCisrCSAgICBfcmxfY2xlYXJfdG9fZW9sIChsaW5lX3N0YXRlX3Zpc2libGUtPndyYXBwZWRf bGluZVtjdXJyZW50X2xpbmVdKTsKKyAKKyAJICBtZW1zZXQgKCZwcywgMCwgc2l6ZW9mIChtYnN0 YXRlX3QpKTsKKyAJICByZXQgPSBtYnJ0b3djICgmd2MsIG5ldywgTUJfQ1VSX01BWCwgJnBzKTsK K0BAIC0xMjE3LDcgKzEzMjMsNyBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGlu ZSwgb21heCwgbm1heCwgaW52X2JvdGxpbikKKyAKKyAJICBpZiAodGVtcHdpZHRoID4gMCkKKyAJ ICAgIHsKKy0JICAgICAgaW50IGNvdW50OworKwkgICAgICBpbnQgY291bnQsIGk7CisgCSAgICAg IGJ5dGVzID0gcmV0OworIAkgICAgICBmb3IgKGNvdW50ID0gMDsgY291bnQgPCBieXRlczsgY291 bnQrKykKKyAJCXB1dGMgKG5ld1tjb3VudF0sIHJsX291dHN0cmVhbSk7CitAQCAtMTIyOCwxMCAr MTMzNCwxMyBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21heCwgbm1h eCwgaW52X2JvdGxpbikKKyAJICAgICAgaWYgKHJldCAhPSAwICYmIGJ5dGVzICE9IDApCisgCQl7 CisgCQkgIGlmIChNQl9JTlZBTElEQ0ggKHJldCkpCistCQkgICAgbWVtbW92ZSAob2xkK2J5dGVz LCBvbGQrMSwgc3RybGVuIChvbGQrMSkpOworLQkJICBlbHNlCistCQkgICAgbWVtbW92ZSAob2xk K2J5dGVzLCBvbGQrcmV0LCBzdHJsZW4gKG9sZCtyZXQpKTsKKysJCSAgICByZXQgPSAxOworKwkJ ICBtZW1tb3ZlIChvbGQrYnl0ZXMsIG9sZCtyZXQsIHN0cmxlbiAob2xkK3JldCkpOworIAkJICBt ZW1jcHkgKG9sZCwgbmV3LCBieXRlcyk7CisrCQkgIC8qIEZpeCB1cCBpbmRpY2VzIGlmIHdlIGNv cHkgZGF0YSBmcm9tIG9uZSBsaW5lIHRvIGFub3RoZXIgKi8KKysJCSAgb21heCArPSBieXRlcyAt IHJldDsKKysJCSAgZm9yIChpID0gY3VycmVudF9saW5lKzE7IGkgPCBpbnZfYm90bGluKzE7IGkr KykKKysJCSAgICB2aXNfbGJyZWFrc1tpXSArPSBieXRlcyAtIHJldDsKKyAJCX0KKyAJICAgIH0K KyAJICBlbHNlCitAQCAtMTI2NSw3ICsxMzc0LDcgQEAgdXBkYXRlX2xpbmUgKG9sZCwgbmV3LCBj dXJyZW50X2xpbmUsIG9tYXgsIG5tYXgsIGludl9ib3RsaW4pCisgICAgICAgLyogU2VlIGlmIHRo ZSBvbGQgbGluZSBpcyBhIHN1YnNldCBvZiB0aGUgbmV3IGxpbmUsIHNvIHRoYXQgdGhlCisgCSBv bmx5IGNoYW5nZSBpcyBhZGRpbmcgY2hhcmFjdGVycy4gKi8KKyAgICAgICB0ZW1wID0gKG9tYXgg PCBubWF4KSA/IG9tYXggOiBubWF4OworLSAgICAgIGlmIChtZW1jbXAgKG9sZCwgbmV3LCB0ZW1w KSA9PSAwKQorKyAgICAgIGlmIChtZW1jbXAgKG9sZCwgbmV3LCB0ZW1wKSA9PSAwKQkJLyogYWRk aW5nIGF0IHRoZSBlbmQgKi8KKyAJeworIAkgIG9mZCA9IG9sZCArIHRlbXA7CisgCSAgbmZkID0g bmV3ICsgdGVtcDsKK0BAIC0xNDA3LDMwICsxNTE2LDQ4IEBAIHVwZGF0ZV9saW5lIChvbGQsIG5l dywgY3VycmVudF9saW5lLCBvbWF4LCBubWF4LCBpbnZfYm90bGluKQorICAgICAgc2VxdWVuY2Vz IChsaWtlIGRyYXdpbmcgdGhlIGB1bmJvbGQnIHNlcXVlbmNlIHdpdGhvdXQgYSBjb3JyZXNwb25k aW5nCisgICAgICBgYm9sZCcpIHRoYXQgbWFuaWZlc3RzIGl0c2VsZiBvbiBjZXJ0YWluIHRlcm1p bmFscy4gKi8KKyAKKy0gIGxlbmRpZmYgPSBsb2NhbF9wcm9tcHQgPyBzdHJsZW4gKGxvY2FsX3By b21wdCkgOiAwOworKyAgbGVuZGlmZiA9IGxvY2FsX3Byb21wdF9sZW47CisgICBvZCA9IG9mZCAt IG9sZDsJLyogaW5kZXggb2YgZmlyc3QgZGlmZmVyZW5jZSBpbiB2aXNpYmxlIGxpbmUgKi8KKyAg IGlmIChjdXJyZW50X2xpbmUgPT0gMCAmJiAhX3JsX2hvcml6b250YWxfc2Nyb2xsX21vZGUgJiYK KyAgICAgICBfcmxfdGVybV9jciAmJiBsZW5kaWZmID4gcHJvbXB0X3Zpc2libGVfbGVuZ3RoICYm IF9ybF9sYXN0X2NfcG9zID4gMCAmJgorLSAgICAgIG9kID49IGxlbmRpZmYgJiYgX3JsX2xhc3Rf Y19wb3MgPD0gcHJvbXB0X2xhc3RfaW52aXNpYmxlKQorKyAgICAgIG9kID49IGxlbmRpZmYgJiYg X3JsX2xhc3RfY19wb3MgPCBQUk9NUFRfRU5ESU5HX0lOREVYKQorICAgICB7CisgI2lmIGRlZmlu ZWQgKF9fTVNET1NfXykKKyAgICAgICBwdXRjICgnXHInLCBybF9vdXRzdHJlYW0pOworICNlbHNl CisgICAgICAgdHB1dHMgKF9ybF90ZXJtX2NyLCAxLCBfcmxfb3V0cHV0X2NoYXJhY3Rlcl9mdW5j dGlvbik7CisgI2VuZGlmCisrICAgICAgaWYgKG1vZG1hcmspCisrCV9ybF9vdXRwdXRfc29tZV9j aGFycyAoIioiLCAxKTsKKyAgICAgICBfcmxfb3V0cHV0X3NvbWVfY2hhcnMgKGxvY2FsX3Byb21w dCwgbGVuZGlmZik7CisgICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50 ZWQgPT0gMCkKKyAJeworIAkgIC8qIFdlIHRha2Ugd3JhcF9vZmZzZXQgaW50byBhY2NvdW50IGhl cmUgc28gd2UgY2FuIHBhc3MgY29ycmVjdAorIAkgICAgIGluZm9ybWF0aW9uIHRvIF9ybF9tb3Zl X2N1cnNvcl9yZWxhdGl2ZS4gKi8KKy0JICBfcmxfbGFzdF9jX3BvcyA9IF9ybF9jb2xfd2lkdGgg KGxvY2FsX3Byb21wdCwgMCwgbGVuZGlmZikgLSB3cmFwX29mZnNldDsKKysJICBfcmxfbGFzdF9j X3BvcyA9IF9ybF9jb2xfd2lkdGggKGxvY2FsX3Byb21wdCwgMCwgbGVuZGlmZiwgMSkgLSB3cmFw X29mZnNldCArIG1vZG1hcms7CisgCSAgY3Bvc19hZGp1c3RlZCA9IDE7CisgCX0KKyAgICAgICBl bHNlCistCV9ybF9sYXN0X2NfcG9zID0gbGVuZGlmZjsKKysJX3JsX2xhc3RfY19wb3MgPSBsZW5k aWZmICsgbW9kbWFyazsKKyAgICAgfQorIAorKyAgb19jcG9zID0gX3JsX2xhc3RfY19wb3M7Cisr CisrICAvKiBXaGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucywgX3JsX2xhc3RfY19wb3MgaXMgY29y cmVjdCwgYW5kIGFuIGFic29sdXRlCisrICAgICBjdXJzb3IgcG9zdGlvbiBpbiBtdWx0aWJ5dGUg bW9kZSwgYnV0IGEgYnVmZmVyIGluZGV4IHdoZW4gbm90IGluIGEKKysgICAgIG11bHRpYnl0ZSBs b2NhbGUuICovCisgICBfcmxfbW92ZV9jdXJzb3JfcmVsYXRpdmUgKG9kLCBvbGQpOworKyNpZiAx CisrI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCisrICAvKiBXZSBuZWVkIHRvIGluZGlj YXRlIHRoYXQgdGhlIGN1cnNvciBwb3NpdGlvbiBpcyBjb3JyZWN0IGluIHRoZSBwcmVzZW5jZSBv ZgorKyAgICAgaW52aXNpYmxlIGNoYXJhY3RlcnMgaW4gdGhlIHByb21wdCBzdHJpbmcuICBMZXQn cyBzZWUgaWYgc2V0dGluZyB0aGlzIHdoZW4KKysgICAgIHdlIG1ha2Ugc3VyZSB3ZSdyZSBhdCB0 aGUgZW5kIG9mIHRoZSBkcmF3biBwcm9tcHQgc3RyaW5nIHdvcmtzLiAqLworKyAgaWYgKGN1cnJl bnRfbGluZSA9PSAwICYmIE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCAm JgorKyAgICAgIChfcmxfbGFzdF9jX3BvcyA+IDAgfHwgb19jcG9zID4gMCkgJiYKKysgICAgICBf cmxfbGFzdF9jX3BvcyA9PSBwcm9tcHRfcGh5c2ljYWxfY2hhcnMpCisrICAgIGNwb3NfYWRqdXN0 ZWQgPSAxOworKyNlbmRpZgorKyNlbmRpZgorIAorICAgLyogaWYgKGxlbiAobmV3KSA+IGxlbiAo b2xkKSkKKyAgICAgIGxlbmRpZmYgPT0gZGlmZmVyZW5jZSBpbiBidWZmZXIKK0BAIC0xNDM4LDcg KzE1NjUsNyBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21heCwgbm1h eCwgaW52X2JvdGxpbikKKyAgICAgIFdoZW4gbm90IHVzaW5nIG11bHRpYnl0ZSBjaGFyYWN0ZXJz LCB0aGVzZSBhcmUgZXF1YWwgKi8KKyAgIGxlbmRpZmYgPSAobmxzIC0gbmZkKSAtIChvbHMgLSBv ZmQpOworICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKKy0g ICAgY29sX2xlbmRpZmYgPSBfcmxfY29sX3dpZHRoIChuZXcsIG5mZCAtIG5ldywgbmxzIC0gbmV3 KSAtIF9ybF9jb2xfd2lkdGggKG9sZCwgb2ZkIC0gb2xkLCBvbHMgLSBvbGQpOworKyAgICBjb2xf bGVuZGlmZiA9IF9ybF9jb2xfd2lkdGggKG5ldywgbmZkIC0gbmV3LCBubHMgLSBuZXcsIDEpIC0g X3JsX2NvbF93aWR0aCAob2xkLCBvZmQgLSBvbGQsIG9scyAtIG9sZCwgMSk7CisgICBlbHNlCisg ICAgIGNvbF9sZW5kaWZmID0gbGVuZGlmZjsKKyAKK0BAIC0xNDYzLDcgKzE1OTAsNyBAQCB1cGRh dGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21heCwgbm1heCwgaW52X2JvdGxpbikK KyAgIC8qIEluc2VydCAoZGlmZiAobGVuIChvbGQpLCBsZW4gKG5ldykpIGNoLiAqLworICAgdGVt cCA9IG5lIC0gbmZkOworICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQg PT0gMCkKKy0gICAgY29sX3RlbXAgPSBfcmxfY29sX3dpZHRoIChuZXcsIG5mZCAtIG5ldywgbmUg LSBuZXcpOworKyAgICBjb2xfdGVtcCA9IF9ybF9jb2xfd2lkdGggKG5ldywgbmZkIC0gbmV3LCBu ZSAtIG5ldywgMSk7CisgICBlbHNlCisgICAgIGNvbF90ZW1wID0gdGVtcDsKKyAKK0BAIC0xNDcx LDIyICsxNTk4LDYwIEBAIHVwZGF0ZV9saW5lIChvbGQsIG5ldywgY3VycmVudF9saW5lLCBvbWF4 LCBubWF4LCBpbnZfYm90bGluKQorICAgICB7CisgICAgICAgLyogTm9uLXplcm8gaWYgd2UncmUg aW5jcmVhc2luZyB0aGUgbnVtYmVyIG9mIGxpbmVzLiAqLworICAgICAgIGludCBnbCA9IGN1cnJl bnRfbGluZSA+PSBfcmxfdmlzX2JvdGxpbiAmJiBpbnZfYm90bGluID4gX3JsX3Zpc19ib3RsaW47 CisrICAgICAgLyogSWYgY29sX2xlbmRpZmYgaXMgPiAwLCBpbXBseWluZyB0aGF0IHRoZSBuZXcg c3RyaW5nIHRha2VzIHVwIG1vcmUKKysJIHNjcmVlbiByZWFsIGVzdGF0ZSB0aGFuIHRoZSBvbGQs IGJ1dCBsZW5kaWZmIGlzIDwgMCwgbWVhbmluZyB0aGF0IGl0CisrCSB0YWtlcyBmZXdlciBieXRl cywgd2UgbmVlZCB0byBqdXN0IG91dHB1dCB0aGUgY2hhcmFjdGVycyBzdGFydGluZworKwkgZnJv bSB0aGUgZmlyc3QgZGlmZmVyZW5jZS4gIFRoZXNlIHdpbGwgb3ZlcndyaXRlIHdoYXQgaXMgb24g dGhlCisrCSBkaXNwbGF5LCBzbyB0aGVyZSdzIG5vIHJlYXNvbiB0byBkbyBhIHNtYXJ0IHVwZGF0 ZS4gIFRoaXMgY2FuIHJlYWxseQorKwkgb25seSBoYXBwZW4gaW4gYSBtdWx0aWJ5dGUgZW52aXJv bm1lbnQuICovCisrICAgICAgaWYgKGxlbmRpZmYgPCAwKQorKwl7CisrCSAgX3JsX291dHB1dF9z b21lX2NoYXJzIChuZmQsIHRlbXApOworKwkgIF9ybF9sYXN0X2NfcG9zICs9IF9ybF9jb2xfd2lk dGggKG5mZCwgMCwgdGVtcCwgMSk7CisrCSAgLyogSWYgbmZkIGJlZ2lucyBiZWZvcmUgYW55IGlu dmlzaWJsZSBjaGFyYWN0ZXJzIGluIHRoZSBwcm9tcHQsCisrCSAgICAgYWRqdXN0IF9ybF9sYXN0 X2NfcG9zIHRvIGFjY291bnQgZm9yIHdyYXBfb2Zmc2V0IGFuZCBzZXQKKysJICAgICBjcG9zX2Fk anVzdGVkIHRvIGxldCB0aGUgY2FsbGVyIGtub3cuICovCisrCSAgaWYgKGN1cnJlbnRfbGluZSA9 PSAwICYmIHdyYXBfb2Zmc2V0ICYmICgobmZkIC0gbmV3KSA8PSBwcm9tcHRfbGFzdF9pbnZpc2li bGUpKQorKwkgICAgeworKwkgICAgICBfcmxfbGFzdF9jX3BvcyAtPSB3cmFwX29mZnNldDsKKysJ ICAgICAgY3Bvc19hZGp1c3RlZCA9IDE7CisrCSAgICB9CisrCSAgcmV0dXJuOworKwl9CisgICAg ICAgLyogU29tZXRpbWVzIGl0IGlzIGNoZWFwZXIgdG8gcHJpbnQgdGhlIGNoYXJhY3RlcnMgcmF0 aGVyIHRoYW4KKyAJIHVzZSB0aGUgdGVybWluYWwncyBjYXBhYmlsaXRpZXMuICBJZiB3ZSdyZSBn cm93aW5nIHRoZSBudW1iZXIKKyAJIG9mIGxpbmVzLCBtYWtlIHN1cmUgd2UgYWN0dWFsbHkgY2F1 c2UgdGhlIG5ldyBsaW5lIHRvIHdyYXAKKyAJIGFyb3VuZCBvbiBhdXRvLXdyYXBwaW5nIHRlcm1p bmFscy4gKi8KKy0gICAgICBpZiAoX3JsX3Rlcm1pbmFsX2Nhbl9pbnNlcnQgJiYgKCgyICogY29s X3RlbXApID49IGNvbF9sZW5kaWZmIHx8IF9ybF90ZXJtX0lDKSAmJiAoIV9ybF90ZXJtX2F1dG93 cmFwIHx8ICFnbCkpCisrICAgICAgZWxzZSBpZiAoX3JsX3Rlcm1pbmFsX2Nhbl9pbnNlcnQgJiYg KCgyICogY29sX3RlbXApID49IGNvbF9sZW5kaWZmIHx8IF9ybF90ZXJtX0lDKSAmJiAoIV9ybF90 ZXJtX2F1dG93cmFwIHx8ICFnbCkpCisgCXsKKyAJICAvKiBJZiBsZW5kaWZmID4gcHJvbXB0X3Zp c2libGVfbGVuZ3RoIGFuZCBfcmxfbGFzdF9jX3BvcyA9PSAwIGFuZAorIAkgICAgIF9ybF9ob3Jp em9udGFsX3Njcm9sbF9tb2RlID09IDEsIGluc2VydGluZyB0aGUgY2hhcmFjdGVycyB3aXRoCisg CSAgICAgX3JsX3Rlcm1fSUMgb3IgX3JsX3Rlcm1faWMgd2lsbCBzY3JldyB1cCB0aGUgc2NyZWVu IGJlY2F1c2Ugb2YgdGhlCisgCSAgICAgaW52aXNpYmxlIGNoYXJhY3RlcnMuICBXZSBuZWVkIHRv IGp1c3QgZHJhdyB0aGVtLiAqLworLQkgIGlmICgqb2xzICYmICghX3JsX2hvcml6b250YWxfc2Ny b2xsX21vZGUgfHwgX3JsX2xhc3RfY19wb3MgPiAwIHx8CistCQkJbGVuZGlmZiA8PSBwcm9tcHRf dmlzaWJsZV9sZW5ndGggfHwgIWN1cnJlbnRfaW52aXNfY2hhcnMpKQorKwkgIC8qIFRoZSBzYW1l IHRoaW5nIGhhcHBlbnMgaWYgd2UncmUgdHJ5aW5nIHRvIGRyYXcgYmVmb3JlIHRoZSBsYXN0Cisr CSAgICAgaW52aXNpYmxlIGNoYXJhY3RlciBpbiB0aGUgcHJvbXB0IHN0cmluZyBvciB3ZSdyZSBp bmNyZWFzaW5nIHRoZQorKwkgICAgIG51bWJlciBvZiBpbnZpc2libGUgY2hhcmFjdGVycyBpbiB0 aGUgbGluZSBhbmQgd2UncmUgbm90IGRyYXdpbmcKKysJICAgICB0aGUgZW50aXJlIHByb21wdCBz dHJpbmcuICovCisrCSAgaWYgKCpvbHMgJiYgKChfcmxfaG9yaXpvbnRhbF9zY3JvbGxfbW9kZSAm JgorKwkJCV9ybF9sYXN0X2NfcG9zID09IDAgJiYKKysJCQlsZW5kaWZmID4gcHJvbXB0X3Zpc2li bGVfbGVuZ3RoICYmCisrCQkJY3VycmVudF9pbnZpc19jaGFycyA+IDApID09IDApICYmCisrCQkg ICAgICAoKChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApICYmCisrCQkg ICAgICAgIGN1cnJlbnRfbGluZSA9PSAwICYmIHdyYXBfb2Zmc2V0ICYmCisrCQkgICAgICAgICgo bmZkIC0gbmV3KSA8PSBwcm9tcHRfbGFzdF9pbnZpc2libGUpICYmCisrCQkgICAgICAgIChjb2xf bGVuZGlmZiA8IHByb21wdF92aXNpYmxlX2xlbmd0aCkpID09IDApICYmCisrCQkgICAgICAodmlz aWJsZV93cmFwX29mZnNldCA+PSBjdXJyZW50X2ludmlzX2NoYXJzKSkKKyAJICAgIHsKKyAJICAg ICAgaW5zZXJ0X3NvbWVfY2hhcnMgKG5mZCwgbGVuZGlmZiwgY29sX2xlbmRpZmYpOworIAkgICAg ICBfcmxfbGFzdF9jX3BvcyArPSBjb2xfbGVuZGlmZjsKKyAJICAgIH0KKysjaWYgMAkJLyogWFhY IC0gZm9yIG5vdyAqLworKwkgIGVsc2UgaWYgKChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29y aWVudGVkID09IDApICYmIF9ybF9sYXN0X2NfcG9zID09IDAgJiYgd3JhcF9vZmZzZXQgJiYgKG5m ZC1uZXcpIDw9IHByb21wdF9sYXN0X2ludmlzaWJsZSAmJiBjb2xfbGVuZGlmZiA8IHByb21wdF92 aXNpYmxlX2xlbmd0aCAmJiB2aXNpYmxlX3dyYXBfb2Zmc2V0ID49IGN1cnJlbnRfaW52aXNfY2hh cnMpCisrCSAgICB7CisrCSAgICAgIF9ybF9vdXRwdXRfc29tZV9jaGFycyAobmZkLCBsZW5kaWZm KTsKKysJICAgICAgX3JsX2xhc3RfY19wb3MgKz0gY29sX2xlbmRpZmY7CisrCSAgICB9CisrI2Vu ZGlmCisgCSAgZWxzZSBpZiAoKE1CX0NVUl9NQVggPT0gMSB8fCBybF9ieXRlX29yaWVudGVkICE9 IDApICYmICpvbHMgPT0gMCAmJiBsZW5kaWZmID4gMCkKKyAJICAgIHsKKyAJICAgICAgLyogQXQg dGhlIGVuZCBvZiBhIGxpbmUgdGhlIGNoYXJhY3RlcnMgZG8gbm90IGhhdmUgdG8KK0BAIC0xNDk4 LDExICsxNjYzLDE2IEBAIHVwZGF0ZV9saW5lIChvbGQsIG5ldywgY3VycmVudF9saW5lLCBvbWF4 LCBubWF4LCBpbnZfYm90bGluKQorIAkgICAgfQorIAkgIGVsc2UKKyAJICAgIHsKKy0JICAgICAg LyogV2UgaGF2ZSBob3Jpem9udGFsIHNjcm9sbGluZyBhbmQgd2UgYXJlIG5vdCBpbnNlcnRpbmcg YXQKKy0JCSB0aGUgZW5kLiAgV2UgaGF2ZSBpbnZpc2libGUgY2hhcmFjdGVycyBpbiB0aGlzIGxp bmUuICBUaGlzCistCQkgaXMgYSBkdW1iIHVwZGF0ZS4gKi8KKyAJICAgICAgX3JsX291dHB1dF9z b21lX2NoYXJzIChuZmQsIHRlbXApOworIAkgICAgICBfcmxfbGFzdF9jX3BvcyArPSBjb2xfdGVt cDsKKysJICAgICAgLyogSWYgbmZkIGJlZ2lucyBiZWZvcmUgdGhlIGxhc3QgaW52aXNpYmxlIGNo YXJhY3RlciBpbiB0aGUKKysJCSBwcm9tcHQsIGFkanVzdCBfcmxfbGFzdF9jX3BvcyB0byBhY2Nv dW50IGZvciB3cmFwX29mZnNldAorKwkJIGFuZCBzZXQgY3Bvc19hZGp1c3RlZCB0byBsZXQgdGhl IGNhbGxlciBrbm93LiAqLworKwkgICAgICBpZiAoKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVf b3JpZW50ZWQgPT0gMCkgJiYgY3VycmVudF9saW5lID09IDAgJiYgd3JhcF9vZmZzZXQgJiYgKChu ZmQgLSBuZXcpIDw9IHByb21wdF9sYXN0X2ludmlzaWJsZSkpCisrCQl7CisrCQkgIF9ybF9sYXN0 X2NfcG9zIC09IHdyYXBfb2Zmc2V0OworKwkJICBjcG9zX2FkanVzdGVkID0gMTsKKysJCX0KKyAJ ICAgICAgcmV0dXJuOworIAkgICAgfQorIAkgIC8qIENvcHkgKG5ldykgY2hhcnMgdG8gc2NyZWVu IGZyb20gZmlyc3QgZGlmZiB0byBsYXN0IG1hdGNoLiAqLworQEAgLTE1MTAsMTUgKzE2ODAsMjMg QEAgdXBkYXRlX2xpbmUgKG9sZCwgbmV3LCBjdXJyZW50X2xpbmUsIG9tYXgsIG5tYXgsIGludl9i b3RsaW4pCisgCSAgaWYgKCh0ZW1wIC0gbGVuZGlmZikgPiAwKQorIAkgICAgeworIAkgICAgICBf cmxfb3V0cHV0X3NvbWVfY2hhcnMgKG5mZCArIGxlbmRpZmYsIHRlbXAgLSBsZW5kaWZmKTsKKy0j aWYgMQorIAkgICAgIC8qIFhYWCAtLSB0aGlzIGJlYXJzIGNsb3NlciBpbnNwZWN0aW9uLiAgRml4 ZXMgYSByZWRpc3BsYXkgYnVnCisgCQlyZXBvcnRlZCBhZ2FpbnN0IGJhc2gtMy4wLWFscGhhIGJ5 IEFuZHJlYXMgU2Nod2FiIGludm9sdmluZworIAkJbXVsdGlieXRlIGNoYXJhY3RlcnMgYW5kIHBy b21wdCBzdHJpbmdzIHdpdGggaW52aXNpYmxlCisgCQljaGFyYWN0ZXJzLCBidXQgd2FzIHByZXZp b3VzbHkgZGlzYWJsZWQuICovCistCSAgICAgIF9ybF9sYXN0X2NfcG9zICs9IF9ybF9jb2xfd2lk dGggKG5mZCtsZW5kaWZmLCAwLCB0ZW1wLWNvbF9sZW5kaWZmKTsKKy0jZWxzZQorLQkgICAgICBf cmxfbGFzdF9jX3BvcyArPSBfcmxfY29sX3dpZHRoIChuZmQrbGVuZGlmZiwgMCwgdGVtcC1sZW5k aWZmKTsKKy0jZW5kaWYKKysJICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3Jp ZW50ZWQgPT0gMCkKKysJCXR3aWR0aCA9IF9ybF9jb2xfd2lkdGggKG5mZCtsZW5kaWZmLCAwLCB0 ZW1wLWNvbF9sZW5kaWZmLCAxKTsKKysJICAgICAgZWxzZQorKwkJdHdpZHRoID0gdGVtcCAtIGxl bmRpZmY7CisrCSAgICAgIF9ybF9sYXN0X2NfcG9zICs9IHR3aWR0aDsKKysJICAgICAgLyogSWYg bmZkIGJlZ2lucyBiZWZvcmUgdGhlIGxhc3QgaW52aXNpYmxlIGNoYXJhY3RlciBpbiB0aGUKKysJ CSBwcm9tcHQsIGFkanVzdCBfcmxfbGFzdF9jX3BvcyB0byBhY2NvdW50IGZvciB3cmFwX29mZnNl dAorKwkJIGFuZCBzZXQgY3Bvc19hZGp1c3RlZCB0byBsZXQgdGhlIGNhbGxlciBrbm93LiAqLwor KwkgICAgICBpZiAoKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkgJiYg Y3VycmVudF9saW5lID09IDAgJiYgd3JhcF9vZmZzZXQgJiYgKChuZmQgLSBuZXcpIDw9IHByb21w dF9sYXN0X2ludmlzaWJsZSkpCisrCQl7CisrCQkgIF9ybF9sYXN0X2NfcG9zIC09IHdyYXBfb2Zm c2V0OworKwkJICBjcG9zX2FkanVzdGVkID0gMTsKKysJCX0KKyAJICAgIH0KKyAJfQorICAgICAg IGVsc2UKK0BAIC0xNTMwLDYgKzE3MDgsMTQgQEAgdXBkYXRlX2xpbmUgKG9sZCwgbmV3LCBjdXJy ZW50X2xpbmUsIG9tYXgsIG5tYXgsIGludl9ib3RsaW4pCisgCSAgICAgY2hhciBpbiB0aGUgY3Vy cmVudCBsaW5lICh3aGljaCBpbXBsaWVzIHdlIGp1c3Qgb3V0cHV0IHNvbWUgaW52aXNpYmxlCisg CSAgICAgY2hhcmFjdGVycykgd2UgbmVlZCB0byBhZGp1c3QgX3JsX2xhc3RfY19wb3MsIHNpbmNl IGl0IHJlcHJlc2VudHMKKyAJICAgICBhIHBoeXNpY2FsIGNoYXJhY3RlciBwb3NpdGlvbi4gKi8K KysJICBpZiAoKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkgJiYKKysJ CWN1cnJlbnRfbGluZSA9PSBwcm9tcHRfbGFzdF9zY3JlZW5fbGluZSAmJiB3cmFwX29mZnNldCAm JgorKwkJd3JhcF9vZmZzZXQgIT0gcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUgJiYKKysJ CSgobmZkLW5ldykgPCAocHJvbXB0X2xhc3RfaW52aXNpYmxlLShjdXJyZW50X2xpbmUqX3JsX3Nj cmVlbndpZHRoKSkpKQorKwkgICAgeworKwkgICAgICBfcmxfbGFzdF9jX3BvcyAtPSB3cmFwX29m ZnNldCAtIHByb21wdF9pbnZpc19jaGFyc19maXJzdF9saW5lOworKwkgICAgICBjcG9zX2FkanVz dGVkID0gMTsKKysJICAgIH0KKyAJfQorICAgICB9CisgICBlbHNlCQkJCS8qIERlbGV0ZSBjaGFy YWN0ZXJzIGZyb20gbGluZS4gKi8KK0BAIC0xNTUxLDggKzE3MzcsMjIgQEAgdXBkYXRlX2xpbmUg KG9sZCwgbmV3LCBjdXJyZW50X2xpbmUsIG9tYXgsIG5tYXgsIGludl9ib3RsaW4pCisgCSAgdGVt cCA9IG5scyAtIG5mZDsKKyAJICBpZiAodGVtcCA+IDApCisgCSAgICB7CisrCSAgICAgIC8qIElm IG5mZCBiZWdpbnMgYXQgdGhlIHByb21wdCwgb3IgYmVmb3JlIHRoZSBpbnZpc2libGUKKysJCSBj aGFyYWN0ZXJzIGluIHRoZSBwcm9tcHQsIHdlIG5lZWQgdG8gYWRqdXN0IF9ybF9sYXN0X2NfcG9z CisrCQkgaW4gYSBtdWx0aWJ5dGUgbG9jYWxlIHRvIGFjY291bnQgZm9yIHRoZSB3cmFwIG9mZnNl dCBhbmQKKysJCSBzZXQgY3Bvc19hZGp1c3RlZCBhY2NvcmRpbmdseS4gKi8KKyAJICAgICAgX3Js X291dHB1dF9zb21lX2NoYXJzIChuZmQsIHRlbXApOworLQkgICAgICBfcmxfbGFzdF9jX3BvcyAr PSBfcmxfY29sX3dpZHRoIChuZmQsIDAsIHRlbXApOzsKKysJICAgICAgaWYgKE1CX0NVUl9NQVgg PiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKKysJCXsKKysJCSAgX3JsX2xhc3RfY19wb3Mg Kz0gX3JsX2NvbF93aWR0aCAobmZkLCAwLCB0ZW1wLCAxKTsKKysJCSAgaWYgKGN1cnJlbnRfbGlu ZSA9PSAwICYmIHdyYXBfb2Zmc2V0ICYmICAoKG5mZCAtIG5ldykgPD0gcHJvbXB0X2xhc3RfaW52 aXNpYmxlKSkKKysJCSAgICB7CisrCQkgICAgICBfcmxfbGFzdF9jX3BvcyAtPSB3cmFwX29mZnNl dDsKKysJCSAgICAgIGNwb3NfYWRqdXN0ZWQgPSAxOworKwkJICAgIH0KKysJCX0KKysJICAgICAg ZWxzZQorKwkJX3JsX2xhc3RfY19wb3MgKz0gdGVtcDsKKyAJICAgIH0KKyAJfQorICAgICAgIC8q IE90aGVyd2lzZSwgcHJpbnQgb3ZlciB0aGUgZXhpc3RpbmcgbWF0ZXJpYWwuICovCitAQCAtMTU2 MCwxNiArMTc2MCwzNyBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21h eCwgbm1heCwgaW52X2JvdGxpbikKKyAJeworIAkgIGlmICh0ZW1wID4gMCkKKyAJICAgIHsKKysJ ICAgICAgLyogSWYgbmZkIGJlZ2lucyBhdCB0aGUgcHJvbXB0LCBvciBiZWZvcmUgdGhlIGludmlz aWJsZQorKwkJIGNoYXJhY3RlcnMgaW4gdGhlIHByb21wdCwgd2UgbmVlZCB0byBhZGp1c3QgX3Js X2xhc3RfY19wb3MKKysJCSBpbiBhIG11bHRpYnl0ZSBsb2NhbGUgdG8gYWNjb3VudCBmb3IgdGhl IHdyYXAgb2Zmc2V0IGFuZAorKwkJIHNldCBjcG9zX2FkanVzdGVkIGFjY29yZGluZ2x5LiAqLwor IAkgICAgICBfcmxfb3V0cHV0X3NvbWVfY2hhcnMgKG5mZCwgdGVtcCk7CisgCSAgICAgIF9ybF9s YXN0X2NfcG9zICs9IGNvbF90ZW1wOwkJLyogWFhYICovCisrCSAgICAgIGlmIChNQl9DVVJfTUFY ID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCisrCQl7CisrCQkgIGlmIChjdXJyZW50X2xp bmUgPT0gMCAmJiB3cmFwX29mZnNldCAmJiAgKChuZmQgLSBuZXcpIDw9IHByb21wdF9sYXN0X2lu dmlzaWJsZSkpCisrCQkgICAgeworKwkJICAgICAgX3JsX2xhc3RfY19wb3MgLT0gd3JhcF9vZmZz ZXQ7CisrCQkgICAgICBjcG9zX2FkanVzdGVkID0gMTsKKysJCSAgICB9CisrCQl9CisgCSAgICB9 CisgCSAgbGVuZGlmZiA9IChvZSAtIG9sZCkgLSAobmUgLSBuZXcpOworIAkgIGlmIChNQl9DVVJf TUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCistCSAgICBjb2xfbGVuZGlmZiA9IF9y bF9jb2xfd2lkdGggKG9sZCwgMCwgb2UgLSBvbGQpIC0gX3JsX2NvbF93aWR0aCAobmV3LCAwLCBu ZSAtIG5ldyk7CisrCSAgICBjb2xfbGVuZGlmZiA9IF9ybF9jb2xfd2lkdGggKG9sZCwgMCwgb2Ug LSBvbGQsIDEpIC0gX3JsX2NvbF93aWR0aCAobmV3LCAwLCBuZSAtIG5ldywgMSk7CisgCSAgZWxz ZQorIAkgICAgY29sX2xlbmRpZmYgPSBsZW5kaWZmOworIAorKyNpZiAwCisgCSAgaWYgKGNvbF9s ZW5kaWZmKQorKyNlbHNlCisrCSAgLyogSWYgd2UndmUgYWxyZWFkeSBwcmludGVkIG92ZXIgdGhl IGVudGlyZSB3aWR0aCBvZiB0aGUgc2NyZWVuLAorKwkgICAgIGluY2x1ZGluZyB0aGUgb2xkIG1h dGVyaWFsLCB0aGVuIGNvbF9sZW5kaWZmIGRvZXNuJ3QgbWF0dGVyIGFuZAorKwkgICAgIHNwYWNl X3RvX2VvbCB3aWxsIGluc2VydCB0b28gbWFueSBzcGFjZXMuICBYWFggLSBtYXliZSB3ZSBzaG91 bGQKKysJICAgICBhZGp1c3QgY29sX2xlbmRpZmYgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgYmV0 d2VlbiBfcmxfbGFzdF9jX3BvcworKwkgICAgIGFuZCBfcmxfc2NyZWVud2lkdGggKi8KKysJICBp ZiAoY29sX2xlbmRpZmYgJiYgKChNQl9DVVJfTUFYID09IDEgfHwgcmxfYnl0ZV9vcmllbnRlZCkg fHwgKF9ybF9sYXN0X2NfcG9zIDwgX3JsX3NjcmVlbndpZHRoKSkpCisrI2VuZGlmCisgCSAgICB7 CSAgCisgCSAgICAgIGlmIChfcmxfdGVybV9hdXRvd3JhcCAmJiBjdXJyZW50X2xpbmUgPCBpbnZf Ym90bGluKQorIAkJc3BhY2VfdG9fZW9sIChjb2xfbGVuZGlmZik7CitAQCAtMTYyMyw3ICsxODQ0 LDcgQEAgcmxfb25fbmV3X2xpbmVfd2l0aF9wcm9tcHQgKCkKKyAKKyAgIGwgPSBzdHJsZW4gKHBy b21wdF9sYXN0X2xpbmUpOworICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50 ZWQgPT0gMCkKKy0gICAgX3JsX2xhc3RfY19wb3MgPSBfcmxfY29sX3dpZHRoIChwcm9tcHRfbGFz dF9saW5lLCAwLCBsKTsJLyogWFhYICovCisrICAgIF9ybF9sYXN0X2NfcG9zID0gX3JsX2NvbF93 aWR0aCAocHJvbXB0X2xhc3RfbGluZSwgMCwgbCwgMSk7CS8qIFhYWCAqLworICAgZWxzZQorICAg ICBfcmxfbGFzdF9jX3BvcyA9IGw7CisgCitAQCAtMTY1OCwxMCArMTg3OSwxMSBAQCBybF9vbl9u ZXdfbGluZV93aXRoX3Byb21wdCAoKQorIGludAorIHJsX2ZvcmNlZF91cGRhdGVfZGlzcGxheSAo KQorIHsKKysgIHJlZ2lzdGVyIGNoYXIgKnRlbXA7CisrCisgICBpZiAodmlzaWJsZV9saW5lKQor ICAgICB7CistICAgICAgcmVnaXN0ZXIgY2hhciAqdGVtcCA9IHZpc2libGVfbGluZTsKKy0KKysg ICAgICB0ZW1wID0gdmlzaWJsZV9saW5lOworICAgICAgIHdoaWxlICgqdGVtcCkKKyAJKnRlbXAr KyA9ICdcMCc7CisgICAgIH0KK0BAIC0xNjg0LDkgKzE5MDYsMTQgQEAgX3JsX21vdmVfY3Vyc29y X3JlbGF0aXZlIChuZXcsIGRhdGEpCisgICByZWdpc3RlciBpbnQgaTsKKyAgIGludCB3b2ZmOwkJ CS8qIG51bWJlciBvZiBpbnZpc2libGUgY2hhcnMgb24gY3VycmVudCBsaW5lICovCisgICBpbnQg Y3BvcywgZHBvczsJCS8qIGN1cnJlbnQgYW5kIGRlc2lyZWQgY3Vyc29yIHBvc2l0aW9ucyAqLwor KyAgaW50IGFkanVzdDsKKyAKKy0gIHdvZmYgPSBXX09GRlNFVCAoX3JsX2xhc3Rfdl9wb3MsIHdy YXBfb2Zmc2V0KTsKKysgIHdvZmYgPSBXUkFQX09GRlNFVCAoX3JsX2xhc3Rfdl9wb3MsIHdyYXBf b2Zmc2V0KTsKKyAgIGNwb3MgPSBfcmxfbGFzdF9jX3BvczsKKysKKysgIGlmIChjcG9zID09IDAg JiYgY3BvcyA9PSBuZXcpCisrICAgIHJldHVybjsKKysKKyAjaWYgZGVmaW5lZCAoSEFORExFX01V TFRJQllURSkKKyAgIC8qIElmIHdlIGhhdmUgbXVsdGlieXRlIGNoYXJhY3RlcnMsIE5FVyBpcyBp bmRleGVkIGJ5IHRoZSBidWZmZXIgcG9pbnQgaW4KKyAgICAgIGEgbXVsdGlieXRlIHN0cmluZywg YnV0IF9ybF9sYXN0X2NfcG9zIGlzIHRoZSBkaXNwbGF5IHBvc2l0aW9uLiAgSW4KK0BAIC0xNjk1 LDkgKzE5MjIsNDIgQEAgX3JsX21vdmVfY3Vyc29yX3JlbGF0aXZlIChuZXcsIGRhdGEpCisgICAg ICBhcyBsb25nIGFzIHdlIGFyZSBwYXN0IHRoZW0gYW5kIHRoZXkgYXJlIGNvdW50ZWQgYnkgX3Js X2NvbF93aWR0aC4gKi8KKyAgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVk ID09IDApCisgICAgIHsKKy0gICAgICBkcG9zID0gX3JsX2NvbF93aWR0aCAoZGF0YSwgMCwgbmV3 KTsKKy0gICAgICBpZiAoZHBvcyA+IHdvZmYpCistCWRwb3MgLT0gd29mZjsKKysgICAgICBhZGp1 c3QgPSAxOworKyAgICAgIC8qIFRyeSB0byBzaG9ydC1jaXJjdWl0IGNvbW1vbiBjYXNlcyBhbmQg ZWxpbWluYXRlIGEgYnVuY2ggb2YgbXVsdGlieXRlCisrCSBjaGFyYWN0ZXIgZnVuY3Rpb24gY2Fs bHMuICovCisrICAgICAgLyogMS4gIHByb21wdCBzdHJpbmcgKi8KKysgICAgICBpZiAobmV3ID09 IGxvY2FsX3Byb21wdF9sZW4gJiYgbWVtY21wIChkYXRhLCBsb2NhbF9wcm9tcHQsIG5ldykgPT0g MCkKKysJeworKwkgIGRwb3MgPSBwcm9tcHRfcGh5c2ljYWxfY2hhcnM7CisrCSAgY3Bvc19hZGp1 c3RlZCA9IDE7CisrCSAgYWRqdXN0ID0gMDsKKysJfQorKyAgICAgIC8qIDIuICBwcm9tcHRfc3Ry aW5nICsgbGluZSBjb250ZW50cyAqLworKyAgICAgIGVsc2UgaWYgKG5ldyA+IGxvY2FsX3Byb21w dF9sZW4gJiYgbG9jYWxfcHJvbXB0ICYmIG1lbWNtcCAoZGF0YSwgbG9jYWxfcHJvbXB0LCBsb2Nh bF9wcm9tcHRfbGVuKSA9PSAwKQorKwl7CisrCSAgZHBvcyA9IHByb21wdF9waHlzaWNhbF9jaGFy cyArIF9ybF9jb2xfd2lkdGggKGRhdGEsIGxvY2FsX3Byb21wdF9sZW4sIG5ldywgMSk7CisrCSAg Y3Bvc19hZGp1c3RlZCA9IDE7CisrCSAgYWRqdXN0ID0gMDsKKysJfQorKyAgICAgIGVsc2UKKysg ICAgICAgIGRwb3MgPSBfcmxfY29sX3dpZHRoIChkYXRhLCAwLCBuZXcsIDEpOworKworKyAgICAg IC8qIFVzZSBORVcgd2hlbiBjb21wYXJpbmcgYWdhaW5zdCB0aGUgbGFzdCBpbnZpc2libGUgY2hh cmFjdGVyIGluIHRoZQorKwkgcHJvbXB0IHN0cmluZywgc2luY2UgdGhleSdyZSBib3RoIGJ1ZmZl ciBpbmRpY2VzIGFuZCBEUE9TIGlzIGEKKysJIGRlc2lyZWQgZGlzcGxheSBwb3NpdGlvbi4gKi8K KysgICAgICBpZiAoYWRqdXN0ICYmICgobmV3ID4gcHJvbXB0X2xhc3RfaW52aXNpYmxlKSB8fAkJ LyogWFhYIC0gZG9uJ3QgdXNlIHdvZmYgaGVyZSAqLworKwkgIChwcm9tcHRfcGh5c2ljYWxfY2hh cnMgPj0gX3JsX3NjcmVlbndpZHRoICYmCisrCSAgIF9ybF9sYXN0X3ZfcG9zID09IHByb21wdF9s YXN0X3NjcmVlbl9saW5lICYmCisrCSAgIHdyYXBfb2Zmc2V0ID49IHdvZmYgJiYgZHBvcyA+PSB3 b2ZmICYmCisrCSAgIG5ldyA+IChwcm9tcHRfbGFzdF9pbnZpc2libGUtKF9ybF9zY3JlZW53aWR0 aCpfcmxfbGFzdF92X3Bvcyktd3JhcF9vZmZzZXQpKSkpCisrCSAgIC8qIFhYWCBsYXN0IGNvbXBh cmlzb24gbWlnaHQgbmVlZCB0byBiZSA+PSAqLworKwl7CisrCSAgZHBvcyAtPSB3b2ZmOworKwkg IC8qIFNpbmNlIHRoaXMgd2lsbCBiZSBhc3NpZ25lZCB0byBfcmxfbGFzdF9jX3BvcyBhdCB0aGUg ZW5kIChtb3JlCisrCSAgICAgcHJlY2lzZWx5LCBfcmxfbGFzdF9jX3BvcyA9PSBkcG9zIHdoZW4g dGhpcyBmdW5jdGlvbiByZXR1cm5zKSwKKysJICAgICBsZXQgdGhlIGNhbGxlciBrbm93LiAqLwor KwkgIGNwb3NfYWRqdXN0ZWQgPSAxOworKwl9CisgICAgIH0KKyAgIGVsc2UKKyAjZW5kaWYKK0BA IC0xNzE2LDcgKzE5NzYsNyBAQCBfcmxfbW92ZV9jdXJzb3JfcmVsYXRpdmUgKG5ldywgZGF0YSkK KyAgIGVsc2UKKyAjZW5kaWYKKyAgIGkgPSBfcmxfbGFzdF9jX3BvcyAtIHdvZmY7CistICBpZiAo bmV3ID09IDAgfHwgQ1JfRkFTVEVSIChuZXcsIF9ybF9sYXN0X2NfcG9zKSB8fAorKyAgaWYgKGRw b3MgPT0gMCB8fCBDUl9GQVNURVIgKGRwb3MsIF9ybF9sYXN0X2NfcG9zKSB8fAorICAgICAgIChf cmxfdGVybV9hdXRvd3JhcCAmJiBpID09IF9ybF9zY3JlZW53aWR0aCkpCisgICAgIHsKKyAjaWYg ZGVmaW5lZCAoX19NU0RPU19fKQorQEAgLTE3MzgsMTkgKzE5OTgsMjcgQEAgX3JsX21vdmVfY3Vy c29yX3JlbGF0aXZlIChuZXcsIGRhdGEpCisgCSBzZXF1ZW5jZSB0ZWxsaW5nIHRoZSB0ZXJtaW5h bCB0byBtb3ZlIGZvcndhcmQgb25lIGNoYXJhY3Rlci4KKyAJIFRoYXQga2luZCBvZiBjb250cm9s IGlzIGZvciBwZW9wbGUgd2hvIGRvbid0IGtub3cgd2hhdCB0aGUKKyAJIGRhdGEgaXMgdW5kZXJu ZWF0aCB0aGUgY3Vyc29yLiAqLworLSNpZiBkZWZpbmVkIChIQUNLX1RFUk1DQVBfTU9USU9OKQor LSAgICAgIGlmIChfcmxfdGVybV9mb3J3YXJkX2NoYXIpCistCXsKKy0JICBmb3IgKGkgPSBjcG9z OyBpIDwgZHBvczsgaSsrKQorLQkgICAgdHB1dHMgKF9ybF90ZXJtX2ZvcndhcmRfY2hhciwgMSwg X3JsX291dHB1dF9jaGFyYWN0ZXJfZnVuY3Rpb24pOworLQl9CistICAgICAgZWxzZQorLSNlbmRp ZiAvKiBIQUNLX1RFUk1DQVBfTU9USU9OICovCisrCisrICAgICAgLyogSG93ZXZlciwgd2UgbmVl ZCBhIGhhbmRsZSBvbiB3aGVyZSB0aGUgY3VycmVudCBkaXNwbGF5IHBvc2l0aW9uIGlzCisrCSBp biB0aGUgYnVmZmVyIGZvciB0aGUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIGNvbW1lbnQgdG8gYmUg dHJ1ZS4KKysJIEluIG11bHRpYnl0ZSBsb2NhbGVzLCB3ZSBkb24ndCBjdXJyZW50bHkgaGF2ZSB0 aGF0IGluZm8gYXZhaWxhYmxlLgorKwkgV2l0aG91dCBpdCwgd2UgZG9uJ3Qga25vdyB3aGVyZSB0 aGUgZGF0YSB3ZSBoYXZlIHRvIGRpc3BsYXkgYmVnaW5zCisrCSBpbiB0aGUgYnVmZmVyIGFuZCB3 ZSBoYXZlIHRvIGdvIGJhY2sgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc2NyZWVuCisrCSBsaW5l LiAgSW4gdGhpcyBjYXNlLCB3ZSBjYW4gdXNlIHRoZSB0ZXJtaW5hbCBzZXF1ZW5jZSB0byBtb3Zl IGZvcndhcmQKKysJIGlmIGl0J3MgYXZhaWxhYmxlLiAqLworICAgICAgIGlmIChNQl9DVVJfTUFY ID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCisgCXsKKy0JICB0cHV0cyAoX3JsX3Rlcm1f Y3IsIDEsIF9ybF9vdXRwdXRfY2hhcmFjdGVyX2Z1bmN0aW9uKTsKKy0JICBmb3IgKGkgPSAwOyBp IDwgbmV3OyBpKyspCistCSAgICBwdXRjIChkYXRhW2ldLCBybF9vdXRzdHJlYW0pOworKwkgIGlm IChfcmxfdGVybV9mb3J3YXJkX2NoYXIpCisrCSAgICB7CisrCSAgICAgIGZvciAoaSA9IGNwb3M7 IGkgPCBkcG9zOyBpKyspCisrCSAgICAgICAgdHB1dHMgKF9ybF90ZXJtX2ZvcndhcmRfY2hhciwg MSwgX3JsX291dHB1dF9jaGFyYWN0ZXJfZnVuY3Rpb24pOworKwkgICAgfQorKwkgIGVsc2UKKysJ ICAgIHsKKysJICAgICAgdHB1dHMgKF9ybF90ZXJtX2NyLCAxLCBfcmxfb3V0cHV0X2NoYXJhY3Rl cl9mdW5jdGlvbik7CisrCSAgICAgIGZvciAoaSA9IDA7IGkgPCBuZXc7IGkrKykKKysJCXB1dGMg KGRhdGFbaV0sIHJsX291dHN0cmVhbSk7CisrCSAgICB9CisgCX0KKyAgICAgICBlbHNlCisgCWZv ciAoaSA9IGNwb3M7IGkgPCBuZXc7IGkrKykKK0BAIC0xOTA4LDYgKzIxNzYsNyBAQCBybF9tZXNz YWdlICh2YV9hbGlzdCkKKyAJCQkJCSAmcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUsCisg CQkJCQkgJnByb21wdF9waHlzaWNhbF9jaGFycyk7CisgICBsb2NhbF9wcm9tcHRfcHJlZml4ID0g KGNoYXIgKilOVUxMOworKyAgbG9jYWxfcHJvbXB0X2xlbiA9IGxvY2FsX3Byb21wdCA/IHN0cmxl biAobG9jYWxfcHJvbXB0KSA6IDA7CisgICAoKnJsX3JlZGlzcGxheV9mdW5jdGlvbikgKCk7Cisg CisgICByZXR1cm4gMDsKK0BAIC0xOTMxLDYgKzIyMDAsNyBAQCBybF9tZXNzYWdlIChmb3JtYXQs IGFyZzEsIGFyZzIpCisgCQkJCQkgJnByb21wdF9pbnZpc19jaGFyc19maXJzdF9saW5lLAorIAkJ CQkJICZwcm9tcHRfcGh5c2ljYWxfY2hhcnMpOworICAgbG9jYWxfcHJvbXB0X3ByZWZpeCA9IChj aGFyICopTlVMTDsKKysgIGxvY2FsX3Byb21wdF9sZW4gPSBsb2NhbF9wcm9tcHQgPyBzdHJsZW4g KGxvY2FsX3Byb21wdCkgOiAwOworICAgKCpybF9yZWRpc3BsYXlfZnVuY3Rpb24pICgpOworICAg ICAgIAorICAgcmV0dXJuIDA7CitAQCAtMTk2NywxMiArMjIzNywxNCBAQCBybF9zYXZlX3Byb21w dCAoKQorICAgc2F2ZWRfbG9jYWxfcHJvbXB0ID0gbG9jYWxfcHJvbXB0OworICAgc2F2ZWRfbG9j YWxfcHJlZml4ID0gbG9jYWxfcHJvbXB0X3ByZWZpeDsKKyAgIHNhdmVkX3ByZWZpeF9sZW5ndGgg PSBwcm9tcHRfcHJlZml4X2xlbmd0aDsKKysgIHNhdmVkX2xvY2FsX2xlbmd0aCA9IGxvY2FsX3By b21wdF9sZW47CisgICBzYXZlZF9sYXN0X2ludmlzaWJsZSA9IHByb21wdF9sYXN0X2ludmlzaWJs ZTsKKyAgIHNhdmVkX3Zpc2libGVfbGVuZ3RoID0gcHJvbXB0X3Zpc2libGVfbGVuZ3RoOworICAg c2F2ZWRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSA9IHByb21wdF9pbnZpc19jaGFyc19maXJzdF9s aW5lOworICAgc2F2ZWRfcGh5c2ljYWxfY2hhcnMgPSBwcm9tcHRfcGh5c2ljYWxfY2hhcnM7Cisg CisgICBsb2NhbF9wcm9tcHQgPSBsb2NhbF9wcm9tcHRfcHJlZml4ID0gKGNoYXIgKikwOworKyAg bG9jYWxfcHJvbXB0X2xlbiA9IDA7CisgICBwcm9tcHRfbGFzdF9pbnZpc2libGUgPSBwcm9tcHRf dmlzaWJsZV9sZW5ndGggPSBwcm9tcHRfcHJlZml4X2xlbmd0aCA9IDA7CisgICBwcm9tcHRfaW52 aXNfY2hhcnNfZmlyc3RfbGluZSA9IHByb21wdF9waHlzaWNhbF9jaGFycyA9IDA7CisgfQorQEAg LTE5ODUsNiArMjI1Nyw3IEBAIHJsX3Jlc3RvcmVfcHJvbXB0ICgpCisgCisgICBsb2NhbF9wcm9t cHQgPSBzYXZlZF9sb2NhbF9wcm9tcHQ7CisgICBsb2NhbF9wcm9tcHRfcHJlZml4ID0gc2F2ZWRf bG9jYWxfcHJlZml4OworKyAgbG9jYWxfcHJvbXB0X2xlbiA9IHNhdmVkX2xvY2FsX2xlbmd0aDsK KyAgIHByb21wdF9wcmVmaXhfbGVuZ3RoID0gc2F2ZWRfcHJlZml4X2xlbmd0aDsKKyAgIHByb21w dF9sYXN0X2ludmlzaWJsZSA9IHNhdmVkX2xhc3RfaW52aXNpYmxlOworICAgcHJvbXB0X3Zpc2li bGVfbGVuZ3RoID0gc2F2ZWRfdmlzaWJsZV9sZW5ndGg7CitAQCAtMTk5Myw2ICsyMjY2LDcgQEAg cmxfcmVzdG9yZV9wcm9tcHQgKCkKKyAKKyAgIC8qIGNhbiB0ZXN0IHNhdmVkX2xvY2FsX3Byb21w dCB0byBzZWUgaWYgcHJvbXB0IGluZm8gaGFzIGJlZW4gc2F2ZWQuICovCisgICBzYXZlZF9sb2Nh bF9wcm9tcHQgPSBzYXZlZF9sb2NhbF9wcmVmaXggPSAoY2hhciAqKTA7CisrICBzYXZlZF9sb2Nh bF9sZW5ndGggPSAwOworICAgc2F2ZWRfbGFzdF9pbnZpc2libGUgPSBzYXZlZF92aXNpYmxlX2xl bmd0aCA9IHNhdmVkX3ByZWZpeF9sZW5ndGggPSAwOworICAgc2F2ZWRfaW52aXNfY2hhcnNfZmly c3RfbGluZSA9IHNhdmVkX3BoeXNpY2FsX2NoYXJzID0gMDsKKyB9CitAQCAtMjEwNiw3ICsyMzgw LDcgQEAgaW5zZXJ0X3NvbWVfY2hhcnMgKHN0cmluZywgY291bnQsIGNvbCkKKyAgIC8qIERFQlVH R0lORyAqLworICAgaWYgKE1CX0NVUl9NQVggPT0gMSB8fCBybF9ieXRlX29yaWVudGVkKQorICAg ICBpZiAoY291bnQgIT0gY29sKQorLSAgICAgIGZwcmludGYoc3RkZXJyLCAicmVhZGxpbmU6IGRl YnVnOiBpbnNlcnRfc29tZV9jaGFyczogY291bnQgKCVkKSAhPSBjb2wgKCVkKVxuIiwgY291bnQs IGNvbCk7CisrICAgICAgX3JsX3R0eW1zZyAoImRlYnVnOiBpbnNlcnRfc29tZV9jaGFyczogY291 bnQgKCVkKSAhPSBjb2wgKCVkKSIsIGNvdW50LCBjb2wpOworIAorICAgLyogSWYgSUMgaXMgZGVm aW5lZCwgdGhlbiB3ZSBkbyBub3QgaGF2ZSB0byAiZW50ZXIiIGluc2VydCBtb2RlLiAqLworICAg aWYgKF9ybF90ZXJtX0lDKQorQEAgLTIxODksNyArMjQ2Myw4IEBAIF9ybF91cGRhdGVfZmluYWwg KCkKKyAgICAgICBjaGFyICpsYXN0X2xpbmU7CisgCisgICAgICAgbGFzdF9saW5lID0gJnZpc2li bGVfbGluZVt2aXNfbGJyZWFrc1tfcmxfdmlzX2JvdGxpbl1dOworLSAgICAgIF9ybF9tb3ZlX2N1 cnNvcl9yZWxhdGl2ZSAoX3JsX3NjcmVlbndpZHRoIC0gMSwgbGFzdF9saW5lKTsKKysgICAgICBj cG9zX2J1ZmZlcl9wb3NpdGlvbiA9IC0xOwkvKiBkb24ndCBrbm93IHdoZXJlIHdlIGFyZSBpbiBi dWZmZXIgKi8KKysgICAgICBfcmxfbW92ZV9jdXJzb3JfcmVsYXRpdmUgKF9ybF9zY3JlZW53aWR0 aCAtIDEsIGxhc3RfbGluZSk7CS8qIFhYWCAqLworICAgICAgIF9ybF9jbGVhcl90b19lb2wgKDAp OworICAgICAgIHB1dGMgKGxhc3RfbGluZVtfcmxfc2NyZWVud2lkdGggLSAxXSwgcmxfb3V0c3Ry ZWFtKTsKKyAgICAgfQorQEAgLTIyMzIsNiArMjUwNyw3IEBAIHJlZHJhd19wcm9tcHQgKHQpCisg CQkJCSAgICZwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSwKKyAJCQkJICAgJnByb21wdF9w aHlzaWNhbF9jaGFycyk7CisgICBsb2NhbF9wcm9tcHRfcHJlZml4ID0gKGNoYXIgKilOVUxMOwor KyAgbG9jYWxfcHJvbXB0X2xlbiA9IGxvY2FsX3Byb21wdCA/IHN0cmxlbiAobG9jYWxfcHJvbXB0 KSA6IDA7CisgCisgICBybF9mb3JjZWRfdXBkYXRlX2Rpc3BsYXkgKCk7CisgCitAQCAtMjI0NSwx MCArMjUyMSwxNCBAQCBfcmxfcmVkaXNwbGF5X2FmdGVyX3NpZ3dpbmNoICgpCisgeworICAgY2hh ciAqdDsKKyAKKy0gIC8qIENsZWFyIHRoZSBjdXJyZW50IGxpbmUgYW5kIHB1dCB0aGUgY3Vyc29y IGF0IGNvbHVtbiAwLiAgTWFrZSBzdXJlCistICAgICB0aGUgcmlnaHQgdGhpbmcgaGFwcGVucyBp ZiB3ZSBoYXZlIHdyYXBwZWQgdG8gYSBuZXcgc2NyZWVuIGxpbmUuICovCisrICAvKiBDbGVhciB0 aGUgbGFzdCBsaW5lIChhc3N1bWluZyB0aGF0IHRoZSBzY3JlZW4gc2l6ZSBjaGFuZ2Ugd2lsbCBy ZXN1bHQgaW4KKysgICAgIGVpdGhlciBtb3JlIG9yIGZld2VyIGNoYXJhY3RlcnMgb24gdGhhdCBs aW5lIG9ubHkpIGFuZCBwdXQgdGhlIGN1cnNvciBhdAorKyAgICAgY29sdW1uIDAuICBNYWtlIHN1 cmUgdGhlIHJpZ2h0IHRoaW5nIGhhcHBlbnMgaWYgd2UgaGF2ZSB3cmFwcGVkIHRvIGEgbmV3Cisr ICAgICBzY3JlZW4gbGluZS4gKi8KKyAgIGlmIChfcmxfdGVybV9jcikKKyAgICAgeworKyAgICAg IF9ybF9tb3ZlX3ZlcnQgKF9ybF92aXNfYm90bGluKTsKKysKKyAjaWYgZGVmaW5lZCAoX19NU0RP U19fKQorICAgICAgIHB1dGMgKCdccicsIHJsX291dHN0cmVhbSk7CisgI2Vsc2UKK0BAIC0yMjg0 LDcgKzI1NjQsNyBAQCBfcmxfcmVkaXNwbGF5X2FmdGVyX3NpZ3dpbmNoICgpCisgdm9pZAorIF9y bF9jbGVhbl91cF9mb3JfZXhpdCAoKQorIHsKKy0gIGlmIChyZWFkbGluZV9lY2hvaW5nX3ApCisr ICBpZiAoX3JsX2VjaG9pbmdfcCkKKyAgICAgeworICAgICAgIF9ybF9tb3ZlX3ZlcnQgKF9ybF92 aXNfYm90bGluKTsKKyAgICAgICBfcmxfdmlzX2JvdGxpbiA9IDA7CitAQCAtMjMyOSwyMCArMjYw OSw0MSBAQCBfcmxfY3VycmVudF9kaXNwbGF5X2xpbmUgKCkKKyAgICBJbiB0aGUgY2FzZSBvZiBt dWx0aWJ5dGUgY2hhcmFjdGVycyB3aXRoIHN0YXRlZnVsIGVuY29kaW5nLCB3ZSBoYXZlIHRvCisg ICAgc2NhbiBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyB0byB0YWtlIHRoZSBzdGF0 ZSBpbnRvIGFjY291bnQuICovCisgc3RhdGljIGludAorLV9ybF9jb2xfd2lkdGggKHN0ciwgc3Rh cnQsIGVuZCkKKytfcmxfY29sX3dpZHRoIChzdHIsIHN0YXJ0LCBlbmQsIGZsYWdzKQorICAgICAg Y29uc3QgY2hhciAqc3RyOworLSAgICAgaW50IHN0YXJ0LCBlbmQ7CisrICAgICBpbnQgc3RhcnQs IGVuZCwgZmxhZ3M7CisgeworICAgd2NoYXJfdCB3YzsKKy0gIG1ic3RhdGVfdCBwcyA9IHswfTsK KysgIG1ic3RhdGVfdCBwczsKKyAgIGludCB0bXAsIHBvaW50LCB3aWR0aCwgbWF4OworIAorICAg aWYgKGVuZCA8PSBzdGFydCkKKyAgICAgcmV0dXJuIDA7CisrICBpZiAoTUJfQ1VSX01BWCA9PSAx IHx8IHJsX2J5dGVfb3JpZW50ZWQpCisreworK19ybF90dHltc2cgKCJfcmxfY29sX3dpZHRoOiBj YWxsZWQgd2l0aCBNQl9DVVJfTUFYID09IDEiKTsKKysgICAgcmV0dXJuIChlbmQgLSBzdGFydCk7 CisrfQorKworKyAgbWVtc2V0ICgmcHMsIDAsIHNpemVvZiAobWJzdGF0ZV90KSk7CisgCisgICBw b2ludCA9IDA7CisgICBtYXggPSBlbmQ7CisgCisrICAvKiBUcnkgdG8gc2hvcnQtY2lyY3VpdCBj b21tb24gY2FzZXMuICBUaGUgYWRqdXN0bWVudCB0byByZW1vdmUgd3JhcF9vZmZzZXQKKysgICAg IGlzIGRvbmUgYnkgdGhlIGNhbGxlci4gKi8KKysgIC8qIDEuICBwcm9tcHQgc3RyaW5nICovCisr ICBpZiAoZmxhZ3MgJiYgc3RhcnQgPT0gMCAmJiBlbmQgPT0gbG9jYWxfcHJvbXB0X2xlbiAmJiBt ZW1jbXAgKHN0ciwgbG9jYWxfcHJvbXB0LCBsb2NhbF9wcm9tcHRfbGVuKSA9PSAwKQorKyAgICBy ZXR1cm4gKHByb21wdF9waHlzaWNhbF9jaGFycyArIHdyYXBfb2Zmc2V0KTsKKysgIC8qIDIuICBw cm9tcHQgc3RyaW5nICsgbGluZSBjb250ZW50cyAqLworKyAgZWxzZSBpZiAoZmxhZ3MgJiYgc3Rh cnQgPT0gMCAmJiBsb2NhbF9wcm9tcHRfbGVuID4gMCAmJiBlbmQgPiBsb2NhbF9wcm9tcHRfbGVu ICYmIGxvY2FsX3Byb21wdCAmJiBtZW1jbXAgKHN0ciwgbG9jYWxfcHJvbXB0LCBsb2NhbF9wcm9t cHRfbGVuKSA9PSAwKQorKyAgICB7CisrICAgICAgdG1wID0gcHJvbXB0X3BoeXNpY2FsX2NoYXJz ICsgd3JhcF9vZmZzZXQ7CisrICAgICAgLyogWFhYIC0gdHJ5IHRvIGNhbGwgb3Vyc2VsdmVzIHJl Y3Vyc2l2ZWx5IHdpdGggbm9uLXByb21wdCBwb3J0aW9uICovCisrICAgICAgdG1wICs9IF9ybF9j b2xfd2lkdGggKHN0ciwgbG9jYWxfcHJvbXB0X2xlbiwgZW5kLCBmbGFncyk7CisrICAgICAgcmV0 dXJuICh0bXApOworKyAgICB9CisrCisgICB3aGlsZSAocG9pbnQgPCBzdGFydCkKKyAgICAgewor ICAgICAgIHRtcCA9IG1icmxlbiAoc3RyICsgcG9pbnQsIG1heCwgJnBzKTsKKy0tLSBhL3JlYWRs aW5lL2RvYy9DaGFuZ2VMb2cuZ2RiCisrKysgYi9yZWFkbGluZS9kb2MvQ2hhbmdlTG9nLmdkYgor QEAgLTEsMyArMSw3IEBACisrMjAxMS0wNC0yNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgorKworKwlJbXBvcnRlZCByZWFkbGluZSA2LjIsIGFuZCB1cHN0cmVh bSBwYXRjaCAwMDEuCisrCisgMjAwNi0wNC0yNCAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29k ZXNvdXJjZXJ5LmNvbT4KKyAKKyAJSW1wb3J0ZWQgcmVhZGxpbmUgNS4xLCBhbmQgdXBzdHJlYW0g cGF0Y2hlcyAwMDEtMDA0LgorLS0tIGEvcmVhZGxpbmUvZG9jL01ha2VmaWxlLmluCisrKysgYi9y ZWFkbGluZS9kb2MvTWFrZWZpbGUuaW4KK0BAIC0xLDI1ICsxLDI0IEBACisgIyBUaGlzIG1ha2Vm aWxlIGZvciBSZWFkbGluZSBsaWJyYXJ5IGRvY3VtZW50YXRpb24gaXMgaW4gLSotIHRleHQgLSot IG1vZGUuCisgIyBFbWFjcyBsaWtlcyBpdCB0aGF0IHdheS4KKyAKKy0jIENvcHlyaWdodCAoQykg MTk5Ni0yMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgQ29weXJpZ2h0IChD KSAxOTk2LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0jIGFueSBsYXRlciB2ZXJzaW9u LgorKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrIyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0jIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZQorLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rv biwgTUEgMDIxMTEgVVNBLgorKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAKKyB0 b3BkaXIgPSBAdG9wX3NyY2RpckAKKyBzcmNkaXIgPSBAc3JjZGlyQAorLVZQQVRIID0gLjpAc3Jj ZGlyQAorK1ZQQVRIID0gQHNyY2RpckAKKyAKKyBwcmVmaXggPSBAcHJlZml4QAorIAorQEAgLTY0 LDkgKzYzLDkgQEAgUFNQREYgICAgICAgPSBncyAtc1BBUEVSU0laRT0ke1BBUEVSU0laRX0gLXNE RVZJQ0U9cGRmd3JpdGUgLWROT1BBVVNFIC1kQkFUQ0ggLXMKKyAKKyBSTFNSQyA9ICQoc3JjZGly KS9ybG1hbi50ZXhpICQoc3JjZGlyKS9ybHVzZXIudGV4aSBcCisgCSQoc3JjZGlyKS9ybHRlY2gu dGV4aSAkKHNyY2RpcikvdmVyc2lvbi50ZXhpIFwKKy0JJChzcmNkaXIpL3JsdXNlcm1hbi50ZXhp CisrCSQoc3JjZGlyKS9ybHVzZXJtYW4udGV4aSAkKHNyY2RpcikvZmRsLnRleGkKKyBISVNUU1JD ID0gJChzcmNkaXIpL2hpc3RvcnkudGV4aSAkKHNyY2RpcikvaHN1c2VyLnRleGkgXAorLQkgICQo c3JjZGlyKS9oc3RlY2gudGV4aSAkKHNyY2RpcikvdmVyc2lvbi50ZXhpCisrCSAgJChzcmNkaXIp L2hzdGVjaC50ZXhpICQoc3JjZGlyKS92ZXJzaW9uLnRleGkgJChzcmNkaXIpL2ZkbC50ZXhpCisg CisgIyBUaGlzIHNob3VsZCBiZSBhIHByb2dyYW0gdGhhdCBjb252ZXJ0cyB0cm9mZiB0byBhbiBh c2NpaS1yZWFkYWJsZSBmb3JtYXQKKyBOUk9GRiAgICAgICA9IGdyb2ZmIC1UYXNjaWkKK0BAIC04 Myw3ICs4Miw3IEBAIFBERk9CSiA9IHJlYWRsaW5lLnBkZiBoaXN0b3J5LnBkZiBybHVzZXJtYW4u cGRmCisgCisgSU5URVJNRURJQVRFX09CSiA9IHJsbWFuLmR2aQorIAorLURJU1RfRE9DUyA9ICQo RFZJT0JKKSAkKFBTT0JKKSAkKEhUTUxPQkopICQoSU5GT09CSikgJChURVhUT0JKKQorK0RJU1Rf RE9DUyA9ICQoRFZJT0JKKSAkKFBTT0JKKSAkKEhUTUxPQkopICQoSU5GT09CSikgJChURVhUT0JK KSAkKFBERk9CSikKKyAKKyAuU1VGRklYRVM6ICAgICAgLjAgLjMgLnBzIC50eHQgLmR2aSAuaHRt bCAucGRmCisgCitAQCAtOTksOSArOTgsMTEgQEAgRElTVF9ET0NTID0gJChEVklPQkopICQoUFNP QkopICQoSFRNTE9CSikgJChJTkZPT0JKKSAkKFRFWFRPQkopCisgCSQoUk0pICRACisgCS0ke0RW SVBERn0gJDwKKyAKKy1hbGw6IGluZm8gZHZpIGh0bWwgcHMgdGV4dAorK2FsbDogaW5mbyBkdmkg aHRtbCBwcyB0ZXh0IHBkZgorIG5vZHZpOiBpbmZvIGh0bWwgdGV4dAorIAorK3hkaXN0OiAkKERJ U1RfRE9DUykKKysKKyBpbmZvOgkkKElORk9PQkopCisgZHZpOgkkKERWSU9CSikKKyBwczoJJChQ U09CSikKK0BAIC0xNTYsMTMgKzE1NywxMyBAQCBoaXN0b3J5Lmh0bWw6CSR7SElTVFNSQ30KKyAK KyByZWFkbGluZS4wOiByZWFkbGluZS4zCisgCistcmVhZGxpbmVfMy5wczogcmVhZGxpbmUuMwor K3JlYWRsaW5lXzMucHM6ICQoc3JjZGlyKS9yZWFkbGluZS4zCisgCSR7Uk19ICRACisgCSR7R1JP RkZ9IC1tYW4gPCAkKHNyY2RpcikvcmVhZGxpbmUuMyA+ICRAIAorIAorIGhpc3RvcnkuMDogaGlz dG9yeS4zCisgCistaGlzdG9yeV8zLnBzOiBoaXN0b3J5LjMKKytoaXN0b3J5XzMucHM6ICQoc3Jj ZGlyKS9oaXN0b3J5LjMKKyAJJHtSTX0gJEAKKyAJJHtHUk9GRn0gLW1hbiA8ICQoc3JjZGlyKS9o aXN0b3J5LjMgPiAkQCAKKyAKK0BAIC0xODIsNyArMTgzLDcgQEAgZGlzdGNsZWFuOiBjbGVhbiBt YXliZS1jbGVhbgorIAkkKFJNKSBNYWtlZmlsZQorIAorIG1heWJlLWNsZWFuOgorLQktaWYgdGVz dCAiWCQodG9wZGlyKSIgIT0gIlgkKEJVSUxEX0RJUikiOyB0aGVuIFwKKysJLWlmIHRlc3QgIlgk KHRvcGRpcikiICE9ICJYLi4iICYmIHRlc3QgIlgkKHRvcGRpcikiICE9ICJYJChCVUlMRF9ESVIp IjsgdGhlbiBcCisgCQkkKFJNKSAkKERJU1RfRE9DUyk7IFwKKyAJZmkKKyAKKy0tLSBhL3JlYWRs aW5lL2RvYy9mZGwudGV4aQorKysrIGIvcmVhZGxpbmUvZG9jL2ZkbC50ZXhpCitAQCAtMSwxMyAr MSwxMiBAQAorK0BjIFRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UuCisrQGNlbnRl ciBWZXJzaW9uIDEuMywgMyBOb3ZlbWJlciAyMDA4CisgCistQG5vZGUgR05VIEZyZWUgRG9jdW1l bnRhdGlvbiBMaWNlbnNlCistQGFwcGVuZGl4c2VjIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGlj ZW5zZQorLQorLUBjaW5kZXggRkRMLCBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UKKy1A Y2VudGVyIFZlcnNpb24gMS4yLCBOb3ZlbWJlciAyMDAyCisrQGMgVGhpcyBmaWxlIGlzIGludGVu ZGVkIHRvIGJlIGluY2x1ZGVkIHdpdGhpbiBhbm90aGVyIGRvY3VtZW50LAorK0BjIGhlbmNlIG5v IHNlY3Rpb25pbmcgY29tbWFuZCBvciBAbm9kZS4KKyAKKyBAZGlzcGxheQorLUNvcHlyaWdodCBA Y29weXJpZ2h0e30gMjAwMCwyMDAxLDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CistNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcsIFVT QQorK0NvcHlyaWdodCBAY29weXJpZ2h0e30gMjAwMCwgMjAwMSwgMjAwMiwgMjAwNywgMjAwOCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKytAdXJlZntodHRwOi8vZnNmLm9yZy99Cisg CisgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0g Y29waWVzCisgb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90 IGFsbG93ZWQuCitAQCAtMTEyLDYgKzExMSw5IEBAIGZvcm1hdHMgd2hpY2ggZG8gbm90IGhhdmUg YW55IHRpdGxlIHBhZ2UgYXMgc3VjaCwgYGBUaXRsZSBQYWdlJycgbWVhbnMKKyB0aGUgdGV4dCBu ZWFyIHRoZSBtb3N0IHByb21pbmVudCBhcHBlYXJhbmNlIG9mIHRoZSB3b3JrJ3MgdGl0bGUsCisg cHJlY2VkaW5nIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJvZHkgb2YgdGhlIHRleHQuCisgCisrVGhl IGBgcHVibGlzaGVyJycgbWVhbnMgYW55IHBlcnNvbiBvciBlbnRpdHkgdGhhdCBkaXN0cmlidXRl cyBjb3BpZXMKKytvZiB0aGUgRG9jdW1lbnQgdG8gdGhlIHB1YmxpYy4KKysKKyBBIHNlY3Rpb24g YGBFbnRpdGxlZCBYWVonJyBtZWFucyBhIG5hbWVkIHN1YnVuaXQgb2YgdGhlIERvY3VtZW50IHdo b3NlCisgdGl0bGUgZWl0aGVyIGlzIHByZWNpc2VseSBYWVogb3IgY29udGFpbnMgWFlaIGluIHBh cmVudGhlc2VzIGZvbGxvd2luZworIHRleHQgdGhhdCB0cmFuc2xhdGVzIFhZWiBpbiBhbm90aGVy IGxhbmd1YWdlLiAgKEhlcmUgWFlaIHN0YW5kcyBmb3IgYQorQEAgLTM0NCw3ICszNDYsNyBAQCBh bmQgaW5kZXBlbmRlbnQgZG9jdW1lbnRzIG9yIHdvcmtzLCBpbiBvciBvbiBhIHZvbHVtZSBvZiBh IHN0b3JhZ2Ugb3IKKyBkaXN0cmlidXRpb24gbWVkaXVtLCBpcyBjYWxsZWQgYW4gYGBhZ2dyZWdh dGUnJyBpZiB0aGUgY29weXJpZ2h0CisgcmVzdWx0aW5nIGZyb20gdGhlIGNvbXBpbGF0aW9uIGlz IG5vdCB1c2VkIHRvIGxpbWl0IHRoZSBsZWdhbCByaWdodHMKKyBvZiB0aGUgY29tcGlsYXRpb24n cyB1c2VycyBiZXlvbmQgd2hhdCB0aGUgaW5kaXZpZHVhbCB3b3JrcyBwZXJtaXQuCistV2hlbiB0 aGUgRG9jdW1lbnQgaXMgaW5jbHVkZWQgYW4gYWdncmVnYXRlLCB0aGlzIExpY2Vuc2UgZG9lcyBu b3QKKytXaGVuIHRoZSBEb2N1bWVudCBpcyBpbmNsdWRlZCBpbiBhbiBhZ2dyZWdhdGUsIHRoaXMg TGljZW5zZSBkb2VzIG5vdAorIGFwcGx5IHRvIHRoZSBvdGhlciB3b3JrcyBpbiB0aGUgYWdncmVn YXRlIHdoaWNoIGFyZSBub3QgdGhlbXNlbHZlcworIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIERv Y3VtZW50LgorIAorQEAgLTM4MCwxMyArMzgyLDMwIEBAIHRpdGxlLgorIEBpdGVtCisgVEVSTUlO QVRJT04KKyAKKy1Zb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3Ry aWJ1dGUgdGhlIERvY3VtZW50IGV4Y2VwdAorLWFzIGV4cHJlc3NseSBwcm92aWRlZCBmb3IgdW5k ZXIgdGhpcyBMaWNlbnNlLiAgQW55IG90aGVyIGF0dGVtcHQgdG8KKy1jb3B5LCBtb2RpZnksIHN1 YmxpY2Vuc2Ugb3IgZGlzdHJpYnV0ZSB0aGUgRG9jdW1lbnQgaXMgdm9pZCwgYW5kIHdpbGwKKy1h dXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuICBI b3dldmVyLAorLXBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLCBvciByaWdodHMsIGZy b20geW91IHVuZGVyIHRoaXMKKy1MaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMg dGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKKy1wYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBs aWFuY2UuCisrWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmli dXRlIHRoZSBEb2N1bWVudAorK2V4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhp cyBMaWNlbnNlLiAgQW55IGF0dGVtcHQKKytvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJs aWNlbnNlLCBvciBkaXN0cmlidXRlIGl0IGlzIHZvaWQsIGFuZAorK3dpbGwgYXV0b21hdGljYWxs eSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgorKworK0hvd2V2ZXIs IGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyIGxp Y2Vuc2UKKytmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzIHJlaW5zdGF0ZWQg KGEpIHByb3Zpc2lvbmFsbHksCisrdW5sZXNzIGFuZCB1bnRpbCB0aGUgY29weXJpZ2h0IGhvbGRl ciBleHBsaWNpdGx5IGFuZCBmaW5hbGx5CisrdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAo YikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVyCisrZmFpbHMgdG8gbm90aWZ5 IHlvdSBvZiB0aGUgdmlvbGF0aW9uIGJ5IHNvbWUgcmVhc29uYWJsZSBtZWFucyBwcmlvciB0bwor KzYwIGRheXMgYWZ0ZXIgdGhlIGNlc3NhdGlvbi4KKysKKytNb3Jlb3ZlciwgeW91ciBsaWNlbnNl IGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMKKytyZWluc3RhdGVkIHBlcm1h bmVudGx5IGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vdGlmaWVzIHlvdSBvZiB0aGUKKyt2aW9s YXRpb24gYnkgc29tZSByZWFzb25hYmxlIG1lYW5zLCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHlv dSBoYXZlCisrcmVjZWl2ZWQgbm90aWNlIG9mIHZpb2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UgKGZv ciBhbnkgd29yaykgZnJvbSB0aGF0CisrY29weXJpZ2h0IGhvbGRlciwgYW5kIHlvdSBjdXJlIHRo ZSB2aW9sYXRpb24gcHJpb3IgdG8gMzAgZGF5cyBhZnRlcgorK3lvdXIgcmVjZWlwdCBvZiB0aGUg bm90aWNlLgorKworK1Rlcm1pbmF0aW9uIG9mIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgc2VjdGlv biBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlCisrbGljZW5zZXMgb2YgcGFydGllcyB3aG8gaGF2ZSBy ZWNlaXZlZCBjb3BpZXMgb3IgcmlnaHRzIGZyb20geW91IHVuZGVyCisrdGhpcyBMaWNlbnNlLiAg SWYgeW91ciByaWdodHMgaGF2ZSBiZWVuIHRlcm1pbmF0ZWQgYW5kIG5vdCBwZXJtYW5lbnRseQor K3JlaW5zdGF0ZWQsIHJlY2VpcHQgb2YgYSBjb3B5IG9mIHNvbWUgb3IgYWxsIG9mIHRoZSBzYW1l IG1hdGVyaWFsIGRvZXMKKytub3QgZ2l2ZSB5b3UgYW55IHJpZ2h0cyB0byB1c2UgaXQuCisgCisg QGl0ZW0KKyBGVVRVUkUgUkVWSVNJT05TIE9GIFRISVMgTElDRU5TRQorQEAgLTQwNCwxMSArNDIz LDQ2IEBAIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQg c3BlY2lmaWVkIHZlcnNpb24gb3IKKyBvZiBhbnkgbGF0ZXIgdmVyc2lvbiB0aGF0IGhhcyBiZWVu IHB1Ymxpc2hlZCAobm90IGFzIGEgZHJhZnQpIGJ5IHRoZQorIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbi4gIElmIHRoZSBEb2N1bWVudCBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbgorIG51bWJl ciBvZiB0aGlzIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlz aGVkIChub3QKKy1hcyBhIGRyYWZ0KSBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgor K2FzIGEgZHJhZnQpIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgRG9j dW1lbnQKKytzcGVjaWZpZXMgdGhhdCBhIHByb3h5IGNhbiBkZWNpZGUgd2hpY2ggZnV0dXJlIHZl cnNpb25zIG9mIHRoaXMKKytMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MgcHVibGlj IHN0YXRlbWVudCBvZiBhY2NlcHRhbmNlIG9mIGEKKyt2ZXJzaW9uIHBlcm1hbmVudGx5IGF1dGhv cml6ZXMgeW91IHRvIGNob29zZSB0aGF0IHZlcnNpb24gZm9yIHRoZQorK0RvY3VtZW50LgorKwor K0BpdGVtCisrUkVMSUNFTlNJTkcKKysKKytgYE1hc3NpdmUgTXVsdGlhdXRob3IgQ29sbGFib3Jh dGlvbiBTaXRlJycgKG9yIGBgTU1DIFNpdGUnJykgbWVhbnMgYW55CisrV29ybGQgV2lkZSBXZWIg c2VydmVyIHRoYXQgcHVibGlzaGVzIGNvcHlyaWdodGFibGUgd29ya3MgYW5kIGFsc28KKytwcm92 aWRlcyBwcm9taW5lbnQgZmFjaWxpdGllcyBmb3IgYW55Ym9keSB0byBlZGl0IHRob3NlIHdvcmtz LiAgQQorK3B1YmxpYyB3aWtpIHRoYXQgYW55Ym9keSBjYW4gZWRpdCBpcyBhbiBleGFtcGxlIG9m IHN1Y2ggYSBzZXJ2ZXIuICBBCisrYGBNYXNzaXZlIE11bHRpYXV0aG9yIENvbGxhYm9yYXRpb24n JyAob3IgYGBNTUMnJykgY29udGFpbmVkIGluIHRoZQorK3NpdGUgbWVhbnMgYW55IHNldCBvZiBj b3B5cmlnaHRhYmxlIHdvcmtzIHRodXMgcHVibGlzaGVkIG9uIHRoZSBNTUMKKytzaXRlLgorKwor K2BgQ0MtQlktU0EnJyBtZWFucyB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFy ZSBBbGlrZSAzLjAKKytsaWNlbnNlIHB1Ymxpc2hlZCBieSBDcmVhdGl2ZSBDb21tb25zIENvcnBv cmF0aW9uLCBhIG5vdC1mb3ItcHJvZml0CisrY29ycG9yYXRpb24gd2l0aCBhIHByaW5jaXBhbCBw bGFjZSBvZiBidXNpbmVzcyBpbiBTYW4gRnJhbmNpc2NvLAorK0NhbGlmb3JuaWEsIGFzIHdlbGwg YXMgZnV0dXJlIGNvcHlsZWZ0IHZlcnNpb25zIG9mIHRoYXQgbGljZW5zZQorK3B1Ymxpc2hlZCBi eSB0aGF0IHNhbWUgb3JnYW5pemF0aW9uLgorKworK2BgSW5jb3Jwb3JhdGUnJyBtZWFucyB0byBw dWJsaXNoIG9yIHJlcHVibGlzaCBhIERvY3VtZW50LCBpbiB3aG9sZSBvcgorK2luIHBhcnQsIGFz IHBhcnQgb2YgYW5vdGhlciBEb2N1bWVudC4KKysKKytBbiBNTUMgaXMgYGBlbGlnaWJsZSBmb3Ig cmVsaWNlbnNpbmcnJyBpZiBpdCBpcyBsaWNlbnNlZCB1bmRlciB0aGlzCisrTGljZW5zZSwgYW5k IGlmIGFsbCB3b3JrcyB0aGF0IHdlcmUgZmlyc3QgcHVibGlzaGVkIHVuZGVyIHRoaXMgTGljZW5z ZQorK3NvbWV3aGVyZSBvdGhlciB0aGFuIHRoaXMgTU1DLCBhbmQgc3Vic2VxdWVudGx5IGluY29y cG9yYXRlZCBpbiB3aG9sZQorK29yIGluIHBhcnQgaW50byB0aGUgTU1DLCAoMSkgaGFkIG5vIGNv dmVyIHRleHRzIG9yIGludmFyaWFudCBzZWN0aW9ucywKKythbmQgKDIpIHdlcmUgdGh1cyBpbmNv cnBvcmF0ZWQgcHJpb3IgdG8gTm92ZW1iZXIgMSwgMjAwOC4KKysKKytUaGUgb3BlcmF0b3Igb2Yg YW4gTU1DIFNpdGUgbWF5IHJlcHVibGlzaCBhbiBNTUMgY29udGFpbmVkIGluIHRoZSBzaXRlCisr dW5kZXIgQ0MtQlktU0Egb24gdGhlIHNhbWUgc2l0ZSBhdCBhbnkgdGltZSBiZWZvcmUgQXVndXN0 IDEsIDIwMDksCisrcHJvdmlkZWQgdGhlIE1NQyBpcyBlbGlnaWJsZSBmb3IgcmVsaWNlbnNpbmcu CisrCisgQGVuZCBlbnVtZXJhdGUKKyAKKyBAcGFnZQorLUBhcHBlbmRpeHN1YnNlYyBBRERFTkRV TTogSG93IHRvIHVzZSB0aGlzIExpY2Vuc2UgZm9yIHlvdXIgZG9jdW1lbnRzCisrQGhlYWRpbmcg QURERU5EVU06IEhvdyB0byB1c2UgdGhpcyBMaWNlbnNlIGZvciB5b3VyIGRvY3VtZW50cworIAor IFRvIHVzZSB0aGlzIExpY2Vuc2UgaW4gYSBkb2N1bWVudCB5b3UgaGF2ZSB3cml0dGVuLCBpbmNs dWRlIGEgY29weSBvZgorIHRoZSBMaWNlbnNlIGluIHRoZSBkb2N1bWVudCBhbmQgcHV0IHRoZSBm b2xsb3dpbmcgY29weXJpZ2h0IGFuZAorQEAgLTQxOCwxNiArNDcyLDE2IEBAIGxpY2Vuc2Ugbm90 aWNlcyBqdXN0IGFmdGVyIHRoZSB0aXRsZSBwYWdlOgorIEBncm91cAorICAgQ29weXJpZ2h0IChD KSAgQHZhcnt5ZWFyfSAgQHZhcnt5b3VyIG5hbWV9LgorICAgUGVybWlzc2lvbiBpcyBncmFudGVk IHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50CistICB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lv biAxLjIKKysgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBM aWNlbnNlLCBWZXJzaW9uIDEuMworICAgb3IgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247CistICB3aXRoIG5vIEludmFyaWFudCBTZWN0 aW9ucywgbm8gRnJvbnQtQ292ZXIgVGV4dHMsIGFuZCBubyBCYWNrLUNvdmVyIFRleHRzLgorLSAg QSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVk IGBgR05VCisrICB3aXRoIG5vIEludmFyaWFudCBTZWN0aW9ucywgbm8gRnJvbnQtQ292ZXIgVGV4 dHMsIGFuZCBubyBCYWNrLUNvdmVyCisrICBUZXh0cy4gIEEgY29weSBvZiB0aGUgbGljZW5zZSBp cyBpbmNsdWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZCBgYEdOVQorICAgRnJlZSBEb2N1bWVu dGF0aW9uIExpY2Vuc2UnJy4KKyBAZW5kIGdyb3VwCisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKyBJ ZiB5b3UgaGF2ZSBJbnZhcmlhbnQgU2VjdGlvbnMsIEZyb250LUNvdmVyIFRleHRzIGFuZCBCYWNr LUNvdmVyIFRleHRzLAorLXJlcGxhY2UgdGhlIGBgd2l0aC4uLlRleHRzLicnIGxpbmUgd2l0aCB0 aGlzOgorK3JlcGxhY2UgdGhlIGBgd2l0aEBkb3Rze31UZXh0cy4nJyBsaW5lIHdpdGggdGhpczoK KyAKKyBAc21hbGxleGFtcGxlCisgQGdyb3VwCistLS0gYS9yZWFkbGluZS9kb2MvaGlzdG9yeS4z CisrKysgYi9yZWFkbGluZS9kb2MvaGlzdG9yeS4zCitAQCAtNiw5ICs2LDkgQEAKKyAuXCIJQ2Fz ZSBXZXN0ZXJuIFJlc2VydmUgVW5pdmVyc2l0eQorIC5cIgljaGV0QGlucy5DV1JVLkVkdQorIC5c IgorLS5cIglMYXN0IENoYW5nZTogVGh1IEp1bCAzMSAwODo0NjowOCBFRFQgMjAwMworKy5cIglM YXN0IENoYW5nZTogVGh1IEF1ZyAxMiAyMjoyNDo0MSBFRFQgMjAxMAorIC5cIgorLS5USCBISVNU T1JZIDMgIjIwMDMgSnVseSAzMSIgIkdOVSBIaXN0b3J5IDUuMCIKKysuVEggSElTVE9SWSAzICIy MDEwIEF1Z3VzdCAxMiIgIkdOVSBIaXN0b3J5IDYuMiIKKyAuXCIKKyAuXCIgRmlsZSBOYW1lIG1h Y3JvLiAgVGhpcyB1c2VkIHRvIGJlIGAuUE4nLCBmb3IgUGF0aCBOYW1lLAorIC5cIiBidXQgU3Vu IGRvZXNuJ3Qgc2VlbSB0byBsaWtlIHRoYXQgdmVyeSBtdWNoLgorQEAgLTQwLDggKzQwLDggQEAK KyAuU0ggTkFNRQorIGhpc3RvcnkgXC0gR05VIEhpc3RvcnkgTGlicmFyeQorIC5TSCBDT1BZUklH SFQKKy0uaWYgdCBUaGUgR05VIEhpc3RvcnkgTGlicmFyeSBpcyBDb3B5cmlnaHQgXChjbyAxOTg5 LTIwMDIgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLS5pZiBuIFRoZSBH TlUgSGlzdG9yeSBMaWJyYXJ5IGlzIENvcHlyaWdodCAoQykgMTk4OS0yMDAyIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysuaWYgdCBUaGUgR05VIEhpc3RvcnkgTGlicmFy eSBpcyBDb3B5cmlnaHQgXChjbyAxOTg5LTIwMTEgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKy5pZiBuIFRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5IGlzIENvcHlyaWdodCAo QykgMTk4OS0yMDExIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAuU0gg REVTQ1JJUFRJT04KKyBNYW55IHByb2dyYW1zIHJlYWQgaW5wdXQgZnJvbSB0aGUgdXNlciBhIGxp bmUgYXQgYSB0aW1lLiAgVGhlIEdOVQorIEhpc3RvcnkgbGlicmFyeSBpcyBhYmxlIHRvIGtlZXAg dHJhY2sgb2YgdGhvc2UgbGluZXMsIGFzc29jaWF0ZSBhcmJpdHJhcnkKK0BAIC04Myw2ICs4Myw4 IEBAIHRoZSBoaXN0b3J5IGV4cGFuc2lvbiBjaGFyYWN0ZXIuCisgLlBQCisgQW4gZXZlbnQgZGVz aWduYXRvciBpcyBhIHJlZmVyZW5jZSB0byBhIGNvbW1hbmQgbGluZSBlbnRyeSBpbiB0aGUKKyBo aXN0b3J5IGxpc3QuCisrVW5sZXNzIHRoZSByZWZlcmVuY2UgaXMgYWJzb2x1dGUsIGV2ZW50cyBh cmUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQKKytwb3NpdGlvbiBpbiB0aGUgaGlzdG9yeSBsaXN0 LgorIC5QUAorIC5QRCAwCisgLlRQCitAQCAtOTYsMTggKzk4LDIyIEBAIFJlZmVyIHRvIGNvbW1h bmQgbGluZQorIC5JUiBuIC4KKyAuVFAKKyAuQiAhXC1cZkluXGZSCistUmVmZXIgdG8gdGhlIGN1 cnJlbnQgY29tbWFuZCBsaW5lIG1pbnVzCisrUmVmZXIgdG8gdGhlIGN1cnJlbnQgY29tbWFuZCBt aW51cworIC5JUiBuIC4KKyAuVFAKKyAuQiAhIQorIFJlZmVyIHRvIHRoZSBwcmV2aW91cyBjb21t YW5kLiAgVGhpcyBpcyBhIHN5bm9ueW0gZm9yIGAhXC0xJy4KKyAuVFAKKyAuQiAhXGZJc3RyaW5n XGZSCistUmVmZXIgdG8gdGhlIG1vc3QgcmVjZW50IGNvbW1hbmQgc3RhcnRpbmcgd2l0aCAKKytS ZWZlciB0byB0aGUgbW9zdCByZWNlbnQgY29tbWFuZAorK3ByZWNlZGluZyB0aGUgY3VycmVudCBw b3NpdGlvbiBpbiB0aGUgaGlzdG9yeSBsaXN0Cisrc3RhcnRpbmcgd2l0aAorIC5JUiBzdHJpbmcg LgorIC5UUAorIC5CICE/XGZJc3RyaW5nXGZSXGZCWz9dXGZSCistUmVmZXIgdG8gdGhlIG1vc3Qg cmVjZW50IGNvbW1hbmQgY29udGFpbmluZworK1JlZmVyIHRvIHRoZSBtb3N0IHJlY2VudCBjb21t YW5kCisrcHJlY2VkaW5nIHRoZSBjdXJyZW50IHBvc3RpdGlvbiBpbiB0aGUgaGlzdG9yeSBsaXN0 CisrY29udGFpbmluZworIC5JUiBzdHJpbmcgLgorIFRoZSB0cmFpbGluZyBcZkI/XGZQIG1heSBi ZSBvbWl0dGVkIGlmCisgLkkgc3RyaW5nCitAQCAtNTY5LDEwICs1NzUsMTMgQEAgVGhlIG51bWJl ciBvZiBlbnRyaWVzIGN1cnJlbnRseSBzdG9yZWQgaW4gdGhlIGhpc3RvcnkgbGlzdC4KKyBUaGUg bWF4aW11bSBudW1iZXIgb2YgaGlzdG9yeSBlbnRyaWVzLiAgVGhpcyBtdXN0IGJlIGNoYW5nZWQg dXNpbmcKKyBcZkJzdGlmbGVfaGlzdG9yeSgpXGZQLgorIAorLS5WYiBpbnQgaGlzdG9yeV93cml0 ZV90aW1lc3RhbXBzCisrLlZiIGludCBoaXN0b3J5X3dpdGVfdGltZXN0YW1wcworIElmIG5vbi16 ZXJvLCB0aW1lc3RhbXBzIGFyZSB3cml0dGVuIHRvIHRoZSBoaXN0b3J5IGZpbGUsIHNvIHRoZXkg Y2FuIGJlCisgcHJlc2VydmVkIGJldHdlZW4gc2Vzc2lvbnMuICBUaGUgZGVmYXVsdCB2YWx1ZSBp cyAwLCBtZWFuaW5nIHRoYXQKKyB0aW1lc3RhbXBzIGFyZSBub3Qgc2F2ZWQuCisrVGhlIGN1cnJl bnQgdGltZXN0YW1wIGZvcm1hdCB1c2VzIHRoZSB2YWx1ZSBvZiBcZkloaXN0b3J5X2NvbW1lbnRf Y2hhclxmUAorK3RvIGRlbGltaXQgdGltZXN0YW1wIGVudHJpZXMgaW4gdGhlIGhpc3RvcnkgZmls ZS4gIElmIHRoYXQgdmFyaWFibGUgZG9lcworK25vdCBoYXZlIGEgdmFsdWUgKHRoZSBkZWZhdWx0 KSwgdGltZXN0YW1wcyB3aWxsIG5vdCBiZSB3cml0dGVuLgorIAorIC5WYiBjaGFyIGhpc3Rvcnlf ZXhwYW5zaW9uX2NoYXIKKyBUaGUgY2hhcmFjdGVyIHRoYXQgaW50cm9kdWNlcyBhIGhpc3Rvcnkg ZXZlbnQuICBUaGUgZGVmYXVsdCBpcyBcZkIhXGZQLgorLS0tIGEvcmVhZGxpbmUvZG9jL2hpc3Rv cnkudGV4aQorKysrIGIvcmVhZGxpbmUvZG9jL2hpc3RvcnkudGV4aQorQEAgLTQsOCArNCw2IEBA CisgQHNldHRpdGxlIEdOVSBIaXN0b3J5IExpYnJhcnkKKyBAYyAlKiplbmQgb2YgaGVhZGVyIChU aGlzIGlzIGZvciBydW5uaW5nIFRleGluZm8gb24gYSByZWdpb24uKQorIAorLUBzZXRjaGFwdGVy bmV3cGFnZSBvZGQKKy0KKyBAaW5jbHVkZSB2ZXJzaW9uLnRleGkKKyAKKyBAY29weWluZworQEAg LTE0LDcgKzEyLDcgQEAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIEdOVSBIaXN0b3J5IGxp YnJhcnkKKyBhIHByb2dyYW1taW5nIHRvb2wgdGhhdCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgdXNl ciBpbnRlcmZhY2UgZm9yCisgcmVjYWxsaW5nIGxpbmVzIG9mIHByZXZpb3VzbHkgdHlwZWQgaW5w dXQuCisgCistQ29weXJpZ2h0IEBjb3B5cmlnaHR7fSAxOTg4LTIwMDQgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrQ29weXJpZ2h0IEBjb3B5cmlnaHR7fSAxOTg4LS0yMDExIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBt YWtlIGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZgorIHRoaXMgbWFudWFsIHByb3Zp ZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlCitAQCAt MjIsMTUgKzIwLDE2IEBAIGFyZSBwcmVzZXJ2ZWQgb24gYWxsIGNvcGllcy4KKyAKKyBAcXVvdGF0 aW9uCisgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1v ZGlmeSB0aGlzIGRvY3VtZW50CistdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1 bWVudGF0aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4xIG9yCisrdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4zIG9yCisgYW55IGxh dGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHdp dGggbm8KKy1JbnZhcmlhbnQgU2VjdGlvbnMsIHdpdGggdGhlIEZyb250LUNvdmVyIHRleHRzIGJl aW5nIGBgQSBHTlUgTWFudWFsLCcnCisrSW52YXJpYW50IFNlY3Rpb25zLCB3aXRoIHRoZSBGcm9u dC1Db3ZlciB0ZXh0cyBiZWluZyBgYEEgR05VIE1hbnVhbCcnLAorIGFuZCB3aXRoIHRoZSBCYWNr LUNvdmVyIFRleHRzIGFzIGluIChhKSBiZWxvdy4gIEEgY29weSBvZiB0aGUgbGljZW5zZSBpcwor LWluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkIGBgR05VIEZyZWUgRG9jdW1lbnRhdGlv biBMaWNlbnNlLicnCisraW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgYGBHTlUgRnJl ZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UnJy4KKysKKysoYSkgVGhlIEZTRidzIEJhY2stQ292ZXIg VGV4dCBpczogWW91IGFyZSBmcmVlIHRvIGNvcHkgYW5kIG1vZGlmeQorK3RoaXMgR05VIG1hbnVh bC4gIEJ1eWluZyBjb3BpZXMgZnJvbSBHTlUgUHJlc3Mgc3VwcG9ydHMgdGhlIEZTRiBpbgorK2Rl dmVsb3BpbmcgR05VIGFuZCBwcm9tb3Rpbmcgc29mdHdhcmUgZnJlZWRvbS4nJworIAorLShhKSBU aGUgRlNGJ3MgQmFjay1Db3ZlciBUZXh0IGlzOiBgYFlvdSBoYXZlIGZyZWVkb20gdG8gY29weSBh bmQgbW9kaWZ5CistdGhpcyBHTlUgTWFudWFsLCBsaWtlIEdOVSBzb2Z0d2FyZS4gIENvcGllcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUKKy1Tb2Z0d2FyZSBGb3VuZGF0aW9uIHJhaXNlIGZ1bmRzIGZv ciBHTlUgZGV2ZWxvcG1lbnQuJycKKyBAZW5kIHF1b3RhdGlvbgorIEBlbmQgY29weWluZworIAor QEAgLTcyLDcgKzcxLDcgQEAgdHlwZWQgaW5wdXQuCisgQG1lbnUKKyAqIFVzaW5nIEhpc3Rvcnkg SW50ZXJhY3RpdmVseTo6CSAgR05VIEhpc3RvcnkgVXNlcidzIE1hbnVhbC4KKyAqIFByb2dyYW1t aW5nIHdpdGggR05VIEhpc3Rvcnk6OiAgR05VIEhpc3RvcnkgUHJvZ3JhbW1lcidzIE1hbnVhbC4K Ky0qIENvcHlpbmcgVGhpcyBNYW51YWw6OgkJICBDb3B5aW5nIFRoaXMgTWFudWFsLgorKyogR05V IEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlOjoJTGljZW5zZSBmb3IgY29weWluZyB0aGlzIG1h bnVhbC4KKyAqIENvbmNlcHQgSW5kZXg6OgkJICBJbmRleCBvZiBjb25jZXB0cyBkZXNjcmliZWQg aW4gdGhpcyBtYW51YWwuCisgKiBGdW5jdGlvbiBhbmQgVmFyaWFibGUgSW5kZXg6OgkgIEluZGV4 IG9mIGV4dGVybmFsbHkgdmlzaWJsZSBmdW5jdGlvbnMKKyAJCQkJICBhbmQgdmFyaWFibGVzLgor QEAgLTg0LDEyICs4Myw4IEBAIHR5cGVkIGlucHV0LgorIEBpbmNsdWRlIGhzdXNlci50ZXhpCisg QGluY2x1ZGUgaHN0ZWNoLnRleGkKKyAKKy1Abm9kZSBDb3B5aW5nIFRoaXMgTWFudWFsCistQGFw cGVuZGl4IENvcHlpbmcgVGhpcyBNYW51YWwKKy0KKy1AbWVudQorLSogR05VIEZyZWUgRG9jdW1l bnRhdGlvbiBMaWNlbnNlOjoJTGljZW5zZSBmb3IgY29weWluZyB0aGlzIG1hbnVhbC4KKy1AZW5k IG1lbnUKKytAbm9kZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UKKytAYXBwZW5kaXgg R05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlCisgCisgQGluY2x1ZGUgZmRsLnRleGkKKyAK Ky0tLSBhL3JlYWRsaW5lL2RvYy9oc3RlY2gudGV4aQorKysrIGIvcmVhZGxpbmUvZG9jL2hzdGVj aC50ZXhpCitAQCAtMSw3ICsxLDcgQEAKKyBAaWdub3JlCisgVGhpcyBmaWxlIGRvY3VtZW50cyB0 aGUgdXNlciBpbnRlcmZhY2UgdG8gdGhlIEdOVSBIaXN0b3J5IGxpYnJhcnkuCisgCistQ29weXJp Z2h0IChDKSAxOTg4LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrQ29weXJp Z2h0IChDKSAxOTg4LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgQXV0aG9y ZWQgYnkgQnJpYW4gRm94IGFuZCBDaGV0IFJhbWV5LgorIAorIFBlcm1pc3Npb24gaXMgZ3JhbnRl ZCB0byBtYWtlIGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGlzIG1hbnVhbAor QEAgLTQyNiw2ICs0MjYsMTAgQEAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGhpc3RvcnkgZW50cmll cy4gIFRoaXMgbXVzdCBiZSBjaGFuZ2VkIHVzaW5nCisgSWYgbm9uLXplcm8sIHRpbWVzdGFtcHMg YXJlIHdyaXR0ZW4gdG8gdGhlIGhpc3RvcnkgZmlsZSwgc28gdGhleSBjYW4gYmUKKyBwcmVzZXJ2 ZWQgYmV0d2VlbiBzZXNzaW9ucy4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDAsIG1lYW5pbmcgdGhh dAorIHRpbWVzdGFtcHMgYXJlIG5vdCBzYXZlZC4KKysKKytUaGUgY3VycmVudCB0aW1lc3RhbXAg Zm9ybWF0IHVzZXMgdGhlIHZhbHVlIG9mIEB2YXJ7aGlzdG9yeV9jb21tZW50X2NoYXJ9CisrdG8g ZGVsaW1pdCB0aW1lc3RhbXAgZW50cmllcyBpbiB0aGUgaGlzdG9yeSBmaWxlLiAgSWYgdGhhdCB2 YXJpYWJsZSBkb2VzCisrbm90IGhhdmUgYSB2YWx1ZSAodGhlIGRlZmF1bHQpLCB0aW1lc3RhbXBz IHdpbGwgbm90IGJlIHdyaXR0ZW4uCisgQGVuZCBkZWZ0eXBldmFyCisgCisgQGRlZnR5cGV2YXIg Y2hhciBoaXN0b3J5X2V4cGFuc2lvbl9jaGFyCistLS0gYS9yZWFkbGluZS9kb2MvaHN1c2VyLnRl eGkKKysrKyBiL3JlYWRsaW5lL2RvYy9oc3VzZXIudGV4aQorQEAgLTEsNyArMSw3IEBACisgQGln bm9yZQorIFRoaXMgZmlsZSBkb2N1bWVudHMgdGhlIHVzZXIgaW50ZXJmYWNlIHRvIHRoZSBHTlUg SGlzdG9yeSBsaWJyYXJ5LgorIAorLUNvcHlyaWdodCAoQykgMTk4OC0yMDAyIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorK0NvcHlyaWdodCAoQykgMTk4OC0tMjAxMSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKyBBdXRob3JlZCBieSBCcmlhbiBGb3ggYW5kIENoZXQgUmFt ZXkuCisgCisgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIG1ha2UgYW5kIGRpc3RyaWJ1dGUgdmVy YmF0aW0gY29waWVzIG9mIHRoaXMgbWFudWFsCitAQCAtOTcsNyArOTcsMTEgQEAgdG8gY29udGFp biBubyBtb3JlIHRoYW4gQGVudnskSElTVEZJTEVTSVpFfQorIGxpbmVzLiAgSWYgQGVudntISVNU RklMRVNJWkV9IGlzIG5vdCBzZXQsIG5vIHRydW5jYXRpb24gaXMgcGVyZm9ybWVkLgorIAorIElm IHRoZSBAZW52e0hJU1RUSU1FRk9STUFUfSBpcyBzZXQsIHRoZSB0aW1lIHN0YW1wIGluZm9ybWF0 aW9uCistYXNzb2NpYXRlZCB3aXRoIGVhY2ggaGlzdG9yeSBlbnRyeSBpcyB3cml0dGVuIHRvIHRo ZSBoaXN0b3J5IGZpbGUuCisrYXNzb2NpYXRlZCB3aXRoIGVhY2ggaGlzdG9yeSBlbnRyeSBpcyB3 cml0dGVuIHRvIHRoZSBoaXN0b3J5IGZpbGUsCisrbWFya2VkIHdpdGggdGhlIGhpc3RvcnkgY29t bWVudCBjaGFyYWN0ZXIuCisrV2hlbiB0aGUgaGlzdG9yeSBmaWxlIGlzIHJlYWQsIGxpbmVzIGJl Z2lubmluZyB3aXRoIHRoZSBoaXN0b3J5CisrY29tbWVudCBjaGFyYWN0ZXIgZm9sbG93ZWQgaW1t ZWRpYXRlbHkgYnkgYSBkaWdpdCBhcmUgaW50ZXJwcmV0ZWQKKythcyB0aW1lc3RhbXBzIGZvciB0 aGUgcHJldmlvdXMgaGlzdG9yeSBsaW5lLgorIAorIFRoZSBidWlsdGluIGNvbW1hbmQgQGNvZGV7 ZmN9IG1heSBiZSB1c2VkIHRvIGxpc3Qgb3IgZWRpdCBhbmQgcmUtZXhlY3V0ZQorIGEgcG9ydGlv biBvZiB0aGUgaGlzdG9yeSBsaXN0LgorQEAgLTEzMyw3ICsxMzcsNyBAQCBoaXN0b3J5IGxpc3Qg YW5kIGhpc3RvcnkgZmlsZS4KKyBAaXRlbSBmYworIEBidGluZGV4IGZjCisgQGV4YW1wbGUKKy1A Y29kZXtmYyBbLWUgQHZhcntlbmFtZX1dIFstbmxyXSBbQHZhcntmaXJzdH1dIFtAdmFye2xhc3R9 XX0KKytAY29kZXtmYyBbLWUgQHZhcntlbmFtZX1dIFstbG5yXSBbQHZhcntmaXJzdH1dIFtAdmFy e2xhc3R9XX0KKyBAY29kZXtmYyAtcyBbQHZhcntwYXR9PUB2YXJ7cmVwfV0gW0B2YXJ7Y29tbWFu ZH1dfQorIEBlbmQgZXhhbXBsZQorIAorQEAgLTI3Nyw3ICsyODEsMTAgQEAgdGhlbSwgc28gdGhh dCB0aGV5IGFyZSBhdmFpbGFibGUgZm9yIHN1YnNlcXVlbnQgcmVjYWxsLgorIFRoaXMgaXMgbW9z dCB1c2VmdWwgaW4gY29uanVuY3Rpb24gd2l0aCBSZWFkbGluZS4KKyAKKyBUaGUgc2hlbGwgYWxs b3dzIGNvbnRyb2wgb2YgdGhlIHZhcmlvdXMgY2hhcmFjdGVycyB1c2VkIGJ5IHRoZQorLWhpc3Rv cnkgZXhwYW5zaW9uIG1lY2hhbmlzbSB3aXRoIHRoZSBAY29kZXtoaXN0Y2hhcnN9IHZhcmlhYmxl LgorK2hpc3RvcnkgZXhwYW5zaW9uIG1lY2hhbmlzbSB3aXRoIHRoZSBAY29kZXtoaXN0Y2hhcnN9 IHZhcmlhYmxlLAorK2FzIGV4cGxhaW5lZCBhYm92ZSAoQHB4cmVme0Jhc2ggVmFyaWFibGVzfSku ICBUaGUgc2hlbGwgdXNlcworK3RoZSBoaXN0b3J5IGNvbW1lbnQgY2hhcmFjdGVyIHRvIG1hcmsg aGlzdG9yeSB0aW1lc3RhbXBzIHdoZW4KKyt3cml0aW5nIHRoZSBoaXN0b3J5IGZpbGUuCisgQGVu ZCBpZnNldAorIAorIEBtZW51CitAQCAtMjkyLDYgKzI5OSw4IEBAIGhpc3RvcnkgZXhwYW5zaW9u IG1lY2hhbmlzbSB3aXRoIHRoZSBAY29kZXtoaXN0Y2hhcnN9IHZhcmlhYmxlLgorIAorIEFuIGV2 ZW50IGRlc2lnbmF0b3IgaXMgYSByZWZlcmVuY2UgdG8gYSBjb21tYW5kIGxpbmUgZW50cnkgaW4g dGhlCisgaGlzdG9yeSBsaXN0LgorK1VubGVzcyB0aGUgcmVmZXJlbmNlIGlzIGFic29sdXRlLCBl dmVudHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50CisrcG9zaXRpb24gaW4gdGhlIGhpc3Rv cnkgbGlzdC4KKyBAY2luZGV4IGhpc3RvcnkgZXZlbnRzCisgCisgQHRhYmxlIEBhc2lzCitAQCAt MzE3LDEwICszMjYsMTUgQEAgUmVmZXIgdG8gdGhlIGNvbW1hbmQgQHZhcntufSBsaW5lcyBiYWNr LgorIFJlZmVyIHRvIHRoZSBwcmV2aW91cyBjb21tYW5kLiAgVGhpcyBpcyBhIHN5bm9ueW0gZm9y IEBzYW1weyEtMX0uCisgCisgQGl0ZW0gQGNvZGV7IUB2YXJ7c3RyaW5nfX0KKy1SZWZlciB0byB0 aGUgbW9zdCByZWNlbnQgY29tbWFuZCBzdGFydGluZyB3aXRoIEB2YXJ7c3RyaW5nfS4KKytSZWZl ciB0byB0aGUgbW9zdCByZWNlbnQgY29tbWFuZAorK3ByZWNlZGluZyB0aGUgY3VycmVudCBwb3Np dGlvbiBpbiB0aGUgaGlzdG9yeSBsaXN0Cisrc3RhcnRpbmcgd2l0aCBAdmFye3N0cmluZ30uCisg CisgQGl0ZW0gQGNvZGV7IT9AdmFye3N0cmluZ31bP119CistUmVmZXIgdG8gdGhlIG1vc3QgcmVj ZW50IGNvbW1hbmQgY29udGFpbmluZyBAdmFye3N0cmluZ30uICBUaGUgdHJhaWxpbmcKKytSZWZl ciB0byB0aGUgbW9zdCByZWNlbnQgY29tbWFuZAorK3ByZWNlZGluZyB0aGUgY3VycmVudCBwb3Np dGlvbiBpbiB0aGUgaGlzdG9yeSBsaXN0CisrY29udGFpbmluZyBAdmFye3N0cmluZ30uCisrVGhl IHRyYWlsaW5nCisgQHNhbXB7P30gbWF5IGJlIG9taXR0ZWQgaWYgdGhlIEB2YXJ7c3RyaW5nfSBp cyBmb2xsb3dlZCBpbW1lZGlhdGVseSBieQorIGEgbmV3bGluZS4KKyAKK0BAIC00MTIsNyArNDI2 LDcgQEAgb2YgdGhlIGZvbGxvd2luZyBtb2RpZmllcnMsIGVhY2ggcHJlY2VkZWQgYnkgYSBAc2Ft cHs6fS4KKyBSZW1vdmUgYSB0cmFpbGluZyBwYXRobmFtZSBjb21wb25lbnQsIGxlYXZpbmcgb25s eSB0aGUgaGVhZC4KKyAKKyBAaXRlbSB0CistUmVtb3ZlIGFsbCBsZWFkaW5nICBwYXRobmFtZSAg Y29tcG9uZW50cywgbGVhdmluZyB0aGUgdGFpbC4KKytSZW1vdmUgYWxsIGxlYWRpbmcgcGF0aG5h bWUgY29tcG9uZW50cywgbGVhdmluZyB0aGUgdGFpbC4KKyAKKyBAaXRlbSByCisgUmVtb3ZlIGEg dHJhaWxpbmcgc3VmZml4IG9mIHRoZSBmb3JtIEBzYW1wey5AdmFye3N1ZmZpeH19LCBsZWF2aW5n CistLS0gYS9yZWFkbGluZS9kb2MvaW5jLWhpc3QudGV4aW5mbworKysrIC9kZXYvbnVsbAorQEAg LTEsNDU3ICswLDAgQEAKKy1AaWdub3JlCistVGhpcyBmaWxlIGRvY3VtZW50cyB0aGUgdXNlciBp bnRlcmZhY2UgdG8gdGhlIEdOVSBIaXN0b3J5IGxpYnJhcnkuCistCistQ29weXJpZ2h0IChDKSAx OTg4LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistQXV0aG9yZWQgYnkgQnJp YW4gRm94IGFuZCBDaGV0IFJhbWV5LgorLQorLVBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBtYWtl IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGlzIG1hbnVhbAorLXByb3ZpZGVk IHRoZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFyZSBwcmVz ZXJ2ZWQgb24KKy1hbGwgY29waWVzLgorLQorLVBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBwcm9j ZXNzIHRoaXMgZmlsZSB0aHJvdWdoIFRleCBhbmQgcHJpbnQgdGhlCistcmVzdWx0cywgcHJvdmlk ZWQgdGhlIHByaW50ZWQgZG9jdW1lbnQgY2FycmllcyBjb3B5aW5nIHBlcm1pc3Npb24gbm90aWNl CistaWRlbnRpY2FsIHRvIHRoaXMgb25lIGV4Y2VwdCBmb3IgdGhlIHJlbW92YWwgb2YgdGhpcyBw YXJhZ3JhcGggKHRoaXMKKy1wYXJhZ3JhcGggbm90IGJlaW5nIHJlbGV2YW50IHRvIHRoZSBwcmlu dGVkIG1hbnVhbCkuCistCistUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHkgYW5kIGRpc3Ry aWJ1dGUgbW9kaWZpZWQgdmVyc2lvbnMgb2YgdGhpcworLW1hbnVhbCB1bmRlciB0aGUgY29uZGl0 aW9ucyBmb3IgdmVyYmF0aW0gY29weWluZywgcHJvdmlkZWQgYWxzbyB0aGF0IHRoZQorLUdOVSBD b3B5cmlnaHQgc3RhdGVtZW50IGlzIGF2YWlsYWJsZSB0byB0aGUgZGlzdHJpYnV0ZWUsIGFuZCBw cm92aWRlZCB0aGF0CistdGhlIGVudGlyZSByZXN1bHRpbmcgZGVyaXZlZCB3b3JrIGlzIGRpc3Ry aWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBhCistcGVybWlzc2lvbiBub3RpY2UgaWRlbnRpY2Fs IHRvIHRoaXMgb25lLgorLQorLVBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5IGFuZCBkaXN0 cmlidXRlIHRyYW5zbGF0aW9ucyBvZiB0aGlzIG1hbnVhbAorLWludG8gYW5vdGhlciBsYW5ndWFn ZSwgdW5kZXIgdGhlIGFib3ZlIGNvbmRpdGlvbnMgZm9yIG1vZGlmaWVkIHZlcnNpb25zLgorLUBl bmQgaWdub3JlCistCistQG5vZGUgVXNpbmcgSGlzdG9yeSBJbnRlcmFjdGl2ZWx5CistQGNoYXB0 ZXIgVXNpbmcgSGlzdG9yeSBJbnRlcmFjdGl2ZWx5CistCistQGMgQGlmY2xlYXIgQmFzaEZlYXR1 cmVzCistQGMgQGRlZmNvZGVpbmRleCBidAorLUBjIEBlbmQgaWZjbGVhcgorLQorLUBpZnNldCBC YXNoRmVhdHVyZXMKKy1UaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIEBzY3tn bnV9IEhpc3RvcnkgTGlicmFyeQorLWludGVyYWN0aXZlbHksIGZyb20gYSB1c2VyJ3Mgc3RhbmRw b2ludC4KKy1JdCBzaG91bGQgYmUgY29uc2lkZXJlZCBhIHVzZXIncyBndWlkZS4KKy1Gb3IgaW5m b3JtYXRpb24gb24gdXNpbmcgdGhlIEBzY3tnbnV9IEhpc3RvcnkgTGlicmFyeSBpbiBvdGhlciBw cm9ncmFtcywKKy1zZWUgdGhlIEBzY3tnbnV9IFJlYWRsaW5lIExpYnJhcnkgTWFudWFsLgorLUBl bmQgaWZzZXQKKy1AaWZjbGVhciBCYXNoRmVhdHVyZXMKKy1UaGlzIGNoYXB0ZXIgZGVzY3JpYmVz IGhvdyB0byB1c2UgdGhlIEBzY3tnbnV9IEhpc3RvcnkgTGlicmFyeSBpbnRlcmFjdGl2ZWx5LAor LWZyb20gYSB1c2VyJ3Mgc3RhbmRwb2ludC4gIEl0IHNob3VsZCBiZSBjb25zaWRlcmVkIGEgdXNl cidzIGd1aWRlLgorLUZvciBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgQHNje2dudX0gSGlzdG9y eSBMaWJyYXJ5IGluIG90aGVyIHByb2dyYW1zLAorLXNlZSB0aGUgQHNje2dudX0gUmVhZGxpbmUg TGlicmFyeSBNYW51YWwuCistQGVuZCBpZmNsZWFyCistCistQGlmc2V0IEJhc2hGZWF0dXJlcwor LUBtZW51CistKiBCYXNoIEhpc3RvcnkgRmFjaWxpdGllczo6CUhvdyBCYXNoIGxldHMgeW91IG1h bmlwdWxhdGUgeW91ciBjb21tYW5kCistCQkJCWhpc3RvcnkuCistKiBCYXNoIEhpc3RvcnkgQnVp bHRpbnM6OglUaGUgQmFzaCBidWlsdGluIGNvbW1hbmRzIHRoYXQgbWFuaXB1bGF0ZQorLQkJCQl0 aGUgY29tbWFuZCBoaXN0b3J5LgorLSogSGlzdG9yeSBJbnRlcmFjdGlvbjo6CQlXaGF0IGl0IGZl ZWxzIGxpa2UgdXNpbmcgSGlzdG9yeSBhcyBhIHVzZXIuCistQGVuZCBtZW51CistQGVuZCBpZnNl dAorLUBpZmNsZWFyIEJhc2hGZWF0dXJlcworLUBtZW51CistKiBIaXN0b3J5IEludGVyYWN0aW9u OjoJCVdoYXQgaXQgZmVlbHMgbGlrZSB1c2luZyBIaXN0b3J5IGFzIGEgdXNlci4KKy1AZW5kIG1l bnUKKy1AZW5kIGlmY2xlYXIKKy0KKy1AaWZzZXQgQmFzaEZlYXR1cmVzCistQG5vZGUgQmFzaCBI aXN0b3J5IEZhY2lsaXRpZXMKKy1Ac2VjdGlvbiBCYXNoIEhpc3RvcnkgRmFjaWxpdGllcworLUBj aW5kZXggY29tbWFuZCBoaXN0b3J5CistQGNpbmRleCBoaXN0b3J5IGxpc3QKKy0KKy1XaGVuIHRo ZSBAb3B0aW9uey1vIGhpc3Rvcnl9IG9wdGlvbiB0byB0aGUgQGNvZGV7c2V0fSBidWlsdGluCist aXMgZW5hYmxlZCAoQHB4cmVme1RoZSBTZXQgQnVpbHRpbn0pLAorLXRoZSBzaGVsbCBwcm92aWRl cyBhY2Nlc3MgdG8gdGhlIEBkZm57Y29tbWFuZCBoaXN0b3J5fSwKKy10aGUgbGlzdCBvZiBjb21t YW5kcyBwcmV2aW91c2x5IHR5cGVkLgorLVRoZSB2YWx1ZSBvZiB0aGUgQGVudntISVNUU0laRX0g c2hlbGwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUKKy1udW1iZXIgb2YgY29tbWFuZHMgdG8gc2F2 ZSBpbiBhIGhpc3RvcnkgbGlzdC4KKy1UaGUgdGV4dCBvZiB0aGUgbGFzdCBAZW52eyRISVNUU0la RX0KKy1jb21tYW5kcyAoZGVmYXVsdCA1MDApIGlzIHNhdmVkLgorLVRoZSBzaGVsbCBzdG9yZXMg ZWFjaCBjb21tYW5kIGluIHRoZSBoaXN0b3J5IGxpc3QgcHJpb3IgdG8KKy1wYXJhbWV0ZXIgYW5k IHZhcmlhYmxlIGV4cGFuc2lvbgorLWJ1dCBhZnRlciBoaXN0b3J5IGV4cGFuc2lvbiBpcyBwZXJm b3JtZWQsIHN1YmplY3QgdG8gdGhlCistdmFsdWVzIG9mIHRoZSBzaGVsbCB2YXJpYWJsZXMKKy1A ZW52e0hJU1RJR05PUkV9IGFuZCBAZW52e0hJU1RDT05UUk9MfS4KKy0KKy1XaGVuIHRoZSBzaGVs bCBzdGFydHMgdXAsIHRoZSBoaXN0b3J5IGlzIGluaXRpYWxpemVkIGZyb20gdGhlCistZmlsZSBu YW1lZCBieSB0aGUgQGVudntISVNURklMRX0gdmFyaWFibGUgKGRlZmF1bHQgQGZpbGV7fi8uYmFz aF9oaXN0b3J5fSkuCistVGhlIGZpbGUgbmFtZWQgYnkgdGhlIHZhbHVlIG9mIEBlbnZ7SElTVEZJ TEV9IGlzIHRydW5jYXRlZCwgaWYKKy1uZWNlc3NhcnksIHRvIGNvbnRhaW4gbm8gbW9yZSB0aGFu IHRoZSBudW1iZXIgb2YgbGluZXMgc3BlY2lmaWVkIGJ5CistdGhlIHZhbHVlIG9mIHRoZSBAZW52 e0hJU1RGSUxFU0laRX0gdmFyaWFibGUuCistV2hlbiBhbiBpbnRlcmFjdGl2ZSBzaGVsbCBleGl0 cywgdGhlIGxhc3QKKy1AZW52eyRISVNUU0laRX0gbGluZXMgYXJlIGNvcGllZCBmcm9tIHRoZSBo aXN0b3J5IGxpc3QgdG8gdGhlIGZpbGUKKy1uYW1lZCBieSBAZW52eyRISVNURklMRX0uCistSWYg dGhlIEBjb2Rle2hpc3RhcHBlbmR9IHNoZWxsIG9wdGlvbiBpcyBzZXQgKEBweHJlZntCYXNoIEJ1 aWx0aW5zfSksCistdGhlIGxpbmVzIGFyZSBhcHBlbmRlZCB0byB0aGUgaGlzdG9yeSBmaWxlLAor LW90aGVyd2lzZSB0aGUgaGlzdG9yeSBmaWxlIGlzIG92ZXJ3cml0dGVuLgorLUlmIEBlbnZ7SElT VEZJTEV9CistaXMgdW5zZXQsIG9yIGlmIHRoZSBoaXN0b3J5IGZpbGUgaXMgdW53cml0YWJsZSwg dGhlIGhpc3RvcnkgaXMKKy1ub3Qgc2F2ZWQuICBBZnRlciBzYXZpbmcgdGhlIGhpc3RvcnksIHRo ZSBoaXN0b3J5IGZpbGUgaXMgdHJ1bmNhdGVkCistdG8gY29udGFpbiBubyBtb3JlIHRoYW4gQGVu dnskSElTVEZJTEVTSVpFfQorLWxpbmVzLiAgSWYgQGVudntISVNURklMRVNJWkV9IGlzIG5vdCBz ZXQsIG5vIHRydW5jYXRpb24gaXMgcGVyZm9ybWVkLgorLQorLUlmIHRoZSBAZW52e0hJU1RUSU1F Rk9STUFUfSBpcyBzZXQsIHRoZSB0aW1lIHN0YW1wIGluZm9ybWF0aW9uCistYXNzb2NpYXRlZCB3 aXRoIGVhY2ggaGlzdG9yeSBlbnRyeSBpcyB3cml0dGVuIHRvIHRoZSBoaXN0b3J5IGZpbGUuCist CistVGhlIGJ1aWx0aW4gY29tbWFuZCBAY29kZXtmY30gbWF5IGJlIHVzZWQgdG8gbGlzdCBvciBl ZGl0IGFuZCByZS1leGVjdXRlCistYSBwb3J0aW9uIG9mIHRoZSBoaXN0b3J5IGxpc3QuCistVGhl IEBjb2Rle2hpc3Rvcnl9IGJ1aWx0aW4gbWF5IGJlIHVzZWQgdG8gZGlzcGxheSBvciBtb2RpZnkg dGhlIGhpc3RvcnkKKy1saXN0IGFuZCBtYW5pcHVsYXRlIHRoZSBoaXN0b3J5IGZpbGUuCistV2hl biB1c2luZyBjb21tYW5kLWxpbmUgZWRpdGluZywgc2VhcmNoIGNvbW1hbmRzCistYXJlIGF2YWls YWJsZSBpbiBlYWNoIGVkaXRpbmcgbW9kZSB0aGF0IHByb3ZpZGUgYWNjZXNzIHRvIHRoZQorLWhp c3RvcnkgbGlzdCAoQHB4cmVme0NvbW1hbmRzIEZvciBIaXN0b3J5fSkuCistCistVGhlIHNoZWxs IGFsbG93cyBjb250cm9sIG92ZXIgd2hpY2ggY29tbWFuZHMgYXJlIHNhdmVkIG9uIHRoZSBoaXN0 b3J5CistbGlzdC4gIFRoZSBAZW52e0hJU1RDT05UUk9MfSBhbmQgQGVudntISVNUSUdOT1JFfQor LXZhcmlhYmxlcyBtYXkgYmUgc2V0IHRvIGNhdXNlIHRoZSBzaGVsbCB0byBzYXZlIG9ubHkgYSBz dWJzZXQgb2YgdGhlCistY29tbWFuZHMgZW50ZXJlZC4KKy1UaGUgQGNvZGV7Y21kaGlzdH0KKy1z aGVsbCBvcHRpb24sIGlmIGVuYWJsZWQsIGNhdXNlcyB0aGUgc2hlbGwgdG8gYXR0ZW1wdCB0byBz YXZlIGVhY2gKKy1saW5lIG9mIGEgbXVsdGktbGluZSBjb21tYW5kIGluIHRoZSBzYW1lIGhpc3Rv cnkgZW50cnksIGFkZGluZworLXNlbWljb2xvbnMgd2hlcmUgbmVjZXNzYXJ5IHRvIHByZXNlcnZl IHN5bnRhY3RpYyBjb3JyZWN0bmVzcy4KKy1UaGUgQGNvZGV7bGl0aGlzdH0KKy1zaGVsbCBvcHRp b24gY2F1c2VzIHRoZSBzaGVsbCB0byBzYXZlIHRoZSBjb21tYW5kIHdpdGggZW1iZWRkZWQgbmV3 bGluZXMKKy1pbnN0ZWFkIG9mIHNlbWljb2xvbnMuCistVGhlIEBjb2Rle3Nob3B0fSBidWlsdGlu IGlzIHVzZWQgdG8gc2V0IHRoZXNlIG9wdGlvbnMuCistQHhyZWZ7QmFzaCBCdWlsdGluc30sIGZv ciBhIGRlc2NyaXB0aW9uIG9mIEBjb2Rle3Nob3B0fS4KKy0KKy1Abm9kZSBCYXNoIEhpc3Rvcnkg QnVpbHRpbnMKKy1Ac2VjdGlvbiBCYXNoIEhpc3RvcnkgQnVpbHRpbnMKKy1AY2luZGV4IGhpc3Rv cnkgYnVpbHRpbnMKKy0KKy1CYXNoIHByb3ZpZGVzIHR3byBidWlsdGluIGNvbW1hbmRzIHdoaWNo IG1hbmlwdWxhdGUgdGhlCistaGlzdG9yeSBsaXN0IGFuZCBoaXN0b3J5IGZpbGUuCistCistQHRh YmxlIEBjb2RlCistCistQGl0ZW0gZmMKKy1AYnRpbmRleCBmYworLUBleGFtcGxlCistQGNvZGV7 ZmMgWy1lIEB2YXJ7ZW5hbWV9XSBbLW5scl0gW0B2YXJ7Zmlyc3R9XSBbQHZhcntsYXN0fV19Cist QGNvZGV7ZmMgLXMgW0B2YXJ7cGF0fT1AdmFye3JlcH1dIFtAdmFye2NvbW1hbmR9XX0KKy1AZW5k IGV4YW1wbGUKKy0KKy1GaXggQ29tbWFuZC4gIEluIHRoZSBmaXJzdCBmb3JtLCBhIHJhbmdlIG9m IGNvbW1hbmRzIGZyb20gQHZhcntmaXJzdH0gdG8KKy1AdmFye2xhc3R9IGlzIHNlbGVjdGVkIGZy b20gdGhlIGhpc3RvcnkgbGlzdC4gIEJvdGggQHZhcntmaXJzdH0gYW5kCistQHZhcntsYXN0fSBt YXkgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nICh0byBsb2NhdGUgdGhlIG1vc3QgcmVjZW50Cist Y29tbWFuZCBiZWdpbm5pbmcgd2l0aCB0aGF0IHN0cmluZykgb3IgYXMgYSBudW1iZXIgKGFuIGlu ZGV4IGludG8gdGhlCistaGlzdG9yeSBsaXN0LCB3aGVyZSBhIG5lZ2F0aXZlIG51bWJlciBpcyB1 c2VkIGFzIGFuIG9mZnNldCBmcm9tIHRoZQorLWN1cnJlbnQgY29tbWFuZCBudW1iZXIpLiAgSWYg QHZhcntsYXN0fSBpcyBub3Qgc3BlY2lmaWVkIGl0IGlzIHNldCB0bworLUB2YXJ7Zmlyc3R9LiAg SWYgQHZhcntmaXJzdH0gaXMgbm90IHNwZWNpZmllZCBpdCBpcyBzZXQgdG8gdGhlIHByZXZpb3Vz CistY29tbWFuZCBmb3IgZWRpdGluZyBhbmQgQG1pbnVze30xNiBmb3IgbGlzdGluZy4gIElmIHRo ZSBAb3B0aW9uey1sfSBmbGFnIGlzCistZ2l2ZW4sIHRoZSBjb21tYW5kcyBhcmUgbGlzdGVkIG9u IHN0YW5kYXJkIG91dHB1dC4gIFRoZSBAb3B0aW9uey1ufSBmbGFnCistc3VwcHJlc3NlcyB0aGUg Y29tbWFuZCBudW1iZXJzIHdoZW4gbGlzdGluZy4gIFRoZSBAb3B0aW9uey1yfSBmbGFnCistcmV2 ZXJzZXMgdGhlIG9yZGVyIG9mIHRoZSBsaXN0aW5nLiAgT3RoZXJ3aXNlLCB0aGUgZWRpdG9yIGdp dmVuIGJ5CistQHZhcntlbmFtZX0gaXMgaW52b2tlZCBvbiBhIGZpbGUgY29udGFpbmluZyB0aG9z ZSBjb21tYW5kcy4gIElmCistQHZhcntlbmFtZX0gaXMgbm90IGdpdmVuLCB0aGUgdmFsdWUgb2Yg dGhlIGZvbGxvd2luZyB2YXJpYWJsZSBleHBhbnNpb24KKy1pcyB1c2VkOiBAY29kZXskQHtGQ0VE SVQ6LSRAe0VESVRPUjotdmlAfUB9fS4gIFRoaXMgc2F5cyB0byB1c2UgdGhlCistdmFsdWUgb2Yg dGhlIEBlbnZ7RkNFRElUfSB2YXJpYWJsZSBpZiBzZXQsIG9yIHRoZSB2YWx1ZSBvZiB0aGUKKy1A ZW52e0VESVRPUn0gdmFyaWFibGUgaWYgdGhhdCBpcyBzZXQsIG9yIEBjb2Rle3ZpfSBpZiBuZWl0 aGVyIGlzIHNldC4KKy1XaGVuIGVkaXRpbmcgaXMgY29tcGxldGUsIHRoZSBlZGl0ZWQgY29tbWFu ZHMgYXJlIGVjaG9lZCBhbmQgZXhlY3V0ZWQuCistCistSW4gdGhlIHNlY29uZCBmb3JtLCBAdmFy e2NvbW1hbmR9IGlzIHJlLWV4ZWN1dGVkIGFmdGVyIGVhY2ggaW5zdGFuY2UKKy1vZiBAdmFye3Bh dH0gaW4gdGhlIHNlbGVjdGVkIGNvbW1hbmQgaXMgcmVwbGFjZWQgYnkgQHZhcntyZXB9LgorLQor LUEgdXNlZnVsIGFsaWFzIHRvIHVzZSB3aXRoIHRoZSBAY29kZXtmY30gY29tbWFuZCBpcyBAY29k ZXtyPSdmYyAtcyd9LCBzbworLXRoYXQgdHlwaW5nIEBzYW1we3IgY2N9IHJ1bnMgdGhlIGxhc3Qg Y29tbWFuZCBiZWdpbm5pbmcgd2l0aCBAY29kZXtjY30KKy1hbmQgdHlwaW5nIEBzYW1we3J9IHJl LWV4ZWN1dGVzIHRoZSBsYXN0IGNvbW1hbmQgKEBweHJlZntBbGlhc2VzfSkuCistCistQGl0ZW0g aGlzdG9yeQorLUBidGluZGV4IGhpc3RvcnkKKy1AZXhhbXBsZQorLWhpc3RvcnkgW0B2YXJ7bn1d CistaGlzdG9yeSAtYworLWhpc3RvcnkgLWQgQHZhcntvZmZzZXR9CistaGlzdG9yeSBbLWFucndd IFtAdmFye2ZpbGVuYW1lfV0KKy1oaXN0b3J5IC1wcyBAdmFye2FyZ30KKy1AZW5kIGV4YW1wbGUK Ky0KKy1XaXRoIG5vIG9wdGlvbnMsIGRpc3BsYXkgdGhlIGhpc3RvcnkgbGlzdCB3aXRoIGxpbmUg bnVtYmVycy4KKy1MaW5lcyBwcmVmaXhlZCB3aXRoIGEgQHNhbXB7Kn0gaGF2ZSBiZWVuIG1vZGlm aWVkLgorLUFuIGFyZ3VtZW50IG9mIEB2YXJ7bn0gbGlzdHMgb25seSB0aGUgbGFzdCBAdmFye259 IGxpbmVzLgorLUlmIHRoZSBzaGVsbCB2YXJpYWJsZSBAZW52e0hJU1RUSU1FRk9STUFUfSBpcyBz ZXQgYW5kIG5vdCBudWxsLAorLWl0IGlzIHVzZWQgYXMgYSBmb3JtYXQgc3RyaW5nIGZvciBAdmFy e3N0cmZ0aW1lfSB0byBkaXNwbGF5CistdGhlIHRpbWUgc3RhbXAgYXNzb2NpYXRlZCB3aXRoIGVh Y2ggZGlzcGxheWVkIGhpc3RvcnkgZW50cnkuCistTm8gaW50ZXJ2ZW5pbmcgYmxhbmsgaXMgcHJp bnRlZCBiZXR3ZWVuIHRoZSBmb3JtYXR0ZWQgdGltZSBzdGFtcAorLWFuZCB0aGUgaGlzdG9yeSBs aW5lLgorLQorLU9wdGlvbnMsIGlmIHN1cHBsaWVkLCBoYXZlIHRoZSBmb2xsb3dpbmcgbWVhbmlu Z3M6CistCistQHRhYmxlIEBjb2RlCistQGl0ZW0gLWMKKy1DbGVhciB0aGUgaGlzdG9yeSBsaXN0 LiAgVGhpcyBtYXkgYmUgY29tYmluZWQKKy13aXRoIHRoZSBvdGhlciBvcHRpb25zIHRvIHJlcGxh Y2UgdGhlIGhpc3RvcnkgbGlzdCBjb21wbGV0ZWx5LgorLQorLUBpdGVtIC1kIEB2YXJ7b2Zmc2V0 fQorLURlbGV0ZSB0aGUgaGlzdG9yeSBlbnRyeSBhdCBwb3NpdGlvbiBAdmFye29mZnNldH0uCist QHZhcntvZmZzZXR9IHNob3VsZCBiZSBzcGVjaWZpZWQgYXMgaXQgYXBwZWFycyB3aGVuIHRoZSBo aXN0b3J5IGlzCistZGlzcGxheWVkLgorLQorLUBpdGVtIC1hCistQXBwZW5kIHRoZSBuZXcKKy1o aXN0b3J5IGxpbmVzIChoaXN0b3J5IGxpbmVzIGVudGVyZWQgc2luY2UgdGhlIGJlZ2lubmluZyBv ZiB0aGUKKy1jdXJyZW50IEJhc2ggc2Vzc2lvbikgdG8gdGhlIGhpc3RvcnkgZmlsZS4KKy0KKy1A aXRlbSAtbgorLUFwcGVuZCB0aGUgaGlzdG9yeSBsaW5lcyBub3QgYWxyZWFkeSByZWFkIGZyb20g dGhlIGhpc3RvcnkgZmlsZQorLXRvIHRoZSBjdXJyZW50IGhpc3RvcnkgbGlzdC4gIFRoZXNlIGFy ZSBsaW5lcyBhcHBlbmRlZCB0byB0aGUgaGlzdG9yeQorLWZpbGUgc2luY2UgdGhlIGJlZ2lubmlu ZyBvZiB0aGUgY3VycmVudCBCYXNoIHNlc3Npb24uCistCistQGl0ZW0gLXIKKy1SZWFkIHRoZSBj dXJyZW50IGhpc3RvcnkgZmlsZSBhbmQgYXBwZW5kIGl0cyBjb250ZW50cyB0bworLXRoZSBoaXN0 b3J5IGxpc3QuCistCistQGl0ZW0gLXcKKy1Xcml0ZSBvdXQgdGhlIGN1cnJlbnQgaGlzdG9yeSB0 byB0aGUgaGlzdG9yeSBmaWxlLgorLQorLUBpdGVtIC1wCistUGVyZm9ybSBoaXN0b3J5IHN1YnN0 aXR1dGlvbiBvbiB0aGUgQHZhcnthcmd9cyBhbmQgZGlzcGxheSB0aGUgcmVzdWx0Cistb24gdGhl IHN0YW5kYXJkIG91dHB1dCwgd2l0aG91dCBzdG9yaW5nIHRoZSByZXN1bHRzIGluIHRoZSBoaXN0 b3J5IGxpc3QuCistCistQGl0ZW0gLXMKKy1UaGUgQHZhcnthcmd9cyBhcmUgYWRkZWQgdG8gdGhl IGVuZCBvZgorLXRoZSBoaXN0b3J5IGxpc3QgYXMgYSBzaW5nbGUgZW50cnkuCistCistQGVuZCB0 YWJsZQorLQorLVdoZW4gYW55IG9mIHRoZSBAb3B0aW9uey13fSwgQG9wdGlvbnstcn0sIEBvcHRp b257LWF9LCBvciBAb3B0aW9uey1ufSBvcHRpb25zIGlzCistdXNlZCwgaWYgQHZhcntmaWxlbmFt ZX0KKy1pcyBnaXZlbiwgdGhlbiBpdCBpcyB1c2VkIGFzIHRoZSBoaXN0b3J5IGZpbGUuICBJZiBu b3QsIHRoZW4KKy10aGUgdmFsdWUgb2YgdGhlIEBlbnZ7SElTVEZJTEV9IHZhcmlhYmxlIGlzIHVz ZWQuCistCistQGVuZCB0YWJsZQorLUBlbmQgaWZzZXQKKy0KKy1Abm9kZSBIaXN0b3J5IEludGVy YWN0aW9uCistQHNlY3Rpb24gSGlzdG9yeSBFeHBhbnNpb24KKy1AY2luZGV4IGhpc3RvcnkgZXhw YW5zaW9uCistCistVGhlIEhpc3RvcnkgbGlicmFyeSBwcm92aWRlcyBhIGhpc3RvcnkgZXhwYW5z aW9uIGZlYXR1cmUgdGhhdCBpcyBzaW1pbGFyCistdG8gdGhlIGhpc3RvcnkgZXhwYW5zaW9uIHBy b3ZpZGVkIGJ5IEBjb2Rle2NzaH0uICBUaGlzIHNlY3Rpb24KKy1kZXNjcmliZXMgdGhlIHN5bnRh eCB1c2VkIHRvIG1hbmlwdWxhdGUgdGhlIGhpc3RvcnkgaW5mb3JtYXRpb24uCistCistSGlzdG9y eSBleHBhbnNpb25zIGludHJvZHVjZSB3b3JkcyBmcm9tIHRoZSBoaXN0b3J5IGxpc3QgaW50bwor LXRoZSBpbnB1dCBzdHJlYW0sIG1ha2luZyBpdCBlYXN5IHRvIHJlcGVhdCBjb21tYW5kcywgaW5z ZXJ0IHRoZQorLWFyZ3VtZW50cyB0byBhIHByZXZpb3VzIGNvbW1hbmQgaW50byB0aGUgY3VycmVu dCBpbnB1dCBsaW5lLCBvcgorLWZpeCBlcnJvcnMgaW4gcHJldmlvdXMgY29tbWFuZHMgcXVpY2ts eS4KKy0KKy1IaXN0b3J5IGV4cGFuc2lvbiB0YWtlcyBwbGFjZSBpbiB0d28gcGFydHMuICBUaGUg Zmlyc3QgaXMgdG8gZGV0ZXJtaW5lCistd2hpY2ggbGluZSBmcm9tIHRoZSBoaXN0b3J5IGxpc3Qg c2hvdWxkIGJlIHVzZWQgZHVyaW5nIHN1YnN0aXR1dGlvbi4KKy1UaGUgc2Vjb25kIGlzIHRvIHNl bGVjdCBwb3J0aW9ucyBvZiB0aGF0IGxpbmUgZm9yIGluY2x1c2lvbiBpbnRvIHRoZQorLWN1cnJl bnQgb25lLiAgVGhlIGxpbmUgc2VsZWN0ZWQgZnJvbSB0aGUgaGlzdG9yeSBpcyBjYWxsZWQgdGhl CistQGRmbntldmVudH0sIGFuZCB0aGUgcG9ydGlvbnMgb2YgdGhhdCBsaW5lIHRoYXQgYXJlIGFj dGVkIHVwb24gYXJlCistY2FsbGVkIEBkZm57d29yZHN9LiAgVmFyaW91cyBAZGZue21vZGlmaWVy c30gYXJlIGF2YWlsYWJsZSB0byBtYW5pcHVsYXRlCistdGhlIHNlbGVjdGVkIHdvcmRzLiAgVGhl IGxpbmUgaXMgYnJva2VuIGludG8gd29yZHMgaW4gdGhlIHNhbWUgZmFzaGlvbgorLXRoYXQgQmFz aCBkb2VzLCBzbyB0aGF0IHNldmVyYWwgd29yZHMKKy1zdXJyb3VuZGVkIGJ5IHF1b3RlcyBhcmUg Y29uc2lkZXJlZCBvbmUgd29yZC4KKy1IaXN0b3J5IGV4cGFuc2lvbnMgYXJlIGludHJvZHVjZWQg YnkgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlCistaGlzdG9yeSBleHBhbnNpb24gY2hhcmFjdGVyLCB3 aGljaCBpcyBAc2FtcHshfSBieSBkZWZhdWx0LgorLUBpZnNldCBCYXNoRmVhdHVyZXMKKy1Pbmx5 IEBzYW1we1x9IGFuZCBAc2FtcHsnfSBtYXkgYmUgdXNlZCB0byBlc2NhcGUgdGhlIGhpc3Rvcnkg ZXhwYW5zaW9uCistY2hhcmFjdGVyLgorLUBlbmQgaWZzZXQKKy0KKy1AaWZzZXQgQmFzaEZlYXR1 cmVzCistU2V2ZXJhbCBzaGVsbCBvcHRpb25zIHNldHRhYmxlIHdpdGggdGhlIEBjb2Rle3Nob3B0 fQorLWJ1aWx0aW4gKEBweHJlZntCYXNoIEJ1aWx0aW5zfSkgbWF5IGJlIHVzZWQgdG8gdGFpbG9y CistdGhlIGJlaGF2aW9yIG9mIGhpc3RvcnkgZXhwYW5zaW9uLiAgSWYgdGhlCistQGNvZGV7aGlz dHZlcmlmeX0gc2hlbGwgb3B0aW9uIGlzIGVuYWJsZWQsIGFuZCBSZWFkbGluZQorLWlzIGJlaW5n IHVzZWQsIGhpc3Rvcnkgc3Vic3RpdHV0aW9ucyBhcmUgbm90IGltbWVkaWF0ZWx5IHBhc3NlZCB0 bworLXRoZSBzaGVsbCBwYXJzZXIuCistSW5zdGVhZCwgdGhlIGV4cGFuZGVkIGxpbmUgaXMgcmVs b2FkZWQgaW50byB0aGUgUmVhZGxpbmUKKy1lZGl0aW5nIGJ1ZmZlciBmb3IgZnVydGhlciBtb2Rp ZmljYXRpb24uCistSWYgUmVhZGxpbmUgaXMgYmVpbmcgdXNlZCwgYW5kIHRoZSBAY29kZXtoaXN0 cmVlZGl0fQorLXNoZWxsIG9wdGlvbiBpcyBlbmFibGVkLCBhIGZhaWxlZCBoaXN0b3J5IGV4cGFu c2lvbiB3aWxsIGJlCistcmVsb2FkZWQgaW50byB0aGUgUmVhZGxpbmUgZWRpdGluZyBidWZmZXIg Zm9yIGNvcnJlY3Rpb24uCistVGhlIEBvcHRpb257LXB9IG9wdGlvbiB0byB0aGUgQGNvZGV7aGlz dG9yeX0gYnVpbHRpbiBjb21tYW5kCistbWF5IGJlIHVzZWQgdG8gc2VlIHdoYXQgYSBoaXN0b3J5 IGV4cGFuc2lvbiB3aWxsIGRvIGJlZm9yZSB1c2luZyBpdC4KKy1UaGUgQG9wdGlvbnstc30gb3B0 aW9uIHRvIHRoZSBAY29kZXtoaXN0b3J5fSBidWlsdGluIG1heSBiZSB1c2VkIHRvCistYWRkIGNv bW1hbmRzIHRvIHRoZSBlbmQgb2YgdGhlIGhpc3RvcnkgbGlzdCB3aXRob3V0IGFjdHVhbGx5IGV4 ZWN1dGluZworLXRoZW0sIHNvIHRoYXQgdGhleSBhcmUgYXZhaWxhYmxlIGZvciBzdWJzZXF1ZW50 IHJlY2FsbC4KKy1UaGlzIGlzIG1vc3QgdXNlZnVsIGluIGNvbmp1bmN0aW9uIHdpdGggUmVhZGxp bmUuCistCistVGhlIHNoZWxsIGFsbG93cyBjb250cm9sIG9mIHRoZSB2YXJpb3VzIGNoYXJhY3Rl cnMgdXNlZCBieSB0aGUKKy1oaXN0b3J5IGV4cGFuc2lvbiBtZWNoYW5pc20gd2l0aCB0aGUgQGNv ZGV7aGlzdGNoYXJzfSB2YXJpYWJsZS4KKy1AZW5kIGlmc2V0CistCistQG1lbnUKKy0qIEV2ZW50 IERlc2lnbmF0b3JzOjoJSG93IHRvIHNwZWNpZnkgd2hpY2ggaGlzdG9yeSBsaW5lIHRvIHVzZS4K Ky0qIFdvcmQgRGVzaWduYXRvcnM6OglTcGVjaWZ5aW5nIHdoaWNoIHdvcmRzIGFyZSBvZiBpbnRl cmVzdC4KKy0qIE1vZGlmaWVyczo6CQlNb2RpZnlpbmcgdGhlIHJlc3VsdHMgb2Ygc3Vic3RpdHV0 aW9uLgorLUBlbmQgbWVudQorLQorLUBub2RlIEV2ZW50IERlc2lnbmF0b3JzCistQHN1YnNlY3Rp b24gRXZlbnQgRGVzaWduYXRvcnMKKy1AY2luZGV4IGV2ZW50IGRlc2lnbmF0b3JzCistCistQW4g ZXZlbnQgZGVzaWduYXRvciBpcyBhIHJlZmVyZW5jZSB0byBhIGNvbW1hbmQgbGluZSBlbnRyeSBp biB0aGUKKy1oaXN0b3J5IGxpc3QuCistQGNpbmRleCBoaXN0b3J5IGV2ZW50cworLQorLUB0YWJs ZSBAYXNpcworLQorLUBpdGVtIEBjb2RleyF9CistQGlmc2V0IEJhc2hGZWF0dXJlcworLVN0YXJ0 IGEgaGlzdG9yeSBzdWJzdGl0dXRpb24sIGV4Y2VwdCB3aGVuIGZvbGxvd2VkIGJ5IGEgc3BhY2Us IHRhYiwKKy10aGUgZW5kIG9mIHRoZSBsaW5lLCBAc2FtcHs9fSBvciBAc2FtcHsofSAod2hlbiB0 aGUKKy1AY29kZXtleHRnbG9ifSBzaGVsbCBvcHRpb24gaXMgZW5hYmxlZCB1c2luZyB0aGUgQGNv ZGV7c2hvcHR9IGJ1aWx0aW4pLgorLUBlbmQgaWZzZXQKKy1AaWZjbGVhciBCYXNoRmVhdHVyZXMK Ky1TdGFydCBhIGhpc3Rvcnkgc3Vic3RpdHV0aW9uLCBleGNlcHQgd2hlbiBmb2xsb3dlZCBieSBh IHNwYWNlLCB0YWIsCistdGhlIGVuZCBvZiB0aGUgbGluZSwgb3IgQHNhbXB7PX0uCistQGVuZCBp ZmNsZWFyCistCistQGl0ZW0gQGNvZGV7IUB2YXJ7bn19CistUmVmZXIgdG8gY29tbWFuZCBsaW5l IEB2YXJ7bn0uCistCistQGl0ZW0gQGNvZGV7IS1AdmFye259fQorLVJlZmVyIHRvIHRoZSBjb21t YW5kIEB2YXJ7bn0gbGluZXMgYmFjay4KKy0KKy1AaXRlbSBAY29kZXshIX0KKy1SZWZlciB0byB0 aGUgcHJldmlvdXMgY29tbWFuZC4gIFRoaXMgaXMgYSBzeW5vbnltIGZvciBAc2FtcHshLTF9Lgor LQorLUBpdGVtIEBjb2RleyFAdmFye3N0cmluZ319CistUmVmZXIgdG8gdGhlIG1vc3QgcmVjZW50 IGNvbW1hbmQgc3RhcnRpbmcgd2l0aCBAdmFye3N0cmluZ30uCistCistQGl0ZW0gQGNvZGV7IT9A dmFye3N0cmluZ31bP119CistUmVmZXIgdG8gdGhlIG1vc3QgcmVjZW50IGNvbW1hbmQgY29udGFp bmluZyBAdmFye3N0cmluZ30uICBUaGUgdHJhaWxpbmcKKy1Ac2FtcHs/fSBtYXkgYmUgb21pdHRl ZCBpZiB0aGUgQHZhcntzdHJpbmd9IGlzIGZvbGxvd2VkIGltbWVkaWF0ZWx5IGJ5CistYSBuZXds aW5lLgorLQorLUBpdGVtIEBjb2Rle15AdmFye3N0cmluZzF9XkB2YXJ7c3RyaW5nMn1efQorLVF1 aWNrIFN1YnN0aXR1dGlvbi4gIFJlcGVhdCB0aGUgbGFzdCBjb21tYW5kLCByZXBsYWNpbmcgQHZh cntzdHJpbmcxfQorLXdpdGggQHZhcntzdHJpbmcyfS4gIEVxdWl2YWxlbnQgdG8KKy1AY29kZXsh ITpzL0B2YXJ7c3RyaW5nMX0vQHZhcntzdHJpbmcyfS99LgorLQorLUBpdGVtIEBjb2RleyEjfQor LVRoZSBlbnRpcmUgY29tbWFuZCBsaW5lIHR5cGVkIHNvIGZhci4KKy0KKy1AZW5kIHRhYmxlCist CistQG5vZGUgV29yZCBEZXNpZ25hdG9ycworLUBzdWJzZWN0aW9uIFdvcmQgRGVzaWduYXRvcnMK Ky0KKy1Xb3JkIGRlc2lnbmF0b3JzIGFyZSB1c2VkIHRvIHNlbGVjdCBkZXNpcmVkIHdvcmRzIGZy b20gdGhlIGV2ZW50LgorLUEgQHNhbXB7On0gc2VwYXJhdGVzIHRoZSBldmVudCBzcGVjaWZpY2F0 aW9uIGZyb20gdGhlIHdvcmQgZGVzaWduYXRvci4gIEl0CistbWF5IGJlIG9taXR0ZWQgaWYgdGhl IHdvcmQgZGVzaWduYXRvciBiZWdpbnMgd2l0aCBhIEBzYW1we159LCBAc2FtcHskfSwKKy1Ac2Ft cHsqfSwgQHNhbXB7LX0sIG9yIEBzYW1weyV9LiAgV29yZHMgYXJlIG51bWJlcmVkIGZyb20gdGhl IGJlZ2lubmluZworLW9mIHRoZSBsaW5lLCB3aXRoIHRoZSBmaXJzdCB3b3JkIGJlaW5nIGRlbm90 ZWQgYnkgMCAoemVybykuICBXb3JkcyBhcmUKKy1pbnNlcnRlZCBpbnRvIHRoZSBjdXJyZW50IGxp bmUgc2VwYXJhdGVkIGJ5IHNpbmdsZSBzcGFjZXMuCistCistQG5lZWQgMC43NQorLUZvciBleGFt cGxlLAorLQorLUB0YWJsZSBAY29kZQorLUBpdGVtICEhCistZGVzaWduYXRlcyB0aGUgcHJlY2Vk aW5nIGNvbW1hbmQuICBXaGVuIHlvdSB0eXBlIHRoaXMsIHRoZSBwcmVjZWRpbmcKKy1jb21tYW5k IGlzIHJlcGVhdGVkIGluIHRvdG8uCistCistQGl0ZW0gISE6JAorLWRlc2lnbmF0ZXMgdGhlIGxh c3QgYXJndW1lbnQgb2YgdGhlIHByZWNlZGluZyBjb21tYW5kLiAgVGhpcyBtYXkgYmUKKy1zaG9y dGVuZWQgdG8gQGNvZGV7ISR9LgorLQorLUBpdGVtICFmaToyCistZGVzaWduYXRlcyB0aGUgc2Vj b25kIGFyZ3VtZW50IG9mIHRoZSBtb3N0IHJlY2VudCBjb21tYW5kIHN0YXJ0aW5nIHdpdGgKKy10 aGUgbGV0dGVycyBAY29kZXtmaX0uCistQGVuZCB0YWJsZQorLQorLUBuZWVkIDAuNzUKKy1IZXJl IGFyZSB0aGUgd29yZCBkZXNpZ25hdG9yczoKKy0gCistQHRhYmxlIEBjb2RlCistCistQGl0ZW0g MCAoemVybykKKy1UaGUgQGNvZGV7MH10aCB3b3JkLiAgRm9yIG1hbnkgYXBwbGljYXRpb25zLCB0 aGlzIGlzIHRoZSBjb21tYW5kIHdvcmQuCistCistQGl0ZW0gQHZhcntufQorLVRoZSBAdmFye259 dGggd29yZC4KKy0KKy1AaXRlbSBeCistVGhlIGZpcnN0IGFyZ3VtZW50OyB0aGF0IGlzLCB3b3Jk IDEuCistCistQGl0ZW0gJAorLVRoZSBsYXN0IGFyZ3VtZW50LgorLQorLUBpdGVtICUKKy1UaGUg d29yZCBtYXRjaGVkIGJ5IHRoZSBtb3N0IHJlY2VudCBAc2FtcHs/QHZhcntzdHJpbmd9P30gc2Vh cmNoLgorLQorLUBpdGVtIEB2YXJ7eH0tQHZhcnt5fQorLUEgcmFuZ2Ugb2Ygd29yZHM7IEBzYW1w ey1AdmFye3l9fSBhYmJyZXZpYXRlcyBAc2FtcHswLUB2YXJ7eX19LgorLQorLUBpdGVtICoKKy1B bGwgb2YgdGhlIHdvcmRzLCBleGNlcHQgdGhlIEBjb2RlezB9dGguICBUaGlzIGlzIGEgc3lub255 bSBmb3IgQHNhbXB7MS0kfS4KKy1JdCBpcyBub3QgYW4gZXJyb3IgdG8gdXNlIEBzYW1weyp9IGlm IHRoZXJlIGlzIGp1c3Qgb25lIHdvcmQgaW4gdGhlIGV2ZW50OworLXRoZSBlbXB0eSBzdHJpbmcg aXMgcmV0dXJuZWQgaW4gdGhhdCBjYXNlLgorLQorLUBpdGVtIEB2YXJ7eH0qCistQWJicmV2aWF0 ZXMgQHNhbXB7QHZhcnt4fS0kfQorLQorLUBpdGVtIEB2YXJ7eH0tCistQWJicmV2aWF0ZXMgQHNh bXB7QHZhcnt4fS0kfSBsaWtlIEBzYW1we0B2YXJ7eH0qfSwgYnV0IG9taXRzIHRoZSBsYXN0IHdv cmQuCistCistQGVuZCB0YWJsZQorLQorLUlmIGEgd29yZCBkZXNpZ25hdG9yIGlzIHN1cHBsaWVk IHdpdGhvdXQgYW4gZXZlbnQgc3BlY2lmaWNhdGlvbiwgdGhlCistcHJldmlvdXMgY29tbWFuZCBp cyB1c2VkIGFzIHRoZSBldmVudC4KKy0KKy1Abm9kZSBNb2RpZmllcnMKKy1Ac3Vic2VjdGlvbiBN b2RpZmllcnMKKy0KKy1BZnRlciB0aGUgb3B0aW9uYWwgd29yZCBkZXNpZ25hdG9yLCB5b3UgY2Fu IGFkZCBhIHNlcXVlbmNlIG9mIG9uZSBvciBtb3JlCistb2YgdGhlIGZvbGxvd2luZyBtb2RpZmll cnMsIGVhY2ggcHJlY2VkZWQgYnkgYSBAc2FtcHs6fS4KKy0KKy1AdGFibGUgQGNvZGUKKy0KKy1A aXRlbSBoCistUmVtb3ZlIGEgdHJhaWxpbmcgcGF0aG5hbWUgY29tcG9uZW50LCBsZWF2aW5nIG9u bHkgdGhlIGhlYWQuCistCistQGl0ZW0gdAorLVJlbW92ZSBhbGwgbGVhZGluZyAgcGF0aG5hbWUg IGNvbXBvbmVudHMsIGxlYXZpbmcgdGhlIHRhaWwuCistCistQGl0ZW0gcgorLVJlbW92ZSBhIHRy YWlsaW5nIHN1ZmZpeCBvZiB0aGUgZm9ybSBAc2FtcHsuQHZhcntzdWZmaXh9fSwgbGVhdmluZwor LXRoZSBiYXNlbmFtZS4KKy0KKy1AaXRlbSBlCistUmVtb3ZlIGFsbCBidXQgdGhlIHRyYWlsaW5n IHN1ZmZpeC4KKy0KKy1AaXRlbSBwCistUHJpbnQgdGhlIG5ldyBjb21tYW5kIGJ1dCBkbyBub3Qg ZXhlY3V0ZSBpdC4KKy0KKy1AaWZzZXQgQmFzaEZlYXR1cmVzCistQGl0ZW0gcQorLVF1b3RlIHRo ZSBzdWJzdGl0dXRlZCB3b3JkcywgZXNjYXBpbmcgZnVydGhlciBzdWJzdGl0dXRpb25zLgorLQor LUBpdGVtIHgKKy1RdW90ZSB0aGUgc3Vic3RpdHV0ZWQgd29yZHMgYXMgd2l0aCBAc2FtcHtxfSwK Ky1idXQgYnJlYWsgaW50byB3b3JkcyBhdCBzcGFjZXMsIHRhYnMsIGFuZCBuZXdsaW5lcy4KKy1A ZW5kIGlmc2V0CistCistQGl0ZW0gcy9AdmFye29sZH0vQHZhcntuZXd9LworLVN1YnN0aXR1dGUg QHZhcntuZXd9IGZvciB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBAdmFye29sZH0gaW4gdGhlCist ZXZlbnQgbGluZS4gIEFueSBkZWxpbWl0ZXIgbWF5IGJlIHVzZWQgaW4gcGxhY2Ugb2YgQHNhbXB7 L30uCistVGhlIGRlbGltaXRlciBtYXkgYmUgcXVvdGVkIGluIEB2YXJ7b2xkfSBhbmQgQHZhcntu ZXd9Cistd2l0aCBhIHNpbmdsZSBiYWNrc2xhc2guICBJZiBAc2FtcHsmfSBhcHBlYXJzIGluIEB2 YXJ7bmV3fSwKKy1pdCBpcyByZXBsYWNlZCBieSBAdmFye29sZH0uICBBIHNpbmdsZSBiYWNrc2xh c2ggd2lsbCBxdW90ZQorLXRoZSBAc2FtcHsmfS4gIFRoZSBmaW5hbCBkZWxpbWl0ZXIgaXMgb3B0 aW9uYWwgaWYgaXQgaXMgdGhlIGxhc3QKKy1jaGFyYWN0ZXIgb24gdGhlIGlucHV0IGxpbmUuCist CistQGl0ZW0gJgorLVJlcGVhdCB0aGUgcHJldmlvdXMgc3Vic3RpdHV0aW9uLgorLQorLUBpdGVt IGcKKy1AaXRlbXggYQorLUNhdXNlIGNoYW5nZXMgdG8gYmUgYXBwbGllZCBvdmVyIHRoZSBlbnRp cmUgZXZlbnQgbGluZS4gIFVzZWQgaW4KKy1jb25qdW5jdGlvbiB3aXRoIEBzYW1we3N9LCBhcyBp biBAY29kZXtncy9AdmFye29sZH0vQHZhcntuZXd9L30sCistb3Igd2l0aCBAc2FtcHsmfS4KKy0K Ky1AaXRlbSBHCistQXBwbHkgdGhlIGZvbGxvd2luZyBAc2FtcHtzfSBtb2RpZmllciBvbmNlIHRv IGVhY2ggd29yZCBpbiB0aGUgZXZlbnQuCistCistQGVuZCB0YWJsZQorLS0tIGEvcmVhZGxpbmUv ZG9jL3JlYWRsaW5lLjMKKysrKyBiL3JlYWRsaW5lL2RvYy9yZWFkbGluZS4zCitAQCAtNiw5ICs2 LDkgQEAKKyAuXCIJQ2FzZSBXZXN0ZXJuIFJlc2VydmUgVW5pdmVyc2l0eQorIC5cIgljaGV0QGlu cy5DV1JVLkVkdQorIC5cIgorLS5cIglMYXN0IENoYW5nZTogVHVlIFNlcCAxMyAxMjowNzoyNiBF RFQgMjAwNQorKy5cIglMYXN0IENoYW5nZTogU2F0IEF1ZyAyOCAxODo1NjozMiBFRFQgMjAxMAor IC5cIgorLS5USCBSRUFETElORSAzICIyMDA1IFNlcCAxMyIgIkdOVSBSZWFkbGluZSA1LjEtYmV0 YTEiCisrLlRIIFJFQURMSU5FIDMgIjIwMTAgQXVndXN0IDI4IiAiR05VIFJlYWRsaW5lIDYuMiIK KyAuXCIKKyAuXCIgRmlsZSBOYW1lIG1hY3JvLiAgVGhpcyB1c2VkIHRvIGJlIGAuUE4nLCBmb3Ig UGF0aCBOYW1lLAorIC5cIiBidXQgU3VuIGRvZXNuJ3Qgc2VlbSB0byBsaWtlIHRoYXQgdmVyeSBt dWNoLgorQEAgLTM0LDggKzM0LDggQEAgcmVhZGxpbmUgXC0gZ2V0IGEgbGluZSBmcm9tIGEgdXNl ciB3aXRoIGVkaXRpbmcKKyBcZkJyZWFkbGluZVxmUCAoXGZJY29uc3QgY2hhciAqcHJvbXB0XGZQ KTsKKyAuZmkKKyAuU0ggQ09QWVJJR0hUCistLmlmIG4gUmVhZGxpbmUgaXMgQ29weXJpZ2h0IChD KSAxOTg5XC0yMDA0IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0uaWYg dCBSZWFkbGluZSBpcyBDb3B5cmlnaHQgXChjbyAxOTg5XC0yMDA0IGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKysuaWYgbiBSZWFkbGluZSBpcyBDb3B5cmlnaHQgKEMpIDE5 ODlcLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCAgSW5jLgorKy5pZiB0IFJlYWRsaW5l IGlzIENvcHlyaWdodCBcKGNvIDE5ODlcLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisgLlNIIERFU0NSSVBUSU9OCisgLkxQCisgLkIgcmVhZGxpbmUKK0BAIC03Niw3ICs3Niw3 IEBAIGlzIHJlYWQgd2l0aCBhIG5vblwtZW1wdHkgbGluZSwgaXQgaXMKKyB0cmVhdGVkIGFzIGEg bmV3bGluZS4KKyAuU0ggTk9UQVRJT04KKyAuTFAKKy1BbiBlbWFjcy1zdHlsZSBub3RhdGlvbiBp cyB1c2VkIHRvIGRlbm90ZQorK0FuIEVtYWNzLXN0eWxlIG5vdGF0aW9uIGlzIHVzZWQgdG8gZGVu b3RlCisga2V5c3Ryb2tlcy4gIENvbnRyb2wga2V5cyBhcmUgZGVub3RlZCBieSBDXC1cZklrZXlc ZlIsIGUuZy4sIENcLW4KKyBtZWFucyBDb250cm9sXC1OLiAgU2ltaWxhcmx5LCAKKyAuSSBtZXRh CitAQCAtMTE2LDYgKzExNiw4IEBAIFRoZSBuYW1lIG9mIHRoaXMgZmlsZSBpcyB0YWtlbiBmcm9t IHRoZSB2YWx1ZSBvZiB0aGUKKyAuQiBJTlBVVFJDCisgZW52aXJvbm1lbnQgdmFyaWFibGUuICBJ ZiB0aGF0IHZhcmlhYmxlIGlzIHVuc2V0LCB0aGUgZGVmYXVsdCBpcworIC5JUiB+Ly5pbnB1dHJj IC4KKytJZiB0aGF0IGZpbGUgIGRvZXMgbm90IGV4aXN0IG9yIGNhbm5vdCBiZSByZWFkLCB0aGUg dWx0aW1hdGUgZGVmYXVsdCBpcworKy5JUiAvZXRjL2lucHV0cmMgLgorIFdoZW4gYSBwcm9ncmFt IHdoaWNoIHVzZXMgdGhlIHJlYWRsaW5lIGxpYnJhcnkgc3RhcnRzIHVwLCB0aGUKKyBpbml0IGZp bGUgaXMgcmVhZCwgYW5kIHRoZSBrZXkgYmluZGluZ3MgYW5kIHZhcmlhYmxlcyBhcmUgc2V0Lgor IFRoZXJlIGFyZSBvbmx5IGEgZmV3IGJhc2ljIGNvbnN0cnVjdHMgYWxsb3dlZCBpbiB0aGUKK0BA IC0xNjgsNiArMTcwLDggQEAgY29tbWFuZCBvciB0aGUgdGV4dCBvZiBhIG1hY3JvIGFuZCBhIGtl eSBzZXF1ZW5jZSB0byB3aGljaAorIGl0IHNob3VsZCBiZSBib3VuZC4gVGhlIG5hbWUgbWF5IGJl IHNwZWNpZmllZCBpbiBvbmUgb2YgdHdvIHdheXM6CisgYXMgYSBzeW1ib2xpYyBrZXkgbmFtZSwg cG9zc2libHkgd2l0aCBcZklNZXRhXC1cZlAgb3IgXGZJQ29udHJvbFwtXGZQCisgcHJlZml4ZXMs IG9yIGFzIGEga2V5IHNlcXVlbmNlLgorK1RoZSBuYW1lIGFuZCBrZXkgc2VxdWVuY2UgYXJlIHNl cGFyYXRlZCBieSBhIGNvbG9uLiAgVGhlcmUgY2FuIGJlIG5vCisrd2hpdGVzcGFjZSBiZXR3ZWVu IHRoZSBuYW1lIGFuZCB0aGUgY29sb24uCisgLlBQCisgV2hlbiB1c2luZyB0aGUgZm9ybSBcZkJr ZXluYW1lXGZQOlxeXGZJZnVuY3Rpb24tbmFtZVxmUCBvciBcZkltYWNyb1xmUCwKKyAuSSBrZXlu YW1lCitAQCAtMzU2LDExICszNjAsMzAgQEAgVGhpcyBjb21tYW5kIGlzIGJvdW5kIHRvCisgaW4g ZW1hY3MgbW9kZSBhbmQgdG8KKyAuQiAjCisgaW4gdmkgY29tbWFuZCBtb2RlLgorKy5UUAorKy5C IGNvbXBsZXRpb25cLWRpc3BsYXlcLXdpZHRoICgtMSkKKytUaGUgbnVtYmVyIG9mIHNjcmVlbiBj b2x1bW5zIHVzZWQgdG8gZGlzcGxheSBwb3NzaWJsZSBtYXRjaGVzCisrd2hlbiBwZXJmb3JtaW5n IGNvbXBsZXRpb24uCisrVGhlIHZhbHVlIGlzIGlnbm9yZWQgaWYgaXQgaXMgbGVzcyB0aGFuIDAg b3IgZ3JlYXRlciB0aGFuIHRoZSB0ZXJtaW5hbAorK3NjcmVlbiB3aWR0aC4KKytBIHZhbHVlIG9m IDAgd2lsbCBjYXVzZSBtYXRjaGVzIHRvIGJlIGRpc3BsYXllZCBvbmUgcGVyIGxpbmUuCisrVGhl IGRlZmF1bHQgdmFsdWUgaXMgLTEuCisgLlRQIAorIC5CIGNvbXBsZXRpb25cLWlnbm9yZVwtY2Fz ZSAoT2ZmKQorIElmIHNldCB0byBcZkJPblxmUCwgcmVhZGxpbmUgcGVyZm9ybXMgZmlsZW5hbWUg bWF0Y2hpbmcgYW5kIGNvbXBsZXRpb24KKyBpbiBhIGNhc2VcLWluc2Vuc2l0aXZlIGZhc2hpb24u CisgLlRQCisrLkIgY29tcGxldGlvblwtbWFwXC1jYXNlIChPZmYpCisrSWYgc2V0IHRvIFxmQk9u XGZQLCBhbmQgXGZCY29tcGxldGlvblwtaWdub3JlXC1jYXNlXGZQIGlzIGVuYWJsZWQsIHJlYWRs aW5lCisrdHJlYXRzIGh5cGhlbnMgKFxmSVwtXGZQKSBhbmQgdW5kZXJzY29yZXMgKFxmSV9cZlAp IGFzIGVxdWl2YWxlbnQgd2hlbgorK3BlcmZvcm1pbmcgY2FzZVwtaW5zZW5zaXRpdmUgZmlsZW5h bWUgbWF0Y2hpbmcgYW5kIGNvbXBsZXRpb24uCisrLlRQCisrLkIgY29tcGxldGlvblwtcHJlZml4 XC1kaXNwbGF5XC1sZW5ndGggKDApCisrVGhlIGxlbmd0aCBpbiBjaGFyYWN0ZXJzIG9mIHRoZSBj b21tb24gcHJlZml4IG9mIGEgbGlzdCBvZiBwb3NzaWJsZQorK2NvbXBsZXRpb25zIHRoYXQgaXMg ZGlzcGxheWVkIHdpdGhvdXQgbW9kaWZpY2F0aW9uLiAgV2hlbiBzZXQgdG8gYQorK3ZhbHVlIGdy ZWF0ZXIgdGhhbiB6ZXJvLCBjb21tb24gcHJlZml4ZXMgbG9uZ2VyIHRoYW4gdGhpcyB2YWx1ZSBh cmUKKytyZXBsYWNlZCB3aXRoIGFuIGVsbGlwc2lzIHdoZW4gZGlzcGxheWluZyBwb3NzaWJsZSBj b21wbGV0aW9ucy4KKysuVFAKKyAuQiBjb21wbGV0aW9uXC1xdWVyeVwtaXRlbXMgKDEwMCkKKyBU aGlzIGRldGVybWluZXMgd2hlbiB0aGUgdXNlciBpcyBxdWVyaWVkIGFib3V0IHZpZXdpbmcKKyB0 aGUgbnVtYmVyIG9mIHBvc3NpYmxlIGNvbXBsZXRpb25zCitAQCAtMzg0LDI3ICs0MDcsNDEgQEAg bWFwcGVkIHRvIFxmQnNlbGYtaW5zZXJ0XGZQLgorIC5UUAorIC5CIGVkaXRpbmdcLW1vZGUgKGVt YWNzKQorIENvbnRyb2xzIHdoZXRoZXIgcmVhZGxpbmUgYmVnaW5zIHdpdGggYSBzZXQgb2Yga2V5 IGJpbmRpbmdzIHNpbWlsYXIKKy10byBlbWFjcyBvciB2aS4KKyt0byBcZklFbWFjc1xmUCBvciBc Zkl2aVxmUC4KKyAuQiBlZGl0aW5nXC1tb2RlCisgY2FuIGJlIHNldCB0byBlaXRoZXIKKyAuQiBl bWFjcworIG9yCisgLkJSIHZpIC4KKyAuVFAKKysuQiBlY2hvXC1jb250cm9sXC1jaGFyYWN0ZXJz IChPbikKKytXaGVuIHNldCB0byBcZkJPblxmUCwgb24gb3BlcmF0aW5nIHN5c3RlbXMgdGhhdCBp bmRpY2F0ZSB0aGV5IHN1cHBvcnQgaXQsCisrcmVhZGxpbmUgZWNob2VzIGEgY2hhcmFjdGVyIGNv cnJlc3BvbmRpbmcgdG8gYSBzaWduYWwgZ2VuZXJhdGVkIGZyb20gdGhlCisra2V5Ym9hcmQuCisr LlRQCisgLkIgZW5hYmxlXC1rZXlwYWQgKE9mZikKKyBXaGVuIHNldCB0byBcZkJPblxmUCwgcmVh ZGxpbmUgd2lsbCB0cnkgdG8gZW5hYmxlIHRoZSBhcHBsaWNhdGlvbgorIGtleXBhZCB3aGVuIGl0 IGlzIGNhbGxlZC4gIFNvbWUgc3lzdGVtcyBuZWVkIHRoaXMgdG8gZW5hYmxlIHRoZQorIGFycm93 IGtleXMuCisgLlRQCisrLkIgZW5hYmxlXC1tZXRhXC1rZXkgKE9uKQorK1doZW4gc2V0IHRvIFxm Qk9uXGZQLCByZWFkbGluZSB3aWxsIHRyeSB0byBlbmFibGUgYW55IG1ldGEgbW9kaWZpZXIKKytr ZXkgdGhlIHRlcm1pbmFsIGNsYWltcyB0byBzdXBwb3J0IHdoZW4gaXQgaXMgY2FsbGVkLiAgT24g bWFueSB0ZXJtaW5hbHMsCisrdGhlIG1ldGEga2V5IGlzIHVzZWQgdG8gc2VuZCBlaWdodC1iaXQg Y2hhcmFjdGVycy4KKysuVFAKKyAuQiBleHBhbmRcLXRpbGRlIChPZmYpCistSWYgc2V0IHRvIFxm Qm9uXGZQLCB0aWxkZSBleHBhbnNpb24gaXMgcGVyZm9ybWVkIHdoZW4gcmVhZGxpbmUKKytJZiBz ZXQgdG8gXGZCT25cZlAsIHRpbGRlIGV4cGFuc2lvbiBpcyBwZXJmb3JtZWQgd2hlbiByZWFkbGlu ZQorIGF0dGVtcHRzIHdvcmQgY29tcGxldGlvbi4KKyAuVFAKKyAuQiBoaXN0b3J5XC1wcmVzZXJ2 ZVwtcG9pbnQgKE9mZikKKy1JZiBzZXQgdG8gXGZCb25cZlAsIHRoZSBoaXN0b3J5IGNvZGUgYXR0 ZW1wdHMgdG8gcGxhY2UgcG9pbnQgYXQgdGhlIAorK0lmIHNldCB0byBcZkJPblxmUCwgdGhlIGhp c3RvcnkgY29kZSBhdHRlbXB0cyB0byBwbGFjZSBwb2ludCBhdCB0aGUgCisgc2FtZSBsb2NhdGlv biBvbiBlYWNoIGhpc3RvcnkgbGluZSByZXRyaWV2ZWQgd2l0aCBcZkJwcmV2aW91cy1oaXN0b3J5 XGZQIAorIG9yIFxmQm5leHQtaGlzdG9yeVxmUC4KKyAuVFAKKysuQiBoaXN0b3J5XC1zaXplICgw KQorK1NldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgaGlzdG9yeSBlbnRyaWVzIHNhdmVkIGluIHRo ZSBoaXN0b3J5IGxpc3QuICBJZgorK3NldCB0byB6ZXJvLCB0aGUgbnVtYmVyIG9mIGVudHJpZXMg aW4gdGhlIGhpc3RvcnkgbGlzdCBpcyBub3QgbGltaXRlZC4KKysuVFAKKyAuQiBob3Jpem9udGFs XC1zY3JvbGxcLW1vZGUgKE9mZikKKyBXaGVuIHNldCB0byBcZkJPblxmUCwgbWFrZXMgcmVhZGxp bmUgdXNlIGEgc2luZ2xlIGxpbmUgZm9yIGRpc3BsYXksCisgc2Nyb2xsaW5nIHRoZSBpbnB1dCBo b3Jpem9udGFsbHkgb24gYSBzaW5nbGUgc2NyZWVuIGxpbmUgd2hlbiBpdAorQEAgLTQ1MSw5ICs0 ODgsMTUgQEAgaGF2ZSBhIHNsYXNoIGFwcGVuZGVkIChzdWJqZWN0IHRvIHRoZSB2YWx1ZSBvZgor IC5CIG1hdGNoXC1oaWRkZW5cLWZpbGVzIChPbikKKyBUaGlzIHZhcmlhYmxlLCB3aGVuIHNldCB0 byBcZkJPblxmUCwgY2F1c2VzIHJlYWRsaW5lIHRvIG1hdGNoIGZpbGVzIHdob3NlIAorIG5hbWVz IGJlZ2luIHdpdGggYSBgLicgKGhpZGRlbiBmaWxlcykgd2hlbiBwZXJmb3JtaW5nIGZpbGVuYW1l ICAgICAKKy1jb21wbGV0aW9uLCB1bmxlc3MgdGhlIGxlYWRpbmcgYC4nIGlzICAgICAKKytjb21w bGV0aW9uLgorK0lmIHNldCB0byBcZkJPZmZcZlAsIHRoZSBsZWFkaW5nIGAuJyBtdXN0IGJlCisg c3VwcGxpZWQgYnkgdGhlIHVzZXIgaW4gdGhlIGZpbGVuYW1lIHRvIGJlIGNvbXBsZXRlZC4KKyAu VFAKKysuQiBtZW51XC1jb21wbGV0ZVwtZGlzcGxheVwtcHJlZml4IChPZmYpCisrSWYgc2V0IHRv IFxmQk9uXGZQLCBtZW51IGNvbXBsZXRpb24gZGlzcGxheXMgdGhlIGNvbW1vbiBwcmVmaXggb2Yg dGhlCisrbGlzdCBvZiBwb3NzaWJsZSBjb21wbGV0aW9ucyAod2hpY2ggbWF5IGJlIGVtcHR5KSBi ZWZvcmUgY3ljbGluZyB0aHJvdWdoCisrdGhlIGxpc3QuCisrLlRQCisgLkIgb3V0cHV0XC1tZXRh IChPZmYpCisgSWYgc2V0IHRvIFxmQk9uXGZQLCByZWFkbGluZSB3aWxsIGRpc3BsYXkgY2hhcmFj dGVycyB3aXRoIHRoZQorIGVpZ2h0aCBiaXQgc2V0IGRpcmVjdGx5IHJhdGhlciB0aGFuIGFzIGEg bWV0YS1wcmVmaXhlZCBlc2NhcGUKK0BAIC00NjcsMTAgKzUxMCwxNiBAQCB0byBkaXNwbGF5IGEg c2NyZWVuZnVsIG9mIHBvc3NpYmxlIGNvbXBsZXRpb25zIGF0IGEgdGltZS4KKyBJZiBzZXQgdG8g XGZCT25cZlAsIHJlYWRsaW5lIHdpbGwgZGlzcGxheSBjb21wbGV0aW9ucyB3aXRoIG1hdGNoZXMK KyBzb3J0ZWQgaG9yaXpvbnRhbGx5IGluIGFscGhhYmV0aWNhbCBvcmRlciwgcmF0aGVyIHRoYW4g ZG93biB0aGUgc2NyZWVuLgorIC5UUAorKy5CIHJldmVydFwtYWxsXC1hdFwtbmV3bGluZSAoT2Zm KQorK0lmIHNldCB0byBcZkJPblxmUCwgcmVhZGxpbmUgd2lsbCB1bmRvIGFsbCBjaGFuZ2VzIHRv IGhpc3RvcnkgbGluZXMKKytiZWZvcmUgcmV0dXJuaW5nIHdoZW4gXGZCYWNjZXB0XC1saW5lXGZQ IGlzIGV4ZWN1dGVkLiAgQnkgZGVmYXVsdCwKKytoaXN0b3J5IGxpbmVzIG1heSBiZSBtb2RpZmll ZCBhbmQgcmV0YWluIGluZGl2aWR1YWwgdW5kbyBsaXN0cyBhY3Jvc3MKKytjYWxscyB0byBcZkJy ZWFkbGluZVxmUC4KKysuVFAKKyAuQiBzaG93XC1hbGxcLWlmXC1hbWJpZ3VvdXMgKE9mZikKKyBU aGlzIGFsdGVycyB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgY29tcGxldGlvbiBmdW5jdGlv bnMuICBJZgorIHNldCB0bworLS5CUiBvbiAsCisrLkJSIE9uICwKKyB3b3JkcyB3aGljaCBoYXZl IG1vcmUgdGhhbiBvbmUgcG9zc2libGUgY29tcGxldGlvbiBjYXVzZSB0aGUKKyBtYXRjaGVzIHRv IGJlIGxpc3RlZCBpbW1lZGlhdGVseSBpbnN0ZWFkIG9mIHJpbmdpbmcgdGhlIGJlbGwuCisgLlRQ CitAQCAtNDc4LDEyICs1MjcsMjAgQEAgbWF0Y2hlcyB0byBiZSBsaXN0ZWQgaW1tZWRpYXRlbHkg aW5zdGVhZCBvZiByaW5naW5nIHRoZSBiZWxsLgorIFRoaXMgYWx0ZXJzIHRoZSBkZWZhdWx0IGJl aGF2aW9yIG9mIHRoZSBjb21wbGV0aW9uIGZ1bmN0aW9ucyBpbgorIGEgZmFzaGlvbiBzaW1pbGFy IHRvIFxmQnNob3dcLWFsbFwtaWZcLWFtYmlndW91c1xmUC4KKyBJZiBzZXQgdG8KKy0uQlIgb24g LCAKKysuQlIgT24gLCAKKyB3b3JkcyB3aGljaCBoYXZlIG1vcmUgdGhhbiBvbmUgcG9zc2libGUg Y29tcGxldGlvbiB3aXRob3V0IGFueQorIHBvc3NpYmxlIHBhcnRpYWwgY29tcGxldGlvbiAodGhl IHBvc3NpYmxlIGNvbXBsZXRpb25zIGRvbid0IHNoYXJlIAorIGEgY29tbW9uIHByZWZpeCkgY2F1 c2UgdGhlIG1hdGNoZXMgdG8gYmUgbGlzdGVkIGltbWVkaWF0ZWx5IGluc3RlYWQKKyBvZiByaW5n aW5nIHRoZSBiZWxsLgorIC5UUAorKy5CIHNraXBcLWNvbXBsZXRlZFwtdGV4dCAoT2ZmKQorK0lm IHNldCB0byBcZkJPblxmUCwgdGhpcyBhbHRlcnMgdGhlIGRlZmF1bHQgY29tcGxldGlvbiBiZWhh dmlvciB3aGVuCisraW5zZXJ0aW5nIGEgc2luZ2xlIG1hdGNoIGludG8gdGhlIGxpbmUuICBJdCdz IG9ubHkgYWN0aXZlIHdoZW4KKytwZXJmb3JtaW5nIGNvbXBsZXRpb24gaW4gdGhlIG1pZGRsZSBv ZiBhIHdvcmQuICBJZiBlbmFibGVkLCByZWFkbGluZQorK2RvZXMgbm90IGluc2VydCBjaGFyYWN0 ZXJzIGZyb20gdGhlIGNvbXBsZXRpb24gdGhhdCBtYXRjaCBjaGFyYWN0ZXJzCisrYWZ0ZXIgcG9p bnQgaW4gdGhlIHdvcmQgYmVpbmcgY29tcGxldGVkLCBzbyBwb3J0aW9ucyBvZiB0aGUgd29yZAor K2ZvbGxvd2luZyB0aGUgY3Vyc29yIGFyZSBub3QgZHVwbGljYXRlZC4KKysuVFAKKyAuQiB2aXNp YmxlXC1zdGF0cyAoT2ZmKQorIElmIHNldCB0byBcZkJPblxmUCwgYSBjaGFyYWN0ZXIgZGVub3Rp bmcgYSBmaWxlJ3MgdHlwZSBhcyByZXBvcnRlZCAgCisgYnkgXGZJc3RhdFxmUCgyKSBpcyBhcHBl bmRlZCB0byB0aGUgZmlsZW5hbWUgd2hlbiBsaXN0aW5nIHBvc3NpYmxlCitAQCAtNTMwLDcgKzU4 Nyw3IEBAIGxpYnJhcnkgc2V0cyB0aGUgXGZJYXBwbGljYXRpb24gbmFtZVxmUCwgYW5kIGFuIGlu aXRpYWxpemF0aW9uCisgZmlsZSBjYW4gdGVzdCBmb3IgYSBwYXJ0aWN1bGFyIHZhbHVlLgorIFRo aXMgY291bGQgYmUgdXNlZCB0byBiaW5kIGtleSBzZXF1ZW5jZXMgdG8gZnVuY3Rpb25zIHVzZWZ1 bCBmb3IKKyBhIHNwZWNpZmljIHByb2dyYW0uICBGb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcg Y29tbWFuZCBhZGRzIGEKKy1rZXkgc2VxdWVuY2UgdGhhdCBxdW90ZXMgdGhlIGN1cnJlbnQgb3Ig cHJldmlvdXMgd29yZCBpbiBCYXNoOgorK2tleSBzZXF1ZW5jZSB0aGF0IHF1b3RlcyB0aGUgY3Vy cmVudCBvciBwcmV2aW91cyB3b3JkIGluIFxmQmJhc2hcZlA6CisgLnNwIDEKKyAuUlMKKyAubmYK K0BAIC03MDYsMTAgKzc2MywxNCBAQCBhcyBpZiB0aGUgIiFcZkluXGZQIiBoaXN0b3J5IGV4cGFu c2lvbiBoYWQgYmVlbiBzcGVjaWZpZWQuCisgLkIKKyB5YW5rXC1sYXN0XC1hcmcgKE1cLS5cXiwg TVwtX1xeKQorIEluc2VydCB0aGUgbGFzdCBhcmd1bWVudCB0byB0aGUgcHJldmlvdXMgY29tbWFu ZCAodGhlIGxhc3Qgd29yZCBvZgorLXRoZSBwcmV2aW91cyBoaXN0b3J5IGVudHJ5KS4gIFdpdGgg YW4gYXJndW1lbnQsCistYmVoYXZlIGV4YWN0bHkgbGlrZSBcZkJ5YW5rXC1udGhcLWFyZ1xmUC4K Kyt0aGUgcHJldmlvdXMgaGlzdG9yeSBlbnRyeSkuCisrV2l0aCBhIG51bWVyaWMgYXJndW1lbnQs IGJlaGF2ZSBleGFjdGx5IGxpa2UgXGZCeWFua1wtbnRoXC1hcmdcZlAuCisgU3VjY2Vzc2l2ZSBj YWxscyB0byBcZkJ5YW5rXC1sYXN0XC1hcmdcZlAgbW92ZSBiYWNrIHRocm91Z2ggdGhlIGhpc3Rv cnkKKy1saXN0LCBpbnNlcnRpbmcgdGhlIGxhc3QgYXJndW1lbnQgb2YgZWFjaCBsaW5lIGluIHR1 cm4uCisrbGlzdCwgaW5zZXJ0aW5nIHRoZSBsYXN0IHdvcmQgKG9yIHRoZSB3b3JkIHNwZWNpZmll ZCBieSB0aGUgYXJndW1lbnQgdG8KKyt0aGUgZmlyc3QgY2FsbCkgb2YgZWFjaCBsaW5lIGluIHR1 cm4uCisrQW55IG51bWVyaWMgYXJndW1lbnQgc3VwcGxpZWQgdG8gdGhlc2Ugc3VjY2Vzc2l2ZSBj YWxscyBkZXRlcm1pbmVzCisrdGhlIGRpcmVjdGlvbiB0byBtb3ZlIHRocm91Z2ggdGhlIGhpc3Rv cnkuICBBIG5lZ2F0aXZlIGFyZ3VtZW50IHN3aXRjaGVzCisrdGhlIGRpcmVjdGlvbiB0aHJvdWdo IHRoZSBoaXN0b3J5IChiYWNrIG9yIGZvcndhcmQpLgorIFRoZSBoaXN0b3J5IGV4cGFuc2lvbiBm YWNpbGl0aWVzIGFyZSB1c2VkIHRvIGV4dHJhY3QgdGhlIGxhc3QgYXJndW1lbnQsCisgYXMgaWYg dGhlICIhJCIgaGlzdG9yeSBleHBhbnNpb24gaGFkIGJlZW4gc3BlY2lmaWVkLgorIC5QRAorQEAg LTg4NCw2ICs5NDUsMTIgQEAgb25seSBhdHRlbXB0cyBmaWxlbmFtZSBjb21wbGV0aW9uIHVuZGVy IGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4KKyAuVFAKKyAuQiBwb3NzaWJsZVwtY29tcGxldGlvbnMg KE1cLT8pCisgTGlzdCB0aGUgcG9zc2libGUgY29tcGxldGlvbnMgb2YgdGhlIHRleHQgYmVmb3Jl IHBvaW50LgorK1doZW4gZGlzcGxheWluZyBjb21wbGV0aW9ucywgcmVhZGxpbmUgc2V0cyB0aGUg bnVtYmVyIG9mIGNvbHVtbnMgdXNlZAorK2ZvciBkaXNwbGF5IHRvIHRoZSB2YWx1ZSBvZiBcZkJj b21wbGV0aW9uLWRpc3BsYXktd2lkdGhcZlAsIHRoZSB2YWx1ZSBvZgorK3RoZSBlbnZpcm9ubWVu dCB2YXJpYWJsZQorKy5TTQorKy5CUiBDT0xVTU5TICwKKytvciB0aGUgc2NyZWVuIHdpZHRoLCBp biB0aGF0IG9yZGVyLgorIC5UUAorIC5CIGluc2VydFwtY29tcGxldGlvbnMgKE1cLSopCisgSW5z ZXJ0IGFsbCBjb21wbGV0aW9ucyBvZiB0aGUgdGV4dCBiZWZvcmUgcG9pbnQKK0BAIC05MDQsNiAr OTcxLDExIEBAIHRocm91Z2ggdGhlIGxpc3QuCisgVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIHRv IGJlIGJvdW5kIHRvIFxmQlRBQlxmUCwgYnV0IGlzIHVuYm91bmQKKyBieSBkZWZhdWx0LgorIC5U UAorKy5CIG1lbnVcLWNvbXBsZXRlXC1iYWNrd2FyZAorK0lkZW50aWNhbCB0byBcZkJtZW51XC1j b21wbGV0ZVxmUCwgYnV0IG1vdmVzIGJhY2t3YXJkIHRocm91Z2ggdGhlIGxpc3QKKytvZiBwb3Nz aWJsZSBjb21wbGV0aW9ucywgYXMgaWYgXGZCbWVudVwtY29tcGxldGVcZlAgaGFkIGJlZW4gZ2l2 ZW4gYQorK25lZ2F0aXZlIGFyZ3VtZW50LiAgVGhpcyBjb21tYW5kIGlzIHVuYm91bmQgYnkgZGVm YXVsdC4KKysuVFAKKyAuQiBkZWxldGVcLWNoYXJcLW9yXC1saXN0CisgRGVsZXRlcyB0aGUgY2hh cmFjdGVyIHVuZGVyIHRoZSBjdXJzb3IgaWYgbm90IGF0IHRoZSBiZWdpbm5pbmcgb3IKKyBlbmQg b2YgdGhlIGxpbmUgKGxpa2UgXGZCZGVsZXRlLWNoYXJcZlApLgorQEAgLTk3Nyw2ICsxMDQ5LDE1 IEBAIGNoYXJhY3Rlci4gIEEgbmVnYXRpdmUgY291bnQgc2VhcmNoZXMgZm9yIHByZXZpb3VzIG9j Y3VycmVuY2VzLgorIEEgY2hhcmFjdGVyIGlzIHJlYWQgYW5kIHBvaW50IGlzIG1vdmVkIHRvIHRo ZSBwcmV2aW91cyBvY2N1cnJlbmNlIG9mIHRoYXQKKyBjaGFyYWN0ZXIuICBBIG5lZ2F0aXZlIGNv dW50IHNlYXJjaGVzIGZvciBzdWJzZXF1ZW50IG9jY3VycmVuY2VzLgorIC5UUAorKy5CIHNraXBc LWNzaVwtc2VxdWVuY2UKKytSZWFkIGVub3VnaCBjaGFyYWN0ZXJzIHRvIGNvbnN1bWUgYSBtdWx0 aS1rZXkgc2VxdWVuY2Ugc3VjaCBhcyB0aG9zZQorK2RlZmluZWQgZm9yIGtleXMgbGlrZSBIb21l IGFuZCBFbmQuICBTdWNoIHNlcXVlbmNlcyBiZWdpbiB3aXRoIGEKKytDb250cm9sIFNlcXVlbmNl IEluZGljYXRvciAoQ1NJKSwgdXN1YWxseSBFU0NcLVsuICBJZiB0aGlzIHNlcXVlbmNlIGlzCisr Ym91bmQgdG8gIlxlWyIsIGtleXMgcHJvZHVjaW5nIHN1Y2ggc2VxdWVuY2VzIHdpbGwgaGF2ZSBu byBlZmZlY3QKKyt1bmxlc3MgZXhwbGljaXRseSBib3VuZCB0byBhIHJlYWRsaW5lIGNvbW1hbmQs IGluc3RlYWQgb2YgaW5zZXJ0aW5nCisrc3RyYXkgY2hhcmFjdGVycyBpbnRvIHRoZSBlZGl0aW5n IGJ1ZmZlci4gIFRoaXMgaXMgdW5ib3VuZCBieSBkZWZhdWx0LAorK2J1dCB1c3VhbGx5IGJvdW5k IHRvIEVTQ1wtWy4KKysuVFAKKyAuQiBpbnNlcnRcLWNvbW1lbnQgKE1cLSMpCisgV2l0aG91dCBh IG51bWVyaWMgYXJndW1lbnQsIHRoZSB2YWx1ZSBvZiB0aGUgcmVhZGxpbmUKKyAuQiBjb21tZW50 XC1iZWdpbgorLS0tIGEvcmVhZGxpbmUvZG9jL3JsbWFuLnRleGkKKysrKyBiL3JlYWRsaW5lL2Rv Yy9ybG1hbi50ZXhpCitAQCAtNCw3ICs0LDYgQEAKKyBAc2V0dGl0bGUgR05VIFJlYWRsaW5lIExp YnJhcnkKKyBAY29tbWVudCAlKiplbmQgb2YgaGVhZGVyIChUaGlzIGlzIGZvciBydW5uaW5nIFRl eGluZm8gb24gYSByZWdpb24uKQorIEBzeW5pbmRleCB2ciBmbgorLUBzZXRjaGFwdGVybmV3cGFn ZSBvZGQKKyAKKyBAaW5jbHVkZSB2ZXJzaW9uLnRleGkKKyAKK0BAIC0xNCw3ICsxMyw3IEBAIFRo aXMgbWFudWFsIGRlc2NyaWJlcyB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkKKyBjb25zaXN0ZW5j eSBvZiB1c2VyIGludGVyZmFjZSBhY3Jvc3MgZGlzY3JldGUgcHJvZ3JhbXMgd2hpY2ggcHJvdmlk ZQorIGEgY29tbWFuZCBsaW5lIGludGVyZmFjZS4KKyAKKy1Db3B5cmlnaHQgQGNvcHlyaWdodHt9 IDE5ODgtMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKytDb3B5cmlnaHQgQGNv cHlyaWdodHt9IDE5ODgtLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCisg UGVybWlzc2lvbiBpcyBncmFudGVkIHRvIG1ha2UgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29w aWVzIG9mCisgdGhpcyBtYW51YWwgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UKK0BAIC0yMiwxNSArMjEsMTYgQEAgYXJlIHByZXNlcnZlZCBv biBhbGwgY29waWVzLgorIAorIEBxdW90YXRpb24KKyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8g Y29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoaXMgZG9jdW1lbnQKKy11bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjEg b3IKKyt1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5z ZSwgVmVyc2lvbiAxLjMgb3IKKyBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2l0aCBubworLUludmFyaWFudCBTZWN0aW9ucywgd2l0 aCB0aGUgRnJvbnQtQ292ZXIgdGV4dHMgYmVpbmcgYGBBIEdOVSBNYW51YWwsJycKKytJbnZhcmlh bnQgU2VjdGlvbnMsIHdpdGggdGhlIEZyb250LUNvdmVyIHRleHRzIGJlaW5nIGBgQSBHTlUgTWFu dWFsJycsCisgYW5kIHdpdGggdGhlIEJhY2stQ292ZXIgVGV4dHMgYXMgaW4gKGEpIGJlbG93LiAg QSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzCistaW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRs ZWQgYGBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UuJycKKytpbmNsdWRlZCBpbiB0aGUg c2VjdGlvbiBlbnRpdGxlZCBgYEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZScnLgorKwor KyhhKSBUaGUgRlNGJ3MgQmFjay1Db3ZlciBUZXh0IGlzOiBZb3UgYXJlIGZyZWUgdG8gY29weSBh bmQgbW9kaWZ5CisrdGhpcyBHTlUgbWFudWFsLiAgQnV5aW5nIGNvcGllcyBmcm9tIEdOVSBQcmVz cyBzdXBwb3J0cyB0aGUgRlNGIGluCisrZGV2ZWxvcGluZyBHTlUgYW5kIHByb21vdGluZyBzb2Z0 d2FyZSBmcmVlZG9tLicnCisgCistKGEpIFRoZSBGU0YncyBCYWNrLUNvdmVyIFRleHQgaXM6IGBg WW91IGhhdmUgZnJlZWRvbSB0byBjb3B5IGFuZCBtb2RpZnkKKy10aGlzIEdOVSBNYW51YWwsIGxp a2UgR05VIHNvZnR3YXJlLiAgQ29waWVzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorLVNvZnR3YXJl IEZvdW5kYXRpb24gcmFpc2UgZnVuZHMgZm9yIEdOVSBkZXZlbG9wbWVudC4nJworIEBlbmQgcXVv dGF0aW9uCisgQGVuZCBjb3B5aW5nCisgCitAQCAtNzEsNyArNzEsNyBAQCBwcm92aWRlIGEgY29t bWFuZCBsaW5lIGludGVyZmFjZS4KKyBAbWVudQorICogQ29tbWFuZCBMaW5lIEVkaXRpbmc6Ogkg ICBHTlUgUmVhZGxpbmUgVXNlcidzIE1hbnVhbC4KKyAqIFByb2dyYW1taW5nIHdpdGggR05VIFJl YWRsaW5lOjogIEdOVSBSZWFkbGluZSBQcm9ncmFtbWVyJ3MgTWFudWFsLgorLSogQ29weWluZyBU aGlzIE1hbnVhbDo6CQkgICBDb3B5aW5nIHRoaXMgbWFudWFsLgorKyogR05VIEZyZWUgRG9jdW1l bnRhdGlvbiBMaWNlbnNlOjoJTGljZW5zZSBmb3IgY29weWluZyB0aGlzIG1hbnVhbC4KKyAqIENv bmNlcHQgSW5kZXg6OgkJICAgSW5kZXggb2YgY29uY2VwdHMgZGVzY3JpYmVkIGluIHRoaXMgbWFu dWFsLgorICogRnVuY3Rpb24gYW5kIFZhcmlhYmxlIEluZGV4OjoJICAgSW5kZXggb2YgZXh0ZXJu YWxseSB2aXNpYmxlIGZ1bmN0aW9ucworIAkJCQkgICBhbmQgdmFyaWFibGVzLgorQEAgLTgxLDEy ICs4MSw4IEBAIHByb3ZpZGUgYSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLgorIEBpbmNsdWRlIHJs dXNlci50ZXhpCisgQGluY2x1ZGUgcmx0ZWNoLnRleGkKKyAKKy1Abm9kZSBDb3B5aW5nIFRoaXMg TWFudWFsCistQGFwcGVuZGl4IENvcHlpbmcgVGhpcyBNYW51YWwKKy0KKy1AbWVudQorLSogR05V IEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlOjoJTGljZW5zZSBmb3IgY29weWluZyB0aGlzIG1h bnVhbC4KKy1AZW5kIG1lbnUKKytAbm9kZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UK KytAYXBwZW5kaXggR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlCisgCisgQGluY2x1ZGUg ZmRsLnRleGkKKyAKKy0tLSBhL3JlYWRsaW5lL2RvYy9ybHRlY2gudGV4aQorKysrIGIvcmVhZGxp bmUvZG9jL3JsdGVjaC50ZXhpCitAQCAtMSwxNCArMSwxMyBAQAorIEBjb21tZW50ICUqKnN0YXJ0 IG9mIGhlYWRlciAoVGhpcyBpcyBmb3IgcnVubmluZyBUZXhpbmZvIG9uIGEgcmVnaW9uLikKKyBA c2V0ZmlsZW5hbWUgcmx0ZWNoLmluZm8KKyBAY29tbWVudCAlKiplbmQgb2YgaGVhZGVyIChUaGlz IGlzIGZvciBydW5uaW5nIFRleGluZm8gb24gYSByZWdpb24uKQorLUBzZXRjaGFwdGVybmV3cGFn ZSBvZGQKKyAKKyBAaWZpbmZvCisgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIEdOVSBSZWFk bGluZSBMaWJyYXJ5LCBhIHV0aWxpdHkgZm9yIGFpZGluZworIGluIHRoZSBjb25zaXN0ZW5jeSBv ZiB1c2VyIGludGVyZmFjZSBhY3Jvc3MgZGlzY3JldGUgcHJvZ3JhbXMgdGhhdCBuZWVkCisgdG8g cHJvdmlkZSBhIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UuCisgCistQ29weXJpZ2h0IChDKSAxOTg4 LTIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrQ29weXJpZ2h0IChDKSAxOTg4 LS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorIFBlcm1pc3Npb24gaXMg Z3JhbnRlZCB0byBtYWtlIGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZgorIHRoaXMg bWFudWFsIHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g bm90aWNlCitAQCAtMzUxLDYgKzM1MCwxMiBAQCBUaGUgQGNvZGV7cmxfc2V0X3Byb21wdCgpfSBm dW5jdGlvbiAoQHB4cmVme1JlZGlzcGxheX0pIG1heQorIGJlIHVzZWQgdG8gbW9kaWZ5IHRoZSBw cm9tcHQgc3RyaW5nIGFmdGVyIGNhbGxpbmcgQGNvZGV7cmVhZGxpbmUoKX0uCisgQGVuZCBkZWZ0 eXBldmFyCisgCisrQGRlZnR5cGV2YXIge2NoYXIgKn0gcmxfZGlzcGxheV9wcm9tcHQKKytUaGUg c3RyaW5nIGRpc3BsYXllZCBhcyB0aGUgcHJvbXB0LiAgVGhpcyBpcyB1c3VhbGx5IGlkZW50aWNh bCB0bworK0B2YXJ7cmxfcHJvbXB0fSwgYnV0IG1heSBiZSBjaGFuZ2VkIHRlbXBvcmFyaWx5IGJ5 IGZ1bmN0aW9ucyB0aGF0CisrdXNlIHRoZSBwcm9tcHQgc3RyaW5nIGFzIGEgbWVzc2FnZSBhcmVh LCBzdWNoIGFzIGluY3JlbWVudGFsIHNlYXJjaC4KKytAZW5kIGRlZnR5cGV2YXIKKysKKyBAZGVm dHlwZXZhciBpbnQgcmxfYWxyZWFkeV9wcm9tcHRlZAorIElmIGFuIGFwcGxpY2F0aW9uIHdpc2hl cyB0byBkaXNwbGF5IHRoZSBwcm9tcHQgaXRzZWxmLCByYXRoZXIgdGhhbiBoYXZlCisgUmVhZGxp bmUgZG8gaXQgdGhlIGZpcnN0IHRpbWUgQGNvZGV7cmVhZGxpbmUoKX0gaXMgY2FsbGVkLCBpdCBz aG91bGQgc2V0CitAQCAtNTE4LDYgKzUyMywyMCBAQCBSZWFkbGluZSBpcyBwZXJmb3JtaW5nIHdv cmQgY29tcGxldGlvbi4KKyBSZWFkbGluZSBpcyBjdXJyZW50bHkgZXhlY3V0aW5nIHRoZSByZWFk bGluZSBzaWduYWwgaGFuZGxlci4KKyBAaXRlbSBSTF9TVEFURV9VTkRPSU5HCisgUmVhZGxpbmUg aXMgcGVyZm9ybWluZyBhbiB1bmRvLgorK0BpdGVtIFJMX1NUQVRFX0lOUFVUUEVORElORworK1Jl YWRsaW5lIGhhcyBpbnB1dCBwZW5kaW5nIGR1ZSB0byBhIGNhbGwgdG8gQGNvZGV7cmxfZXhlY3V0 ZV9uZXh0KCl9LgorK0BpdGVtIFJMX1NUQVRFX1RUWUNTQVZFRAorK1JlYWRsaW5lIGhhcyBzYXZl ZCB0aGUgdmFsdWVzIG9mIHRoZSB0ZXJtaW5hbCdzIHNwZWNpYWwgY2hhcmFjdGVycy4KKytAaXRl bSBSTF9TVEFURV9DQUxMQkFDSworK1JlYWRsaW5lIGlzIGN1cnJlbnRseSB1c2luZyB0aGUgYWx0 ZXJuYXRlIChjYWxsYmFjaykgaW50ZXJmYWNlCisrKEBweHJlZntBbHRlcm5hdGUgSW50ZXJmYWNl fSkuCisrQGl0ZW0gUkxfU1RBVEVfVklNT1RJT04KKytSZWFkbGluZSBpcyByZWFkaW5nIHRoZSBh cmd1bWVudCB0byBhIHZpLW1vZGUgIm1vdGlvbiIgY29tbWFuZC4KKytAaXRlbSBSTF9TVEFURV9N VUxUSUtFWQorK1JlYWRsaW5lIGlzIHJlYWRpbmcgYSBtdWx0aXBsZS1rZXlzdHJva2UgY29tbWFu ZC4KKytAaXRlbSBSTF9TVEFURV9WSUNNRE9OQ0UKKytSZWFkbGluZSBoYXMgZW50ZXJlZCB2aSBj b21tYW5kIChtb3ZlbWVudCkgbW9kZSBhdCBsZWFzdCBvbmUgdGltZSBkdXJpbmcKKyt0aGUgY3Vy cmVudCBjYWxsIHRvIEBjb2Rle3JlYWRsaW5lKCl9LgorIEBpdGVtIFJMX1NUQVRFX0RPTkUKKyBS ZWFkbGluZSBoYXMgcmVhZCBhIGtleSBzZXF1ZW5jZSBib3VuZCB0byBAY29kZXthY2NlcHQtbGlu ZX0KKyBhbmQgaXMgYWJvdXQgdG8gcmV0dXJuIHRoZSBsaW5lIHRvIHRoZSBjYWxsZXIuCitAQCAt NjAzLDcgKzYyMiw3IEBAIFJlYWRsaW5lIHdoaWNoIGtleW1hcCB0byB1c2UuCisgQGRlZnR5cGVm dW4gS2V5bWFwIHJsX21ha2VfYmFyZV9rZXltYXAgKHZvaWQpCisgUmV0dXJucyBhIG5ldywgZW1w dHkga2V5bWFwLiAgVGhlIHNwYWNlIGZvciB0aGUga2V5bWFwIGlzIGFsbG9jYXRlZCB3aXRoCisg QGNvZGV7bWFsbG9jKCl9OyB0aGUgY2FsbGVyIHNob3VsZCBmcmVlIGl0IGJ5IGNhbGxpbmcKKy1A Y29kZXtybF9kaXNjYXJkX2tleW1hcCgpfSB3aGVuIGRvbmUuCisrQGNvZGV7cmxfZnJlZV9rZXlt YXAoKX0gd2hlbiBkb25lLgorIEBlbmQgZGVmdHlwZWZ1bgorIAorIEBkZWZ0eXBlZnVuIEtleW1h cCBybF9jb3B5X2tleW1hcCAoS2V5bWFwIG1hcCkKK0BAIC02MTcsNyArNjM2LDEzIEBAIHRoZSBN ZXRhIGRpZ2l0cyBib3VuZCB0byBwcm9kdWNlIG51bWVyaWMgYXJndW1lbnRzLgorIEBlbmQgZGVm dHlwZWZ1bgorIAorIEBkZWZ0eXBlZnVuIHZvaWQgcmxfZGlzY2FyZF9rZXltYXAgKEtleW1hcCBr ZXltYXApCistRnJlZSB0aGUgc3RvcmFnZSBhc3NvY2lhdGVkIHdpdGggQHZhcntrZXltYXB9Lgor K0ZyZWUgdGhlIHN0b3JhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBkYXRhIGluIEB2YXJ7a2V5bWFw fS4KKytUaGUgY2FsbGVyIHNob3VsZCBmcmVlIEB2YXJ7a2V5bWFwfS4KKytAZW5kIGRlZnR5cGVm dW4KKysKKytAZGVmdHlwZWZ1biB2b2lkIHJsX2ZyZWVfa2V5bWFwIChLZXltYXAga2V5bWFwKQor K0ZyZWUgYWxsIHN0b3JhZ2UgYXNzb2NpYXRlZCB3aXRoIEB2YXJ7a2V5bWFwfS4gIFRoaXMgY2Fs bHMKKytAY29kZXtybF9kaXNjYXJkX2tleW1hcH0gdG8gZnJlZSBzdWJvcmRpbmRhdGUga2V5bWFw cyBhbmQgbWFjcm9zLgorIEBlbmQgZGVmdHlwZWZ1bgorIAorIFJlYWRsaW5lIGhhcyBzZXZlcmFs IGludGVybmFsIGtleW1hcHMuICBUaGVzZSBmdW5jdGlvbnMgYWxsb3cgeW91IHRvCitAQCAtNzkz LDcgKzgxOCw4IEBAIFByaW50IHRoZSBuYW1lcyBvZiBhbGwgYmluZGFibGUgUmVhZGxpbmUgZnVu Y3Rpb25zIHRvIEBjb2Rle3JsX291dHN0cmVhbX0uCisgQGRlZnR5cGVmdW4ge2NvbnN0IGNoYXIg Kip9IHJsX2Z1bm1hcF9uYW1lcyAodm9pZCkKKyBSZXR1cm4gYSBOVUxMIHRlcm1pbmF0ZWQgYXJy YXkgb2Yga25vd24gZnVuY3Rpb24gbmFtZXMuICBUaGUgYXJyYXkgaXMKKyBzb3J0ZWQuICBUaGUg YXJyYXkgaXRzZWxmIGlzIGFsbG9jYXRlZCwgYnV0IG5vdCB0aGUgc3RyaW5ncyBpbnNpZGUuICBZ b3UKKy1zaG91bGQgQGNvZGV7ZnJlZSgpfSB0aGUgYXJyYXkgd2hlbiB5b3UgYXJlIGRvbmUsIGJ1 dCBub3QgdGhlIHBvaW50ZXJzLgorK3Nob3VsZCBmcmVlIHRoZSBhcnJheSwgYnV0IG5vdCB0aGUg cG9pbnRlcnMsIHVzaW5nIEBjb2Rle2ZyZWV9IG9yCisrQGNvZGV7cmxfZnJlZX0gd2hlbiB5b3Ug YXJlIGRvbmUuCisgQGVuZCBkZWZ0eXBlZnVuCisgCisgQGRlZnR5cGVmdW4gaW50IHJsX2FkZF9m dW5tYXBfZW50cnkgKGNvbnN0IGNoYXIgKm5hbWUsIHJsX2NvbW1hbmRfZnVuY190ICpmdW5jdGlv bikKK0BAIC0xMDMzLDggKzEwNTksMTAgQEAgcGVuZGluZyBpbnB1dCBoYXMgbm90IGFscmVhZHkg YmVlbiByZWFkIHdpdGggQGNvZGV7cmxfcmVhZF9rZXkoKX0uCisgQGRlZnR5cGVmdW4gaW50IHJs X3NldF9rZXlib2FyZF9pbnB1dF90aW1lb3V0IChpbnQgdSkKKyBXaGlsZSB3YWl0aW5nIGZvciBr ZXlib2FyZCBpbnB1dCBpbiBAY29kZXtybF9yZWFkX2tleSgpfSwgUmVhZGxpbmUgd2lsbAorIHdh aXQgZm9yIEB2YXJ7dX0gbWljcm9zZWNvbmRzIGZvciBpbnB1dCBiZWZvcmUgY2FsbGluZyBhbnkg ZnVuY3Rpb24KKy1hc3NpZ25lZCB0byBAY29kZXtybF9ldmVudF9ob29rfS4gIFRoZSBkZWZhdWx0 IHdhaXRpbmcgcGVyaW9kIGlzCistb25lLXRlbnRoIG9mIGEgc2Vjb25kLiAgUmV0dXJucyB0aGUg b2xkIHRpbWVvdXQgdmFsdWUuCisrYXNzaWduZWQgdG8gQGNvZGV7cmxfZXZlbnRfaG9va30uICBA dmFye3V9IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsCisrdG8gemVybyAoYSB6ZXJvLWxl bmd0aCB0aW1lb3V0IGlzIGVxdWl2YWxlbnQgdG8gYSBwb2xsKS4KKytUaGUgZGVmYXVsdCB3YWl0 aW5nIHBlcmlvZCBpcyBvbmUtdGVudGggb2YgYSBzZWNvbmQuCisrUmV0dXJucyB0aGUgb2xkIHRp bWVvdXQgdmFsdWUuCisgQGVuZCBkZWZ0eXBlZnVuCisgCisgQG5vZGUgVGVybWluYWwgTWFuYWdl bWVudAorQEAgLTEwNzUsNiArMTEwMywyNiBAQCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyB1c2Vk LgorIEBub2RlIFV0aWxpdHkgRnVuY3Rpb25zCisgQHN1YnNlY3Rpb24gVXRpbGl0eSBGdW5jdGlv bnMKKyAKKytAZGVmdHlwZWZ1biBpbnQgcmxfc2F2ZV9zdGF0ZSAoc3RydWN0IHJlYWRsaW5lX3N0 YXRlICpzcCkKKytTYXZlIGEgc25hcHNob3Qgb2YgUmVhZGxpbmUncyBpbnRlcm5hbCBzdGF0ZSB0 byBAdmFye3NwfS4KKytUaGUgY29udGVudHMgb2YgdGhlIEB2YXJ7cmVhZGxpbmVfc3RhdGV9IHN0 cnVjdHVyZSBhcmUgZG9jdW1lbnRlZAorK2luIEBmaWxle3JlYWRsaW5lLmh9LgorK1RoZSBjYWxs ZXIgaXMgcmVzcG9uc2libGUgZm9yIGFsbG9jYXRpbmcgdGhlIHN0cnVjdHVyZS4KKytAZW5kIGRl ZnR5cGVmdW4KKysKKytAZGVmdHlwZWZ1biBpbnQgcmxfcmVzdG9yZV9zdGF0ZSAoc3RydWN0IHJl YWRsaW5lX3N0YXRlICpzcCkKKytSZXN0b3JlIFJlYWRsaW5lJ3MgaW50ZXJuYWwgc3RhdGUgdG8g dGhhdCBzdG9yZWQgaW4gQHZhcntzcH0sIHdoaWNoIG11c3QKKytoYXZlIGJlZW4gc2F2ZWQgYnkg YSBjYWxsIHRvIEBjb2Rle3JsX3NhdmVfc3RhdGV9LgorK1RoZSBjb250ZW50cyBvZiB0aGUgQHZh cntyZWFkbGluZV9zdGF0ZX0gc3RydWN0dXJlIGFyZSBkb2N1bWVudGVkCisraW4gQGZpbGV7cmVh ZGxpbmUuaH0uCisrVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyB0aGUgc3Ry dWN0dXJlLgorK0BlbmQgZGVmdHlwZWZ1bgorKworK0BkZWZ0eXBlZnVuIHZvaWQgcmxfZnJlZSAo dm9pZCAqbWVtKQorK0RlYWxsb2NhdGUgdGhlIG1lbW9yeSBwb2ludGVkIHRvIGJ5IEB2YXJ7bWVt fS4gIEB2YXJ7bWVtfSBtdXN0IGhhdmUgYmVlbgorK2FsbG9jYXRlZCBieSBAY29kZXttYWxsb2N9 LgorK0BlbmQgZGVmdHlwZWZ1bgorKworIEBkZWZ0eXBlZnVuIHZvaWQgcmxfcmVwbGFjZV9saW5l IChjb25zdCBjaGFyICp0ZXh0LCBpbnQgY2xlYXJfdW5kbykKKyBSZXBsYWNlIHRoZSBjb250ZW50 cyBvZiBAY29kZXtybF9saW5lX2J1ZmZlcn0gd2l0aCBAdmFye3RleHR9LgorIFRoZSBwb2ludCBh bmQgbWFyayBhcmUgcHJlc2VydmVkLCBpZiBwb3NzaWJsZS4KK0BAIC0xMDgyLDcgKzExMzAsNyBA QCBJZiBAdmFye2NsZWFyX3VuZG99IGlzIG5vbi16ZXJvLCB0aGUgdW5kbyBsaXN0IGFzc29jaWF0 ZWQgd2l0aCB0aGUKKyBjdXJyZW50IGxpbmUgaXMgY2xlYXJlZC4KKyBAZW5kIGRlZnR5cGVmdW4K KyAKKy1AZGVmdHlwZWZ1biBpbnQgcmxfZXh0ZW5kX2xpbmVfYnVmZmVyIChpbnQgbGVuKQorK0Bk ZWZ0eXBlZnVuIHZvaWQgcmxfZXh0ZW5kX2xpbmVfYnVmZmVyIChpbnQgbGVuKQorIEVuc3VyZSB0 aGF0IEBjb2Rle3JsX2xpbmVfYnVmZmVyfSBoYXMgZW5vdWdoIHNwYWNlIHRvIGhvbGQgQHZhcnts ZW59CisgY2hhcmFjdGVycywgcG9zc2libHkgcmVhbGxvY2F0aW5nIGl0IGlmIG5lY2Vzc2FyeS4K KyBAZW5kIGRlZnR5cGVmdW4KK0BAIC0xMTA5LDYgKzExNTcsOSBAQCBvZiBzdHJpbmdzLCBpbiBh cmd2IGZvcm1hdCwgc3VjaCBhcyBhIGxpc3Qgb2YgY29tcGxldGlvbiBtYXRjaGVzLgorIGlzIHRo ZSBsZW5ndGggb2YgdGhlIGxvbmdlc3Qgc3RyaW5nIGluIEBjb2Rle21hdGNoZXN9LiAgVGhpcyBm dW5jdGlvbiB1c2VzCisgdGhlIHNldHRpbmcgb2YgQGNvZGV7cHJpbnQtY29tcGxldGlvbnMtaG9y aXpvbnRhbGx5fSB0byBzZWxlY3QgaG93IHRoZQorIG1hdGNoZXMgYXJlIGRpc3BsYXllZCAoQHB4 cmVme1JlYWRsaW5lIEluaXQgRmlsZSBTeW50YXh9KS4KKytXaGVuIGRpc3BsYXlpbmcgY29tcGxl dGlvbnMsIHRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgdXNlZAorK2Zv ciBkaXNwbGF5IHRvIHRoZSB2YWx1ZSBvZiBAY29kZXtjb21wbGV0aW9uLWRpc3BsYXktd2lkdGh9 LCB0aGUgdmFsdWUgb2YKKyt0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgQGVudntDT0xVTU5TfSwg b3IgdGhlIHNjcmVlbiB3aWR0aCwgaW4gdGhhdCBvcmRlci4KKyBAZW5kIGRlZnR5cGVmdW4KKyAK KyBUaGUgZm9sbG93aW5nIGFyZSBpbXBsZW1lbnRlZCBhcyBtYWNyb3MsIGRlZmluZWQgaW4gQGNv ZGV7Y2hhcmRlZnMuaH0uCitAQCAtMTM5Miw2ICsxNDQzLDEzIEBAIGNhbGwgQGNvZGV7cmxfcmVz aXplX3Rlcm1pbmFsKCl9IG9yIEBjb2Rle3JsX3NldF9zY3JlZW5fc2l6ZSgpfSB0byBmb3JjZQor IFJlYWRsaW5lIHRvIHVwZGF0ZSBpdHMgaWRlYSBvZiB0aGUgdGVybWluYWwgc2l6ZSB3aGVuIGEg QGNvZGV7U0lHV0lOQ0h9CisgaXMgcmVjZWl2ZWQuCisgCisrQGRlZnR5cGVmdW4gdm9pZCBybF9l Y2hvX3NpZ25hbF9jaGFyIChpbnQgc2lnKQorK0lmIGFuIGFwcGxpY2F0aW9uIHdpc2hlcyB0byBp bnN0YWxsIGl0cyBvd24gc2lnbmFsIGhhbmRsZXJzLCBidXQgc3RpbGwKKytoYXZlIHJlYWRsaW5l IGRpc3BsYXkgY2hhcmFjdGVycyB0aGF0IGdlbmVyYXRlIHNpZ25hbHMsIGNhbGxpbmcgdGhpcwor K2Z1bmN0aW9uIHdpdGggQHZhcntzaWd9IHNldCB0byBAY29kZXtTSUdJTlR9LCBAY29kZXtTSUdR VUlUfSwgb3IKKytAY29kZXtTSUdUU1RQfSB3aWxsIGRpc3BsYXkgdGhlIGNoYXJhY3RlciBnZW5l cmF0aW5nIHRoYXQgc2lnbmFsLgorK0BlbmQgZGVmdHlwZWZ1bgorKworIEBkZWZ0eXBlZnVuIHZv aWQgcmxfcmVzaXplX3Rlcm1pbmFsICh2b2lkKQorIFVwZGF0ZSBSZWFkbGluZSdzIGludGVybmFs IHNjcmVlbiBzaXplIGJ5IHJlYWRpbmcgdmFsdWVzIGZyb20gdGhlIGtlcm5lbC4KKyBAZW5kIGRl ZnR5cGVmdW4KK0BAIC0xNjU5LDE1ICsxNzE3LDQ5IEBAIGZyb20gdGhlIGFycmF5IG11c3QgYmUg ZnJlZWQuCisgCisgQGRlZnR5cGV2YXIge3JsX2ljcHBmdW5jX3QgKn0gcmxfZGlyZWN0b3J5X2Nv bXBsZXRpb25faG9vaworIFRoaXMgZnVuY3Rpb24sIGlmIGRlZmluZWQsIGlzIGFsbG93ZWQgdG8g bW9kaWZ5IHRoZSBkaXJlY3RvcnkgcG9ydGlvbgorLW9mIGZpbGVuYW1lcyBSZWFkbGluZSBjb21w bGV0ZXMuICBJdCBpcyBjYWxsZWQgd2l0aCB0aGUgYWRkcmVzcyBvZiBhCistc3RyaW5nICh0aGUg Y3VycmVudCBkaXJlY3RvcnkgbmFtZSkgYXMgYW4gYXJndW1lbnQsIGFuZCBtYXkgbW9kaWZ5IHRo YXQgc3RyaW5nLgorK29mIGZpbGVuYW1lcyBSZWFkbGluZSBjb21wbGV0ZXMuCisrSXQgY291bGQg YmUgdXNlZCB0byBleHBhbmQgc3ltYm9saWMgbGlua3Mgb3Igc2hlbGwgdmFyaWFibGVzIGluIHBh dGhuYW1lcy4KKytJdCBpcyBjYWxsZWQgd2l0aCB0aGUgYWRkcmVzcyBvZiBhIHN0cmluZyAodGhl IGN1cnJlbnQgZGlyZWN0b3J5IG5hbWUpIGFzIGFuCisrYXJndW1lbnQsIGFuZCBtYXkgbW9kaWZ5 IHRoYXQgc3RyaW5nLgorIElmIHRoZSBzdHJpbmcgaXMgcmVwbGFjZWQgd2l0aCBhIG5ldyBzdHJp bmcsIHRoZSBvbGQgdmFsdWUgc2hvdWxkIGJlIGZyZWVkLgorIEFueSBtb2RpZmllZCBkaXJlY3Rv cnkgbmFtZSBzaG91bGQgaGF2ZSBhIHRyYWlsaW5nIHNsYXNoLgorLVRoZSBtb2RpZmllZCB2YWx1 ZSB3aWxsIGJlIGRpc3BsYXllZCBhcyBwYXJ0IG9mIHRoZSBjb21wbGV0aW9uLCByZXBsYWNpbmcK KytUaGUgbW9kaWZpZWQgdmFsdWUgd2lsbCBiZSB1c2VkIGFzIHBhcnQgb2YgdGhlIGNvbXBsZXRp b24sIHJlcGxhY2luZworIHRoZSBkaXJlY3RvcnkgcG9ydGlvbiBvZiB0aGUgcGF0aG5hbWUgdGhl IHVzZXIgdHlwZWQuCistSXQgcmV0dXJucyBhbiBpbnRlZ2VyIHRoYXQgc2hvdWxkIGJlIG5vbi16 ZXJvIGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcworLWl0cyBkaXJlY3RvcnkgYXJndW1lbnQuCist SXQgY291bGQgYmUgdXNlZCB0byBleHBhbmQgc3ltYm9saWMgbGlua3Mgb3Igc2hlbGwgdmFyaWFi bGVzIGluIHBhdGhuYW1lcy4KKytBdCB0aGUgbGVhc3QsIGV2ZW4gaWYgbm8gb3RoZXIgZXhwYW5z aW9uIGlzIHBlcmZvcm1lZCwgdGhpcyBmdW5jdGlvbiBzaG91bGQKKytyZW1vdmUgYW55IHF1b3Rl IGNoYXJhY3RlcnMgZnJvbSB0aGUgZGlyZWN0b3J5IG5hbWUsIGJlY2F1c2UgaXRzIHJlc3VsdCB3 aWxsCisrYmUgcGFzc2VkIGRpcmVjdGx5IHRvIEBjb2Rle29wZW5kaXIoKX0uCisrVGhlIGRpcmVj dG9yeSBjb21wbGV0aW9uIGhvb2sgcmV0dXJucyBhbiBpbnRlZ2VyIHRoYXQgc2hvdWxkIGJlIG5v bi16ZXJvIGlmCisrdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIGl0cyBkaXJlY3RvcnkgYXJndW1lbnQu CisrVGhlIGZ1bmN0aW9uIHNob3VsZCBub3QgbW9kaWZ5IHRoZSBkaXJlY3RvcnkgYXJndW1lbnQg aWYgaXQgcmV0dXJucyAwLgorK0BlbmQgZGVmdHlwZXZhcgorKworK0BpZ25vcmUKKytAZGVmdHlw ZXZhciBleHRlcm4gcmxfaWNwcGZ1bmNfdCAqcmxfZGlyZWN0b3J5X3Jld3JpdGVfaG9vazsKKytJ ZiBub24temVybywgdGhpcyBpcyB0aGUgYWRkcmVzcyBvZiBhIGZ1bmN0aW9uIHRvIGNhbGwgd2hl biBjb21wbGV0aW5nCisrYSBkaXJlY3RvcnkgbmFtZS4gIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhl IGFkZHJlc3Mgb2YgdGhlIGRpcmVjdG9yeSBuYW1lCisrdG8gYmUgbW9kaWZpZWQgYXMgYW4gYXJn dW1lbnQuICBVbmxpa2UgQGNvZGV7cmxfZGlyZWN0b3J5X2NvbXBsZXRpb25faG9va30sCisraXQg b25seSBtb2RpZmllcyB0aGUgZGlyZWN0b3J5IG5hbWUgdXNlZCBpbiBAY29kZXtvcGVuZGlyfSwg bm90IHdoYXQgaXMKKytkaXNwbGF5ZWQgd2hlbiB0aGUgcG9zc2libGUgY29tcGxldGlvbnMgYXJl IHByaW50ZWQgb3IgaW5zZXJ0ZWQuICBJdCBpcworK2NhbGxlZCBiZWZvcmUgcmxfZGlyZWN0b3J5 X2NvbXBsZXRpb25faG9vay4KKysKKytJJ20gbm90IGhhcHB5IHdpdGggaG93IHRoaXMgd29ya3Mg eWV0LCBzbyBpdCdzIHVuZG9jdW1lbnRlZC4KKytAZW5kIGRlZnR5cGV2YXIKKytAZW5kIGlnbm9y ZQorKworK0BkZWZ0eXBldmFyIHtybF9kZXF1b3RlX2Z1bmNfdCAqfSBybF9maWxlbmFtZV9yZXdy aXRlX2hvb2sKKytJZiBub24temVybywgdGhpcyBpcyB0aGUgYWRkcmVzcyBvZiBhIGZ1bmN0aW9u IGNhbGxlZCB3aGVuIHJlYWRpbmcKKytkaXJlY3RvcnkgZW50cmllcyBmcm9tIHRoZSBmaWxlc3lz dGVtIGZvciBjb21wbGV0aW9uIGFuZCBjb21wYXJpbmcKKyt0aGVtIHRvIHRoZSBwYXJ0aWFsIHdv cmQgdG8gYmUgY29tcGxldGVkLiAgVGhlIGZ1bmN0aW9uIHNob3VsZAorK3BlcmZvcm0gYW55IG5l Y2VzYXJ5IGFwcGxpY2F0aW9uIG9yIHN5c3RlbS1zcGVjaWZpYyBjb252ZXJzaW9uIG9uCisrdGhl IGZpbGVuYW1lLCBzdWNoIGFzIGNvbnZlcnRpbmcgYmV0d2VlbiBjaGFyYWN0ZXIgc2V0cyBvciBj b252ZXJ0aW5nCisrZnJvbSBhIGZpbGVzeXN0ZW0gZm9ybWF0IHRvIGEgY2hhcmFjdGVyIGlucHV0 IGZvcm1hdC4KKytUaGUgZnVuY3Rpb24gdGFrZXMgdHdvIGFyZ3VtZW50czogQHZhcntmbmFtZX0s IHRoZSBmaWxlbmFtZSB0byBiZSBjb252ZXJ0ZWQsCisrYW5kIEB2YXJ7Zm5sZW59LCBpdHMgbGVu Z3RoIGluIGJ5dGVzLgorK0l0IG11c3QgZWl0aGVyIHJldHVybiBpdHMgZmlyc3QgYXJndW1lbnQg KGlmIG5vIGNvbnZlcnNpb24gdGFrZXMgcGxhY2UpCisrb3IgdGhlIGNvbnZlcnRlZCBmaWxlbmFt ZSBpbiBuZXdseS1hbGxvY2F0ZWQgbWVtb3J5LiAgVGhlIGNvbnZlcnRlZAorK2Zvcm0gaXMgdXNl ZCB0byBjb21wYXJlIGFnYWluc3QgdGhlIHdvcmQgdG8gYmUgY29tcGxldGVkLCBhbmQsIGlmIGl0 CisrbWF0Y2hlcywgaXMgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgbWF0Y2hlcy4gIFJlYWRsaW5lIHdp bGwgZnJlZSB0aGUKKythbGxvY2F0ZWQgc3RyaW5nLgorIEBlbmQgZGVmdHlwZXZhcgorIAorIEBk ZWZ0eXBldmFyIHtybF9jb21wZGlzcF9mdW5jX3QgKn0gcmxfY29tcGxldGlvbl9kaXNwbGF5X21h dGNoZXNfaG9vaworQEAgLTE4MjIsNiArMTkxNCwxNSBAQCBpZiB0aGUgYXBwbGljYXRpb24ncyBj b21wbGV0aW9uIGZ1bmN0aW9uIHJldHVybnMgbm8gbWF0Y2hlcy4KKyBJdCBzaG91bGQgYmUgc2V0 IG9ubHkgYnkgYW4gYXBwbGljYXRpb24ncyBjb21wbGV0aW9uIGZ1bmN0aW9uLgorIEBlbmQgZGVm dHlwZXZhcgorIAorK0BkZWZ0eXBldmFyIGludCBybF9zb3J0X2NvbXBsZXRpb25fbWF0Y2hlcwor K0lmIGFuIGFwcGxpY2F0aW9uIHNldHMgdGhpcyB2YXJpYWJsZSB0byAwLCBSZWFkbGluZSB3aWxs IG5vdCBzb3J0IHRoZQorK2xpc3Qgb2YgY29tcGxldGlvbnMgKHdoaWNoIGltcGxpZXMgdGhhdCBp dCBjYW5ub3QgcmVtb3ZlIGFueSBkdXBsaWNhdGUKKytjb21wbGV0aW9ucykuICBUaGUgZGVmYXVs dCB2YWx1ZSBpcyAxLCB3aGljaCBtZWFucyB0aGF0IFJlYWRsaW5lIHdpbGwKKytzb3J0IHRoZSBj b21wbGV0aW9ucyBhbmQsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YKKytAY29kZXtybF9pZ25v cmVfY29tcGxldGlvbl9kdXBsaWNhdGVzfSwgd2lsbCBhdHRlbXB0IHRvIHJlbW92ZSBkdXBsaWNh dGUKKyttYXRjaGVzLgorK0BlbmQgZGVmdHlwZXZhcgorKworIEBkZWZ0eXBldmFyIGludCBybF9j b21wbGV0aW9uX3R5cGUKKyBTZXQgdG8gYSBjaGFyYWN0ZXIgZGVzY3JpYmluZyB0aGUgdHlwZSBv ZiBjb21wbGV0aW9uIFJlYWRsaW5lIGlzIGN1cnJlbnRseQorIGF0dGVtcHRpbmc7IHNlZSB0aGUg ZGVzY3JpcHRpb24gb2YgQGNvZGV7cmxfY29tcGxldGVfaW50ZXJuYWwoKX0KK0BAIC0xODMxLDYg KzE5MzIsMTMgQEAgY29tcGxldGlvbiBmdW5jdGlvbiBpcyBjYWxsZWQsIGFsbG93aW5nIHN1Y2gg ZnVuY3Rpb25zIHRvIHByZXNlbnQKKyB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgQGNvZGV7cmxfY29t cGxldGUoKX0uCisgQGVuZCBkZWZ0eXBldmFyCisgCisrQGRlZnR5cGV2YXIgaW50IHJsX2NvbXBs ZXRpb25faW52b2tpbmdfa2V5CisrU2V0IHRvIHRoZSBmaW5hbCBjaGFyYWN0ZXIgaW4gdGhlIGtl eSBzZXF1ZW5jZSB0aGF0IGludm9rZWQgb25lIG9mIHRoZQorK2NvbXBsZXRpb24gZnVuY3Rpb25z IHRoYXQgY2FsbCBAY29kZXtybF9jb21wbGV0ZV9pbnRlcm5hbCgpfS4gIFRoaXMgaXMKKytzZXQg dG8gdGhlIGFwcHJvcHJpYXRlIHZhbHVlIGJlZm9yZSBhbnkgYXBwbGljYXRpb24tc3BlY2lmaWMg Y29tcGxldGlvbgorK2Z1bmN0aW9uIGlzIGNhbGxlZC4KKytAZW5kIGRlZnR5cGV2YXIKKysKKyBA ZGVmdHlwZXZhciBpbnQgcmxfaW5oaWJpdF9jb21wbGV0aW9uCisgSWYgdGhpcyB2YXJpYWJsZSBp cyBub24temVybywgY29tcGxldGlvbiBpcyBpbmhpYml0ZWQuICBUaGUgY29tcGxldGlvbgorIGNo YXJhY3RlciB3aWxsIGJlIGluc2VydGVkIGFzIGFueSBvdGhlciBib3VuZCB0byBAY29kZXtzZWxm LWluc2VydH0uCitAQCAtMTg1MSwyNyArMTk1OSw1MSBAQCBoaXN0b3J5IGxpc3QuCisgICAgR05V IFJlYWRsaW5lIGxpYnJhcnkuICBUaGlzIGFwcGxpY2F0aW9uIGludGVyYWN0aXZlbHkgYWxsb3dz IHVzZXJzCisgICAgdG8gbWFuaXB1bGF0ZSBmaWxlcyBhbmQgdGhlaXIgbW9kZXMuICovCisgCist I2luY2x1ZGUgPHN0ZGlvLmg+CisrI2lmZGVmIEhBVkVfQ09ORklHX0gKKysjICBpbmNsdWRlIDxj b25maWcuaD4KKysjZW5kaWYKKysKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUg PHN5cy9maWxlLmg+CisrI2lmZGVmIEhBVkVfU1lTX0ZJTEVfSAorKyMgIGluY2x1ZGUgPHN5cy9m aWxlLmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CistI2luY2x1ZGUgPHN5cy9l cnJuby5oPgorKworKyNpZmRlZiBIQVZFX1VOSVNURF9ICisrIyAgaW5jbHVkZSA8dW5pc3RkLmg+ CisrI2VuZGlmCisrCisrI2luY2x1ZGUgPGZjbnRsLmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+Cisr I2luY2x1ZGUgPGVycm5vLmg+CisrCisrI2lmIGRlZmluZWQgKEhBVkVfU1RSSU5HX0gpCisrIyAg aW5jbHVkZSA8c3RyaW5nLmg+CisrI2Vsc2UgLyogIUhBVkVfU1RSSU5HX0ggKi8KKysjICBpbmNs dWRlIDxzdHJpbmdzLmg+CisrI2VuZGlmIC8qICFIQVZFX1NUUklOR19IICovCisrCisrI2lmZGVm IEhBVkVfU1RETElCX0gKKysjICBpbmNsdWRlIDxzdGRsaWIuaD4KKysjZW5kaWYKKysKKysjaW5j bHVkZSA8dGltZS5oPgorIAorICNpbmNsdWRlIDxyZWFkbGluZS9yZWFkbGluZS5oPgorICNpbmNs dWRlIDxyZWFkbGluZS9oaXN0b3J5Lmg+CisgCistZXh0ZXJuIGNoYXIgKnhtYWxsb2MgKCk7Cisr ZXh0ZXJuIGNoYXIgKnhtYWxsb2MgUEFSQU1TKChzaXplX3QpKTsKKyAKKyAvKiBUaGUgbmFtZXMg b2YgZnVuY3Rpb25zIHRoYXQgYWN0dWFsbHkgZG8gdGhlIG1hbmlwdWxhdGlvbi4gKi8KKy1pbnQg Y29tX2xpc3QgX19QKChjaGFyICopKTsKKy1pbnQgY29tX3ZpZXcgX19QKChjaGFyICopKTsKKy1p bnQgY29tX3JlbmFtZSBfX1AoKGNoYXIgKikpOworLWludCBjb21fc3RhdCBfX1AoKGNoYXIgKikp OworLWludCBjb21fcHdkIF9fUCgoY2hhciAqKSk7CistaW50IGNvbV9kZWxldGUgX19QKChjaGFy ICopKTsKKy1pbnQgY29tX2hlbHAgX19QKChjaGFyICopKTsKKy1pbnQgY29tX2NkIF9fUCgoY2hh ciAqKSk7CistaW50IGNvbV9xdWl0IF9fUCgoY2hhciAqKSk7CisraW50IGNvbV9saXN0IFBBUkFN UygoY2hhciAqKSk7CisraW50IGNvbV92aWV3IFBBUkFNUygoY2hhciAqKSk7CisraW50IGNvbV9y ZW5hbWUgUEFSQU1TKChjaGFyICopKTsKKytpbnQgY29tX3N0YXQgUEFSQU1TKChjaGFyICopKTsK KytpbnQgY29tX3B3ZCBQQVJBTVMoKGNoYXIgKikpOworK2ludCBjb21fZGVsZXRlIFBBUkFNUygo Y2hhciAqKSk7CisraW50IGNvbV9oZWxwIFBBUkFNUygoY2hhciAqKSk7CisraW50IGNvbV9jZCBQ QVJBTVMoKGNoYXIgKikpOworK2ludCBjb21fcXVpdCBQQVJBTVMoKGNoYXIgKikpOworIAorIC8q IEEgc3RydWN0dXJlIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIG9uIHRoZSBjb21tYW5kcyB0 aGlzIHByb2dyYW0KKyAgICBjYW4gdW5kZXJzdGFuZC4gKi8KK0BAIC0xOTA0LDEyICsyMDM2LDEy IEBAIENPTU1BTkQgKmZpbmRfY29tbWFuZCAoKTsKKyAvKiBUaGUgbmFtZSBvZiB0aGlzIHByb2dy YW0sIGFzIHRha2VuIGZyb20gYXJndlswXS4gKi8KKyBjaGFyICpwcm9nbmFtZTsKKyAKKy0vKiBX aGVuIG5vbi16ZXJvLCB0aGlzIG1lYW5zIHRoZSB1c2VyIGlzIGRvbmUgdXNpbmcgdGhpcyBwcm9n cmFtLiAqLworKy8qIFdoZW4gbm9uLXplcm8sIHRoaXMgZ2xvYmFsIG1lYW5zIHRoZSB1c2VyIGlz IGRvbmUgdXNpbmcgdGhpcyBwcm9ncmFtLiAqLworIGludCBkb25lOworIAorIGNoYXIgKgorIGR1 cHN0ciAocykKKy0gICAgIGludCBzOworKyAgICAgY2hhciAqczsKKyBAeworICAgY2hhciAqcjsK KyAKK0BAIC0yMDM0LDEyICsyMTY2LDEyIEBAIHN0cmlwd2hpdGUgKHN0cmluZykKKyAvKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICovCisgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiAqLworIAorLWNoYXIgKmNvbW1hbmRfZ2VuZXJhdG9yIF9fUCgo Y29uc3QgY2hhciAqLCBpbnQpKTsKKy1jaGFyICoqZmlsZW1hbl9jb21wbGV0aW9uIF9fUCgoY29u c3QgY2hhciAqLCBpbnQsIGludCkpOworK2NoYXIgKmNvbW1hbmRfZ2VuZXJhdG9yIFBBUkFNUygo Y29uc3QgY2hhciAqLCBpbnQpKTsKKytjaGFyICoqZmlsZW1hbl9jb21wbGV0aW9uIFBBUkFNUygo Y29uc3QgY2hhciAqLCBpbnQsIGludCkpOworIAorLS8qIFRlbGwgdGhlIEdOVSBSZWFkbGluZSBs aWJyYXJ5IGhvdyB0byBjb21wbGV0ZS4gIFdlIHdhbnQgdG8gdHJ5IHRvCistICAgY29tcGxldGUg b24gY29tbWFuZCBuYW1lcyBpZiB0aGlzIGlzIHRoZSBmaXJzdCB3b3JkIGluIHRoZSBsaW5lLCBv cgorLSAgIG9uIGZpbGVuYW1lcyBpZiBub3QuICovCisrLyogVGVsbCB0aGUgR05VIFJlYWRsaW5l IGxpYnJhcnkgaG93IHRvIGNvbXBsZXRlLiAgV2Ugd2FudCB0byB0cnkgdG8gY29tcGxldGUKKysg ICBvbiBjb21tYW5kIG5hbWVzIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHdvcmQgaW4gdGhlIGxpbmUs IG9yIG9uIGZpbGVuYW1lcworKyAgIGlmIG5vdC4gKi8KKyBpbml0aWFsaXplX3JlYWRsaW5lICgp CisgQHsKKyAgIC8qIEFsbG93IGNvbmRpdGlvbmFsIHBhcnNpbmcgb2YgdGhlIH4vLmlucHV0cmMg ZmlsZS4gKi8KK0BAIC0yMDQ5LDExICsyMTgxLDExIEBAIGluaXRpYWxpemVfcmVhZGxpbmUgKCkK KyAgIHJsX2F0dGVtcHRlZF9jb21wbGV0aW9uX2Z1bmN0aW9uID0gZmlsZW1hbl9jb21wbGV0aW9u OworIEB9CisgCistLyogQXR0ZW1wdCB0byBjb21wbGV0ZSBvbiB0aGUgY29udGVudHMgb2YgVEVY VC4gIFNUQVJUIGFuZCBFTkQKKy0gICBib3VuZCB0aGUgcmVnaW9uIG9mIHJsX2xpbmVfYnVmZmVy IHRoYXQgY29udGFpbnMgdGhlIHdvcmQgdG8KKy0gICBjb21wbGV0ZS4gIFRFWFQgaXMgdGhlIHdv cmQgdG8gY29tcGxldGUuICBXZSBjYW4gdXNlIHRoZSBlbnRpcmUKKy0gICBjb250ZW50cyBvZiBy bF9saW5lX2J1ZmZlciBpbiBjYXNlIHdlIHdhbnQgdG8gZG8gc29tZSBzaW1wbGUKKy0gICBwYXJz aW5nLiAgUmV0dXJudGhlIGFycmF5IG9mIG1hdGNoZXMsIG9yIE5VTEwgaWYgdGhlcmUgYXJlbid0 IGFueS4gKi8KKysvKiBBdHRlbXB0IHRvIGNvbXBsZXRlIG9uIHRoZSBjb250ZW50cyBvZiBURVhU LiAgU1RBUlQgYW5kIEVORCBib3VuZCB0aGUKKysgICByZWdpb24gb2YgcmxfbGluZV9idWZmZXIg dGhhdCBjb250YWlucyB0aGUgd29yZCB0byBjb21wbGV0ZS4gIFRFWFQgaXMKKysgICB0aGUgd29y ZCB0byBjb21wbGV0ZS4gIFdlIGNhbiB1c2UgdGhlIGVudGlyZSBjb250ZW50cyBvZiBybF9saW5l X2J1ZmZlcgorKyAgIGluIGNhc2Ugd2Ugd2FudCB0byBkbyBzb21lIHNpbXBsZSBwYXJzaW5nLiAg UmV0dXJuIHRoZSBhcnJheSBvZiBtYXRjaGVzLAorKyAgIG9yIE5VTEwgaWYgdGhlcmUgYXJlbid0 IGFueS4gKi8KKyBjaGFyICoqCisgZmlsZW1hbl9jb21wbGV0aW9uICh0ZXh0LCBzdGFydCwgZW5k KQorICAgICAgY29uc3QgY2hhciAqdGV4dDsKK0BAIC0yMDcyLDkgKzIyMDQsOSBAQCBmaWxlbWFu X2NvbXBsZXRpb24gKHRleHQsIHN0YXJ0LCBlbmQpCisgICByZXR1cm4gKG1hdGNoZXMpOworIEB9 CisgCistLyogR2VuZXJhdG9yIGZ1bmN0aW9uIGZvciBjb21tYW5kIGNvbXBsZXRpb24uICBTVEFU RSBsZXRzIHVzCistICAga25vdyB3aGV0aGVyIHRvIHN0YXJ0IGZyb20gc2NyYXRjaDsgd2l0aG91 dCBhbnkgc3RhdGUKKy0gICAoaS5lLiBTVEFURSA9PSAwKSwgdGhlbiB3ZSBzdGFydCBhdCB0aGUg dG9wIG9mIHRoZSBsaXN0LiAqLworKy8qIEdlbmVyYXRvciBmdW5jdGlvbiBmb3IgY29tbWFuZCBj b21wbGV0aW9uLiAgU1RBVEUgbGV0cyB1cyBrbm93IHdoZXRoZXIKKysgICB0byBzdGFydCBmcm9t IHNjcmF0Y2g7IHdpdGhvdXQgYW55IHN0YXRlIChpLmUuIFNUQVRFID09IDApLCB0aGVuIHdlCisr ICAgc3RhcnQgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdC4gKi8KKyBjaGFyICoKKyBjb21tYW5kX2dl bmVyYXRvciAodGV4dCwgc3RhdGUpCisgICAgICBjb25zdCBjaGFyICp0ZXh0OworQEAgLTIwODMs MTcgKzIyMTUsMTYgQEAgY29tbWFuZF9nZW5lcmF0b3IgKHRleHQsIHN0YXRlKQorICAgc3RhdGlj IGludCBsaXN0X2luZGV4LCBsZW47CisgICBjaGFyICpuYW1lOworIAorLSAgLyogSWYgdGhpcyBp cyBhIG5ldyB3b3JkIHRvIGNvbXBsZXRlLCBpbml0aWFsaXplIG5vdy4gIFRoaXMKKy0gICAgIGlu Y2x1ZGVzIHNhdmluZyB0aGUgbGVuZ3RoIG9mIFRFWFQgZm9yIGVmZmljaWVuY3ksIGFuZAorLSAg ICAgaW5pdGlhbGl6aW5nIHRoZSBpbmRleCB2YXJpYWJsZSB0byAwLiAqLworKyAgLyogSWYgdGhp cyBpcyBhIG5ldyB3b3JkIHRvIGNvbXBsZXRlLCBpbml0aWFsaXplIG5vdy4gIFRoaXMgaW5jbHVk ZXMKKysgICAgIHNhdmluZyB0aGUgbGVuZ3RoIG9mIFRFWFQgZm9yIGVmZmljaWVuY3ksIGFuZCBp bml0aWFsaXppbmcgdGhlIGluZGV4CisrICAgICB2YXJpYWJsZSB0byAwLiAqLworICAgaWYgKCFz dGF0ZSkKKyAgICAgQHsKKyAgICAgICBsaXN0X2luZGV4ID0gMDsKKyAgICAgICBsZW4gPSBzdHJs ZW4gKHRleHQpOworICAgICBAfQorIAorLSAgLyogUmV0dXJuIHRoZSBuZXh0IG5hbWUgd2hpY2gg cGFydGlhbGx5IG1hdGNoZXMgZnJvbSB0aGUKKy0gICAgIGNvbW1hbmQgbGlzdC4gKi8KKysgIC8q IFJldHVybiB0aGUgbmV4dCBuYW1lIHdoaWNoIHBhcnRpYWxseSBtYXRjaGVzIGZyb20gdGhlIGNv bW1hbmQgbGlzdC4gKi8KKyAgIHdoaWxlIChuYW1lID0gY29tbWFuZHNbbGlzdF9pbmRleF0ubmFt ZSkKKyAgICAgQHsKKyAgICAgICBsaXN0X2luZGV4Kys7CitAQCAtMjEzMyw3ICsyMjY0LDEyIEBA IGNvbV92aWV3IChhcmcpCisgICBpZiAoIXZhbGlkX2FyZ3VtZW50ICgidmlldyIsIGFyZykpCisg ICAgIHJldHVybiAxOworIAorKyNpZiBkZWZpbmVkIChfX01TRE9TX18pCisrICAvKiBtb3JlLmNv bSBkb2Vzbid0IGdyb2sgc2xhc2hlcyBpbiBwYXRobmFtZXMgKi8KKysgIHNwcmludGYgKHN5c2Nv bSwgImxlc3MgJXMiLCBhcmcpOworKyNlbHNlCisgICBzcHJpbnRmIChzeXNjb20sICJtb3JlICVz IiwgYXJnKTsKKysjZW5kaWYKKyAgIHJldHVybiAoc3lzdGVtIChzeXNjb20pKTsKKyBAfQorIAor QEAgLTIxNjAsNyArMjI5Niw4IEBAIGNvbV9zdGF0IChhcmcpCisgCisgICBwcmludGYgKCJTdGF0 aXN0aWNzIGZvciBgJXMnOlxuIiwgYXJnKTsKKyAKKy0gIHByaW50ZiAoIiVzIGhhcyAlZCBsaW5r JXMsIGFuZCBpcyAlZCBieXRlJXMgaW4gbGVuZ3RoLlxuIiwgYXJnLAorKyAgcHJpbnRmICgiJXMg aGFzICVkIGxpbmslcywgYW5kIGlzICVkIGJ5dGUlcyBpbiBsZW5ndGguXG4iLAorKwkgIGFyZywK KyAgICAgICAgICAgZmluZm8uc3RfbmxpbmssCisgICAgICAgICAgIChmaW5mby5zdF9ubGluayA9 PSAxKSA/ICIiIDogInMiLAorICAgICAgICAgICBmaW5mby5zdF9zaXplLAorQEAgLTIyNDksOCAr MjM4Niw3IEBAIGNvbV9wd2QgKGlnbm9yZSkKKyAgIHJldHVybiAwOworIEB9CisgCistLyogVGhl IHVzZXIgd2lzaGVzIHRvIHF1aXQgdXNpbmcgdGhpcyBwcm9ncmFtLiAgSnVzdCBzZXQgRE9ORQor LSAgIG5vbi16ZXJvLiAqLworKy8qIFRoZSB1c2VyIHdpc2hlcyB0byBxdWl0IHVzaW5nIHRoaXMg cHJvZ3JhbS4gIEp1c3Qgc2V0IERPTkUgbm9uLXplcm8uICovCisgY29tX3F1aXQgKGFyZykKKyAg ICAgIGNoYXIgKmFyZzsKKyBAeworQEAgLTIyNjMsMTMgKzIzOTksMTIgQEAgdG9vX2Rhbmdlcm91 cyAoY2FsbGVyKQorICAgICAgY2hhciAqY2FsbGVyOworIEB7CisgICBmcHJpbnRmIChzdGRlcnIs CistICAgICAgICAgICAiJXM6IFRvbyBkYW5nZXJvdXMgZm9yIG1lIHRvIGRpc3RyaWJ1dGUuXG4i LAorKyAgICAgICAgICAgIiVzOiBUb28gZGFuZ2Vyb3VzIGZvciBtZSB0byBkaXN0cmlidXRlLiAg V3JpdGUgaXQgeW91cnNlbGYuXG4iLAorICAgICAgICAgICAgY2FsbGVyKTsKKy0gIGZwcmludGYg KHN0ZGVyciwgIldyaXRlIGl0IHlvdXJzZWxmLlxuIik7CisgQH0KKyAKKy0vKiBSZXR1cm4gbm9u LXplcm8gaWYgQVJHIGlzIGEgdmFsaWQgYXJndW1lbnQgZm9yIENBTExFUiwKKy0gICBlbHNlIHBy aW50IGFuIGVycm9yIG1lc3NhZ2UgYW5kIHJldHVybiB6ZXJvLiAqLworKy8qIFJldHVybiBub24t emVybyBpZiBBUkcgaXMgYSB2YWxpZCBhcmd1bWVudCBmb3IgQ0FMTEVSLCBlbHNlIHByaW50Cisr ICAgYW4gZXJyb3IgbWVzc2FnZSBhbmQgcmV0dXJuIHplcm8uICovCisgaW50CisgdmFsaWRfYXJn dW1lbnQgKGNhbGxlciwgYXJnKQorICAgICAgY2hhciAqY2FsbGVyLCAqYXJnOworLS0tIGEvcmVh ZGxpbmUvZG9jL3JsdXNlci50ZXhpCisrKysgYi9yZWFkbGluZS9kb2Mvcmx1c2VyLnRleGkKK0BA IC0xLDcgKzEsNiBAQAorIEBjb21tZW50ICUqKnN0YXJ0IG9mIGhlYWRlciAoVGhpcyBpcyBmb3Ig cnVubmluZyBUZXhpbmZvIG9uIGEgcmVnaW9uLikKKyBAc2V0ZmlsZW5hbWUgcmx1c2VyLmluZm8K KyBAY29tbWVudCAlKiplbmQgb2YgaGVhZGVyIChUaGlzIGlzIGZvciBydW5uaW5nIFRleGluZm8g b24gYSByZWdpb24uKQorLUBzZXRjaGFwdGVybmV3cGFnZSBvZGQKKyAKKyBAaWdub3JlCisgVGhp cyBmaWxlIGRvY3VtZW50cyB0aGUgZW5kIHVzZXIgaW50ZXJmYWNlIHRvIHRoZSBHTlUgY29tbWFu ZCBsaW5lCitAQCAtMTAsNyArOSw3IEBAIHVzZSB0aGVzZSBmZWF0dXJlcy4gIFRoZXJlIGlzIGEg ZG9jdW1lbnQgZW50aXRsZWQgInJlYWRsaW5lLnRleGluZm8iCisgd2hpY2ggY29udGFpbnMgYm90 aCBlbmQtdXNlciBhbmQgcHJvZ3JhbW1lciBkb2N1bWVudGF0aW9uIGZvciB0aGUKKyBHTlUgUmVh ZGxpbmUgTGlicmFyeS4KKyAKKy1Db3B5cmlnaHQgKEMpIDE5ODgtMjAwNSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKytDb3B5cmlnaHQgKEMpIDE5ODgtLTIwMTEgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisgCisgQXV0aG9yZWQgYnkgQnJpYW4gRm94IGFuZCBDaGV0IFJh bWV5LgorIAorQEAgLTQ4LDYgKzQ3LDE2IEBAIGNvbW1hbmQgbGluZSBlZGl0aW5nIGludGVyZmFj ZS4KKyBAaWZzZXQgQmFzaEZlYXR1cmVzCisgQ29tbWFuZCBsaW5lIGVkaXRpbmcgaXMgcHJvdmlk ZWQgYnkgdGhlIFJlYWRsaW5lIGxpYnJhcnksIHdoaWNoIGlzCisgdXNlZCBieSBzZXZlcmFsIGRp ZmZlcmVudCBwcm9ncmFtcywgaW5jbHVkaW5nIEJhc2guCisrQ29tbWFuZCBsaW5lIGVkaXRpbmcg aXMgZW5hYmxlZCBieSBkZWZhdWx0IHdoZW4gdXNpbmcgYW4gaW50ZXJhY3RpdmUgc2hlbGwsCisr dW5sZXNzIHRoZSBAb3B0aW9uey0tbm9lZGl0aW5nfSBvcHRpb24gaXMgc3VwcGxpZWQgYXQgc2hl bGwgaW52b2NhdGlvbi4KKytMaW5lIGVkaXRpbmcgaXMgYWxzbyB1c2VkIHdoZW4gdXNpbmcgdGhl IEBvcHRpb257LWV9IG9wdGlvbiB0byB0aGUKKytAY29kZXtyZWFkfSBidWlsdGluIGNvbW1hbmQg KEBweHJlZntCYXNoIEJ1aWx0aW5zfSkuCisrQnkgZGVmYXVsdCwgdGhlIGxpbmUgZWRpdGluZyBj b21tYW5kcyBhcmUgc2ltaWxhciB0byB0aG9zZSBvZiBFbWFjcy4KKytBIHZpLXN0eWxlIGxpbmUg ZWRpdGluZyBpbnRlcmZhY2UgaXMgYWxzbyBhdmFpbGFibGUuCisrTGluZSBlZGl0aW5nIGNhbiBi ZSBlbmFibGVkIGF0IGFueSB0aW1lIHVzaW5nIHRoZSBAb3B0aW9uey1vIGVtYWNzfSBvcgorK0Bv cHRpb257LW8gdml9IG9wdGlvbnMgdG8gdGhlIEBjb2Rle3NldH0gYnVpbHRpbiBjb21tYW5kCisr KEBweHJlZntUaGUgU2V0IEJ1aWx0aW59KSwgb3IgZGlzYWJsZWQgdXNpbmcgdGhlIEBvcHRpb257 K28gZW1hY3N9IG9yIAorK0BvcHRpb257K28gdml9IG9wdGlvbnMgdG8gQGNvZGV7c2V0fS4KKyBA ZW5kIGlmc2V0CisgCisgQG1lbnUKK0BAIC0zMzYsNyArMzQ1LDkgQEAgZmlsZSBpcyB0YWtlbiBm cm9tIHRoZSB2YWx1ZSBvZiB0aGUgc2hlbGwgdmFyaWFibGUgQGVudntJTlBVVFJDfS4gIElmCisg QGlmY2xlYXIgQmFzaEZlYXR1cmVzCisgZmlsZSBpcyB0YWtlbiBmcm9tIHRoZSB2YWx1ZSBvZiB0 aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgQGVudntJTlBVVFJDfS4gIElmCisgQGVuZCBpZmNsZWFy CistdGhhdCB2YXJpYWJsZSBpcyB1bnNldCwgdGhlIGRlZmF1bHQgaXMgQGZpbGV7fi8uaW5wdXRy Y30uCisrdGhhdCB2YXJpYWJsZSBpcyB1bnNldCwgdGhlIGRlZmF1bHQgaXMgQGZpbGV7fi8uaW5w dXRyY30uICBJZiB0aGF0CisrZmlsZSBkb2VzIG5vdCBleGlzdCBvciBjYW5ub3QgYmUgcmVhZCwg dGhlIHVsdGltYXRlIGRlZmF1bHQgaXMKKytAZmlsZXsvZXRjL2lucHV0cmN9LgorIAorIFdoZW4g YSBwcm9ncmFtIHdoaWNoIHVzZXMgdGhlIFJlYWRsaW5lIGxpYnJhcnkgc3RhcnRzIHVwLCB0aGUK KyBpbml0IGZpbGUgaXMgcmVhZCwgYW5kIHRoZSBrZXkgYmluZGluZ3MgYXJlIHNldC4KK0BAIC00 MjAsMTEgKzQzMSwzNCBAQCBUaGUgc3RyaW5nIHRvIGluc2VydCBhdCB0aGUgYmVnaW5uaW5nIG9m IHRoZSBsaW5lIHdoZW4gdGhlCisgQGNvZGV7aW5zZXJ0LWNvbW1lbnR9IGNvbW1hbmQgaXMgZXhl Y3V0ZWQuICBUaGUgZGVmYXVsdCB2YWx1ZQorIGlzIEBjb2RleyIjIn0uCisgCisrQGl0ZW0gY29t cGxldGlvbi1kaXNwbGF5LXdpZHRoCisrQHZpbmRleCBjb21wbGV0aW9uLWRpc3BsYXktd2lkdGgK KytUaGUgbnVtYmVyIG9mIHNjcmVlbiBjb2x1bW5zIHVzZWQgdG8gZGlzcGxheSBwb3NzaWJsZSBt YXRjaGVzCisrd2hlbiBwZXJmb3JtaW5nIGNvbXBsZXRpb24uCisrVGhlIHZhbHVlIGlzIGlnbm9y ZWQgaWYgaXQgaXMgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIHRoZSB0ZXJtaW5hbAorK3Nj cmVlbiB3aWR0aC4KKytBIHZhbHVlIG9mIDAgd2lsbCBjYXVzZSBtYXRjaGVzIHRvIGJlIGRpc3Bs YXllZCBvbmUgcGVyIGxpbmUuCisrVGhlIGRlZmF1bHQgdmFsdWUgaXMgLTEuCisrCisgQGl0ZW0g Y29tcGxldGlvbi1pZ25vcmUtY2FzZQorK0B2aW5kZXggY29tcGxldGlvbi1pZ25vcmUtY2FzZQor IElmIHNldCB0byBAc2FtcHtvbn0sIFJlYWRsaW5lIHBlcmZvcm1zIGZpbGVuYW1lIG1hdGNoaW5n IGFuZCBjb21wbGV0aW9uCisgaW4gYSBjYXNlLWluc2Vuc2l0aXZlIGZhc2hpb24uCisgVGhlIGRl ZmF1bHQgdmFsdWUgaXMgQHNhbXB7b2ZmfS4KKyAKKytAaXRlbSBjb21wbGV0aW9uLW1hcC1jYXNl CisrQHZpbmRleCBjb21wbGV0aW9uLW1hcC1jYXNlCisrSWYgc2V0IHRvIEBzYW1we29ufSwgYW5k IEB2YXJ7Y29tcGxldGlvbi1pZ25vcmUtY2FzZX0gaXMgZW5hYmxlZCwgUmVhZGxpbmUKKyt0cmVh dHMgaHlwaGVucyAoQHNhbXB7LX0pIGFuZCB1bmRlcnNjb3JlcyAoQHNhbXB7X30pIGFzIGVxdWl2 YWxlbnQgd2hlbgorK3BlcmZvcm1pbmcgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlbmFtZSBtYXRjaGlu ZyBhbmQgY29tcGxldGlvbi4KKysKKytAaXRlbSBjb21wbGV0aW9uLXByZWZpeC1kaXNwbGF5LWxl bmd0aAorK0B2aW5kZXggY29tcGxldGlvbi1wcmVmaXgtZGlzcGxheS1sZW5ndGgKKytUaGUgbGVu Z3RoIGluIGNoYXJhY3RlcnMgb2YgdGhlIGNvbW1vbiBwcmVmaXggb2YgYSBsaXN0IG9mIHBvc3Np YmxlCisrY29tcGxldGlvbnMgdGhhdCBpcyBkaXNwbGF5ZWQgd2l0aG91dCBtb2RpZmljYXRpb24u ICBXaGVuIHNldCB0byBhCisrdmFsdWUgZ3JlYXRlciB0aGFuIHplcm8sIGNvbW1vbiBwcmVmaXhl cyBsb25nZXIgdGhhbiB0aGlzIHZhbHVlIGFyZQorK3JlcGxhY2VkIHdpdGggYW4gZWxsaXBzaXMg d2hlbiBkaXNwbGF5aW5nIHBvc3NpYmxlIGNvbXBsZXRpb25zLgorKworIEBpdGVtIGNvbXBsZXRp b24tcXVlcnktaXRlbXMKKyBAdmluZGV4IGNvbXBsZXRpb24tcXVlcnktaXRlbXMKKyBUaGUgbnVt YmVyIG9mIHBvc3NpYmxlIGNvbXBsZXRpb25zIHRoYXQgZGV0ZXJtaW5lcyB3aGVuIHRoZSB1c2Vy IGlzCitAQCAtNDU2LDEyICs0OTAsMjMgQEAga2V5IGJpbmRpbmdzIGlzIHVzZWQuICBCeSBkZWZh dWx0LCBSZWFkbGluZSBzdGFydHMgdXAgaW4gRW1hY3MgZWRpdGluZworIG1vZGUsIHdoZXJlIHRo ZSBrZXlzdHJva2VzIGFyZSBtb3N0IHNpbWlsYXIgdG8gRW1hY3MuICBUaGlzIHZhcmlhYmxlIGNh biBiZQorIHNldCB0byBlaXRoZXIgQHNhbXB7ZW1hY3N9IG9yIEBzYW1we3ZpfS4KKyAKKytAaXRl bSBlY2hvLWNvbnRyb2wtY2hhcmFjdGVycworK1doZW4gc2V0IHRvIEBzYW1we29ufSwgb24gb3Bl cmF0aW5nIHN5c3RlbXMgdGhhdCBpbmRpY2F0ZSB0aGV5IHN1cHBvcnQgaXQsCisrcmVhZGxpbmUg ZWNob2VzIGEgY2hhcmFjdGVyIGNvcnJlc3BvbmRpbmcgdG8gYSBzaWduYWwgZ2VuZXJhdGVkIGZy b20gdGhlCisra2V5Ym9hcmQuICBUaGUgZGVmYXVsdCBpcyBAc2FtcHtvbn0uCisrCisgQGl0ZW0g ZW5hYmxlLWtleXBhZAorIEB2aW5kZXggZW5hYmxlLWtleXBhZAorIFdoZW4gc2V0IHRvIEBzYW1w e29ufSwgUmVhZGxpbmUgd2lsbCB0cnkgdG8gZW5hYmxlIHRoZSBhcHBsaWNhdGlvbgorIGtleXBh ZCB3aGVuIGl0IGlzIGNhbGxlZC4gIFNvbWUgc3lzdGVtcyBuZWVkIHRoaXMgdG8gZW5hYmxlIHRo ZQorIGFycm93IGtleXMuICBUaGUgZGVmYXVsdCBpcyBAc2FtcHtvZmZ9LgorIAorK0BpdGVtIGVu YWJsZS1tZXRhLWtleQorK1doZW4gc2V0IHRvIEBzYW1we29ufSwgUmVhZGxpbmUgd2lsbCB0cnkg dG8gZW5hYmxlIGFueSBtZXRhIG1vZGlmaWVyCisra2V5IHRoZSB0ZXJtaW5hbCBjbGFpbXMgdG8g c3VwcG9ydCB3aGVuIGl0IGlzIGNhbGxlZC4gIE9uIG1hbnkgdGVybWluYWxzLAorK3RoZSBtZXRh IGtleSBpcyB1c2VkIHRvIHNlbmQgZWlnaHQtYml0IGNoYXJhY3RlcnMuCisrVGhlIGRlZmF1bHQg aXMgQHNhbXB7b259LgorKworIEBpdGVtIGV4cGFuZC10aWxkZQorIEB2aW5kZXggZXhwYW5kLXRp bGRlCisgSWYgc2V0IHRvIEBzYW1we29ufSwgdGlsZGUgZXhwYW5zaW9uIGlzIHBlcmZvcm1lZCB3 aGVuIFJlYWRsaW5lCitAQCAtNDY5LDEwICs1MTQsMTYgQEAgYXR0ZW1wdHMgd29yZCBjb21wbGV0 aW9uLiAgVGhlIGRlZmF1bHQgaXMgQHNhbXB7b2ZmfS4KKyAKKyBAaXRlbSBoaXN0b3J5LXByZXNl cnZlLXBvaW50CisgQHZpbmRleCBoaXN0b3J5LXByZXNlcnZlLXBvaW50CistSWYgc2V0IHRvIEBz YW1we29ufSwgdGhlIGhpc3RvcnkgY29kZSBhdHRlbXB0cyB0byBwbGFjZSBwb2ludCBhdCB0aGUK KytJZiBzZXQgdG8gQHNhbXB7b259LCB0aGUgaGlzdG9yeSBjb2RlIGF0dGVtcHRzIHRvIHBsYWNl IHRoZSBwb2ludCAodGhlCisrY3VycmVudCBjdXJzb3IgcG9zaXRpb24pIGF0IHRoZQorIHNhbWUg bG9jYXRpb24gb24gZWFjaCBoaXN0b3J5IGxpbmUgcmV0cmlldmVkIHdpdGggQGNvZGV7cHJldmlv dXMtaGlzdG9yeX0KKyBvciBAY29kZXtuZXh0LWhpc3Rvcnl9LiAgVGhlIGRlZmF1bHQgaXMgQHNh bXB7b2ZmfS4KKyAKKytAaXRlbSBoaXN0b3J5LXNpemUKKytAdmluZGV4IGhpc3Rvcnktc2l6ZQor K1NldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgaGlzdG9yeSBlbnRyaWVzIHNhdmVkIGluIHRoZSBo aXN0b3J5IGxpc3QuICBJZgorK3NldCB0byB6ZXJvLCB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4g dGhlIGhpc3RvcnkgbGlzdCBpcyBub3QgbGltaXRlZC4KKysKKyBAaXRlbSBob3Jpem9udGFsLXNj cm9sbC1tb2RlCisgQHZpbmRleCBob3Jpem9udGFsLXNjcm9sbC1tb2RlCisgVGhpcyB2YXJpYWJs ZSBjYW4gYmUgc2V0IHRvIGVpdGhlciBAc2FtcHtvbn0gb3IgQHNhbXB7b2ZmfS4gIFNldHRpbmcg aXQKK0BAIC01MzUsMTAgKzU4NiwxNyBAQCBUaGUgZGVmYXVsdCBpcyBAc2FtcHtvZmZ9LgorIEB2 aW5kZXggbWF0Y2gtaGlkZGVuLWZpbGVzCisgVGhpcyB2YXJpYWJsZSwgd2hlbiBzZXQgdG8gQHNh bXB7b259LCBjYXVzZXMgUmVhZGxpbmUgdG8gbWF0Y2ggZmlsZXMgd2hvc2UKKyBuYW1lcyBiZWdp biB3aXRoIGEgQHNhbXB7Ln0gKGhpZGRlbiBmaWxlcykgd2hlbiBwZXJmb3JtaW5nIGZpbGVuYW1l CistY29tcGxldGlvbiwgdW5sZXNzIHRoZSBsZWFkaW5nIEBzYW1wey59IGlzCisrY29tcGxldGlv bi4KKytJZiBzZXQgdG8gQHNhbXB7b2ZmfSwgdGhlIGxlYWRpbmcgQHNhbXB7Ln0gbXVzdCBiZQor IHN1cHBsaWVkIGJ5IHRoZSB1c2VyIGluIHRoZSBmaWxlbmFtZSB0byBiZSBjb21wbGV0ZWQuCisg VGhpcyB2YXJpYWJsZSBpcyBAc2FtcHtvbn0gYnkgZGVmYXVsdC4KKyAKKytAaXRlbSBtZW51LWNv bXBsZXRlLWRpc3BsYXktcHJlZml4CisrQHZpbmRleCBtZW51LWNvbXBsZXRlLWRpc3BsYXktcHJl Zml4CisrSWYgc2V0IHRvIEBzYW1we29ufSwgbWVudSBjb21wbGV0aW9uIGRpc3BsYXlzIHRoZSBj b21tb24gcHJlZml4IG9mIHRoZQorK2xpc3Qgb2YgcG9zc2libGUgY29tcGxldGlvbnMgKHdoaWNo IG1heSBiZSBlbXB0eSkgYmVmb3JlIGN5Y2xpbmcgdGhyb3VnaAorK3RoZSBsaXN0LiAgVGhlIGRl ZmF1bHQgaXMgQHNhbXB7b2ZmfS4KKysKKyBAaXRlbSBvdXRwdXQtbWV0YQorIEB2aW5kZXggb3V0 cHV0LW1ldGEKKyBJZiBzZXQgdG8gQHNhbXB7b259LCBSZWFkbGluZSB3aWxsIGRpc3BsYXkgY2hh cmFjdGVycyB3aXRoIHRoZQorQEAgLTU1Niw2ICs2MTQsMTMgQEAgSWYgc2V0IHRvIEBzYW1we29u fSwgUmVhZGxpbmUgd2lsbCBkaXNwbGF5IGNvbXBsZXRpb25zIHdpdGggbWF0Y2hlcworIHNvcnRl ZCBob3Jpem9udGFsbHkgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLCByYXRoZXIgdGhhbiBkb3duIHRo ZSBzY3JlZW4uCisgVGhlIGRlZmF1bHQgaXMgQHNhbXB7b2ZmfS4KKyAKKytAaXRlbSByZXZlcnQt YWxsLWF0LW5ld2xpbmUKKytAdmluZGV4IHJldmVydC1hbGwtYXQtbmV3bGluZQorK0lmIHNldCB0 byBAc2FtcHtvbn0sIFJlYWRsaW5lIHdpbGwgdW5kbyBhbGwgY2hhbmdlcyB0byBoaXN0b3J5IGxp bmVzCisrYmVmb3JlIHJldHVybmluZyB3aGVuIEBjb2Rle2FjY2VwdC1saW5lfSBpcyBleGVjdXRl ZC4gIEJ5IGRlZmF1bHQsCisraGlzdG9yeSBsaW5lcyBtYXkgYmUgbW9kaWZpZWQgYW5kIHJldGFp biBpbmRpdmlkdWFsIHVuZG8gbGlzdHMgYWNyb3NzCisrY2FsbHMgdG8gQGNvZGV7cmVhZGxpbmV9 LiAgVGhlIGRlZmF1bHQgaXMgQHNhbXB7b2ZmfS4KKysKKyBAaXRlbSBzaG93LWFsbC1pZi1hbWJp Z3VvdXMKKyBAdmluZGV4IHNob3ctYWxsLWlmLWFtYmlndW91cworIFRoaXMgYWx0ZXJzIHRoZSBk ZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBjb21wbGV0aW9uIGZ1bmN0aW9ucy4gIElmCitAQCAtNTc1 LDYgKzY0MCwyMCBAQCBhIGNvbW1vbiBwcmVmaXgpIGNhdXNlIHRoZSBtYXRjaGVzIHRvIGJlIGxp c3RlZCBpbW1lZGlhdGVseSBpbnN0ZWFkCisgb2YgcmluZ2luZyB0aGUgYmVsbC4KKyBUaGUgZGVm YXVsdCB2YWx1ZSBpcyBAc2FtcHtvZmZ9LgorIAorK0BpdGVtIHNraXAtY29tcGxldGVkLXRleHQK KytAdmluZGV4IHNraXAtY29tcGxldGVkLXRleHQKKytJZiBzZXQgdG8gQHNhbXB7b259LCB0aGlz IGFsdGVycyB0aGUgZGVmYXVsdCBjb21wbGV0aW9uIGJlaGF2aW9yIHdoZW4KKytpbnNlcnRpbmcg YSBzaW5nbGUgbWF0Y2ggaW50byB0aGUgbGluZS4gIEl0J3Mgb25seSBhY3RpdmUgd2hlbgorK3Bl cmZvcm1pbmcgY29tcGxldGlvbiBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZC4gIElmIGVuYWJsZWQs IHJlYWRsaW5lCisrZG9lcyBub3QgaW5zZXJ0IGNoYXJhY3RlcnMgZnJvbSB0aGUgY29tcGxldGlv biB0aGF0IG1hdGNoIGNoYXJhY3RlcnMKKythZnRlciBwb2ludCBpbiB0aGUgd29yZCBiZWluZyBj b21wbGV0ZWQsIHNvIHBvcnRpb25zIG9mIHRoZSB3b3JkCisrZm9sbG93aW5nIHRoZSBjdXJzb3Ig YXJlIG5vdCBkdXBsaWNhdGVkLgorK0ZvciBpbnN0YW5jZSwgaWYgdGhpcyBpcyBlbmFibGVkLCBh dHRlbXB0aW5nIGNvbXBsZXRpb24gd2hlbiB0aGUgY3Vyc29yCisraXMgYWZ0ZXIgdGhlIEBzYW1w e2V9IGluIEBzYW1we01ha2VmaWxlfSB3aWxsIHJlc3VsdCBpbiBAc2FtcHtNYWtlZmlsZX0KKyty YXRoZXIgdGhhbiBAc2FtcHtNYWtlZmlsZWZpbGV9LCBhc3N1bWluZyB0aGVyZSBpcyBhIHNpbmds ZSBwb3NzaWJsZQorK2NvbXBsZXRpb24uCisrVGhlIGRlZmF1bHQgdmFsdWUgaXMgQHNhbXB7b2Zm fS4KKysKKyBAaXRlbSB2aXNpYmxlLXN0YXRzCisgQHZpbmRleCB2aXNpYmxlLXN0YXRzCisgSWYg c2V0IHRvIEBzYW1we29ufSwgYSBjaGFyYWN0ZXIgZGVub3RpbmcgYSBmaWxlJ3MgdHlwZQorQEAg LTU5Myw5ICs2NzIsMTEgQEAgdGhlIGNvbW1hbmQgZG9lcy4KKyBPbmNlIHlvdSBrbm93IHRoZSBu YW1lIG9mIHRoZSBjb21tYW5kLCBzaW1wbHkgcGxhY2Ugb24gYSBsaW5lCisgaW4gdGhlIGluaXQg ZmlsZSB0aGUgbmFtZSBvZiB0aGUga2V5CisgeW91IHdpc2ggdG8gYmluZCB0aGUgY29tbWFuZCB0 bywgYSBjb2xvbiwgYW5kIHRoZW4gdGhlIG5hbWUgb2YgdGhlCistY29tbWFuZC4gIFRoZSBuYW1l IG9mIHRoZSBrZXkKKy1jYW4gYmUgZXhwcmVzc2VkIGluIGRpZmZlcmVudCB3YXlzLCBkZXBlbmRp bmcgb24gd2hhdCB5b3UgZmluZCBtb3N0CistY29tZm9ydGFibGUuCisrY29tbWFuZC4KKytUaGVy ZSBjYW4gYmUgbm8gc3BhY2UgYmV0d2VlbiB0aGUga2V5IG5hbWUgYW5kIHRoZSBjb2xvbiAtLSB0 aGF0IHdpbGwgYmUKKytpbnRlcnByZXRlZCBhcyBwYXJ0IG9mIHRoZSBrZXkgbmFtZS4KKytUaGUg bmFtZSBvZiB0aGUga2V5IGNhbiBiZSBleHByZXNzZWQgaW4gZGlmZmVyZW50IHdheXMsIGRlcGVu ZGluZyBvbgorK3doYXQgeW91IGZpbmQgbW9zdCBjb21mb3J0YWJsZS4KKyAKKyBJbiBhZGRpdGlv biB0byBjb21tYW5kIG5hbWVzLCByZWFkbGluZSBhbGxvd3Mga2V5cyB0byBiZSBib3VuZAorIHRv IGEgc3RyaW5nIHRoYXQgaXMgaW5zZXJ0ZWQgd2hlbiB0aGUga2V5IGlzIHByZXNzZWQgKGEgQHZh cnttYWNyb30pLgorQEAgLTkzNywxMiArMTAxOCwyMiBAQCBNb3ZlIGZvcndhcmQgYSBjaGFyYWN0 ZXIuCisgTW92ZSBiYWNrIGEgY2hhcmFjdGVyLgorIAorIEBpdGVtIGZvcndhcmQtd29yZCAoTS1m KQorLU1vdmUgZm9yd2FyZCB0byB0aGUgZW5kIG9mIHRoZSBuZXh0IHdvcmQuICBXb3JkcyBhcmUg Y29tcG9zZWQgb2YKKy1sZXR0ZXJzIGFuZCBkaWdpdHMuCisrTW92ZSBmb3J3YXJkIHRvIHRoZSBl bmQgb2YgdGhlIG5leHQgd29yZC4KKytXb3JkcyBhcmUgY29tcG9zZWQgb2YgbGV0dGVycyBhbmQg ZGlnaXRzLgorIAorIEBpdGVtIGJhY2t3YXJkLXdvcmQgKE0tYikKKy1Nb3ZlIGJhY2sgdG8gdGhl IHN0YXJ0IG9mIHRoZSBjdXJyZW50IG9yIHByZXZpb3VzIHdvcmQuICBXb3JkcyBhcmUKKy1jb21w b3NlZCBvZiBsZXR0ZXJzIGFuZCBkaWdpdHMuCisrTW92ZSBiYWNrIHRvIHRoZSBzdGFydCBvZiB0 aGUgY3VycmVudCBvciBwcmV2aW91cyB3b3JkLgorK1dvcmRzIGFyZSBjb21wb3NlZCBvZiBsZXR0 ZXJzIGFuZCBkaWdpdHMuCisrCisrQGlmc2V0IEJhc2hGZWF0dXJlcworK0BpdGVtIHNoZWxsLWZv cndhcmQtd29yZCAoKQorK01vdmUgZm9yd2FyZCB0byB0aGUgZW5kIG9mIHRoZSBuZXh0IHdvcmQu CisrV29yZHMgYXJlIGRlbGltaXRlZCBieSBub24tcXVvdGVkIHNoZWxsIG1ldGFjaGFyYWN0ZXJz LgorKworK0BpdGVtIHNoZWxsLWJhY2t3YXJkLXdvcmQgKCkKKytNb3ZlIGJhY2sgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBjdXJyZW50IG9yIHByZXZpb3VzIHdvcmQuCisrV29yZHMgYXJlIGRlbGltaXRl ZCBieSBub24tcXVvdGVkIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgorK0BlbmQgaWZzZXQKKyAKKyBA aXRlbSBjbGVhci1zY3JlZW4gKEMtbCkKKyBDbGVhciB0aGUgc2NyZWVuIGFuZCByZWRyYXcgdGhl IGN1cnJlbnQgbGluZSwKK0BAIC0xMDI5LDEwICsxMTIwLDE0IEBAIGFzIGlmIHRoZSBAc2FtcHsh QHZhcntufX0gaGlzdG9yeSBleHBhbnNpb24gaGFkIGJlZW4gc3BlY2lmaWVkLgorIAorIEBpdGVt IHlhbmstbGFzdC1hcmcgKE0tLiBvciBNLV8pCisgSW5zZXJ0IGxhc3QgYXJndW1lbnQgdG8gdGhl IHByZXZpb3VzIGNvbW1hbmQgKHRoZSBsYXN0IHdvcmQgb2YgdGhlCistcHJldmlvdXMgaGlzdG9y eSBlbnRyeSkuICBXaXRoIGFuCistYXJndW1lbnQsIGJlaGF2ZSBleGFjdGx5IGxpa2UgQGNvZGV7 eWFuay1udGgtYXJnfS4KKytwcmV2aW91cyBoaXN0b3J5IGVudHJ5KS4KKytXaXRoIGEgbnVtZXJp YyBhcmd1bWVudCwgYmVoYXZlIGV4YWN0bHkgbGlrZSBAY29kZXt5YW5rLW50aC1hcmd9LgorIFN1 Y2Nlc3NpdmUgY2FsbHMgdG8gQGNvZGV7eWFuay1sYXN0LWFyZ30gbW92ZSBiYWNrIHRocm91Z2gg dGhlIGhpc3RvcnkKKy1saXN0LCBpbnNlcnRpbmcgdGhlIGxhc3QgYXJndW1lbnQgb2YgZWFjaCBs aW5lIGluIHR1cm4uCisrbGlzdCwgaW5zZXJ0aW5nIHRoZSBsYXN0IHdvcmQgKG9yIHRoZSB3b3Jk IHNwZWNpZmllZCBieSB0aGUgYXJndW1lbnQgdG8KKyt0aGUgZmlyc3QgY2FsbCkgb2YgZWFjaCBs aW5lIGluIHR1cm4uCisrQW55IG51bWVyaWMgYXJndW1lbnQgc3VwcGxpZWQgdG8gdGhlc2Ugc3Vj Y2Vzc2l2ZSBjYWxscyBkZXRlcm1pbmVzCisrdGhlIGRpcmVjdGlvbiB0byBtb3ZlIHRocm91Z2gg dGhlIGhpc3RvcnkuICBBIG5lZ2F0aXZlIGFyZ3VtZW50IHN3aXRjaGVzCisrdGhlIGRpcmVjdGlv biB0aHJvdWdoIHRoZSBoaXN0b3J5IChiYWNrIG9yIGZvcndhcmQpLgorIFRoZSBoaXN0b3J5IGV4 cGFuc2lvbiBmYWNpbGl0aWVzIGFyZSB1c2VkIHRvIGV4dHJhY3QgdGhlIGxhc3QgYXJndW1lbnQs CisgYXMgaWYgdGhlIEBzYW1weyEkfSBoaXN0b3J5IGV4cGFuc2lvbiBoYWQgYmVlbiBzcGVjaWZp ZWQuCisgCitAQCAtMTEzOCw2ICsxMjMzLDE3IEBAIFdvcmQgYm91bmRhcmllcyBhcmUgdGhlIHNh bWUgYXMgQGNvZGV7Zm9yd2FyZC13b3JkfS4KKyBLaWxsIHRoZSB3b3JkIGJlaGluZCBwb2ludC4K KyBXb3JkIGJvdW5kYXJpZXMgYXJlIHRoZSBzYW1lIGFzIEBjb2Rle2JhY2t3YXJkLXdvcmR9Lgor IAorK0BpZnNldCBCYXNoRmVhdHVyZXMKKytAaXRlbSBzaGVsbC1raWxsLXdvcmQgKCkKKytLaWxs IGZyb20gcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgY3VycmVudCB3b3JkLCBvciBpZiBiZXR3ZWVu Cisrd29yZHMsIHRvIHRoZSBlbmQgb2YgdGhlIG5leHQgd29yZC4KKytXb3JkIGJvdW5kYXJpZXMg YXJlIHRoZSBzYW1lIGFzIEBjb2Rle3NoZWxsLWZvcndhcmQtd29yZH0uCisrCisrQGl0ZW0gc2hl bGwtYmFja3dhcmQta2lsbC13b3JkICgpCisrS2lsbCB0aGUgd29yZCBiZWhpbmQgcG9pbnQuCisr V29yZCBib3VuZGFyaWVzIGFyZSB0aGUgc2FtZSBhcyBAY29kZXtzaGVsbC1iYWNrd2FyZC13b3Jk fS4KKytAZW5kIGlmc2V0CisrCisgQGl0ZW0gdW5peC13b3JkLXJ1Ym91dCAoQy13KQorIEtpbGwg dGhlIHdvcmQgYmVoaW5kIHBvaW50LCB1c2luZyB3aGl0ZSBzcGFjZSBhcyBhIHdvcmQgYm91bmRh cnkuCisgVGhlIGtpbGxlZCB0ZXh0IGlzIHNhdmVkIG9uIHRoZSBraWxsLXJpbmcuCitAQCAtMTIx OSw2ICsxMzI1LDkgQEAgVGhlIGRlZmF1bHQgaXMgZmlsZW5hbWUgY29tcGxldGlvbi4KKyAKKyBA aXRlbSBwb3NzaWJsZS1jb21wbGV0aW9ucyAoTS0/KQorIExpc3QgdGhlIHBvc3NpYmxlIGNvbXBs ZXRpb25zIG9mIHRoZSB0ZXh0IGJlZm9yZSBwb2ludC4KKytXaGVuIGRpc3BsYXlpbmcgY29tcGxl dGlvbnMsIFJlYWRsaW5lIHNldHMgdGhlIG51bWJlciBvZiBjb2x1bW5zIHVzZWQKKytmb3IgZGlz cGxheSB0byB0aGUgdmFsdWUgb2YgQGNvZGV7Y29tcGxldGlvbi1kaXNwbGF5LXdpZHRofSwgdGhl IHZhbHVlIG9mCisrdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEBlbnZ7Q09MVU1OU30sIG9yIHRo ZSBzY3JlZW4gd2lkdGgsIGluIHRoYXQgb3JkZXIuCisgCisgQGl0ZW0gaW5zZXJ0LWNvbXBsZXRp b25zIChNLSopCisgSW5zZXJ0IGFsbCBjb21wbGV0aW9ucyBvZiB0aGUgdGV4dCBiZWZvcmUgcG9p bnQgdGhhdCB3b3VsZCBoYXZlCitAQCAtMTIzOCw2ICsxMzQ3LDExIEBAIHRocm91Z2ggdGhlIGxp c3QuCisgVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIHRvIGJlIGJvdW5kIHRvIEBrZXl7VEFCfSwg YnV0IGlzIHVuYm91bmQKKyBieSBkZWZhdWx0LgorIAorK0BpdGVtIG1lbnUtY29tcGxldGUtYmFj a3dhcmQgKCkKKytJZGVudGljYWwgdG8gQGNvZGV7bWVudS1jb21wbGV0ZX0sIGJ1dCBtb3ZlcyBi YWNrd2FyZCB0aHJvdWdoIHRoZSBsaXN0Cisrb2YgcG9zc2libGUgY29tcGxldGlvbnMsIGFzIGlm IEBjb2Rle21lbnUtY29tcGxldGV9IGhhZCBiZWVuIGdpdmVuIGEKKytuZWdhdGl2ZSBhcmd1bWVu dC4KKysKKyBAaXRlbSBkZWxldGUtY2hhci1vci1saXN0ICgpCisgRGVsZXRlcyB0aGUgY2hhcmFj dGVyIHVuZGVyIHRoZSBjdXJzb3IgaWYgbm90IGF0IHRoZSBiZWdpbm5pbmcgb3IKKyBlbmQgb2Yg dGhlIGxpbmUgKGxpa2UgQGNvZGV7ZGVsZXRlLWNoYXJ9KS4KK0BAIC0xMjkzLDYgKzE0MDcsMTEg QEAgQXR0ZW1wdCBjb21wbGV0aW9uIG9uIHRoZSB0ZXh0IGJlZm9yZSBwb2ludCwgY29tcGFyaW5n CisgdGhlIHRleHQgYWdhaW5zdCBsaW5lcyBmcm9tIHRoZSBoaXN0b3J5IGxpc3QgZm9yIHBvc3Np YmxlCisgY29tcGxldGlvbiBtYXRjaGVzLgorIAorK0BpdGVtIGRhYmJyZXYtZXhwYW5kICgpCisr QXR0ZW1wdCBtZW51IGNvbXBsZXRpb24gb24gdGhlIHRleHQgYmVmb3JlIHBvaW50LCBjb21wYXJp bmcKKyt0aGUgdGV4dCBhZ2FpbnN0IGxpbmVzIGZyb20gdGhlIGhpc3RvcnkgbGlzdCBmb3IgcG9z c2libGUKKytjb21wbGV0aW9uIG1hdGNoZXMuCisrCisgQGl0ZW0gY29tcGxldGUtaW50by1icmFj ZXMgKE0tQHspCisgUGVyZm9ybSBmaWxlbmFtZSBjb21wbGV0aW9uIGFuZCBpbnNlcnQgdGhlIGxp c3Qgb2YgcG9zc2libGUgY29tcGxldGlvbnMKKyBlbmNsb3NlZCB3aXRoaW4gYnJhY2VzIHNvIHRo ZSBsaXN0IGlzIGF2YWlsYWJsZSB0byB0aGUgc2hlbGwKK0BAIC0xMzcyLDYgKzE0OTEsMTUgQEAg QSBjaGFyYWN0ZXIgaXMgcmVhZCBhbmQgcG9pbnQgaXMgbW92ZWQgdG8gdGhlIHByZXZpb3VzIG9j Y3VycmVuY2UKKyBvZiB0aGF0IGNoYXJhY3Rlci4gIEEgbmVnYXRpdmUgY291bnQgc2VhcmNoZXMg Zm9yIHN1YnNlcXVlbnQKKyBvY2N1cnJlbmNlcy4KKyAKKytAaXRlbSBza2lwLWNzaS1zZXF1ZW5j ZSAoKQorK1JlYWQgZW5vdWdoIGNoYXJhY3RlcnMgdG8gY29uc3VtZSBhIG11bHRpLWtleSBzZXF1 ZW5jZSBzdWNoIGFzIHRob3NlCisrZGVmaW5lZCBmb3Iga2V5cyBsaWtlIEhvbWUgYW5kIEVuZC4g IFN1Y2ggc2VxdWVuY2VzIGJlZ2luIHdpdGggYQorK0NvbnRyb2wgU2VxdWVuY2UgSW5kaWNhdG9y IChDU0kpLCB1c3VhbGx5IEVTQy1bLiAgSWYgdGhpcyBzZXF1ZW5jZSBpcworK2JvdW5kIHRvICJc ZVsiLCBrZXlzIHByb2R1Y2luZyBzdWNoIHNlcXVlbmNlcyB3aWxsIGhhdmUgbm8gZWZmZWN0Cisr dW5sZXNzIGV4cGxpY2l0bHkgYm91bmQgdG8gYSByZWFkbGluZSBjb21tYW5kLCBpbnN0ZWFkIG9m IGluc2VydGluZworK3N0cmF5IGNoYXJhY3RlcnMgaW50byB0aGUgZWRpdGluZyBidWZmZXIuICBU aGlzIGlzIHVuYm91bmQgYnkgZGVmYXVsdCwKKytidXQgdXN1YWxseSBib3VuZCB0byBFU0MtWy4K KysKKyBAaXRlbSBpbnNlcnQtY29tbWVudCAoTS0jKQorIFdpdGhvdXQgYSBudW1lcmljIGFyZ3Vt ZW50LCB0aGUgdmFsdWUgb2YgdGhlIEBjb2Rle2NvbW1lbnQtYmVnaW59CisgdmFyaWFibGUgaXMg aW5zZXJ0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVudCBsaW5lLgorQEAgLTE0ODEs NyArMTYwOSw3IEBAIGVkaXRpbmcgbW9kZS4KKyBXaGlsZSB0aGUgUmVhZGxpbmUgbGlicmFyeSBk b2VzIG5vdCBoYXZlIGEgZnVsbCBzZXQgb2YgQGNvZGV7dml9CisgZWRpdGluZyBmdW5jdGlvbnMs IGl0IGRvZXMgY29udGFpbiBlbm91Z2ggdG8gYWxsb3cgc2ltcGxlIGVkaXRpbmcKKyBvZiB0aGUg bGluZS4gIFRoZSBSZWFkbGluZSBAY29kZXt2aX0gbW9kZSBiZWhhdmVzIGFzIHNwZWNpZmllZCBp bgorLXRoZSBAc2N7cG9zaXh9IDEwMDMuMiBzdGFuZGFyZC4KKyt0aGUgQHNje3Bvc2l4fSBzdGFu ZGFyZC4KKyAKKyBAaWZzZXQgQmFzaEZlYXR1cmVzCisgSW4gb3JkZXIgdG8gc3dpdGNoIGludGVy YWN0aXZlbHkgYmV0d2VlbiBAY29kZXtlbWFjc30gYW5kIEBjb2Rle3ZpfQorQEAgLTE1MTUsMTAg KzE2NDMsMTUgQEAgdGhlIHByb2dyYW1tYWJsZSBjb21wbGV0aW9uIGZhY2lsaXRpZXMgYXJlIGlu dm9rZWQuCisgRmlyc3QsIHRoZSBjb21tYW5kIG5hbWUgaXMgaWRlbnRpZmllZC4KKyBJZiBhIGNv bXBzcGVjIGhhcyBiZWVuIGRlZmluZWQgZm9yIHRoYXQgY29tbWFuZCwgdGhlCisgY29tcHNwZWMg aXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgbGlzdCBvZiBwb3NzaWJsZSBjb21wbGV0aW9ucyBmb3Ig dGhlIHdvcmQuCisrSWYgdGhlIGNvbW1hbmQgd29yZCBpcyB0aGUgZW1wdHkgc3RyaW5nIChjb21w bGV0aW9uIGF0dGVtcHRlZCBhdCB0aGUKKytiZWdpbm5pbmcgb2YgYW4gZW1wdHkgbGluZSksIGFu eSBjb21wc3BlYyBkZWZpbmVkIHdpdGgKKyt0aGUgQG9wdGlvbnstRX0gb3B0aW9uIHRvIEBjb2Rl e2NvbXBsZXRlfSBpcyB1c2VkLgorIElmIHRoZSBjb21tYW5kIHdvcmQgaXMgYSBmdWxsIHBhdGhu YW1lLCBhIGNvbXBzcGVjIGZvciB0aGUgZnVsbAorIHBhdGhuYW1lIGlzIHNlYXJjaGVkIGZvciBm aXJzdC4KKyBJZiBubyBjb21wc3BlYyBpcyBmb3VuZCBmb3IgdGhlIGZ1bGwgcGF0aG5hbWUsIGFu IGF0dGVtcHQgaXMgbWFkZSB0bworIGZpbmQgYSBjb21wc3BlYyBmb3IgdGhlIHBvcnRpb24gZm9s bG93aW5nIHRoZSBmaW5hbCBzbGFzaC4KKytJZiB0aG9zZSBzZWFyY2hlcyBkbyBub3QgcmVzdWx0 IGluIGEgY29tcHNwZWMsIGFueSBjb21wc3BlYyBkZWZpbmVkIHdpdGgKKyt0aGUgQG9wdGlvbnst RH0gb3B0aW9uIHRvIEBjb2Rle2NvbXBsZXRlfSBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0LgorIAor IE9uY2UgYSBjb21wc3BlYyBoYXMgYmVlbiBmb3VuZCwgaXQgaXMgdXNlZCB0byBnZW5lcmF0ZSB0 aGUgbGlzdCBvZgorIG1hdGNoaW5nIHdvcmRzLgorQEAgLTE1NTUsOSArMTY4OCw5IEBAIGNvbXBs ZXRlZCwgYW5kIHRoZSBtYXRjaGluZyB3b3JkcyBiZWNvbWUgdGhlIHBvc3NpYmxlIGNvbXBsZXRp b25zLgorIAorIEFmdGVyIHRoZXNlIG1hdGNoZXMgaGF2ZSBiZWVuIGdlbmVyYXRlZCwgYW55IHNo ZWxsIGZ1bmN0aW9uIG9yIGNvbW1hbmQKKyBzcGVjaWZpZWQgd2l0aCB0aGUgQG9wdGlvbnstRn0g YW5kIEBvcHRpb257LUN9IG9wdGlvbnMgaXMgaW52b2tlZC4KKy1XaGVuIHRoZSBjb21tYW5kIG9y IGZ1bmN0aW9uIGlzIGludm9rZWQsIHRoZSBAZW52e0NPTVBfTElORX0gYW5kCistQGVudntDT01Q X1BPSU5UfSB2YXJpYWJsZXMgYXJlIGFzc2lnbmVkIHZhbHVlcyBhcyBkZXNjcmliZWQgYWJvdmUK Ky0oQHB4cmVme0Jhc2ggVmFyaWFibGVzfSkuCisrV2hlbiB0aGUgY29tbWFuZCBvciBmdW5jdGlv biBpcyBpbnZva2VkLCB0aGUgQGVudntDT01QX0xJTkV9LAorK0BlbnZ7Q09NUF9QT0lOVH0sIEBl bnZ7Q09NUF9LRVl9LCBhbmQgQGVudntDT01QX1RZUEV9IHZhcmlhYmxlcyBhcmUKKythc3NpZ25l ZCB2YWx1ZXMgYXMgZGVzY3JpYmVkIGFib3ZlIChAcHhyZWZ7QmFzaCBWYXJpYWJsZXN9KS4KKyBJ ZiBhIHNoZWxsIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQsIHRoZSBAZW52e0NPTVBfV09SRFN9 IGFuZAorIEBlbnZ7Q09NUF9DV09SRH0gdmFyaWFibGVzIGFyZSBhbHNvIHNldC4KKyBXaGVuIHRo ZSBmdW5jdGlvbiBvciBjb21tYW5kIGlzIGludm9rZWQsIHRoZSBmaXJzdCBhcmd1bWVudCBpcyB0 aGUKK0BAIC0xNTcwLDcgKzE3MDMsNyBAQCB0aGUgbWF0Y2hlcy4KKyAKKyBBbnkgZnVuY3Rpb24g c3BlY2lmaWVkIHdpdGggQG9wdGlvbnstRn0gaXMgaW52b2tlZCBmaXJzdC4KKyBUaGUgZnVuY3Rp b24gbWF5IHVzZSBhbnkgb2YgdGhlIHNoZWxsIGZhY2lsaXRpZXMsIGluY2x1ZGluZyB0aGUKKy1A Y29kZXtjb21wZ2VufSBidWlsdGluIGRlc2NyaWJlZCBiZWxvdworK0Bjb2Rle2NvbXBnZW59IGFu ZCBAY29kZXtjb21wb3B0fSBidWlsdGlucyBkZXNjcmliZWQgYmVsb3cKKyAoQHB4cmVme1Byb2dy YW1tYWJsZSBDb21wbGV0aW9uIEJ1aWx0aW5zfSksIHRvIGdlbmVyYXRlIHRoZSBtYXRjaGVzLgor IEl0IG11c3QgcHV0IHRoZSBwb3NzaWJsZSBjb21wbGV0aW9ucyBpbiB0aGUgQGVudntDT01QUkVQ TFl9IGFycmF5CisgdmFyaWFibGUuCitAQCAtMTYyMiw2ICsxNzU1LDMwIEBAIHRvIGNvbXBsZXRl ZCBuYW1lcyB3aGljaCBhcmUgc3ltYm9saWMgbGlua3MgdG8gZGlyZWN0b3JpZXMsIHN1YmplY3Qg dG8KKyB0aGUgdmFsdWUgb2YgdGhlIEB2YXJ7bWFyay1kaXJlY3Rvcmllc30gUmVhZGxpbmUgdmFy aWFibGUsIHJlZ2FyZGxlc3MKKyBvZiB0aGUgc2V0dGluZyBvZiB0aGUgQHZhcnttYXJrLXN5bWxp bmtlZC1kaXJlY3Rvcmllc30gUmVhZGxpbmUgdmFyaWFibGUuCisgCisrVGhlcmUgaXMgc29tZSBz dXBwb3J0IGZvciBkeW5hbWljYWxseSBtb2RpZnlpbmcgY29tcGxldGlvbnMuICBUaGlzIGlzCisr bW9zdCB1c2VmdWwgd2hlbiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYSBkZWZhdWx0IGNvbXBs ZXRpb24gc3BlY2lmaWVkCisrd2l0aCBAb3B0aW9uey1EfS4gIEl0J3MgcG9zc2libGUgZm9yIHNo ZWxsIGZ1bmN0aW9ucyBleGVjdXRlZCBhcyBjb21wbGV0aW9uCisraGFuZGxlcnMgdG8gaW5kaWNh dGUgdGhhdCBjb21wbGV0aW9uIHNob3VsZCBiZSByZXRyaWVkIGJ5IHJldHVybmluZyBhbgorK2V4 aXQgc3RhdHVzIG9mIDEyNC4gIElmIGEgc2hlbGwgZnVuY3Rpb24gcmV0dXJucyAxMjQsIGFuZCBj aGFuZ2VzCisrdGhlIGNvbXBzcGVjIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tbWFuZCBvbiB3aGlj aCBjb21wbGV0aW9uIGlzIGJlaW5nCisrYXR0ZW1wdGVkIChzdXBwbGllZCBhcyB0aGUgZmlyc3Qg YXJndW1lbnQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQpLAorK3Byb2dyYW1tYWJsZSBj b21wbGV0aW9uIHJlc3RhcnRzIGZyb20gdGhlIGJlZ2lubmluZywgd2l0aCBhbgorK2F0dGVtcHQg dG8gZmluZCBhIG5ldyBjb21wc3BlYyBmb3IgdGhhdCBjb21tYW5kLiAgVGhpcyBhbGxvd3MgYSBz ZXQgb2YKKytjb21wbGV0aW9ucyB0byBiZSBidWlsdCBkeW5hbWljYWxseSBhcyBjb21wbGV0aW9u IGlzIGF0dGVtcHRlZCwgcmF0aGVyIHRoYW4KKytiZWluZyBsb2FkZWQgYWxsIGF0IG9uY2UuCisr CisrRm9yIGluc3RhbmNlLCBhc3N1bWluZyB0aGF0IHRoZXJlIGlzIGEgbGlicmFyeSBvZiBjb21w c3BlY3MsIGVhY2gga2VwdCBpbiBhCisrZmlsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9m IHRoZSBjb21tYW5kLCB0aGUgZm9sbG93aW5nIGRlZmF1bHQKKytjb21wbGV0aW9uIGZ1bmN0aW9u IHdvdWxkIGxvYWQgY29tcGxldGlvbnMgZHluYW1pY2FsbHk6CisrCisrQGV4YW1wbGUKKytfY29t cGxldGlvbl9sb2FkZXIoKQorK0B7CisrCS4gIi9ldGMvYmFzaF9jb21wbGV0aW9uLmQvJDEuc2gi ID4vZGV2L251bGwgMj4mMSAmJiByZXR1cm4gMTI0CisrQH0KKytjb21wbGV0ZSAtRCAtRiBfY29t cGxldGlvbl9sb2FkZXIKKytAZW5kIGV4YW1wbGUKKysKKyBAbm9kZSBQcm9ncmFtbWFibGUgQ29t cGxldGlvbiBCdWlsdGlucworIEBzZWN0aW9uIFByb2dyYW1tYWJsZSBDb21wbGV0aW9uIEJ1aWx0 aW5zCisgQGNpbmRleCBjb21wbGV0aW9uIGJ1aWx0aW5zCitAQCAtMTY1NywxMCArMTgxNCwxMCBA QCBtYXRjaGVzIHdlcmUgZ2VuZXJhdGVkLgorIEBpdGVtIGNvbXBsZXRlCisgQGJ0aW5kZXggY29t cGxldGUKKyBAZXhhbXBsZQorLUBjb2Rle2NvbXBsZXRlIFstYWJjZGVmZ2prc3V2XSBbLW8gQHZh cntjb21wLW9wdGlvbn1dIFstQSBAdmFye2FjdGlvbn1dIFstRyBAdmFye2dsb2JwYXR9XSBbLVcg QHZhcnt3b3JkbGlzdH1dCistWy1QIEB2YXJ7cHJlZml4fV0gWy1TIEB2YXJ7c3VmZml4fV0gWy1Y IEB2YXJ7ZmlsdGVycGF0fV0gWy1GIEB2YXJ7ZnVuY3Rpb259XQorLVstQyBAdmFye2NvbW1hbmR9 XSBAdmFye25hbWV9IFtAdmFye25hbWV9IEBkb3Rze31dfQorLUBjb2Rle2NvbXBsZXRlIC1wciBb QHZhcntuYW1lfSBAZG90c3t9XX0KKytAY29kZXtjb21wbGV0ZSBbLWFiY2RlZmdqa3N1dl0gWy1v IEB2YXJ7Y29tcC1vcHRpb259XSBbLURFXSBbLUEgQHZhcnthY3Rpb259XSBbLUcgQHZhcntnbG9i cGF0fV0gWy1XIEB2YXJ7d29yZGxpc3R9XQorK1stRiBAdmFye2Z1bmN0aW9ufV0gWy1DIEB2YXJ7 Y29tbWFuZH1dIFstWCBAdmFye2ZpbHRlcnBhdH1dCisrWy1QIEB2YXJ7cHJlZml4fV0gWy1TIEB2 YXJ7c3VmZml4fV0gQHZhcntuYW1lfSBbQHZhcntuYW1lfSBAZG90c3t9XX0KKytAY29kZXtjb21w bGV0ZSAtcHIgWy1ERV0gW0B2YXJ7bmFtZX0gQGRvdHN7fV19CisgQGVuZCBleGFtcGxlCisgCisg U3BlY2lmeSBob3cgYXJndW1lbnRzIHRvIGVhY2ggQHZhcntuYW1lfSBzaG91bGQgYmUgY29tcGxl dGVkLgorQEAgLTE2NzAsOSArMTgyNywxNiBAQCByZXVzZWQgYXMgaW5wdXQuCisgVGhlIEBvcHRp b257LXJ9IG9wdGlvbiByZW1vdmVzIGEgY29tcGxldGlvbiBzcGVjaWZpY2F0aW9uIGZvcgorIGVh Y2ggQHZhcntuYW1lfSwgb3IsIGlmIG5vIEB2YXJ7bmFtZX1zIGFyZSBzdXBwbGllZCwgYWxsCisg Y29tcGxldGlvbiBzcGVjaWZpY2F0aW9ucy4KKytUaGUgQG9wdGlvbnstRH0gb3B0aW9uIGluZGlj YXRlcyB0aGF0IHRoZSByZW1haW5pbmcgb3B0aW9ucyBhbmQgYWN0aW9ucyBzaG91bGQKKythcHBs eSB0byB0aGUgYGBkZWZhdWx0JycgY29tbWFuZCBjb21wbGV0aW9uOyB0aGF0IGlzLCBjb21wbGV0 aW9uIGF0dGVtcHRlZAorK29uIGEgY29tbWFuZCBmb3Igd2hpY2ggbm8gY29tcGxldGlvbiBoYXMg cHJldmlvdXNseSBiZWVuIGRlZmluZWQuCisrVGhlIEBvcHRpb257LUV9IG9wdGlvbiBpbmRpY2F0 ZXMgdGhhdCB0aGUgcmVtYWluaW5nIG9wdGlvbnMgYW5kIGFjdGlvbnMgc2hvdWxkCisrYXBwbHkg dG8gYGBlbXB0eScnIGNvbW1hbmQgY29tcGxldGlvbjsgdGhhdCBpcywgY29tcGxldGlvbiBhdHRl bXB0ZWQgb24gYSAKKytibGFuayBsaW5lLgorIAorIFRoZSBwcm9jZXNzIG9mIGFwcGx5aW5nIHRo ZXNlIGNvbXBsZXRpb24gc3BlY2lmaWNhdGlvbnMgd2hlbiB3b3JkIGNvbXBsZXRpb24KKy1pcyBh dHRlbXB0ZWQgaXMgZGVzY3JpYmVkIGFib3ZlIChAcHhyZWZ7UHJvZ3JhbW1hYmxlIENvbXBsZXRp b259KS4KKytpcyBhdHRlbXB0ZWQgaXMgZGVzY3JpYmVkIGFib3ZlIChAcHhyZWZ7UHJvZ3JhbW1h YmxlIENvbXBsZXRpb259KS4gIFRoZQorK0BvcHRpb257LUR9IG9wdGlvbiB0YWtlcyBwcmVjZWRl bmNlIG92ZXIgQG9wdGlvbnstRX0uCisgCisgT3RoZXIgb3B0aW9ucywgaWYgc3BlY2lmaWVkLCBo YXZlIHRoZSBmb2xsb3dpbmcgbWVhbmluZ3MuCisgVGhlIGFyZ3VtZW50cyB0byB0aGUgQG9wdGlv bnstR30sIEBvcHRpb257LVd9LCBhbmQgQG9wdGlvbnstWH0gb3B0aW9ucworQEAgLTE3MDIsOSAr MTg2NiwxMCBAQCBQZXJmb3JtIGRpcmVjdG9yeSBuYW1lIGNvbXBsZXRpb24gaWYgdGhlIGNvbXBz cGVjIGdlbmVyYXRlcyBubyBtYXRjaGVzLgorIAorIEBpdGVtIGZpbGVuYW1lcworIFRlbGwgUmVh ZGxpbmUgdGhhdCB0aGUgY29tcHNwZWMgZ2VuZXJhdGVzIGZpbGVuYW1lcywgc28gaXQgY2FuIHBl cmZvcm0gYW55CistZmlsZW5hbWUtc3BlY2lmaWMgcHJvY2Vzc2luZyAobGlrZSBhZGRpbmcgYSBz bGFzaCB0byBkaXJlY3RvcnkgbmFtZXMgb3IKKy1zdXBwcmVzc2luZyB0cmFpbGluZyBzcGFjZXMp LiAgVGhpcyBvcHRpb24gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aXRoCistc2hlbGwgZnVuY3Rp b25zIHNwZWNpZmllZCB3aXRoIEBvcHRpb257LUZ9LgorK2ZpbGVuYW1lLXNwZWNpZmljIHByb2Nl c3NpbmcgKGxpa2UgYWRkaW5nIGEgc2xhc2ggdG8gZGlyZWN0b3J5IG5hbWVzCisrcXVvdGluZyBz cGVjaWFsIGNoYXJhY3RlcnMsIG9yIHN1cHByZXNzaW5nIHRyYWlsaW5nIHNwYWNlcykuCisrVGhp cyBvcHRpb24gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aXRoIHNoZWxsIGZ1bmN0aW9ucyBzcGVj aWZpZWQKKyt3aXRoIEBvcHRpb257LUZ9LgorIAorIEBpdGVtIG5vc3BhY2UKKyBUZWxsIFJlYWRs aW5lIG5vdCB0byBhcHBlbmQgYSBzcGFjZSAodGhlIGRlZmF1bHQpIHRvIHdvcmRzIGNvbXBsZXRl ZCBhdAorQEAgLTE3OTgsMTcgKzE5NjMsNiBAQCBVc2VyIG5hbWVzLiAgTWF5IGFsc28gYmUgc3Bl Y2lmaWVkIGFzIEBvcHRpb257LXV9LgorIE5hbWVzIG9mIGFsbCBzaGVsbCB2YXJpYWJsZXMuICBN YXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgQG9wdGlvbnstdn0uCisgQGVuZCB0YWJsZQorIAorLUBp dGVtIC1HIEB2YXJ7Z2xvYnBhdH0KKy1UaGUgZmlsZW5hbWUgZXhwYW5zaW9uIHBhdHRlcm4gQHZh cntnbG9icGF0fSBpcyBleHBhbmRlZCB0byBnZW5lcmF0ZQorLXRoZSBwb3NzaWJsZSBjb21wbGV0 aW9ucy4KKy0KKy1AaXRlbSAtVyBAdmFye3dvcmRsaXN0fQorLVRoZSBAdmFye3dvcmRsaXN0fSBp cyBzcGxpdCB1c2luZyB0aGUgY2hhcmFjdGVycyBpbiB0aGUKKy1AZW52e0lGU30gc3BlY2lhbCB2 YXJpYWJsZSBhcyBkZWxpbWl0ZXJzLCBhbmQgZWFjaCByZXN1bHRhbnQgd29yZAorLWlzIGV4cGFu ZGVkLgorLVRoZSBwb3NzaWJsZSBjb21wbGV0aW9ucyBhcmUgdGhlIG1lbWJlcnMgb2YgdGhlIHJl c3VsdGFudCBsaXN0IHdoaWNoCistbWF0Y2ggdGhlIHdvcmQgYmVpbmcgY29tcGxldGVkLgorLQor IEBpdGVtIC1DIEB2YXJ7Y29tbWFuZH0KKyBAdmFye2NvbW1hbmR9IGlzIGV4ZWN1dGVkIGluIGEg c3Vic2hlbGwgZW52aXJvbm1lbnQsIGFuZCBpdHMgb3V0cHV0IGlzCisgdXNlZCBhcyB0aGUgcG9z c2libGUgY29tcGxldGlvbnMuCitAQCAtMTgxOSwxMyArMTk3Myw5IEBAIGVudmlyb25tZW50Lgor IFdoZW4gaXQgZmluaXNoZXMsIHRoZSBwb3NzaWJsZSBjb21wbGV0aW9ucyBhcmUgcmV0cmlldmVk IGZyb20gdGhlIHZhbHVlCisgb2YgdGhlIEBlbnZ7Q09NUFJFUExZfSBhcnJheSB2YXJpYWJsZS4K KyAKKy1AaXRlbSAtWCBAdmFye2ZpbHRlcnBhdH0KKy1AdmFye2ZpbHRlcnBhdH0gaXMgYSBwYXR0 ZXJuIGFzIHVzZWQgZm9yIGZpbGVuYW1lIGV4cGFuc2lvbi4KKy1JdCBpcyBhcHBsaWVkIHRvIHRo ZSBsaXN0IG9mIHBvc3NpYmxlIGNvbXBsZXRpb25zIGdlbmVyYXRlZCBieSB0aGUKKy1wcmVjZWRp bmcgb3B0aW9ucyBhbmQgYXJndW1lbnRzLCBhbmQgZWFjaCBjb21wbGV0aW9uIG1hdGNoaW5nCist QHZhcntmaWx0ZXJwYXR9IGlzIHJlbW92ZWQgZnJvbSB0aGUgbGlzdC4KKy1BIGxlYWRpbmcgQHNh bXB7IX0gaW4gQHZhcntmaWx0ZXJwYXR9IG5lZ2F0ZXMgdGhlIHBhdHRlcm47IGluIHRoaXMKKy1j YXNlLCBhbnkgY29tcGxldGlvbiBub3QgbWF0Y2hpbmcgQHZhcntmaWx0ZXJwYXR9IGlzIHJlbW92 ZWQuCisrQGl0ZW0gLUcgQHZhcntnbG9icGF0fQorK1RoZSBmaWxlbmFtZSBleHBhbnNpb24gcGF0 dGVybiBAdmFye2dsb2JwYXR9IGlzIGV4cGFuZGVkIHRvIGdlbmVyYXRlCisrdGhlIHBvc3NpYmxl IGNvbXBsZXRpb25zLgorIAorIEBpdGVtIC1QIEB2YXJ7cHJlZml4fQorIEB2YXJ7cHJlZml4fSBp cyBhZGRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggcG9zc2libGUgY29tcGxldGlvbgorQEAg LTE4MzQsNiArMTk4NCwyMSBAQCBhZnRlciBhbGwgb3RoZXIgb3B0aW9ucyBoYXZlIGJlZW4gYXBw bGllZC4KKyBAaXRlbSAtUyBAdmFye3N1ZmZpeH0KKyBAdmFye3N1ZmZpeH0gaXMgYXBwZW5kZWQg dG8gZWFjaCBwb3NzaWJsZSBjb21wbGV0aW9uCisgYWZ0ZXIgYWxsIG90aGVyIG9wdGlvbnMgaGF2 ZSBiZWVuIGFwcGxpZWQuCisrCisrQGl0ZW0gLVcgQHZhcnt3b3JkbGlzdH0KKytUaGUgQHZhcnt3 b3JkbGlzdH0gaXMgc3BsaXQgdXNpbmcgdGhlIGNoYXJhY3RlcnMgaW4gdGhlCisrQGVudntJRlN9 IHNwZWNpYWwgdmFyaWFibGUgYXMgZGVsaW1pdGVycywgYW5kIGVhY2ggcmVzdWx0YW50IHdvcmQK KytpcyBleHBhbmRlZC4KKytUaGUgcG9zc2libGUgY29tcGxldGlvbnMgYXJlIHRoZSBtZW1iZXJz IG9mIHRoZSByZXN1bHRhbnQgbGlzdCB3aGljaAorK21hdGNoIHRoZSB3b3JkIGJlaW5nIGNvbXBs ZXRlZC4KKysKKytAaXRlbSAtWCBAdmFye2ZpbHRlcnBhdH0KKytAdmFye2ZpbHRlcnBhdH0gaXMg YSBwYXR0ZXJuIGFzIHVzZWQgZm9yIGZpbGVuYW1lIGV4cGFuc2lvbi4KKytJdCBpcyBhcHBsaWVk IHRvIHRoZSBsaXN0IG9mIHBvc3NpYmxlIGNvbXBsZXRpb25zIGdlbmVyYXRlZCBieSB0aGUKKytw cmVjZWRpbmcgb3B0aW9ucyBhbmQgYXJndW1lbnRzLCBhbmQgZWFjaCBjb21wbGV0aW9uIG1hdGNo aW5nCisrQHZhcntmaWx0ZXJwYXR9IGlzIHJlbW92ZWQgZnJvbSB0aGUgbGlzdC4KKytBIGxlYWRp bmcgQHNhbXB7IX0gaW4gQHZhcntmaWx0ZXJwYXR9IG5lZ2F0ZXMgdGhlIHBhdHRlcm47IGluIHRo aXMKKytjYXNlLCBhbnkgY29tcGxldGlvbiBub3QgbWF0Y2hpbmcgQHZhcntmaWx0ZXJwYXR9IGlz IHJlbW92ZWQuCisgQGVuZCB0YWJsZQorIAorIFRoZSByZXR1cm4gdmFsdWUgaXMgdHJ1ZSB1bmxl c3MgYW4gaW52YWxpZCBvcHRpb24gaXMgc3VwcGxpZWQsIGFuIG9wdGlvbgorQEAgLTE4NDIsNSAr MjAwNywzMSBAQCBhcmd1bWVudCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIHJlbW92ZSBhIGNvbXBs ZXRpb24gc3BlY2lmaWNhdGlvbiBmb3IKKyBhIEB2YXJ7bmFtZX0gZm9yIHdoaWNoIG5vIHNwZWNp ZmljYXRpb24gZXhpc3RzLCBvcgorIGFuIGVycm9yIG9jY3VycyBhZGRpbmcgYSBjb21wbGV0aW9u IHNwZWNpZmljYXRpb24uCisgCisrQGl0ZW0gY29tcG9wdAorK0BidGluZGV4IGNvbXBvcHQKKytA ZXhhbXBsZQorK0Bjb2Rle2NvbXBvcHR9IFstbyBAdmFye29wdGlvbn1dIFstREVdIFsrbyBAdmFy e29wdGlvbn1dIFtAdmFye25hbWV9XQorK0BlbmQgZXhhbXBsZQorK01vZGlmeSBjb21wbGV0aW9u IG9wdGlvbnMgZm9yIGVhY2ggQHZhcntuYW1lfSBhY2NvcmRpbmcgdG8gdGhlCisrQHZhcntvcHRp b259cywgb3IgZm9yIHRoZSBjdXJyZW50bHktZXhlY3V0aW5nIGNvbXBsZXRpb24gaWYgbm8gQHZh cntuYW1lfXMKKythcmUgc3VwcGxpZWQuCisrSWYgbm8gQHZhcntvcHRpb259cyBhcmUgZ2l2ZW4s IGRpc3BsYXkgdGhlIGNvbXBsZXRpb24gb3B0aW9ucyBmb3IgZWFjaAorK0B2YXJ7bmFtZX0gb3Ig dGhlIGN1cnJlbnQgY29tcGxldGlvbi4KKytUaGUgcG9zc2libGUgdmFsdWVzIG9mIEB2YXJ7b3B0 aW9ufSBhcmUgdGhvc2UgdmFsaWQgZm9yIHRoZSBAY29kZXtjb21wbGV0ZX0KKytidWlsdGluIGRl c2NyaWJlZCBhYm92ZS4KKytUaGUgQG9wdGlvbnstRH0gb3B0aW9uIGluZGljYXRlcyB0aGF0IHRo ZSByZW1haW5pbmcgb3B0aW9ucyBzaG91bGQKKythcHBseSB0byB0aGUgYGBkZWZhdWx0JycgY29t bWFuZCBjb21wbGV0aW9uOyB0aGF0IGlzLCBjb21wbGV0aW9uIGF0dGVtcHRlZAorK29uIGEgY29t bWFuZCBmb3Igd2hpY2ggbm8gY29tcGxldGlvbiBoYXMgcHJldmlvdXNseSBiZWVuIGRlZmluZWQu CisrVGhlIEBvcHRpb257LUV9IG9wdGlvbiBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVtYWluaW5nIG9w dGlvbnMgc2hvdWxkCisrYXBwbHkgdG8gYGBlbXB0eScnIGNvbW1hbmQgY29tcGxldGlvbjsgdGhh dCBpcywgY29tcGxldGlvbiBhdHRlbXB0ZWQgb24gYSAKKytibGFuayBsaW5lLgorKworK1RoZSBA b3B0aW9uey1EfSBvcHRpb24gdGFrZXMgcHJlY2VkZW5jZSBvdmVyIEBvcHRpb257LUV9LgorKwor K1RoZSByZXR1cm4gdmFsdWUgaXMgdHJ1ZSB1bmxlc3MgYW4gaW52YWxpZCBvcHRpb24gaXMgc3Vw cGxpZWQsIGFuIGF0dGVtcHQKKytpcyBtYWRlIHRvIG1vZGlmeSB0aGUgb3B0aW9ucyBmb3IgYSBA dmFye25hbWV9IGZvciB3aGljaCBubyBjb21wbGV0aW9uCisrc3BlY2lmaWNhdGlvbiBleGlzdHMs IG9yIGFuIG91dHB1dCBlcnJvciBvY2N1cnMuCisrCisgQGVuZCB0YWJsZQorKworIEBlbmQgaWZz ZXQKKy0tLSBhL3JlYWRsaW5lL2RvYy9ybHVzZXJtYW4udGV4aQorKysrIGIvcmVhZGxpbmUvZG9j L3JsdXNlcm1hbi50ZXhpCitAQCAtNCw4ICs0LDYgQEAKKyBAc2V0dGl0bGUgR05VIFJlYWRsaW5l IExpYnJhcnkKKyBAY29tbWVudCAlKiplbmQgb2YgaGVhZGVyIChUaGlzIGlzIGZvciBydW5uaW5n IFRleGluZm8gb24gYSByZWdpb24uKQorIAorLUBzZXRjaGFwdGVybmV3cGFnZSBvZGQKKy0KKyBA aW5jbHVkZSB2ZXJzaW9uLnRleGkKKyAKKyBAY29weWluZworQEAgLTE0LDcgKzEyLDcgQEAgVGhp cyBtYW51YWwgZGVzY3JpYmVzIHRoZSBlbmQgdXNlciBpbnRlcmZhY2Ugb2YgdGhlIEdOVSBSZWFk bGluZSBMaWJyYXJ5CisgY29uc2lzdGVuY3kgb2YgdXNlciBpbnRlcmZhY2UgYWNyb3NzIGRpc2Ny ZXRlIHByb2dyYW1zIHdoaWNoIHByb3ZpZGUKKyBhIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UuCisg CistQ29weXJpZ2h0IEBjb3B5cmlnaHR7fSAxOTg4LTIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisrQ29weXJpZ2h0IEBjb3B5cmlnaHR7fSAxOTg4LS0yMDExIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorIAorIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBtYWtlIGFu ZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZgorIHRoaXMgbWFudWFsIHByb3ZpZGVkIHRo ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlCitAQCAtMjIsMTUg KzIwLDE2IEBAIGFyZSBwcmVzZXJ2ZWQgb24gYWxsIGNvcGllcy4KKyAKKyBAcXVvdGF0aW9uCisg UGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0 aGlzIGRvY3VtZW50CistdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0 aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4xIG9yCisrdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg RnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4zIG9yCisgYW55IGxhdGVyIHZl cnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHdpdGggbm8K Ky1JbnZhcmlhbnQgU2VjdGlvbnMsIHdpdGggdGhlIEZyb250LUNvdmVyIHRleHRzIGJlaW5nIGBg QSBHTlUgTWFudWFsLCcnCisrSW52YXJpYW50IFNlY3Rpb25zLCB3aXRoIHRoZSBGcm9udC1Db3Zl ciB0ZXh0cyBiZWluZyBgYEEgR05VIE1hbnVhbCcnLAorIGFuZCB3aXRoIHRoZSBCYWNrLUNvdmVy IFRleHRzIGFzIGluIChhKSBiZWxvdy4gIEEgY29weSBvZiB0aGUgbGljZW5zZSBpcworLWluY2x1 ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkIGBgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNl bnNlLicnCisraW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgYGBHTlUgRnJlZSBEb2N1 bWVudGF0aW9uIExpY2Vuc2UnJy4KKysKKysoYSkgVGhlIEZTRidzIEJhY2stQ292ZXIgVGV4dCBp czogWW91IGFyZSBmcmVlIHRvIGNvcHkgYW5kIG1vZGlmeQorK3RoaXMgR05VIG1hbnVhbC4gIEJ1 eWluZyBjb3BpZXMgZnJvbSBHTlUgUHJlc3Mgc3VwcG9ydHMgdGhlIEZTRiBpbgorK2RldmVsb3Bp bmcgR05VIGFuZCBwcm9tb3Rpbmcgc29mdHdhcmUgZnJlZWRvbS4nJworIAorLShhKSBUaGUgRlNG J3MgQmFjay1Db3ZlciBUZXh0IGlzOiBgYFlvdSBoYXZlIGZyZWVkb20gdG8gY29weSBhbmQgbW9k aWZ5CistdGhpcyBHTlUgTWFudWFsLCBsaWtlIEdOVSBzb2Z0d2FyZS4gIENvcGllcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUKKy1Tb2Z0d2FyZSBGb3VuZGF0aW9uIHJhaXNlIGZ1bmRzIGZvciBHTlUg ZGV2ZWxvcG1lbnQuJycKKyBAZW5kIHF1b3RhdGlvbgorIEBlbmQgY29weWluZworIAorQEAgLTcw LDE4ICs2OSwxNCBAQCBwcm9ncmFtcyB3aGljaCBwcm92aWRlIGEgY29tbWFuZCBsaW5lIGludGVy ZmFjZS4KKyAKKyBAbWVudQorICogQ29tbWFuZCBMaW5lIEVkaXRpbmc6OgkgICBHTlUgUmVhZGxp bmUgVXNlcidzIE1hbnVhbC4KKy0qIENvcHlpbmcgVGhpcyBNYW51YWw6OgkJQ29weWluZyBUaGlz IE1hbnVhbC4KKysqIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZTo6CUxpY2Vuc2UgZm9y IGNvcHlpbmcgdGhpcyBtYW51YWwuCisgQGVuZCBtZW51CisgQGVuZCBpZm5vdHRleAorIAorIEBp bmNsdWRlIHJsdXNlci50ZXhpCisgCistQG5vZGUgQ29weWluZyBUaGlzIE1hbnVhbAorLUBhcHBl bmRpeCBDb3B5aW5nIFRoaXMgTWFudWFsCistCistQG1lbnUKKy0qIEdOVSBGcmVlIERvY3VtZW50 YXRpb24gTGljZW5zZTo6CUxpY2Vuc2UgZm9yIGNvcHlpbmcgdGhpcyBtYW51YWwuCistQGVuZCBt ZW51CisrQG5vZGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlCisrQGFwcGVuZGl4IEdO VSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZQorIAorIEBpbmNsdWRlIGZkbC50ZXhpCisgCist LS0gYS9yZWFkbGluZS9kb2MvdGV4aTJkdmkKKysrKyBiL3JlYWRsaW5lL2RvYy90ZXhpMmR2aQor QEAgLTUsMjAgKzUsMTggQEAKKyAjIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5 NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMSwKKyAjIDIwMDIsIDIwMDMgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgIworLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0jIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CistIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAo YXQgeW91ciBvcHRpb24pCistIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysjICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyAjCistIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KysjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorICMKKy0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgaWYgbm90LCB5b3UgY2FuIGVpdGhlciBzZW5kIGVtYWlsIHRvIHRoaXMKKy0jIHByb2dy YW0ncyBtYWludGFpbmVyIG9yIHdyaXRlIHRvOiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LAorLSMgSW5jLjsgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzA7IEJvc3RvbiwgTUEgMDIxMTEt MTMwNywgVVNBLgorKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAjCisgIyBPcmln aW5hbCBhdXRob3I6IE5vYWggRnJpZWRtYW4gPGZyaWVkbWFuQGdudS5vcmc+LgorICMKKy0tLSBh L3JlYWRsaW5lL2RvYy90ZXhpMmh0bWwKKysrKyBiL3JlYWRsaW5lL2RvYy90ZXhpMmh0bWwKK0BA IC03LDIwICs3LDE5IEBACisgIworICMgICAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwICBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAjCistIyAgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSMgICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKy0jICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCistIyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyMgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICMKKy0j ICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorLSMgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0jICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0jICAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor KyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisrIyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrIworKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAjCistIyAgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorLSMgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKKy0jICAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwg U3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKy0jIAorICMtIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisgCisgIyBUaGlzIHJlcXVpcmVzIHBlcmwgdmVyc2lvbiA1IG9yIGhpZ2hl cgorQEAgLTM1NjQsNyArMzU2Myw3IEBAIElOUFVUX0xJTkU6IHdoaWxlICgkXyA9ICZuZXh0X2xp bmUpIHsKKyAJCSRuYW1lID0gJm5vcm1hbGlzZV9ub2RlKCRuYW1lKTsKKyAJCSRsZXZlbCA9ICRz ZWMybGV2ZWx7JHRhZ307CisgCQkjIGNoZWNrIGZvciBpbmRleAorLQkJJGZpcnN0X2luZGV4X2No YXB0ZXIgPSAkbmFtZQorKwkJJGZpcnN0X2luZGV4X2NoYXB0ZXIgPSAkbm9kZQorIAkJICBpZiAo JGxldmVsID09IDEgJiYgISRmaXJzdF9pbmRleF9jaGFwdGVyICYmIAorIAkJICAgICAgJG5hbWUg PX4gL2luZGV4L2kpOworIAkJaWYgKCRpbl90b3AgJiYgL2hlYWRpbmcvKXsKKy0tLSBhL3JlYWRs aW5lL2RvYy92ZXJzaW9uLnRleGkKKysrKyBiL3JlYWRsaW5lL2RvYy92ZXJzaW9uLnRleGkKK0BA IC0xLDEwICsxLDEwIEBACisgQGlnbm9yZQorLUNvcHlyaWdodCAoQykgMTk4OC0yMDA1IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAKKytDb3B5cmlnaHQgKEMpIDE5ODgtMjAxMSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gCisgQGVuZCBpZ25vcmUKKyAKKy1Ac2V0IEVESVRJ T04gNS4xLWJldGExCistQHNldCBWRVJTSU9OIDUuMS1iZXRhMQorLUBzZXQgVVBEQVRFRCAxMSBO b3ZlbWJlciAyMDA1CistQHNldCBVUERBVEVELU1PTlRIIE5vdmVtYmVyIDIwMDUKKytAc2V0IEVE SVRJT04gNi4yCisrQHNldCBWRVJTSU9OIDYuMgorK0BzZXQgVVBEQVRFRCBTZXB0ZW1iZXIgNiAy MDEwCisrQHNldCBVUERBVEVELU1PTlRIIFNlcHRlbWJlciAyMDEwCisgCistQHNldCBMQVNUQ0hB TkdFIEZyaSBOb3YgMTEgMTk6NTA6NTEgRVNUIDIwMDUKKytAc2V0IExBU1RDSEFOR0UgTW9uIFNl cCAgNiAyMjowNzoxMCBFRFQgMjAxMAorLS0tIGEvcmVhZGxpbmUvZW1hY3Nfa2V5bWFwLmMKKysr KyBiL3JlYWRsaW5lL2VtYWNzX2tleW1hcC5jCitAQCAtMSwyNCArMSwyMyBAQAorIC8qIGVtYWNz X2tleW1hcC5jIC0tIHRoZSBrZXltYXAgZm9yIGVtYWNzX21vZGUgaW4gcmVhZGxpbmUgKCkuICov CisgCistLyogQ29weXJpZ2h0IChDKSAxOTg3LCAxOTg5LCAxOTkyIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVh ZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3 aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisrICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFy eQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBh bmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFy eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9vciBt b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUg R05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFkbGluZSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisr ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQg d2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBj YWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5 IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAor LSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8K KysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgIWRlZmluZWQgKEJVRlNJ WikKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKy0tLSBhL3JlYWRsaW5lL2V4YW1wbGVzL0NoYW5nZUxv Zy5nZGIKKysrKyBiL3JlYWRsaW5lL2V4YW1wbGVzL0NoYW5nZUxvZy5nZGIKK0BAIC0xLDMgKzEs NyBAQAorKzIwMTEtMDQtMjUgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KKysKKysJSW1wb3J0ZWQgcmVhZGxpbmUgNi4yLCBhbmQgdXBzdHJlYW0gcGF0Y2ggMDAx LgorKworIDIwMDYtMDQtMjQgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5j b20+CisgCisgCUltcG9ydGVkIHJlYWRsaW5lIDUuMSwgYW5kIHVwc3RyZWFtIHBhdGNoZXMgMDAx LTAwNC4KKy0tLSBhL3JlYWRsaW5lL2V4YW1wbGVzL0lucHV0cmMKKysrKyBiL3JlYWRsaW5lL2V4 YW1wbGVzL0lucHV0cmMKK0BAIC00LDIxICs0LDIxIEBACisgIyBvbiB3aGljaCBwcm9ncmFtIGlz IHJ1bm5pbmcsIG9yIHdoYXQgdGVybWluYWwgaXMgYWN0aXZlLgorICMKKyAKKy0jIENvcHlyaWdo dCAoQykgMTk4OS0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICBDb3B5 cmlnaHQgKEMpIDE5ODktMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAjCist IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0jIGFueSBsYXRl ciB2ZXJzaW9uLgorKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorKyMgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICMKKy0jIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKy0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisrIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorKyMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAjCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0jIEZv dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExIFVTQS4KKyAKKyAjIEluIGFsbCBwcm9ncmFtcywgYWxsIHRlcm1pbmFscywgbWFrZSBzdXJl IHRoaXMgaXMgYm91bmQuCisgIlxDLXhcQy1yIjogcmUtcmVhZC1pbml0LWZpbGUKKy0tLSBhL3Jl YWRsaW5lL2V4YW1wbGVzL01ha2VmaWxlLmluCisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9NYWtl ZmlsZS5pbgorQEAgLTEsMzAgKzEsNDYgQEAKKyAjCisgIyBUaGlzIGlzIHRoZSBNYWtlZmlsZSBm b3IgdGhlIHJlYWRsaW5lIGV4YW1wbGVzIHN1YmRpcmVjdG9yeS4KKyAjCistIyBDb3B5cmlnaHQg KEMpIDE5OTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyBDb3B5cmlnaHQgKEMp IDE5OTQsMjAwOCwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKy0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistIyBhbnkgbGF0ZXIgdmVy c2lvbi4KKysjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KysjICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0jIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor LSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKy0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKy0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisrIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrIyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisrIyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorIAorLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistIyBGb3VuZGF0aW9u LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0Eu CisgUkxfTElCUkFSWV9WRVJTSU9OID0gQExJQlZFUlNJT05ACisgCisgU0hFTEwgPSBATUFLRV9T SEVMTEAKKyBSTSA9IHJtIC1mCisgCisrcHJlZml4ID0gQHByZWZpeEAKKytleGVjX3ByZWZpeCA9 IEBleGVjX3ByZWZpeEAKKysKKytkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKKysKKytiaW5k aXIgPSBAYmluZGlyQAorIHNyY2RpciA9IEBzcmNkaXJACistVlBBVEggPSAuOkBzcmNkaXJACisr ZGF0YWRpciA9IEBkYXRhZGlyQAorK1ZQQVRIID0gQHNyY2RpckAKKyB0b3Bfc3JjZGlyID0gQHRv cF9zcmNkaXJACistQlVJTERfRElSID0gLgorKyNCVUlMRF9ESVIgPSAuCisrQlVJTERfRElSID0g QEJVSUxEX0RJUkAKKytpbnN0YWxsZGlyID0gJChkYXRhZGlyKS9yZWFkbGluZQorKworK0lOU1RB TEwgPSBASU5TVEFMTEAKKytJTlNUQUxMX1BST0dSQU0gPSBASU5TVEFMTF9QUk9HUkFNQAorK0lO U1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACisrCisrRVhFRVhUID0gQEVYRUVYVEAKKytPQkpF WFQgPSBAT0JKRVhUQAorIAorICMgU3VwcG9ydCBhbiBhbHRlcm5hdGUgZGVzdGluYXRpb24gcm9v dCBkaXJlY3RvcnkgZm9yIHBhY2thZ2UgYnVpbGRpbmcKKyBERVNURElSID0KK0BAIC01MSwzMSAr NjcsNTYgQEAgVEVSTUNBUF9MSUIgPSBAVEVSTUNBUF9MSUJACisgCSR7Uk19ICRACisgCSQoQ0Mp ICQoQ0NGTEFHUykgLWMgJDwKKyAKKy1FWEVDVVRBQkxFUyA9IGZpbGVtYW4gcmx0ZXN0IHJsIHJs Y2F0IHJsdmVyc2lvbiBoaXN0ZXhhbXAgCistT0JKRUNUUyA9IGZpbGVtYW4ubyBybHRlc3QubyBy bC5vIHJsY2F0Lm8gcmx2ZXJzaW9uLm8gaGlzdGV4YW1wLm8KKytTT1VSQ0VTID0gZXhjYWxsYmFj ay5jIGZpbGVtYW4uYyBoaXN0ZXhhbXAuYyBtYW5leGFtcC5jIHJsLWZnZXRzLmMgcmwuYyBcCisr CQlybGNhdC5jIHJsZXZlbnQuYyBybHB0eXRlc3QuYyBybHRlc3QuYyBybHZlcnNpb24uYworKwor K0VYRUNVVEFCTEVTID0gZmlsZW1hbiQoRVhFRVhUKSBybHRlc3QkKEVYRUVYVCkgcmwkKEVYRUVY VCkgcmxjYXQkKEVYRUVYVCkgXAorKwkJcmxldmVudCQoRVhFRVhUKSBybHZlcnNpb24kKEVYRUVY VCkgaGlzdGV4YW1wJChFWEVFWFQpCisrT0JKRUNUUyA9IGZpbGVtYW4ubyBybHRlc3QubyBybC5v IHJsZXZlbnQubyBybGNhdC5vIHJsdmVyc2lvbi5vIGhpc3RleGFtcC5vCisgCisgYWxsOiAkKEVY RUNVVEFCTEVTKQorIGV2ZXJ5dGhpbmc6IGFsbAorIAorLXJsOiBybC5vICQoUkVBRExJTkVfTElC KQorK2NoZWNrOglybHZlcnNpb24kKEVYRUVYVCkKKysJQGVjaG8gUmVhZGxpbmUgdmVyc2lvbjog YHJsdmVyc2lvbiQoRVhFRVhUKWAKKysKKytpbnN0YWxsZGlyczoKKysJLSQoU0hFTEwpICQodG9w X3NyY2Rpcikvc3VwcG9ydC9ta2RpcnMgJChERVNURElSKSQoaW5zdGFsbGRpcikKKysKKytpbnN0 YWxsOglpbnN0YWxsZGlycworKwlAZm9yIGYgaW4gJChTT1VSQ0VTKTsgZG8gXAorKwkJJChSTSkg JChERVNURElSKSQoaW5zdGFsbGRpcikvJCRmIDsgXAorKwkJJChJTlNUQUxMX0RBVEEpICQoc3Jj ZGlyKS8kJGYgJChERVNURElSKSQoaW5zdGFsbGRpcikgOyBcCisrCWRvbmUKKysKKyt1bmluc3Rh bGw6CisrCUBmb3IgZiBpbiAkKFNPVVJDRVMpOyBkbyBcCisrCQkkKFJNKSAkKERFU1RESVIpJChp bnN0YWxsZGlyKS8kJGYgOyBcCisrCWRvbmUKKysJLXJtZGlyICQoREVTVERJUikkKGluc3RhbGxk aXIpCisrCisrcmwkKEVYRUVYVCk6IHJsLm8gJChSRUFETElORV9MSUIpCisgCSQoUFVSSUZZKSAk KENDKSAkKExERkxBR1MpIC1vICRAIHJsLm8gJChSRUFETElORV9MSUIpICQoVEVSTUNBUF9MSUIp CisgCistcmxjYXQ6IHJsY2F0Lm8gJChSRUFETElORV9MSUIpCisrcmxjYXQkKEVYRUVYVCk6IHJs Y2F0Lm8gJChSRUFETElORV9MSUIpCisgCSQoUFVSSUZZKSAkKENDKSAkKExERkxBR1MpIC1vICRA IHJsY2F0Lm8gJChSRUFETElORV9MSUIpICQoVEVSTUNBUF9MSUIpCisgCistZmlsZW1hbjogZmls ZW1hbi5vICQoUkVBRExJTkVfTElCKQorK3JsZXZlbnQkKEVYRUVYVCk6IHJsZXZlbnQubyAkKFJF QURMSU5FX0xJQikKKysJJChQVVJJRlkpICQoQ0MpICQoTERGTEFHUykgLW8gJEAgcmxldmVudC5v ICQoUkVBRExJTkVfTElCKSAkKFRFUk1DQVBfTElCKQorKworK2ZpbGVtYW4kKEVYRUVYVCk6IGZp bGVtYW4ubyAkKFJFQURMSU5FX0xJQikKKyAJJChQVVJJRlkpICQoQ0MpICQoTERGTEFHUykgLW8g JEAgZmlsZW1hbi5vICQoUkVBRExJTkVfTElCKSAkKFRFUk1DQVBfTElCKQorIAorLXJsdGVzdDog cmx0ZXN0Lm8gJChSRUFETElORV9MSUIpCisrcmx0ZXN0JChFWEVFWFQpOiBybHRlc3QubyAkKFJF QURMSU5FX0xJQikKKyAJJChQVVJJRlkpICQoQ0MpICQoTERGTEFHUykgLW8gJEAgcmx0ZXN0Lm8g JChSRUFETElORV9MSUIpICQoVEVSTUNBUF9MSUIpCisgCistcmxwdHl0ZXN0OiBybHB0eXRlc3Qu byAkKFJFQURMSU5FX0xJQikKKytybHB0eXRlc3QkKEVYRUVYVCk6IHJscHR5dGVzdC5vICQoUkVB RExJTkVfTElCKQorIAkkKFBVUklGWSkgJChDQykgJChMREZMQUdTKSAtbyAkQCBybHB0eXRlc3Qu byAkKFJFQURMSU5FX0xJQikgJChURVJNQ0FQX0xJQikKKyAKKy1ybHZlcnNpb246IHJsdmVyc2lv bi5vICQoUkVBRExJTkVfTElCKQorK3JsdmVyc2lvbiQoRVhFRVhUKTogcmx2ZXJzaW9uLm8gJChS RUFETElORV9MSUIpCisgCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgcmx2ZXJzaW9uLm8gJChSRUFE TElORV9MSUIpICQoVEVSTUNBUF9MSUIpCisgCistaGlzdGV4YW1wOiBoaXN0ZXhhbXAubyAkKEhJ U1RPUllfTElCKQorK2hpc3RleGFtcCQoRVhFRVhUKTogaGlzdGV4YW1wLm8gJChISVNUT1JZX0xJ QikKKyAJJChQVVJJRlkpICQoQ0MpICQoTERGTEFHUykgLW8gJEAgaGlzdGV4YW1wLm8gLWxoaXN0 b3J5ICQoVEVSTUNBUF9MSUIpCisgCisgY2xlYW4gbW9zdGx5Y2xlYW46CistLS0gL2Rldi9udWxs CisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9hdXRvY29uZi9CQVNIX0NIRUNLX0xJQl9URVJNQ0FQ CitAQCAtMCwwICsxLDQwIEBACisrQUNfREVGVU4oW0JBU0hfQ0hFQ0tfTElCX1RFUk1DQVBdLAor K1sKKytpZiB0ZXN0ICJYJGJhc2hfY3ZfdGVybWNhcF9saWIiID0gIlgiOyB0aGVuCisrX2Jhc2hf bmVlZG1zZz15ZXMKKytlbHNlCisrQUNfTVNHX0NIRUNLSU5HKHdoaWNoIGxpYnJhcnkgaGFzIHRo ZSB0ZXJtY2FwIGZ1bmN0aW9ucykKKytfYmFzaF9uZWVkbXNnPQorK2ZpCisrQUNfQ0FDSEVfVkFM KGJhc2hfY3ZfdGVybWNhcF9saWIsCisrW0FDX0NIRUNLX0ZVTkModGdldGVudCwgYmFzaF9jdl90 ZXJtY2FwX2xpYj1saWJjLAorKyAgW0FDX0NIRUNLX0xJQih0ZXJtY2FwLCB0Z2V0ZW50LCBiYXNo X2N2X3Rlcm1jYXBfbGliPWxpYnRlcm1jYXAsCisrICAgIFtBQ19DSEVDS19MSUIodGluZm8sIHRn ZXRlbnQsIGJhc2hfY3ZfdGVybWNhcF9saWI9bGlidGluZm8sCisrICAgICAgICBbQUNfQ0hFQ0tf TElCKGN1cnNlcywgdGdldGVudCwgYmFzaF9jdl90ZXJtY2FwX2xpYj1saWJjdXJzZXMsCisrCSAg ICBbQUNfQ0hFQ0tfTElCKG5jdXJzZXMsIHRnZXRlbnQsIGJhc2hfY3ZfdGVybWNhcF9saWI9bGli bmN1cnNlcywKKysJICAgICAgICBiYXNoX2N2X3Rlcm1jYXBfbGliPWdudXRlcm1jYXApXSldKV0p XSldKQorK2lmIHRlc3QgIlgkX2Jhc2hfbmVlZG1zZyIgPSAiWHllcyI7IHRoZW4KKytBQ19NU0df Q0hFQ0tJTkcod2hpY2ggbGlicmFyeSBoYXMgdGhlIHRlcm1jYXAgZnVuY3Rpb25zKQorK2ZpCisr QUNfTVNHX1JFU1VMVCh1c2luZyAkYmFzaF9jdl90ZXJtY2FwX2xpYikKKytpZiB0ZXN0ICRiYXNo X2N2X3Rlcm1jYXBfbGliID0gZ251dGVybWNhcCAmJiB0ZXN0IC16ICIkcHJlZmVyX2N1cnNlcyI7 IHRoZW4KKytMREZMQUdTPSIkTERGTEFHUyAtTC4vbGliL3Rlcm1jYXAiCisrVEVSTUNBUF9MSUI9 Ii4vbGliL3Rlcm1jYXAvbGlidGVybWNhcC5hIgorK1RFUk1DQVBfREVQPSIuL2xpYi90ZXJtY2Fw L2xpYnRlcm1jYXAuYSIKKytlbGlmIHRlc3QgJGJhc2hfY3ZfdGVybWNhcF9saWIgPSBsaWJ0ZXJt Y2FwICYmIHRlc3QgLXogIiRwcmVmZXJfY3Vyc2VzIjsgdGhlbgorK1RFUk1DQVBfTElCPS1sdGVy bWNhcAorK1RFUk1DQVBfREVQPQorK2VsaWYgdGVzdCAkYmFzaF9jdl90ZXJtY2FwX2xpYiA9IGxp YnRpbmZvOyB0aGVuCisrVEVSTUNBUF9MSUI9LWx0aW5mbworK1RFUk1DQVBfREVQPQorK2VsaWYg dGVzdCAkYmFzaF9jdl90ZXJtY2FwX2xpYiA9IGxpYm5jdXJzZXM7IHRoZW4KKytURVJNQ0FQX0xJ Qj0tbG5jdXJzZXMKKytURVJNQ0FQX0RFUD0KKytlbGlmIHRlc3QgJGJhc2hfY3ZfdGVybWNhcF9s aWIgPSBsaWJjOyB0aGVuCisrVEVSTUNBUF9MSUI9CisrVEVSTUNBUF9ERVA9CisrZWxzZQorK1RF Uk1DQVBfTElCPS1sY3Vyc2VzCisrVEVSTUNBUF9ERVA9CisrZmkKKytdKQorLS0tIC9kZXYvbnVs bAorKysrIGIvcmVhZGxpbmUvZXhhbXBsZXMvYXV0b2NvbmYvUkxfTElCX1JFQURMSU5FX1ZFUlNJ T04KK0BAIC0wLDAgKzEsMTE4IEBACisrZG5sIG5lZWQ6IHByZWZpeCBleGVjX3ByZWZpeCBsaWJk aXIgaW5jbHVkZWRpciBDQyBURVJNQ0FQX0xJQgorK2RubCByZXF1aXJlOgorK2RubAlBQ19QUk9H X0NDCisrZG5sCUJBU0hfQ0hFQ0tfTElCX1RFUk1DQVAKKysKKytBQ19ERUZVTihbUkxfTElCX1JF QURMSU5FX1ZFUlNJT05dLAorK1sKKytBQ19SRVFVSVJFKFtCQVNIX0NIRUNLX0xJQl9URVJNQ0FQ XSkKKysKKytBQ19NU0dfQ0hFQ0tJTkcoW3ZlcnNpb24gb2YgaW5zdGFsbGVkIHJlYWRsaW5lIGxp YnJhcnldKQorKworKyMgV2hhdCBhIHBhaW4gaW4gdGhlIGFzcyB0aGlzIGlzLgorKworKyMgc2F2 ZSBjcHAgYW5kIGxkIG9wdGlvbnMKKytfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrX3NhdmVfTERG TEFHUz0iJExERkxBR1MiCisrX3NhdmVfTElCUz0iJExJQlMiCisrCisrIyBEb24ndCBzZXQgYWNf Y3ZfcmxfcHJlZml4IGlmIHRoZSBjYWxsZXIgaGFzIGFscmVhZHkgYXNzaWduZWQgYSB2YWx1ZS4g IFRoaXMKKysjIGFsbG93cyB0aGUgY2FsbGVyIHRvIGRvIHNvbWV0aGluZyBsaWtlICRfcmxfcHJl Zml4PSR3aXRodmFsIGlmIHRoZSB1c2VyCisrIyBzcGVjaWZpZXMgLS13aXRoLWluc3RhbGxlZC1y ZWFkbGluZT1QUkVGSVggYXMgYW4gYXJndW1lbnQgdG8gY29uZmlndXJlCisrCisraWYgdGVzdCAt eiAiJGFjX2N2X3JsX3ByZWZpeCI7IHRoZW4KKyt0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBh Y19jdl9ybF9wcmVmaXg9JGFjX2RlZmF1bHRfcHJlZml4IHx8IGFjX2N2X3JsX3ByZWZpeD0ke3By ZWZpeH0KKytmaQorKworK2V2YWwgYWNfY3ZfcmxfaW5jbHVkZWRpcj0ke2FjX2N2X3JsX3ByZWZp eH0vaW5jbHVkZQorK2V2YWwgYWNfY3ZfcmxfbGliZGlyPSR7YWNfY3ZfcmxfcHJlZml4fS9saWIK KysKKytMSUJTPSIkTElCUyAtbHJlYWRsaW5lICR7VEVSTUNBUF9MSUJ9IgorK0NGTEFHUz0iJENG TEFHUyAtSSR7YWNfY3ZfcmxfaW5jbHVkZWRpcn0iCisrTERGTEFHUz0iJExERkxBR1MgLUwke2Fj X2N2X3JsX2xpYmRpcn0iCisrCisrQUNfQ0FDSEVfVkFMKGFjX2N2X3JsX3ZlcnNpb24sCisrW0FD X1RSWV9SVU4oWworKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxyZWFkbGluZS9yZWFk bGluZS5oPgorKworK2V4dGVybiBpbnQgcmxfZ251X3JlYWRsaW5lX3A7CisrCisrbWFpbigpCisr eworKwlGSUxFICpmcDsKKysJZnAgPSBmb3BlbigiY29uZnRlc3Qucmx2IiwgInciKTsKKysJaWYg KGZwID09IDApCisrCQlleGl0KDEpOworKwlpZiAocmxfZ251X3JlYWRsaW5lX3AgIT0gMSkKKysJ CWZwcmludGYoZnAsICIwLjBcbiIpOworKwllbHNlCisrCQlmcHJpbnRmKGZwLCAiJXNcbiIsIHJs X2xpYnJhcnlfdmVyc2lvbiA/IHJsX2xpYnJhcnlfdmVyc2lvbiA6ICIwLjAiKTsKKysJZmNsb3Nl KGZwKTsKKysJZXhpdCgwKTsKKyt9CisrXSwKKythY19jdl9ybF92ZXJzaW9uPWBjYXQgY29uZnRl c3Qucmx2YCwKKythY19jdl9ybF92ZXJzaW9uPScwLjAnLAorK2FjX2N2X3JsX3ZlcnNpb249JzQu MicpXSkKKysKKytDRkxBR1M9IiRfc2F2ZV9DRkxBR1MiCisrTERGTEFHUz0iJF9zYXZlX0xERkxB R1MiCisrTElCUz0iJF9zYXZlX0xJQlMiCisrCisrUkxfTUFKT1I9MAorK1JMX01JTk9SPTAKKysK KysjICgKKytjYXNlICIkYWNfY3ZfcmxfdmVyc2lvbiIgaW4KKysyKnwzKnw0Knw1Knw2Knw3Knw4 Knw5KikKKysJUkxfTUFKT1I9YGVjaG8gJGFjX2N2X3JsX3ZlcnNpb24gfCBzZWQgJ3M6XC4uKiQ6 OidgCisrCVJMX01JTk9SPWBlY2hvICRhY19jdl9ybF92ZXJzaW9uIHwgc2VkIC1lICdzOl4uKlwu OjonIC1lICdzOltbYS16QS1aXV0qJDo6J2AKKysJOzsKKytlc2FjCisrCisrIyAoKCgKKytjYXNl ICRSTF9NQUpPUiBpbgorK1tbMC05XVswLTldXSkJX1JMX01BSk9SPSRSTF9NQUpPUiA7OworK1tb MC05XV0pCV9STF9NQUpPUj0wJFJMX01BSk9SIDs7CisrKikJCV9STF9NQUpPUj0wMCA7OworK2Vz YWMKKysKKysjICgoKAorK2Nhc2UgJFJMX01JTk9SIGluCisrW1swLTldWzAtOV1dKQlfUkxfTUlO T1I9JFJMX01JTk9SIDs7CisrW1swLTldXSkJX1JMX01JTk9SPTAkUkxfTUlOT1IgOzsKKysqKQkJ X1JMX01JTk9SPTAwIDs7CisrZXNhYworKworK1JMX1ZFUlNJT049IjB4JHtfUkxfTUFKT1J9JHtf UkxfTUlOT1J9IgorKworKyMgUmVhZGxpbmUgdmVyc2lvbnMgZ3JlYXRlciB0aGFuIDQuMiBoYXZl IHRoZXNlIGRlZmluZXMgaW4gcmVhZGxpbmUuaAorKworK2lmIHRlc3QgJGFjX2N2X3JsX3ZlcnNp b24gPSAnMC4wJyA7IHRoZW4KKysJQUNfTVNHX1dBUk4oW0NvdWxkIG5vdCB0ZXN0IHZlcnNpb24g b2YgaW5zdGFsbGVkIHJlYWRsaW5lIGxpYnJhcnkuXSkKKytlbGlmIHRlc3QgJFJMX01BSk9SIC1n dCA0IHx8IHsgdGVzdCAkUkxfTUFKT1IgPSA0ICYmIHRlc3QgJFJMX01JTk9SIC1ndCAyIDsgfSA7 IHRoZW4KKysJIyBzZXQgdGhlc2UgZm9yIHVzZSBieSB0aGUgY2FsbGVyCisrCVJMX1BSRUZJWD0k YWNfY3ZfcmxfcHJlZml4CisrCVJMX0xJQkRJUj0kYWNfY3ZfcmxfbGliZGlyCisrCVJMX0lOQ0xV REVESVI9JGFjX2N2X3JsX2luY2x1ZGVkaXIKKysJQUNfTVNHX1JFU1VMVCgkYWNfY3ZfcmxfdmVy c2lvbikKKytlbHNlCisrCisrQUNfREVGSU5FX1VOUVVPVEVEKFJMX1JFQURMSU5FX1ZFUlNJT04s ICRSTF9WRVJTSU9OLCBbZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBpbnN0YWxsZWQgcmVhZGxpbmUg bGlicmFyeV0pCisrQUNfREVGSU5FX1VOUVVPVEVEKFJMX1ZFUlNJT05fTUFKT1IsICRSTF9NQUpP UiwgW21ham9yIHZlcnNpb24gb2YgaW5zdGFsbGVkIHJlYWRsaW5lIGxpYnJhcnldKQorK0FDX0RF RklORV9VTlFVT1RFRChSTF9WRVJTSU9OX01JTk9SLCAkUkxfTUlOT1IsIFttaW5vciB2ZXJzaW9u IG9mIGluc3RhbGxlZCByZWFkbGluZSBsaWJyYXJ5XSkKKysKKytBQ19TVUJTVChSTF9WRVJTSU9O KQorK0FDX1NVQlNUKFJMX01BSk9SKQorK0FDX1NVQlNUKFJMX01JTk9SKQorKworKyMgc2V0IHRo ZXNlIGZvciB1c2UgYnkgdGhlIGNhbGxlcgorK1JMX1BSRUZJWD0kYWNfY3ZfcmxfcHJlZml4Cisr UkxfTElCRElSPSRhY19jdl9ybF9saWJkaXIKKytSTF9JTkNMVURFRElSPSRhY19jdl9ybF9pbmNs dWRlZGlyCisrCisrQUNfTVNHX1JFU1VMVCgkYWNfY3ZfcmxfdmVyc2lvbikKKysKKytmaQorK10p CistLS0gL2Rldi9udWxsCisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9hdXRvY29uZi93aV9MSUJf UkVBRExJTkUKK0BAIC0wLDAgKzEsNzYgQEAKKytkbmwgQm9ydXQgUmF6ZW0KKytkbmwKKytkbmwg VGhpcyBtYWNybyBjaGVja3MgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGUgcmVhZGxpbmUgbGlicmFy eS4KKytkbmwgSXQgd29ya3MgYWxzbyBpbiBjcm9zcy1jb21waWxhdGlvbiBlbnZpcm9ubWVudC4K KytkbmwKKytkbmwgVG8gZ2V0IGl0IGludG8gdGhlIGFjbG9jYWwubTQgZG5sIGZpbGUsIGRvIHRo aXM6CisrZG5sICAgYWNsb2NhbCAtSSAuIC0tdmVyYm9zZQorK2RubAorK2RubCBUaGUgLS12ZXJi b3NlIHdpbGwgc2hvdyBhbGwgb2YgdGhlIGZpbGVzIHRoYXQgYXJlIHNlYXJjaGVkCisrZG5sIGZv ciAubTQgbWFjcm9zLgorKworK0FDX0RFRlVOKFt3aV9MSUJfUkVBRExJTkVdLCBbCisrICBkbmwg Y2hlY2sgZm9yIHRoZSByZWFkbGluZS5oIGhlYWRlciBmaWxlCisrCisrICBBQ19DSEVDS19IRUFE RVIocmVhZGxpbmUvcmVhZGxpbmUuaCkKKysKKysgIGlmIHRlc3QgIiRhY19jdl9oZWFkZXJfcmVh ZGxpbmVfcmVhZGxpbmVfaCIgPSB5ZXM7IHRoZW4KKysgICAgZG5sIGNoZWNrIHRoZSByZWFkbGlu ZSB2ZXJzaW9uCisrCisrICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKysjaW5jbHVk ZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8cmVhZGxpbmUvcmVhZGxpbmUuaD4KKyt3aV9MSUJfUkVB RExJTkVfVkVSU0lPTiBSTF9WRVJTSU9OX01BSk9SIFJMX1ZFUlNJT05fTUlOT1IKKytFT0YKKysK KysgICAgd2lfUkVBRExJTkVfVkVSU0lPTj0kKCRDUFAgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19l eHQgfCBzZWQgLW4gLWUgInMvXndpX0xJQl9SRUFETElORV9WRVJTSU9OICAqXChbWzAtOVxdXVtb MC05XF1dKlwpICAqXChbWzAtOVxdXVtbMC05XF1dKlwpJC9cMS5cMi9wIikKKysgICAgcm0gLXJm IGNvbmZ0ZXN0KgorKworKyAgICBpZiB0ZXN0IC1uICIkd2lfUkVBRExJTkVfVkVSU0lPTiI7IHRo ZW4KKysgICAgICB3aV9NQUpPUj0kKGV4cHIgJHdpX1JFQURMSU5FX1ZFUlNJT04gOiAnXChbWzAt OV1dW1swLTldXSpcKVwuJykKKysgICAgICB3aV9NSU5PUj0kKGV4cHIgJHdpX1JFQURMSU5FX1ZF UlNJT04gOiAnW1swLTldXVtbMC05XV0qXC5cKFtbMC05XV1bWzAtOV1dKiRcKScpCisrICAgICAg aWYgdGVzdCAkd2lfTUlOT1IgLWx0IDEwOyB0aGVuCisrICAgICAgICB3aV9NSU5PUj0kKGV4cHIg JHdpX01JTk9SIFwqIDEwKQorKyAgICAgIGZpCisrICAgICAgd2lfUkVBRExJTkVfVkVSU0lPTj0k KGV4cHIgJHdpX01BSk9SIFwqIDEwMCArICR3aV9NSU5PUikKKysgICAgZWxzZQorKyAgICAgIHdp X1JFQURMSU5FX1ZFUlNJT049LTEKKysgICAgZmkKKysKKysgICAgZG5sIGNoZWNrIGZvciB0aGUg cmVhZGxpbmUgbGlicmFyeQorKworKyAgICBhY19zYXZlX0xJQlM9IiRMSUJTIgorKyAgICAjIE5v dGU6ICRMSUJDVVJTRVMgaXMgcGVybWl0dGVkIHRvIGJlIGVtcHR5LgorKworKyAgICBmb3IgTElC UkVBRExJTkUgaW4gIi1scmVhZGxpbmUuZGxsIiAiLWxyZWFkbGluZSIgIi1scmVhZGxpbmUgJExJ QkNVUlNFUyIgIi1scmVhZGxpbmUgLWx0ZXJtY2FwIiAiLWxyZWFkbGluZSAtbG5jdXJzZXMiICIt bHJlYWRsaW5lIC1sY3Vyc2VzIgorKyAgICBkbworKyAgICAgIEFDX01TR19DSEVDS0lORyhbZm9y IEdOVSBSZWFkbGluZSBsaWJyYXJ5ICRMSUJSRUFETElORV0pCisrCisrICAgICAgTElCUz0iJGFj X3NhdmVfTElCUyAkTElCUkVBRExJTkUiCisrCisrICAgICAgQUNfVFJZX0xJTksoWworKyAgICAg ICAgLyogaW5jbHVkZXMgKi8KKysgICAgICAgICNpbmNsdWRlIDxzdGRpby5oPgorKyAgICAgICAg I2luY2x1ZGUgPHJlYWRsaW5lL3JlYWRsaW5lLmg+CisrICAgICAgXSxbCisrICAgICAgICAvKiBm dW5jdGlvbi1ib2R5ICovCisrICAgICAgICBpbnQgZHVtbXkgPSBybF9jb21wbGV0aW9uX2FwcGVu ZF9jaGFyYWN0ZXI7IC8qIHJsX2NvbXBsZXRpb25fYXBwZW5kX2NoYXJhY3RlciBhcHBlYXJlZCBp biB2ZXJzaW9uIDIuMSAqLworKyAgICAgICAgcmVhZGxpbmUoTlVMTCk7CisrICAgICAgXSxbCisr ICAgICAgICB3aV9jdl9saWJfcmVhZGxpbmU9eWVzCisrICAgICAgICBBQ19NU0dfUkVTVUxUKHll cykKKysgICAgICBdLFsKKysgICAgICAgIHdpX2N2X2xpYl9yZWFkbGluZT1ubworKyAgICAgICAg QUNfTVNHX1JFU1VMVChubykKKysgICAgICBdKQorKworKyAgICAgIGlmIHRlc3QgIiR3aV9jdl9s aWJfcmVhZGxpbmUiID0geWVzOyB0aGVuCisrICAgICAgICBBQ19TVUJTVChMSUJSRUFETElORSkK KysgICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0xJQlJFQURMSU5FLCAkd2lfUkVBRExJ TkVfVkVSU0lPTiwgW1JlYWRsaW5lXSkKKysgICAgICAgIGJyZWFrCisrICAgICAgZmkKKysgICAg ZG9uZQorKworKyAgICBMSUJTPSIkYWNfc2F2ZV9MSUJTIgorKyAgZmkKKytdKQorLS0tIGEvcmVh ZGxpbmUvZXhhbXBsZXMvZXhjYWxsYmFjay5jCisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9leGNh bGxiYWNrLmMKK0BAIC0zMiw2ICszMiw5IEBAIExldCBtZSBrbm93IHdoYXQgeW91IHRoaW5rLgor IAorIEplZmYKKyAqLworKy8qCisrQ29weXJpZ2h0IChDKSAxOTk5IEplZmYgU29sb21vbgorKyov CisgCisgI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCisgI2luY2x1ZGUgPGNvbmZpZy5oPgor LS0tIGEvcmVhZGxpbmUvZXhhbXBsZXMvZmlsZW1hbi5jCisrKysgYi9yZWFkbGluZS9leGFtcGxl cy9maWxlbWFuLmMKK0BAIC0xLDIyICsxLDIzIEBACistLyogQ29weXJpZ2h0IChDKSAxOTg3LTIw MDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogZmlsZW1hbi5jIC0gZmlsZSBt YW5hZ2VyIGV4YW1wbGUgZm9yIHJlYWRsaW5lIGxpYnJhcnkuICovCisgCistICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCisrLyog Q29weXJpZ2h0IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisr CisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFk bGluZSksIGEgbGlicmFyeSBmb3IKKyAgICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRl cmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorIAorLSAgIFRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAg IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAK Ky0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFkbGlu ZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVu IHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGlu IGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhh dmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx IFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAvKiBmaWxlbWFu LmMgLS0gQSB0aW55IGFwcGxpY2F0aW9uIHdoaWNoIGRlbW9uc3RyYXRlcyBob3cgdG8gdXNlIHRo ZQorICAgIEdOVSBSZWFkbGluZSBsaWJyYXJ5LiAgVGhpcyBhcHBsaWNhdGlvbiBpbnRlcmFjdGl2 ZWx5IGFsbG93cyB1c2VycworQEAgLTUwLDYgKzUxLDggQEAKKyAjICBpbmNsdWRlIDxzdGRsaWIu aD4KKyAjZW5kaWYKKyAKKysjaW5jbHVkZSA8dGltZS5oPgorKworICNpZmRlZiBSRUFETElORV9M SUJSQVJZCisgIyAgaW5jbHVkZSAicmVhZGxpbmUuaCIKKyAjICBpbmNsdWRlICJoaXN0b3J5Lmgi CitAQCAtNTgsNyArNjEsNyBAQAorICMgIGluY2x1ZGUgPHJlYWRsaW5lL2hpc3RvcnkuaD4KKyAj ZW5kaWYKKyAKKy1leHRlcm4gY2hhciAqeG1hbGxvYyAoKTsKKytleHRlcm4gY2hhciAqeG1hbGxv YyBQQVJBTVMoKHNpemVfdCkpOworIAorIC8qIFRoZSBuYW1lcyBvZiBmdW5jdGlvbnMgdGhhdCBh Y3R1YWxseSBkbyB0aGUgbWFuaXB1bGF0aW9uLiAqLworIGludCBjb21fbGlzdCBQQVJBTVMoKGNo YXIgKikpOworLS0tIGEvcmVhZGxpbmUvZXhhbXBsZXMvaGlzdGV4YW1wLmMKKysrKyBiL3JlYWRs aW5lL2V4YW1wbGVzL2hpc3RleGFtcC5jCitAQCAtMSwyMiArMSwyMyBAQAorLS8qIENvcHlyaWdo dCAoQykgMTk4Ny0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIGhpc3Rl eGFtcC5jIC0gaGlzdG9yeSBsaWJyYXJ5IGV4YW1wbGUgcHJvZ3JhbS4gKi8KKyAKKy0gICBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IK KysvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkg KFJlYWRsaW5lKSwgYSBsaWJyYXJ5IGZvcgorICAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRo IGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisgCistICAgVGhlIEdOVSBS ZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0 d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIFJl YWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMg b2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5IGtl cHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90Cist ICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg MDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworIAorICNpbmNs dWRlIDxzdGRpby5oPgorIAorLS0tIGEvcmVhZGxpbmUvZXhhbXBsZXMvbWFuZXhhbXAuYworKysr IGIvcmVhZGxpbmUvZXhhbXBsZXMvbWFuZXhhbXAuYworQEAgLTEsMjQgKzEsMjMgQEAKKyAvKiBt YW5leGFtcC5jIC0tIFRoZSBleGFtcGxlcyB3aGljaCBhcHBlYXIgaW4gdGhlIGRvY3VtZW50YXRp b24gYXJlIGhlcmUuICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDIgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCisrICAgVGhpcyBmaWxlIGlzIHBh cnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeSBmb3IK KyAgICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlz dG9yeSBlZGl0aW5nLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy LCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5l IExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAg dXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29m dHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlO RyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNl bnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBs ZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8 cmVhZGxpbmUvcmVhZGxpbmUuaD4KKy0tLSBhL3JlYWRsaW5lL2V4YW1wbGVzL3JlYWRsaW5lYnVm LmgKKysrKyBiL3JlYWRsaW5lL2V4YW1wbGVzL3JlYWRsaW5lYnVmLmgKK0BAIC04LDcgKzgsNyBA QAorICAqCisgICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAqIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisr ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiAgb2YgdGhl IExpY2Vuc2UsIG9yCisgICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAg KgorICAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorLS0tIGEvcmVhZGxpbmUvZXhhbXBsZXMvcmwuYworKysrIGIvcmVhZGxp bmUvZXhhbXBsZXMvcmwuYworQEAgLTUsMjUgKzUsMjQgQEAKKyAgKiB1c2FnZTogcmwgWy1wIHBy b21wdF0gWy11IHVuaXRdIFstZCBkZWZhdWx0XSBbLW4gbmNoYXJzXQorICAqLworIAorLS8qIENv cHlyaWdodCAoQykgMTk4Ny0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8q IENvcHlyaWdodCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor IAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBs aWJyYXJ5IGZvcgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGli cmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkgZm9yCisgICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0 IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKyAKKy0gICBUaGUg R05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFkbGluZSBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0gICBvZiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr ICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFs bHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBu b3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9u LCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5l LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisgCisg I2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCisgIyAgaW5jbHVkZSA8Y29uZmlnLmg+CistLS0g YS9yZWFkbGluZS9leGFtcGxlcy9ybGNhdC5jCisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9ybGNh dC5jCitAQCAtNCwyNSArNCwyNCBAQAorICAqIHVzYWdlOiBybGNhdAorICAqLworIAorLS8qIENv cHlyaWdodCAoQykgMTk4Ny0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8q IENvcHlyaWdodCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor IAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBs aWJyYXJ5IGZvcgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGli cmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkgZm9yCisgICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0 IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKyAKKy0gICBUaGUg R05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFkbGluZSBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0gICBvZiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr ICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFs bHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBu b3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9u LCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5l LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisgCisg I2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCisgIyAgaW5jbHVkZSA8Y29uZmlnLmg+CistLS0g L2Rldi9udWxsCisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9ybGV2ZW50LmMKK0BAIC0wLDAgKzEs MTY2IEBACisrLyoKKysgKiBybCAtIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgdG8gcmVhZCBhIGxp bmUgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQKKysgKiAgICAgIChvciBhbm90aGVyIGZkKSB1c2lu ZyByZWFkbGluZS4KKysgKgorKyAqIHVzYWdlOiBybCBbLXAgcHJvbXB0XSBbLXUgdW5pdF0gWy1k IGRlZmF1bHRdIFstbiBuY2hhcnNdCisrICovCisrCisrLyogQ29weXJpZ2h0IChDKSAxOTg3LTIw MDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlzIHBh cnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeSBmb3IK KysgICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlz dG9yeSBlZGl0aW5nLgorKworKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBSZWFk bGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisrCisrI2lm IGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCisrIyAgaW5jbHVkZSA8Y29uZmlnLmg+CisrI2VuZGlm CisrCisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKworKyNp ZmRlZiBIQVZFX1NURExJQl9ICisrIyAgaW5jbHVkZSA8c3RkbGliLmg+CisrI2Vsc2UgCisrZXh0 ZXJuIHZvaWQgZXhpdCgpOworKyNlbmRpZgorKworKyNpZiBkZWZpbmVkIChSRUFETElORV9MSUJS QVJZKQorKyMgIGluY2x1ZGUgInBvc2l4c3RhdC5oIgorKyMgIGluY2x1ZGUgInJlYWRsaW5lLmgi CisrIyAgaW5jbHVkZSAiaGlzdG9yeS5oIgorKyNlbHNlCisrIyAgaW5jbHVkZSA8c3lzL3N0YXQu aD4KKysjICBpbmNsdWRlIDxyZWFkbGluZS9yZWFkbGluZS5oPgorKyMgIGluY2x1ZGUgPHJlYWRs aW5lL2hpc3RvcnkuaD4KKysjZW5kaWYKKysKKytleHRlcm4gaW50IG9wdGluZDsKKytleHRlcm4g Y2hhciAqb3B0YXJnOworKworKyNpZiAhZGVmaW5lZCAoc3RyY2hyKSAmJiAhZGVmaW5lZCAoX19T VERDX18pCisrZXh0ZXJuIGNoYXIgKnN0cnJjaHIoKTsKKysjZW5kaWYKKysKKytzdGF0aWMgY2hh ciAqcHJvZ25hbWU7Cisrc3RhdGljIGNoYXIgKmRlZnRleHQ7CisrCisrc3RhdGljIGludAorK2V2 ZW50X2hvb2sgKCkKKyt7CisrICBmcHJpbnRmIChzdGRlcnIsICJkaW5nIVxuIik7CisrICBzbGVl cCAoMSk7CisrICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludAorK3NldF9kZWZ0ZXh0ICgp CisreworKyAgaWYgKGRlZnRleHQpCisrICAgIHsKKysgICAgICBybF9pbnNlcnRfdGV4dCAoZGVm dGV4dCk7CisrICAgICAgZGVmdGV4dCA9IChjaGFyICopTlVMTDsKKysgICAgICBybF9zdGFydHVw X2hvb2sgPSAocmxfaG9va19mdW5jX3QgKilOVUxMOworKyAgICB9CisrICByZXR1cm4gMDsKKyt9 CisrCisrc3RhdGljIHZvaWQKKyt1c2FnZSgpCisreworKyAgZnByaW50ZiAoc3RkZXJyLCAiJXM6 IHVzYWdlOiAlcyBbLXAgcHJvbXB0XSBbLXUgdW5pdF0gWy1kIGRlZmF1bHRdIFstbiBuY2hhcnNd XG4iLAorKwkJcHJvZ25hbWUsIHByb2duYW1lKTsKKyt9CisrCisraW50CisrbWFpbiAoYXJnYywg YXJndikKKysgICAgIGludCBhcmdjOworKyAgICAgY2hhciAqKmFyZ3Y7CisreworKyAgY2hhciAq dGVtcCwgKnByb21wdDsKKysgIHN0cnVjdCBzdGF0IHNiOworKyAgaW50IG9wdCwgZmQsIG5jaDsK KysgIEZJTEUgKmlmcDsKKysKKysgIHByb2duYW1lID0gc3RycmNocihhcmd2WzBdLCAnLycpOwor KyAgaWYgKHByb2duYW1lID09IDApCisrICAgIHByb2duYW1lID0gYXJndlswXTsKKysgIGVsc2UK KysgICAgcHJvZ25hbWUrKzsKKysKKysgIC8qIGRlZmF1bHRzICovCisrICBwcm9tcHQgPSAicmVh ZGxpbmUkICI7CisrICBmZCA9IG5jaCA9IDA7CisrICBkZWZ0ZXh0ID0gKGNoYXIgKikwOworKwor KyAgd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgInA6dTpkOm46IikpICE9IEVPRikK KysgICAgeworKyAgICAgIHN3aXRjaCAob3B0KQorKwl7CisrCWNhc2UgJ3AnOgorKwkgIHByb21w dCA9IG9wdGFyZzsKKysJICBicmVhazsKKysJY2FzZSAndSc6CisrCSAgZmQgPSBhdG9pKG9wdGFy Zyk7CisrCSAgaWYgKGZkIDwgMCkKKysJICAgIHsKKysJICAgICAgZnByaW50ZiAoc3RkZXJyLCAi JXM6IGJhZCBmaWxlIGRlc2NyaXB0b3IgYCVzJ1xuIiwgcHJvZ25hbWUsIG9wdGFyZyk7CisrCSAg ICAgIGV4aXQgKDIpOworKwkgICAgfQorKwkgIGJyZWFrOworKwljYXNlICdkJzoKKysJICBkZWZ0 ZXh0ID0gb3B0YXJnOworKwkgIGJyZWFrOworKwljYXNlICduJzoKKysJICBuY2ggPSBhdG9pKG9w dGFyZyk7CisrCSAgaWYgKG5jaCA8IDApCisrCSAgICB7CisrCSAgICAgIGZwcmludGYgKHN0ZGVy ciwgIiVzOiBiYWQgdmFsdWUgZm9yIC1uOiBgJXMnXG4iLCBwcm9nbmFtZSwgb3B0YXJnKTsKKysJ ICAgICAgZXhpdCAoMik7CisrCSAgICB9CisrCSAgYnJlYWs7CisrCWRlZmF1bHQ6CisrCSAgdXNh Z2UgKCk7CisrCSAgZXhpdCAoMik7CisrCX0KKysgICAgfQorKworKyAgaWYgKGZkICE9IDApCisr ICAgIHsKKysgICAgICBpZiAoZnN0YXQgKGZkLCAmc2IpIDwgMCkKKysJeworKwkgIGZwcmludGYg KHN0ZGVyciwgIiVzOiAlZDogYmFkIGZpbGUgZGVzY3JpcHRvclxuIiwgcHJvZ25hbWUsIGZkKTsK KysJICBleGl0ICgxKTsKKysJfQorKyAgICAgIGlmcCA9IGZkb3BlbiAoZmQsICJyIik7CisrICAg ICAgcmxfaW5zdHJlYW0gPSBpZnA7CisrICAgIH0KKysKKysgIGlmIChkZWZ0ZXh0ICYmICpkZWZ0 ZXh0KQorKyAgICBybF9zdGFydHVwX2hvb2sgPSBzZXRfZGVmdGV4dDsKKysKKysgIGlmIChuY2gg PiAwKQorKyAgICBybF9udW1fY2hhcnNfdG9fcmVhZCA9IG5jaDsKKysKKysgIHJsX2V2ZW50X2hv b2sgPSBldmVudF9ob29rOworKyAgdGVtcCA9IHJlYWRsaW5lIChwcm9tcHQpOworKworKyAgLyog VGVzdCBmb3IgRU9GLiAqLworKyAgaWYgKHRlbXAgPT0gMCkKKysgICAgZXhpdCAoMSk7CisrCisr ICBwcmludGYgKCIlc1xuIiwgdGVtcCk7CisrICBleGl0ICgwKTsKKyt9CistLS0gYS9yZWFkbGlu ZS9leGFtcGxlcy9ybGZlL0NoYW5nZUxvZworKysrIGIvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9D aGFuZ2VMb2cKK0BAIC0xLDE0ICsxLDMgQEAKKy0yMDA5LTA4LTIyICBSYWxmIFdpbGRlbmh1ZXMg IDxSYWxmLldpbGRlbmh1ZXNAZ214LmRlPgorLQorLQkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4K Ky0KKy0JKiBjb25maWd1cmUuaW46IG00X2luY2x1ZGUgdG9wbGV2ZWwgY29uZmlnL292ZXJyaWRl Lm00LgorLQkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKy0KKy0yMDA5LTA3LTMwICBSYWxmIFdp bGRlbmh1ZXMgIDxSYWxmLldpbGRlbmh1ZXNAZ214LmRlPgorLQorLQkqIGNvbmZpZ3VyZS5pbjog Q29ycmVjdGx5IHF1b3RlIEFDX1BST0dSQU1fU09VUkNFIGRlZmluaXRpb24uCistCisgMjAwNC0x MS0wNCAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CisgCisgCSogcHR5LmM6ICBJbXBv cnQgZnJvbSBzY3JlZW4tNC4wLjIuCistLS0gYS9yZWFkbGluZS9leGFtcGxlcy9ybGZlL01ha2Vm aWxlLmluCisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9ybGZlL01ha2VmaWxlLmluCitAQCAtMjUs NyArMjUsNyBAQCBDRkxBR1MgPSBAQ0ZMQUdTQAorIENQUEZMQUdTID0gQENQUEZMQUdTQAorICNM REZMQUdTID0gLUwkKFJFQURMSU5FX0RJUikKKyBMREZMQUdTID0gQExERkxBR1NACistTElCUyA9 IC1scmVhZGxpbmUgLWxoaXN0b3J5IC1sbmN1cnNlcworK0xJQlMgPSAtbHJlYWRsaW5lIC1saGlz dG9yeSBATElCU0AKKyAKKyBDUFA9QENQUEAKKyBDUFBfREVQRU5EPSQoQ0MpIC1NTQorQEAgLTU1 LDcgKzU1LDcgQEAgcmxmZS0kKFZFUlNJT04pLnRhci5nejoKKyAJdGFyIGN6ZiAkQCAkKENGSUxF UykgJChIRklMRVMpICQoRVhUUkFfRElTVCkKKyAKKyAuYy5vOgorLQkkKENDKSAtYyAtSS4gLUkk KHNyY2RpcikgJChNX0NGTEFHUykgJChERUZTKSAkKE9QVElPTlMpICQoQ0ZMQUdTKSAkPAorKwkk KENDKSAtYyAtSS4gLUkkKHNyY2RpcikgJChDUFBGTEFHUykgJChNX0NGTEFHUykgJChERUZTKSAk KE9QVElPTlMpICQoQ0ZMQUdTKSAkPAorIAorIGluc3RhbGxfYmluOiAudmVyc2lvbiBzY3JlZW4K KyAJLWlmIFsgLWYgJChERVNURElSKSQoYmluZGlyKS8kKFNDUkVFTikgXSAmJiBbICEgLWYgJChE RVNURElSKSQoYmluZGlyKS8kKFNDUkVFTikub2xkIF07IFwKK0BAIC02OCw3ICs2OCw2IEBAIGlu c3RhbGxfYmluOiAudmVyc2lvbiBzY3JlZW4KKyAJKGNkICQoREVTVERJUikkKGJpbmRpcikgJiYg bG4gLXNmICQoU0NSRUVOKSBzY3JlZW4pCisgCWNwICQoc3JjZGlyKS91dGY4ZW5jb2RpbmdzLz8/ ICQoREVTVERJUikkKFNDUkVFTkVOQ09ESU5HUykKKyAKKy0KKyB1bmluc3RhbGw6IC52ZXJzaW9u CisgCXJtIC1mICQoREVTVERJUikkKGJpbmRpcikvJChTQ1JFRU4pCisgCXJtIC1mICQoREVTVERJ UikkKGJpbmRpcikvc2NyZWVuCitAQCAtMTcwLDYgKzE2OSwxNSBAQCBkZXBlbmQuaW46ICQoQ0ZJ TEVTKSB0ZXJtLmgKKyAJZm9yIGkgaW4gJChDRklMRVMpOyBkbyBlY2hvICQkaTsgJChDUFBfREVQ RU5EKSAkJGkgPj4gdG1wX21ha2U7IGRvbmUgCisgCW12IHRtcF9tYWtlIE1ha2VmaWxlLmluCisg CisrTWFrZWZpbGUgbWFrZWZpbGU6CWNvbmZpZy5zdGF0dXMgJChzcmNkaXIpL01ha2VmaWxlLmlu CisrCUNPTkZJR19GSUxFUz1NYWtlZmlsZSBDT05GSUdfSEVBREVSUz0gJChTSEVMTCkgLi9jb25m aWcuc3RhdHVzCisrCisrY29uZmlnLnN0YXR1czoJJChzcmNkaXIpL2NvbmZpZ3VyZQorKwkkKFNI RUxMKSAuL2NvbmZpZy5zdGF0dXMgLS1yZWNoZWNrCisrCisrJChzcmNkaXIpL2NvbmZpZ3VyZToJ JChzcmNkaXIpL2NvbmZpZ3VyZS5pbgorKwljZCAkKHNyY2RpcikgJiYgYXV0b2NvbmYKKysKKyAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgCisgIyMjIERlcGVuZGVuY2llczoKKy0tLSBhL3JlYWRs aW5lL2V4YW1wbGVzL3JsZmUvY29uZmlnLmguaW4KKysrKyBiL3JlYWRsaW5lL2V4YW1wbGVzL3Js ZmUvY29uZmlnLmguaW4KK0BAIC0zNzMsMyArMzczLDcgQEAKKyAjdW5kZWYgUFRZUkFOR0UxCisg CisgI2RlZmluZSBVU0VWQVJBUkdTCisrCisrI3VuZGVmIEhBVkVfU1lTX1NUUk9QVFNfSAorKwor KyN1bmRlZiBIQVZFX1NZU19XQUlUX0gKKy0tLSBhL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvY29u ZmlndXJlCisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9ybGZlL2NvbmZpZ3VyZQorQEAgLTU1Miw2 ICs1NTIsNDIgQEAgUEFDS0FHRV9CVUdSRVBPUlQ9CisgUEFDS0FHRV9VUkw9CisgCisgYWNfdW5p cXVlX2ZpbGU9InJsZmUuYyIKKysjIEZhY3RvcmluZyBkZWZhdWx0IGhlYWRlcnMgZm9yIG1vc3Qg dGVzdHMuCisrYWNfaW5jbHVkZXNfZGVmYXVsdD0iXAorKyNpbmNsdWRlIDxzdGRpby5oPgorKyNp ZmRlZiBIQVZFX1NZU19UWVBFU19ICisrIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjZW5kaWYK KysjaWZkZWYgSEFWRV9TWVNfU1RBVF9ICisrIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgorKyNlbmRp ZgorKyNpZmRlZiBTVERDX0hFQURFUlMKKysjIGluY2x1ZGUgPHN0ZGxpYi5oPgorKyMgaW5jbHVk ZSA8c3RkZGVmLmg+CisrI2Vsc2UKKysjIGlmZGVmIEhBVkVfU1RETElCX0gKKysjICBpbmNsdWRl IDxzdGRsaWIuaD4KKysjIGVuZGlmCisrI2VuZGlmCisrI2lmZGVmIEhBVkVfU1RSSU5HX0gKKysj IGlmICFkZWZpbmVkIFNURENfSEVBREVSUyAmJiBkZWZpbmVkIEhBVkVfTUVNT1JZX0gKKysjICBp bmNsdWRlIDxtZW1vcnkuaD4KKysjIGVuZGlmCisrIyBpbmNsdWRlIDxzdHJpbmcuaD4KKysjZW5k aWYKKysjaWZkZWYgSEFWRV9TVFJJTkdTX0gKKysjIGluY2x1ZGUgPHN0cmluZ3MuaD4KKysjZW5k aWYKKysjaWZkZWYgSEFWRV9JTlRUWVBFU19ICisrIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgorKyNl bmRpZgorKyNpZmRlZiBIQVZFX1NURElOVF9ICisrIyBpbmNsdWRlIDxzdGRpbnQuaD4KKysjZW5k aWYKKysjaWZkZWYgSEFWRV9VTklTVERfSAorKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisrI2VuZGlm IgorKworIGFjX3N1YnN0X3ZhcnM9J0xUTElCT0JKUworIExJQk9CSlMKKyBYVEVSTVBBVEgKK0BA IC0xNTUwLDYgKzE1ODYsMTI0IEBAICRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKyAgIGV2YWwg JGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xp bmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgCisgfSAjIGFjX2ZuX2NfY2hlY2tfZnVuYworKwor KyMgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCBMSU5FTk8gSEVBREVSIFZBUiBJTkNMVURF UworKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorKyMgVGVzdHMgd2hldGhlciBIRUFERVIgZXhpc3RzLCBnaXZpbmcgYSB3YXJuaW5nIGlm IGl0IGNhbm5vdCBiZSBjb21waWxlZCB1c2luZworKyMgdGhlIGluY2x1ZGUgZmlsZXMgaW4gSU5D TFVERVMgYW5kIHNldHRpbmcgdGhlIGNhY2hlIHZhcmlhYmxlIFZBUgorKyMgYWNjb3JkaW5nbHku CisrYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAoKQorK3sKKysgIGFzX2xpbmVubz0ke2Fz X2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9f c3RhY2sKKysgIGlmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIg PSBzZXQiOyB9OyB0aGVuIDoKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIu Li4gIiA+JjY7IH0KKytpZiB7IGFzX3Zhcj0kMzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0 fVwiID0gc2V0IjsgfTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Zp CisrZXZhbCBhY19yZXM9XCQkMworKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorKyRhc19lY2hvICIkYWNfcmVzIiA+ JjY7IH0KKytlbHNlCisrICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8KKyt7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nICQyIHVzYWJpbGl0eSIgPiY1 CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgJDIgdXNhYmlsaXR5Li4uICIgPiY2OyB9CisrY2F0IGNv bmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5o LiAgKi8KKyskNAorKyNpbmNsdWRlIDwkMj4KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21w aWxlICIkTElORU5PIjsgdGhlbiA6CisrICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCisrZWxzZQor KyAgYWNfaGVhZGVyX2NvbXBpbGVyPW5vCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBj b25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyt7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2hlYWRlcl9jb21waWxlciIgPiY1Cisr JGFzX2VjaG8gIiRhY19oZWFkZXJfY29tcGlsZXIiID4mNjsgfQorKworKyMgSXMgdGhlIGhlYWRl ciBwcmVzZW50PworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgJDIgcHJlc2VuY2UiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nICQyIHByZXNlbmNl Li4uICIgPiY2OyB9CisrY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4 dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysjaW5jbHVkZSA8JDI+CisrX0FDRU9GCisraWYg YWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CisrICBhY19oZWFkZXJfcHJlcHJvYz15 ZXMKKytlbHNlCisrICBhY19oZWFkZXJfcHJlcHJvYz1ubworK2ZpCisrcm0gLWYgY29uZnRlc3Qu ZXJyIGNvbmZ0ZXN0LiRhY19leHQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUKKyskYXNfZWNobyAiJGFjX2hl YWRlcl9wcmVwcm9jIiA+JjY7IH0KKysKKysjIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8K KytjYXNlICRhY19oZWFkZXJfY29tcGlsZXI6JGFjX2hlYWRlcl9wcmVwcm9jOiRhY19jX3ByZXBy b2Nfd2Fybl9mbGFnIGluICMoKAorKyAgeWVzOm5vOiApCisrICAgIHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBjb21w aWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mNQorKyRhc19lY2hvICIkYXNf bWU6IFdBUk5JTkc6ICQyOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRo ZSBwcmVwcm9jZXNzb3IhIiA+JjI7fQorKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiBwcm9jZWVkaW5nIHdpdGggdGhlIGNvbXBpbGVyJ3Mg cmVzdWx0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3 aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiYyO30KKysgICAgOzsKKysgIG5vOnllczoqICkK KysgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAk MjogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKKyskYXNfZWNobyAiJGFzX21l OiBXQVJOSU5HOiAkMjogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjI7fQorKyAg ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiAg ICAgY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjUKKyskYXNfZWNo byAiJGFzX21lOiBXQVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0 ZSBoZWFkZXJzPyIgPiYyO30KKysgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBXQVJOSU5HOiAkMjogc2VlIHRoZSBBdXRvY29uZiBkb2N1bWVudGF0aW9uIiA+JjUK KyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogc2VlIHRoZSBBdXRvY29uZiBkb2N1bWVu dGF0aW9uIiA+JjI7fQorKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IFdBUk5JTkc6ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21w aWxlZFwiIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogICAgIHNlY3Rpb24g XCJQcmVzZW50IEJ1dCBDYW5ub3QgQmUgQ29tcGlsZWRcIiIgPiYyO30KKysgICAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3 aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklO RzogJDI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mMjt9CisrICAg IDs7CisrZXNhYworKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyBmb3IgJDIiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4m NjsgfQorK2lmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBz ZXQiOyB9OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAg ZXZhbCAiJDM9XCRhY19oZWFkZXJfY29tcGlsZXIiCisrZmkKKytldmFsIGFjX3Jlcz1cJCQzCisr CSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JGFjX3JlcyIgPiY1CisrJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQorK2ZpCisrICBldmFsICRh c19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5l bm89OyB1bnNldCBhc19saW5lbm87fQorKworK30gIyBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25n cmVsCisrCisrIyBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlIExJTkVOTyBIRUFERVIgVkFS IElOQ0xVREVTCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisrIyBUZXN0cyB3aGV0aGVyIEhFQURFUiBleGlzdHMgYW5kIGNhbiBiZSBj b21waWxlZCB1c2luZyB0aGUgaW5jbHVkZSBmaWxlcyBpbgorKyMgSU5DTFVERVMsIHNldHRpbmcg dGhlIGNhY2hlIHZhcmlhYmxlIFZBUiBhY2NvcmRpbmdseS4KKythY19mbl9jX2NoZWNrX2hlYWRl cl9jb21waWxlICgpCisreworKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVu b19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworKyAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQorKyRhc19l Y2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQorK2lmIHsgYXNfdmFyPSQzOyBldmFs ICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKKysgICRhc19lY2hv X24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+ Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyskNAorKyNpbmNsdWRl IDwkMj4KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6 CisrICBldmFsICIkMz15ZXMiCisrZWxzZQorKyAgZXZhbCAiJDM9bm8iCisrZmkKKytybSAtZiBj b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKytm aQorK2V2YWwgYWNfcmVzPVwkJDMKKysJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyskYXNfZWNobyAiJGFjX3JlcyIg PiY2OyB9CisrICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNr IiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorKworK30gIyBhY19mbl9j X2NoZWNrX2hlYWRlcl9jb21waWxlCisgY2F0ID5jb25maWcubG9nIDw8X0FDRU9GCisgVGhpcyBm aWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUKKyBy dW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBt aXN0YWtlLgorQEAgLTQwMDMsNiArNDE1NywxNTEgQEAgZmkKKyAKKyBmaQorIAorK3sgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFk ZXIgZmlsZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZp bGVzLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3RkYytzZXR9IiA9IHNl dDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBj b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMu aC4gICovCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdGRhcmcuaD4KKysjaW5j bHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPGZsb2F0Lmg+CisrCisraW50CisrbWFpbiAoKQor K3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9j b21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBhY19jdl9oZWFkZXJfc3RkYz15ZXMKKytlbHNl CisrICBhY19jdl9oZWFkZXJfc3RkYz1ubworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIg Y29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisrCisraWYgdGVzdCAkYWNfY3Zf aGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KKysgICMgU3VuT1MgNC54IHN0cmluZy5oIGRvZXMgbm90 IGRlY2xhcmUgbWVtKiwgY29udHJhcnkgdG8gQU5TSS4KKysgIGNhdCBjb25mZGVmcy5oIC0gPDxf QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrI2luY2x1 ZGUgPHN0cmluZy5oPgorKworK19BQ0VPRgorK2lmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRh Y19leHQiKSAyPiY1IHwKKysgICRFR1JFUCAibWVtY2hyIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4g OgorKworK2Vsc2UKKysgIGFjX2N2X2hlYWRlcl9zdGRjPW5vCisrZmkKKytybSAtZiBjb25mdGVz dCoKKysKKytmaQorKworK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisr ICAjIElTQyAyLjAuMiBzdGRsaWIuaCBkb2VzIG5vdCBkZWNsYXJlIGZyZWUsIGNvbnRyYXJ5IHRv IEFOU0kuCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Cisr LyogZW5kIGNvbmZkZWZzLmguICAqLworKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysKKytfQUNFT0YK KytpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CisrICAkRUdSRVAg ImZyZWUiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrCisrZWxzZQorKyAgYWNfY3ZfaGVhZGVy X3N0ZGM9bm8KKytmaQorK3JtIC1mIGNvbmZ0ZXN0KgorKworK2ZpCisrCisraWYgdGVzdCAkYWNf Y3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KKysgICMgL2Jpbi9jYyBpbiBJcml4LTQuMC41IGdl dHMgbm9uLUFOU0kgY3R5cGUgbWFjcm9zIHVubGVzcyB1c2luZyAtYW5zaS4KKysgIGlmIHRlc3Qg IiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKysgIDoKKytlbHNlCisrICBjYXQgY29u ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmgu ICAqLworKyNpbmNsdWRlIDxjdHlwZS5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaWYgKCgn ICcgJiAweDBGRikgPT0gMHgwMjApCisrIyBkZWZpbmUgSVNMT1dFUihjKSAoJ2EnIDw9IChjKSAm JiAoYykgPD0gJ3onKQorKyMgZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAnQScgKyAo KGMpIC0gJ2EnKSA6IChjKSkKKysjZWxzZQorKyMgZGVmaW5lIElTTE9XRVIoYykgXAorKwkJICAg KCgnYScgPD0gKGMpICYmIChjKSA8PSAnaScpIFwKKysJCSAgICAgfHwgKCdqJyA8PSAoYykgJiYg KGMpIDw9ICdyJykgXAorKwkJICAgICB8fCAoJ3MnIDw9IChjKSAmJiAoYykgPD0gJ3onKSkKKysj IGRlZmluZSBUT1VQUEVSKGMpIChJU0xPV0VSKGMpID8gKChjKSB8IDB4NDApIDogKGMpKQorKyNl bmRpZgorKworKyNkZWZpbmUgWE9SKGUsIGYpICgoKGUpICYmICEoZikpIHx8ICghKGUpICYmIChm KSkpCisraW50CisrbWFpbiAoKQorK3sKKysgIGludCBpOworKyAgZm9yIChpID0gMDsgaSA8IDI1 NjsgaSsrKQorKyAgICBpZiAoWE9SIChpc2xvd2VyIChpKSwgSVNMT1dFUiAoaSkpCisrCXx8IHRv dXBwZXIgKGkpICE9IFRPVVBQRVIgKGkpKQorKyAgICAgIHJldHVybiAyOworKyAgcmV0dXJuIDA7 CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorKwor K2Vsc2UKKysgIGFjX2N2X2hlYWRlcl9zdGRjPW5vCisrZmkKKytybSAtZiBjb3JlICouY29yZSBj b3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisrICBj b25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorK2ZpCisr CisrZmkKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz dWx0OiAkYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNQorKyRhc19lY2hvICIkYWNfY3ZfaGVhZGVyX3N0 ZGMiID4mNjsgfQorK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisrCisr JGFzX2VjaG8gIiNkZWZpbmUgU1REQ19IRUFERVJTIDEiID4+Y29uZmRlZnMuaAorKworK2ZpCisr CisrIyBPbiBJUklYIDUuMywgc3lzL3R5cGVzIGFuZCBpbnR0eXBlcy5oIGFyZSBjb25mbGljdGlu Zy4KKytmb3IgYWNfaGVhZGVyIGluIHN5cy90eXBlcy5oIHN5cy9zdGF0Lmggc3RkbGliLmggc3Ry aW5nLmggbWVtb3J5Lmggc3RyaW5ncy5oIFwKKysJCSAgaW50dHlwZXMuaCBzdGRpbnQuaCB1bmlz dGQuaAorK2RvIDoKKysgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hlYWRlcl8kYWNf aGVhZGVyIiB8ICRhc190cl9zaGAKKythY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElO RU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIkYWNfaW5jbHVkZXNfZGVmYXVsdAor KyIKKytldmFsIGFzX3ZhbD1cJCRhc19hY19IZWFkZXIKKysgICBpZiB0ZXN0ICJ4JGFzX3ZhbCIg PSB4IiJ5ZXM7IHRoZW4gOgorKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUg YCRhc19lY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorK19BQ0VPRgorKwor K2ZpCisrCisrZG9uZQorKworKworK2ZvciBhY19oZWFkZXIgaW4gc3lzL3N0cm9wdHMuaCBzeXMv d2FpdC5oCisrZG8gOgorKyAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRh Y19oZWFkZXIiIHwgJGFzX3RyX3NoYAorK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRM SU5FTk8iICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19kZWZhdWx0 IgorK2V2YWwgYXNfdmFsPVwkJGFzX2FjX0hlYWRlcgorKyAgIGlmIHRlc3QgIngkYXNfdmFsIiA9 IHgiInllczsgdGhlbiA6CisrICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisrI2RlZmluZSBg JGFzX2VjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCisrX0FDRU9GCisrCisr ZmkKKysKKytkb25lCisrCisrCisgYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1h a2VmaWxlIgorIAorIGNhdCA+Y29uZmNhY2hlIDw8XF9BQ0VPRgorLS0tIGEvcmVhZGxpbmUvZXhh bXBsZXMvcmxmZS9jb25maWd1cmUuaW4KKysrKyBiL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvY29u ZmlndXJlLmluCitAQCAtNDM3LDQgKzQzNyw2IEBAIG1haW4oKQorIAorIGZpCisgCisrQUNfQ0hF Q0tfSEVBREVSUyhzeXMvc3Ryb3B0cy5oIHN5cy93YWl0LmgpCisrCisgQUNfT1VUUFVUKE1ha2Vm aWxlKQorLS0tIGEvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9leHRlcm4uaAorKysrIGIvcmVhZGxp bmUvZXhhbXBsZXMvcmxmZS9leHRlcm4uaAorQEAgLTI3LDcgKzI3LDE0IEBACisgI2RlZmluZSBf X2F0dHJpYnV0ZV9fKHgpCisgI2VuZGlmCisgCisrI2lmICFkZWZpbmVkIChfX1ApCisrIyAgaWYg ZGVmaW5lZCAoX19TVERDX18pIHx8IGRlZmluZWQgKF9fR05VQ19fKSB8fCBkZWZpbmVkIChfX2Nw bHVzcGx1cykKKysjICAgIGRlZmluZSBfX1AocHJvdG9zKSBwcm90b3MKKysjICBlbHNlCisrIyAg ICBkZWZpbmUgX19QKHByb3RvcykgKCkKKysjICBlbmRpZgorKyNlbmRpZgorKworIC8qIHB0eS5j ICovCisgZXh0ZXJuIGludCAgIE9wZW5QVFkgX19QKChjaGFyICoqKSk7CisgZXh0ZXJuIHZvaWQg IEluaXRQVFkgX19QKChpbnQpKTsKKy0KKy0tLSBhL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvb3Mu aAorKysrIGIvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9vcy5oCitAQCAtMTg2LDcgKzE4Niw3IEBA IGV4dGVybiBpbnQgZXJybm87CisgICogICAgdGVybWluYWwgaGFuZGxpbmcKKyAgKi8KKyAKKy0j aWZkZWYgUE9TSVgKKysjaWYgZGVmaW5lZCAoUE9TSVgpIHx8IGRlZmluZWQgKF9fRnJlZUJTRF9f KQorICMgaW5jbHVkZSA8dGVybWlvcy5oPgorICMgaWZkZWYgaHB1eAorICMgIGluY2x1ZGUgPGJz ZHR0eS5oPgorQEAgLTUyNyw0ICs1MjcsMyBAQCB0eXBlZGVmIHN0cnVjdCBmZF9zZXQgeyBpbnQg ZmRzX2JpdHNbMV07IH0gZmRfc2V0OworICAqIGhvdyBtYW55IGNoYXJhY3RlcnMgeW91ciBwdHkn cyBjYW4gYnVmZmVyLgorICAqLworICNkZWZpbmUgSU9TSVpFCQk0MDk2CistCistLS0gYS9yZWFk bGluZS9leGFtcGxlcy9ybGZlL3B0eS5jCisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9ybGZlL3B0 eS5jCitAQCAtMjAsMTMgKzIwLDE1IEBACisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworKyNpbmNsdWRl ICJjb25maWcuaCIKKyAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy9z dGF0Lmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHNpZ25hbC5oPgorIAorLSNp bmNsdWRlICJjb25maWcuaCIKKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrCisgI2luY2x1ZGUgInNj cmVlbi5oIgorIAorICNpZm5kZWYgc3VuCitAQCAtMzQsNyArMzYsNyBAQAorICNlbmRpZgorIAor IC8qIGZvciBzb2xhcmlzIDIuMSwgVW5peHdhcmUgKFNWUjQuMikgYW5kIHBvc3NpYmx5IG90aGVy cyAqLworLSNpZmRlZiBIQVZFX1NWUjRfUFRZUworKyNpZiBkZWZpbmVkIChIQVZFX1NWUjRfUFRZ UykgJiYgZGVmaW5lZCAoSEFWRV9TWVNfU1RST1BUU19IKQorICMgaW5jbHVkZSA8c3lzL3N0cm9w dHMuaD4KKyAjZW5kaWYKKyAKK0BAIC0zODQsNCArMzg2LDMgQEAgY2hhciAqKnR0eW47CisgICBy ZXR1cm4gLTE7CisgfQorICNlbmRpZgorLQorLS0tIGEvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9y bGZlLmMKKysrKyBiL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvcmxmZS5jCitAQCAtNzMsNiArNzMs MTEgQEAKKyAjaW5jbHVkZSA8dGVybWlvcy5oPgorIAorICNpbmNsdWRlICJjb25maWcuaCIKKysj aW5jbHVkZSAiZXh0ZXJuLmgiCisrCisrI2lmIGRlZmluZWQgKEhBVkVfU1lTX1dBSVRfSCkKKysj ICBpbmNsdWRlIDxzeXMvd2FpdC5oPgorKyNlbmRpZgorIAorICNpZmRlZiBSRUFETElORV9MSUJS QVJZCisgIyAgaW5jbHVkZSAicmVhZGxpbmUuaCIKK0BAIC01ODgsNyArNTkzLDcgQEAgbWFpbihp bnQgYXJnYywgY2hhcioqIGFyZ3YpCisgCX0KKyAgICAgICBpZiAoRkRfSVNTRVQgKGluX2Zyb21f dHR5X2ZkLCAmaW5fc2V0KSkKKyAJeworLQkgIGV4dGVybiBpbnQgcmVhZGxpbmVfZWNob2luZ19w OworKwkgIGV4dGVybiBpbnQgX3JsX2VjaG9pbmdfcDsKKyAJICBzdHJ1Y3QgdGVybWlvcyB0ZXJt X21hc3RlcjsKKyAJICBpbnQgZG9fY2Fub24gPSAxOworIAkgIGludCBkb19pY3JubCA9IDE7CitA QCAtNjA1LDkgKzYxMCw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQorIAkgICAgewor IAkgICAgICBkb19jYW5vbiA9ICh0ZXJtX21hc3Rlci5jX2xmbGFnICYgSUNBTk9OKSAhPSAwOwor IAkgICAgICBkb19pY3JubCA9ICh0ZXJtX21hc3Rlci5jX2xmbGFnICYgSUNSTkwpICE9IDA7Cist CSAgICAgIHJlYWRsaW5lX2VjaG9pbmdfcCA9ICh0ZXJtX21hc3Rlci5jX2xmbGFnICYgRUNITykg IT0gMDsKKysJICAgICAgX3JsX2VjaG9pbmdfcCA9ICh0ZXJtX21hc3Rlci5jX2xmbGFnICYgRUNI TykgIT0gMDsKKyAJICAgICAgRFBSSU5UMSAoImVjaG8sY2Fub24sY3JubDolMDNkXG4iLAorLQkJ ICAgICAgIDEwMCAqIHJlYWRsaW5lX2VjaG9pbmdfcAorKwkJICAgICAgIDEwMCAqIF9ybF9lY2hv aW5nX3AKKyAJCSAgICAgICArIDEwICogZG9fY2Fub24KKyAJCSAgICAgICArIDEgKiBkb19pY3Ju bCk7CisgCSAgICB9CitAQCAtNzU3LDcgKzc2Miw3IEBAIHN0YXRpYyB2b2lkIHNldF9lZGl0X21v ZGUgKCkKKyAJICB2aSA9IDE7CisgCSAgYnJlYWs7CisgCX0KKy0gICAgICBzaGVsbG9wdHMgPSBp bmRleCAoc2hlbGxvcHRzICsgMSwgJzonKTsKKysgICAgICBzaGVsbG9wdHMgPSBzdHJjaHIgKHNo ZWxsb3B0cyArIDEsICc6Jyk7CisgICAgIH0KKyAKKyAgIGlmICghdmkpCistLS0gYS9yZWFkbGlu ZS9leGFtcGxlcy9ybHRlc3QuYworKysrIGIvcmVhZGxpbmUvZXhhbXBsZXMvcmx0ZXN0LmMKK0BA IC00LDI1ICs0LDI0IEBACisgLyoJCQkJCQkJCSAgICAqLworIC8qICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKyAKKy0v KiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KysvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKyAKKy0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnks IGEgbGlicmFyeSBmb3IKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5l IExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5IGZvcgorICAgIHJlYWRpbmcgbGluZXMgb2Yg dGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisgCistICAg VGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMg ZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2Vu ZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3Ug ZG8gbm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJv c3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFk bGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLwor IAorICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19IKQorICNpbmNsdWRlIDxjb25maWcuaD4KKy0t LSBhL3JlYWRsaW5lL2V4YW1wbGVzL3JsdmVyc2lvbi5jCisrKysgYi9yZWFkbGluZS9leGFtcGxl cy9ybHZlcnNpb24uYworQEAgLTIsMjUgKzIsMjQgQEAKKyAgKiBybHZlcnNpb24gLS0gcHJpbnQg b3V0IHJlYWRsaW5lJ3MgdmVyc2lvbiBudW1iZXIKKyAgKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMp IDE5ODctMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmlnaHQg KEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IK KysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRs aW5lKSwgYSBsaWJyYXJ5IGZvcgorICAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVy YWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisgCistICAgVGhlIEdOVSBSZWFkbGlu ZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0CistICAg YW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTog eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAor LSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIFJlYWRsaW5l IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4g c2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4g YSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90CistICAgaGF2 ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEg VVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworIAorICNpZiBkZWZpbmVk IChIQVZFX0NPTkZJR19IKQorICMgIGluY2x1ZGUgPGNvbmZpZy5oPgorLS0tIGEvcmVhZGxpbmUv ZnVubWFwLmMKKysrKyBiL3JlYWRsaW5lL2Z1bm1hcC5jCitAQCAtMSwyNCArMSwyNCBAQAorIC8q IGZ1bm1hcC5jIC0tIGF0dGFjaCBuYW1lcyB0byBmdW5jdGlvbnMuICovCisgCistLyogQ29weXJp Z2h0IChDKSAxOTg3LCAxOTg5LCAxOTkyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor Ky8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwg YSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZl IGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFk aW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0 aW5nLiAgICAgIAorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv cgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExp YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNl ZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdh cmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBv ciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNl LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQ bGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrKi8KKysKKyAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKKyAKKyAjaWYg ZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKK0BAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBpbnQgZnVu bWFwX2VudHJ5OworICAgIHByb2dyYW0gc3BlY2lmaWMgZnVuY3Rpb24uICovCisgaW50IGZ1bm1h cF9wcm9ncmFtX3NwZWNpZmljX2VudHJ5X3N0YXJ0OworIAorLXN0YXRpYyBGVU5NQVAgZGVmYXVs dF9mdW5tYXBbXSA9IHsKKytzdGF0aWMgY29uc3QgRlVOTUFQIGRlZmF1bHRfZnVubWFwW10gPSB7 CisgICB7ICJhYm9ydCIsIHJsX2Fib3J0IH0sCisgICB7ICJhY2NlcHQtbGluZSIsIHJsX25ld2xp bmUgfSwKKyAgIHsgImFycm93LWtleS1wcmVmaXgiLCBybF9hcnJvd19rZXlzIH0sCitAQCAtMTA1 LDExICsxMDUsMTMgQEAgc3RhdGljIEZVTk1BUCBkZWZhdWx0X2Z1bm1hcFtdID0geworICAgeyAi a2lsbC1yZWdpb24iLCBybF9raWxsX3JlZ2lvbiB9LAorICAgeyAia2lsbC13b3JkIiwgcmxfa2ls bF93b3JkIH0sCisgICB7ICJtZW51LWNvbXBsZXRlIiwgcmxfbWVudV9jb21wbGV0ZSB9LAorKyAg eyAibWVudS1jb21wbGV0ZS1iYWNrd2FyZCIsIHJsX2JhY2t3YXJkX21lbnVfY29tcGxldGUgfSwK KyAgIHsgIm5leHQtaGlzdG9yeSIsIHJsX2dldF9uZXh0X2hpc3RvcnkgfSwKKyAgIHsgIm5vbi1p bmNyZW1lbnRhbC1mb3J3YXJkLXNlYXJjaC1oaXN0b3J5Iiwgcmxfbm9uaW5jX2ZvcndhcmRfc2Vh cmNoIH0sCisgICB7ICJub24taW5jcmVtZW50YWwtcmV2ZXJzZS1zZWFyY2gtaGlzdG9yeSIsIHJs X25vbmluY19yZXZlcnNlX3NlYXJjaCB9LAorICAgeyAibm9uLWluY3JlbWVudGFsLWZvcndhcmQt c2VhcmNoLWhpc3RvcnktYWdhaW4iLCBybF9ub25pbmNfZm9yd2FyZF9zZWFyY2hfYWdhaW4gfSwK KyAgIHsgIm5vbi1pbmNyZW1lbnRhbC1yZXZlcnNlLXNlYXJjaC1oaXN0b3J5LWFnYWluIiwgcmxf bm9uaW5jX3JldmVyc2Vfc2VhcmNoX2FnYWluIH0sCisrICB7ICJvbGQtbWVudS1jb21wbGV0ZSIs IHJsX29sZF9tZW51X2NvbXBsZXRlIH0sCisgICB7ICJvdmVyd3JpdGUtbW9kZSIsIHJsX292ZXJ3 cml0ZV9tb2RlIH0sCisgI2lmZGVmIF9fQ1lHV0lOX18KKyAgIHsgInBhc3RlLWZyb20tY2xpcGJv YXJkIiwgcmxfcGFzdGVfZnJvbV9jbGlwYm9hcmQgfSwKK0BAIC0xMjMsNiArMTI1LDcgQEAgc3Rh dGljIEZVTk1BUCBkZWZhdWx0X2Z1bm1hcFtdID0geworICAgeyAicmV2ZXJ0LWxpbmUiLCBybF9y ZXZlcnRfbGluZSB9LAorICAgeyAic2VsZi1pbnNlcnQiLCBybF9pbnNlcnQgfSwKKyAgIHsgInNl dC1tYXJrIiwgcmxfc2V0X21hcmsgfSwKKysgIHsgInNraXAtY3NpLXNlcXVlbmNlIiwgcmxfc2tp cF9jc2lfc2VxdWVuY2UgfSwKKyAgIHsgInN0YXJ0LWtiZC1tYWNybyIsIHJsX3N0YXJ0X2tiZF9t YWNybyB9LAorICAgeyAidGFiLWluc2VydCIsIHJsX3RhYl9pbnNlcnQgfSwKKyAgIHsgInRpbGRl LWV4cGFuZCIsIHJsX3RpbGRlX2V4cGFuZCB9LAorQEAgLTE0NSw2ICsxNDgsOCBAQCBzdGF0aWMg RlVOTUFQIGRlZmF1bHRfZnVubWFwW10gPSB7CisgICB7ICJ2aS1hcHBlbmQtbW9kZSIsIHJsX3Zp X2FwcGVuZF9tb2RlIH0sCisgICB7ICJ2aS1hcmctZGlnaXQiLCBybF92aV9hcmdfZGlnaXQgfSwK KyAgIHsgInZpLWJhY2stdG8taW5kZW50IiwgcmxfdmlfYmFja190b19pbmRlbnQgfSwKKysgIHsg InZpLWJhY2t3YXJkLWJpZ3dvcmQiLCBybF92aV9iV29yZCB9LAorKyAgeyAidmktYmFja3dhcmQt d29yZCIsIHJsX3ZpX2J3b3JkIH0sCisgICB7ICJ2aS1iV29yZCIsIHJsX3ZpX2JXb3JkIH0sCisg ICB7ICJ2aS1id29yZCIsIHJsX3ZpX2J3b3JkIH0sCisgICB7ICJ2aS1jaGFuZ2UtY2FzZSIsIHJs X3ZpX2NoYW5nZV9jYXNlIH0sCitAQCAtMTU3LDEyICsxNjIsMTUgQEAgc3RhdGljIEZVTk1BUCBk ZWZhdWx0X2Z1bm1hcFtdID0geworICAgeyAidmktZGVsZXRlLXRvIiwgcmxfdmlfZGVsZXRlX3Rv IH0sCisgICB7ICJ2aS1lV29yZCIsIHJsX3ZpX2VXb3JkIH0sCisgICB7ICJ2aS1lZGl0aW5nLW1v ZGUiLCBybF92aV9lZGl0aW5nX21vZGUgfSwKKysgIHsgInZpLWVuZC1iaWd3b3JkIiwgcmxfdmlf ZVdvcmQgfSwKKyAgIHsgInZpLWVuZC13b3JkIiwgcmxfdmlfZW5kX3dvcmQgfSwKKyAgIHsgInZp LWVvZi1tYXliZSIsIHJsX3ZpX2VvZl9tYXliZSB9LAorICAgeyAidmktZXdvcmQiLCBybF92aV9l d29yZCB9LAorICAgeyAidmktZldvcmQiLCBybF92aV9mV29yZCB9LAorICAgeyAidmktZmV0Y2gt aGlzdG9yeSIsIHJsX3ZpX2ZldGNoX2hpc3RvcnkgfSwKKyAgIHsgInZpLWZpcnN0LXByaW50Iiwg cmxfdmlfZmlyc3RfcHJpbnQgfSwKKysgIHsgInZpLWZvcndhcmQtYmlnd29yZCIsIHJsX3ZpX2ZX b3JkIH0sCisrICB7ICJ2aS1mb3J3YXJkLXdvcmQiLCBybF92aV9md29yZCB9LAorICAgeyAidmkt ZndvcmQiLCBybF92aV9md29yZCB9LAorICAgeyAidmktZ290by1tYXJrIiwgcmxfdmlfZ290b19t YXJrIH0sCisgICB7ICJ2aS1pbnNlcnQtYmVnIiwgcmxfdmlfaW5zZXJ0X2JlZyB9LAorLS0tIGEv cmVhZGxpbmUvaGlzdGV4cGFuZC5jCisrKysgYi9yZWFkbGluZS9oaXN0ZXhwYW5kLmMKK0BAIC0x LDI0ICsxLDIzIEBACisgLyogaGlzdGV4cGFuZC5jIC0tIGhpc3RvcnkgZXhwYW5zaW9uLiAqLwor IAorLS8qIENvcHlyaWdodCAoQykgMTk4OS0yMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk4OS0yMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgR05VIEhpc3RvcnkgTGlicmFy eSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgorKyAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgR05V IEhpc3RvcnkgTGlicmFyeSAoSGlzdG9yeSksIGEgc2V0IG9mCisgICAgcm91dGluZXMgZm9yIG1h bmFnaW5nIHRoZSB0ZXh0IG9mIHByZXZpb3VzbHkgdHlwZWQgbGluZXMuCisgCistICAgVGhlIExp YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAgIEhpc3RvcnkgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFu eSBsYXRlciB2ZXJzaW9uLgorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKy0gICBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKy0g ICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICAgSGlzdG9yeSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNo aXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEg ZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUg YSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVT QS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggSGlzdG9yeS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworIAorICNkZWZpbmUgUkVBRExJ TkVfTElCUkFSWQorIAorQEAgLTU2LDggKzU1LDYgQEAKKyAKKyB0eXBlZGVmIGludCBfaGlzdF9z ZWFyY2hfZnVuY190IFBBUkFNUygoY29uc3QgY2hhciAqLCBpbnQpKTsKKyAKKy1leHRlcm4gaW50 IHJsX2J5dGVfb3JpZW50ZWQ7CS8qIGRlY2xhcmVkIGluIG1idXRpbC5jICovCistCisgc3RhdGlj IGNoYXIgZXJyb3JfcG9pbnRlcjsKKyAKKyBzdGF0aWMgY2hhciAqc3Vic3RfbGhzOworQEAgLTY2 LDkgKzYzLDExIEBAIHN0YXRpYyBpbnQgc3Vic3RfbGhzX2xlbjsKKyBzdGF0aWMgaW50IHN1YnN0 X3Joc19sZW47CisgCisgc3RhdGljIGNoYXIgKmdldF9oaXN0b3J5X3dvcmRfc3BlY2lmaWVyIFBB UkFNUygoY2hhciAqLCBjaGFyICosIGludCAqKSk7Cistc3RhdGljIGNoYXIgKmhpc3RvcnlfZmlu ZF93b3JkIFBBUkFNUygoY2hhciAqLCBpbnQpKTsKKyBzdGF0aWMgaW50IGhpc3RvcnlfdG9rZW5p emVfd29yZCBQQVJBTVMoKGNvbnN0IGNoYXIgKiwgaW50KSk7Cisrc3RhdGljIGNoYXIgKipoaXN0 b3J5X3Rva2VuaXplX2ludGVybmFsIFBBUkFNUygoY29uc3QgY2hhciAqLCBpbnQsIGludCAqKSk7 Cisgc3RhdGljIGNoYXIgKmhpc3Rvcnlfc3Vic3RyaW5nIFBBUkFNUygoY29uc3QgY2hhciAqLCBp bnQsIGludCkpOworK3N0YXRpYyB2b2lkIGZyZWV3b3JkcyBQQVJBTVMoKGNoYXIgKiosIGludCkp OworK3N0YXRpYyBjaGFyICpoaXN0b3J5X2ZpbmRfd29yZCBQQVJBTVMoKGNoYXIgKiwgaW50KSk7 CisgCisgc3RhdGljIGNoYXIgKnF1b3RlX2JyZWFrcyBQQVJBTVMoKGNoYXIgKikpOworIAorQEAg LTI0Niw3ICsyNDUsNyBAQCBnZXRfaGlzdG9yeV9ldmVudCAoc3RyaW5nLCBjYWxsZXJfaW5kZXgs IGRlbGltaXRpbmdfcXVvdGUpCisgCisgI2RlZmluZSBGQUlMX1NFQVJDSCgpIFwKKyAgIGRvIHsg XAorLSAgICBoaXN0b3J5X29mZnNldCA9IGhpc3RvcnlfbGVuZ3RoOyBmcmVlICh0ZW1wKSA7IHJl dHVybiAoY2hhciAqKU5VTEw7IFwKKysgICAgaGlzdG9yeV9vZmZzZXQgPSBoaXN0b3J5X2xlbmd0 aDsgeGZyZWUgKHRlbXApIDsgcmV0dXJuIChjaGFyICopTlVMTDsgXAorICAgfSB3aGlsZSAoMCkK KyAKKyAgIC8qIElmIHRoZXJlIGlzIG5vIHNlYXJjaCBzdHJpbmcsIHRyeSB0byB1c2UgdGhlIHBy ZXZpb3VzIHNlYXJjaCBzdHJpbmcsCitAQCAtMjU1LDcgKzI1NCw3IEBAIGdldF9oaXN0b3J5X2V2 ZW50IChzdHJpbmcsIGNhbGxlcl9pbmRleCwgZGVsaW1pdGluZ19xdW90ZSkKKyAgICAgeworICAg ICAgIGlmIChzZWFyY2hfc3RyaW5nKQorICAgICAgICAgeworLSAgICAgICAgICBmcmVlICh0ZW1w KTsKKysgICAgICAgICAgeGZyZWUgKHRlbXApOworICAgICAgICAgICB0ZW1wID0gc2F2ZXN0cmlu ZyAoc2VhcmNoX3N0cmluZyk7CisgICAgICAgICB9CisgICAgICAgZWxzZQorQEAgLTI4Niw3ICsy ODUsNyBAQCBnZXRfaGlzdG9yeV9ldmVudCAoc3RyaW5nLCBjYWxsZXJfaW5kZXgsIGRlbGltaXRp bmdfcXVvdGUpCisgCSAgICAgIHNlYXJjaF9tYXRjaCA9IGhpc3RvcnlfZmluZF93b3JkIChlbnRy eS0+bGluZSwgbG9jYWxfaW5kZXgpOworIAkgICAgfQorIAkgIGVsc2UKKy0JICAgIGZyZWUgKHRl bXApOworKwkgICAgeGZyZWUgKHRlbXApOworIAorIAkgIHJldHVybiAoZW50cnktPmxpbmUpOwor IAl9CitAQCAtMzA2LDE2ICszMDUsMjAgQEAgZ2V0X2hpc3RvcnlfZXZlbnQgKHN0cmluZywgY2Fs bGVyX2luZGV4LCBkZWxpbWl0aW5nX3F1b3RlKQorIC8qIEV4dHJhY3QgdGhlIGNvbnRlbnRzIG9m IFNUUklORyBhcyBpZiBpdCBpcyBlbmNsb3NlZCBpbiBzaW5nbGUgcXVvdGVzLgorICAgIFNJTkRF WCwgd2hlbiBwYXNzZWQgaW4sIGlzIHRoZSBvZmZzZXQgb2YgdGhlIGNoYXJhY3RlciBpbW1lZGlh dGVseQorICAgIGZvbGxvd2luZyB0aGUgb3BlbmluZyBzaW5nbGUgcXVvdGU7IG9uIGV4aXQsIFNJ TkRFWCBpcyBsZWZ0IHBvaW50aW5nCistICAgdG8gdGhlIGNsb3Npbmcgc2luZ2xlIHF1b3RlLiAq LworKyAgIHRvIHRoZSBjbG9zaW5nIHNpbmdsZSBxdW90ZS4gIEZMQUdTIGN1cnJlbnRseSB1c2Vk IHRvIGFsbG93IGJhY2tzbGFzaAorKyAgIHRvIGVzY2FwZSBhIHNpbmdsZSBxdW90ZSAoZS5nLiwg Zm9yIGJhc2ggJCcuLi4nKS4gKi8KKyBzdGF0aWMgdm9pZAorLWhpc3Rfc3RyaW5nX2V4dHJhY3Rf c2luZ2xlX3F1b3RlZCAoc3RyaW5nLCBzaW5kZXgpCisraGlzdF9zdHJpbmdfZXh0cmFjdF9zaW5n bGVfcXVvdGVkIChzdHJpbmcsIHNpbmRleCwgZmxhZ3MpCisgICAgICBjaGFyICpzdHJpbmc7Cist ICAgICBpbnQgKnNpbmRleDsKKysgICAgIGludCAqc2luZGV4LCBmbGFnczsKKyB7CisgICByZWdp c3RlciBpbnQgaTsKKyAKKyAgIGZvciAoaSA9ICpzaW5kZXg7IHN0cmluZ1tpXSAmJiBzdHJpbmdb aV0gIT0gJ1wnJzsgaSsrKQorLSAgICA7CisrICAgIHsKKysgICAgICBpZiAoKGZsYWdzICYgMSkg JiYgc3RyaW5nW2ldID09ICdcXCcgJiYgc3RyaW5nW2krMV0pCisrICAgICAgICBpKys7CisrICAg IH0KKyAKKyAgICpzaW5kZXggPSBpOworIH0KK0BAIC01MDUsNyArNTA4LDcgQEAgcG9zdHByb2Nf c3Vic3RfcmhzICgpCisgCX0KKyAgICAgfQorICAgbmV3W2pdID0gJ1wwJzsKKy0gIGZyZWUgKHN1 YnN0X3Jocyk7CisrICB4ZnJlZSAoc3Vic3RfcmhzKTsKKyAgIHN1YnN0X3JocyA9IG5ldzsKKyAg IHN1YnN0X3Joc19sZW4gPSBqOworIH0KK0BAIC01NjQsMTIgKzU2NywxMiBAQCBoaXN0b3J5X2V4 cGFuZF9pbnRlcm5hbCAoc3RyaW5nLCBzdGFydCwgZW5kX2luZGV4X3B0ciwgcmV0X3N0cmluZywg Y3VycmVudF9saW5lKQorICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQorICAgICAgIGlm IChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCisgCXsKKy0JICBpbnQg YywgbDsKKysJICBpbnQgY2gsIGw7CisgCSAgbCA9IF9ybF9maW5kX3ByZXZfbWJjaGFyIChzdHJp bmcsIGksIE1CX0ZJTkRfQU5ZKTsKKy0JICBjID0gc3RyaW5nW2xdOworKwkgIGNoID0gc3RyaW5n W2xdOworIAkgIC8qIFhYWCAtIG9yaWdpbmFsIHBhdGNoIGhhZCBpIC0gMSA/Pz8gIElmIGkgPT0g MCBpdCB3b3VsZCBmYWlsLiAqLworLQkgIGlmIChpICYmIChjID09ICdcJycgfHwgYyA9PSAnIicp KQorLQkgICAgcXVvdGVkX3NlYXJjaF9kZWxpbWl0ZXIgPSBjOworKwkgIGlmIChpICYmIChjaCA9 PSAnXCcnIHx8IGNoID09ICciJykpCisrCSAgICBxdW90ZWRfc2VhcmNoX2RlbGltaXRlciA9IGNo OworIAl9CisgICAgICAgZWxzZQorICNlbmRpZiAvKiBIQU5ETEVfTVVMVElCWVRFICovCSAgCitA QCAtNTgyLDcgKzU4NSw3IEBAIGhpc3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0 LCBlbmRfaW5kZXhfcHRyLCByZXRfc3RyaW5nLCBjdXJyZW50X2xpbmUpCisgICBpZiAoZXZlbnQg PT0gMCkKKyAgICAgeworICAgICAgICpyZXRfc3RyaW5nID0gaGlzdF9lcnJvciAoc3RyaW5nLCBz dGFydCwgaSwgRVZFTlRfTk9UX0ZPVU5EKTsKKy0gICAgICBmcmVlIChyZXN1bHQpOworKyAgICAg IHhmcmVlIChyZXN1bHQpOworICAgICAgIHJldHVybiAoLTEpOworICAgICB9CisgCitAQCAtNTk2 LDcgKzU5OSw3IEBAIGhpc3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCBlbmRf aW5kZXhfcHRyLCByZXRfc3RyaW5nLCBjdXJyZW50X2xpbmUpCisgICBpZiAod29yZF9zcGVjID09 IChjaGFyICopJmVycm9yX3BvaW50ZXIpCisgICAgIHsKKyAgICAgICAqcmV0X3N0cmluZyA9IGhp c3RfZXJyb3IgKHN0cmluZywgc3RhcnRpbmdfaW5kZXgsIGksIEJBRF9XT1JEX1NQRUMpOworLSAg ICAgIGZyZWUgKHJlc3VsdCk7CisrICAgICAgeGZyZWUgKHJlc3VsdCk7CisgICAgICAgcmV0dXJu ICgtMSk7CisgICAgIH0KKyAKK0BAIC02MjksOCArNjMyLDggQEAgaGlzdG9yeV9leHBhbmRfaW50 ZXJuYWwgKHN0cmluZywgc3RhcnQsIGVuZF9pbmRleF9wdHIsIHJldF9zdHJpbmcsIGN1cnJlbnRf bGluZSkKKyAJeworIAlkZWZhdWx0OgorIAkgICpyZXRfc3RyaW5nID0gaGlzdF9lcnJvciAoc3Ry aW5nLCBpKzEsIGkrMiwgQkFEX01PRElGSUVSKTsKKy0JICBmcmVlIChyZXN1bHQpOworLQkgIGZy ZWUgKHRlbXApOworKwkgIHhmcmVlIChyZXN1bHQpOworKwkgIHhmcmVlICh0ZW1wKTsKKyAJICBy ZXR1cm4gLTE7CisgCisgCWNhc2UgJ3EnOgorQEAgLTY1NSw3ICs2NTgsNyBAQCBoaXN0b3J5X2V4 cGFuZF9pbnRlcm5hbCAoc3RyaW5nLCBzdGFydCwgZW5kX2luZGV4X3B0ciwgcmV0X3N0cmluZywg Y3VycmVudF9saW5lKQorIAkgICAgeworIAkgICAgICB0c3RyKys7CisgCSAgICAgIHQgPSBzYXZl c3RyaW5nICh0c3RyKTsKKy0JICAgICAgZnJlZSAodGVtcCk7CisrCSAgICAgIHhmcmVlICh0ZW1w KTsKKyAJICAgICAgdGVtcCA9IHQ7CisgCSAgICB9CisgCSAgYnJlYWs7CitAQCAtNjgwLDcgKzY4 Myw3IEBAIGhpc3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCBlbmRfaW5kZXhf cHRyLCByZXRfc3RyaW5nLCBjdXJyZW50X2xpbmUpCisgCSAgaWYgKHRzdHIpCisgCSAgICB7Cisg CSAgICAgIHQgPSBzYXZlc3RyaW5nICh0c3RyKTsKKy0JICAgICAgZnJlZSAodGVtcCk7CisrCSAg ICAgIHhmcmVlICh0ZW1wKTsKKyAJICAgICAgdGVtcCA9IHQ7CisgCSAgICB9CisgCSAgYnJlYWs7 CitAQCAtNzU2LDggKzc1OSw4IEBAIGhpc3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0 YXJ0LCBlbmRfaW5kZXhfcHRyLCByZXRfc3RyaW5nLCBjdXJyZW50X2xpbmUpCisgCSAgICBpZiAo c3Vic3RfbGhzX2xlbiA9PSAwKQorIAkgICAgICB7CisgCQkqcmV0X3N0cmluZyA9IGhpc3RfZXJy b3IgKHN0cmluZywgc3RhcnRpbmdfaW5kZXgsIGksIE5PX1BSRVZfU1VCU1QpOworLQkJZnJlZSAo cmVzdWx0KTsKKy0JCWZyZWUgKHRlbXApOworKwkJeGZyZWUgKHJlc3VsdCk7CisrCQl4ZnJlZSAo dGVtcCk7CisgCQlyZXR1cm4gLTE7CisgCSAgICAgIH0KKyAKK0BAIC03NjYsOCArNzY5LDggQEAg aGlzdG9yeV9leHBhbmRfaW50ZXJuYWwgKHN0cmluZywgc3RhcnQsIGVuZF9pbmRleF9wdHIsIHJl dF9zdHJpbmcsIGN1cnJlbnRfbGluZSkKKyAJICAgIGlmIChzdWJzdF9saHNfbGVuID4gbF90ZW1w KQorIAkgICAgICB7CisgCQkqcmV0X3N0cmluZyA9IGhpc3RfZXJyb3IgKHN0cmluZywgc3RhcnRp bmdfaW5kZXgsIGksIFNVQlNUX0ZBSUxFRCk7CistCQlmcmVlIChyZXN1bHQpOworLQkJZnJlZSAo dGVtcCk7CisrCQl4ZnJlZSAocmVzdWx0KTsKKysJCXhmcmVlICh0ZW1wKTsKKyAJCXJldHVybiAo LTEpOworIAkgICAgICB9CisgCitAQCAtODA4LDcgKzgxMSw3IEBAIGhpc3RvcnlfZXhwYW5kX2lu dGVybmFsIChzdHJpbmcsIHN0YXJ0LCBlbmRfaW5kZXhfcHRyLCByZXRfc3RyaW5nLCBjdXJyZW50 X2xpbmUpCisgCQkJICAgICB0ZW1wICsgc2kgKyBzdWJzdF9saHNfbGVuLAorIAkJCSAgICAgbF90 ZW1wIC0gKHNpICsgc3Vic3RfbGhzX2xlbikpOworIAkJICAgIG5ld19ldmVudFtsZW5dID0gJ1ww JzsKKy0JCSAgICBmcmVlICh0ZW1wKTsKKysJCSAgICB4ZnJlZSAodGVtcCk7CisgCQkgICAgdGVt cCA9IG5ld19ldmVudDsKKyAKKyAJCSAgICBmYWlsZWQgPSAwOworQEAgLTg0NCw4ICs4NDcsOCBA QCBoaXN0b3J5X2V4cGFuZF9pbnRlcm5hbCAoc3RyaW5nLCBzdGFydCwgZW5kX2luZGV4X3B0ciwg cmV0X3N0cmluZywgY3VycmVudF9saW5lKQorIAkgICAgICBjb250aW51ZTsJCS8qIGRvbid0IHdh bnQgdG8gaW5jcmVtZW50IGkgKi8KKyAKKyAJICAgICpyZXRfc3RyaW5nID0gaGlzdF9lcnJvciAo c3RyaW5nLCBzdGFydGluZ19pbmRleCwgaSwgU1VCU1RfRkFJTEVEKTsKKy0JICAgIGZyZWUgKHJl c3VsdCk7CistCSAgICBmcmVlICh0ZW1wKTsKKysJICAgIHhmcmVlIChyZXN1bHQpOworKwkgICAg eGZyZWUgKHRlbXApOworIAkgICAgcmV0dXJuICgtMSk7CisgCSAgfQorIAl9CitAQCAtODY2LDcg Kzg2OSw3IEBAIGhpc3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCBlbmRfaW5k ZXhfcHRyLCByZXRfc3RyaW5nLCBjdXJyZW50X2xpbmUpCisgICAgICAgZWxzZQorIAl4ID0gc2F2 ZXN0cmluZyAodGVtcCk7CisgCistICAgICAgZnJlZSAodGVtcCk7CisrICAgICAgeGZyZWUgKHRl bXApOworICAgICAgIHRlbXAgPSB4OworICAgICB9CisgCitAQCAtODc0LDcgKzg3Nyw3IEBAIGhp c3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCBlbmRfaW5kZXhfcHRyLCByZXRf c3RyaW5nLCBjdXJyZW50X2xpbmUpCisgICBpZiAobiA+PSByZXN1bHRfbGVuKQorICAgICByZXN1 bHQgPSAoY2hhciAqKXhyZWFsbG9jIChyZXN1bHQsIG4gKyAyKTsKKyAgIHN0cmNweSAocmVzdWx0 LCB0ZW1wKTsKKy0gIGZyZWUgKHRlbXApOworKyAgeGZyZWUgKHRlbXApOworIAorICAgKmVuZF9p bmRleF9wdHIgPSBpOworICAgKnJldF9zdHJpbmcgPSByZXN1bHQ7CitAQCAtOTI1LDcgKzkyOCw3 IEBAIGhpc3RvcnlfZXhwYW5kIChoc3RyaW5nLCBvdXRwdXQpCisgICAgICBjaGFyICoqb3V0cHV0 OworIHsKKyAgIHJlZ2lzdGVyIGludCBqOworLSAgaW50IGksIHIsIGwsIHBhc3NjLCBjYywgbW9k aWZpZWQsIGVpbmRleCwgb25seV9wcmludGluZywgZHF1b3RlOworKyAgaW50IGksIHIsIGwsIHBh c3NjLCBjYywgbW9kaWZpZWQsIGVpbmRleCwgb25seV9wcmludGluZywgZHF1b3RlLCBmbGFnOwor ICAgY2hhciAqc3RyaW5nOworIAorICAgLyogVGhlIG91dHB1dCBzdHJpbmcsIGFuZCBpdHMgbGVu Z3RoLiAqLworQEAgLTEwMTcsNyArMTAyMCw3IEBAIGhpc3RvcnlfZXhwYW5kIChoc3RyaW5nLCBv dXRwdXQpCisgCSAgICB9CisgCSAgZWxzZSBpZiAoc3RyaW5nW2ldID09IGhpc3RvcnlfZXhwYW5z aW9uX2NoYXIpCisgCSAgICB7CistCSAgICAgIGlmICghY2MgfHwgbWVtYmVyIChjYywgaGlzdG9y eV9ub19leHBhbmRfY2hhcnMpKQorKwkgICAgICBpZiAoY2MgPT0gMCB8fCBtZW1iZXIgKGNjLCBo aXN0b3J5X25vX2V4cGFuZF9jaGFycykpCisgCQljb250aW51ZTsKKyAJICAgICAgLyogSWYgdGhl IGNhbGxpbmcgYXBwbGljYXRpb24gaGFzIHNldAorIAkJIGhpc3RvcnlfaW5oaWJpdF9leHBhbnNp b25fZnVuY3Rpb24gdG8gYSBmdW5jdGlvbiB0aGF0IGNoZWNrcworQEAgLTEwNDUsOCArMTA0OCw5 IEBAIGhpc3RvcnlfZXhwYW5kIChoc3RyaW5nLCBvdXRwdXQpCisgCSAgZWxzZSBpZiAoZHF1b3Rl ID09IDAgJiYgaGlzdG9yeV9xdW90ZXNfaW5oaWJpdF9leHBhbnNpb24gJiYgc3RyaW5nW2ldID09 ICdcJycpCisgCSAgICB7CisgCSAgICAgIC8qIElmIHRoaXMgaXMgYmFzaCwgc2luZ2xlIHF1b3Rl cyBpbmhpYml0IGhpc3RvcnkgZXhwYW5zaW9uLiAqLworKwkgICAgICBmbGFnID0gKGkgPiAwICYm IHN0cmluZ1tpIC0gMV0gPT0gJyQnKTsKKyAJICAgICAgaSsrOworLQkgICAgICBoaXN0X3N0cmlu Z19leHRyYWN0X3NpbmdsZV9xdW90ZWQgKHN0cmluZywgJmkpOworKwkgICAgICBoaXN0X3N0cmlu Z19leHRyYWN0X3NpbmdsZV9xdW90ZWQgKHN0cmluZywgJmksIGZsYWcpOworIAkgICAgfQorIAkg IGVsc2UgaWYgKGhpc3RvcnlfcXVvdGVzX2luaGliaXRfZXhwYW5zaW9uICYmIHN0cmluZ1tpXSA9 PSAnXFwnKQorIAkgICAgeworQEAgLTEwNjAsNyArMTA2NCw3IEBAIGhpc3RvcnlfZXhwYW5kICho c3RyaW5nLCBvdXRwdXQpCisgCSAgCisgICAgICAgaWYgKHN0cmluZ1tpXSAhPSBoaXN0b3J5X2V4 cGFuc2lvbl9jaGFyKQorIAl7CistCSAgZnJlZSAocmVzdWx0KTsKKysJICB4ZnJlZSAocmVzdWx0 KTsKKyAJICAqb3V0cHV0ID0gc2F2ZXN0cmluZyAoc3RyaW5nKTsKKyAJICByZXR1cm4gKDApOwor IAl9CitAQCAtMTA5Nyw3ICsxMTAxLDcgQEAgaGlzdG9yeV9leHBhbmQgKGhzdHJpbmcsIG91dHB1 dCkKKyAJICBpZiAoc3RybGVuIChtYikgPiAxKQorIAkgICAgeworIAkgICAgICBBRERfU1RSSU5H IChtYik7CistCSAgICAgIGJyZWFrOworKwkgICAgICBjb250aW51ZTsKKyAJICAgIH0KKyAJfQor ICNlbmRpZiAvKiBIQU5ETEVfTVVMVElCWVRFICovCitAQCAtMTEzMSwxNSArMTEzNSwxNiBAQCBo aXN0b3J5X2V4cGFuZCAoaHN0cmluZywgb3V0cHV0KQorIAkgICAgICB7CisgCQlpbnQgcXVvdGUs IHNsZW47CisgCisrCQlmbGFnID0gKGkgPiAwICYmIHN0cmluZ1tpIC0gMV0gPT0gJyQnKTsKKyAJ CXF1b3RlID0gaSsrOworLQkJaGlzdF9zdHJpbmdfZXh0cmFjdF9zaW5nbGVfcXVvdGVkIChzdHJp bmcsICZpKTsKKysJCWhpc3Rfc3RyaW5nX2V4dHJhY3Rfc2luZ2xlX3F1b3RlZCAoc3RyaW5nLCAm aSwgZmxhZyk7CisgCisgCQlzbGVuID0gaSAtIHF1b3RlICsgMjsKKyAJCXRlbXAgPSAoY2hhciAq KXhtYWxsb2MgKHNsZW4pOworIAkJc3RybmNweSAodGVtcCwgc3RyaW5nICsgcXVvdGUsIHNsZW4p OworIAkJdGVtcFtzbGVuIC0gMV0gPSAnXDAnOworIAkJQUREX1NUUklORyAodGVtcCk7CistCQlm cmVlICh0ZW1wKTsKKysJCXhmcmVlICh0ZW1wKTsKKyAJICAgICAgfQorIAkgICAgZWxzZQorIAkg ICAgICBBRERfQ0hBUiAoc3RyaW5nW2ldKTsKK0BAIC0xMTUyLDcgKzExNTcsNyBAQCBoaXN0b3J5 X2V4cGFuZCAoaHN0cmluZywgb3V0cHV0KQorIAkgICAgICB0ZW1wID0gKGNoYXIgKil4bWFsbG9j IChsIC0gaSArIDEpOworIAkgICAgICBzdHJjcHkgKHRlbXAsIHN0cmluZyArIGkpOworIAkgICAg ICBBRERfU1RSSU5HICh0ZW1wKTsKKy0JICAgICAgZnJlZSAodGVtcCk7CisrCSAgICAgIHhmcmVl ICh0ZW1wKTsKKyAJICAgICAgaSA9IGw7CisgCSAgICB9CisgCSAgZWxzZQorQEAgLTExNjUsNyAr MTE3MCw4IEBAIGhpc3RvcnlfZXhwYW5kIChoc3RyaW5nLCBvdXRwdXQpCisgCSAgLyogSWYgdGhl IGhpc3RvcnlfZXhwYW5zaW9uX2NoYXIgaXMgZm9sbG93ZWQgYnkgb25lIG9mIHRoZQorIAkgICAg IGNoYXJhY3RlcnMgaW4gaGlzdG9yeV9ub19leHBhbmRfY2hhcnMsIHRoZW4gaXQgaXMgbm90IGEK KyAJICAgICBjYW5kaWRhdGUgZm9yIGV4cGFuc2lvbiBvZiBhbnkga2luZC4gKi8KKy0JICBpZiAo bWVtYmVyIChjYywgaGlzdG9yeV9ub19leHBhbmRfY2hhcnMpKQorKwkgIGlmIChjYyA9PSAwIHx8 IG1lbWJlciAoY2MsIGhpc3Rvcnlfbm9fZXhwYW5kX2NoYXJzKSB8fAorKwkgIAkJIChoaXN0b3J5 X2luaGliaXRfZXhwYW5zaW9uX2Z1bmN0aW9uICYmICgqaGlzdG9yeV9pbmhpYml0X2V4cGFuc2lv bl9mdW5jdGlvbikgKHN0cmluZywgaSkpKQorIAkgICAgeworIAkgICAgICBBRERfQ0hBUiAoc3Ry aW5nW2ldKTsKKyAJICAgICAgYnJlYWs7CitAQCAtMTE4NCw3ICsxMTkwLDcgQEAgaGlzdG9yeV9l eHBhbmQgKGhzdHJpbmcsIG91dHB1dCkKKyAJCSAgdGVtcCA9IChjaGFyICopeG1hbGxvYyAoMSAr IHN0cmxlbiAocmVzdWx0KSk7CisgCQkgIHN0cmNweSAodGVtcCwgcmVzdWx0KTsKKyAJCSAgQURE X1NUUklORyAodGVtcCk7CistCQkgIGZyZWUgKHRlbXApOworKwkJICB4ZnJlZSAodGVtcCk7Cisg CQl9CisgCSAgICAgIGkrKzsKKyAJICAgICAgYnJlYWs7CitAQCAtMTE5NSw5ICsxMjAxLDkgQEAg aGlzdG9yeV9leHBhbmQgKGhzdHJpbmcsIG91dHB1dCkKKyAJICBpZiAociA8IDApCisgCSAgICB7 CisgCSAgICAgICpvdXRwdXQgPSB0ZW1wOworLQkgICAgICBmcmVlIChyZXN1bHQpOworKwkgICAg ICB4ZnJlZSAocmVzdWx0KTsKKyAJICAgICAgaWYgKHN0cmluZyAhPSBoc3RyaW5nKQorLQkJZnJl ZSAoc3RyaW5nKTsKKysJCXhmcmVlIChzdHJpbmcpOworIAkgICAgICByZXR1cm4gLTE7CisgCSAg ICB9CisgCSAgZWxzZQorQEAgLTEyMDcsNyArMTIxMyw3IEBAIGhpc3RvcnlfZXhwYW5kIChoc3Ry aW5nLCBvdXRwdXQpCisgCQkgIG1vZGlmaWVkKys7CisgCQkgIGlmICgqdGVtcCkKKyAJCSAgICBB RERfU1RSSU5HICh0ZW1wKTsKKy0JCSAgZnJlZSAodGVtcCk7CisrCQkgIHhmcmVlICh0ZW1wKTsK KyAJCX0KKyAJICAgICAgb25seV9wcmludGluZyA9IHIgPT0gMTsKKyAJICAgICAgaSA9IGVpbmRl eDsKK0BAIC0xMjE4LDcgKzEyMjQsNyBAQCBoaXN0b3J5X2V4cGFuZCAoaHN0cmluZywgb3V0cHV0 KQorIAorICAgKm91dHB1dCA9IHJlc3VsdDsKKyAgIGlmIChzdHJpbmcgIT0gaHN0cmluZykKKy0g ICAgZnJlZSAoc3RyaW5nKTsKKysgICAgeGZyZWUgKHN0cmluZyk7CisgCisgICBpZiAob25seV9w cmludGluZykKKyAgICAgeworQEAgLTEzOTksOCArMTQwNSw4IEBAIGhpc3RvcnlfYXJnX2V4dHJh Y3QgKGZpcnN0LCBsYXN0LCBzdHJpbmcpCisgICAgIH0KKyAKKyAgIGZvciAoaSA9IDA7IGkgPCBs ZW47IGkrKykKKy0gICAgZnJlZSAobGlzdFtpXSk7CistICBmcmVlIChsaXN0KTsKKysgICAgeGZy ZWUgKGxpc3RbaV0pOworKyAgeGZyZWUgKGxpc3QpOworIAorICAgcmV0dXJuIChyZXN1bHQpOwor IH0KK0BAIC0xNDExLDEwICsxNDE3LDEwIEBAIGhpc3RvcnlfdG9rZW5pemVfd29yZCAoc3RyaW5n LCBpbmQpCisgICAgICBpbnQgaW5kOworIHsKKyAgIHJlZ2lzdGVyIGludCBpOworLSAgaW50IGRl bGltaXRlcjsKKysgIGludCBkZWxpbWl0ZXIsIG5lc3RkZWxpbSwgZGVsaW1vcGVuOworIAorICAg aSA9IGluZDsKKy0gIGRlbGltaXRlciA9IDA7CisrICBkZWxpbWl0ZXIgPSBuZXN0ZGVsaW0gPSAw OworIAorICAgaWYgKG1lbWJlciAoc3RyaW5nW2ldLCAiKClcbiIpKQorICAgICB7CitAQCAtMTQz MCwyMCArMTQzNiwzNCBAQCBoaXN0b3J5X3Rva2VuaXplX3dvcmQgKHN0cmluZywgaW5kKQorIAl7 CisgCSAgaWYgKHBlZWsgPT0gJzwnICYmIHN0cmluZ1tpICsgMl0gPT0gJy0nKQorIAkgICAgaSsr OworKwkgIGVsc2UgaWYgKHBlZWsgPT0gJzwnICYmIHN0cmluZ1tpICsgMl0gPT0gJzwnKQorKwkg ICAgaSsrOworIAkgIGkgKz0gMjsKKyAJICByZXR1cm4gaTsKKyAJfQorLSAgICAgIGVsc2UKKysg ICAgICBlbHNlIGlmICgocGVlayA9PSAnJicgJiYgKHN0cmluZ1tpXSA9PSAnPicgfHwgc3RyaW5n W2ldID09ICc8JykpIHx8CisrCQkocGVlayA9PSAnPicgJiYgc3RyaW5nW2ldID09ICcmJykpCisg CXsKKy0JICBpZiAoKHBlZWsgPT0gJyYnICYmIChzdHJpbmdbaV0gPT0gJz4nIHx8IHN0cmluZ1tp XSA9PSAnPCcpKSB8fAorLQkgICAgICAocGVlayA9PSAnPicgJiYgc3RyaW5nW2ldID09ICcmJykg fHwKKy0JICAgICAgKHBlZWsgPT0gJygnICYmIChzdHJpbmdbaV0gPT0gJz4nIHx8IHN0cmluZ1tp XSA9PSAnPCcpKSB8fCAvKiApICovCistCSAgICAgIChwZWVrID09ICcoJyAmJiBzdHJpbmdbaV0g PT0gJyQnKSkgLyogKSAqLworLQkgICAgeworLQkgICAgICBpICs9IDI7CistCSAgICAgIHJldHVy biBpOworLQkgICAgfQorKwkgIGkgKz0gMjsKKysJICByZXR1cm4gaTsKKysJfQorKyAgICAgIC8q IFhYWCAtIHNlcGFyYXRlZCBvdXQgZm9yIGxhdGVyIC0tIGJhc2gtNC4yICovCisrICAgICAgZWxz ZSBpZiAoKHBlZWsgPT0gJygnICYmIChzdHJpbmdbaV0gPT0gJz4nIHx8IHN0cmluZ1tpXSA9PSAn PCcpKSB8fCAvKiApICovCisrCSAgICAgICAocGVlayA9PSAnKCcgJiYgc3RyaW5nW2ldID09ICck JykpIC8qKSovCisrCXsKKysJICBpICs9IDI7CisrCSAgZGVsaW1vcGVuID0gJygnOworKwkgIGRl bGltaXRlciA9ICcpJzsKKysJICBuZXN0ZGVsaW0gPSAxOworKwkgIGdvdG8gZ2V0X3dvcmQ7Cisg CX0KKysjaWYgMAorKyAgICAgIGVsc2UgaWYgKHBlZWsgPT0gJ1wnJyAmJiBzdHJpbmdbaV0gPT0g JyQnKQorKyAgICAgICAgeworKwkgIGkgKz0gMjsJLyogWFhYICovCisrCSAgcmV0dXJuIGk7Cisr ICAgICAgICB9CisrI2VuZGlmCisgCisgICAgICAgaWYgKHN0cmluZ1tpXSAhPSAnJCcpCisgCXsK K0BAIC0xNDUyLDkgKzE0NzIsMjUgQEAgaGlzdG9yeV90b2tlbml6ZV93b3JkIChzdHJpbmcsIGlu ZCkKKyAJfQorICAgICB9CisgCisrICAvKiBzYW1lIGNvZGUgYWxzbyB1c2VkIGZvciAkKC4uLikv PCguLi4pLz4oLi4uKSBhYm92ZSAqLworKyAgaWYgKG1lbWJlciAoc3RyaW5nW2ldLCAiIUA/Kyoi KSkKKysgICAgeworKyAgICAgIGludCBwZWVrID0gc3RyaW5nW2kgKyAxXTsKKysKKysgICAgICBp ZiAocGVlayA9PSAnKCcpCQkvKikqLworKwl7CisrCSAgLyogU2hlbGwgZXh0ZW5kZWQgZ2xvYmJp bmcgcGF0dGVybnMgKi8KKysJICBpICs9IDI7CisrCSAgZGVsaW1vcGVuID0gJygnOworKwkgIGRl bGltaXRlciA9ICcpJzsJLyogWFhYIC0gbm90IHBlcmZlY3QgKi8KKysJICBuZXN0ZGVsaW0gPSAx OworKwl9CisrICAgIH0KKysKKytnZXRfd29yZDoKKyAgIC8qIEdldCB3b3JkIGZyb20gc3RyaW5n ICsgaTsgKi8KKyAKKy0gIGlmIChtZW1iZXIgKHN0cmluZ1tpXSwgSElTVE9SWV9RVU9URV9DSEFS QUNURVJTKSkKKysgIGlmIChkZWxpbWl0ZXIgPT0gMCAmJiBtZW1iZXIgKHN0cmluZ1tpXSwgSElT VE9SWV9RVU9URV9DSEFSQUNURVJTKSkKKyAgICAgZGVsaW1pdGVyID0gc3RyaW5nW2krK107Cisg CisgICBmb3IgKDsgc3RyaW5nW2ldOyBpKyspCitAQCAtMTQ3MiwxNiArMTUwOCwzMSBAQCBoaXN0 b3J5X3Rva2VuaXplX3dvcmQgKHN0cmluZywgaW5kKQorIAkgIGNvbnRpbnVlOworIAl9CisgCisr ICAgICAgLyogZGVsaW1pdGVyIG11c3QgYmUgc2V0IGFuZCBzZXQgdG8gc29tZXRoaW5nIG90aGVy IHRoYW4gYSBxdW90ZSBpZgorKwkgbmVzdGRlbGltIGlzIHNldCwgc28gdGhlc2UgdGVzdHMgYXJl IHNhZmUuICovCisrICAgICAgaWYgKG5lc3RkZWxpbSAmJiBzdHJpbmdbaV0gPT0gZGVsaW1vcGVu KQorKwl7CisrCSAgbmVzdGRlbGltKys7CisrCSAgY29udGludWU7CisrCX0KKysgICAgICBpZiAo bmVzdGRlbGltICYmIHN0cmluZ1tpXSA9PSBkZWxpbWl0ZXIpCisrCXsKKysJICBuZXN0ZGVsaW0t LTsKKysJICBpZiAobmVzdGRlbGltID09IDApCisrCSAgICBkZWxpbWl0ZXIgPSAwOworKwkgIGNv bnRpbnVlOworKwl9CisrICAgICAgCisgICAgICAgaWYgKGRlbGltaXRlciAmJiBzdHJpbmdbaV0g PT0gZGVsaW1pdGVyKQorIAl7CisgCSAgZGVsaW1pdGVyID0gMDsKKyAJICBjb250aW51ZTsKKyAJ fQorIAorLSAgICAgIGlmICghZGVsaW1pdGVyICYmIChtZW1iZXIgKHN0cmluZ1tpXSwgaGlzdG9y eV93b3JkX2RlbGltaXRlcnMpKSkKKysgICAgICBpZiAoZGVsaW1pdGVyID09IDAgJiYgKG1lbWJl ciAoc3RyaW5nW2ldLCBoaXN0b3J5X3dvcmRfZGVsaW1pdGVycykpKQorIAlicmVhazsKKyAKKy0g ICAgICBpZiAoIWRlbGltaXRlciAmJiBtZW1iZXIgKHN0cmluZ1tpXSwgSElTVE9SWV9RVU9URV9D SEFSQUNURVJTKSkKKysgICAgICBpZiAoZGVsaW1pdGVyID09IDAgJiYgbWVtYmVyIChzdHJpbmdb aV0sIEhJU1RPUllfUVVPVEVfQ0hBUkFDVEVSUykpCisgCWRlbGltaXRlciA9IHN0cmluZ1tpXTsK KyAgICAgfQorIAorQEAgLTE1NjksNiArMTYyMCwxOCBAQCBoaXN0b3J5X3Rva2VuaXplIChzdHJp bmcpCisgICByZXR1cm4gKGhpc3RvcnlfdG9rZW5pemVfaW50ZXJuYWwgKHN0cmluZywgLTEsIChp bnQgKilOVUxMKSk7CisgfQorIAorKy8qIEZyZWUgbWVtYmVycyBvZiBXT1JEUyBmcm9tIFNUQVJU IHRvIGFuIGVtcHR5IHN0cmluZyAqLworK3N0YXRpYyB2b2lkCisrZnJlZXdvcmRzICh3b3Jkcywg c3RhcnQpCisrICAgICBjaGFyICoqd29yZHM7CisrICAgICBpbnQgc3RhcnQ7CisreworKyAgcmVn aXN0ZXIgaW50IGk7CisrCisrICBmb3IgKGkgPSBzdGFydDsgd29yZHNbaV07IGkrKykKKysgICAg eGZyZWUgKHdvcmRzW2ldKTsKKyt9CisrCisgLyogRmluZCBhbmQgcmV0dXJuIHRoZSB3b3JkIHdo aWNoIGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggSU5ECisgICAgaW4gdGhlIGhpc3Rv cnkgbGluZSBMSU5FLiAgVXNlZCB0byBzYXZlIHRoZSB3b3JkIG1hdGNoZWQgYnkgdGhlCisgICAg bGFzdCBoaXN0b3J5ICE/c3RyaW5nPyBzZWFyY2guICovCitAQCAtMTU4MiwxMiArMTY0NSwxNiBA QCBoaXN0b3J5X2ZpbmRfd29yZCAobGluZSwgaW5kKQorIAorICAgd29yZHMgPSBoaXN0b3J5X3Rv a2VuaXplX2ludGVybmFsIChsaW5lLCBpbmQsICZ3aW5kKTsKKyAgIGlmICh3aW5kID09IC0xIHx8 IHdvcmRzID09IDApCistICAgIHJldHVybiAoKGNoYXIgKilOVUxMKTsKKysgICAgeworKyAgICAg IGlmICh3b3JkcykKKysJZnJlZXdvcmRzICh3b3JkcywgMCk7CisrICAgICAgRlJFRSAod29yZHMp OworKyAgICAgIHJldHVybiAoKGNoYXIgKilOVUxMKTsKKysgICAgfQorICAgcyA9IHdvcmRzW3dp bmRdOworICAgZm9yIChpID0gMDsgaSA8IHdpbmQ7IGkrKykKKy0gICAgZnJlZSAod29yZHNbaV0p OworLSAgZm9yIChpID0gd2luZCArIDE7IHdvcmRzW2ldOyBpKyspCistICAgIGZyZWUgKHdvcmRz W2ldKTsKKy0gIGZyZWUgKHdvcmRzKTsKKysgICAgeGZyZWUgKHdvcmRzW2ldKTsKKysgIGZyZWV3 b3JkcyAod29yZHMsIHdpbmQgKyAxKTsKKysgIHhmcmVlICh3b3Jkcyk7CisgICByZXR1cm4gczsK KyB9CistLS0gYS9yZWFkbGluZS9oaXN0ZmlsZS5jCisrKysgYi9yZWFkbGluZS9oaXN0ZmlsZS5j CitAQCAtMSwyNCArMSwyMyBAQAorIC8qIGhpc3RmaWxlLmMgLSBmdW5jdGlvbnMgdG8gbWFuaXB1 bGF0ZSB0aGUgaGlzdG9yeSBmaWxlLiAqLworIAorLS8qIENvcHlyaWdodCAoQykgMTk4OS0yMDAz IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk4OS0y MDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBjb250 YWlucyB0aGUgR05VIEhpc3RvcnkgTGlicmFyeSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgorKyAg IFRoaXMgZmlsZSBjb250YWlucyB0aGUgR05VIEhpc3RvcnkgTGlicmFyeSAoSGlzdG9yeSksIGEg c2V0IG9mCisgICAgcm91dGluZXMgZm9yIG1hbmFnaW5nIHRoZSB0ZXh0IG9mIHByZXZpb3VzbHkg dHlwZWQgbGluZXMuCisgCistICAgVGhlIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIEhpc3RvcnkgaXMgZnJlZSBzb2Z0 d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwg b3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgTGli cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBi dXQKKy0gICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKy0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisrICAgSGlzdG9yeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAor LSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNF LiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3Vp dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25n IHdpdGggSGlzdG9yeS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKysqLworIAorIC8qIFRoZSBnb2FsIGlzIHRvIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIHRy YW5zcGFyZW50LCBzbyB0aGF0IHlvdQorICAgIGRvbid0IGhhdmUgdG8ga25vdyB3aGF0IGRhdGEg dHlwZXMgYXJlIHVzZWQsIGp1c3Qgd2hhdCBmdW5jdGlvbnMKK0BAIC01Myw3ICs1Miw5IEBACisg IyAgaW5jbHVkZSA8dW5pc3RkLmg+CisgI2VuZGlmCisgCistI2lmIGRlZmluZWQgKF9fRU1YX18p IHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pCisrI2luY2x1ZGUgPGN0eXBlLmg+CisrCisrI2lmIGRl ZmluZWQgKF9fRU1YX18pCisgIyAgdW5kZWYgSEFWRV9NTUFQCisgI2VuZGlmCisgCitAQCAtMTAz LDcgKzEwNCw3IEBAIGludCBoaXN0b3J5X3dyaXRlX3RpbWVzdGFtcHMgPSAwOworIAorIC8qIERv ZXMgUyBsb29rIGxpa2UgdGhlIGJlZ2lubmluZyBvZiBhIGhpc3RvcnkgdGltZXN0YW1wIGVudHJ5 PyAgUGxhY2Vob2xkZXIKKyAgICBmb3IgbW9yZSBleHRlbnNpdmUgdGVzdHMuICovCistI2RlZmlu ZSBISVNUX1RJTUVTVEFNUF9TVEFSVChzKQkJKCoocykgPT0gaGlzdG9yeV9jb21tZW50X2NoYXIp CisrI2RlZmluZSBISVNUX1RJTUVTVEFNUF9TVEFSVChzKQkJKCoocykgPT0gaGlzdG9yeV9jb21t ZW50X2NoYXIgJiYgaXNkaWdpdCAoKHMpWzFdKSApCisgCisgLyogUmV0dXJuIHRoZSBzdHJpbmcg dGhhdCBzaG91bGQgYmUgdXNlZCBpbiB0aGUgcGxhY2Ugb2YgdGhpcworICAgIGZpbGVuYW1lLiAg VGhpcyBvbmx5IG1hdHRlcnMgd2hlbiB5b3UgZG9uJ3Qgc3BlY2lmeSB0aGUKK0BAIC0xMjUsOCAr MTI2LDEyIEBAIGhpc3RvcnlfZmlsZW5hbWUgKGZpbGVuYW1lKQorIAorICAgaWYgKGhvbWUgPT0g MCkKKyAgICAgeworKyNpZiAwCisgICAgICAgaG9tZSA9ICIuIjsKKyAgICAgICBob21lX2xlbiA9 IDE7CisrI2Vsc2UKKysgICAgICByZXR1cm4gKE5VTEwpOworKyNlbmRpZgorICAgICB9CisgICBl bHNlCisgICAgIGhvbWVfbGVuID0gc3RybGVuIChob21lKTsKK0BAIC0xNzgsNyArMTgzLDcgQEAg cmVhZF9oaXN0b3J5X3JhbmdlIChmaWxlbmFtZSwgZnJvbSwgdG8pCisgCisgICBidWZmZXIgPSBs YXN0X3RzID0gKGNoYXIgKilOVUxMOworICAgaW5wdXQgPSBoaXN0b3J5X2ZpbGVuYW1lIChmaWxl bmFtZSk7CistICBmaWxlID0gb3BlbiAoaW5wdXQsIE9fUkRPTkxZfE9fQklOQVJZLCAwNjY2KTsK KysgIGZpbGUgPSBpbnB1dCA/IG9wZW4gKGlucHV0LCBPX1JET05MWXxPX0JJTkFSWSwgMDY2Nikg OiAtMTsKKyAKKyAgIGlmICgoZmlsZSA8IDApIHx8IChmc3RhdCAoZmlsZSwgJmZpbmZvKSA9PSAt MSkpCisgICAgIGdvdG8gZXJyb3JfYW5kX2V4aXQ7CitAQCAtMjU2LDggKzI2MSw5IEBAIHJlYWRf aGlzdG9yeV9yYW5nZSAoZmlsZW5hbWUsIGZyb20sIHRvKQorICAgZm9yIChsaW5lX2VuZCA9IGxp bmVfc3RhcnQ7IGxpbmVfZW5kIDwgYnVmZW5kOyBsaW5lX2VuZCsrKQorICAgICBpZiAoKmxpbmVf ZW5kID09ICdcbicpCisgICAgICAgeworLQlpZiAobGluZV9lbmQgLSAxID49IGxpbmVfc3RhcnQg JiYgKihsaW5lX2VuZCAtIDEpID09ICdccicpCistCSAgKihsaW5lX2VuZCAtIDEpID0gJ1wwJzsK KysJLyogQ2hhbmdlIHRvIGFsbG93IFdpbmRvd3MtbGlrZSBcclxuIGVuZCBvZiBsaW5lIGRlbGlt aXRlci4gKi8KKysJaWYgKGxpbmVfZW5kID4gbGluZV9zdGFydCAmJiBsaW5lX2VuZFstMV0gPT0g J1xyJykKKysJICBsaW5lX2VuZFstMV0gPSAnXDAnOworIAllbHNlCisgCSAgKmxpbmVfZW5kID0g J1wwJzsKKyAKK0BAIC0zMTIsNyArMzE4LDcgQEAgaGlzdG9yeV90cnVuY2F0ZV9maWxlIChmbmFt ZSwgbGluZXMpCisgCisgICBidWZmZXIgPSAoY2hhciAqKU5VTEw7CisgICBmaWxlbmFtZSA9IGhp c3RvcnlfZmlsZW5hbWUgKGZuYW1lKTsKKy0gIGZpbGUgPSBvcGVuIChmaWxlbmFtZSwgT19SRE9O TFl8T19CSU5BUlksIDA2NjYpOworKyAgZmlsZSA9IGZpbGVuYW1lID8gb3BlbiAoZmlsZW5hbWUs IE9fUkRPTkxZfE9fQklOQVJZLCAwNjY2KSA6IC0xOworICAgcnYgPSAwOworIAorICAgLyogRG9u J3QgdHJ5IHRvIHRydW5jYXRlIG5vbi1yZWd1bGFyIGZpbGVzLiAqLworQEAgLTQxMSw3ICs0MTcs NyBAQCBoaXN0b3J5X3RydW5jYXRlX2ZpbGUgKGZuYW1lLCBsaW5lcykKKyAKKyAgIEZSRUUgKGJ1 ZmZlcik7CisgCistICBmcmVlIChmaWxlbmFtZSk7CisrICB4ZnJlZSAoZmlsZW5hbWUpOworICAg cmV0dXJuIHJ2OworIH0KKyAKK0BAIC00MzQsOSArNDQwLDEwIEBAIGhpc3RvcnlfZG9fd3JpdGUg KGZpbGVuYW1lLCBuZWxlbWVudHMsIG92ZXJ3cml0ZSkKKyAgIG1vZGUgPSBvdmVyd3JpdGUgPyBP X1dST05MWXxPX0NSRUFUfE9fVFJVTkN8T19CSU5BUlkgOiBPX1dST05MWXxPX0FQUEVORHxPX0JJ TkFSWTsKKyAjZW5kaWYKKyAgIG91dHB1dCA9IGhpc3RvcnlfZmlsZW5hbWUgKGZpbGVuYW1lKTsK KysgIGZpbGUgPSBvdXRwdXQgPyBvcGVuIChvdXRwdXQsIG1vZGUsIDA2MDApIDogLTE7CisgICBy diA9IDA7CisgCistICBpZiAoKGZpbGUgPSBvcGVuIChvdXRwdXQsIG1vZGUsIDA2MDApKSA9PSAt MSkKKysgIGlmIChmaWxlID09IC0xKQorICAgICB7CisgICAgICAgRlJFRSAob3V0cHV0KTsKKyAg ICAgICByZXR1cm4gKGVycm5vKTsKK0BAIC01MTMsNyArNTIwLDcgQEAgbW1hcF9lcnJvcjoKKyAj ZWxzZQorICAgICBpZiAod3JpdGUgKGZpbGUsIGJ1ZmZlciwgYnVmZmVyX3NpemUpIDwgMCkKKyAg ICAgICBydiA9IGVycm5vOworLSAgICBmcmVlIChidWZmZXIpOworKyAgICB4ZnJlZSAoYnVmZmVy KTsKKyAjZW5kaWYKKyAgIH0KKyAKKy0tLSBhL3JlYWRsaW5lL2hpc3RsaWIuaAorKysrIGIvcmVh ZGxpbmUvaGlzdGxpYi5oCitAQCAtMSwyMyArMSwyMyBAQAorIC8qIGhpc3RsaWIuaCAtLSBpbnRl cm5hbCBkZWZpbml0aW9ucyBmb3IgdGhlIGhpc3RvcnkgbGlicmFyeS4gKi8KKy0vKiBDb3B5cmln aHQgKEMpIDE5ODksIDE5OTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAg VGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5ICh0aGUgTGlicmFyeSks IGEgc2V0IG9mCisrLyogQ29weXJpZ2h0IChDKSAxOTg5LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBHTlUgSGlzdG9yeSBM aWJyYXJ5IChIaXN0b3J5KSwgYSBzZXQgb2YKKyAgICByb3V0aW5lcyBmb3IgbWFuYWdpbmcgdGhl IHRleHQgb2YgcHJldmlvdXNseSB0eXBlZCBsaW5lcy4KKyAKKy0gICBUaGUgTGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAg SGlzdG9yeSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZl cnNpb24uCistCistICAgVGhlIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CistICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCistICAgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQK Ky0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5T RS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIEhpc3RvcnkgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBIaXN0b3J5LiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisgCisgI2lmICFkZWZpbmVkIChfSElT VExJQl9IXykKKyAjZGVmaW5lIF9ISVNUTElCX0hfCistLS0gYS9yZWFkbGluZS9oaXN0b3J5LmMK KysrKyBiL3JlYWRsaW5lL2hpc3RvcnkuYworQEAgLTEsMjQgKzEsMjMgQEAKKyAvKiBoaXN0b3J5 LmMgLS0gc3RhbmRhbG9uZSBoaXN0b3J5IGxpYnJhcnkgKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMp IDE5ODktMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmlnaHQg KEMpIDE5ODktMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBUaGlz IGZpbGUgY29udGFpbnMgdGhlIEdOVSBIaXN0b3J5IExpYnJhcnkgKHRoZSBMaWJyYXJ5KSwgYSBz ZXQgb2YKKysgICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIEdOVSBIaXN0b3J5IExpYnJhcnkgKEhp c3RvcnkpLCBhIHNldCBvZgorICAgIHJvdXRpbmVzIGZvciBtYW5hZ2luZyB0aGUgdGV4dCBvZiBw cmV2aW91c2x5IHR5cGVkIGxpbmVzLgorIAorLSAgIFRoZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBIaXN0b3J5IGlz IGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKysg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCist ICAgVGhlIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwgYnV0CistICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCistICAgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAgIEhpc3RvcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3 YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcg b3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5z ZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUg UGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysgICBhbG9uZyB3aXRoIEhpc3RvcnkuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAvKiBUaGUgZ29hbCBpcyB0byBtYWtlIHRoZSBpbXBsZW1l bnRhdGlvbiB0cmFuc3BhcmVudCwgc28gdGhhdCB5b3UKKyAgICBkb24ndCBoYXZlIHRvIGtub3cg d2hhdCBkYXRhIHR5cGVzIGFyZSB1c2VkLCBqdXN0IHdoYXQgZnVuY3Rpb25zCitAQCAtMTU4LDcg KzE1Nyw3IEBAIGhpc3Rvcnlfc2V0X3BvcyAocG9zKQorICAgcmV0dXJuICgxKTsKKyB9CisgIAor LS8qIFJldHVybiB0aGUgY3VycmVudCBoaXN0b3J5IGFycmF5LiAgVGhlIGNhbGxlciBoYXMgdG8g YmUgY2FyZWZ1bGwsIHNpbmNlIHRoaXMKKysvKiBSZXR1cm4gdGhlIGN1cnJlbnQgaGlzdG9yeSBh cnJheS4gIFRoZSBjYWxsZXIgaGFzIHRvIGJlIGNhcmVmdWwsIHNpbmNlIHRoaXMKKyAgICBpcyB0 aGUgYWN0dWFsIGFycmF5IG9mIGRhdGEsIGFuZCBjb3VsZCBiZSBiYXNoZWQgb3IgbWFkZSBjb3Jy dXB0IGVhc2lseS4KKyAgICBUaGUgYXJyYXkgaXMgdGVybWluYXRlZCB3aXRoIGEgTlVMTCBwb2lu dGVyLiAqLworIEhJU1RfRU5UUlkgKioKK0BAIC0yMDksNiArMjA4LDIyIEBAIGhpc3RvcnlfZ2V0 IChvZmZzZXQpCisgCQk6IHRoZV9oaXN0b3J5W2xvY2FsX2luZGV4XTsKKyB9CisgCisrSElTVF9F TlRSWSAqCisrYWxsb2NfaGlzdG9yeV9lbnRyeSAoc3RyaW5nLCB0cykKKysgICAgIGNoYXIgKnN0 cmluZzsKKysgICAgIGNoYXIgKnRzOworK3sKKysgIEhJU1RfRU5UUlkgKnRlbXA7CisrCisrICB0 ZW1wID0gKEhJU1RfRU5UUlkgKil4bWFsbG9jIChzaXplb2YgKEhJU1RfRU5UUlkpKTsKKysKKysg IHRlbXAtPmxpbmUgPSBzdHJpbmcgPyBzYXZlc3RyaW5nIChzdHJpbmcpIDogc3RyaW5nOworKyAg dGVtcC0+ZGF0YSA9IChjaGFyICopTlVMTDsKKysgIHRlbXAtPnRpbWVzdGFtcCA9IHRzOworKwor KyAgcmV0dXJuIHRlbXA7CisrfQorKworIHRpbWVfdAorIGhpc3RvcnlfZ2V0X3RpbWUgKGhpc3Qp CisgICAgICBISVNUX0VOVFJZICpoaXN0OworQEAgLTI5MCwxMSArMzA1LDcgQEAgYWRkX2hpc3Rv cnkgKHN0cmluZykKKyAJfQorICAgICB9CisgCistICB0ZW1wID0gKEhJU1RfRU5UUlkgKil4bWFs bG9jIChzaXplb2YgKEhJU1RfRU5UUlkpKTsKKy0gIHRlbXAtPmxpbmUgPSBzYXZlc3RyaW5nIChz dHJpbmcpOworLSAgdGVtcC0+ZGF0YSA9IChjaGFyICopTlVMTDsKKy0KKy0gIHRlbXAtPnRpbWVz dGFtcCA9IGhpc3RfaW5pdHRpbWUgKCk7CisrICB0ZW1wID0gYWxsb2NfaGlzdG9yeV9lbnRyeSAo c3RyaW5nLCBoaXN0X2luaXR0aW1lICgpKTsKKyAKKyAgIHRoZV9oaXN0b3J5W2hpc3RvcnlfbGVu Z3RoXSA9IChISVNUX0VOVFJZICopTlVMTDsKKyAgIHRoZV9oaXN0b3J5W2hpc3RvcnlfbGVuZ3Ro IC0gMV0gPSB0ZW1wOworQEAgLTMwNyw2ICszMTgsOCBAQCBhZGRfaGlzdG9yeV90aW1lIChzdHJp bmcpCisgeworICAgSElTVF9FTlRSWSAqaHM7CisgCisrICBpZiAoc3RyaW5nID09IDApCisrICAg IHJldHVybjsKKyAgIGhzID0gdGhlX2hpc3RvcnlbaGlzdG9yeV9sZW5ndGggLSAxXTsKKyAgIEZS RUUgKGhzLT50aW1lc3RhbXApOworICAgaHMtPnRpbWVzdGFtcCA9IHNhdmVzdHJpbmcgKHN0cmlu Zyk7CitAQCAtMzI1LDkgKzMzOCwyOSBAQCBmcmVlX2hpc3RvcnlfZW50cnkgKGhpc3QpCisgICBG UkVFIChoaXN0LT5saW5lKTsKKyAgIEZSRUUgKGhpc3QtPnRpbWVzdGFtcCk7CisgICB4ID0gaGlz dC0+ZGF0YTsKKy0gIGZyZWUgKGhpc3QpOworKyAgeGZyZWUgKGhpc3QpOworICAgcmV0dXJuICh4 KTsKKyB9CisrCisrSElTVF9FTlRSWSAqCisrY29weV9oaXN0b3J5X2VudHJ5IChoaXN0KQorKyAg ICAgSElTVF9FTlRSWSAqaGlzdDsKKyt7CisrICBISVNUX0VOVFJZICpyZXQ7CisrICBjaGFyICp0 czsKKysKKysgIGlmIChoaXN0ID09IDApCisrICAgIHJldHVybiBoaXN0OworKworKyAgcmV0ID0g YWxsb2NfaGlzdG9yeV9lbnRyeSAoaGlzdC0+bGluZSwgKGNoYXIgKilOVUxMKTsKKysKKysgIHRz ID0gaGlzdC0+dGltZXN0YW1wID8gc2F2ZXN0cmluZyAoaGlzdC0+dGltZXN0YW1wKSA6IGhpc3Qt PnRpbWVzdGFtcDsKKysgIHJldC0+dGltZXN0YW1wID0gdHM7CisrCisrICByZXQtPmRhdGEgPSBo aXN0LT5kYXRhOworKworKyAgcmV0dXJuIHJldDsKKyt9CisgICAKKyAvKiBNYWtlIHRoZSBoaXN0 b3J5IGVudHJ5IGF0IFdISUNIIGhhdmUgTElORSBhbmQgREFUQS4gIFRoaXMgcmV0dXJucworICAg IHRoZSBvbGQgZW50cnkgc28geW91IGNhbiBkaXNwb3NlIG9mIHRoZSBkYXRhLiAgSW4gdGhlIGNh c2Ugb2YgYW4KK0BAIC0zNTQsNiArMzg3LDUxIEBAIHJlcGxhY2VfaGlzdG9yeV9lbnRyeSAod2hp Y2gsIGxpbmUsIGRhdGEpCisgICByZXR1cm4gKG9sZF92YWx1ZSk7CisgfQorIAorKy8qIFJlcGxh Y2UgdGhlIERBVEEgaW4gdGhlIHNwZWNpZmllZCBoaXN0b3J5IGVudHJpZXMsIHJlcGxhY2luZyBP TEQgd2l0aAorKyAgIE5FVy4gIFdISUNIIHNheXMgd2hpY2ggb25lKHMpIHRvIHJlcGxhY2U6ICBX SElDSCA9PSAtMSBtZWFucyB0byByZXBsYWNlCisrICAgYWxsIG9mIHRoZSBoaXN0b3J5IGVudHJp ZXMgd2hlcmUgZW50cnktPmRhdGEgPT0gT0xEOyBXSElDSCA9PSAtMiBtZWFucworKyAgIHRvIHJl cGxhY2UgdGhlIGBuZXdlc3QnIGhpc3RvcnkgZW50cnkgd2hlcmUgZW50cnktPmRhdGEgPT0gT0xE OyBhbmQKKysgICBXSElDSCA+PSAwIG1lYW5zIHRvIHJlcGxhY2UgdGhhdCBwYXJ0aWN1bGFyIGhp c3RvcnkgZW50cnkncyBkYXRhLCBhcworKyAgIGxvbmcgYXMgaXQgbWF0Y2hlcyBPTEQuICovCisr dm9pZAorK3JlcGxhY2VfaGlzdG9yeV9kYXRhICh3aGljaCxvbGQsIG5ldykKKysgICAgIGludCB3 aGljaDsKKysgICAgIGhpc3RkYXRhX3QgKm9sZCwgKm5ldzsKKyt7CisrICBISVNUX0VOVFJZICpl bnRyeTsKKysgIHJlZ2lzdGVyIGludCBpLCBsYXN0OworKworKyAgaWYgKHdoaWNoIDwgLTIgfHwg d2hpY2ggPj0gaGlzdG9yeV9sZW5ndGggfHwgaGlzdG9yeV9sZW5ndGggPT0gMCB8fCB0aGVfaGlz dG9yeSA9PSAwKQorKyAgICByZXR1cm47CisrCisrICBpZiAod2hpY2ggPj0gMCkKKysgICAgewor KyAgICAgIGVudHJ5ID0gdGhlX2hpc3Rvcnlbd2hpY2hdOworKyAgICAgIGlmIChlbnRyeSAmJiBl bnRyeS0+ZGF0YSA9PSBvbGQpCisrCWVudHJ5LT5kYXRhID0gbmV3OworKyAgICAgIHJldHVybjsK KysgICAgfQorKworKyAgbGFzdCA9IC0xOworKyAgZm9yIChpID0gMDsgaSA8IGhpc3RvcnlfbGVu Z3RoOyBpKyspCisrICAgIHsKKysgICAgICBlbnRyeSA9IHRoZV9oaXN0b3J5W2ldOworKyAgICAg IGlmIChlbnRyeSA9PSAwKQorKwljb250aW51ZTsKKysgICAgICBpZiAoZW50cnktPmRhdGEgPT0g b2xkKQorKwl7CisrCSAgbGFzdCA9IGk7CisrCSAgaWYgKHdoaWNoID09IC0xKQorKwkgICAgZW50 cnktPmRhdGEgPSBuZXc7CisrCX0KKysgICAgfQorKyAgaWYgKHdoaWNoID09IC0yICYmIGxhc3Qg Pj0gMCkKKysgICAgeworKyAgICAgIGVudHJ5ID0gdGhlX2hpc3RvcnlbbGFzdF07CisrICAgICAg ZW50cnktPmRhdGEgPSBuZXc7CS8qIFhYWCAtIHdlIGRvbid0IGNoZWNrIGVudHJ5LT5vbGQgKi8K KysgICAgfQorK30gICAgICAKKysgIAorIC8qIFJlbW92ZSBoaXN0b3J5IGVsZW1lbnQgV0hJQ0gg ZnJvbSB0aGUgaGlzdG9yeS4gIFRoZSByZW1vdmVkCisgICAgZWxlbWVudCBpcyByZXR1cm5lZCB0 byB5b3Ugc28geW91IGNhbiBmcmVlIHRoZSBsaW5lLCBkYXRhLAorICAgIGFuZCBjb250YWluaW5n IHN0cnVjdHVyZS4gKi8KK0BAIC00MDYsNyArNDg0LDcgQEAgc3RpZmxlX2hpc3RvcnkgKG1heCkK KyAKKyAvKiBTdG9wIHN0aWZsaW5nIHRoZSBoaXN0b3J5LiAgVGhpcyByZXR1cm5zIHRoZSBwcmV2 aW91cyBtYXhpbXVtCisgICAgbnVtYmVyIG9mIGhpc3RvcnkgZW50cmllcy4gIFRoZSB2YWx1ZSBp cyBwb3NpdGl2ZSBpZiB0aGUgaGlzdG9yeQorLSAgIHdhcyBzdGlmbGVkLCAgbmVnYXRpdmUgaWYg aXQgd2Fzbid0LiAqLworKyAgIHdhcyBzdGlmbGVkLCBuZWdhdGl2ZSBpZiBpdCB3YXNuJ3QuICov CisgaW50CisgdW5zdGlmbGVfaGlzdG9yeSAoKQorIHsKKy0tLSBhL3JlYWRsaW5lL2hpc3Rvcnku aAorKysrIGIvcmVhZGxpbmUvaGlzdG9yeS5oCitAQCAtMSwyMyArMSwyMyBAQAorIC8qIGhpc3Rv cnkuaCAtLSB0aGUgbmFtZXMgb2YgZnVuY3Rpb25zIHRoYXQgeW91IGNhbiBjYWxsIGluIGhpc3Rv cnkuICovCistLyogQ29weXJpZ2h0IChDKSAxOTg5LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBHTlUgSGlzdG9yeSBMaWJy YXJ5ICh0aGUgTGlicmFyeSksIGEgc2V0IG9mCisrLyogQ29weXJpZ2h0IChDKSAxOTg5LTIwMDkg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGNvbnRhaW5z IHRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5IChIaXN0b3J5KSwgYSBzZXQgb2YKKyAgICByb3V0aW5l cyBmb3IgbWFuYWdpbmcgdGhlIHRleHQgb2YgcHJldmlvdXNseSB0eXBlZCBsaW5lcy4KKyAKKy0g ICBUaGUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisrICAgSGlzdG9yeSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24p CistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhlIExpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CistICAgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VCistICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQor LSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGgg R05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVk IENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0 aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1 OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAg IEhpc3RvcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBIaXN0b3J5 LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisgCisg I2lmbmRlZiBfSElTVE9SWV9IXworICNkZWZpbmUgX0hJU1RPUllfSF8KKy0tLSBhL3JlYWRsaW5l L2hpc3RzZWFyY2guYworKysrIGIvcmVhZGxpbmUvaGlzdHNlYXJjaC5jCitAQCAtMSwyNCArMSwy MyBAQAorIC8qIGhpc3RzZWFyY2guYyAtLSBzZWFyY2hpbmcgdGhlIGhpc3RvcnkgbGlzdC4gKi8K KyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkyLTIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBHTlUgSGlzdG9y eSBMaWJyYXJ5ICh0aGUgTGlicmFyeSksIGEgc2V0IG9mCisrICAgVGhpcyBmaWxlIGNvbnRhaW5z IHRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5IChIaXN0b3J5KSwgYSBzZXQgb2YKKyAgICByb3V0aW5l cyBmb3IgbWFuYWdpbmcgdGhlIHRleHQgb2YgcHJldmlvdXNseSB0eXBlZCBsaW5lcy4KKyAKKy0g ICBUaGUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisrICAgSGlzdG9yeSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24p CistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhlIExpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CistICAgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VCistICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQor LSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGgg R05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVk IENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0 aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1 OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAg IEhpc3RvcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBIaXN0b3J5 LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisgCisg I2RlZmluZSBSRUFETElORV9MSUJSQVJZCisgCistLS0gYS9yZWFkbGluZS9pbnB1dC5jCisrKysg Yi9yZWFkbGluZS9pbnB1dC5jCitAQCAtMSwyNCArMSwyNCBAQAorIC8qIGlucHV0LmMgLS0gY2hh cmFjdGVyIGlucHV0IGZ1bmN0aW9ucyBmb3IgcmVhZGxpbmUuICovCisgCistLyogQ29weXJpZ2h0 IChDKSAxOTk0LTIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJp Z2h0IChDKSAxOTk0LTIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkg Zm9yCistICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5k IGhpc3RvcnkgZWRpdGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRs aW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMg b2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAg CisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVh ZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5Cist ICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCist ICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0Uu ICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0 ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcg d2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKysqLworKworICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQorIAorICNpZiBkZWZpbmVkIChf X1RBTkRFTSkKK0BAIC00NSwxNCArNDUsNyBAQAorICMgIGluY2x1ZGUgImFuc2lfc3RkbGliLmgi CisgI2VuZGlmIC8qIEhBVkVfU1RETElCX0ggKi8KKyAKKy0jaWYgZGVmaW5lZCAoSEFWRV9TRUxF Q1QpCistIyAgaWYgIWRlZmluZWQgKEhBVkVfU1lTX1NFTEVDVF9IKSB8fCAhZGVmaW5lZCAoTV9V TklYKQorLSMgICAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKy0jICBlbmRpZgorLSNlbmRpZiAvKiBI QVZFX1NFTEVDVCAqLworLSNpZiBkZWZpbmVkIChIQVZFX1NZU19TRUxFQ1RfSCkKKy0jICBpbmNs dWRlIDxzeXMvc2VsZWN0Lmg+CistI2VuZGlmCisrI2luY2x1ZGUgInBvc2l4c2VsZWN0LmgiCisg CisgI2lmIGRlZmluZWQgKEZJT05SRUFEX0lOX1NZU19JT0NUTCkKKyAjICBpbmNsdWRlIDxzeXMv aW9jdGwuaD4KK0BAIC0xMzMsOCArMTI2LDExIEBAIHJsX2dldF9jaGFyIChrZXkpCisgICAgIHJl dHVybiAoMCk7CisgCisgICAqa2V5ID0gaWJ1ZmZlcltwb3BfaW5kZXgrK107CistCisrI2lmIDAK KyAgIGlmIChwb3BfaW5kZXggPj0gaWJ1ZmZlcl9sZW4pCisrI2Vsc2UKKysgIGlmIChwb3BfaW5k ZXggPiBpYnVmZmVyX2xlbikKKysjZW5kaWYKKyAgICAgcG9wX2luZGV4ID0gMDsKKyAKKyAgIHJl dHVybiAoMSk7CitAQCAtMTUxLDcgKzE0Nyw3IEBAIF9ybF91bmdldF9jaGFyIChrZXkpCisgICAg IHsKKyAgICAgICBwb3BfaW5kZXgtLTsKKyAgICAgICBpZiAocG9wX2luZGV4IDwgMCkKKy0JcG9w X2luZGV4ID0gaWJ1ZmZlcl9sZW4gLSAxOworKwlwb3BfaW5kZXggPSBpYnVmZmVyX2xlbjsKKyAg ICAgICBpYnVmZmVyW3BvcF9pbmRleF0gPSBrZXk7CisgICAgICAgcmV0dXJuICgxKTsKKyAgICAg fQorQEAgLTE3OSw2ICsxNzUsNyBAQCBybF9nYXRoZXJfdHlpICgpCisgICBzdHJ1Y3QgdGltZXZh bCB0aW1lb3V0OworICNlbmRpZgorIAorKyAgY2hhcnNfYXZhaWwgPSAwOworICAgdHR5ID0gZmls ZW5vIChybF9pbnN0cmVhbSk7CisgCisgI2lmIGRlZmluZWQgKEhBVkVfU0VMRUNUKQorQEAgLTE4 Niw4ICsxODMsNyBAQCBybF9nYXRoZXJfdHlpICgpCisgICBGRF9aRVJPICgmZXhjZXB0ZmRzKTsK KyAgIEZEX1NFVCAodHR5LCAmcmVhZGZkcyk7CisgICBGRF9TRVQgKHR0eSwgJmV4Y2VwdGZkcyk7 CistICB0aW1lb3V0LnR2X3NlYyA9IDA7CistICB0aW1lb3V0LnR2X3VzZWMgPSBfa2V5Ym9hcmRf aW5wdXRfdGltZW91dDsKKysgIFVTRUNfVE9fVElNRVZBTCAoX2tleWJvYXJkX2lucHV0X3RpbWVv dXQsIHRpbWVvdXQpOworICAgcmVzdWx0ID0gc2VsZWN0ICh0dHkgKyAxLCAmcmVhZGZkcywgKGZk X3NldCAqKU5VTEwsICZleGNlcHRmZHMsICZ0aW1lb3V0KTsKKyAgIGlmIChyZXN1bHQgPD0gMCkK KyAgICAgcmV0dXJuIDA7CS8qIE5vdGhpbmcgdG8gcmVhZC4gKi8KK0BAIC0yMjEsMTMgKzIxNywx MCBAQCBybF9nYXRoZXJfdHlpICgpCisgI2VuZGlmIC8qIE9fTkRFTEFZICovCisgCisgI2lmIGRl ZmluZWQgKF9fTUlOR1czMl9fKQorLSAgLyogV2UgdXNlIGdldGNoIHRvIHJlYWQgY29uc29sZSBp bnB1dCwgc28gdXNlIHRoZSBzYW1lCistICAgICBtZWNoYW5pc20gdG8gY2hlY2sgZm9yIG1vcmUu ICBPdGhlcndpc2UsIHdlIGRvbid0IGtub3cuICAqLworLSAgaWYgKGlzYXR0eSAoZmlsZW5vIChy bF9pbnN0cmVhbSkpKQorLSAgICBjaGFyc19hdmFpbCA9IF9rYmhpdCAoKTsKKy0gIGVsc2UKKy0g ICAgY2hhcnNfYXZhaWwgPSAwOworLSAgcmVzdWx0ID0gMDsKKysgIC8qIFVzZSBnZXRjaC9fa2Jo aXQgdG8gY2hlY2sgZm9yIGF2YWlsYWJsZSBjb25zb2xlIGlucHV0LCBpbiB0aGUgc2FtZSB3YXkK KysgICAgIHRoYXQgd2UgcmVhZCBpdCBub3JtYWxseS4gKi8KKysgICBjaGFyc19hdmFpbCA9IGlz YXR0eSAodHR5KSA/IF9rYmhpdCAoKSA6IDA7CisrICAgcmVzdWx0ID0gMDsKKyAjZW5kaWYKKyAK KyAgIC8qIElmIHRoZXJlJ3Mgbm90aGluZyBhdmFpbGFibGUsIGRvbid0IHdhc3RlIHRpbWUgdHJ5 aW5nIHRvIHJlYWQKK0BAIC0yNTEsOCArMjQ0LDEwIEBAIHJsX2dhdGhlcl90eWkgKCkKKyAgICAg eworICAgICAgIHdoaWxlIChjaGFyc19hdmFpbC0tKQorIAl7CisrCSAgUkxfQ0hFQ0tfU0lHTkFM UyAoKTsKKyAJICBrID0gKCpybF9nZXRjX2Z1bmN0aW9uKSAocmxfaW5zdHJlYW0pOworLQkgIHJs X3N0dWZmX2NoYXIgKGspOworKwkgIGlmIChybF9zdHVmZl9jaGFyIChrKSA9PSAwKQorKwkgICAg YnJlYWs7CQkJLyogc29tZSBwcm9ibGVtOyBubyBtb3JlIHJvb20gKi8KKyAJICBpZiAoayA9PSBO RVdMSU5FIHx8IGsgPT0gUkVUVVJOKQorIAkgICAgYnJlYWs7CisgCX0KK0BAIC0yNzMsNyArMjY4 LDcgQEAgcmxfc2V0X2tleWJvYXJkX2lucHV0X3RpbWVvdXQgKHUpCisgICBpbnQgbzsKKyAKKyAg IG8gPSBfa2V5Ym9hcmRfaW5wdXRfdGltZW91dDsKKy0gIGlmICh1ID4gMCkKKysgIGlmICh1ID49 IDApCisgICAgIF9rZXlib2FyZF9pbnB1dF90aW1lb3V0ID0gdTsKKyAgIHJldHVybiAobyk7Cisg fQorQEAgLTMxNiwxMCArMzExLDggQEAgX3JsX2lucHV0X2F2YWlsYWJsZSAoKQorICNlbmRpZgor IAorICNpZiBkZWZpbmVkIChfX01JTkdXMzJfXykKKy0gIC8qIFdlIHVzZSBnZXRjaCB0byByZWFk IGNvbnNvbGUgaW5wdXQsIHNvIHVzZSB0aGUgc2FtZQorLSAgICAgbWVjaGFuaXNtIHRvIGNoZWNr IGZvciBtb3JlLiAgT3RoZXJ3aXNlLCB3ZSBkb24ndCBrbm93LiAgKi8KKy0gIGlmIChpc2F0dHkg KGZpbGVubyAocmxfaW5zdHJlYW0pKSkKKy0gICAgcmV0dXJuIF9rYmhpdCAoKTsKKysgIGlmIChp c2F0dHkgKHR0eSkpCisrICAgIHJldHVybiAoX2tiaGl0ICgpKTsKKyAjZW5kaWYKKyAKKyAgIHJl dHVybiAwOworQEAgLTM1OCw3ICszNTEsNyBAQCBfcmxfaW5zZXJ0X3R5cGVpbiAoYykKKyAKKyAg IHN0cmluZ1tpXSA9ICdcMCc7CisgICBybF9pbnNlcnRfdGV4dCAoc3RyaW5nKTsKKy0gIGZyZWUg KHN0cmluZyk7CisrICB4ZnJlZSAoc3RyaW5nKTsKKyB9CisgCisgLyogQWRkIEtFWSB0byB0aGUg YnVmZmVyIG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVhZC4gIFJldHVybnMgMSBpZiB0aGUKK0BAIC0z NzcsNyArMzcwLDExIEBAIHJsX3N0dWZmX2NoYXIgKGtleSkKKyAgICAgICBSTF9TRVRTVEFURSAo UkxfU1RBVEVfSU5QVVRQRU5ESU5HKTsKKyAgICAgfQorICAgaWJ1ZmZlcltwdXNoX2luZGV4Kytd ID0ga2V5OworKyNpZiAwCisgICBpZiAocHVzaF9pbmRleCA+PSBpYnVmZmVyX2xlbikKKysjZWxz ZQorKyAgaWYgKHB1c2hfaW5kZXggPiBpYnVmZmVyX2xlbikKKysjZW5kaWYKKyAgICAgcHVzaF9p bmRleCA9IDA7CisgCisgICByZXR1cm4gMTsKK0BAIC00MzAsMjIgKzQyNywyNiBAQCBybF9yZWFk X2tleSAoKQorICAgICAgIC8qIElmIHRoZSB1c2VyIGhhcyBhbiBldmVudCBmdW5jdGlvbiwgdGhl biBjYWxsIGl0IHBlcmlvZGljYWxseS4gKi8KKyAgICAgICBpZiAocmxfZXZlbnRfaG9vaykKKyAJ eworLQkgIHdoaWxlIChybF9ldmVudF9ob29rICYmIHJsX2dldF9jaGFyICgmYykgPT0gMCkKKysJ ICB3aGlsZSAocmxfZXZlbnRfaG9vaykKKyAJICAgIHsKKy0JICAgICAgKCpybF9ldmVudF9ob29r KSAoKTsKKy0JICAgICAgaWYgKHJsX2RvbmUpCQkvKiBYWFggLSBleHBlcmltZW50YWwgKi8KKy0J CXJldHVybiAoJ1xuJyk7CisgCSAgICAgIGlmIChybF9nYXRoZXJfdHlpICgpIDwgMCkJLyogWFhY IC0gRUlPICovCisgCQl7CisgCQkgIHJsX2RvbmUgPSAxOworIAkJICByZXR1cm4gKCdcbicpOwor IAkJfQorKwkgICAgICBSTF9DSEVDS19TSUdOQUxTICgpOworKwkgICAgICBpZiAocmxfZ2V0X2No YXIgKCZjKSAhPSAwKQorKwkJYnJlYWs7CisrCSAgICAgIGlmIChybF9kb25lKQkJLyogWFhYIC0g ZXhwZXJpbWVudGFsICovCisrCQlyZXR1cm4gKCdcbicpOworKwkgICAgICAoKnJsX2V2ZW50X2hv b2spICgpOworIAkgICAgfQorIAl9CisgICAgICAgZWxzZQorIAl7CisgCSAgaWYgKHJsX2dldF9j aGFyICgmYykgPT0gMCkKKyAJICAgIGMgPSAoKnJsX2dldGNfZnVuY3Rpb24pIChybF9pbnN0cmVh bSk7CisrCSAgUkxfQ0hFQ0tfU0lHTkFMUyAoKTsKKyAJfQorICAgICB9CisgCitAQCAtNDYxLDYg KzQ2Miw4IEBAIHJsX2dldGMgKHN0cmVhbSkKKyAKKyAgIHdoaWxlICgxKQorICAgICB7CisrICAg ICAgUkxfQ0hFQ0tfU0lHTkFMUyAoKTsKKysKKyAjaWYgZGVmaW5lZCAoX19NSU5HVzMyX18pCisg ICAgICAgaWYgKGlzYXR0eSAoZmlsZW5vIChzdHJlYW0pKSkKKyAJcmV0dXJuIChnZXRjaCAoKSk7 CitAQCAtNTA2LDcgKzUwOSw3IEBAIHJsX2dldGMgKHN0cmVhbSkKKyAJIHRoaXMgaXMgc2ltcGx5 IGFuIGludGVycnVwdGVkIHN5c3RlbSBjYWxsIHRvIHJlYWQgKCkuCisgCSBPdGhlcndpc2UsIHNv bWUgZXJyb3Igb2N1cnJlZCwgYWxzbyBzaWduaWZ5aW5nIEVPRi4gKi8KKyAgICAgICBpZiAoZXJy bm8gIT0gRUlOVFIpCistCXJldHVybiAoRU9GKTsKKysJcmV0dXJuIChSTF9JU1NUQVRFIChSTF9T VEFURV9SRUFEQ01EKSA/IFJFQURFUlIgOiBFT0YpOworICAgICB9CisgfQorIAorQEAgLTUxNywy MCArNTIwLDI2IEBAIF9ybF9yZWFkX21iY2hhciAobWJjaGFyLCBzaXplKQorICAgICAgY2hhciAq bWJjaGFyOworICAgICAgaW50IHNpemU7CisgeworLSAgaW50IG1iX2xlbiA9IDA7CisrICBpbnQg bWJfbGVuLCBjOworICAgc2l6ZV90IG1iY2hhcl9ieXRlc19sZW5ndGg7CisgICB3Y2hhcl90IHdj OworICAgbWJzdGF0ZV90IHBzLCBwc19iYWNrOworIAorICAgbWVtc2V0KCZwcywgMCwgc2l6ZW9m IChtYnN0YXRlX3QpKTsKKyAgIG1lbXNldCgmcHNfYmFjaywgMCwgc2l6ZW9mIChtYnN0YXRlX3Qp KTsKKy0gIAorKworKyAgbWJfbGVuID0gMDsgIAorICAgd2hpbGUgKG1iX2xlbiA8IHNpemUpCisg ICAgIHsKKyAgICAgICBSTF9TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQpOworLSAgICAgIG1i Y2hhclttYl9sZW4rK10gPSBybF9yZWFkX2tleSAoKTsKKysgICAgICBjID0gcmxfcmVhZF9rZXkg KCk7CisgICAgICAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQpOworIAorKyAgICAg IGlmIChjIDwgMCkKKysJYnJlYWs7CisrCisrICAgICAgbWJjaGFyW21iX2xlbisrXSA9IGM7Cisr CisgICAgICAgbWJjaGFyX2J5dGVzX2xlbmd0aCA9IG1icnRvd2MgKCZ3YywgbWJjaGFyLCBtYl9s ZW4sICZwcyk7CisgICAgICAgaWYgKG1iY2hhcl9ieXRlc19sZW5ndGggPT0gKHNpemVfdCkoLTEp KQorIAlicmVhazsJCS8qIGludmFsaWQgYnl0ZSBzZXF1ZW5jZSBmb3IgdGhlIGN1cnJlbnQgbG9j YWxlICovCitAQCAtNTU0LDIxICs1NjMsMjEgQEAgX3JsX3JlYWRfbWJjaGFyIChtYmNoYXIsIHNp emUpCisgfQorIAorIC8qIFJlYWQgYSBtdWx0aWJ5dGUtY2hhcmFjdGVyIHN0cmluZyB3aG9zZSBm aXJzdCBjaGFyYWN0ZXIgaXMgRklSU1QgaW50bworLSAgIHRoZSBidWZmZXIgTUIgb2YgbGVuZ3Ro IE1CTEVOLiAgUmV0dXJucyB0aGUgbGFzdCBjaGFyYWN0ZXIgcmVhZCwgd2hpY2gKKysgICB0aGUg YnVmZmVyIE1CIG9mIGxlbmd0aCBNTEVOLiAgUmV0dXJucyB0aGUgbGFzdCBjaGFyYWN0ZXIgcmVh ZCwgd2hpY2gKKyAgICBtYXkgYmUgRklSU1QuICBVc2VkIGJ5IHRoZSBzZWFyY2ggZnVuY3Rpb25z LCBhbW9uZyBvdGhlcnMuICBWZXJ5IHNpbWlsYXIKKyAgICB0byBfcmxfcmVhZF9tYmNoYXIuICov CisgaW50CistX3JsX3JlYWRfbWJzdHJpbmcgKGZpcnN0LCBtYiwgbWJsZW4pCisrX3JsX3JlYWRf bWJzdHJpbmcgKGZpcnN0LCBtYiwgbWxlbikKKyAgICAgIGludCBmaXJzdDsKKyAgICAgIGNoYXIg Km1iOworLSAgICAgaW50IG1ibGVuOworKyAgICAgaW50IG1sZW47CisgeworICAgaW50IGksIGM7 CisgICBtYnN0YXRlX3QgcHM7CisgCisgICBjID0gZmlyc3Q7CistICBtZW1zZXQgKG1iLCAwLCBt Ymxlbik7CistICBmb3IgKGkgPSAwOyBpIDwgbWJsZW47IGkrKykKKysgIG1lbXNldCAobWIsIDAs IG1sZW4pOworKyAgZm9yIChpID0gMDsgYyA+PSAwICYmIGkgPCBtbGVuOyBpKyspCisgICAgIHsK KyAgICAgICBtYltpXSA9IChjaGFyKWM7CisgICAgICAgbWVtc2V0ICgmcHMsIDAsIHNpemVvZiAo bWJzdGF0ZV90KSk7CistLS0gYS9yZWFkbGluZS9pc2VhcmNoLmMKKysrKyBiL3JlYWRsaW5lL2lz ZWFyY2guYworQEAgLTEsMjkgKzEsMzAgQEAKKysvKiBpc2VhcmNoLmMgLSBpbmNyZW1lbnRhbCBz ZWFyY2hpbmcgKi8KKysKKyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisgLyoJCQkJCQkJCSAgICAqLworIC8qCQkJ SS1TZWFyY2ggYW5kIFNlYXJjaGluZwkJCSAgICAqLworIC8qCQkJCQkJCQkgICAgKi8KKyAvKiAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBSZWFkbGlu ZSBMaWJyYXJ5ICh0aGUgTGlicmFyeSksIGEgc2V0IG9mCistICAgcm91dGluZXMgZm9yIHByb3Zp ZGluZyBFbWFjcyBzdHlsZSBsaW5lIGlucHV0IHRvIHByb2dyYW1zIHRoYXQgYXNrCistICAgZm9y IGl0LgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAo UmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGgg aW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKKyAKKy0gICBUaGUg TGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAg IGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorLSAgIFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO VQorLSAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBU aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBz b2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZ SU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxp Y2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVt cGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBSZWFk bGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisrCisgI2Rl ZmluZSBSRUFETElORV9MSUJSQVJZCisgCisgI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCitA QCAtNjgsMTQgKzY5LDE0IEBAIHN0YXRpYyB2b2lkIF9ybF9pc2VhcmNoX2ZpbmkgUEFSQU1TKChf cmxfc2VhcmNoX2N4dCAqKSk7Cisgc3RhdGljIGludCBfcmxfaXNlYXJjaF9jbGVhbnVwIFBBUkFN UygoX3JsX3NlYXJjaF9jeHQgKiwgaW50KSk7CisgCisgLyogTGFzdCBsaW5lIGZvdW5kIGJ5IHRo ZSBjdXJyZW50IGluY3JlbWVudGFsIHNlYXJjaCwgc28gd2UgZG9uJ3QgYGZpbmQnCistICAgaWRl bnRpY2FsIGxpbmVzIG1hbnkgdGltZXMgaW4gYSByb3cuICovCistc3RhdGljIGNoYXIgKnByZXZf bGluZV9mb3VuZDsKKysgICBpZGVudGljYWwgbGluZXMgbWFueSB0aW1lcyBpbiBhIHJvdy4gIE5v dyBwYXJ0IG9mIGlzZWFyY2ggY29udGV4dC4gKi8KKysvKiBzdGF0aWMgY2hhciAqcHJldl9saW5l X2ZvdW5kOyAqLworIAorIC8qIExhc3Qgc2VhcmNoIHN0cmluZyBhbmQgaXRzIGxlbmd0aC4gKi8K KyBzdGF0aWMgY2hhciAqbGFzdF9pc2VhcmNoX3N0cmluZzsKKyBzdGF0aWMgaW50IGxhc3RfaXNl YXJjaF9zdHJpbmdfbGVuOworIAorLXN0YXRpYyBjaGFyICpkZWZhdWx0X2lzZWFyY2hfdGVybWlu YXRvcnMgPSAiXDAzM1wwMTIiOworK3N0YXRpYyBjaGFyICogY29uc3QgZGVmYXVsdF9pc2VhcmNo X3Rlcm1pbmF0b3JzID0gIlwwMzNcMDEyIjsKKyAKKyBfcmxfc2VhcmNoX2N4dCAqCisgX3JsX3Nj eHRfYWxsb2MgKHR5cGUsIGZsYWdzKQorQEAgLTEwMyw2ICsxMDQsOSBAQCBfcmxfc2N4dF9hbGxv YyAodHlwZSwgZmxhZ3MpCisgCisgICBjeHQtPnNhdmVfdW5kb19saXN0ID0gMDsKKyAKKysgIGN4 dC0+a2V5bWFwID0gX3JsX2tleW1hcDsKKysgIGN4dC0+b2tleW1hcCA9IF9ybF9rZXltYXA7Cisr CisgICBjeHQtPmhpc3RvcnlfcG9zID0gMDsKKyAgIGN4dC0+ZGlyZWN0aW9uID0gMDsKKyAKK0BA IC0xMjUsNyArMTI5LDcgQEAgX3JsX3NjeHRfZGlzcG9zZSAoY3h0LCBmbGFncykKKyAgIEZSRUUg KGN4dC0+YWxsb2NhdGVkX2xpbmUpOworICAgRlJFRSAoY3h0LT5saW5lcyk7CisgCistICBmcmVl IChjeHQpOworKyAgeGZyZWUgKGN4dCk7CisgfQorIAorIC8qIFNlYXJjaCBiYWNrd2FyZHMgdGhy b3VnaCB0aGUgaGlzdG9yeSBsb29raW5nIGZvciBhIHN0cmluZyB3aGljaCBpcyB0eXBlZAorQEAg LTE5Miw3ICsxOTYsNyBAQCBybF9kaXNwbGF5X3NlYXJjaCAoc2VhcmNoX3N0cmluZywgcmV2ZXJz ZV9wLCB3aGVyZSkKKyAgIHN0cmNweSAobWVzc2FnZSArIG1zZ2xlbiwgIic6ICIpOworIAorICAg cmxfbWVzc2FnZSAoIiVzIiwgbWVzc2FnZSk7CistICBmcmVlIChtZXNzYWdlKTsKKysgIHhmcmVl IChtZXNzYWdlKTsKKyAgICgqcmxfcmVkaXNwbGF5X2Z1bmN0aW9uKSAoKTsKKyB9CisgCitAQCAt MzI3LDExICszMzEsMzAgQEAgX3JsX2lzZWFyY2hfZGlzcGF0Y2ggKGN4dCwgYykKKyAgIHJsX2Nv bW1hbmRfZnVuY190ICpmOworIAorICAgZiA9IChybF9jb21tYW5kX2Z1bmNfdCAqKU5VTEw7Cist IAorLSAvKiBUcmFuc2xhdGUgdGhlIGtleXMgd2UgZG8gc29tZXRoaW5nIHdpdGggdG8gb3Bjb2Rl cy4gKi8KKy0gIGlmIChjID49IDAgJiYgX3JsX2tleW1hcFtjXS50eXBlID09IElTRlVOQykKKysK KysgIGlmIChjIDwgMCkKKysgICAgeworKyAgICAgIGN4dC0+c2ZsYWdzIHw9IFNGX0ZBSUxFRDsK KysgICAgICBjeHQtPmhpc3RvcnlfcG9zID0gY3h0LT5sYXN0X2ZvdW5kX2xpbmU7CisrICAgICAg cmV0dXJuIC0xOworKyAgICB9CisrCisrICAvKiBJZiB3ZSBhcmUgbW92aW5nIGludG8gYSBuZXcg a2V5bWFwLCBtb2RpZnkgY3h0LT5rZXltYXAgYW5kIGdvIG9uLgorKyAgICAgVGhpcyBjYW4gYmUg YSBwcm9ibGVtIGlmIGMgPT0gRVNDIGFuZCB3ZSB3YW50IHRvIHRlcm1pbmF0ZSB0aGUKKysgICAg IGluY3JlbWVudGFsIHNlYXJjaCwgc28gd2UgY2hlY2sgKi8KKysgIGlmIChjID49IDAgJiYgY3h0 LT5rZXltYXBbY10udHlwZSA9PSBJU0tNQVAgJiYgc3RyY2hyIChjeHQtPnNlYXJjaF90ZXJtaW5h dG9ycywgY3h0LT5sYXN0YykgPT0gMCkKKyAgICAgeworLSAgICAgIGYgPSBfcmxfa2V5bWFwW2Nd LmZ1bmN0aW9uOworKyAgICAgIGN4dC0+a2V5bWFwID0gRlVOQ1RJT05fVE9fS0VZTUFQIChjeHQt PmtleW1hcCwgYyk7CisrICAgICAgY3h0LT5zZmxhZ3MgfD0gU0ZfQ0hHS01BUDsKKysgICAgICAv KiBYWFggLSB3ZSBzaG91bGQgcHJvYmFibHkgc2F2ZSB0aGlzIHNlcXVlbmNlLCBzbyB3ZSBjYW4g ZG8KKysJIHNvbWV0aGluZyB1c2VmdWwgaWYgdGhpcyBkb2Vzbid0IGVuZCB1cCBtYXBwaW5nIHRv IGEgY29tbWFuZC4gKi8KKysgICAgICByZXR1cm4gMTsKKysgICAgfQorKworKyAgLyogVHJhbnNs YXRlIHRoZSBrZXlzIHdlIGRvIHNvbWV0aGluZyB3aXRoIHRvIG9wY29kZXMuICovCisrICBpZiAo YyA+PSAwICYmIGN4dC0+a2V5bWFwW2NdLnR5cGUgPT0gSVNGVU5DKQorKyAgICB7CisrICAgICAg ZiA9IGN4dC0+a2V5bWFwW2NdLmZ1bmN0aW9uOworIAorICAgICAgIGlmIChmID09IHJsX3JldmVy c2Vfc2VhcmNoX2hpc3RvcnkpCisgCWN4dC0+bGFzdGMgPSAoY3h0LT5zZmxhZ3MgJiBTRl9SRVZF UlNFKSA/IC0xIDogLTI7CitAQCAtMzM5LDE5ICszNjIsMjcgQEAgX3JsX2lzZWFyY2hfZGlzcGF0 Y2ggKGN4dCwgYykKKyAJY3h0LT5sYXN0YyA9IChjeHQtPnNmbGFncyAmIFNGX1JFVkVSU0UpID8g LTIgOiAtMTsKKyAgICAgICBlbHNlIGlmIChmID09IHJsX3J1Ym91dCkKKyAJY3h0LT5sYXN0YyA9 IC0zOworLSAgICAgIGVsc2UgaWYgKGMgPT0gQ1RSTCAoJ0cnKSkKKysgICAgICBlbHNlIGlmIChj ID09IENUUkwgKCdHJykgfHwgZiA9PSBybF9hYm9ydCkKKyAJY3h0LT5sYXN0YyA9IC00OworLSAg ICAgIGVsc2UgaWYgKGMgPT0gQ1RSTCAoJ1cnKSkJLyogWFhYICovCisrICAgICAgZWxzZSBpZiAo YyA9PSBDVFJMICgnVycpIHx8IGYgPT0gcmxfdW5peF93b3JkX3J1Ym91dCkJLyogWFhYICovCisg CWN4dC0+bGFzdGMgPSAtNTsKKy0gICAgICBlbHNlIGlmIChjID09IENUUkwgKCdZJykpCS8qIFhY WCAqLworKyAgICAgIGVsc2UgaWYgKGMgPT0gQ1RSTCAoJ1knKSB8fCBmID09IHJsX3lhbmspCS8q IFhYWCAqLworIAljeHQtPmxhc3RjID0gLTY7CisgICAgIH0KKyAKKysgIC8qIElmIHdlIGNoYW5n ZWQgdGhlIGtleW1hcCBlYXJsaWVyIHdoaWxlIHRyYW5zbGF0aW5nIGEga2V5IHNlcXVlbmNlIGlu dG8KKysgICAgIGEgY29tbWFuZCwgcmVzdG9yZSBpdCBub3cgdGhhdCB3ZSd2ZSBzdWNjZWVkZWQu ICovCisrICBpZiAoY3h0LT5zZmxhZ3MgJiBTRl9DSEdLTUFQKQorKyAgICB7CisrICAgICAgY3h0 LT5rZXltYXAgPSBjeHQtPm9rZXltYXA7CisrICAgICAgY3h0LT5zZmxhZ3MgJj0gflNGX0NIR0tN QVA7CisrICAgIH0KKysKKyAgIC8qIFRoZSBjaGFyYWN0ZXJzIGluIGlzZWFyY2hfdGVybWluYXRv cnMgKHNldCBmcm9tIHRoZSB1c2VyLXNldHRhYmxlCisgICAgICB2YXJpYWJsZSBpc2VhcmNoLXRl cm1pbmF0b3JzKSBhcmUgdXNlZCB0byB0ZXJtaW5hdGUgdGhlIHNlYXJjaCBidXQKKyAgICAgIG5v dCBzdWJzZXF1ZW50bHkgZXhlY3V0ZSB0aGUgY2hhcmFjdGVyIGFzIGEgY29tbWFuZC4gIFRoZSBk ZWZhdWx0CisgICAgICB2YWx1ZSBpcyAiXDAzM1wwMTIiIChFU0MgYW5kIEMtSikuICovCistICBp ZiAoc3RyY2hyIChjeHQtPnNlYXJjaF90ZXJtaW5hdG9ycywgY3h0LT5sYXN0YykpCisrICBpZiAo Y3h0LT5sYXN0YyA+IDAgJiYgc3RyY2hyIChjeHQtPnNlYXJjaF90ZXJtaW5hdG9ycywgY3h0LT5s YXN0YykpCisgICAgIHsKKyAgICAgICAvKiBFU0Mgc3RpbGwgdGVybWluYXRlcyB0aGUgc2VhcmNo LCBidXQgaWYgdGhlcmUgaXMgcGVuZGluZworIAkgaW5wdXQgb3IgaWYgaW5wdXQgYXJyaXZlcyB3 aXRoaW4gMC4xIHNlY29uZHMgKG9uIHN5c3RlbXMKK0BAIC0zNzUsNyArNDA2LDcgQEAgX3JsX2lz ZWFyY2hfZGlzcGF0Y2ggKGN4dCwgYykKKyAgICAgeworICAgICAgIGlmIChjeHQtPmxhc3RjID49 IDAgJiYgKGN4dC0+bWJbMF0gJiYgY3h0LT5tYlsxXSA9PSAnXDAnKSAmJiBFTkRTUkNIX0NIQVIg KGN4dC0+bGFzdGMpKQorIAl7CistCSAgLyogVGhpcyBzZXRzIHJsX3BlbmRpbmdfaW5wdXQgdG8g YzsgaXQgd2lsbCBiZSBwaWNrZWQgdXAgdGhlIG5leHQKKysJICAvKiBUaGlzIHNldHMgcmxfcGVu ZGluZ19pbnB1dCB0byBMQVNUQzsgaXQgd2lsbCBiZSBwaWNrZWQgdXAgdGhlIG5leHQKKyAJICAg ICB0aW1lIHJsX3JlYWRfa2V5IGlzIGNhbGxlZC4gKi8KKyAJICBybF9leGVjdXRlX25leHQgKGN4 dC0+bGFzdGMpOworIAkgIHJldHVybiAoMCk7CistLS0gYS9yZWFkbGluZS9rZXltYXBzLmMKKysr KyBiL3JlYWRsaW5lL2tleW1hcHMuYworQEAgLTEsMjMgKzEsMjQgQEAKKyAvKiBrZXltYXBzLmMg LS0gRnVuY3Rpb25zIGFuZCBrZXltYXBzIGZvciB0aGUgR05VIFJlYWRsaW5lIGxpYnJhcnkuICov CisgCistLyogQ29weXJpZ2h0IChDKSAxOTg4LDE5ODkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTg4LDE5ODktMjAwOSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKyAKKy0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgUmVhZGxpbmUs IGEgbGlicmFyeSBmb3IgcmVhZGluZyBsaW5lcworLSAgIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2 ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVh ZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRp dGluZy4gICAgICAKKyAKKy0gICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CistICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCistICAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRp b24pIGFueQorLSAgIGxhdGVyIHZlcnNpb24uCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2Fy ZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor IAorLSAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsIGJ1dAorLSAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorLSAgIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKy0gICBhbG9uZyB3aXRoIFJlYWRsaW5lOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKy0gICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1w bGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgYWxvbmcg d2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKysqLworKworICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQorIAorICNpZiBkZWZpbmVkIChI QVZFX0NPTkZJR19IKQorQEAgLTU2LDggKzU3LDkgQEAgS2V5bWFwCisgcmxfbWFrZV9iYXJlX2tl eW1hcCAoKQorIHsKKyAgIHJlZ2lzdGVyIGludCBpOworLSAgS2V5bWFwIGtleW1hcCA9IChLZXlt YXApeG1hbGxvYyAoS0VZTUFQX1NJWkUgKiBzaXplb2YgKEtFWU1BUF9FTlRSWSkpOworKyAgS2V5 bWFwIGtleW1hcDsKKyAKKysgIGtleW1hcCA9IChLZXltYXApeG1hbGxvYyAoS0VZTUFQX1NJWkUg KiBzaXplb2YgKEtFWU1BUF9FTlRSWSkpOworICAgZm9yIChpID0gMDsgaSA8IEtFWU1BUF9TSVpF OyBpKyspCisgICAgIHsKKyAgICAgICBrZXltYXBbaV0udHlwZSA9IElTRlVOQzsKK0BAIC03NSw3 ICs3Nyw4IEBAIHJsX21ha2VfYmFyZV9rZXltYXAgKCkKKyAgIHJldHVybiAoa2V5bWFwKTsKKyB9 CisgCistLyogUmV0dXJuIGEgbmV3IGtleW1hcCB3aGljaCBpcyBhIGNvcHkgb2YgTUFQLiAqLwor Ky8qIFJldHVybiBhIG5ldyBrZXltYXAgd2hpY2ggaXMgYSBjb3B5IG9mIE1BUC4gIEp1c3QgY29w aWVzIHBvaW50ZXJzLCBkb2VzCisrICAgbm90IGNvcHkgdGV4dCBvZiBtYWNyb3Mgb3IgZGVzY2Vu ZCBpbnRvIGNoaWxkIGtleW1hcHMuICovCisgS2V5bWFwCisgcmxfY29weV9rZXltYXAgKG1hcCkK KyAgICAgIEtleW1hcCBtYXA7CitAQCAtMTI3LDcgKzEzMCw3IEBAIHJsX2Rpc2NhcmRfa2V5bWFw IChtYXApCisgeworICAgaW50IGk7CisgCistICBpZiAoIW1hcCkKKysgIGlmIChtYXAgPT0gMCkK KyAgICAgcmV0dXJuOworIAorICAgZm9yIChpID0gMDsgaSA8IEtFWU1BUF9TSVpFOyBpKyspCitA QCAtMTM5LDExICsxNDIsMjEgQEAgcmxfZGlzY2FyZF9rZXltYXAgKG1hcCkKKyAKKyAJY2FzZSBJ U0tNQVA6CisgCSAgcmxfZGlzY2FyZF9rZXltYXAgKChLZXltYXApbWFwW2ldLmZ1bmN0aW9uKTsK KysJICB4ZnJlZSAoKGNoYXIgKiltYXBbaV0uZnVuY3Rpb24pOworIAkgIGJyZWFrOworIAorIAlj YXNlIElTTUFDUjoKKy0JICBmcmVlICgoY2hhciAqKW1hcFtpXS5mdW5jdGlvbik7CisrCSAgeGZy ZWUgKChjaGFyICopbWFwW2ldLmZ1bmN0aW9uKTsKKyAJICBicmVhazsKKyAJfQorICAgICB9Cisg fQorKworKy8qIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRoYXQgZGlzY2FyZHMsIHRoZW4gZnJlZXMs IE1BUC4gKi8KKyt2b2lkCisrcmxfZnJlZV9rZXltYXAgKG1hcCkKKysgICAgIEtleW1hcCBtYXA7 CisreworKyAgcmxfZGlzY2FyZF9rZXltYXAgKG1hcCk7CisrICB4ZnJlZSAoKGNoYXIgKiltYXAp OworK30KKy0tLSBhL3JlYWRsaW5lL2tleW1hcHMuaAorKysrIGIvcmVhZGxpbmUva2V5bWFwcy5o CitAQCAtMiwyMyArMiwyMiBAQAorIAorIC8qIENvcHlyaWdodCAoQykgMTk4NywgMTk4OSwgMTk5 MiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKKy0gICByZWFkaW5n IGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5n LgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVh ZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50 ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKKyAKKy0gICBUaGUgR05V IFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFkbGluZSBpcyBmcmVlIHNv ZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0gICBvZiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAg UmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBp cyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkg a2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QK Ky0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisgCisgI2lm bmRlZiBfS0VZTUFQU19IXworICNkZWZpbmUgX0tFWU1BUFNfSF8KK0BAIC01MywxMSArNTIsNiBA QCB0eXBlZGVmIHN0cnVjdCBfa2V5bWFwX2VudHJ5IHsKKyAjZGVmaW5lIEtFWU1BUF9TSVpFIDI1 NworICNkZWZpbmUgQU5ZT1RIRVJLRVkgS0VZTUFQX1NJWkUtMQorIAorLS8qIEkgd2FudGVkIHRv IG1ha2UgdGhlIGFib3ZlIHN0cnVjdHVyZSBjb250YWluIGEgdW5pb24gb2Y6CistICAgdW5pb24g eyBybF9jb21tYW5kX2Z1bmNfdCAqZnVuY3Rpb247IHN0cnVjdCBfa2V5bWFwX2VudHJ5ICprZXlt YXA7IH0gdmFsdWU7CistICAgYnV0IHRoaXMgbWFkZSBpdCBpbXBvc3NpYmxlIGZvciBtZSB0byBj cmVhdGUgYSBzdGF0aWMgYXJyYXkuCistICAgTWF5YmUgSSBuZWVkIEMgbGVzc29ucy4gKi8KKy0K KyB0eXBlZGVmIEtFWU1BUF9FTlRSWSBLRVlNQVBfRU5UUllfQVJSQVlbS0VZTUFQX1NJWkVdOwor IHR5cGVkZWYgS0VZTUFQX0VOVFJZICpLZXltYXA7CisgCistLS0gYS9yZWFkbGluZS9raWxsLmMK KysrKyBiL3JlYWRsaW5lL2tpbGwuYworQEAgLTIsMjMgKzIsMjMgQEAKKyAKKyAvKiBDb3B5cmln aHQgKEMpIDE5OTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCist ICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3Rv cnkgZWRpdGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExp YnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4 dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCisgCist ICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUg aXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor KyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2Yg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMg Z2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5 b3UgZG8gbm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAs IEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBS ZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysq LworKworICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQorIAorICNpZiBkZWZpbmVkIChIQVZFX0NP TkZJR19IKQorQEAgLTExNSw3ICsxMTUsNyBAQCBfcmxfY29weV90b19raWxsX3JpbmcgKHRleHQs IGFwcGVuZCkKKyAJICBpZiAoc2xvdCA9PSBybF9tYXhfa2lsbHMpCisgCSAgICB7CisgCSAgICAg IHJlZ2lzdGVyIGludCBpOworLQkgICAgICBmcmVlIChybF9raWxsX3JpbmdbMF0pOworKwkgICAg ICB4ZnJlZSAocmxfa2lsbF9yaW5nWzBdKTsKKyAJICAgICAgZm9yIChpID0gMDsgaSA8IHNsb3Q7 IGkrKykKKyAJCXJsX2tpbGxfcmluZ1tpXSA9IHJsX2tpbGxfcmluZ1tpICsgMV07CisgCSAgICB9 CitAQCAtMTQ2LDggKzE0Niw4IEBAIF9ybF9jb3B5X3RvX2tpbGxfcmluZyAodGV4dCwgYXBwZW5k KQorIAkgIHN0cmNweSAobmV3LCB0ZXh0KTsKKyAJICBzdHJjYXQgKG5ldywgb2xkKTsKKyAJfQor LSAgICAgIGZyZWUgKG9sZCk7CistICAgICAgZnJlZSAodGV4dCk7CisrICAgICAgeGZyZWUgKG9s ZCk7CisrICAgICAgeGZyZWUgKHRleHQpOworICAgICAgIHJsX2tpbGxfcmluZ1tzbG90XSA9IG5l dzsKKyAgICAgfQorICAgZWxzZQorQEAgLTU4Miw2ICs1ODIsNyBAQCBybF95YW5rX250aF9hcmdf aW50ZXJuYWwgKGNvdW50LCBpZ25vcmUsIGhpc3Rvcnlfc2tpcCkKKyAgIGlmICghYXJnIHx8ICEq YXJnKQorICAgICB7CisgICAgICAgcmxfZGluZyAoKTsKKysgICAgICBGUkVFIChhcmcpOworICAg ICAgIHJldHVybiAtMTsKKyAgICAgfQorIAorQEAgLTYwMCw3ICs2MDEsNyBAQCBybF95YW5rX250 aF9hcmdfaW50ZXJuYWwgKGNvdW50LCBpZ25vcmUsIGhpc3Rvcnlfc2tpcCkKKyAjZW5kaWYgLyog VklfTU9ERSAqLworIAorICAgcmxfaW5zZXJ0X3RleHQgKGFyZyk7CistICBmcmVlIChhcmcpOwor KyAgeGZyZWUgKGFyZyk7CisgCisgICBybF9lbmRfdW5kb19ncm91cCAoKTsKKyAgIHJldHVybiAw OworQEAgLTYzOSw3ICs2NDAsNyBAQCBybF95YW5rX2xhc3RfYXJnIChjb3VudCwga2V5KQorICAg ICB7CisgICAgICAgaWYgKHVuZG9fbmVlZGVkKQorIAlybF9kb191bmRvICgpOworLSAgICAgIGlm IChjb3VudCA8IDEpCisrICAgICAgaWYgKGNvdW50IDwgMCkJCS8qIFhYWCAtIHdhcyA8IDEgKi8K KyAgICAgICAgIGRpcmVjdGlvbiA9IC1kaXJlY3Rpb247CisgICAgICAgaGlzdG9yeV9za2lwICs9 IGRpcmVjdGlvbjsKKyAgICAgICBpZiAoaGlzdG9yeV9za2lwIDwgMCkKK0BAIC02ODUsNyArNjg2 LDcgQEAgcmxfcGFzdGVfZnJvbV9jbGlwYm9hcmQgKGNvdW50LCBrZXkpCisgICAgICAgX3JsX3Nl dF9tYXJrX2F0X3BvcyAocmxfcG9pbnQpOworICAgICAgIHJsX2luc2VydF90ZXh0IChwdHIpOwor ICAgICAgIGlmIChwdHIgIT0gZGF0YSkKKy0JZnJlZSAocHRyKTsKKysJeGZyZWUgKHB0cik7Cisg ICAgICAgQ2xvc2VDbGlwYm9hcmQgKCk7CisgICAgIH0KKyAgIHJldHVybiAoMCk7CistLS0gYS9y ZWFkbGluZS9tYWNyby5jCisrKysgYi9yZWFkbGluZS9tYWNyby5jCitAQCAtMSwyNCArMSwyNCBA QAorIC8qIG1hY3JvLmMgLS0ga2V5Ym9hcmQgbWFjcm9zIGZvciByZWFkbGluZS4gKi8KKyAKKy0v KiBDb3B5cmlnaHQgKEMpIDE5OTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyog Q29weXJpZ2h0IChDKSAxOTk0LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisg CistICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxp YnJhcnkgZm9yCistICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5w dXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05V IFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcg bGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcu ICAgICAgCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisr ICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFy eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWws IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5CistICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwg YW5kCistICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJ Q0VOU0UuICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNl LCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAg YWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKysqLworKworICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQorIAorICNpZiBkZWZp bmVkIChIQVZFX0NPTkZJR19IKQorQEAgLTExMyw3ICsxMTMsNyBAQCBfcmxfbmV4dF9tYWNyb19r ZXkgKCkKKyAKKyAjaWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FMTEJBQ0tTKQorICAgYyA9IHJsX2V4 ZWN1dGluZ19tYWNyb1tleGVjdXRpbmdfbWFjcm9faW5kZXgrK107CistICBpZiAoUkxfSVNTVEFU RSAoUkxfU1RBVEVfQ0FMTEJBQ0spICYmIFJMX0lTU1RBVEUgKFJMX1NUQVRFX1JFQURDTUQpICYm IHJsX2V4ZWN1dGluZ19tYWNyb1tleGVjdXRpbmdfbWFjcm9faW5kZXhdID09IDApCisrICBpZiAo UkxfSVNTVEFURSAoUkxfU1RBVEVfQ0FMTEJBQ0spICYmIFJMX0lTU1RBVEUgKFJMX1NUQVRFX1JF QURDTUR8UkxfU1RBVEVfTU9SRUlOUFVUKSAmJiBybF9leGVjdXRpbmdfbWFjcm9bZXhlY3V0aW5n X21hY3JvX2luZGV4XSA9PSAwKQorICAgICAgIF9ybF9wb3BfZXhlY3V0aW5nX21hY3JvICgpOwor ICAgcmV0dXJuIGM7CisgI2Vsc2UKK0BAIC0xNTIsNyArMTUyLDcgQEAgX3JsX3BvcF9leGVjdXRp bmdfbWFjcm8gKCkKKyAgICAgICBybF9leGVjdXRpbmdfbWFjcm8gPSBtYWNyb19saXN0LT5zdHJp bmc7CisgICAgICAgZXhlY3V0aW5nX21hY3JvX2luZGV4ID0gbWFjcm9fbGlzdC0+c2luZGV4Owor ICAgICAgIG1hY3JvX2xpc3QgPSBtYWNyb19saXN0LT5uZXh0OworLSAgICAgIGZyZWUgKG1hY3Jv KTsKKysgICAgICB4ZnJlZSAobWFjcm8pOworICAgICB9CisgCisgICBpZiAocmxfZXhlY3V0aW5n X21hY3JvID09IDApCitAQCAtMTgxLDcgKzE4MSw3IEBAIF9ybF9raWxsX2tiZF9tYWNybyAoKQor IHsKKyAgIGlmIChjdXJyZW50X21hY3JvKQorICAgICB7CistICAgICAgZnJlZSAoY3VycmVudF9t YWNybyk7CisrICAgICAgeGZyZWUgKGN1cnJlbnRfbWFjcm8pOworICAgICAgIGN1cnJlbnRfbWFj cm8gPSAoY2hhciAqKSBOVUxMOworICAgICB9CisgICBjdXJyZW50X21hY3JvX3NpemUgPSBjdXJy ZW50X21hY3JvX2luZGV4ID0gMDsKKy0tLSBhL3JlYWRsaW5lL21idXRpbC5jCisrKysgYi9yZWFk bGluZS9tYnV0aWwuYworQEAgLTEsMjQgKzEsMjQgQEAKKyAvKiBtYnV0aWwuYyAtLSByZWFkbGlu ZSBtdWx0aWJ5dGUgY2hhcmFjdGVyIHV0aWxpdHkgZnVuY3Rpb25zICovCisgCistLyogQ29weXJp Z2h0IChDKSAyMDAxLTIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29w eXJpZ2h0IChDKSAyMDAxLTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCist ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJh cnkgZm9yCistICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQg YW5kIGhpc3RvcnkgZWRpdGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJl YWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGlu ZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAg ICAgCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAg UmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 CistICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5k CistICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VO U0UuICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBT dWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxv bmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKysqLworKworICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQorIAorICNpZiBkZWZpbmVk IChIQVZFX0NPTkZJR19IKQorQEAgLTc3LDcgKzc3LDcgQEAgX3JsX2ZpbmRfbmV4dF9tYmNoYXJf aW50ZXJuYWwgKHN0cmluZywgc2VlZCwgY291bnQsIGZpbmRfbm9uX3plcm8pCisgICAgICBjaGFy ICpzdHJpbmc7CisgICAgICBpbnQgc2VlZCwgY291bnQsIGZpbmRfbm9uX3plcm87CisgeworLSAg c2l6ZV90IHRtcDsKKysgIHNpemVfdCB0bXAsIGxlbjsKKyAgIG1ic3RhdGVfdCBwczsKKyAgIGlu dCBwb2ludDsKKyAgIHdjaGFyX3Qgd2M7CitAQCAtOTEsMTcgKzkxLDIxIEBAIF9ybF9maW5kX25l eHRfbWJjaGFyX2ludGVybmFsIChzdHJpbmcsIHNlZWQsIGNvdW50LCBmaW5kX25vbl96ZXJvKQor ICAgICByZXR1cm4gc2VlZDsKKyAKKyAgIHBvaW50ID0gc2VlZCArIF9ybF9hZGp1c3RfcG9pbnQg KHN0cmluZywgc2VlZCwgJnBzKTsKKy0gIC8qIGlmIHRoaXMgaXMgdHJ1ZSwgbWVhbnMgdGhhdCBz ZWVkIHdhcyBub3QgcG9pbnRlZCBjaGFyYWN0ZXIKKy0gICAgIHN0YXJ0ZWQgYnl0ZS4gIFNvIGNv cnJlY3QgdGhlIHBvaW50IGFuZCBjb25zdW1lIGNvdW50ICovCisrICAvKiBpZiB0aGlzIGlzIHRy dWUsIG1lYW5zIHRoYXQgc2VlZCB3YXMgbm90IHBvaW50aW5nIHRvIGEgYnl0ZSBpbmRpY2F0aW5n CisrICAgICB0aGUgYmVnaW5uaW5nIG9mIGEgbXVsdGlieXRlIGNoYXJhY3Rlci4gIENvcnJlY3Qg dGhlIHBvaW50IGFuZCBjb25zdW1lCisrICAgICBvbmUgY2hhci4gKi8KKyAgIGlmIChzZWVkIDwg cG9pbnQpCisgICAgIGNvdW50LS07CisgCisgICB3aGlsZSAoY291bnQgPiAwKSAgCisgICAgIHsK Ky0gICAgICB0bXAgPSBtYnJ0b3djICgmd2MsIHN0cmluZytwb2ludCwgc3RybGVuKHN0cmluZyAr IHBvaW50KSwgJnBzKTsKKysgICAgICBsZW4gPSBzdHJsZW4gKHN0cmluZyArIHBvaW50KTsKKysg ICAgICBpZiAobGVuID09IDApCisrCWJyZWFrOworKyAgICAgIHRtcCA9IG1icnRvd2MgKCZ3Yywg c3RyaW5nK3BvaW50LCBsZW4sICZwcyk7CisgICAgICAgaWYgKE1CX0lOVkFMSURDSCAoKHNpemVf dCl0bXApKQorIAl7CistCSAgLyogaW52YWxpZCBieXRlcy4gYXN1bWUgYSBieXRlIHJlcHJlc2Vu dHMgYSBjaGFyYWN0ZXIgKi8KKysJICAvKiBpbnZhbGlkIGJ5dGVzLiBhc3N1bWUgYSBieXRlIHJl cHJlc2VudHMgYSBjaGFyYWN0ZXIgKi8KKyAJICBwb2ludCsrOworIAkgIGNvdW50LS07CisgCSAg LyogcmVzZXQgc3RhdGVzLiAqLworQEAgLTEyOCwxMiArMTMyLDEwIEBAIF9ybF9maW5kX25leHRf bWJjaGFyX2ludGVybmFsIChzdHJpbmcsIHNlZWQsIGNvdW50LCBmaW5kX25vbl96ZXJvKQorICAg aWYgKGZpbmRfbm9uX3plcm8pCisgICAgIHsKKyAgICAgICB0bXAgPSBtYnJ0b3djICgmd2MsIHN0 cmluZyArIHBvaW50LCBzdHJsZW4gKHN0cmluZyArIHBvaW50KSwgJnBzKTsKKy0gICAgICB3aGls ZSAodG1wID4gMCAmJiB3Y3dpZHRoICh3YykgPT0gMCkKKysgICAgICB3aGlsZSAoTUJfTlVMTFdD SCAodG1wKSA9PSAwICYmIE1CX0lOVkFMSURDSCAodG1wKSA9PSAwICYmIHdjd2lkdGggKHdjKSA9 PSAwKQorIAl7CisgCSAgcG9pbnQgKz0gdG1wOworIAkgIHRtcCA9IG1icnRvd2MgKCZ3Yywgc3Ry aW5nICsgcG9pbnQsIHN0cmxlbiAoc3RyaW5nICsgcG9pbnQpLCAmcHMpOworLQkgIGlmIChNQl9O VUxMV0NIICh0bXApIHx8IE1CX0lOVkFMSURDSCAodG1wKSkKKy0JICAgIGJyZWFrOworIAl9Cisg ICAgIH0KKyAKKy0tLSBhL3JlYWRsaW5lL21pc2MuYworKysrIGIvcmVhZGxpbmUvbWlzYy5jCitA QCAtMSwyNCArMSwyNCBAQAorIC8qIG1pc2MuYyAtLSBtaXNjZWxsYW5lb3VzIGJpbmRhYmxlIHJl YWRsaW5lIGZ1bmN0aW9ucy4gKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwNSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwOSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKKy0gICByZWFkaW5nIGxp bmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgor KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxp bmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJh Y3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKKyAKKy0gICBUaGUgR05VIFJl YWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQK Ky0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3 YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0gICBvZiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgUmVh ZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBv ZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2Vw dCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0g ICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAw MjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisrCisgI2RlZmlu ZSBSRUFETElORV9MSUJSQVJZCisgCisgI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCitAQCAt MTQ2LDYgKzE0Niw4IEBAIF9ybF9hcmdfZGlzcGF0Y2ggKGN4dCwgYykKKyAJICBybF9yZXN0b3Jl X3Byb21wdCAoKTsKKyAJICBybF9jbGVhcl9tZXNzYWdlICgpOworIAkgIFJMX1VOU0VUU1RBVEUo UkxfU1RBVEVfTlVNRVJJQ0FSRyk7CisrCSAgaWYgKGtleSA8IDApCisrCSAgICByZXR1cm4gLTE7 CisgCSAgcmV0dXJuIChfcmxfZGlzcGF0Y2ggKGtleSwgX3JsX2tleW1hcCkpOworIAl9CisgICAg IH0KK0BAIC0yMTIsNiArMjE0LDggQEAgcmxfZGlnaXRfbG9vcCAoKQorICAgICAgIGlmIChyIDw9 IDAgfHwgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX05VTUVSSUNBUkcpID09IDApKQorICAgICAgICAg YnJlYWs7CisgICAgIH0KKysKKysgIHJldHVybiByOworIH0KKyAKKyAvKiBDcmVhdGUgYSBkZWZh dWx0IGFyZ3VtZW50LiAqLworQEAgLTMyNCw3ICszMjgsNyBAQCBfcmxfZnJlZV9oaXN0b3J5X2Vu dHJ5IChlbnRyeSkKKyAgIEZSRUUgKGVudHJ5LT5saW5lKTsKKyAgIEZSRUUgKGVudHJ5LT50aW1l c3RhbXApOworIAorLSAgZnJlZSAoZW50cnkpOworKyAgeGZyZWUgKGVudHJ5KTsKKyB9CisgCisg LyogUGVyaGFwcyBwdXQgYmFjayB0aGUgY3VycmVudCBsaW5lIGlmIGl0IGhhcyBjaGFuZ2VkLiAq LworQEAgLTMzOCw5ICszNDIsOSBAQCBybF9tYXliZV9yZXBsYWNlX2xpbmUgKCkKKyAgIGlmICh0 ZW1wICYmICgoVU5ET19MSVNUICopKHRlbXAtPmRhdGEpICE9IHJsX3VuZG9fbGlzdCkpCisgICAg IHsKKyAgICAgICB0ZW1wID0gcmVwbGFjZV9oaXN0b3J5X2VudHJ5ICh3aGVyZV9oaXN0b3J5ICgp LCBybF9saW5lX2J1ZmZlciwgKGhpc3RkYXRhX3QpcmxfdW5kb19saXN0KTsKKy0gICAgICBmcmVl ICh0ZW1wLT5saW5lKTsKKysgICAgICB4ZnJlZSAodGVtcC0+bGluZSk7CisgICAgICAgRlJFRSAo dGVtcC0+dGltZXN0YW1wKTsKKy0gICAgICBmcmVlICh0ZW1wKTsKKysgICAgICB4ZnJlZSAodGVt cCk7CisgICAgIH0KKyAgIHJldHVybiAwOworIH0KK0BAIC00MjcsNiArNDMxLDU2IEBAIHJsX3Jl cGxhY2VfZnJvbV9oaXN0b3J5IChlbnRyeSwgZmxhZ3MpCisgICAgICAgcmxfbWFyayA9IHJsX2Vu ZDsKKyAgICAgfQorICNlbmRpZgorK30KKysKKysvKiBQcm9jZXNzIGFuZCBmcmVlIHVuZG8gbGlz dHMgYXR0YWNoZWQgdG8gZWFjaCBoaXN0b3J5IGVudHJ5IHByaW9yIHRvIHRoZQorKyAgIGN1cnJl bnQgZW50cnksIGluY2x1c2l2ZSwgcmV2ZXJ0aW5nIGVhY2ggbGluZSB0byBpdHMgc2F2ZWQgc3Rh dGUuICBUaGlzIAorKyAgIGlzIGRlc3RydWN0aXZlLCBhbmQgc3RhdGUgYWJvdXQgdGhlIGN1cnJl bnQgbGluZSBpcyBsb3N0LiAgVGhpcyBpcyBub3QKKysgICBpbnRlbmRlZCB0byBiZSBjYWxsZWQg d2hpbGUgYWN0aXZlbHkgZWRpdGluZywgYW5kIHRoZSBjdXJyZW50IGxpbmUgaXMKKysgICBub3Qg YXNzdW1lZCB0byBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIGhpc3RvcnkgbGlzdC4gKi8KKyt2b2lk CisrX3JsX3JldmVydF9hbGxfbGluZXMgKCkKKyt7CisrICBpbnQgaHBvczsKKysgIEhJU1RfRU5U UlkgKmVudHJ5OworKyAgVU5ET19MSVNUICp1bCwgKnNhdmVkX3VuZG9fbGlzdDsKKysgIGNoYXIg KmxidWY7CisrCisrICBsYnVmID0gc2F2ZXN0cmluZyAocmxfbGluZV9idWZmZXIpOworKyAgc2F2 ZWRfdW5kb19saXN0ID0gcmxfdW5kb19saXN0OworKyAgaHBvcyA9IHdoZXJlX2hpc3RvcnkgKCk7 CisrCisrICBlbnRyeSA9IChocG9zID09IGhpc3RvcnlfbGVuZ3RoKSA/IHByZXZpb3VzX2hpc3Rv cnkgKCkgOiBjdXJyZW50X2hpc3RvcnkgKCk7CisrICB3aGlsZSAoZW50cnkpCisrICAgIHsKKysg ICAgICBpZiAodWwgPSAoVU5ET19MSVNUICopZW50cnktPmRhdGEpCisrCXsKKysJICBpZiAodWwg PT0gc2F2ZWRfdW5kb19saXN0KQorKwkgICAgc2F2ZWRfdW5kb19saXN0ID0gMDsKKysJICAvKiBT ZXQgdXAgcmxfbGluZV9idWZmZXIgYW5kIG90aGVyIHZhcmlhYmxlcyBmcm9tIGhpc3RvcnkgZW50 cnkgKi8KKysJICBybF9yZXBsYWNlX2Zyb21faGlzdG9yeSAoZW50cnksIDApOwkvKiBlbnRyeS0+ bGluZSBpcyBub3cgY3VycmVudCAqLworKwkgIC8qIFVuZG8gYWxsIGNoYW5nZXMgdG8gdGhpcyBo aXN0b3J5IGVudHJ5ICovCisrCSAgd2hpbGUgKHJsX3VuZG9fbGlzdCkKKysJICAgIHJsX2RvX3Vu ZG8gKCk7CisrCSAgLyogQW5kIGNvcHkgdGhlIHJldmVydGVkIGxpbmUgYmFjayB0byB0aGUgaGlz dG9yeSBlbnRyeSwgcHJlc2VydmluZworKwkgICAgIHRoZSB0aW1lc3RhbXAuICovCisrCSAgRlJF RSAoZW50cnktPmxpbmUpOworKwkgIGVudHJ5LT5saW5lID0gc2F2ZXN0cmluZyAocmxfbGluZV9i dWZmZXIpOworKwkgIGVudHJ5LT5kYXRhID0gMDsKKysJfQorKyAgICAgIGVudHJ5ID0gcHJldmlv dXNfaGlzdG9yeSAoKTsKKysgICAgfQorKworKyAgLyogUmVzdG9yZSBoaXN0b3J5IHN0YXRlICov CisrICBybF91bmRvX2xpc3QgPSBzYXZlZF91bmRvX2xpc3Q7CS8qIG1heSBoYXZlIGJlZW4gc2V0 IHRvIG51bGwgKi8KKysgIGhpc3Rvcnlfc2V0X3BvcyAoaHBvcyk7CisrICAKKysgIC8qIHJlc2V0 IHRoZSBsaW5lIGJ1ZmZlciAqLworKyAgcmxfcmVwbGFjZV9saW5lIChsYnVmLCAwKTsKKysgIF9y bF9zZXRfdGhlX2xpbmUgKCk7CisrCisrICAvKiBhbmQgY2xlYW4gdXAgKi8KKysgIHhmcmVlIChs YnVmKTsKKyB9ICAKKyAKKyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqICovCitAQCAtNTU2LDcgKzYxMCw3IEBAIHJsX3Zp X2VkaXRpbmdfbW9kZSAoY291bnQsIGtleSkKKyAjaWYgZGVmaW5lZCAoVklfTU9ERSkKKyAgIF9y bF9zZXRfaW5zZXJ0X21vZGUgKFJMX0lNX0lOU0VSVCwgMSk7CS8qIHZpIG1vZGUgaWdub3JlcyBp bnNlcnQgbW9kZSAqLworICAgcmxfZWRpdGluZ19tb2RlID0gdmlfbW9kZTsKKy0gIHJsX3ZpX2lu c2VydGlvbl9tb2RlICgxLCBrZXkpOworKyAgcmxfdmlfaW5zZXJ0X21vZGUgKDEsIGtleSk7Cisg I2VuZGlmIC8qIFZJX01PREUgKi8KKyAKKyAgIHJldHVybiAwOworLS0tIGEvcmVhZGxpbmUvbmxz LmMKKysrKyBiL3JlYWRsaW5lL25scy5jCitAQCAtMSwyNCArMSwyNCBAQAorIC8qIG5scy5jIC0t IHNrZWxldGFsIGludGVybmF0aW9uYWxpemF0aW9uIGNvZGUuICovCisgCistLyogQ29weXJpZ2h0 IChDKSAxOTk2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAo QykgMTk5Ni0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgor LSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0 b3J5IGVkaXRpbmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBM aWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRl eHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAor LSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5l IGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9m IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlz IGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYg eW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMw LCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGgg UmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisr Ki8KKysKKyAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKKyAKKyAjaWYgZGVmaW5lZCAoSEFWRV9D T05GSUdfSCkKK0BAIC0xNDUsNyArMTQ1LDcgQEAgX3JsX2luaXRfZWlnaHRiaXQgKCkKKyAJX3Js X291dHB1dF9tZXRhX2NoYXJzID0gMTsKKyAJYnJlYWs7CisgICAgICAgfQorLSAgZnJlZSAodCk7 CisrICB4ZnJlZSAodCk7CisgICByZXR1cm4gKGxlZ2FsX2xhbmdfdmFsdWVzW2ldID8gMSA6IDAp OworIAorICNlbmRpZiAvKiAhSEFWRV9TRVRMT0NBTEUgKi8KKy0tLSBhL3JlYWRsaW5lL3BhcmVu cy5jCisrKysgYi9yZWFkbGluZS9wYXJlbnMuYworQEAgLTEsMjQgKzEsMjQgQEAKKy0vKiBwYXJl bnMuYyAtLSBJbXBsZW1lbnRhdGlvbiBvZiBtYXRjaGluZyBwYXJlbnRoZXNlcyBmZWF0dXJlLiAq LworKy8qIHBhcmVucy5jIC0tIGltcGxlbWVudGF0aW9uIG9mIG1hdGNoaW5nIHBhcmVudGhlc2Vz IGZlYXR1cmUuICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTg3LCAxOTg5LCAxOTkyIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk4NywgMTk4OSwg MTk5Mi0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAg IHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5 IGVkaXRpbmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJy YXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQg d2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAg IFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlz IGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdl bmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91 IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVh ZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8K KysKKyAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKKyAKKyAjaWYgZGVmaW5lZCAoX19UQU5ERU0p CitAQCAtMzgsMTYgKzM4LDcgQEAKKyAjICBpbmNsdWRlIDx1bmlzdGQuaD4KKyAjZW5kaWYKKyAK Ky0jaWYgZGVmaW5lZCAoRkRfU0VUKSAmJiAhZGVmaW5lZCAoSEFWRV9TRUxFQ1QpCistIyAgZGVm aW5lIEhBVkVfU0VMRUNUCistI2VuZGlmCistCistI2lmIGRlZmluZWQgKEhBVkVfU0VMRUNUKQor LSMgIGluY2x1ZGUgPHN5cy90aW1lLmg+CistI2VuZGlmIC8qIEhBVkVfU0VMRUNUICovCistI2lm IGRlZmluZWQgKEhBVkVfU1lTX1NFTEVDVF9IKQorLSMgIGluY2x1ZGUgPHN5cy9zZWxlY3QuaD4K Ky0jZW5kaWYKKysjaW5jbHVkZSAicG9zaXhzZWxlY3QuaCIKKyAKKyAjaWYgZGVmaW5lZCAoSEFW RV9TVFJJTkdfSCkKKyAjICBpbmNsdWRlIDxzdHJpbmcuaD4KK0BAIC0xMzAsOCArMTIxLDcgQEAg cmxfaW5zZXJ0X2Nsb3NlIChjb3VudCwgaW52b2tpbmdfa2V5KQorIAorICAgICAgIEZEX1pFUk8g KCZyZWFkZmRzKTsKKyAgICAgICBGRF9TRVQgKGZpbGVubyAocmxfaW5zdHJlYW0pLCAmcmVhZGZk cyk7CistICAgICAgdGltZXIudHZfc2VjID0gMDsKKy0gICAgICB0aW1lci50dl91c2VjID0gX3Bh cmVuX2JsaW5rX3VzZWM7CisrICAgICAgVVNFQ19UT19USU1FVkFMIChfcGFyZW5fYmxpbmtfdXNl YywgdGltZXIpOworIAorICAgICAgIG9yaWdfcG9pbnQgPSBybF9wb2ludDsKKyAgICAgICBybF9w b2ludCA9IG1hdGNoX3BvaW50OworLS0tIC9kZXYvbnVsbAorKysrIGIvcmVhZGxpbmUvcGF0Y2hs ZXZlbAorQEAgLTAsMCArMSwzIEBACisrIyBEbyBub3QgZWRpdCAtLSBleGlzdHMgb25seSBmb3Ig dXNlIGJ5IHBhdGNoCisrCisrMQorLS0tIGEvcmVhZGxpbmUvcG9zaXhkaXIuaAorKysrIGIvcmVh ZGxpbmUvcG9zaXhkaXIuaAorQEAgLTQsMTkgKzQsMTkgQEAKKyAKKyAgICBUaGlzIGZpbGUgaXMg cGFydCBvZiBHTlUgQmFzaCwgdGhlIEJvdXJuZSBBZ2FpbiBTSGVsbC4KKyAKKy0gICBCYXNoIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQK Ky0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKysg ICBCYXNoIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCistICAgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZCist ICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYworLSAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgICBCYXNoIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKyAKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggQmFzaDsgc2VlIHRoZSBmaWxlIENP UFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCistICAgU29mdHdhcmUgRm91bmRhdGlv biwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLwor KyAgIGFsb25nIHdpdGggQmFzaC4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKysqLworIAorIC8qIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW5zdGVh ZCBvZiA8ZGlyZW50Lmg+IG9yIDxzeXMvZGlyLmg+LiAqLworIAorLS0tIGEvcmVhZGxpbmUvcG9z aXhqbXAuaAorKysrIGIvcmVhZGxpbmUvcG9zaXhqbXAuaAorQEAgLTQsMTkgKzQsMTkgQEAKKyAK KyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgQmFzaCwgdGhlIEJvdXJuZSBBZ2FpbiBTSGVs bC4KKyAKKy0gICBCYXNoIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkgaXQKKy0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkg bGF0ZXIgdmVyc2lvbi4KKysgICBCYXNoIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBCYXNoIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VU CistICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Yg TUVSQ0hBTlRBQklMSVRZCistICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworLSAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKysgICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggQmFz aDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCistICAg U29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rvbiwg TUEgMDIxMTEgVVNBLiAqLworKyAgIGFsb25nIHdpdGggQmFzaC4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworIAorICNpZm5kZWYgX1BPU0lYSk1QX0hf CisgI2RlZmluZSBfUE9TSVhKTVBfSF8KKy0tLSAvZGV2L251bGwKKysrKyBiL3JlYWRsaW5lL3Bv c2l4c2VsZWN0LmgKK0BAIC0wLDAgKzEsNDcgQEAKKysvKiBwb3NpeHNlbGVjdC5oIC0tIHdyYXBw ZXIgZm9yIHNlbGVjdCgyKSBpbmNsdWRlcyBhbmQgZGVmaW5pdGlvbnMgKi8KKysKKysvKiBDb3B5 cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgR05VIEJhc2gsIHRoZSBCb3VybmUgQWdhaW4gU0hlbGwuCisrCisr ICAgQmFzaCBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgQmFzaCBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKysgICBhbG9uZyB3aXRoIEJhc2guICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrKi8KKysKKysjaWZuZGVmIF9QT1NJWFNFTEVDVF9IXworKyNkZWZpbmUg X1BPU0lYU0VMRUNUX0hfCisrCisrI2lmIGRlZmluZWQgKEZEX1NFVCkgJiYgIWRlZmluZWQgKEhB VkVfU0VMRUNUKQorKyMgIGRlZmluZSBIQVZFX1NFTEVDVCAxCisrI2VuZGlmCisrCisrI2lmIGRl ZmluZWQgKEhBVkVfU0VMRUNUKQorKyMgIGlmICFkZWZpbmVkIChIQVZFX1NZU19TRUxFQ1RfSCkg fHwgIWRlZmluZWQgKE1fVU5JWCkKKysjICAgIGluY2x1ZGUgPHN5cy90aW1lLmg+CisrIyAgZW5k aWYKKysjZW5kaWYgLyogSEFWRV9TRUxFQ1QgKi8KKysjaWYgZGVmaW5lZCAoSEFWRV9TWVNfU0VM RUNUX0gpCisrIyAgaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgorKyNlbmRpZgorKworKyNpZm5kZWYg VVNFQ19QRVJfU0VDCisrIyAgZGVmaW5lIFVTRUNfUEVSX1NFQyAxMDAwMDAwCisrI2VuZGlmCisr CisrI2RlZmluZSBVU0VDX1RPX1RJTUVWQUwodXMsIHR2KSBcCisrZG8geyBcCisrICAodHYpLnR2 X3NlYyA9ICh1cykgLyBVU0VDX1BFUl9TRUM7IFwKKysgICh0dikudHZfdXNlYyA9ICh1cykgJSBV U0VDX1BFUl9TRUM7IFwKKyt9IHdoaWxlICgwKQorKworKyNlbmRpZiAvKiBfUE9TSVhTRUxFQ1Rf SF8gKi8KKy0tLSBhL3JlYWRsaW5lL3Bvc2l4c3RhdC5oCisrKysgYi9yZWFkbGluZS9wb3NpeHN0 YXQuaAorQEAgLTUsMTkgKzUsMTkgQEAKKyAKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUg QmFzaCwgdGhlIEJvdXJuZSBBZ2FpbiBTSGVsbC4KKyAKKy0gICBCYXNoIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKy0gICB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y IChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgICBCYXNoIGlzIGZy ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKyAKKy0gICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCistICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZCistICAgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwor LSAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyAgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorLSAgIGFsb25nIHdpdGggQmFzaDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlCistICAgU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxl IFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIGFsb25nIHdp dGggQmFzaC4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysq LworIAorIC8qIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW5zdGVhZCBvZiA8c3lzL3N0 YXQuaD4uCisgICAgSXQgcmVsaWVzIG9uIHRoZSBsb2NhbCBzeXMvc3RhdC5oIHRvIHdvcmsgdGhv dWdoLiAqLworLS0tIGEvcmVhZGxpbmUvcmVhZGxpbmUuYworKysrIGIvcmVhZGxpbmUvcmVhZGxp bmUuYworQEAgLTEsMjUgKzEsMjUgQEAKKyAvKiByZWFkbGluZS5jIC0tIGEgZ2VuZXJhbCBmYWNp bGl0eSBmb3IgcmVhZGluZyBsaW5lcyBvZiBpbnB1dAorICAgIHdpdGggZW1hY3Mgc3R5bGUgZWRp dGluZyBhbmQgY29tcGxldGlvbi4gKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwNSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAw OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKKy0gICByZWFkaW5n IGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5n LgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVh ZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50 ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKKyAKKy0gICBUaGUgR05V IFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFkbGluZSBpcyBmcmVlIHNv ZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0gICBvZiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAg UmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBp cyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkg a2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QK Ky0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisrCisgI2Rl ZmluZSBSRUFETElORV9MSUJSQVJZCisgCisgI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCitA QCAtNDksNiArNDksMTEgQEAKKyAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSAicG9z aXhqbXAuaCIKKysjaW5jbHVkZSA8ZXJybm8uaD4KKysKKysjaWYgIWRlZmluZWQgKGVycm5vKQor K2V4dGVybiBpbnQgZXJybm87CisrI2VuZGlmIC8qICFlcnJubyAqLworIAorIC8qIFN5c3RlbS1z cGVjaWZpYyBmZWF0dXJlIGRlZmluaXRpb25zIGFuZCBpbmNsdWRlIGZpbGVzLiAqLworICNpbmNs dWRlICJybGRlZnMuaCIKK0BAIC0xNTgsNyArMTYzLDcgQEAgaW50IHJsX2RvbmU7CisgcmxfY29t bWFuZF9mdW5jX3QgKnJsX2xhc3RfZnVuYyA9IChybF9jb21tYW5kX2Z1bmNfdCAqKU5VTEw7Cisg CisgLyogVG9wIGxldmVsIGVudmlyb25tZW50IGZvciByZWFkbGluZV9pbnRlcm5hbCAoKS4gKi8K Ky1wcm9jZW52X3QgcmVhZGxpbmVfdG9wX2xldmVsOworK3Byb2NlbnZfdCBfcmxfdG9wX2xldmVs OworIAorIC8qIFRoZSBzdHJlYW1zIHdlIGludGVyYWN0IHdpdGguICovCisgRklMRSAqX3JsX2lu X3N0cmVhbSwgKl9ybF9vdXRfc3RyZWFtOworQEAgLTE3MSw3ICsxNzYsNyBAQCBGSUxFICpybF9v dXRzdHJlYW0gPSAoRklMRSAqKU5VTEw7CisgICAgc2V0IHRvIDEgaWYgdGhlcmUgaXMgYSBjb250 cm9sbGluZyB0ZXJtaW5hbCwgd2UgY2FuIGdldCBpdHMgYXR0cmlidXRlcywKKyAgICBhbmQgdGhl IGF0dHJpYnV0ZXMgaW5jbHVkZSBgZWNobycuICBMb29rIGF0IHJsdHR5LmM6cHJlcGFyZV90ZXJt aW5hbF9zZXR0aW5ncworICAgIGZvciB0aGUgY29kZSB0aGF0IHNldHMgaXQuICovCistaW50IHJl YWRsaW5lX2VjaG9pbmdfcCA9IDA7CisraW50IF9ybF9lY2hvaW5nX3AgPSAwOworIAorIC8qIEN1 cnJlbnQgcHJvbXB0LiAqLworIGNoYXIgKnJsX3Byb21wdCA9IChjaGFyICopTlVMTDsKK0BAIC0y NjUsNiArMjcwLDE1IEBAIGludCBfcmxfb3V0cHV0X21ldGFfY2hhcnMgPSAwOworICAgIHRoZW0g dG8gZXF1aXZhbGVudCByZWFkbGluZSBmdW5jdGlvbnMgYXQgc3RhcnR1cC4gKi8KKyBpbnQgX3Js X2JpbmRfc3R0eV9jaGFycyA9IDE7CisgCisrLyogTm9uLXplcm8gbWVhbnMgdG8gZ28gdGhyb3Vn aCB0aGUgaGlzdG9yeSBsaXN0IGF0IGV2ZXJ5IG5ld2xpbmUgKG9yCisrICAgd2hlbmV2ZXIgcmxf ZG9uZSBpcyBzZXQgYW5kIHJlYWRsaW5lIHJldHVybnMpIGFuZCByZXZlcnQgZWFjaCBsaW5lIHRv CisrICAgaXRzIGluaXRpYWwgc3RhdGUuICovCisraW50IF9ybF9yZXZlcnRfYWxsX2F0X25ld2xp bmUgPSAwOworKworKy8qIE5vbi16ZXJvIG1lYW5zIHRvIGhvbm9yIHRoZSB0ZXJtaW9zIEVDSE9D VEwgYml0IGFuZCBlY2hvIGNvbnRyb2wKKysgICBjaGFyYWN0ZXJzIGNvcnJlc3BvbmRpbmcgdG8g a2V5Ym9hcmQtZ2VuZXJhdGVkIHNpZ25hbHMuICovCisraW50IF9ybF9lY2hvX2NvbnRyb2xfY2hh cnMgPSAxOworKworIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiogKi8KKyAvKgkJCQkJCQkJICAgICovCisgLyoJCQlUb3Ag TGV2ZWwgRnVuY3Rpb25zCQkJICAgICovCitAQCAtMjk1LDYgKzMwOSw5IEBAIHJlYWRsaW5lIChw cm9tcHQpCisgICAgICBjb25zdCBjaGFyICpwcm9tcHQ7CisgeworICAgY2hhciAqdmFsdWU7Cisr I2lmIDAKKysgIGludCBpbl9jYWxsYmFjazsKKysjZW5kaWYKKyAKKyAgIC8qIElmIHdlIGFyZSBh dCBFT0YgcmV0dXJuIGEgTlVMTCBzdHJpbmcuICovCisgICBpZiAocmxfcGVuZGluZ19pbnB1dCA9 PSBFT0YpCitAQCAtMzAzLDYgKzMyMCwxNSBAQCByZWFkbGluZSAocHJvbXB0KQorICAgICAgIHJl dHVybiAoKGNoYXIgKilOVUxMKTsKKyAgICAgfQorIAorKyNpZiAwCisrICAvKiBJZiByZWFkbGlu ZSgpIGlzIGNhbGxlZCBhZnRlciBpbnN0YWxsaW5nIGEgY2FsbGJhY2sgaGFuZGxlciwgdGVtcG9y YXJpbHkKKysgICAgIHR1cm4gb2ZmIHRoZSBjYWxsYmFjayBzdGF0ZSB0byBhdm9pZCBlbnN1aW5n IG1lc3NpbmVzcy4gIFBhdGNoIHN1cHBsaWVkCisrICAgICBieSB0aGUgZ2RiIGZvbGtzLiAgWFhY IC0tIGRpc2FibGVkLiAgVGhpcyBjYW4gYmUgZm9vbGVkIGFuZCByZWFkbGluZQorKyAgICAgbGVm dCBpbiBhIHN0cmFuZ2Ugc3RhdGUgYnkgYSBwb29ybHktdGltZWQgbG9uZ2ptcC4gKi8KKysgIGlm IChpbl9jYWxsYmFjayA9IFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSkKKysgICAgUkxf VU5TRVRTVEFURSAoUkxfU1RBVEVfQ0FMTEJBQ0spOworKyNlbmRpZgorKworICAgcmxfc2V0X3By b21wdCAocHJvbXB0KTsKKyAKKyAgIHJsX2luaXRpYWxpemUgKCk7CitAQCAtMzIxLDYgKzM0Nywx MSBAQCByZWFkbGluZSAocHJvbXB0KQorICAgcmxfY2xlYXJfc2lnbmFscyAoKTsKKyAjZW5kaWYK KyAKKysjaWYgMAorKyAgaWYgKGluX2NhbGxiYWNrKQorKyAgICBSTF9TRVRTVEFURSAoUkxfU1RB VEVfQ0FMTEJBQ0spOworKyNlbmRpZgorKworICAgcmV0dXJuICh2YWx1ZSk7CisgfQorIAorQEAg LTM0NCwxNCArMzc1LDE0IEBAIHJlYWRsaW5lX2ludGVybmFsX3NldHVwICgpCisgICAvKiBJZiB3 ZSdyZSBub3QgZWNob2luZywgd2Ugc3RpbGwgd2FudCB0byBhdCBsZWFzdCBwcmludCBhIHByb21w dCwgYmVjYXVzZQorICAgICAgcmxfcmVkaXNwbGF5IHdpbGwgbm90IGRvIGl0IGZvciB1cy4gIElm IHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uIGhhcyBhCisgICAgICBjdXN0b20gcmVkaXNwbGF5IGZ1 bmN0aW9uLCB0aG91Z2gsIGxldCB0aGF0IGZ1bmN0aW9uIGhhbmRsZSBpdC4gKi8KKy0gIGlmIChy ZWFkbGluZV9lY2hvaW5nX3AgPT0gMCAmJiBybF9yZWRpc3BsYXlfZnVuY3Rpb24gPT0gcmxfcmVk aXNwbGF5KQorKyAgaWYgKF9ybF9lY2hvaW5nX3AgPT0gMCAmJiBybF9yZWRpc3BsYXlfZnVuY3Rp b24gPT0gcmxfcmVkaXNwbGF5KQorICAgICB7CisgICAgICAgaWYgKHJsX3Byb21wdCAmJiBybF9h bHJlYWR5X3Byb21wdGVkID09IDApCisgCXsKKyAJICBucHJvbXB0ID0gX3JsX3N0cmlwX3Byb21w dCAocmxfcHJvbXB0KTsKKyAJICBmcHJpbnRmIChfcmxfb3V0X3N0cmVhbSwgIiVzIiwgbnByb21w dCk7CisgCSAgZmZsdXNoIChfcmxfb3V0X3N0cmVhbSk7CistCSAgZnJlZSAobnByb21wdCk7Cisr CSAgeGZyZWUgKG5wcm9tcHQpOworIAl9CisgICAgIH0KKyAgIGVsc2UKK0BAIC0zNjUsMTEgKzM5 NiwxMyBAQCByZWFkbGluZV9pbnRlcm5hbF9zZXR1cCAoKQorIAorICNpZiBkZWZpbmVkIChWSV9N T0RFKQorICAgaWYgKHJsX2VkaXRpbmdfbW9kZSA9PSB2aV9tb2RlKQorLSAgICBybF92aV9pbnNl cnRpb25fbW9kZSAoMSwgJ2knKTsKKysgICAgcmxfdmlfaW5zZXJ0X21vZGUgKDEsICdpJyk7Cisg I2VuZGlmIC8qIFZJX01PREUgKi8KKyAKKyAgIGlmIChybF9wcmVfaW5wdXRfaG9vaykKKyAgICAg KCpybF9wcmVfaW5wdXRfaG9vaykgKCk7CisrCisrICBSTF9DSEVDS19TSUdOQUxTICgpOworIH0K KyAKKyBTVEFUSUNfQ0FMTEJBQ0sgY2hhciAqCitAQCAtMzc5LDYgKzQxMiw4IEBAIHJlYWRsaW5l X2ludGVybmFsX3RlYXJkb3duIChlb2YpCisgICBjaGFyICp0ZW1wOworICAgSElTVF9FTlRSWSAq ZW50cnk7CisgCisrICBSTF9DSEVDS19TSUdOQUxTICgpOworKworICAgLyogUmVzdG9yZSB0aGUg b3JpZ2luYWwgb2YgdGhpcyBoaXN0b3J5IGxpbmUsIGlmZiB0aGUgbGluZSB0aGF0IHdlCisgICAg ICBhcmUgZWRpdGluZyB3YXMgb3JpZ2luYWxseSBpbiB0aGUgaGlzdG9yeSwgQU5EIHRoZSBsaW5l IGhhcyBjaGFuZ2VkLiAqLworICAgZW50cnkgPSBjdXJyZW50X2hpc3RvcnkgKCk7CitAQCAtMzkx LDkgKzQyNiwxMiBAQCByZWFkbGluZV9pbnRlcm5hbF90ZWFyZG93biAoZW9mKQorICAgICAgIF9y bF9mcmVlX2hpc3RvcnlfZW50cnkgKGVudHJ5KTsKKyAKKyAgICAgICBzdHJjcHkgKHRoZV9saW5l LCB0ZW1wKTsKKy0gICAgICBmcmVlICh0ZW1wKTsKKysgICAgICB4ZnJlZSAodGVtcCk7CisgICAg IH0KKyAKKysgIGlmIChfcmxfcmV2ZXJ0X2FsbF9hdF9uZXdsaW5lKQorKyAgICBfcmxfcmV2ZXJ0 X2FsbF9saW5lcyAoKTsKKysKKyAgIC8qIEF0IGFueSByYXRlLCBpdCBpcyBoaWdobHkgbGlrZWx5 IHRoYXQgdGhpcyBsaW5lIGhhcyBhbiB1bmRvIGxpc3QuICBHZXQKKyAgICAgIHJpZCBvZiBpdCBu b3cuICovCisgICBpZiAocmxfdW5kb19saXN0KQorQEAgLTQ1NCw3ICs0OTIsNyBAQCByZWFkbGlu ZV9pbnRlcm5hbF9jaGFybG9vcCAoKQorICNlbmRpZgorICAgICAgIGxrID0gX3JsX2xhc3RfY29t bWFuZF93YXNfa2lsbDsKKyAKKy0gICAgICBjb2RlID0gc2V0am1wIChyZWFkbGluZV90b3BfbGV2 ZWwpOworKyAgICAgIGNvZGUgPSBzZXRqbXAgKF9ybF90b3BfbGV2ZWwpOworIAorICAgICAgIGlm IChjb2RlKQorIAl7CitAQCAtNDYyLDcgKzUwMCw3IEBAIHJlYWRsaW5lX2ludGVybmFsX2NoYXJs b29wICgpCisgCSAgX3JsX3dhbnRfcmVkaXNwbGF5ID0gMDsKKyAJICAvKiBJZiB3ZSBnZXQgaGVy ZSwgd2UncmUgbm90IGJlaW5nIGNhbGxlZCBmcm9tIHNvbWV0aGluZyBkaXNwYXRjaGVkCisgCSAg ICAgZnJvbSBfcmxfY2FsbGJhY2tfcmVhZF9jaGFyKCksIHdoaWNoIHNldHMgdXAgaXRzIG93biB2 YWx1ZSBvZgorLQkgICAgIHJlYWRsaW5lX3RvcF9sZXZlbCAoc2F2aW5nIGFuZCByZXN0b3Jpbmcg dGhlIG9sZCwgb2YgY291cnNlKSwgc28KKysJICAgICBfcmxfdG9wX2xldmVsIChzYXZpbmcgYW5k IHJlc3RvcmluZyB0aGUgb2xkLCBvZiBjb3Vyc2UpLCBzbworIAkgICAgIHdlIGNhbiBqdXN0IHJl dHVybiBoZXJlLiAqLworIAkgIGlmIChSTF9JU1NUQVRFIChSTF9TVEFURV9DQUxMQkFDSykpCisg CSAgICByZXR1cm4gKDApOworQEAgLTQ3OSw2ICs1MTcsMjAgQEAgcmVhZGxpbmVfaW50ZXJuYWxf Y2hhcmxvb3AgKCkKKyAgICAgICBjID0gcmxfcmVhZF9rZXkgKCk7CisgICAgICAgUkxfVU5TRVRT VEFURShSTF9TVEFURV9SRUFEQ01EKTsKKyAKKysgICAgICAvKiBsb29rIGF0IGlucHV0LmM6cmxf Z2V0YygpIGZvciB0aGUgY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaCB0aGlzIHdpbGwKKysJIGJl IHJldHVybmVkOyBwdW50IGltbWVkaWF0ZWx5IG9uIHJlYWQgZXJyb3Igd2l0aG91dCBjb252ZXJ0 aW5nIGl0IHRvCisrCSBhIG5ld2xpbmUuICovCisrICAgICAgaWYgKGMgPT0gUkVBREVSUikKKysJ eworKyNpZiBkZWZpbmVkIChSRUFETElORV9DQUxMQkFDS1MpCisrCSAgUkxfU0VUU1RBVEUoUkxf U1RBVEVfRE9ORSk7CisrCSAgcmV0dXJuIChybF9kb25lID0gMSk7CisrI2Vsc2UKKysJICBlb2Zf Zm91bmQgPSAxOworKwkgIGJyZWFrOworKyNlbmRpZgorKwl9CisrCisgICAgICAgLyogRU9GIHR5 cGVkIHRvIGEgbm9uLWJsYW5rIGxpbmUgaXMgYSA8Tkw+LiAqLworICAgICAgIGlmIChjID09IEVP RiAmJiBybF9lbmQpCisgCWMgPSBORVdMSU5FOworQEAgLTQ5OCw2ICs1NTAsNyBAQCByZWFkbGlu ZV9pbnRlcm5hbF9jaGFybG9vcCAoKQorIAorICAgICAgIGxhc3RjID0gYzsKKyAgICAgICBfcmxf ZGlzcGF0Y2ggKCh1bnNpZ25lZCBjaGFyKWMsIF9ybF9rZXltYXApOworKyAgICAgIFJMX0NIRUNL X1NJR05BTFMgKCk7CisgCisgICAgICAgLyogSWYgdGhlcmUgd2FzIG5vIGNoYW5nZSBpbiBfcmxf bGFzdF9jb21tYW5kX3dhc19raWxsLCB0aGVuIG5vIGtpbGwKKyAJIGhhcyB0YWtlbiBwbGFjZS4g IE5vdGUgdGhhdCBpZiBpbnB1dCBpcyBwZW5kaW5nIHdlIGFyZSByZWFkaW5nCitAQCAtNTc2LDcg KzYyOSw3IEBAIHZvaWQKKyBfcmxfa2V5c2VxX2N4dF9kaXNwb3NlIChjeHQpCisgICAgIF9ybF9r ZXlzZXFfY3h0ICpjeHQ7CisgeworLSAgZnJlZSAoY3h0KTsKKysgIHhmcmVlIChjeHQpOworIH0K KyAKKyB2b2lkCitAQCAtNjE4LDcgKzY3MSw2IEBAIF9ybF9kaXNwYXRjaF9jYWxsYmFjayAoY3h0 KQorICAgaW50IG5rZXksIHI7CisgCisgICAvKiBGb3Igbm93ICovCistI2lmIDEKKyAgIC8qIFRo ZSBmaXJzdCB0aW1lIHRoaXMgY29udGV4dCBpcyB1c2VkLCB3ZSB3YW50IHRvIHJlYWQgaW5wdXQg YW5kIGRpc3BhdGNoCisgICAgICBvbiBpdC4gIFdoZW4gdHJhdmVyc2luZyB0aGUgY2hhaW4gb2Yg Y29udGV4dHMgYmFjayBgdXAnLCB3ZSB3YW50IHRvIHVzZQorICAgICAgdGhlIHZhbHVlIGZyb20g dGhlIG5leHQgY29udGV4dCBkb3duLiAgV2UncmUgc2ltdWxhdGluZyByZWN1cnNpb24gdXNpbmcK K0BAIC02MjYsMTggKzY3OCwyMiBAQCBfcmxfZGlzcGF0Y2hfY2FsbGJhY2sgKGN4dCkKKyAgIGlm ICgoY3h0LT5mbGFncyAmIEtTRVFfRElTUEFUQ0hFRCkgPT0gMCkKKyAgICAgeworICAgICAgIG5r ZXkgPSBfcmxfc3Vic2VxX2dldGNoYXIgKGN4dC0+b2tleSk7CisrICAgICAgaWYgKG5rZXkgPCAw KQorKwl7CisrCSAgX3JsX2Fib3J0X2ludGVybmFsICgpOworKwkgIHJldHVybiAtMTsKKysJfQor ICAgICAgIHIgPSBfcmxfZGlzcGF0Y2hfc3Vic2VxIChua2V5LCBjeHQtPmRtYXAsIGN4dC0+c3Vi c2VxX2FyZyk7CisgICAgICAgY3h0LT5mbGFncyB8PSBLU0VRX0RJU1BBVENIRUQ7CisgICAgIH0K KyAgIGVsc2UKKyAgICAgciA9IGN4dC0+Y2hpbGR2YWw7CistI2Vsc2UKKy0gIHIgPSBfcmxfZGlz cGF0Y2hfc3Vic2VxIChua2V5LCBjeHQtPmRtYXAsIGN4dC0+c3Vic2VxX2FyZyk7CistI2VuZGlm CisgCisgICAvKiBGb3Igbm93ICovCistICByID0gX3JsX3N1YnNlcV9yZXN1bHQgKHIsIGN4dC0+ b2xkbWFwLCBjeHQtPm9rZXksIChjeHQtPmZsYWdzICYgS1NFUV9TVUJTRVEpKTsKKysgIGlmIChy ICE9IC0zKQkvKiBkb24ndCBkbyB0aGlzIGlmIHdlIGluZGljYXRlIHRoZXJlIHdpbGwgYmUgb3Ro ZXIgbWF0Y2hlcyAqLworKyAgICByID0gX3JsX3N1YnNlcV9yZXN1bHQgKHIsIGN4dC0+b2xkbWFw LCBjeHQtPm9rZXksIChjeHQtPmZsYWdzICYgS1NFUV9TVUJTRVEpKTsKKyAKKysgIFJMX0NIRUNL X1NJR05BTFMgKCk7CisgICBpZiAociA9PSAwKQkJCS8qIHN1Y2Nlc3MhICovCisgICAgIHsKKyAg ICAgICBfcmxfa2V5c2VxX2NoYWluX2Rpc3Bvc2UgKCk7CitAQCAtNzI0LDYgKzc4MCw4IEBAIF9y bF9kaXNwYXRjaF9zdWJzZXEgKGtleSwgbWFwLCBnb3Rfc3Vic2VxKQorIAkgICAgIHJlbWVtYmVy IHRoZSBsYXN0IGNvbW1hbmQgZXhlY3V0ZWQgaW4gdGhpcyB2YXJpYWJsZS4gKi8KKyAJICBpZiAo cmxfcGVuZGluZ19pbnB1dCA9PSAwICYmIG1hcFtrZXldLmZ1bmN0aW9uICE9IHJsX2RpZ2l0X2Fy Z3VtZW50KQorIAkgICAgcmxfbGFzdF9mdW5jID0gbWFwW2tleV0uZnVuY3Rpb247CisrCisrCSAg UkxfQ0hFQ0tfU0lHTkFMUyAoKTsKKyAJfQorICAgICAgIGVsc2UgaWYgKG1hcFtBTllPVEhFUktF WV0uZnVuY3Rpb24pCisgCXsKK0BAIC03NzgsNyArODM2LDcgQEAgX3JsX2Rpc3BhdGNoX3N1YnNl cSAoa2V5LCBtYXAsIGdvdF9zdWJzZXEpCisgCSAgICB7CisgCSAgICAgIC8qIFJldHVybiAwIG9u bHkgdGhlIGZpcnN0IHRpbWUsIHRvIGluZGljYXRlIHN1Y2Nlc3MgdG8KKyAJCSBfcmxfY2FsbGJh Y2tfcmVhZF9jaGFyLiAgVGhlIHJlc3Qgb2YgdGhlIHRpbWUsIHdlJ3JlIGNhbGxlZAorLQkJIGZy b20gX3JsX2Rpc3BhdGNoX2NhbGxiYWNrLCBzbyB3ZSByZXR1cm4gMyB0byBpbmRpY2F0ZQorKwkJ IGZyb20gX3JsX2Rpc3BhdGNoX2NhbGxiYWNrLCBzbyB3ZSByZXR1cm4gLTMgdG8gaW5kaWNhdGUK KyAJCSBzcGVjaWFsIGhhbmRsaW5nIGlzIG5lY2Vzc2FyeS4gKi8KKyAJICAgICAgciA9IFJMX0lT U1RBVEUgKFJMX1NUQVRFX01VTFRJS0VZKSA/IC0zIDogMDsKKyAJICAgICAgY3h0ID0gX3JsX2tl eXNlcV9jeHRfYWxsb2MgKCk7CitAQCAtODQyLDcgKzkwMCw3IEBAIF9ybF9zdWJzZXFfcmVzdWx0 IChyLCBtYXAsIGtleSwgZ290X3N1YnNlcSkKKyAgIEtleW1hcCBtOworICAgaW50IHR5cGUsIG50 OworICAgcmxfY29tbWFuZF9mdW5jX3QgKmZ1bmMsICpuZjsKKy0gIAorKworICAgaWYgKHIgPT0g LTIpCisgICAgIC8qIFdlIGRpZG4ndCBtYXRjaCBhbnl0aGluZywgYW5kIHRoZSBrZXltYXAgd2Un cmUgaW5kZXhlZCBpbnRvCisgICAgICAgIHNoYWRvd2VkIGEgZnVuY3Rpb24gcHJldmlvdXNseSBi b3VuZCB0byB0aGF0IHByZWZpeC4gIENhbGwKK0BAIC0xMTE2LDYgKzExNzQsMTAgQEAgYmluZF9h cnJvd19rZXlzICgpCisgCisgI2lmIGRlZmluZWQgKFZJX01PREUpCisgICBiaW5kX2Fycm93X2tl eXNfaW50ZXJuYWwgKHZpX21vdmVtZW50X2tleW1hcCk7CisrICAvKiBVbmJpbmQgdmlfbW92ZW1l bnRfa2V5bWFwW0VTQ10gdG8gYWxsb3cgdXNlcnMgdG8gcmVwZWF0ZWRseSBoaXQgRVNDCisrICAg ICBpbiB2aSBjb21tYW5kIG1vZGUgd2hpbGUgc3RpbGwgYWxsb3dpbmcgdGhlIGFycm93IGtleXMg dG8gd29yay4gKi8KKysgIGlmICh2aV9tb3ZlbWVudF9rZXltYXBbRVNDXS50eXBlID09IElTS01B UCkKKysgICAgcmxfYmluZF9rZXlzZXFfaW5fbWFwICgiXDAzMyIsIChybF9jb21tYW5kX2Z1bmNf dCAqKU5VTEwsIHZpX21vdmVtZW50X2tleW1hcCk7CisgICBiaW5kX2Fycm93X2tleXNfaW50ZXJu YWwgKHZpX2luc2VydGlvbl9rZXltYXApOworICNlbmRpZgorIH0KKy0tLSBhL3JlYWRsaW5lL3Jl YWRsaW5lLmgKKysrKyBiL3JlYWRsaW5lL3JlYWRsaW5lLmgKK0BAIC0xLDI0ICsxLDIzIEBACisg LyogUmVhZGxpbmUuaCAtLSB0aGUgbmFtZXMgb2YgZnVuY3Rpb25zIGNhbGxhYmxlIGZyb20gd2l0 aGluIHJlYWRsaW5lLiAqLworIAorLS8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA1IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDExIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRpbmcgbGluZXMg b2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisrICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSks IGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2 ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAg IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAK Ky0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFkbGlu ZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVu IHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGlu IGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhh dmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx IFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgIWRlZmlu ZWQgKF9SRUFETElORV9IXykKKyAjZGVmaW5lIF9SRUFETElORV9IXworQEAgLTQwLDkgKzM5LDkg QEAgZXh0ZXJuICJDIiB7CisgI2VuZGlmCisgCisgLyogSGV4LWVuY29kZWQgUmVhZGxpbmUgdmVy c2lvbiBudW1iZXIuICovCistI2RlZmluZSBSTF9SRUFETElORV9WRVJTSU9OCTB4MDUwMQkJLyog UmVhZGxpbmUgNS4xICovCistI2RlZmluZSBSTF9WRVJTSU9OX01BSk9SCTUKKy0jZGVmaW5lIFJM X1ZFUlNJT05fTUlOT1IJMQorKyNkZWZpbmUgUkxfUkVBRExJTkVfVkVSU0lPTgkweDA2MDIJCS8q IFJlYWRsaW5lIDYuMiAqLworKyNkZWZpbmUgUkxfVkVSU0lPTl9NQUpPUgk2CisrI2RlZmluZSBS TF9WRVJTSU9OX01JTk9SCTIKKyAKKyAvKiBSZWFkbGluZSBkYXRhIHN0cnVjdHVyZXMuICovCisg CitAQCAtOTYsNiArOTUsNyBAQCBleHRlcm4gaW50IHJsX2ZvcndhcmRfd29yZCBQQVJBTVMoKGlu dCwgaW50KSk7CisgZXh0ZXJuIGludCBybF9iYWNrd2FyZF93b3JkIFBBUkFNUygoaW50LCBpbnQp KTsKKyBleHRlcm4gaW50IHJsX3JlZnJlc2hfbGluZSBQQVJBTVMoKGludCwgaW50KSk7CisgZXh0 ZXJuIGludCBybF9jbGVhcl9zY3JlZW4gUEFSQU1TKChpbnQsIGludCkpOworK2V4dGVybiBpbnQg cmxfc2tpcF9jc2lfc2VxdWVuY2UgUEFSQU1TKChpbnQsIGludCkpOworIGV4dGVybiBpbnQgcmxf YXJyb3dfa2V5cyBQQVJBTVMoKGludCwgaW50KSk7CisgCisgLyogQmluZGFibGUgY29tbWFuZHMg Zm9yIGluc2VydGluZyBhbmQgZGVsZXRpbmcgdGV4dC4gKi8KK0BAIC0xNTEsNyArMTUxLDkgQEAg ZXh0ZXJuIGludCBybF9kdW1wX3ZhcmlhYmxlcyBQQVJBTVMoKGludCwgaW50KSk7CisgZXh0ZXJu IGludCBybF9jb21wbGV0ZSBQQVJBTVMoKGludCwgaW50KSk7CisgZXh0ZXJuIGludCBybF9wb3Nz aWJsZV9jb21wbGV0aW9ucyBQQVJBTVMoKGludCwgaW50KSk7CisgZXh0ZXJuIGludCBybF9pbnNl cnRfY29tcGxldGlvbnMgUEFSQU1TKChpbnQsIGludCkpOworK2V4dGVybiBpbnQgcmxfb2xkX21l bnVfY29tcGxldGUgUEFSQU1TKChpbnQsIGludCkpOworIGV4dGVybiBpbnQgcmxfbWVudV9jb21w bGV0ZSBQQVJBTVMoKGludCwgaW50KSk7CisrZXh0ZXJuIGludCBybF9iYWNrd2FyZF9tZW51X2Nv bXBsZXRlIFBBUkFNUygoaW50LCBpbnQpKTsKKyAKKyAvKiBCaW5kYWJsZSBjb21tYW5kcyBmb3Ig a2lsbGluZyBhbmQgeWFua2luZyB0ZXh0LCBhbmQgbWFuYWdpbmcgdGhlIGtpbGwgcmluZy4gKi8K KyBleHRlcm4gaW50IHJsX2tpbGxfd29yZCBQQVJBTVMoKGludCwgaW50KSk7CitAQCAtMjMzLDYg KzIzNSw3IEBAIGV4dGVybiBpbnQgcmxfdmlfYXBwZW5kX21vZGUgUEFSQU1TKChpbnQsIGludCkp OworIGV4dGVybiBpbnQgcmxfdmlfYXBwZW5kX2VvbCBQQVJBTVMoKGludCwgaW50KSk7CisgZXh0 ZXJuIGludCBybF92aV9lb2ZfbWF5YmUgUEFSQU1TKChpbnQsIGludCkpOworIGV4dGVybiBpbnQg cmxfdmlfaW5zZXJ0aW9uX21vZGUgUEFSQU1TKChpbnQsIGludCkpOworK2V4dGVybiBpbnQgcmxf dmlfaW5zZXJ0X21vZGUgUEFSQU1TKChpbnQsIGludCkpOworIGV4dGVybiBpbnQgcmxfdmlfbW92 ZW1lbnRfbW9kZSBQQVJBTVMoKGludCwgaW50KSk7CisgZXh0ZXJuIGludCBybF92aV9hcmdfZGln aXQgUEFSQU1TKChpbnQsIGludCkpOworIGV4dGVybiBpbnQgcmxfdmlfY2hhbmdlX2Nhc2UgUEFS QU1TKChpbnQsIGludCkpOworQEAgLTQyMCw2ICs0MjMsNyBAQCBleHRlcm4gaW50IHJsX3NldF9r ZXlib2FyZF9pbnB1dF90aW1lb3V0IFBBUkFNUygoaW50KSk7CisgZXh0ZXJuIHZvaWQgcmxfZXh0 ZW5kX2xpbmVfYnVmZmVyIFBBUkFNUygoaW50KSk7CisgZXh0ZXJuIGludCBybF9kaW5nIFBBUkFN Uygodm9pZCkpOworIGV4dGVybiBpbnQgcmxfYWxwaGFiZXRpYyBQQVJBTVMoKGludCkpOworK2V4 dGVybiB2b2lkIHJsX2ZyZWUgUEFSQU1TKCh2b2lkICopKTsKKyAKKyAvKiBSZWFkbGluZSBzaWdu YWwgaGFuZGxpbmcsIGZyb20gc2lnbmFscy5jICovCisgZXh0ZXJuIGludCBybF9zZXRfc2lnbmFs cyBQQVJBTVMoKHZvaWQpKTsKK0BAIC00MjcsNyArNDMxLDkgQEAgZXh0ZXJuIGludCBybF9jbGVh cl9zaWduYWxzIFBBUkFNUygodm9pZCkpOworIGV4dGVybiB2b2lkIHJsX2NsZWFudXBfYWZ0ZXJf c2lnbmFsIFBBUkFNUygodm9pZCkpOworIGV4dGVybiB2b2lkIHJsX3Jlc2V0X2FmdGVyX3NpZ25h bCBQQVJBTVMoKHZvaWQpKTsKKyBleHRlcm4gdm9pZCBybF9mcmVlX2xpbmVfc3RhdGUgUEFSQU1T KCh2b2lkKSk7CistIAorKworK2V4dGVybiB2b2lkIHJsX2VjaG9fc2lnbmFsX2NoYXIgUEFSQU1T KChpbnQpKTsgCisrCisgZXh0ZXJuIGludCBybF9zZXRfcGFyZW5fYmxpbmtfdGltZW91dCBQQVJB TVMoKGludCkpOworIAorIC8qIFVuZG9jdW1lbnRlZC4gKi8KK0BAIC00OTMsNiArNDk5LDEwIEBA IGV4dGVybiBjb25zdCBjaGFyICpybF9yZWFkbGluZV9uYW1lOworICAgIHJlYWRsaW5lICgpLCBh bmQgc2hvdWxkIG5vdCBiZSBhc3NpZ25lZCB0byBkaXJlY3RseS4gKi8KKyBleHRlcm4gY2hhciAq cmxfcHJvbXB0OworIAorKy8qIFRoZSBwcm9tcHQgc3RyaW5nIHRoYXQgaXMgYWN0dWFsbHkgZGlz cGxheWVkIGJ5IHJsX3JlZGlzcGxheS4gIFB1YmxpYyBzbworKyAgIGFwcGxpY2F0aW9ucyBjYW4g bW9yZSBlYXNpbHkgc3VwcGx5IHRoZWlyIG93biByZWRpc3BsYXkgZnVuY3Rpb25zLiAqLworK2V4 dGVybiBjaGFyICpybF9kaXNwbGF5X3Byb21wdDsKKysKKyAvKiBUaGUgbGluZSBidWZmZXIgdGhh dCBpcyBpbiB1c2UuICovCisgZXh0ZXJuIGNoYXIgKnJsX2xpbmVfYnVmZmVyOworIAorQEAgLTU5 OSw2ICs2MDksMTAgQEAgZXh0ZXJuIGludCBybF9jYXRjaF9zaWd3aW5jaDsKKyAgICBmaWxlbmFt ZSBjb21wbGV0ZXIuICovCisgZXh0ZXJuIHJsX2NvbXBlbnRyeV9mdW5jX3QgKnJsX2NvbXBsZXRp b25fZW50cnlfZnVuY3Rpb247CisgCisrLyogT3B0aW9uYWwgZ2VuZXJhdG9yIGZvciBtZW51IGNv bXBsZXRpb24uICBEZWZhdWx0IGlzCisrICAgcmxfY29tcGxldGlvbl9lbnRyeV9mdW5jdGlvbiAo cmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5jdGlvbikuICovCisrIGV4dGVybiBybF9jb21wZW50 cnlfZnVuY190ICpybF9tZW51X2NvbXBsZXRpb25fZW50cnlfZnVuY3Rpb247CisrCisgLyogSWYg cmxfaWdub3JlX3NvbWVfY29tcGxldGlvbnNfZnVuY3Rpb24gaXMgbm9uLU5VTEwgaXQgaXMgdGhl IGFkZHJlc3MKKyAgICBvZiBhIGZ1bmN0aW9uIHRvIGNhbGwgYWZ0ZXIgYWxsIG9mIHRoZSBwb3Nz aWJsZSBtYXRjaGVzIGhhdmUgYmVlbgorICAgIGdlbmVyYXRlZCwgYnV0IGJlZm9yZSB0aGUgYWN0 dWFsIGNvbXBsZXRpb24gaXMgZG9uZSB0byB0aGUgaW5wdXQgbGluZS4KK0BAIC02NTIsMTggKzY2 NiwzNyBAQCBleHRlcm4gY29uc3QgY2hhciAqcmxfc3BlY2lhbF9wcmVmaXhlczsKKyAgICBjb21w bGV0aW5nIG9uIGEgZGlyZWN0b3J5IG5hbWUuICBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGgK KyAgICB0aGUgYWRkcmVzcyBvZiBhIHN0cmluZyAodGhlIGN1cnJlbnQgZGlyZWN0b3J5IG5hbWUp IGFzIGFuIGFyZy4gIEl0CisgICAgY2hhbmdlcyB3aGF0IGlzIGRpc3BsYXllZCB3aGVuIHRoZSBw b3NzaWJsZSBjb21wbGV0aW9ucyBhcmUgcHJpbnRlZAorLSAgIG9yIGluc2VydGVkLiAqLworKyAg IG9yIGluc2VydGVkLiAgVGhlIGRpcmVjdG9yeSBjb21wbGV0aW9uIGhvb2sgc2hvdWxkIHBlcmZv cm0KKysgICBhbnkgbmVjZXNzYXJ5IGRlcXVvdGluZy4gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIHJl dHVybiAxIGlmIGl0IG1vZGlmaWVzCisrICAgdGhlIGRpcmVjdG9yeSBuYW1lIHBvaW50ZXIgcGFz c2VkIGFzIGFuIGFyZ3VtZW50LiAgSWYgdGhlIGRpcmVjdG9yeQorKyAgIGNvbXBsZXRpb24gaG9v ayByZXR1cm5zIDAsIGl0IHNob3VsZCBub3QgbW9kaWZ5IHRoZSBkaXJlY3RvcnkgbmFtZQorKyAg IHBvaW50ZXIgcGFzc2VkIGFzIGFuIGFyZ3VtZW50LiAqLworIGV4dGVybiBybF9pY3BwZnVuY190 ICpybF9kaXJlY3RvcnlfY29tcGxldGlvbl9ob29rOworIAorIC8qIElmIG5vbi16ZXJvLCB0aGlz IGlzIHRoZSBhZGRyZXNzIG9mIGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIGNvbXBsZXRpbmcKKyAg ICBhIGRpcmVjdG9yeSBuYW1lLiAgVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgYWRkcmVzcyBvZiB0 aGUgZGlyZWN0b3J5IG5hbWUKKyAgICB0byBiZSBtb2RpZmllZCBhcyBhbiBhcmd1bWVudC4gIFVu bGlrZSBybF9kaXJlY3RvcnlfY29tcGxldGlvbl9ob29rLCBpdAorICAgIG9ubHkgbW9kaWZpZXMg dGhlIGRpcmVjdG9yeSBuYW1lIHVzZWQgaW4gb3BlbmRpcigyKSwgbm90IHdoYXQgaXMgZGlzcGxh eWVkCistICAgd2hlbiB0aGUgcG9zc2libGUgY29tcGxldGlvbnMgYXJlIHByaW50ZWQgb3IgaW5z ZXJ0ZWQuICBJdCBpcyBjYWxsZWQKKy0gICBiZWZvcmUgcmxfZGlyZWN0b3J5X2NvbXBsZXRpb25f aG9vay4gIEknbSBub3QgaGFwcHkgd2l0aCBob3cgdGhpcyB3b3JrcworLSAgIHlldCwgc28gaXQn cyB1bmRvY3VtZW50ZWQuICovCisrICAgd2hlbiB0aGUgcG9zc2libGUgY29tcGxldGlvbnMgYXJl IHByaW50ZWQgb3IgaW5zZXJ0ZWQuICBJZiBzZXQsIGl0IHRha2VzCisrICAgcHJlY2VkZW5jZSBv dmVyIHJsX2RpcmVjdG9yeV9jb21wbGV0aW9uX2hvb2suICBUaGUgZGlyZWN0b3J5IHJld3JpdGUK KysgICBob29rIHNob3VsZCBwZXJmb3JtIGFueSBuZWNlc3NhcnkgZGVxdW90aW5nLiAgVGhpcyBm dW5jdGlvbiBoYXMgdGhlIHNhbWUKKysgICByZXR1cm4gdmFsdWUgcHJvcGVydGllcyBhcyB0aGUg ZGlyZWN0b3J5X2NvbXBsZXRpb25faG9vay4KKysKKysgICBJJ20gbm90IGhhcHB5IHdpdGggaG93 IHRoaXMgd29ya3MgeWV0LCBzbyBpdCdzIHVuZG9jdW1lbnRlZC4gIEknbSB0cnlpbmcKKysgICBp dCBpbiBiYXNoIHRvIHNlZSBob3cgd2VsbCBpdCBnb2VzLiAqLworIGV4dGVybiBybF9pY3BwZnVu Y190ICpybF9kaXJlY3RvcnlfcmV3cml0ZV9ob29rOworIAorKy8qIElmIG5vbi16ZXJvLCB0aGlz IGlzIHRoZSBhZGRyZXNzIG9mIGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHJlYWRpbmcKKysgICBk aXJlY3RvcnkgZW50cmllcyBmcm9tIHRoZSBmaWxlc3lzdGVtIGZvciBjb21wbGV0aW9uIGFuZCBj b21wYXJpbmcKKysgICB0aGVtIHRvIHRoZSBwYXJ0aWFsIHdvcmQgdG8gYmUgY29tcGxldGVkLiAg VGhlIGZ1bmN0aW9uIHNob3VsZAorKyAgIGVpdGhlciByZXR1cm4gaXRzIGZpcnN0IGFyZ3VtZW50 IChpZiBubyBjb252ZXJzaW9uIHRha2VzIHBsYWNlKSBvcgorKyAgIG5ld2x5LWFsbG9jYXRlZCBt ZW1vcnkuICBUaGlzIGNhbiwgZm9yIGluc3RhbmNlLCBjb252ZXJ0IGZpbGVuYW1lcworKyAgIGJl dHdlZW4gY2hhcmFjdGVyIHNldHMgZm9yIGNvbXBhcmlzb24gYWdhaW5zdCB3aGF0J3MgdHlwZWQg YXQgdGhlCisrICAga2V5Ym9hcmQuICBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgd2hhdCBpcyBhZGRl ZCB0byB0aGUgbGlzdCBvZgorKyAgIG1hdGNoZXMuICBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRo ZSBsZW5ndGggb2YgdGhlIGZpbGVuYW1lIHRvIGJlCisrICAgY29udmVydGVkLiAqLworK2V4dGVy biBybF9kZXF1b3RlX2Z1bmNfdCAqcmxfZmlsZW5hbWVfcmV3cml0ZV9ob29rOworKworIC8qIEJh Y2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbnMgb2YgcmVhZGxpbmUu ICovCisgI2RlZmluZSBybF9zeW1ib2xpY19saW5rX2hvb2sgcmxfZGlyZWN0b3J5X2NvbXBsZXRp b25faG9vaworIAorQEAgLTcxMyw2ICs3NDYsOSBAQCBleHRlcm4gaW50IHJsX2F0dGVtcHRlZF9j b21wbGV0aW9uX292ZXI7CisgICAgZnVuY3Rpb25zLiAqLworIGV4dGVybiBpbnQgcmxfY29tcGxl dGlvbl90eXBlOworIAorKy8qIFNldCB0byB0aGUgbGFzdCBrZXkgdXNlZCB0byBpbnZva2Ugb25l IG9mIHRoZSBjb21wbGV0aW9uIGZ1bmN0aW9ucyAqLworK2V4dGVybiBpbnQgcmxfY29tcGxldGlv bl9pbnZva2luZ19rZXk7CisrCisgLyogVXAgdG8gdGhpcyBtYW55IGl0ZW1zIHdpbGwgYmUgZGlz cGxheWVkIGluIHJlc3BvbnNlIHRvIGEKKyAgICBwb3NzaWJsZS1jb21wbGV0aW9ucyBjYWxsLiAg QWZ0ZXIgdGhhdCwgd2UgYXNrIHRoZSB1c2VyIGlmIHNoZQorICAgIGlzIHN1cmUgc2hlIHdhbnRz IHRvIHNlZSB0aGVtIGFsbC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDEwMC4gKi8KK0BAIC03Mzks NiArNzc1LDkgQEAgZXh0ZXJuIGludCBybF9jb21wbGV0aW9uX2ZvdW5kX3F1b3RlOworICAgIGFw cGxpY2F0aW9uLXNwZWNpZmljIGNvbXBsZXRpb24gZnVuY3Rpb24uICovCisgZXh0ZXJuIGludCBy bF9jb21wbGV0aW9uX3N1cHByZXNzX3F1b3RlOworIAorKy8qIElmIG5vbi16ZXJvLCByZWFkbGlu ZSB3aWxsIHNvcnQgdGhlIGNvbXBsZXRpb24gbWF0Y2hlcy4gIE9uIGJ5IGRlZmF1bHQuICovCisr ZXh0ZXJuIGludCBybF9zb3J0X2NvbXBsZXRpb25fbWF0Y2hlczsKKysKKyAvKiBJZiBub24temVy bywgYSBzbGFzaCB3aWxsIGJlIGFwcGVuZGVkIHRvIGNvbXBsZXRlZCBmaWxlbmFtZXMgdGhhdCBh cmUKKyAgICBzeW1ib2xpYyBsaW5rcyB0byBkaXJlY3RvcnkgbmFtZXMsIHN1YmplY3QgdG8gdGhl IHZhbHVlIG9mIHRoZQorICAgIG1hcmstZGlyZWN0b3JpZXMgdmFyaWFibGUgKHdoaWNoIGlzIHVz ZXItc2V0dGFibGUpLiAgVGhpcyBleGlzdHMgc28KK0BAIC03NTcsNiArNzk2LDEwIEBAIGV4dGVy biBpbnQgcmxfaWdub3JlX2NvbXBsZXRpb25fZHVwbGljYXRlczsKKyAgICBjb21wbGV0aW9uIGNo YXJhY3RlciB3aWxsIGJlIGluc2VydGVkIGFzIGFueSBvdGhlci4gKi8KKyBleHRlcm4gaW50IHJs X2luaGliaXRfY29tcGxldGlvbjsKKyAKKysvKiBJbnB1dCBlcnJvcjsgY2FuIGJlIHJldHVybmVk IGJ5ICgqcmxfZ2V0Y19mdW5jdGlvbikgaWYgcmVhZGxpbmUgaXMgcmVhZGluZworKyAgIGEgdG9w LWxldmVsIGNvbW1hbmQgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX1JFQURDTUQpKS4gKi8KKysjZGVm aW5lIFJFQURFUlIJCQkoLTIpCisrCisgLyogRGVmaW5pdGlvbnMgYXZhaWxhYmxlIGZvciB1c2Ug YnkgcmVhZGxpbmUgY2xpZW50cy4gKi8KKyAjZGVmaW5lIFJMX1BST01QVF9TVEFSVF9JR05PUkUJ J1wwMDEnCisgI2RlZmluZSBSTF9QUk9NUFRfRU5EX0lHTk9SRQknXDAwMicKK0BAIC03NzAsMzEg KzgxMywzMiBAQCBleHRlcm4gaW50IHJsX2luaGliaXRfY29tcGxldGlvbjsKKyAvKiBQb3NzaWJs ZSBzdGF0ZSB2YWx1ZXMgZm9yIHJsX3JlYWRsaW5lX3N0YXRlICovCisgI2RlZmluZSBSTF9TVEFU RV9OT05FCQkweDAwMDAwMAkJLyogbm8gc3RhdGU7IGJlZm9yZSBmaXJzdCBjYWxsICovCisgCist I2RlZmluZSBSTF9TVEFURV9JTklUSUFMSVpJTkcJMHgwMDAwMDEJLyogaW5pdGlhbGl6aW5nICov CistI2RlZmluZSBSTF9TVEFURV9JTklUSUFMSVpFRAkweDAwMDAwMgkvKiBpbml0aWFsaXphdGlv biBkb25lICovCistI2RlZmluZSBSTF9TVEFURV9URVJNUFJFUFBFRAkweDAwMDAwNAkvKiB0ZXJt aW5hbCBpcyBwcmVwcGVkICovCistI2RlZmluZSBSTF9TVEFURV9SRUFEQ01ECTB4MDAwMDA4CS8q IHJlYWRpbmcgYSBjb21tYW5kIGtleSAqLworLSNkZWZpbmUgUkxfU1RBVEVfTUVUQU5FWFQJMHgw MDAwMTAJLyogcmVhZGluZyBpbnB1dCBhZnRlciBFU0MgKi8KKy0jZGVmaW5lIFJMX1NUQVRFX0RJ U1BBVENISU5HCTB4MDAwMDIwCS8qIGRpc3BhdGNoaW5nIHRvIGEgY29tbWFuZCAqLworLSNkZWZp bmUgUkxfU1RBVEVfTU9SRUlOUFVUCTB4MDAwMDQwCS8qIHJlYWRpbmcgbW9yZSBpbnB1dCBpbiBh IGNvbW1hbmQgZnVuY3Rpb24gKi8KKy0jZGVmaW5lIFJMX1NUQVRFX0lTRUFSQ0gJMHgwMDAwODAJ LyogZG9pbmcgaW5jcmVtZW50YWwgc2VhcmNoICovCistI2RlZmluZSBSTF9TVEFURV9OU0VBUkNI CTB4MDAwMTAwCS8qIGRvaW5nIG5vbi1pbmMgc2VhcmNoICovCistI2RlZmluZSBSTF9TVEFURV9T RUFSQ0gJCTB4MDAwMjAwCS8qIGRvaW5nIGEgaGlzdG9yeSBzZWFyY2ggKi8KKy0jZGVmaW5lIFJM X1NUQVRFX05VTUVSSUNBUkcJMHgwMDA0MDAJLyogcmVhZGluZyBudW1lcmljIGFyZ3VtZW50ICov CistI2RlZmluZSBSTF9TVEFURV9NQUNST0lOUFVUCTB4MDAwODAwCS8qIGdldHRpbmcgaW5wdXQg ZnJvbSBhIG1hY3JvICovCistI2RlZmluZSBSTF9TVEFURV9NQUNST0RFRgkweDAwMTAwMAkvKiBk ZWZpbmluZyBrZXlib2FyZCBtYWNybyAqLworLSNkZWZpbmUgUkxfU1RBVEVfT1ZFUldSSVRFCTB4 MDAyMDAwCS8qIG92ZXJ3cml0ZSBtb2RlICovCistI2RlZmluZSBSTF9TVEFURV9DT01QTEVUSU5H CTB4MDA0MDAwCS8qIGRvaW5nIGNvbXBsZXRpb24gKi8KKy0jZGVmaW5lIFJMX1NUQVRFX1NJR0hB TkRMRVIJMHgwMDgwMDAJLyogaW4gcmVhZGxpbmUgc2lnaGFuZGxlciAqLworLSNkZWZpbmUgUkxf U1RBVEVfVU5ET0lORwkweDAxMDAwMAkvKiBkb2luZyBhbiB1bmRvICovCistI2RlZmluZSBSTF9T VEFURV9JTlBVVFBFTkRJTkcJMHgwMjAwMDAJLyogcmxfZXhlY3V0ZV9uZXh0IGNhbGxlZCAqLwor LSNkZWZpbmUgUkxfU1RBVEVfVFRZQ1NBVkVECTB4MDQwMDAwCS8qIHR0eSBzcGVjaWFsIGNoYXJz IHNhdmVkICovCistI2RlZmluZSBSTF9TVEFURV9DQUxMQkFDSwkweDA4MDAwMAkvKiB1c2luZyB0 aGUgY2FsbGJhY2sgaW50ZXJmYWNlICovCistI2RlZmluZSBSTF9TVEFURV9WSU1PVElPTgkweDEw MDAwMAkvKiByZWFkaW5nIHZpIG1vdGlvbiBhcmcgKi8KKy0jZGVmaW5lIFJMX1NUQVRFX01VTFRJ S0VZCTB4MjAwMDAwCS8qIHJlYWRpbmcgbXVsdGlwbGUta2V5IGNvbW1hbmQgKi8KKy0jZGVmaW5l IFJMX1NUQVRFX1ZJQ01ET05DRQkweDQwMDAwMAkvKiBlbnRlcmVkIHZpIGNvbW1hbmQgbW9kZSBh dCBsZWFzdCBvbmNlICovCistCistI2RlZmluZSBSTF9TVEFURV9ET05FCQkweDgwMDAwMAkvKiBk b25lOyBhY2NlcHRlZCBsaW5lICovCisrI2RlZmluZSBSTF9TVEFURV9JTklUSUFMSVpJTkcJMHgw MDAwMDAxCS8qIGluaXRpYWxpemluZyAqLworKyNkZWZpbmUgUkxfU1RBVEVfSU5JVElBTElaRUQJ MHgwMDAwMDAyCS8qIGluaXRpYWxpemF0aW9uIGRvbmUgKi8KKysjZGVmaW5lIFJMX1NUQVRFX1RF Uk1QUkVQUEVECTB4MDAwMDAwNAkvKiB0ZXJtaW5hbCBpcyBwcmVwcGVkICovCisrI2RlZmluZSBS TF9TVEFURV9SRUFEQ01ECTB4MDAwMDAwOAkvKiByZWFkaW5nIGEgY29tbWFuZCBrZXkgKi8KKysj ZGVmaW5lIFJMX1NUQVRFX01FVEFORVhUCTB4MDAwMDAxMAkvKiByZWFkaW5nIGlucHV0IGFmdGVy IEVTQyAqLworKyNkZWZpbmUgUkxfU1RBVEVfRElTUEFUQ0hJTkcJMHgwMDAwMDIwCS8qIGRpc3Bh dGNoaW5nIHRvIGEgY29tbWFuZCAqLworKyNkZWZpbmUgUkxfU1RBVEVfTU9SRUlOUFVUCTB4MDAw MDA0MAkvKiByZWFkaW5nIG1vcmUgaW5wdXQgaW4gYSBjb21tYW5kIGZ1bmN0aW9uICovCisrI2Rl ZmluZSBSTF9TVEFURV9JU0VBUkNICTB4MDAwMDA4MAkvKiBkb2luZyBpbmNyZW1lbnRhbCBzZWFy Y2ggKi8KKysjZGVmaW5lIFJMX1NUQVRFX05TRUFSQ0gJMHgwMDAwMTAwCS8qIGRvaW5nIG5vbi1p bmMgc2VhcmNoICovCisrI2RlZmluZSBSTF9TVEFURV9TRUFSQ0gJCTB4MDAwMDIwMAkvKiBkb2lu ZyBhIGhpc3Rvcnkgc2VhcmNoICovCisrI2RlZmluZSBSTF9TVEFURV9OVU1FUklDQVJHCTB4MDAw MDQwMAkvKiByZWFkaW5nIG51bWVyaWMgYXJndW1lbnQgKi8KKysjZGVmaW5lIFJMX1NUQVRFX01B Q1JPSU5QVVQJMHgwMDAwODAwCS8qIGdldHRpbmcgaW5wdXQgZnJvbSBhIG1hY3JvICovCisrI2Rl ZmluZSBSTF9TVEFURV9NQUNST0RFRgkweDAwMDEwMDAJLyogZGVmaW5pbmcga2V5Ym9hcmQgbWFj cm8gKi8KKysjZGVmaW5lIFJMX1NUQVRFX09WRVJXUklURQkweDAwMDIwMDAJLyogb3ZlcndyaXRl IG1vZGUgKi8KKysjZGVmaW5lIFJMX1NUQVRFX0NPTVBMRVRJTkcJMHgwMDA0MDAwCS8qIGRvaW5n IGNvbXBsZXRpb24gKi8KKysjZGVmaW5lIFJMX1NUQVRFX1NJR0hBTkRMRVIJMHgwMDA4MDAwCS8q IGluIHJlYWRsaW5lIHNpZ2hhbmRsZXIgKi8KKysjZGVmaW5lIFJMX1NUQVRFX1VORE9JTkcJMHgw MDEwMDAwCS8qIGRvaW5nIGFuIHVuZG8gKi8KKysjZGVmaW5lIFJMX1NUQVRFX0lOUFVUUEVORElO RwkweDAwMjAwMDAJLyogcmxfZXhlY3V0ZV9uZXh0IGNhbGxlZCAqLworKyNkZWZpbmUgUkxfU1RB VEVfVFRZQ1NBVkVECTB4MDA0MDAwMAkvKiB0dHkgc3BlY2lhbCBjaGFycyBzYXZlZCAqLworKyNk ZWZpbmUgUkxfU1RBVEVfQ0FMTEJBQ0sJMHgwMDgwMDAwCS8qIHVzaW5nIHRoZSBjYWxsYmFjayBp bnRlcmZhY2UgKi8KKysjZGVmaW5lIFJMX1NUQVRFX1ZJTU9USU9OCTB4MDEwMDAwMAkvKiByZWFk aW5nIHZpIG1vdGlvbiBhcmcgKi8KKysjZGVmaW5lIFJMX1NUQVRFX01VTFRJS0VZCTB4MDIwMDAw MAkvKiByZWFkaW5nIG11bHRpcGxlLWtleSBjb21tYW5kICovCisrI2RlZmluZSBSTF9TVEFURV9W SUNNRE9OQ0UJMHgwNDAwMDAwCS8qIGVudGVyZWQgdmkgY29tbWFuZCBtb2RlIGF0IGxlYXN0IG9u Y2UgKi8KKysjZGVmaW5lIFJMX1NUQVRFX1JFRElTUExBWUlORwkweDA4MDAwMDAJLyogdXBkYXRp bmcgdGVybWluYWwgZGlzcGxheSAqLworKworKyNkZWZpbmUgUkxfU1RBVEVfRE9ORQkJMHgxMDAw MDAwCS8qIGRvbmU7IGFjY2VwdGVkIGxpbmUgKi8KKyAKKyAjZGVmaW5lIFJMX1NFVFNUQVRFKHgp CQkocmxfcmVhZGxpbmVfc3RhdGUgfD0gKHgpKQorICNkZWZpbmUgUkxfVU5TRVRTVEFURSh4KQko cmxfcmVhZGxpbmVfc3RhdGUgJj0gfih4KSkKKy0tLSBhL3JlYWRsaW5lL3JsY29uZi5oCisrKysg Yi9yZWFkbGluZS9ybGNvbmYuaAorQEAgLTEsMjUgKzEsMjMgQEAKKyAvKiBybGNvbmYuaCAtLSBy ZWFkbGluZSBjb25maWd1cmF0aW9uIGRlZmluaXRpb25zICovCisgCistLyogQ29weXJpZ2h0IChD KSAxOTk0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykg MTk5Mi0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmls ZSBjb250YWlucyB0aGUgUmVhZGxpbmUgTGlicmFyeSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgor LSAgIHJvdXRpbmVzIGZvciBwcm92aWRpbmcgRW1hY3Mgc3R5bGUgbGluZSBpbnB1dCB0byBwcm9n cmFtcyB0aGF0IGFzaworLSAgIGZvciBpdC4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg R05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRp bmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRp bmcuICAgICAgCisgCistICAgVGhlIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdh cmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y IChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhlIExpYnJh cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0 CistICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUgR05VCistICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCist ICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0Uu ICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0 ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcg d2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKysqLworIAorICNpZiAhZGVmaW5lZCAoX1JMQ09ORl9IXykKKyAjZGVmaW5lIF9STENPTkZf SF8KK0BAIC0zNyw5ICszNSwxMiBAQAorIC8qIFVnbHkgYnV0IHdvcmtpbmcgaGFjayBmb3IgYmlu ZGluZyBwcmVmaXggbWV0YS4gKi8KKyAjZGVmaW5lIFBSRUZJWF9NRVRBX0hBQ0sKKyAKKy0vKiBU aGUgZmluYWwsIGxhc3QtZGl0Y2ggZWZmb3J0IGZpbGUgbmFtZSBmb3IgYW4gaW5pdCBmaWxlLiAq LworKy8qIFRoZSBuZXh0LXRvLWxhc3QtZGl0Y2ggZWZmb3J0IGZpbGUgbmFtZSBmb3IgYSB1c2Vy LXNwZWNpZmljIGluaXQgZmlsZS4gKi8KKyAjZGVmaW5lIERFRkFVTFRfSU5QVVRSQyAifi8uaW5w dXRyYyIKKyAKKysvKiBUaGUgdWx0aW1hdGUgbGFzdC1kaXRjaCBmaWxlbm5hbWUgZm9yIGFuIGlu aXQgZmlsZSAtLSBzeXN0ZW0td2lkZS4gKi8KKysjZGVmaW5lIFNZU19JTlBVVFJDICIvZXRjL2lu cHV0cmMiCisrCisgLyogSWYgZGVmaW5lZCwgZXhwYW5kIHRhYnMgdG8gc3BhY2VzLiAqLworICNk ZWZpbmUgRElTUExBWV9UQUJTCisgCistLS0gYS9yZWFkbGluZS9ybGRlZnMuaAorKysrIGIvcmVh ZGxpbmUvcmxkZWZzLmgKK0BAIC0yLDI2ICsyLDI0IEBACisgICAgZm9yIHJlYWRsaW5lLiAgVGhp cyBzaG91bGQgYmUgaW5jbHVkZWQgYWZ0ZXIgYW55IGZpbGVzIHRoYXQgZGVmaW5lCisgICAgc3lz dGVtLXNwZWNpZmljIGNvbnN0YW50cyBsaWtlIF9QT1NJWF9WRVJTSU9OIG9yIFVTRy4gKi8KKyAK Ky0vKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKyAKKy0gICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIFJlYWRsaW5lIExpYnJhcnkgKHRo ZSBMaWJyYXJ5KSwgYSBzZXQgb2YKKy0gICByb3V0aW5lcyBmb3IgcHJvdmlkaW5nIEVtYWNzIHN0 eWxlIGxpbmUgaW5wdXQgdG8gcHJvZ3JhbXMgdGhhdCBhc2sKKy0gICBmb3IgaXQuCisrICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEg bGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBp bnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBMaWJyYXJ5IGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBS ZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZl cnNpb24uCisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorIAorLSAgIFRoZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorLSAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorLSAgIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgICBSZWFkbGluZSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg CistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0 aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxs ZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9m IHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAg IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgIWRlZmluZWQgKF9STERFRlNf SF8pCisgI2RlZmluZSBfUkxERUZTX0hfCitAQCAtMzIsNiArMzAsMTAgQEAKKyAKKyAjaW5jbHVk ZSAicmxzdGRjLmgiCisgCisrI2lmIGRlZmluZWQgKFNUUkNPTExfQlJPS0VOKQorKyMgIHVuZGVm IEhBVkVfU1RSQ09MTAorKyNlbmRpZgorKworICNpZiBkZWZpbmVkIChfUE9TSVhfVkVSU0lPTikg JiYgIWRlZmluZWQgKFRFUk1JT1NfTUlTU0lORykKKyAjICBkZWZpbmUgVEVSTUlPU19UVFlfRFJJ VkVSCisgI2Vsc2UKKy0tLSBhL3JlYWRsaW5lL3JsbWJ1dGlsLmgKKysrKyBiL3JlYWRsaW5lL3Js bWJ1dGlsLmgKK0BAIC0xLDI0ICsxLDIzIEBACisgLyogcmxtYnV0aWwuaCAtLSB1dGlsaXR5IGZ1 bmN0aW9ucyBmb3IgbXVsdGlieXRlIGNoYXJhY3RlcnMuICovCisgCistLyogQ29weXJpZ2h0IChD KSAyMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdo dCAoQykgMjAwMS0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZv cgorLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBo aXN0b3J5IGVkaXRpbmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGlu ZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9m IHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAor IAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRs aW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAg IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAg IGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAg SWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUg MzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdp dGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisrKi8KKyAKKyAjaWYgIWRlZmluZWQgKF9STF9NQlVUSUxfSF8pCisgI2RlZmluZSBfUkxfTUJV VElMX0hfCitAQCAtMzAsMjIgKzI5LDIxIEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKyAKKyAvKiBGb3IgcGxhdGZvcm1zIHdoaWNoIHN1cHBv cnQgdGhlIElTTyBDIGFtZW5kZW1lbnQgMSBmdW5jdGlvbmFsaXR5IHdlCistICAgc3VwcG9ydCB1 c2VyIGRlZmluZWQgY2hhcmFjdGVyIGNsYXNzZXMuCistCistICAgU29tZSBwbGF0Zm9ybXMgaGF2 ZSB0aGUgbXVsdGlieXRlIGZ1bmN0aW9ucyBzdWNoIGFzIG1ic3J0b3djcyBidXQKKy0gICBhcmUg bGFja2luZyB0aGUgbXVsdGl0eXBlIHR5cGUgbWJzdGF0ZV90LiAgQmVPUyAodW5rbm93biB2ZXJz aW9uKQorLSAgIGFuZCBIUC9VWCAxMS4yMyB3aXRob3V0IF9YT1BFTl9TT1VSQ0U9NTAwIGFyZSBs aWtlIHRoaXMuCistCistICAgV2UgcmVhbGx5IG5lZWQgbWJzdGF0ZV90IHR5cGUgdG8gb3BlcmF0 ZSBwcm9wZXJseS4gIEZvciBleGFtcGxlLCBzZWUKKy0gICBjb21wdXRlX2xjZF9vZl9tYXRjaGVz LCB3aGVyZSB0d28gbWJzdGF0ZV90J3MgYXJlIGFjdGl2ZSBhdCB0aGUgc2FtZQorLSAgIHRpbWUu ICBTbyB3ZSByZXF1aXJlIGJvdGggdGhlIGZ1bmN0aW9ucyBhbmQgdGhlIG1ic3RhdGVfdCB0eXBl IGluCistICAgb3JkZXIgdG8gZW5hYmxlIG11bHRpYnl0ZSBzdXBwb3J0LiAgKi8KKy0KKysgICBz dXBwb3J0IHVzZXIgZGVmaW5lZCBjaGFyYWN0ZXIgY2xhc3Nlcy4gICovCisgICAgLyogU29sYXJp cyAyLjUgaGFzIGEgYnVnOiA8d2NoYXIuaD4gbXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUgPHdjdHlw ZS5oPi4gICovCistI2lmIGRlZmluZWQgKEhBVkVfV0NUWVBFX0gpICYmIGRlZmluZWQgKEhBVkVf V0NIQVJfSCkKKysjaWYgZGVmaW5lZCAoSEFWRV9XQ1RZUEVfSCkgJiYgZGVmaW5lZCAoSEFWRV9X Q0hBUl9IKSAmJiBkZWZpbmVkIChIQVZFX0xPQ0FMRV9IKQorICMgIGluY2x1ZGUgPHdjaGFyLmg+ CisgIyAgaW5jbHVkZSA8d2N0eXBlLmg+CistIyAgaWYgZGVmaW5lZCAoSEFWRV9NQlNUQVRFX1Qp ICYmIGRlZmluZWQgKEhBVkVfTUJTUlRPV0NTKSAmJiBkZWZpbmVkIChIQVZFX01CUlRPV0MpICYm IGRlZmluZWQgKEhBVkVfTUJSTEVOKSAmJiBkZWZpbmVkIChIQVZFX1dDV0lEVEgpCisrIyAgaWYg ZGVmaW5lZCAoSEFWRV9JU1dDVFlQRSkgJiYgXAorKyAgICAgIGRlZmluZWQgKEhBVkVfSVNXTE9X RVIpICYmIFwKKysgICAgICBkZWZpbmVkIChIQVZFX0lTV1VQUEVSKSAmJiBcCisrICAgICAgZGVm aW5lZCAoSEFWRV9NQlNSVE9XQ1MpICYmIFwKKysgICAgICBkZWZpbmVkIChIQVZFX01CUlRPV0Mp ICYmIFwKKysgICAgICBkZWZpbmVkIChIQVZFX01CUkxFTikgJiYgXAorKyAgICAgIGRlZmluZWQg KEhBVkVfVE9XTE9XRVIpICYmIFwKKysgICAgICBkZWZpbmVkIChIQVZFX1RPV1VQUEVSKSAmJiBc CisrICAgICAgZGVmaW5lZCAoSEFWRV9XQ0hBUl9UKSAmJiBcCisrICAgICAgZGVmaW5lZCAoSEFW RV9XQ1dJRFRIKQorICAgICAgLyogc3lzdGVtIGlzIHN1cHBvc2VkIHRvIHN1cHBvcnQgWFBHNSAq LworICMgICAgZGVmaW5lIEhBTkRMRV9NVUxUSUJZVEUgICAgICAxCisgIyAgZW5kaWYKKy0tLSBh L3JlYWRsaW5lL3JscHJpdmF0ZS5oCisrKysgYi9yZWFkbGluZS9ybHByaXZhdGUuaAorQEAgLTEs MjUgKzEsMjQgQEAKKyAvKiBybHByaXZhdGUuaCAtLSBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlcyBn bG9iYWwgdG8gdGhlIHJlYWRsaW5lIGxpYnJhcnksCisgCQkgIGJ1dCBub3QgaW50ZW5kZWQgZm9y IHVzZSBieSBhcHBsaWNhdGlvbnMuICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTk5LTIw MTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlzIHBh cnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCistICAgcmVhZGlu ZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGlu Zy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJl YWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGlu dGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCisgCistICAgVGhlIEdO VSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJlZSBz b2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAg IFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug aXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5 IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90 CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rvbiwg TUEgMDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworIAorICNp ZiAhZGVmaW5lZCAoX1JMX1BSSVZBVEVfSF8pCisgI2RlZmluZSBfUkxfUFJJVkFURV9IXworQEAg LTMwLDYgKzI5LDIxIEBACisgCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgkJCQkJCQkJCSAqCisr ICogQ29udmVuaWVuY2UgZGVmaW5pdGlvbnMJCQkJCQkgKgorKyAqCQkJCQkJCQkJICoKKysgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKysKKysjZGVmaW5lIEVNQUNTX01PREUoKQkJKHJsX2VkaXRpbmdfbW9k ZSA9PSBlbWFjc19tb2RlKQorKyNkZWZpbmUgVklfQ09NTUFORF9NT0RFKCkJKHJsX2VkaXRpbmdf bW9kZSA9PSB2aV9tb2RlICYmIF9ybF9rZXltYXAgPT0gdmlfbW92ZW1lbnRfa2V5bWFwKQorKyNk ZWZpbmUgVklfSU5TRVJUX01PREUoKQkocmxfZWRpdGluZ19tb2RlID09IHZpX21vZGUgJiYgX3Js X2tleW1hcCA9PSB2aV9pbnNlcnRpb25fa2V5bWFwKQorKworKyNkZWZpbmUgUkxfQ0hFQ0tfU0lH TkFMUygpIFwKKysJZG8geyBcCisrCSAgaWYgKF9ybF9jYXVnaHRfc2lnbmFsKSBfcmxfc2lnbmFs X2hhbmRsZXIgKF9ybF9jYXVnaHRfc2lnbmFsKTsgXAorKwl9IHdoaWxlICgwKQorKworKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisrICoJCQkJCQkJCQkgKgorICAqIEdsb2JhbCBzdHJ1Y3RzIHVuZG9jdW1l bnRlZCBpbiB0ZXhpbmZvIG1hbnVhbCBhbmQgbm90IGluIHJlYWRsaW5lLmggICAqCisgICoJCQkJ CQkJCQkgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworQEAgLTQyLDYgKzU2LDcgQEAKKyAjZGVmaW5l IFNGX1JFVkVSU0UJCTB4MDEKKyAjZGVmaW5lIFNGX0ZPVU5ECQkweDAyCisgI2RlZmluZSBTRl9G QUlMRUQJCTB4MDQKKysjZGVmaW5lIFNGX0NIR0tNQVAJCTB4MDgKKyAKKyB0eXBlZGVmIHN0cnVj dCAgX19ybF9zZWFyY2hfY29udGV4dAorIHsKK0BAIC02NSw2ICs4MCw5IEBAIHR5cGVkZWYgc3Ry dWN0ICBfX3JsX3NlYXJjaF9jb250ZXh0CisgCisgICBVTkRPX0xJU1QgKnNhdmVfdW5kb19saXN0 OworIAorKyAgS2V5bWFwIGtleW1hcDsJLyogdXNlZCB3aGVuIGRpc3BhdGNoaW5nIGNvbW1hbmRz IGluIHNlYXJjaCBzdHJpbmcgKi8KKysgIEtleW1hcCBva2V5bWFwOwkvKiBvcmlnaW5hbCBrZXlt YXAgKi8KKysKKyAgIGludCBoaXN0b3J5X3BvczsKKyAgIGludCBkaXJlY3Rpb247CisgCitAQCAt MTA2LDcgKzEyNCwyOCBAQCB0eXBlZGVmIHN0cnVjdCBfX3JsX2tleXNlcV9jb250ZXh0CisgICBp bnQgY2hpbGR2YWw7CisgfSBfcmxfa2V5c2VxX2N4dDsKKyAKKy0gIC8qIGZpbGwgaW4gbW9yZSBh cyBuZWVkZWQgKi8KKysvKiB2aS1tb2RlIGNvbW1hbmRzIHRoYXQgdXNlIHJlc3VsdCBvZiBtb3Rp b24gY29tbWFuZCB0byBkZWZpbmUgYm91bmRhcmllcyAqLworKyNkZWZpbmUgVklNX0RFTEVURQkw eDAxCisrI2RlZmluZSBWSU1fQ0hBTkdFCTB4MDIKKysjZGVmaW5lIFZJTV9ZQU5LCTB4MDQKKysK KysvKiB2YXJpb3VzIHN0YXRlcyBmb3IgdmktbW9kZSBjb21tYW5kcyB0aGF0IHVzZSBtb3Rpb24g Y29tbWFuZHMuICByZWZsZWN0cworKyAgIFJMX1JFQURMSU5FX1NUQVRFICovCisrI2RlZmluZSBW TVNUQVRFX1JFQUQJMHgwMQorKyNkZWZpbmUgVk1TVEFURV9OVU1BUkcJMHgwMgorKworK3R5cGVk ZWYgc3RydWN0IF9fcmxfdmltb3Rpb25fY29udGV4dAorK3sKKysgIGludCBvcDsKKysgIGludCBz dGF0ZTsKKysgIGludCBmbGFnczsJCS8qIHJlc2VydmVkICovCisrICBfcmxfYXJnX2N4dCBuY3h0 OworKyAgaW50IG51bWVyaWNfYXJnOworKyAgaW50IHN0YXJ0LCBlbmQ7CS8qIHJsX3BvaW50LCBy bF9lbmQgKi8KKysgIGludCBrZXksIG1vdGlvbjsJLyogaW5pdGlhbCBrZXksIG1vdGlvbiBjb21t YW5kICovCisrfSBfcmxfdmltb3Rpb25fY3h0OworKworKy8qIGZpbGwgaW4gbW9yZSBhcyBuZWVk ZWQgKi8KKyAvKiBgR2VuZXJpYycgY2FsbGJhY2sgZGF0YSBhbmQgZnVuY3Rpb25zICovCisgdHlw ZWRlZiBzdHJ1Y3QgX19ybF9jYWxsYmFja19nZW5lcmljX2FyZyAKKyB7CitAQCAtMTM5LDEyICsx NzgsOSBAQCBleHRlcm4gaW50IHJsX3Zpc2libGVfc3RhdHM7CisgZXh0ZXJuIGludCBybF9saW5l X2J1ZmZlcl9sZW47CisgZXh0ZXJuIGludCBybF9hcmdfc2lnbjsKKyBleHRlcm4gaW50IHJsX3Zp c2libGVfcHJvbXB0X2xlbmd0aDsKKy1leHRlcm4gaW50IHJlYWRsaW5lX2VjaG9pbmdfcDsKKyBl eHRlcm4gaW50IHJsX2tleV9zZXF1ZW5jZV9sZW5ndGg7CisgZXh0ZXJuIGludCBybF9ieXRlX29y aWVudGVkOworIAorLWV4dGVybiBfcmxfa2V5c2VxX2N4dCAqX3JsX2tzY3h0OworLQorIC8qIGRp c3BsYXkuYyAqLworIGV4dGVybiBpbnQgcmxfZGlzcGxheV9maXhlZDsKKyAKK0BAIC0yMDYsNiAr MjQyLDcgQEAgZXh0ZXJuIHZvaWQgX3JsX2NhbGxiYWNrX2RhdGFfZGlzcG9zZSBQQVJBTVMoKF9y bF9jYWxsYmFja19nZW5lcmljX2FyZyAqKSk7CisgLyogYmluZC5jICovCisgCisgLyogY29tcGxl dGUuYyAqLworK2V4dGVybiB2b2lkIF9ybF9yZXNldF9jb21wbGV0aW9uX3N0YXRlIFBBUkFNUygo dm9pZCkpOworIGV4dGVybiBjaGFyIF9ybF9maW5kX2NvbXBsZXRpb25fd29yZCBQQVJBTVMoKGlu dCAqLCBpbnQgKikpOworIGV4dGVybiB2b2lkIF9ybF9mcmVlX21hdGNoX2xpc3QgUEFSQU1TKChj aGFyICoqKSk7CisgCitAQCAtMjYxLDYgKzI5OCw4IEBAIGV4dGVybiB2b2lkIF9ybF9zdGFydF91 c2luZ19oaXN0b3J5IFBBUkFNUygodm9pZCkpOworIGV4dGVybiBpbnQgX3JsX2ZyZWVfc2F2ZWRf aGlzdG9yeV9saW5lIFBBUkFNUygodm9pZCkpOworIGV4dGVybiB2b2lkIF9ybF9zZXRfaW5zZXJ0 X21vZGUgUEFSQU1TKChpbnQsIGludCkpOworIAorK2V4dGVybiB2b2lkIF9ybF9yZXZlcnRfYWxs X2xpbmVzIFBBUkFNUygodm9pZCkpOworKworIC8qIG5scy5jICovCisgZXh0ZXJuIGludCBfcmxf aW5pdF9laWdodGJpdCBQQVJBTVMoKHZvaWQpKTsKKyAKK0BAIC0yODEsNiArMzIwLDE0IEBAIGV4 dGVybiBpbnQgX3JsX3Jlc3RvcmVfdHR5X3NpZ25hbHMgUEFSQU1TKCh2b2lkKSk7CisgLyogc2Vh cmNoLmMgKi8KKyBleHRlcm4gaW50IF9ybF9uc2VhcmNoX2NhbGxiYWNrIFBBUkFNUygoX3JsX3Nl YXJjaF9jeHQgKikpOworIAorKy8qIHNpZ25hbHMuYyAqLworK2V4dGVybiB2b2lkIF9ybF9zaWdu YWxfaGFuZGxlciBQQVJBTVMoKGludCkpOworKworK2V4dGVybiB2b2lkIF9ybF9ibG9ja19zaWdp bnQgUEFSQU1TKCh2b2lkKSk7CisrZXh0ZXJuIHZvaWQgX3JsX3JlbGVhc2Vfc2lnaW50IFBBUkFN Uygodm9pZCkpOworK2V4dGVybiB2b2lkIF9ybF9ibG9ja19zaWd3aW5jaCBQQVJBTVMoKHZvaWQp KTsKKytleHRlcm4gdm9pZCBfcmxfcmVsZWFzZV9zaWd3aW5jaCBQQVJBTVMoKHZvaWQpKTsKKysK KyAvKiB0ZXJtaW5hbC5jICovCisgZXh0ZXJuIHZvaWQgX3JsX2dldF9zY3JlZW5fc2l6ZSBQQVJB TVMoKGludCwgaW50KSk7CisgZXh0ZXJuIGludCBfcmxfaW5pdF90ZXJtaW5hbF9pbyBQQVJBTVMo KGNvbnN0IGNoYXIgKikpOworQEAgLTI5OCw2ICszNDUsNyBAQCBleHRlcm4gdm9pZCBfcmxfc2V0 X2N1cnNvciBQQVJBTVMoKGludCwgaW50KSk7CisgLyogdGV4dC5jICovCisgZXh0ZXJuIHZvaWQg X3JsX2ZpeF9wb2ludCBQQVJBTVMoKGludCkpOworIGV4dGVybiBpbnQgX3JsX3JlcGxhY2VfdGV4 dCBQQVJBTVMoKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpKTsKKytleHRlcm4gaW50IF9ybF9mb3J3 YXJkX2NoYXJfaW50ZXJuYWwgUEFSQU1TKChpbnQpKTsKKyBleHRlcm4gaW50IF9ybF9pbnNlcnRf Y2hhciBQQVJBTVMoKGludCwgaW50KSk7CisgZXh0ZXJuIGludCBfcmxfb3ZlcndyaXRlX2NoYXIg UEFSQU1TKChpbnQsIGludCkpOworIGV4dGVybiBpbnQgX3JsX292ZXJ3cml0ZV9ydWJvdXQgUEFS QU1TKChpbnQsIGludCkpOworQEAgLTMwOSw4ICszNTcsMjUgQEAgZXh0ZXJuIGludCBfcmxfY2hh cl9zZWFyY2hfaW50ZXJuYWwgUEFSQU1TKChpbnQsIGludCwgaW50KSk7CisgI2VuZGlmCisgZXh0 ZXJuIGludCBfcmxfc2V0X21hcmtfYXRfcG9zIFBBUkFNUygoaW50KSk7CisgCisrLyogdW5kby5j ICovCisrZXh0ZXJuIFVORE9fTElTVCAqX3JsX2NvcHlfdW5kb19lbnRyeSBQQVJBTVMoKFVORE9f TElTVCAqKSk7CisrZXh0ZXJuIFVORE9fTElTVCAqX3JsX2NvcHlfdW5kb19saXN0IFBBUkFNUygo VU5ET19MSVNUICopKTsKKysKKyAvKiB1dGlsLmMgKi8KKysjaWYgZGVmaW5lZCAoVVNFX1ZBUkFS R1MpICYmIGRlZmluZWQgKFBSRUZFUl9TVERBUkcpCisrZXh0ZXJuIHZvaWQgX3JsX3R0eW1zZyAo Y29uc3QgY2hhciAqLCAuLi4pICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChwcmludGYsIDEs IDIpKSk7CisrZXh0ZXJuIHZvaWQgX3JsX2Vycm1zZyAoY29uc3QgY2hhciAqLCAuLi4pICBfX2F0 dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChwcmludGYsIDEsIDIpKSk7CisrZXh0ZXJuIHZvaWQgX3Js X3RyYWNlIChjb25zdCBjaGFyICosIC4uLikgIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKHBy aW50ZiwgMSwgMikpKTsKKysjZWxzZQorK2V4dGVybiB2b2lkIF9ybF90dHltc2cgKCk7CisrZXh0 ZXJuIHZvaWQgX3JsX2Vycm1zZyAoKTsKKytleHRlcm4gdm9pZCBfcmxfdHJhY2UgKCk7CisrI2Vu ZGlmCisrCisrZXh0ZXJuIGludCBfcmxfdHJvcGVuIFBBUkFNUygodm9pZCkpOworKworIGV4dGVy biBpbnQgX3JsX2Fib3J0X2ludGVybmFsIFBBUkFNUygodm9pZCkpOworK2V4dGVybiBpbnQgX3Js X251bGxfZnVuY3Rpb24gUEFSQU1TKChpbnQsIGludCkpOworIGV4dGVybiBjaGFyICpfcmxfc3Ry aW5kZXggUEFSQU1TKChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikpOworIGV4dGVybiBpbnQg X3JsX3Fzb3J0X3N0cmluZ19jb21wYXJlIFBBUkFNUygoY2hhciAqKiwgY2hhciAqKikpOworIGV4 dGVybiBpbnQgKF9ybF91cHBlcmNhc2VfcCkgUEFSQU1TKChpbnQpKTsKK0BAIC0zMjcsMTQgKzM5 MiwxNSBAQCBleHRlcm4gdm9pZCBfcmxfdmlfcmVzZXRfbGFzdCBQQVJBTVMoKHZvaWQpKTsKKyBl eHRlcm4gdm9pZCBfcmxfdmlfc2V0X2xhc3QgUEFSQU1TKChpbnQsIGludCwgaW50KSk7CisgZXh0 ZXJuIGludCBfcmxfdmlfdGV4dG1vZF9jb21tYW5kIFBBUkFNUygoaW50KSk7CisgZXh0ZXJuIHZv aWQgX3JsX3ZpX2RvbmVfaW5zZXJ0aW5nIFBBUkFNUygodm9pZCkpOworK2V4dGVybiBpbnQgX3Js X3ZpX2RvbW92ZV9jYWxsYmFjayBQQVJBTVMoKF9ybF92aW1vdGlvbl9jeHQgKikpOworIAorIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgICogVW5kb2N1bWVudGVkIHByaXZhdGUgdmFyaWFibGVzCQkJCQkg KgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworIAorIC8qIGJpbmQuYyAqLworLWV4dGVybiBjb25zdCBj aGFyICpfcmxfcG9zc2libGVfY29udHJvbF9wcmVmaXhlc1tdOworLWV4dGVybiBjb25zdCBjaGFy ICpfcmxfcG9zc2libGVfbWV0YV9wcmVmaXhlc1tdOworK2V4dGVybiBjb25zdCBjaGFyICogY29u c3QgX3JsX3Bvc3NpYmxlX2NvbnRyb2xfcHJlZml4ZXNbXTsKKytleHRlcm4gY29uc3QgY2hhciAq IGNvbnN0IF9ybF9wb3NzaWJsZV9tZXRhX3ByZWZpeGVzW107CisgCisgLyogY2FsbGJhY2suYyAq LworIGV4dGVybiBfcmxfY2FsbGJhY2tfZnVuY190ICpfcmxfY2FsbGJhY2tfZnVuYzsKK0BAIC0z NDUsMTcgKzQxMSwyMSBAQCBleHRlcm4gaW50IF9ybF9jb21wbGV0ZV9zaG93X2FsbDsKKyBleHRl cm4gaW50IF9ybF9jb21wbGV0ZV9zaG93X3VubW9kaWZpZWQ7CisgZXh0ZXJuIGludCBfcmxfY29t cGxldGVfbWFya19kaXJlY3RvcmllczsKKyBleHRlcm4gaW50IF9ybF9jb21wbGV0ZV9tYXJrX3N5 bWxpbmtfZGlyczsKKytleHRlcm4gaW50IF9ybF9jb21wbGV0aW9uX3ByZWZpeF9kaXNwbGF5X2xl bmd0aDsKKytleHRlcm4gaW50IF9ybF9jb21wbGV0aW9uX2NvbHVtbnM7CisgZXh0ZXJuIGludCBf cmxfcHJpbnRfY29tcGxldGlvbnNfaG9yaXpvbnRhbGx5OworIGV4dGVybiBpbnQgX3JsX2NvbXBs ZXRpb25fY2FzZV9mb2xkOworK2V4dGVybiBpbnQgX3JsX2NvbXBsZXRpb25fY2FzZV9tYXA7Cisg ZXh0ZXJuIGludCBfcmxfbWF0Y2hfaGlkZGVuX2ZpbGVzOworIGV4dGVybiBpbnQgX3JsX3BhZ2Vf Y29tcGxldGlvbnM7CisrZXh0ZXJuIGludCBfcmxfc2tpcF9jb21wbGV0ZWRfdGV4dDsKKytleHRl cm4gaW50IF9ybF9tZW51X2NvbXBsZXRlX3ByZWZpeF9maXJzdDsKKyAKKyAvKiBkaXNwbGF5LmMg Ki8KKyBleHRlcm4gaW50IF9ybF92aXNfYm90bGluOworIGV4dGVybiBpbnQgX3JsX2xhc3RfY19w b3M7CisgZXh0ZXJuIGludCBfcmxfc3VwcHJlc3NfcmVkaXNwbGF5OworIGV4dGVybiBpbnQgX3Js X3dhbnRfcmVkaXNwbGF5OworLWV4dGVybiBjaGFyICpybF9kaXNwbGF5X3Byb21wdDsKKyAKKyAv KiBpc2VhcmNoLmMgKi8KKyBleHRlcm4gY2hhciAqX3JsX2lzZWFyY2hfdGVybWluYXRvcnM7CitA QCAtMzcyLDYgKzQ0Miw3IEBAIGV4dGVybiBpbnQgX3JsX2hpc3Rvcnlfc2F2ZWRfcG9pbnQ7Cisg ZXh0ZXJuIF9ybF9hcmdfY3h0IF9ybF9hcmdjeHQ7CisgCisgLyogcmVhZGxpbmUuYyAqLworK2V4 dGVybiBpbnQgX3JsX2VjaG9pbmdfcDsKKyBleHRlcm4gaW50IF9ybF9ob3Jpem9udGFsX3Njcm9s bF9tb2RlOworIGV4dGVybiBpbnQgX3JsX21hcmtfbW9kaWZpZWRfbGluZXM7CisgZXh0ZXJuIGlu dCBfcmxfYmVsbF9wcmVmZXJlbmNlOworQEAgLTM3OSw2ICs0NTAsOCBAQCBleHRlcm4gaW50IF9y bF9tZXRhX2ZsYWc7CisgZXh0ZXJuIGludCBfcmxfY29udmVydF9tZXRhX2NoYXJzX3RvX2FzY2lp OworIGV4dGVybiBpbnQgX3JsX291dHB1dF9tZXRhX2NoYXJzOworIGV4dGVybiBpbnQgX3JsX2Jp bmRfc3R0eV9jaGFyczsKKytleHRlcm4gaW50IF9ybF9yZXZlcnRfYWxsX2F0X25ld2xpbmU7Cisr ZXh0ZXJuIGludCBfcmxfZWNob19jb250cm9sX2NoYXJzOworIGV4dGVybiBjaGFyICpfcmxfY29t bWVudF9iZWdpbjsKKyBleHRlcm4gdW5zaWduZWQgY2hhciBfcmxfcGFyc2luZ19jb25kaXRpb25h bGl6ZWRfb3V0OworIGV4dGVybiBLZXltYXAgX3JsX2tleW1hcDsKK0BAIC0zODYsMTEgKzQ1OSwy MiBAQCBleHRlcm4gRklMRSAqX3JsX2luX3N0cmVhbTsKKyBleHRlcm4gRklMRSAqX3JsX291dF9z dHJlYW07CisgZXh0ZXJuIGludCBfcmxfbGFzdF9jb21tYW5kX3dhc19raWxsOworIGV4dGVybiBp bnQgX3JsX2VvZl9jaGFyOworLWV4dGVybiBwcm9jZW52X3QgcmVhZGxpbmVfdG9wX2xldmVsOwor K2V4dGVybiBwcm9jZW52X3QgX3JsX3RvcF9sZXZlbDsKKytleHRlcm4gX3JsX2tleXNlcV9jeHQg Kl9ybF9rc2N4dDsKKyAKKyAvKiBzZWFyY2guYyAqLworIGV4dGVybiBfcmxfc2VhcmNoX2N4dCAq X3JsX25zY3h0OworIAorKy8qIHNpZ25hbHMuYyAqLworK2V4dGVybiBpbnQgX3JsX2ludGVycnVw dF9pbW1lZGlhdGVseTsKKytleHRlcm4gaW50IHZvbGF0aWxlIF9ybF9jYXVnaHRfc2lnbmFsOwor KworK2V4dGVybiBpbnQgX3JsX2VjaG9jdGw7CisrCisrZXh0ZXJuIGludCBfcmxfaW50cl9jaGFy OworK2V4dGVybiBpbnQgX3JsX3F1aXRfY2hhcjsKKytleHRlcm4gaW50IF9ybF9zdXNwX2NoYXI7 CisrCisgLyogdGVybWluYWwuYyAqLworIGV4dGVybiBpbnQgX3JsX2VuYWJsZV9rZXlwYWQ7Cisg ZXh0ZXJuIGludCBfcmxfZW5hYmxlX21ldGE7CitAQCAtNDA0LDYgKzQ4OCw3IEBAIGV4dGVybiBj aGFyICpfcmxfdGVybV91cDsKKyBleHRlcm4gY2hhciAqX3JsX3Rlcm1fZGM7CisgZXh0ZXJuIGNo YXIgKl9ybF90ZXJtX2NyOworIGV4dGVybiBjaGFyICpfcmxfdGVybV9JQzsKKytleHRlcm4gY2hh ciAqX3JsX3Rlcm1fZm9yd2FyZF9jaGFyOworIGV4dGVybiBpbnQgX3JsX3NjcmVlbmhlaWdodDsK KyBleHRlcm4gaW50IF9ybF9zY3JlZW53aWR0aDsKKyBleHRlcm4gaW50IF9ybF9zY3JlZW5jaGFy czsKK0BAIC00MTYsNSArNTAxLDYgQEAgZXh0ZXJuIGludCBfcmxfdW5kb19ncm91cF9sZXZlbDsK KyAKKyAvKiB2aV9tb2RlLmMgKi8KKyBleHRlcm4gaW50IF9ybF92aV9sYXN0X2NvbW1hbmQ7Cisr ZXh0ZXJuIF9ybF92aW1vdGlvbl9jeHQgKl9ybF92aW12Y3h0OworIAorICNlbmRpZiAvKiBfUkxf UFJJVkFURV9IXyAqLworLS0tIGEvcmVhZGxpbmUvcmxzaGVsbC5oCisrKysgYi9yZWFkbGluZS9y bHNoZWxsLmgKK0BAIC0xLDI0ICsxLDIzIEBACisgLyogcmxzaGVsbC5oIC0tIHV0aWxpdHkgZnVu Y3Rpb25zIG5vcm1hbGx5IHByb3ZpZGVkIGJ5IGJhc2guICovCisgCistLyogQ29weXJpZ2h0IChD KSAxOTk5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykg MTk5OS0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAg IHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5 IGVkaXRpbmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJy YXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQg d2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAg IFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlz IGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdl bmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91 IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVh ZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8K KyAKKyAjaWYgIWRlZmluZWQgKF9STF9TSEVMTF9IXykKKyAjZGVmaW5lIF9STF9TSEVMTF9IXwor LS0tIGEvcmVhZGxpbmUvcmxzdGRjLmgKKysrKyBiL3JlYWRsaW5lL3Jsc3RkYy5oCitAQCAtMSwy MyArMSwyMyBAQAorLS8qIHN0ZGMuaCAtLSBtYWNyb3MgdG8gbWFrZSBzb3VyY2UgY29tcGlsZSBv biBib3RoIEFOU0kgQyBhbmQgSyZSIEMKKy0gICBjb21waWxlcnMuICovCisrLyogc3RkYy5oIC0t IG1hY3JvcyB0byBtYWtlIHNvdXJjZSBjb21waWxlIG9uIGJvdGggQU5TSSBDIGFuZCBLJlIgQyBj b21waWxlcnMuICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTkzIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk5My0yMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBCYXNoLCB0 aGUgQm91cm5lIEFnYWluIFNIZWxsLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUg UmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBs aW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4g ICAgICAKKyAKKy0gICBCYXNoIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQKKy0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBh bnkgbGF0ZXIgdmVyc2lvbi4KKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistICAgQmFz aCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQg V0lUSE9VVAorLSAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mIE1FUkNIQU5UQUJJTElUWQorLSAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKy0gICBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorICAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxv bmcgd2l0aCBCYXNoOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUKKy0gICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMz MCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworIAorICNpZiAh ZGVmaW5lZCAoX1JMX1NURENfSF8pCisgI2RlZmluZSBfUkxfU1REQ19IXworLS0tIGEvcmVhZGxp bmUvcmx0dHkuYworKysrIGIvcmVhZGxpbmUvcmx0dHkuYworQEAgLTMsMjMgKzMsMjMgQEAKKyAK KyAvKiBDb3B5cmlnaHQgKEMpIDE5OTItMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKyAKKy0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnks IGEgbGlicmFyeSBmb3IKKy0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2 ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVh ZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRp dGluZy4gICAgICAKKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwg b3IKKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBM aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVz ZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkKKy0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3 YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcg b3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5z ZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUg UGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorKyovCisrCisgI2RlZmluZSBSRUFETElORV9MSUJSQVJZCisgCisgI2lm IGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCitAQCAtNTIsNzcgKzUyLDEwIEBAIGV4dGVybiBpbnQg ZXJybm87CisgcmxfdmludGZ1bmNfdCAqcmxfcHJlcF90ZXJtX2Z1bmN0aW9uID0gcmxfcHJlcF90 ZXJtaW5hbDsKKyBybF92b2lkZnVuY190ICpybF9kZXByZXBfdGVybV9mdW5jdGlvbiA9IHJsX2Rl cHJlcF90ZXJtaW5hbDsKKyAKKy12b2lkIF9ybF9ibG9ja19zaWdpbnQgUEFSQU1TKCh2b2lkKSk7 Cistdm9pZCBfcmxfcmVsZWFzZV9zaWdpbnQgUEFSQU1TKCh2b2lkKSk7CistCisgc3RhdGljIHZv aWQgc2V0X3dpbnNpemUgUEFSQU1TKChpbnQpKTsKKyAKKyAvKiAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisgLyoJCQkJ CQkJCSAgICAqLworLS8qCQkJICAgU2lnbmFsIE1hbmFnZW1lbnQJCQkgICAgKi8KKy0vKgkJCQkJ CQkJICAgICovCistLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiAqLworLQorLSNpZiBkZWZpbmVkIChIQVZFX1BPU0lYX1NJ R05BTFMpCistc3RhdGljIHNpZ3NldF90IHNpZ2ludF9zZXQsIHNpZ2ludF9vc2V0OworLSNlbHNl IC8qICFIQVZFX1BPU0lYX1NJR05BTFMgKi8KKy0jICBpZiBkZWZpbmVkIChIQVZFX0JTRF9TSUdO QUxTKQorLXN0YXRpYyBpbnQgc2lnaW50X29sZG1hc2s7CistIyAgZW5kaWYgLyogSEFWRV9CU0Rf U0lHTkFMUyAqLworLSNlbmRpZiAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCistCistc3RhdGlj IGludCBzaWdpbnRfYmxvY2tlZDsKKy0KKy0vKiBDYXVzZSBTSUdJTlQgdG8gbm90IGJlIGRlbGl2 ZXJlZCB1bnRpbCB0aGUgY29ycmVzcG9uZGluZyBjYWxsIHRvCistICAgX3JsX3JlbGVhc2Vfc2ln aW50KCkuICovCistdm9pZAorLV9ybF9ibG9ja19zaWdpbnQgKCkKKy17CistICBpZiAoc2lnaW50 X2Jsb2NrZWQpCistICAgIHJldHVybjsKKy0KKy0jaWYgZGVmaW5lZCAoSEFWRV9QT1NJWF9TSUdO QUxTKQorLSAgc2lnZW1wdHlzZXQgKCZzaWdpbnRfc2V0KTsKKy0gIHNpZ2VtcHR5c2V0ICgmc2ln aW50X29zZXQpOworLSAgc2lnYWRkc2V0ICgmc2lnaW50X3NldCwgU0lHSU5UKTsKKy0gIHNpZ3By b2NtYXNrIChTSUdfQkxPQ0ssICZzaWdpbnRfc2V0LCAmc2lnaW50X29zZXQpOworLSNlbHNlIC8q ICFIQVZFX1BPU0lYX1NJR05BTFMgKi8KKy0jICBpZiBkZWZpbmVkIChIQVZFX0JTRF9TSUdOQUxT KQorLSAgc2lnaW50X29sZG1hc2sgPSBzaWdibG9jayAoc2lnbWFzayAoU0lHSU5UKSk7CistIyAg ZWxzZSAvKiAhSEFWRV9CU0RfU0lHTkFMUyAqLworLSMgICAgaWYgZGVmaW5lZCAoSEFWRV9VU0df U0lHSE9MRCkKKy0gIHNpZ2hvbGQgKFNJR0lOVCk7CistIyAgICBlbmRpZiAvKiBIQVZFX1VTR19T SUdIT0xEICovCistIyAgZW5kaWYgLyogIUhBVkVfQlNEX1NJR05BTFMgKi8KKy0jZW5kaWYgLyog IUhBVkVfUE9TSVhfU0lHTkFMUyAqLworLQorLSAgc2lnaW50X2Jsb2NrZWQgPSAxOworLX0KKy0K Ky0vKiBBbGxvdyBTSUdJTlQgdG8gYmUgZGVsaXZlcmVkLiAqLworLXZvaWQKKy1fcmxfcmVsZWFz ZV9zaWdpbnQgKCkKKy17CistICBpZiAoc2lnaW50X2Jsb2NrZWQgPT0gMCkKKy0gICAgcmV0dXJu OworLQorLSNpZiBkZWZpbmVkIChIQVZFX1BPU0lYX1NJR05BTFMpCistICBzaWdwcm9jbWFzayAo U0lHX1NFVE1BU0ssICZzaWdpbnRfb3NldCwgKHNpZ3NldF90ICopTlVMTCk7CistI2Vsc2UKKy0j ICBpZiBkZWZpbmVkIChIQVZFX0JTRF9TSUdOQUxTKQorLSAgc2lnc2V0bWFzayAoc2lnaW50X29s ZG1hc2spOworLSMgIGVsc2UgLyogIUhBVkVfQlNEX1NJR05BTFMgKi8KKy0jICAgIGlmIGRlZmlu ZWQgKEhBVkVfVVNHX1NJR0hPTEQpCistICBzaWdyZWxzZSAoU0lHSU5UKTsKKy0jICAgIGVuZGlm IC8qIEhBVkVfVVNHX1NJR0hPTEQgKi8KKy0jICBlbmRpZiAvKiAhSEFWRV9CU0RfU0lHTkFMUyAq LworLSNlbmRpZiAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCistCistICBzaWdpbnRfYmxvY2tl ZCA9IDA7CistfQorLQorLS8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKy0vKgkJCQkJCQkJICAgICovCisgLyoJCSAg ICAgIFNhdmluZyBhbmQgUmVzdG9yaW5nIHRoZSBUVFkJICAgIAkgICAgKi8KKyAvKgkJCQkJCQkJ ICAgICovCisgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiAqLworQEAgLTIwNCw4ICsxMzcsOSBAQCBzYXZlX3R0eV9jaGFy cyAodGlvcCkKKyAKKyAgIGlmICh0aW9wLT5mbGFncyAmIFRDSEFSU19TRVQpCisgICAgIHsKKy0g ICAgICBfcmxfdHR5X2NoYXJzLnRfaW50ciA9IHRpb3AtPnRjaGFycy50X2ludHJjOworLSAgICAg IF9ybF90dHlfY2hhcnMudF9xdWl0ID0gdGlvcC0+dGNoYXJzLnRfcXVpdGM7CisrICAgICAgX3Js X2ludHJfY2hhciA9IF9ybF90dHlfY2hhcnMudF9pbnRyID0gdGlvcC0+dGNoYXJzLnRfaW50cmM7 CisrICAgICAgX3JsX3F1aXRfY2hhciA9IF9ybF90dHlfY2hhcnMudF9xdWl0ID0gdGlvcC0+dGNo YXJzLnRfcXVpdGM7CisrCisgICAgICAgX3JsX3R0eV9jaGFycy50X3N0YXJ0ID0gdGlvcC0+dGNo YXJzLnRfc3RhcnRjOworICAgICAgIF9ybF90dHlfY2hhcnMudF9zdG9wID0gdGlvcC0+dGNoYXJz LnRfc3RvcGM7CisgICAgICAgX3JsX3R0eV9jaGFycy50X2VvZiA9IHRpb3AtPnRjaGFycy50X2Vv ZmM7CitAQCAtMjE1LDcgKzE0OSw4IEBAIHNhdmVfdHR5X2NoYXJzICh0aW9wKQorIAorICAgaWYg KHRpb3AtPmZsYWdzICYgTFRDSEFSU19TRVQpCisgICAgIHsKKy0gICAgICBfcmxfdHR5X2NoYXJz LnRfc3VzcCA9IHRpb3AtPmx0Y2hhcnMudF9zdXNwYzsKKysgICAgICBfcmxfc3VzcF9jaGFyID0g X3JsX3R0eV9jaGFycy50X3N1c3AgPSB0aW9wLT5sdGNoYXJzLnRfc3VzcGM7CisrCisgICAgICAg X3JsX3R0eV9jaGFycy50X2RzdXNwID0gdGlvcC0+bHRjaGFycy50X2RzdXNwYzsKKyAgICAgICBf cmxfdHR5X2NoYXJzLnRfcmVwcmludCA9IHRpb3AtPmx0Y2hhcnMudF9ycHJudGM7CisgICAgICAg X3JsX3R0eV9jaGFycy50X2ZsdXNoID0gdGlvcC0+bHRjaGFycy50X2ZsdXNoYzsKK0BAIC0yNjgs NyArMjAzLDcgQEAgc2V0X3R0eV9zZXR0aW5ncyAodHR5LCB0aW9wKQorICAgICAgIGlvY3RsICh0 dHksIFRJT0NTRVROLCAmKHRpb3AtPnNndHR5YikpOworICAgICAgIHRpb3AtPmZsYWdzICY9IH5T R1RUWV9TRVQ7CisgICAgIH0KKy0gIHJlYWRsaW5lX2VjaG9pbmdfcCA9IDE7CisrICBfcmxfZWNo b2luZ19wID0gMTsKKyAKKyAjaWYgZGVmaW5lZCAoVElPQ0xTRVQpCisgICBpZiAodGlvcC0+Zmxh Z3MgJiBMRkxBR19TRVQpCitAQCAtMzAyLDcgKzIzNyw4IEBAIHByZXBhcmVfdGVybWluYWxfc2V0 dGluZ3MgKG1ldGFfZmxhZywgb2xkdGlvLCB0aW9wKQorICAgICAgaW50IG1ldGFfZmxhZzsKKyAg ICAgIFRJT1RZUEUgb2xkdGlvLCAqdGlvcDsKKyB7CistICByZWFkbGluZV9lY2hvaW5nX3AgPSAo b2xkdGlvLnNndHR5Yi5zZ19mbGFncyAmIEVDSE8pOworKyAgX3JsX2VjaG9pbmdfcCA9IChvbGR0 aW8uc2d0dHliLnNnX2ZsYWdzICYgRUNITyk7CisrICBfcmxfZWNob2N0bCA9IChvbGR0aW8uc2d0 dHliLnNnX2ZsYWdzICYgRUNIT0NUTCk7CisgCisgICAvKiBDb3B5IHRoZSBvcmlnaW5hbCBzZXR0 aW5ncyB0byB0aGUgc3RydWN0dXJlIHdlJ3JlIGdvaW5nIHRvIHVzZSBmb3IKKyAgICAgIG91ciBz ZXR0aW5ncy4gKi8KK0BAIC00MzMsMTAgKzM2OSwxMCBAQCBzYXZlX3R0eV9jaGFycyAodGlvcCkK KyAjaWZkZWYgVlJFUFJJTlQKKyAgIF9ybF90dHlfY2hhcnMudF9yZXByaW50ID0gdGlvcC0+Y19j Y1tWUkVQUklOVF07CisgI2VuZGlmCistICBfcmxfdHR5X2NoYXJzLnRfaW50ciA9IHRpb3AtPmNf Y2NbVklOVFJdOworLSAgX3JsX3R0eV9jaGFycy50X3F1aXQgPSB0aW9wLT5jX2NjW1ZRVUlUXTsK KysgIF9ybF9pbnRyX2NoYXIgPSBfcmxfdHR5X2NoYXJzLnRfaW50ciA9IHRpb3AtPmNfY2NbVklO VFJdOworKyAgX3JsX3F1aXRfY2hhciA9IF9ybF90dHlfY2hhcnMudF9xdWl0ID0gdGlvcC0+Y19j Y1tWUVVJVF07CisgI2lmZGVmIFZTVVNQCistICBfcmxfdHR5X2NoYXJzLnRfc3VzcCA9IHRpb3At PmNfY2NbVlNVU1BdOworKyAgX3JsX3N1c3BfY2hhciA9IF9ybF90dHlfY2hhcnMudF9zdXNwID0g dGlvcC0+Y19jY1tWU1VTUF07CisgI2VuZGlmCisgI2lmZGVmIFZEU1VTUAorICAgX3JsX3R0eV9j aGFycy50X2RzdXNwID0gdGlvcC0+Y19jY1tWRFNVU1BdOworQEAgLTQ2NCw3ICs0MDAsNyBAQCBz dGF0aWMgdm9pZAorIHJsdHR5X3dhcm5pbmcgKG1zZykKKyAgICAgIGNoYXIgKm1zZzsKKyB7Cist ICBmcHJpbnRmIChzdGRlcnIsICJyZWFkbGluZTogd2FybmluZzogJXNcbiIsIG1zZyk7CisrICBf cmxfZXJybXNnICgid2FybmluZzogJXMiLCBtc2cpOworIH0KKyAjZW5kaWYKKyAKK0BAIC00NzUs NyArNDExLDcgQEAgVElPVFlQRSAqdHA7CisgeworICAgaWYgKCh0cC0+Y19vZmxhZyAmIE9QT1NU KSA9PSAwKQorICAgICB7CistICAgICAgcmx0dHlfd2FybmluZyAoInR1cm5pbmcgb24gT1BPU1Qg Zm9yIHRlcm1pbmFsXHIiKTsKKysgICAgICBfcmxfZXJybXNnICgid2FybmluZzogdHVybmluZyBv biBPUE9TVCBmb3IgdGVybWluYWxcciIpOworICAgICAgIHRwLT5jX29mbGFnIHw9IE9QT1NUfE9O TENSOworICAgICB9CisgfQorQEAgLTUwMCw4ICs0MzYsOCBAQCBfZ2V0X3R0eV9zZXR0aW5ncyAo dHR5LCB0aW9wKQorIAl9CisgICAgICAgaWYgKE9VVFBVVF9CRUlOR19GTFVTSEVEICh0aW9wKSkK KyAJeworLSNpZiBkZWZpbmVkIChGTFVTSE8pICYmIGRlZmluZWQgKF9BSVg0MSkKKy0JICBybHR0 eV93YXJuaW5nICgidHVybmluZyBvZmYgb3V0cHV0IGZsdXNoaW5nIik7CisrI2lmIGRlZmluZWQg KEZMVVNITykKKysJICBfcmxfZXJybXNnICgid2FybmluZzogdHVybmluZyBvZmYgb3V0cHV0IGZs dXNoaW5nIik7CisgCSAgdGlvcC0+Y19sZmxhZyAmPSB+RkxVU0hPOworIAkgIGJyZWFrOworICNl bHNlCitAQCAtNTgwLDcgKzUxNiwxMCBAQCBwcmVwYXJlX3Rlcm1pbmFsX3NldHRpbmdzIChtZXRh X2ZsYWcsIG9sZHRpbywgdGlvcCkKKyAgICAgIGludCBtZXRhX2ZsYWc7CisgICAgICBUSU9UWVBF IG9sZHRpbywgKnRpb3A7CisgeworLSAgcmVhZGxpbmVfZWNob2luZ19wID0gKG9sZHRpby5jX2xm bGFnICYgRUNITyk7CisrICBfcmxfZWNob2luZ19wID0gKG9sZHRpby5jX2xmbGFnICYgRUNITyk7 CisrI2lmIGRlZmluZWQgKEVDSE9DVEwpCisrICBfcmxfZWNob2N0bCA9IChvbGR0aW8uY19sZmxh ZyAmIEVDSE9DVEwpOworKyNlbmRpZgorIAorICAgdGlvcC0+Y19sZmxhZyAmPSB+KElDQU5PTiB8 IEVDSE8pOworIAorQEAgLTY0Myw3ICs1ODIsNyBAQCB2b2lkCisgcmxfcHJlcF90ZXJtaW5hbCAo bWV0YV9mbGFnKQorICAgICAgaW50IG1ldGFfZmxhZzsKKyB7CistICByZWFkbGluZV9lY2hvaW5n X3AgPSAxOworKyAgX3JsX2VjaG9pbmdfcCA9IDE7CisgfQorIAorIHZvaWQKK0BAIC02NjUsMTcg KzYwNCwxOSBAQCBybF9wcmVwX3Rlcm1pbmFsIChtZXRhX2ZsYWcpCisgICAvKiBUcnkgdG8ga2Vl cCB0aGlzIGZ1bmN0aW9uIGZyb20gYmVpbmcgSU5UZXJydXB0ZWQuICovCisgICBfcmxfYmxvY2tf c2lnaW50ICgpOworIAorLSAgdHR5ID0gZmlsZW5vIChybF9pbnN0cmVhbSk7CisrICB0dHkgPSBy bF9pbnN0cmVhbSA/IGZpbGVubyAocmxfaW5zdHJlYW0pIDogZmlsZW5vIChzdGRpbik7CisgCisg ICBpZiAoZ2V0X3R0eV9zZXR0aW5ncyAodHR5LCAmdGlvKSA8IDApCisgICAgIHsKKyAjaWYgZGVm aW5lZCAoRU5PVFNVUCkKKy0gICAgICAvKiBNYWNPUyBYLCBhdCBsZWFzdCwgbGllcyBhYm91dCB0 aGUgdmFsdWUgb2YgZXJybm8gaWYgdGNnZXRhdHRyIGZhaWxzLiAqLworLSAgICAgIGlmIChlcnJu byA9PSBFTk9UVFkgfHwgZXJybm8gPT0gRU5PVFNVUCkKKysgICAgICAvKiBNYWNPUyBYIGFuZCBM aW51eCwgYXQgbGVhc3QsIGxpZSBhYm91dCB0aGUgdmFsdWUgb2YgZXJybm8gaWYKKysJIHRjZ2V0 YXR0ciBmYWlscy4gKi8KKysgICAgICBpZiAoZXJybm8gPT0gRU5PVFRZIHx8IGVycm5vID09IEVJ TlZBTCB8fCBlcnJubyA9PSBFTk9UU1VQKQorICNlbHNlCistICAgICAgaWYgKGVycm5vID09IEVO T1RUWSkKKysgICAgICBpZiAoZXJybm8gPT0gRU5PVFRZIHx8IGVycm5vID09IEVJTlZBTCkKKyAj ZW5kaWYKKy0JcmVhZGxpbmVfZWNob2luZ19wID0gMTsJCS8qIFhYWCAqLworKwlfcmxfZWNob2lu Z19wID0gMTsJCS8qIFhYWCAqLworKworICAgICAgIF9ybF9yZWxlYXNlX3NpZ2ludCAoKTsKKyAg ICAgICByZXR1cm47CisgICAgIH0KK0BAIC03MzcsNyArNjc4LDcgQEAgcmxfZGVwcmVwX3Rlcm1p bmFsICgpCisgICAvKiBUcnkgdG8ga2VlcCB0aGlzIGZ1bmN0aW9uIGZyb20gYmVpbmcgaW50ZXJy dXB0ZWQuICovCisgICBfcmxfYmxvY2tfc2lnaW50ICgpOworIAorLSAgdHR5ID0gZmlsZW5vIChy bF9pbnN0cmVhbSk7CisrICB0dHkgPSBybF9pbnN0cmVhbSA/IGZpbGVubyAocmxfaW5zdHJlYW0p IDogZmlsZW5vIChzdGRvdXQpOworIAorICAgaWYgKF9ybF9lbmFibGVfa2V5cGFkKQorICAgICBf cmxfY29udHJvbF9rZXlwYWQgKDApOworQEAgLTg2Miw3ICs4MDMsNyBAQCBzZXRfc3BlY2lhbF9j aGFyIChrbWFwLCB0aW9wLCBzYywgZnVuYykKKyB9CisgCisgI2RlZmluZSBSRVNFVF9TUEVDSUFM KGMpIFwKKy0gIGlmIChjICE9IC0xICYmIGttYXBbKHVuc2lnbmVkIGNoYXIpY10udHlwZSA9PSBJ U0ZVTkMpCisrICBpZiAoYyAhPSAtMSAmJiBrbWFwWyh1bnNpZ25lZCBjaGFyKWNdLnR5cGUgPT0g SVNGVU5DKSBcCisgICAgIGttYXBbKHVuc2lnbmVkIGNoYXIpY10uZnVuY3Rpb24gPSBybF9pbnNl cnQ7CisgCisgc3RhdGljIHZvaWQKK0BAIC05MzMsNyArODc0LDYgQEAgcmx0dHlfc2V0X2RlZmF1 bHRfYmluZGluZ3MgKGttYXApCisgI2lmICFkZWZpbmVkIChOT19UVFlfRFJJVkVSKQorICAgVElP VFlQRSB0dHlidWZmOworICAgaW50IHR0eTsKKy0gIHN0YXRpYyBpbnQgY2FsbGVkID0gMDsKKyAK KyAgIHR0eSA9IGZpbGVubyAocmxfaW5zdHJlYW0pOworIAorLS0tIGEvcmVhZGxpbmUvcmx0dHku aAorKysrIGIvcmVhZGxpbmUvcmx0dHkuaAorQEAgLTEsMjUgKzEsMjMgQEAKKyAvKiBybHR0eS5o IC0gdHR5IGRyaXZlci1yZWxhdGVkIGRlZmluaXRpb25zIHVzZWQgYnkgc29tZSBsaWJyYXJ5IGZp bGVzLiAqLworIAorLS8qIENvcHlyaWdodCAoQykgMTk5NSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKysvKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKyAKKy0gICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIFJlYWRsaW5lIExpYnJh cnkgKHRoZSBMaWJyYXJ5KSwgYSBzZXQgb2YKKy0gICByb3V0aW5lcyBmb3IgcHJvdmlkaW5nIEVt YWNzIHN0eWxlIGxpbmUgaW5wdXQgdG8gcHJvZ3JhbXMgdGhhdCBhc2sKKy0gICBmb3IgaXQuCisr ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGlu ZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFj dGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBMaWJyYXJ5 IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxh dGVyIHZlcnNpb24uCisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorIAorLSAgIFRoZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorLSAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorLSAgIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgICBSZWFkbGluZSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBw ZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmls ZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBj b3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4g Ki8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgIWRlZmluZWQgKF9S TFRUWV9IXykKKyAjZGVmaW5lIF9STFRUWV9IXworQEAgLTc5LDcgKzc3LDQgQEAgdHlwZWRlZiBz dHJ1Y3QgX3JsX3R0eV9jaGFycyB7CisgICB1bnNpZ25lZCBjaGFyIHRfc3RhdHVzOworIH0gX1JM X1RUWV9DSEFSUzsKKyAKKy1leHRlcm4gdm9pZCBfcmxfYmxvY2tfc2lnaW50IFBBUkFNUygodm9p ZCkpOworLWV4dGVybiB2b2lkIF9ybF9yZWxlYXNlX3NpZ2ludCBQQVJBTVMoKHZvaWQpKTsKKy0K KyAjZW5kaWYgLyogX1JMVFRZX0hfICovCistLS0gYS9yZWFkbGluZS9ybHR5cGVkZWZzLmgKKysr KyBiL3JlYWRsaW5lL3JsdHlwZWRlZnMuaAorQEAgLTEsMjQgKzEsMjMgQEAKKyAvKiBybHR5cGVk ZWZzLmggLS0gVHlwZSBkZWNsYXJhdGlvbnMgZm9yIHJlYWRsaW5lIGZ1bmN0aW9ucy4gKi8KKyAK Ky0vKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysvKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKyAKKy0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJh cnksIGEgbGlicmFyeSBmb3IKKy0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFj dGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3Ig cmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3Rvcnkg ZWRpdGluZy4gICAgICAKKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g Miwgb3IKKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGlu ZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAg IHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkKKy0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNv ZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJ Tkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGlj ZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1w bGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorKyovCisgCisgI2lmbmRlZiBfUkxfVFlQRURFRlNfSF8KKyAjZGVm aW5lIF9STF9UWVBFREVGU19IXworLS0tIGEvcmVhZGxpbmUvcmx3aW5zaXplLmgKKysrKyBiL3Jl YWRsaW5lL3Jsd2luc2l6ZS5oCitAQCAtMSwyNiArMSwyNCBAQAorIC8qIHJsd2luc2l6ZS5oIC0t IGFuIGF0dGVtcHQgdG8gaXNvbGF0ZSBzb21lIG9mIHRoZSBzeXN0ZW0tc3BlY2lmaWMgZGVmaW5l cworICAgIGZvciBgc3RydWN0IHdpbnNpemUnIGFuZCBUSU9DR1dJTlNaLiAqLworIAorLS8qIENv cHlyaWdodCAoQykgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5 cmlnaHQgKEMpIDE5OTctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0g ICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIFJlYWRsaW5lIExpYnJhcnkgKHRoZSBMaWJyYXJ5KSwg YSBzZXQgb2YKKy0gICByb3V0aW5lcyBmb3IgcHJvdmlkaW5nIEVtYWNzIHN0eWxlIGxpbmUgaW5w dXQgdG8gcHJvZ3JhbXMgdGhhdCBhc2sKKy0gICBmb3IgaXQuCisrICAgVGhpcyBmaWxlIGlzIHBh cnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAg IGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlz dG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBSZWFkbGluZSBpcyBm cmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCisrICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAg IFRoZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsIGJ1dAorLSAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorLSAgIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdh cmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBv ciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNl LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQ bGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgIWRlZmluZWQgKF9STFdJTlNJWkVfSF8pCisgI2Rl ZmluZSBfUkxXSU5TSVpFX0hfCitAQCAtNTMsNSArNTEsOCBAQAorICMgIGVuZGlmIC8qIEhBVkVf U1lTX1BURV9IICovCisgI2VuZGlmIC8qICFTVFJVQ1RfV0lOU0laRV9JTl9URVJNSU9TICYmICFT VFJVQ1RfV0lOU0laRV9JTl9TWVNfSU9DVEwgKi8KKyAKKy0jZW5kaWYgLyogX1JMX1dJTlNJWkVf SCAqLworKyNpZiBkZWZpbmVkIChNX1VOSVgpICYmICFkZWZpbmVkIChfU0NPX0RTKSAmJiAhZGVm aW5lZCAodGNmbG93KQorKyMgIGRlZmluZSB0Y2Zsb3coZmQsIGFjdGlvbikJaW9jdGwoZmQsIFRD WE9OQywgYWN0aW9uKQorKyNlbmRpZgorIAorKyNlbmRpZiAvKiBfUkxfV0lOU0laRV9IICovCist LS0gYS9yZWFkbGluZS9zYXZlc3RyaW5nLmMKKysrKyBiL3JlYWRsaW5lL3NhdmVzdHJpbmcuYwor QEAgLTEsMjQgKzEsMjQgQEAKKy0vKiBzYXZlc3RyaW5nLmMgICovCisrLyogc2F2ZXN0cmluZy5j IC0gZnVuY3Rpb24gdmVyc2lvbiBvZiBzYXZlc3RyaW5nIGZvciBiYWNrd2FyZHMgY29tcGF0aWJp bGl0eSAqLworIAorIC8qIENvcHlyaWdodCAoQykgMTk5OCwyMDAzIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRo IGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisrICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQor KyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQg aGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor LSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05V IFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg CistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0 aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxs ZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9m IHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAg IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKysKKyAjZGVmaW5lIFJFQURMSU5FX0xJQlJB UlkKKyAKKyAjaW5jbHVkZSA8Y29uZmlnLmg+CitAQCAtMzMsNSArMzMsOSBAQCBjaGFyICoKKyBz YXZlc3RyaW5nIChzKQorICAgICAgY29uc3QgY2hhciAqczsKKyB7CistICByZXR1cm4gKChjaGFy ICopc3RyY3B5ICgoY2hhciAqKXhtYWxsb2MgKDEgKyBzdHJsZW4gKHMpKSwgKHMpKSk7CisrICBj aGFyICpyZXQ7CisrCisrICByZXQgPSAoY2hhciAqKXhtYWxsb2MgKHN0cmxlbiAocykgKyAxKTsK KysgIHN0cmNweSAocmV0LCBzKTsKKysgIHJldHVybiByZXQ7CisgfQorLS0tIGEvcmVhZGxpbmUv c2VhcmNoLmMKKysrKyBiL3JlYWRsaW5lL3NlYXJjaC5jCitAQCAtMSwyNSArMSwyNCBAQAorIC8q IHNlYXJjaC5jIC0gY29kZSBmb3Igbm9uLWluY3JlbWVudGFsIHNlYXJjaGluZyBpbiBlbWFjcyBh bmQgdmkgbW9kZXMuICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTkyLTIwMDUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTkyLTIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IFJlYWRsaW5lIExpYnJhcnkgKHRoZSBMaWJyYXJ5KSwgYSBzZXQgb2YKKy0gICByb3V0aW5lcyBm b3IgcHJvdmlkaW5nIEVtYWNzIHN0eWxlIGxpbmUgaW5wdXQgdG8gcHJvZ3JhbXMgdGhhdCBhc2sK Ky0gICBmb3IgaXQuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBM aWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRl eHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAor LSAgIFRoZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRp b24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhlIExpYnJhcnkgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CistICAgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VCistICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor LQorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdp dGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2Fs bGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBv ZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0g ICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisr ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKwor KyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVh ZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8K KysKKyAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKKyAKKyAjaWYgZGVmaW5lZCAoSEFWRV9DT05G SUdfSCkKK0BAIC03MCw3ICs2OSw2IEBAIHN0YXRpYyBpbnQgcmxfaGlzdG9yeV9zZWFyY2hfcG9z OworIHN0YXRpYyBjaGFyICpoaXN0b3J5X3NlYXJjaF9zdHJpbmc7Cisgc3RhdGljIGludCBoaXN0 b3J5X3N0cmluZ19zaXplOworIAorLXN0YXRpYyBVTkRPX0xJU1QgKm5vbmluY19zYXZlZF91bmRv X2xpc3Q7Cisgc3RhdGljIHZvaWQgbWFrZV9oaXN0b3J5X2xpbmVfY3VycmVudCBQQVJBTVMoKEhJ U1RfRU5UUlkgKikpOworIHN0YXRpYyBpbnQgbm9uaW5jX3NlYXJjaF9mcm9tX3BvcyBQQVJBTVMo KGNoYXIgKiwgaW50LCBpbnQpKTsKKyBzdGF0aWMgaW50IG5vbmluY19kb3NlYXJjaCBQQVJBTVMo KGNoYXIgKiwgaW50KSk7CitAQCAtMjEyLDggKzIxMCw4IEBAIF9ybF9uc2VhcmNoX2luaXQgKGRp ciwgcGNoYXIpCisgICBybF9lbmQgPSBybF9wb2ludCA9IDA7CisgCisgICBwID0gX3JsX21ha2Vf cHJvbXB0X2Zvcl9zZWFyY2ggKHBjaGFyID8gcGNoYXIgOiAnOicpOworLSAgcmxfbWVzc2FnZSAo cCwgMCwgMCk7CistICBmcmVlIChwKTsKKysgIHJsX21lc3NhZ2UgKCIlcyIsIHAsIDApOworKyAg eGZyZWUgKHApOworIAorICAgUkxfU0VUU1RBVEUoUkxfU1RBVEVfTlNFQVJDSCk7CisgCistLS0g YS9yZWFkbGluZS9zaGVsbC5jCisrKysgYi9yZWFkbGluZS9zaGVsbC5jCitAQCAtMSwyNSArMSwy NSBAQAorIC8qIHNoZWxsLmMgLS0gcmVhZGxpbmUgdXRpbGl0eSBmdW5jdGlvbnMgdGhhdCBhcmUg bm9ybWFsbHkgcHJvdmlkZWQgYnkKKyAJICAgICAgYmFzaCB3aGVuIHJlYWRsaW5lIGlzIGxpbmtl ZCBhcyBwYXJ0IG9mIHRoZSBzaGVsbC4gKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5OTcgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTk3LTIwMDkg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCistICAgcmVhZGluZyBs aW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4K KysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRs aW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVy YWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCisgCistICAgVGhlIEdOVSBS ZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0 d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIFJl YWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMg b2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5IGtl cHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90Cist ICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg MDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworKworICNkZWZp bmUgUkVBRExJTkVfTElCUkFSWQorIAorICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19IKQorQEAg LTEzMCwxMiArMTMwLDEyIEBAIHNoX3NldF9saW5lc19hbmRfY29sdW1ucyAobGluZXMsIGNvbHMp CisgICBiID0gKGNoYXIgKil4bWFsbG9jIChJTlRfU1RSTEVOX0JPVU5EIChpbnQpICsgMSk7Cisg ICBzcHJpbnRmIChiLCAiJWQiLCBsaW5lcyk7CisgICBzZXRlbnYgKCJMSU5FUyIsIGIsIDEpOwor LSAgZnJlZSAoYik7CisrICB4ZnJlZSAoYik7CisgCisgICBiID0gKGNoYXIgKil4bWFsbG9jIChJ TlRfU1RSTEVOX0JPVU5EIChpbnQpICsgMSk7CisgICBzcHJpbnRmIChiLCAiJWQiLCBjb2xzKTsK KyAgIHNldGVudiAoIkNPTFVNTlMiLCBiLCAxKTsKKy0gIGZyZWUgKGIpOworKyAgeGZyZWUgKGIp OworICNlbHNlIC8qICFIQVZFX1NFVEVOViAqLworICMgIGlmIGRlZmluZWQgKEhBVkVfUFVURU5W KQorICAgYiA9IChjaGFyICopeG1hbGxvYyAoSU5UX1NUUkxFTl9CT1VORCAoaW50KSArIHNpemVv ZiAoIkxJTkVTPSIpICsgMSk7CistLS0gYS9yZWFkbGluZS9zaGxpYi9NYWtlZmlsZS5pbgorKysr IGIvcmVhZGxpbmUvc2hsaWIvTWFrZWZpbGUuaW4KK0BAIC0xLDIxICsxLDIwIEBACisgIyMgLSot IHRleHQgLSotICMjCisgIyBNYWtlZmlsZSBmb3IgdGhlIEdOVSByZWFkbGluZSBsaWJyYXJ5IHNo YXJlZCBsaWJyYXJ5IHN1cHBvcnQuCisgIworLSMgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDMgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwOSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g Miwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSMgYW55IGxhdGVyIHZlcnNpb24uCisrIyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrIyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CistIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistIyBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBV U0EuCisrIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisrIyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIAorIFBBQ0tBR0UgPSBAUEFD S0FHRV9OQU1FQAorIFZFUlNJT04gPSBAUEFDS0FHRV9WRVJTSU9OQAorQEAgLTMxLDcgKzMwLDcg QEAgUkxfTElCUkFSWV9OQU1FID0gcmVhZGxpbmUKKyBkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRp ckAKKyAKKyBzcmNkaXIgPSBAc3JjZGlyQAorLVZQQVRIID0gLjpAdG9wX3NyY2RpckAKKytWUEFU SCA9IEB0b3Bfc3JjZGlyQAorIHRvcGRpciA9IEB0b3Bfc3JjZGlyQAorIEJVSUxEX0RJUiA9IEBC VUlMRF9ESVJACisgCitAQCAtNTEsNiArNTAsNyBAQCBMTiA9IGxuCisgU0hFTEwgPSBATUFLRV9T SEVMTEAKKyAKKyBob3N0X29zID0gQGhvc3Rfb3NACisraG9zdF92ZW5kb3IgPSBAaG9zdF92ZW5k b3JACisgCisgcHJlZml4ID0gQHByZWZpeEAKKyBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAK K0BAIC01OCw3ICs1OCw3IEBAIGluY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKKyBiaW5kaXIgPSBA YmluZGlyQAorIGxpYmRpciA9IEBsaWJkaXJACisgZGF0YWRpciA9IEBkYXRhZGlyQAorLWxvY2Fs ZWRpciA9ICQoZGF0YWRpcikvbG9jYWxlCisrbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKKyAKKyAj IFN1cHBvcnQgYW4gYWx0ZXJuYXRlIGRlc3RpbmF0aW9uIHJvb3QgZGlyZWN0b3J5IGZvciBwYWNr YWdlIGJ1aWxkaW5nCisgREVTVERJUiA9CitAQCAtMTIyLDggKzEyMiw2IEBAIFNIQVJFRF9SRUFE TElORSA9ICQoU0hMSUJfTElCUFJFRilyZWFkbGluZSQoU0hMSUJfRE9UKSQoU0hMSUJfTElCVkVS U0lPTikKKyBTSEFSRURfSElTVE9SWSA9ICQoU0hMSUJfTElCUFJFRiloaXN0b3J5JChTSExJQl9E T1QpJChTSExJQl9MSUJWRVJTSU9OKQorIFNIQVJFRF9MSUJTID0gJChTSEFSRURfUkVBRExJTkUp ICQoU0hBUkVEX0hJU1RPUlkpCisgCistV0NXSURUSF9PQkogPSBAV0NXSURUSF9PQkpACistCisg IyBUaGUgQyBjb2RlIHNvdXJjZSBmaWxlcyBmb3IgdGhpcyBsaWJyYXJ5LgorIENTT1VSQ0VTID0g JCh0b3BkaXIpL3JlYWRsaW5lLmMgJCh0b3BkaXIpL2Z1bm1hcC5jICQodG9wZGlyKS9rZXltYXBz LmMgXAorIAkgICAkKHRvcGRpcikvdmlfbW9kZS5jICQodG9wZGlyKS9wYXJlbnMuYyAkKHRvcGRp cikvcmx0dHkuYyBcCitAQCAtMTMxLDEyICsxMjksMTIgQEAgQ1NPVVJDRVMgPSAkKHRvcGRpcikv cmVhZGxpbmUuYyAkKHRvcGRpcikvZnVubWFwLmMgJCh0b3BkaXIpL2tleW1hcHMuYyBcCisgCSAg ICQodG9wZGlyKS9kaXNwbGF5LmMgJCh0b3BkaXIpL3NpZ25hbHMuYyAkKHRvcGRpcikvZW1hY3Nf a2V5bWFwLmMgXAorIAkgICAkKHRvcGRpcikvdmlfa2V5bWFwLmMgJCh0b3BkaXIpL3V0aWwuYyAk KHRvcGRpcikva2lsbC5jIFwKKyAJICAgJCh0b3BkaXIpL3VuZG8uYyAkKHRvcGRpcikvbWFjcm8u YyAkKHRvcGRpcikvaW5wdXQuYyBcCistCSAgICQodG9wZGlyKS9jYWxsYmFjay5jICQodG9wZGly KS90ZXJtaW5hbC5jICQodG9wZGlyKS94bWFsbG9jLmMgXAorKwkgICAkKHRvcGRpcikvY2FsbGJh Y2suYyAkKHRvcGRpcikvdGVybWluYWwuYyAkKHRvcGRpcikveG1hbGxvYy5jICQodG9wZGlyKS94 ZnJlZS5jIFwKKyAJICAgJCh0b3BkaXIpL2hpc3RvcnkuYyAkKHRvcGRpcikvaGlzdHNlYXJjaC5j ICQodG9wZGlyKS9oaXN0ZXhwYW5kLmMgXAorIAkgICAkKHRvcGRpcikvaGlzdGZpbGUuYyAkKHRv cGRpcikvbmxzLmMgJCh0b3BkaXIpL3NlYXJjaC5jIFwKKyAJICAgJCh0b3BkaXIpL3NoZWxsLmMg JCh0b3BkaXIpL3NhdmVzdHJpbmcuYyAkKHRvcGRpcikvdGlsZGUuYyBcCisgCSAgICQodG9wZGly KS90ZXh0LmMgJCh0b3BkaXIpL21pc2MuYyAkKHRvcGRpcikvY29tcGF0LmMgXAorLQkgICAkKHRv cGRpcikvbWJ1dGlsLmMgJCh0b3BkaXIpL3N1cHBvcnQvd2N3aWR0aC5jCisrCSAgICQodG9wZGly KS9tYnV0aWwuYworIAorICMgVGhlIGhlYWRlciBmaWxlcyBmb3IgdGhpcyBsaWJyYXJ5LgorIEhT T1VSQ0VTID0gcmVhZGxpbmUuaCBybGRlZnMuaCBjaGFyZGVmcy5oIGtleW1hcHMuaCBoaXN0b3J5 LmggaGlzdGxpYi5oIFwKK0BAIC0xNDksOCArMTQ3LDggQEAgU0hBUkVEX1RJTERFT0JKID0gdGls ZGUuc28KKyBTSEFSRURfT0JKID0gcmVhZGxpbmUuc28gdmlfbW9kZS5zbyBmdW5tYXAuc28ga2V5 bWFwcy5zbyBwYXJlbnMuc28gc2VhcmNoLnNvIFwKKyAJICBybHR0eS5zbyBjb21wbGV0ZS5zbyBi aW5kLnNvIGlzZWFyY2guc28gZGlzcGxheS5zbyBzaWduYWxzLnNvIFwKKyAJICB1dGlsLnNvIGtp bGwuc28gdW5kby5zbyBtYWNyby5zbyBpbnB1dC5zbyBjYWxsYmFjay5zbyB0ZXJtaW5hbC5zbyBc CistCSAgdGV4dC5zbyBubHMuc28gbWlzYy5zbyB4bWFsbG9jLnNvICQoU0hBUkVEX0hJU1RPQkop ICQoU0hBUkVEX1RJTERFT0JKKSBcCistCSAgY29tcGF0LnNvICQoV0NXSURUSF9PQkopCisrCSAg dGV4dC5zbyBubHMuc28gbWlzYy5zbyB4bWFsbG9jLnNvIHhmcmVlLnNvICQoU0hBUkVEX0hJU1RP QkopICQoU0hBUkVEX1RJTERFT0JKKSBcCisrCSAgY29tcGF0LnNvCisgCisgIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyAKK0BAIC0xNzAsMTMgKzE2OCw5IEBAICQoU0hBUkVEX1JFQURMSU5FKToJJChTSEFS RURfT0JKKQorIAkkKFJNKSAkQAorIAkkKFNIT0JKX0xEKSAke1NIT0JKX0xERkxBR1N9ICR7U0hM SUJfWExERkxBR1N9IC1vICRAICQoU0hBUkVEX09CSikgJChTSExJQl9MSUJTKQorIAorLSQoU0hB UkVEX0hJU1RPUlkpOgkkKFNIQVJFRF9ISVNUT0JKKSB4bWFsbG9jLnNvCistCSQoUk0pICRACist CSQoU0hPQkpfTEQpICR7U0hPQkpfTERGTEFHU30gJHtTSExJQl9YTERGTEFHU30gLW8gJEAgJChT SEFSRURfSElTVE9CSikgeG1hbGxvYy5zbyAkKFNITElCX0xJQlMpCistCistd2N3aWR0aC5vOiAk KHNyY2Rpcikvc3VwcG9ydC93Y3dpZHRoLmMKKyskKFNIQVJFRF9ISVNUT1JZKToJJChTSEFSRURf SElTVE9CSikgeG1hbGxvYy5zbyB4ZnJlZS5zbworIAkkKFJNKSAkQAorLQkkKFNIT0JKX0NDKSAt YyAkKENDRkxBR1MpICQoU0hPQkpfRkxBR1MpICQoc3JjZGlyKS9zdXBwb3J0L3djd2lkdGguYwor KwkkKFNIT0JKX0xEKSAke1NIT0JKX0xERkxBR1N9ICR7U0hMSUJfWExERkxBR1N9IC1vICRAICQo U0hBUkVEX0hJU1RPQkopIHhtYWxsb2Muc28geGZyZWUuc28gJChTSExJQl9MSUJTKQorIAorICMg U2luY2UgdGlsZGUuYyBpcyBzaGFyZWQgYmV0d2VlbiByZWFkbGluZSBhbmQgYmFzaCwgbWFrZSBz dXJlIHdlIGNvbXBpbGUgCisgIyBpdCB3aXRoIHRoZSByaWdodCBmbGFncyB3aGVuIGl0J3MgYnVp bHQgYXMgcGFydCBvZiByZWFkbGluZQorQEAgLTE4NywxNSArMTgxLDE2IEBAIHRpbGRlLnNvOiAg ICAgICAgdGlsZGUuYworIAorIGluc3RhbGxkaXJzOiAkKHRvcGRpcikvc3VwcG9ydC9ta2RpcnMK KyAJLSQoU0hFTEwpICQodG9wZGlyKS9zdXBwb3J0L21rZGlycyAkKERFU1RESVIpJChsaWJkaXIp CisrCS0kKFNIRUxMKSAkKHRvcGRpcikvc3VwcG9ydC9ta2RpcnMgJChERVNURElSKSQoYmluZGly KQorIAorIGluc3RhbGw6IGluc3RhbGxkaXJzICQoU0hMSUJfU1RBVFVTKQorLQkkKFNIRUxMKSAk KHRvcGRpcikvc3VwcG9ydC9zaGxpYi1pbnN0YWxsIC1PICQoaG9zdF9vcykgLWQgJChERVNURElS KSQobGliZGlyKSAtYiAkKERFU1RESVIpJChiaW5kaXIpIC1pICIkKElOU1RBTExfREFUQSkiICQo U0hBUkVEX0hJU1RPUlkpCistCSQoU0hFTEwpICQodG9wZGlyKS9zdXBwb3J0L3NobGliLWluc3Rh bGwgLU8gJChob3N0X29zKSAtZCAkKERFU1RESVIpJChsaWJkaXIpIC1iICQoREVTVERJUikkKGJp bmRpcikgLWkgIiQoSU5TVEFMTF9EQVRBKSIgJChTSEFSRURfUkVBRExJTkUpCisrCSQoU0hFTEwp ICQodG9wZGlyKS9zdXBwb3J0L3NobGliLWluc3RhbGwgLU8gJChob3N0X29zKSAtViAkKGhvc3Rf dmVuZG9yKSAtZCAkKERFU1RESVIpJChsaWJkaXIpIC1iICQoREVTVERJUikkKGJpbmRpcikgLWkg IiQoSU5TVEFMTF9EQVRBKSIgJChTSEFSRURfSElTVE9SWSkKKysJJChTSEVMTCkgJCh0b3BkaXIp L3N1cHBvcnQvc2hsaWItaW5zdGFsbCAtTyAkKGhvc3Rfb3MpIC1WICQoaG9zdF92ZW5kb3IpIC1k ICQoREVTVERJUikkKGxpYmRpcikgLWIgJChERVNURElSKSQoYmluZGlyKSAtaSAiJChJTlNUQUxM X0RBVEEpIiAkKFNIQVJFRF9SRUFETElORSkKKyAJQGVjaG8gaW5zdGFsbDogeW91IG1heSBuZWVk IHRvIHJ1biBsZGNvbmZpZworIAorIHVuaW5zdGFsbDoKKy0JJChTSEVMTCkgJCh0b3BkaXIpL3N1 cHBvcnQvc2hsaWItaW5zdGFsbCAtTyAkKGhvc3Rfb3MpIC1kICQoREVTVERJUikkKGxpYmRpcikg LWIgJChERVNURElSKSQoYmluZGlyKSAtVSAkKFNIQVJFRF9ISVNUT1JZKQorLQkkKFNIRUxMKSAk KHRvcGRpcikvc3VwcG9ydC9zaGxpYi1pbnN0YWxsIC1PICQoaG9zdF9vcykgLWQgJChERVNURElS KSQobGliZGlyKSAtYiAkKERFU1RESVIpJChiaW5kaXIpIC1VICQoU0hBUkVEX1JFQURMSU5FKQor KwkkKFNIRUxMKSAkKHRvcGRpcikvc3VwcG9ydC9zaGxpYi1pbnN0YWxsIC1PICQoaG9zdF9vcykg LVYgJChob3N0X3ZlbmRvcikgLWQgJChERVNURElSKSQobGliZGlyKSAtYiAkKERFU1RESVIpJChi aW5kaXIpIC1VICQoU0hBUkVEX0hJU1RPUlkpCisrCSQoU0hFTEwpICQodG9wZGlyKS9zdXBwb3J0 L3NobGliLWluc3RhbGwgLU8gJChob3N0X29zKSAtViAkKGhvc3RfdmVuZG9yKSAtZCAkKERFU1RE SVIpJChsaWJkaXIpIC1iICQoREVTVERJUikkKGJpbmRpcikgLVUgJChTSEFSRURfUkVBRExJTkUp CisgCUBlY2hvIHVuaW5zdGFsbDogeW91IG1heSBuZWVkIHRvIHJ1biBsZGNvbmZpZworIAorIGNs ZWFuIG1vc3RseWNsZWFuOglmb3JjZQorQEAgLTMyMiw2ICszMTcsOCBAQCB2aV9tb2RlLnNvOiAk KHRvcGRpcikvcmxkZWZzLmggJHtCVUlMRF9ESVJ9L2NvbmZpZy5oICQodG9wZGlyKS9ybGNvbmYu aAorIHZpX21vZGUuc286ICQodG9wZGlyKS9yZWFkbGluZS5oICQodG9wZGlyKS9rZXltYXBzLmgg JCh0b3BkaXIpL2NoYXJkZWZzLmgKKyB2aV9tb2RlLnNvOiAkKHRvcGRpcikvaGlzdG9yeS5oICQo dG9wZGlyKS9hbnNpX3N0ZGxpYi5oICQodG9wZGlyKS90aWxkZS5oCisgdmlfbW9kZS5zbzogJCh0 b3BkaXIpL3JsdHlwZWRlZnMuaAorK3hmcmVlLnNvOiAke0JVSUxEX0RJUn0vY29uZmlnLmgKKyt4 ZnJlZS5zbzogJCh0b3BkaXIpL2Fuc2lfc3RkbGliLmgKKyB4bWFsbG9jLnNvOiAke0JVSUxEX0RJ Un0vY29uZmlnLmgKKyB4bWFsbG9jLnNvOiAkKHRvcGRpcikvYW5zaV9zdGRsaWIuaAorIAorQEAg LTM3OSw2ICszNzYsNyBAQCB0aWxkZS5zbzogJCh0b3BkaXIpL3htYWxsb2MuaAorIHVuZG8uc286 ICQodG9wZGlyKS94bWFsbG9jLmgKKyB1dGlsLnNvOiAkKHRvcGRpcikveG1hbGxvYy5oCisgdmlf bW9kZS5zbzogJCh0b3BkaXIpL3htYWxsb2MuaAorK3hmcmVlLnNvOiAkKHRvcGRpcikveG1hbGxv Yy5oCisgeG1hbGxvYy5zbzogJCh0b3BkaXIpL3htYWxsb2MuaAorIAorIGNvbXBsZXRlLm86ICQo dG9wZGlyKS9ybG1idXRpbC5oCitAQCAtNDIwLDYgKzQxOCw3IEBAIHRpbGRlLnNvOiAkKHRvcGRp cikvdGlsZGUuYworIHVuZG8uc286ICQodG9wZGlyKS91bmRvLmMKKyB1dGlsLnNvOiAkKHRvcGRp cikvdXRpbC5jCisgdmlfbW9kZS5zbzogJCh0b3BkaXIpL3ZpX21vZGUuYworK3hmcmVlLnNvOiAk KHRvcGRpcikveGZyZWUuYworIHhtYWxsb2Muc286ICQodG9wZGlyKS94bWFsbG9jLmMKKyAKKyBo aXN0ZXhwYW5kLnNvOiAkKHRvcGRpcikvaGlzdGV4cGFuZC5jCitAQCAtNDU0LDYgKzQ1Myw3IEBA IHRpbGRlLnNvOiB0aWxkZS5jCisgdW5kby5zbzogdW5kby5jCisgdXRpbC5zbzogdXRpbC5jCisg dmlfbW9kZS5zbzogdmlfbW9kZS5jCisreGZyZWUuc286IHhmcmVlLmMKKyB4bWFsbG9jLnNvOiB4 bWFsbG9jLmMKKyAKKyBoaXN0ZXhwYW5kLnNvOiBoaXN0ZXhwYW5kLmMKKy0tLSBhL3JlYWRsaW5l L3NpZ25hbHMuYworKysrIGIvcmVhZGxpbmUvc2lnbmFscy5jCitAQCAtMSwyNCArMSwyNCBAQAor IC8qIHNpZ25hbHMuYyAtLSBzaWduYWwgaGFuZGxpbmcgc3VwcG9ydCBmb3IgcmVhZGxpbmUuICov CisgCistLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBM aWJyYXJ5LCBhIGxpYnJhcnkgZm9yCistICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50 ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAg Zm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0 b3J5IGVkaXRpbmcuICAgICAgCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0CistICAgYW5kL29yIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAg YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAgIFRoZSBHTlUgUmVh ZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUK Ky0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0g ICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdO VSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBD T1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhl IGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkg VGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworKworICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQor IAorICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19IKQorQEAgLTQwLDEzICs0MCwxNCBAQAorICMg IGluY2x1ZGUgPHN5cy9pb2N0bC5oPgorICNlbmRpZiAvKiBHV0lOU1pfSU5fU1lTX0lPQ1RMICov CisgCistI2lmIGRlZmluZWQgKEhBTkRMRV9TSUdOQUxTKQorIC8qIFNvbWUgc3RhbmRhcmQgbGli cmFyeSByb3V0aW5lcy4gKi8KKyAjaW5jbHVkZSAicmVhZGxpbmUuaCIKKyAjaW5jbHVkZSAiaGlz dG9yeS5oIgorIAorICNpbmNsdWRlICJybHByaXZhdGUuaCIKKyAKKysjaWYgZGVmaW5lZCAoSEFO RExFX1NJR05BTFMpCisrCisgI2lmICFkZWZpbmVkIChSRVRTSUdUWVBFKQorICMgIGlmIGRlZmlu ZWQgKFZPSURfU0lHSEFORExFUikKKyAjICAgIGRlZmluZSBSRVRTSUdUWVBFIHZvaWQKK0BAIC04 MCw2ICs4MSw5IEBAIHR5cGVkZWYgc3RydWN0IHsgU2lnSGFuZGxlciAqc2FfaGFuZGxlcjsgaW50 IHNhX21hc2ssIHNhX2ZsYWdzOyB9IHNpZ2hhbmRsZXJfY3h0Cisgc3RhdGljIFNpZ0hhbmRsZXIg KnJsX3NldF9zaWdoYW5kbGVyIFBBUkFNUygoaW50LCBTaWdIYW5kbGVyICosIHNpZ2hhbmRsZXJf Y3h0ICopKTsKKyBzdGF0aWMgdm9pZCBybF9tYXliZV9zZXRfc2lnaGFuZGxlciBQQVJBTVMoKGlu dCwgU2lnSGFuZGxlciAqLCBzaWdoYW5kbGVyX2N4dCAqKSk7CisgCisrc3RhdGljIFJFVFNJR1RZ UEUgcmxfc2lnbmFsX2hhbmRsZXIgUEFSQU1TKChpbnQpKTsKKytzdGF0aWMgUkVUU0lHVFlQRSBf cmxfaGFuZGxlX3NpZ25hbCBQQVJBTVMoKGludCkpOworKyAgICAgCisgLyogRXhwb3J0ZWQgdmFy aWFibGVzIGZvciB1c2UgYnkgYXBwbGljYXRpb25zLiAqLworIAorIC8qIElmIG5vbi16ZXJvLCBy ZWFkbGluZSB3aWxsIGluc3RhbGwgaXRzIG93biBzaWduYWwgaGFuZGxlcnMgZm9yCitAQCAtOTMs NiArOTcsMTggQEAgaW50IHJsX2NhdGNoX3NpZ3dpbmNoID0gMTsKKyBpbnQgcmxfY2F0Y2hfc2ln d2luY2ggPSAwOwkvKiBmb3IgdGhlIHJlYWRsaW5lIHN0YXRlIHN0cnVjdCBpbiByZWFkbGluZS5j ICovCisgI2VuZGlmCisgCisrLyogUHJpdmF0ZSB2YXJpYWJsZXMuICovCisraW50IF9ybF9pbnRl cnJ1cHRfaW1tZWRpYXRlbHkgPSAwOworK2ludCB2b2xhdGlsZSBfcmxfY2F1Z2h0X3NpZ25hbCA9 IDA7CS8qIHNob3VsZCBiZSBzaWdfYXRvbWljX3QsIGJ1dCB0aGF0IHJlcXVpcmVzIGluY2x1ZGlu ZyA8c2lnbmFsLmg+IGV2ZXJ5d2hlcmUgKi8KKysKKysvKiBJZiBub24temVybywgcHJpbnQgY2hh cmFjdGVycyBjb3JyZXNwb25kaW5nIHRvIHJlY2VpdmVkIHNpZ25hbHMgYXMgbG9uZyBhcworKyAg IHRoZSB1c2VyIGhhcyBpbmRpY2F0ZWQgaGlzIGRlc2lyZSB0byBkbyBzbyAoX3JsX2VjaG9fY29u dHJvbF9jaGFycykuICovCisraW50IF9ybF9lY2hvY3RsID0gMDsKKysKKytpbnQgX3JsX2ludHJf Y2hhciA9IDA7CisraW50IF9ybF9xdWl0X2NoYXIgPSAwOworK2ludCBfcmxfc3VzcF9jaGFyID0g MDsKKysKKyBzdGF0aWMgaW50IHNpZ25hbHNfc2V0X2ZsYWc7Cisgc3RhdGljIGludCBzaWd3aW5j aF9zZXRfZmxhZzsKKyAKK0BAIC0xMTIsMTAgKzEyOCwzNiBAQCBzdGF0aWMgc2lnaGFuZGxlcl9j eHQgb2xkX3dpbmNoOworIAorIC8qIFJlYWRsaW5lIHNpZ25hbCBoYW5kbGVyIGZ1bmN0aW9ucy4g Ki8KKyAKKysvKiBDYWxsZWQgZnJvbSBSTF9DSEVDS19TSUdOQUxTKCkgbWFjcm8gKi8KKytSRVRT SUdUWVBFCisrX3JsX3NpZ25hbF9oYW5kbGVyIChzaWcpCisrICAgICBpbnQgc2lnOworK3sKKysg IF9ybF9jYXVnaHRfc2lnbmFsID0gMDsJLyogWFhYICovCisrCisrICBfcmxfaGFuZGxlX3NpZ25h bCAoc2lnKTsKKysgIFNJR0hBTkRMRVJfUkVUVVJOOworK30KKysKKyBzdGF0aWMgUkVUU0lHVFlQ RQorIHJsX3NpZ25hbF9oYW5kbGVyIChzaWcpCisgICAgICBpbnQgc2lnOworIHsKKysgIGlmIChf cmxfaW50ZXJydXB0X2ltbWVkaWF0ZWx5IHx8IFJMX0lTU1RBVEUoUkxfU1RBVEVfQ0FMTEJBQ0sp KQorKyAgICB7CisrICAgICAgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSA9IDA7CisrICAgICAg X3JsX2hhbmRsZV9zaWduYWwgKHNpZyk7CisrICAgIH0KKysgIGVsc2UKKysgICAgX3JsX2NhdWdo dF9zaWduYWwgPSBzaWc7CisrCisrICBTSUdIQU5ETEVSX1JFVFVSTjsKKyt9CisrCisrc3RhdGlj IFJFVFNJR1RZUEUKKytfcmxfaGFuZGxlX3NpZ25hbCAoc2lnKQorKyAgICAgaW50IHNpZzsKKyt7 CisgI2lmIGRlZmluZWQgKEhBVkVfUE9TSVhfU0lHTkFMUykKKyAgIHNpZ3NldF90IHNldDsKKyAj ZWxzZSAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCitAQCAtMTQyLDYgKzE4NCw3IEBAIHJsX3Np Z25hbF9oYW5kbGVyIChzaWcpCisgICBzd2l0Y2ggKHNpZykKKyAgICAgeworICAgICBjYXNlIFNJ R0lOVDoKKysgICAgICBfcmxfcmVzZXRfY29tcGxldGlvbl9zdGF0ZSAoKTsKKyAgICAgICBybF9m cmVlX2xpbmVfc3RhdGUgKCk7CisgICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKyAKK0BAIC0xNTcs OSArMjAwLDExIEBAIHJsX3NpZ25hbF9oYW5kbGVyIChzaWcpCisgI2lmIGRlZmluZWQgKFNJR1FV SVQpCisgICAgIGNhc2UgU0lHUVVJVDoKKyAjZW5kaWYKKysgICAgICBybF9lY2hvX3NpZ25hbF9j aGFyIChzaWcpOworICAgICAgIHJsX2NsZWFudXBfYWZ0ZXJfc2lnbmFsICgpOworIAorICNpZiBk ZWZpbmVkIChIQVZFX1BPU0lYX1NJR05BTFMpCisrICAgICAgc2lnZW1wdHlzZXQgKCZzZXQpOwor ICAgICAgIHNpZ3Byb2NtYXNrIChTSUdfQkxPQ0ssIChzaWdzZXRfdCAqKU5VTEwsICZzZXQpOwor ICAgICAgIHNpZ2RlbHNldCAoJnNldCwgc2lnKTsKKyAjZWxzZSAvKiAhSEFWRV9QT1NJWF9TSUdO QUxTICovCitAQCAtMjUxLDExICsyOTYsMTEgQEAgcmxfc2V0X3NpZ2hhbmRsZXIgKHNpZywgaGFu ZGxlciwgb2hhbmRsZXIpCisgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdDsKKyAKKyAgIGFjdC5zYV9o YW5kbGVyID0gaGFuZGxlcjsKKy0jaWYgZGVmaW5lZCAoU0lHV0lOQ0gpCisrIyAgaWYgZGVmaW5l ZCAoU0lHV0lOQ0gpCisgICBhY3Quc2FfZmxhZ3MgPSAoc2lnID09IFNJR1dJTkNIKSA/IFNBX1JF U1RBUlQgOiAwOworLSNlbHNlCisrIyAgZWxzZQorICAgYWN0LnNhX2ZsYWdzID0gMDsKKy0jZW5k aWYKKysjICBlbmRpZiAvKiBTSUdXSU5DSCAqLworICAgc2lnZW1wdHlzZXQgKCZhY3Quc2FfbWFz ayk7CisgICBzaWdlbXB0eXNldCAoJm9oYW5kbGVyLT5zYV9tYXNrKTsKKyAgIHNpZ2FjdGlvbiAo c2lnLCAmYWN0LCAmb2xkX2hhbmRsZXIpOworQEAgLTI5Miw5ICszMzcsNDQgQEAgcmxfc2V0X3Np Z25hbHMgKCkKKyB7CisgICBzaWdoYW5kbGVyX2N4dCBkdW1teTsKKyAgIFNpZ0hhbmRsZXIgKm9o OworKyNpZiBkZWZpbmVkIChIQVZFX1BPU0lYX1NJR05BTFMpCisrICBzdGF0aWMgaW50IHNpZ21h c2tfc2V0ID0gMDsKKysgIHN0YXRpYyBzaWdzZXRfdCBic2V0LCBvc2V0OworKyNlbmRpZgorKwor KyNpZiBkZWZpbmVkIChIQVZFX1BPU0lYX1NJR05BTFMpCisrICBpZiAocmxfY2F0Y2hfc2lnbmFs cyAmJiBzaWdtYXNrX3NldCA9PSAwKQorKyAgICB7CisrICAgICAgc2lnZW1wdHlzZXQgKCZic2V0 KTsKKysKKysgICAgICBzaWdhZGRzZXQgKCZic2V0LCBTSUdJTlQpOworKyAgICAgIHNpZ2FkZHNl dCAoJmJzZXQsIFNJR1RFUk0pOworKyNpZiBkZWZpbmVkIChTSUdRVUlUKQorKyAgICAgIHNpZ2Fk ZHNldCAoJmJzZXQsIFNJR1FVSVQpOworKyNlbmRpZgorKyNpZiBkZWZpbmVkIChTSUdBTFJNKQor KyAgICAgIHNpZ2FkZHNldCAoJmJzZXQsIFNJR0FMUk0pOworKyNlbmRpZgorKyNpZiBkZWZpbmVk IChTSUdUU1RQKQorKyAgICAgIHNpZ2FkZHNldCAoJmJzZXQsIFNJR1RTVFApOworKyNlbmRpZgor KyNpZiBkZWZpbmVkIChTSUdUVElOKQorKyAgICAgIHNpZ2FkZHNldCAoJmJzZXQsIFNJR1RUSU4p OworKyNlbmRpZgorKyNpZiBkZWZpbmVkIChTSUdUVE9VKQorKyAgICAgIHNpZ2FkZHNldCAoJmJz ZXQsIFNJR1RUT1UpOworKyNlbmRpZgorKyAgICAgIHNpZ21hc2tfc2V0ID0gMTsKKysgICAgfSAg ICAgIAorKyNlbmRpZiAvKiBIQVZFX1BPU0lYX1NJR05BTFMgKi8KKyAKKyAgIGlmIChybF9jYXRj aF9zaWduYWxzICYmIHNpZ25hbHNfc2V0X2ZsYWcgPT0gMCkKKyAgICAgeworKyNpZiBkZWZpbmVk IChIQVZFX1BPU0lYX1NJR05BTFMpCisrICAgICAgc2lnZW1wdHlzZXQgKCZvc2V0KTsKKysgICAg ICBzaWdwcm9jbWFzayAoU0lHX0JMT0NLLCAmYnNldCwgJm9zZXQpOworKyNlbmRpZgorKworICAg ICAgIHJsX21heWJlX3NldF9zaWdoYW5kbGVyIChTSUdJTlQsIHJsX3NpZ25hbF9oYW5kbGVyLCAm b2xkX2ludCk7CisgICAgICAgcmxfbWF5YmVfc2V0X3NpZ2hhbmRsZXIgKFNJR1RFUk0sIHJsX3Np Z25hbF9oYW5kbGVyLCAmb2xkX3Rlcm0pOworICNpZiBkZWZpbmVkIChTSUdRVUlUKQorQEAgLTMy OCw2ICs0MDgsMTAgQEAgcmxfc2V0X3NpZ25hbHMgKCkKKyAjZW5kaWYgLyogU0lHVFRJTiAqLwor IAorICAgICAgIHNpZ25hbHNfc2V0X2ZsYWcgPSAxOworKworKyNpZiBkZWZpbmVkIChIQVZFX1BP U0lYX1NJR05BTFMpCisrICAgICAgc2lncHJvY21hc2sgKFNJR19TRVRNQVNLLCAmb3NldCwgKHNp Z3NldF90ICopTlVMTCk7CisrI2VuZGlmCisgICAgIH0KKyAKKyAjaWYgZGVmaW5lZCAoU0lHV0lO Q0gpCitAQCAtMzk0LDggKzQ3OCw4IEBAIHJsX2NsZWFudXBfYWZ0ZXJfc2lnbmFsICgpCisgICBf cmxfY2xlYW5fdXBfZm9yX2V4aXQgKCk7CisgICBpZiAocmxfZGVwcmVwX3Rlcm1fZnVuY3Rpb24p CisgICAgICgqcmxfZGVwcmVwX3Rlcm1fZnVuY3Rpb24pICgpOworLSAgcmxfY2xlYXJfc2lnbmFs cyAoKTsKKyAgIHJsX2NsZWFyX3BlbmRpbmdfaW5wdXQgKCk7CisrICBybF9jbGVhcl9zaWduYWxz ICgpOworIH0KKyAKKyAvKiBSZXNldCB0aGUgdGVybWluYWwgYW5kIHJlYWRsaW5lIHN0YXRlIGFm dGVyIGEgc2lnbmFsIGhhbmRsZXIgcmV0dXJucy4gKi8KK0BAIC00MjgsMyArNTEyLDE2MCBAQCBy bF9mcmVlX2xpbmVfc3RhdGUgKCkKKyB9CisgCisgI2VuZGlmICAvKiBIQU5ETEVfU0lHTkFMUyAq LworKworKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiogKi8KKysvKgkJCQkJCQkJICAgICovCisrLyoJCQkgICBTSUdJTlQg TWFuYWdlbWVudAkJCSAgICAqLworKy8qCQkJCQkJCQkgICAgKi8KKysvKiAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisr CisrI2lmIGRlZmluZWQgKEhBVkVfUE9TSVhfU0lHTkFMUykKKytzdGF0aWMgc2lnc2V0X3Qgc2ln aW50X3NldCwgc2lnaW50X29zZXQ7Cisrc3RhdGljIHNpZ3NldF90IHNpZ3dpbmNoX3NldCwgc2ln d2luY2hfb3NldDsKKysjZWxzZSAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCisrIyAgaWYgZGVm aW5lZCAoSEFWRV9CU0RfU0lHTkFMUykKKytzdGF0aWMgaW50IHNpZ2ludF9vbGRtYXNrOworK3N0 YXRpYyBpbnQgc2lnd2luY2hfb2xkbWFzazsKKysjICBlbmRpZiAvKiBIQVZFX0JTRF9TSUdOQUxT ICovCisrI2VuZGlmIC8qICFIQVZFX1BPU0lYX1NJR05BTFMgKi8KKysKKytzdGF0aWMgaW50IHNp Z2ludF9ibG9ja2VkOworK3N0YXRpYyBpbnQgc2lnd2luY2hfYmxvY2tlZDsKKysKKysvKiBDYXVz ZSBTSUdJTlQgdG8gbm90IGJlIGRlbGl2ZXJlZCB1bnRpbCB0aGUgY29ycmVzcG9uZGluZyBjYWxs IHRvCisrICAgcmVsZWFzZV9zaWdpbnQoKS4gKi8KKyt2b2lkCisrX3JsX2Jsb2NrX3NpZ2ludCAo KQorK3sKKysgIGlmIChzaWdpbnRfYmxvY2tlZCkKKysgICAgcmV0dXJuOworKworKyNpZiBkZWZp bmVkIChIQVZFX1BPU0lYX1NJR05BTFMpCisrICBzaWdlbXB0eXNldCAoJnNpZ2ludF9zZXQpOwor KyAgc2lnZW1wdHlzZXQgKCZzaWdpbnRfb3NldCk7CisrICBzaWdhZGRzZXQgKCZzaWdpbnRfc2V0 LCBTSUdJTlQpOworKyAgc2lncHJvY21hc2sgKFNJR19CTE9DSywgJnNpZ2ludF9zZXQsICZzaWdp bnRfb3NldCk7CisrI2Vsc2UgLyogIUhBVkVfUE9TSVhfU0lHTkFMUyAqLworKyMgIGlmIGRlZmlu ZWQgKEhBVkVfQlNEX1NJR05BTFMpCisrICBzaWdpbnRfb2xkbWFzayA9IHNpZ2Jsb2NrIChzaWdt YXNrIChTSUdJTlQpKTsKKysjICBlbHNlIC8qICFIQVZFX0JTRF9TSUdOQUxTICovCisrIyAgICBp ZiBkZWZpbmVkIChIQVZFX1VTR19TSUdIT0xEKQorKyAgc2lnaG9sZCAoU0lHSU5UKTsKKysjICAg IGVuZGlmIC8qIEhBVkVfVVNHX1NJR0hPTEQgKi8KKysjICBlbmRpZiAvKiAhSEFWRV9CU0RfU0lH TkFMUyAqLworKyNlbmRpZiAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCisrCisrICBzaWdpbnRf YmxvY2tlZCA9IDE7CisrfQorKworKy8qIEFsbG93IFNJR0lOVCB0byBiZSBkZWxpdmVyZWQuICov Cisrdm9pZAorK19ybF9yZWxlYXNlX3NpZ2ludCAoKQorK3sKKysgIGlmIChzaWdpbnRfYmxvY2tl ZCA9PSAwKQorKyAgICByZXR1cm47CisrCisrI2lmIGRlZmluZWQgKEhBVkVfUE9TSVhfU0lHTkFM UykKKysgIHNpZ3Byb2NtYXNrIChTSUdfU0VUTUFTSywgJnNpZ2ludF9vc2V0LCAoc2lnc2V0X3Qg KilOVUxMKTsKKysjZWxzZQorKyMgIGlmIGRlZmluZWQgKEhBVkVfQlNEX1NJR05BTFMpCisrICBz aWdzZXRtYXNrIChzaWdpbnRfb2xkbWFzayk7CisrIyAgZWxzZSAvKiAhSEFWRV9CU0RfU0lHTkFM UyAqLworKyMgICAgaWYgZGVmaW5lZCAoSEFWRV9VU0dfU0lHSE9MRCkKKysgIHNpZ3JlbHNlIChT SUdJTlQpOworKyMgICAgZW5kaWYgLyogSEFWRV9VU0dfU0lHSE9MRCAqLworKyMgIGVuZGlmIC8q ICFIQVZFX0JTRF9TSUdOQUxTICovCisrI2VuZGlmIC8qICFIQVZFX1BPU0lYX1NJR05BTFMgKi8K KysKKysgIHNpZ2ludF9ibG9ja2VkID0gMDsKKyt9CisrCisrLyogQ2F1c2UgU0lHV0lOQ0ggdG8g bm90IGJlIGRlbGl2ZXJlZCB1bnRpbCB0aGUgY29ycmVzcG9uZGluZyBjYWxsIHRvCisrICAgcmVs ZWFzZV9zaWd3aW5jaCgpLiAqLworK3ZvaWQKKytfcmxfYmxvY2tfc2lnd2luY2ggKCkKKyt7Cisr ICBpZiAoc2lnd2luY2hfYmxvY2tlZCkKKysgICAgcmV0dXJuOworKworKyNpZiBkZWZpbmVkIChI QVZFX1BPU0lYX1NJR05BTFMpCisrICBzaWdlbXB0eXNldCAoJnNpZ3dpbmNoX3NldCk7CisrICBz aWdlbXB0eXNldCAoJnNpZ3dpbmNoX29zZXQpOworKyAgc2lnYWRkc2V0ICgmc2lnd2luY2hfc2V0 LCBTSUdXSU5DSCk7CisrICBzaWdwcm9jbWFzayAoU0lHX0JMT0NLLCAmc2lnd2luY2hfc2V0LCAm c2lnd2luY2hfb3NldCk7CisrI2Vsc2UgLyogIUhBVkVfUE9TSVhfU0lHTkFMUyAqLworKyMgIGlm IGRlZmluZWQgKEhBVkVfQlNEX1NJR05BTFMpCisrICBzaWd3aW5jaF9vbGRtYXNrID0gc2lnYmxv Y2sgKHNpZ21hc2sgKFNJR1dJTkNIKSk7CisrIyAgZWxzZSAvKiAhSEFWRV9CU0RfU0lHTkFMUyAq LworKyMgICAgaWYgZGVmaW5lZCAoSEFWRV9VU0dfU0lHSE9MRCkKKysgIHNpZ2hvbGQgKFNJR1dJ TkNIKTsKKysjICAgIGVuZGlmIC8qIEhBVkVfVVNHX1NJR0hPTEQgKi8KKysjICBlbmRpZiAvKiAh SEFWRV9CU0RfU0lHTkFMUyAqLworKyNlbmRpZiAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCisr CisrICBzaWd3aW5jaF9ibG9ja2VkID0gMTsKKyt9CisrCisrLyogQWxsb3cgU0lHV0lOQ0ggdG8g YmUgZGVsaXZlcmVkLiAqLworK3ZvaWQKKytfcmxfcmVsZWFzZV9zaWd3aW5jaCAoKQorK3sKKysg IGlmIChzaWd3aW5jaF9ibG9ja2VkID09IDApCisrICAgIHJldHVybjsKKysKKysjaWYgZGVmaW5l ZCAoSEFWRV9QT1NJWF9TSUdOQUxTKQorKyAgc2lncHJvY21hc2sgKFNJR19TRVRNQVNLLCAmc2ln d2luY2hfb3NldCwgKHNpZ3NldF90ICopTlVMTCk7CisrI2Vsc2UKKysjICBpZiBkZWZpbmVkIChI QVZFX0JTRF9TSUdOQUxTKQorKyAgc2lnc2V0bWFzayAoc2lnd2luY2hfb2xkbWFzayk7CisrIyAg ZWxzZSAvKiAhSEFWRV9CU0RfU0lHTkFMUyAqLworKyMgICAgaWYgZGVmaW5lZCAoSEFWRV9VU0df U0lHSE9MRCkKKysgIHNpZ3JlbHNlIChTSUdXSU5DSCk7CisrIyAgICBlbmRpZiAvKiBIQVZFX1VT R19TSUdIT0xEICovCisrIyAgZW5kaWYgLyogIUhBVkVfQlNEX1NJR05BTFMgKi8KKysjZW5kaWYg LyogIUhBVkVfUE9TSVhfU0lHTkFMUyAqLworKworKyAgc2lnd2luY2hfYmxvY2tlZCA9IDA7Cisr fQorKworKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiogKi8KKysvKgkJCQkJCQkJICAgICovCisrLyoJCUVjaG9pbmcgc3Bl Y2lhbCBjb250cm9sIGNoYXJhY3RlcnMJCSAgICAqLworKy8qCQkJCQkJCQkgICAgKi8KKysvKiAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqICovCisrdm9pZAorK3JsX2VjaG9fc2lnbmFsX2NoYXIgKHNpZykKKysgICAgIGludCBz aWc7CisreworKyAgY2hhciBjc3RyWzNdOworKyAgaW50IGNzbGVuLCBjOworKworKyAgaWYgKF9y bF9lY2hvY3RsID09IDAgfHwgX3JsX2VjaG9fY29udHJvbF9jaGFycyA9PSAwKQorKyAgICByZXR1 cm47CisrCisrICBzd2l0Y2ggKHNpZykKKysgICAgeworKyAgICBjYXNlIFNJR0lOVDogIGMgPSBf cmxfaW50cl9jaGFyOyBicmVhazsKKysjaWYgZGVmaW5lZCAoU0lHUVVJVCkKKysgICAgY2FzZSBT SUdRVUlUOiBjID0gX3JsX3F1aXRfY2hhcjsgYnJlYWs7CisrI2VuZGlmCisrI2lmIGRlZmluZWQg KFNJR1RTVFApCisrICAgIGNhc2UgU0lHVFNUUDogYyA9IF9ybF9zdXNwX2NoYXI7IGJyZWFrOwor KyNlbmRpZgorKyAgICBkZWZhdWx0OiByZXR1cm47CisrICAgIH0KKysKKysgIGlmIChDVFJMX0NI QVIgKGMpIHx8IGMgPT0gUlVCT1VUKQorKyAgICB7CisrICAgICAgY3N0clswXSA9ICdeJzsKKysg ICAgICBjc3RyWzFdID0gQ1RSTF9DSEFSIChjKSA/IFVOQ1RSTCAoYykgOiAnPyc7CisrICAgICAg Y3N0cltjc2xlbiA9IDJdID0gJ1wwJzsKKysgICAgfQorKyAgZWxzZQorKyAgICB7CisrICAgICAg Y3N0clswXSA9IGM7CisrICAgICAgY3N0cltjc2xlbiA9IDFdID0gJ1wwJzsKKysgICAgfQorKwor KyAgX3JsX291dHB1dF9zb21lX2NoYXJzIChjc3RyLCBjc2xlbik7CisrfQorb2xkIG1vZGUgMTAw NzU1CituZXcgbW9kZSAxMDA2NDQKKy0tLSBhL3JlYWRsaW5lL3N1cHBvcnQvY29uZmlnLmd1ZXNz CisrKysgYi9yZWFkbGluZS9zdXBwb3J0L2NvbmZpZy5ndWVzcworQEAgLTEsOSArMSwxMCBAQAor ICMhIC9iaW4vc2gKKyAjIEF0dGVtcHQgdG8gZ3Vlc3MgYSBjYW5vbmljYWwgc3lzdGVtIG5hbWUu CisgIyAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5Nywg MTk5OCwgMTk5OSwKKy0jICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwg MjAwNiwgMjAwNywgMjAwOCwgMjAwOQorKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKyAKKy10aW1lc3RhbXA9JzIwMDQtMDItMTYnCisrdGltZXN0YW1wPScyMDA4LTAzLTEyJwor IAorICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkgaXQKKyAjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CitAQCAtMTcsMTMgKzE4LDE1IEBAIHRpbWVz dGFtcD0nMjAwNC0wMi0xNicKKyAjCisgIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0jIEZvdW5kYXRpb24s IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3 LCBVU0EuCisrIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQgLSBGaWZ0aCBG bG9vciwgQm9zdG9uLCBNQQorKyMgMDIxMTAtMTMwMSwgVVNBLgorICMKKyAjIEFzIGEgc3BlY2lh bCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyAj IGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMg YQorICMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5 IGluY2x1ZGUgaXQgdW5kZXIKKyAjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlv dSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKyAKKysKKyAjIE9yaWdpbmFsbHkg d3JpdHRlbiBieSBQZXIgQm90aG5lciA8cGVyQGJvdGhuZXIuY29tPi4KKyAjIFBsZWFzZSBzZW5k IHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiAgU3VibWl0IGEgY29udGV4dAor ICMgZGlmZiBhbmQgYSBwcm9wZXJseSBmb3JtYXR0ZWQgQ2hhbmdlTG9nIGVudHJ5LgorQEAgLTUz LDggKzU2LDggQEAgdmVyc2lvbj0iXAorIEdOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCisg CisgT3JpZ2luYWxseSB3cml0dGVuIGJ5IFBlciBCb3RobmVyLgorLUNvcHlyaWdodCAoQykgMTk5 MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMQor LUZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5 MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKKysyMDAy LCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisgCisgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJj ZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KKyB3YXJyYW50eTsgbm90IGV2 ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4iCitAQCAtNjYsMTEgKzY5LDExIEBAIFRyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9y bWF0aW9uLiIKKyB3aGlsZSB0ZXN0ICQjIC1ndCAwIDsgZG8KKyAgIGNhc2UgJDEgaW4KKyAgICAg LS10aW1lLXN0YW1wIHwgLS10aW1lKiB8IC10ICkKKy0gICAgICAgZWNobyAiJHRpbWVzdGFtcCIg OyBleGl0IDAgOzsKKysgICAgICAgZWNobyAiJHRpbWVzdGFtcCIgOyBleGl0IDs7CisgICAgIC0t dmVyc2lvbiB8IC12ICkKKy0gICAgICAgZWNobyAiJHZlcnNpb24iIDsgZXhpdCAwIDs7CisrICAg ICAgIGVjaG8gIiR2ZXJzaW9uIiA7IGV4aXQgOzsKKyAgICAgLS1oZWxwIHwgLS1oKiB8IC1oICkK Ky0gICAgICAgZWNobyAiJHVzYWdlIjsgZXhpdCAwIDs7CisrICAgICAgIGVjaG8gIiR1c2FnZSI7 IGV4aXQgOzsKKyAgICAgLS0gKSAgICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCisgICAgICAg IHNoaWZ0OyBicmVhayA7OworICAgICAtICkJIyBVc2Ugc3RkaW4gYXMgaW5wdXQuCitAQCAtMTA0 LDcgKzEwNyw3IEBAIHNldF9jY19mb3JfYnVpbGQ9JworIHRyYXAgImV4aXRjb2RlPVwkPzsgKHJt IC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rldi9udWxsKSAmJiBl eGl0IFwkZXhpdGNvZGUiIDAgOworIHRyYXAgInJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7 IHJtZGlyIFwkdG1wIDI+L2Rldi9udWxsOyBleGl0IDEiIDEgMiAxMyAxNSA7CisgOiAke1RNUERJ Uj0vdG1wfSA7CistIHsgdG1wPWAodW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAtcSAiJFRNUERJUi9j Z1hYWFhYWCIpIDI+L2Rldi9udWxsYCAmJiB0ZXN0IC1uICIkdG1wIiAmJiB0ZXN0IC1kICIkdG1w IiA7IH0gfHwKKysgeyB0bXA9YCh1bWFzayAwNzcgJiYgbWt0ZW1wIC1kICIkVE1QRElSL2NnWFhY WFhYIikgMj4vZGV2L251bGxgICYmIHRlc3QgLW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiIDsg fSB8fAorICB7IHRlc3QgLW4gIiRSQU5ET00iICYmIHRtcD0kVE1QRElSL2NnJCQtJFJBTkRPTSAm JiAodW1hc2sgMDc3ICYmIG1rZGlyICR0bXApIDsgfSB8fAorICB7IHRtcD0kVE1QRElSL2NnLSQk ICYmICh1bWFzayAwNzcgJiYgbWtkaXIgJHRtcCkgJiYgZWNobyAiV2FybmluZzogY3JlYXRpbmcg aW5zZWN1cmUgdGVtcCBkaXJlY3RvcnkiID4mMiA7IH0gfHwKKyAgeyBlY2hvICIkbWU6IGNhbm5v dCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluICRUTVBESVIiID4mMiA7IGV4aXQgMSA7 IH0gOworQEAgLTEyMyw3ICsxMjYsNyBAQCBjYXNlICRDQ19GT1JfQlVJTEQsJEhPU1RfQ0MsJEND IGluCisgCTs7CisgICwsKikgICBDQ19GT1JfQlVJTEQ9JENDIDs7CisgICwqLCopICBDQ19GT1Jf QlVJTEQ9JEhPU1RfQ0MgOzsKKy1lc2FjIDsnCisrZXNhYyA7IHNldF9jY19mb3JfYnVpbGQ9IDsn CisgCisgIyBUaGlzIGlzIG5lZWRlZCB0byBmaW5kIHVuYW1lIG9uIGEgUHlyYW1pZCBPU3ggd2hl biBydW4gaW4gdGhlIEJTRCB1bml2ZXJzZS4KKyAjIChnaGF6aUBub2MucnV0Z2Vycy5lZHUgMTk5 NC0wOC0yNCkKK0BAIC0xNTgsNiArMTYxLDcgQEAgY2FzZSAiJHtVTkFNRV9NQUNISU5FfToke1VO QU1FX1NZU1RFTX06JHtVTkFNRV9SRUxFQVNFfToke1VOQU1FX1ZFUlNJT059IiBpbgorIAkgICAg YXJtKikgbWFjaGluZT1hcm0tdW5rbm93biA7OworIAkgICAgc2gzZWwpIG1hY2hpbmU9c2hsLXVu a25vd24gOzsKKyAJICAgIHNoM2ViKSBtYWNoaW5lPXNoLXVua25vd24gOzsKKysJICAgIHNoNWVs KSBtYWNoaW5lPXNoNWxlLXVua25vd24gOzsKKyAJICAgICopIG1hY2hpbmU9JHtVTkFNRV9NQUNI SU5FX0FSQ0h9LXVua25vd24gOzsKKyAJZXNhYworIAkjIFRoZSBPcGVyYXRpbmcgU3lzdGVtIGlu Y2x1ZGluZyBvYmplY3QgZm9ybWF0LCBpZiBpdCBoYXMgc3dpdGNoZWQKK0BAIC0xOTYsNjggKzIw MCwzMiBAQCBjYXNlICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfToke1VOQU1FX1JF TEVBU0V9OiR7VU5BTUVfVkVSU0lPTn0iIGluCisgCSMgY29udGFpbnMgcmVkdW5kYW50IGluZm9y bWF0aW9uLCB0aGUgc2hvcnRlciBmb3JtOgorIAkjIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVS QVRJTkdfU1lTVEVNIGlzIHVzZWQuCisgCWVjaG8gIiR7bWFjaGluZX0tJHtvc30ke3JlbGVhc2V9 IgorLQlleGl0IDAgOzsKKy0gICAgYW1kNjQ6T3BlbkJTRDoqOiopCistCWVjaG8geDg2XzY0LXVu a25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CistICAgIGFtaWdhOk9w ZW5CU0Q6KjoqKQorLQllY2hvIG02OGstdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQor LQlleGl0IDAgOzsKKy0gICAgYXJjOk9wZW5CU0Q6KjoqKQorLQllY2hvIG1pcHNlbC11bmtub3du LW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworLSAgICBjYXRzOk9wZW5CU0Q6 KjoqKQorLQllY2hvIGFybS11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CistCWV4aXQg MCA7OworLSAgICBocDMwMDpPcGVuQlNEOio6KikKKy0JZWNobyBtNjhrLXVua25vd24tb3BlbmJz ZCR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CistICAgIG1hYzY4azpPcGVuQlNEOio6KikK Ky0JZWNobyBtNjhrLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7 CistICAgIG1hY3BwYzpPcGVuQlNEOio6KikKKy0JZWNobyBwb3dlcnBjLXVua25vd24tb3BlbmJz ZCR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CistICAgIG12bWU2OGs6T3BlbkJTRDoqOiop CistCWVjaG8gbTY4ay11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7 OworLSAgICBtdm1lODhrOk9wZW5CU0Q6KjoqKQorLQllY2hvIG04OGstdW5rbm93bi1vcGVuYnNk JHtVTkFNRV9SRUxFQVNFfQorLQlleGl0IDAgOzsKKy0gICAgbXZtZXBwYzpPcGVuQlNEOio6KikK Ky0JZWNobyBwb3dlcnBjLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAw IDs7CistICAgIHBlZ2Fzb3M6T3BlbkJTRDoqOiopCistCWVjaG8gcG93ZXJwYy11bmtub3duLW9w ZW5ic2Qke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworLSAgICBwbWF4Ok9wZW5CU0Q6Kjoq KQorLQllY2hvIG1pcHNlbC11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CistCWV4aXQg MCA7OworLSAgICBzZ2k6T3BlbkJTRDoqOiopCistCWVjaG8gbWlwc2ViLXVua25vd24tb3BlbmJz ZCR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CistICAgIHN1bjM6T3BlbkJTRDoqOiopCist CWVjaG8gbTY4ay11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7Owor LSAgICB3Z3Jpc2M6T3BlbkJTRDoqOiopCistCWVjaG8gbWlwc2VsLXVua25vd24tb3BlbmJzZCR7 VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjpPcGVuQlNEOio6 KikKKy0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFT RX0KKy0JZXhpdCAwIDs7CisrCVVOQU1FX01BQ0hJTkVfQVJDSD1gYXJjaCB8IHNlZCAncy9PcGVu QlNELi8vJ2AKKysJZWNobyAke1VOQU1FX01BQ0hJTkVfQVJDSH0tdW5rbm93bi1vcGVuYnNkJHtV TkFNRV9SRUxFQVNFfQorKwlleGl0IDs7CisgICAgICo6ZWtrb0JTRDoqOiopCisgCWVjaG8gJHtV TkFNRV9NQUNISU5FfS11bmtub3duLWVra29ic2Qke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7 OworKwlleGl0IDs7CisrICAgICo6U29saWRCU0Q6KjoqKQorKwllY2hvICR7VU5BTUVfTUFDSElO RX0tdW5rbm93bi1zb2xpZGJzZCR7VU5BTUVfUkVMRUFTRX0KKysJZXhpdCA7OworICAgICBtYWNw cGM6TWlyQlNEOio6KikKKy0JZWNobyBwb3dlcnBwYy11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVM RUFTRX0KKy0JZXhpdCAwIDs7CisrCWVjaG8gcG93ZXJwYy11bmtub3duLW1pcmJzZCR7VU5BTUVf UkVMRUFTRX0KKysJZXhpdCA7OworICAgICAqOk1pckJTRDoqOiopCisgCWVjaG8gJHtVTkFNRV9N QUNISU5FfS11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CisrCWV4 aXQgOzsKKyAgICAgYWxwaGE6T1NGMToqOiopCistCWlmIHRlc3QgJFVOQU1FX1JFTEVBU0UgPSAi VjQuMCI7IHRoZW4KKysJY2FzZSAkVU5BTUVfUkVMRUFTRSBpbgorKwkqNC4wKQorIAkJVU5BTUVf UkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDN9J2AKKy0JZmkKKysJ CTs7CisrCSo1LiopCisrCSAgICAgICAgVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12 IHwgYXdrICd7cHJpbnQgJDR9J2AKKysJCTs7CisrCWVzYWMKKyAJIyBBY2NvcmRpbmcgdG8gQ29t cGFxLCAvdXNyL3NiaW4vcHNyaW5mbyBoYXMgYmVlbiBhdmFpbGFibGUgb24KKyAJIyBPU0YvMSBh bmQgVHJ1NjQgc3lzdGVtcyBwcm9kdWNlZCBzaW5jZSAxOTk1LiAgSSBob3BlIHRoYXQKKyAJIyBj b3ZlcnMgbW9zdCBzeXN0ZW1zIHJ1bm5pbmcgdG9kYXkuICBUaGlzIGNvZGUgcGlwZXMgdGhlIENQ VQorQEAgLTI5NSw0NSArMjYzLDQ5IEBAIGNhc2UgIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9T WVNURU19OiR7VU5BTUVfUkVMRUFTRX06JHtVTkFNRV9WRVJTSU9OfSIgaW4KKyAJICAgICJFVjcu OSAoMjEzNjRBKSIpCisgCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NzkiIDs7CisgCWVzYWMKKysJ IyBBIFBuLm4gdmVyc2lvbiBpcyBhIHBhdGNoZWQgdmVyc2lvbi4KKyAJIyBBIFZuLm4gdmVyc2lv biBpcyBhIHJlbGVhc2VkIHZlcnNpb24uCisgCSMgQSBUbi5uIHZlcnNpb24gaXMgYSByZWxlYXNl ZCBmaWVsZCB0ZXN0IHZlcnNpb24uCisgCSMgQSBYbi5uIHZlcnNpb24gaXMgYW4gdW5yZWxlYXNl ZCBleHBlcmltZW50YWwgYmFzZWxldmVsLgorIAkjIDEuMiB1c2VzICIxLjIiIGZvciB1bmFtZSAt ci4KKy0JZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1vc2ZgZWNobyAke1VOQU1FX1JFTEVBU0V9 IHwgc2VkIC1lICdzL15bVlRYXS8vJyB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicg J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J2AKKy0JZXhpdCAwIDs7CistICAgIEFscGhhKjpP cGVuVk1TOio6KikKKy0JZWNobyBhbHBoYS1ocC12bXMKKy0JZXhpdCAwIDs7CisrCWVjaG8gJHtV TkFNRV9NQUNISU5FfS1kZWMtb3NmYGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9e W1BWVFhdLy8nIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamts bW5vcHFyc3R1dnd4eXonYAorKwlleGl0IDs7CisgICAgIEFscGhhXCAqOldpbmRvd3NfTlQqOiop CisgCSMgSG93IGRvIHdlIGtub3cgaXQncyBJbnRlcml4IHJhdGhlciB0aGFuIHRoZSBnZW5lcmlj IFBPU0lYIHN1YnN5c3RlbT8KKyAJIyBTaG91bGQgd2UgY2hhbmdlIFVOQU1FX01BQ0hJTkUgYmFz ZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkCisgCSMgb2YgdGhlIHNwZWNpZmljIEFs cGhhIG1vZGVsPworIAllY2hvIGFscGhhLXBjLWludGVyaXgKKy0JZXhpdCAwIDs7CisrCWV4aXQg OzsKKyAgICAgMjEwNjQ6V2luZG93c19OVDo1MDozKQorIAllY2hvIGFscGhhLWRlYy13aW5udDMu NQorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBBbWlnYSo6VU5JWF9TeXN0ZW1fVjo0LjA6 KikKKyAJZWNobyBtNjhrLXVua25vd24tc3lzdjQKKy0JZXhpdCAwOzsKKysJZXhpdCA7OworICAg ICAqOltBYV1taWdhW09vXVtTc106KjoqKQorIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93 bi1hbWlnYW9zCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgICo6W01tXW9ycGhbT29dW1Nz XToqOiopCisgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW1vcnBob3MKKy0JZXhpdCAw IDs7CisrCWV4aXQgOzsKKyAgICAgKjpPUy8zOTA6KjoqKQorIAllY2hvIGkzNzAtaWJtLW9wZW5l ZGl0aW9uCistCWV4aXQgMCA7OworKwlleGl0IDs7CisrICAgICo6ei9WTToqOiopCisrCWVjaG8g czM5MC1pYm0tenZtb2UKKysJZXhpdCA7OworICAgICAqOk9TNDAwOio6KikKKyAgICAgICAgIGVj aG8gcG93ZXJwYy1pYm0tb3M0MDAKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgYXJtOlJJ U0MqOjEuWzAxMl0qOip8YXJtOnJpc2NpeDoxLlswMTJdKjoqKQorIAllY2hvIGFybS1hY29ybi1y aXNjaXgke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMDs7CisrCWV4aXQgOzsKKysgICAgYXJtOnJp c2NvczoqOip8YXJtOlJJU0NPUzoqOiopCisrCWVjaG8gYXJtLXVua25vd24tcmlzY29zCisrCWV4 aXQgOzsKKyAgICAgU1IyPzAxOkhJLVVYL01QUDoqOiogfCBTUjgwMDA6SEktVVgvTVBQOio6KikK KyAJZWNobyBocHBhMS4xLWhpdGFjaGktaGl1eG1wcAorLQlleGl0IDA7OworKwlleGl0IDs7Cisg ICAgIFB5cmFtaWQqOk9TeCo6KjoqIHwgTUlTKjpPU3gqOio6KiB8IE1JUyo6U01QX0RDLU9TeCo6 KjoqKQorIAkjIGFrZWVAd3BkaXMwMy53cGFmYi5hZi5taWwgKEVhcmxlIEYuIEFrZSkgY29udHJp YnV0ZWQgTUlTIGFuZCBOSUxFLgorIAlpZiB0ZXN0ICJgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9u dWxsYCIgPSBhdHQgOyB0aGVuCitAQCAtMzQxLDMyICszMTMsMzIgQEAgY2FzZSAiJHtVTkFNRV9N QUNISU5FfToke1VOQU1FX1NZU1RFTX06JHtVTkFNRV9SRUxFQVNFfToke1VOQU1FX1ZFUlNJT059 IiBpbgorIAllbHNlCisgCQllY2hvIHB5cmFtaWQtcHlyYW1pZC1ic2QKKyAJZmkKKy0JZXhpdCAw IDs7CisrCWV4aXQgOzsKKyAgICAgTklMRSo6KjoqOmRjb3N4KQorIAllY2hvIHB5cmFtaWQtcHly YW1pZC1zdnI0CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIERSUz82MDAwOnVuaXg6NC4w OjYqKQorIAllY2hvIHNwYXJjLWljbC1ueDYKKy0JZXhpdCAwIDs7CistICAgIERSUz82MDAwOlVO SVhfU1Y6NC4yKjo3KikKKysJZXhpdCA7OworKyAgICBEUlM/NjAwMDpVTklYX1NWOjQuMio6Nyog fCBEUlM/NjAwMDppc2lzOjQuMio6NyopCisgCWNhc2UgYC91c3IvYmluL3VuYW1lIC1wYCBpbgor LQkgICAgc3BhcmMpIGVjaG8gc3BhcmMtaWNsLW54NyAmJiBleGl0IDAgOzsKKysJICAgIHNwYXJj KSBlY2hvIHNwYXJjLWljbC1ueDc7IGV4aXQgOzsKKyAJZXNhYyA7OworICAgICBzdW40SDpTdW5P Uzo1Lio6KikKKyAJZWNobyBzcGFyYy1oYWwtc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9 fHNlZCAtZSAncy9bXi5dKi8vJ2AKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgc3VuNCo6 U3VuT1M6NS4qOiogfCB0YWRwb2xlKjpTdW5PUzo1Lio6KikKKyAJZWNobyBzcGFyYy1zdW4tc29s YXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKy0JZXhpdCAw IDs7CistICAgIGk4NnBjOlN1bk9TOjUuKjoqKQorKwlleGl0IDs7CisrICAgIGk4NnBjOlN1bk9T OjUuKjoqIHwgaTg2eGVuOlN1bk9TOjUuKjoqKQorIAllY2hvIGkzODYtcGMtc29sYXJpczJgZWNo byAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKy0JZXhpdCAwIDs7CisrCWV4 aXQgOzsKKyAgICAgc3VuNCo6U3VuT1M6Nio6KikKKyAJIyBBY2NvcmRpbmcgdG8gY29uZmlnLnN1 YiwgdGhpcyBpcyB0aGUgcHJvcGVyIHdheSB0byBjYW5vbmljYWxpemUKKyAJIyBTdW5PUzYuICBI YXJkIHRvIGd1ZXNzIGV4YWN0bHkgd2hhdCBTdW5PUzYgd2lsbCBiZSBsaWtlLCBidXQKKyAJIyBp dCdzIGxpa2VseSB0byBiZSBtb3JlIGxpa2UgU29sYXJpcyB0aGFuIFN1bk9TNC4KKyAJZWNobyBz cGFyYy1zdW4tc29sYXJpczNgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8v J2AKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgc3VuNCo6U3VuT1M6KjoqKQorIAljYXNl ICJgL3Vzci9iaW4vYXJjaCAta2AiIGluCisgCSAgICBTZXJpZXMqfFM0KikKK0BAIC0zNzUsMTAg KzM0NywxMCBAQCBjYXNlICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfToke1VOQU1F X1JFTEVBU0V9OiR7VU5BTUVfVkVSU0lPTn0iIGluCisgCWVzYWMKKyAJIyBKYXBhbmVzZSBMYW5n dWFnZSB2ZXJzaW9ucyBoYXZlIGEgdmVyc2lvbiBudW1iZXIgbGlrZSBgNC4xLjMtSkwnLgorIAll Y2hvIHNwYXJjLXN1bi1zdW5vc2BlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLy0vXy8n YAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBzdW4zKjpTdW5PUzoqOiopCisgCWVjaG8g bTY4ay1zdW4tc3Vub3Mke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworKwlleGl0IDs7Cisg ICAgIHN1bio6Kjo0LjJCU0Q6KikKKyAJVU5BTUVfUkVMRUFTRT1gKHNlZCAxcSAvZXRjL21vdGQg fCBhd2sgJ3twcmludCBzdWJzdHIoJDUsMSwzKX0nKSAyPi9kZXYvbnVsbGAKKyAJdGVzdCAieCR7 VU5BTUVfUkVMRUFTRX0iID0gIngiICYmIFVOQU1FX1JFTEVBU0U9MworQEAgLTM5MCwxMCArMzYy LDEwIEBAIGNhc2UgIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiR7VU5BTUVfUkVM RUFTRX06JHtVTkFNRV9WRVJTSU9OfSIgaW4KKyAJCWVjaG8gc3BhcmMtc3VuLXN1bm9zJHtVTkFN RV9SRUxFQVNFfQorIAkJOzsKKyAJZXNhYworLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBh dXNocDpTdW5PUzoqOiopCisgCWVjaG8gc3BhcmMtYXVzcGV4LXN1bm9zJHtVTkFNRV9SRUxFQVNF fQorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICAjIFRoZSBzaXR1YXRpb24gZm9yIE1pTlQg aXMgYSBsaXR0bGUgY29uZnVzaW5nLiAgVGhlIG1hY2hpbmUgbmFtZQorICAgICAjIGNhbiBiZSB2 aXJ0dWFsbHkgZXZlcnl0aGluZyAoZXZlcnl0aGluZyB3aGljaCBpcyBub3QKKyAgICAgIyAiYXRh cmlzdCIgb3IgImF0YXJpc3RlIiBhdCBsZWFzdCBzaG91bGQgaGF2ZSBhIHByb2Nlc3NvcgorQEAg LTQwNCw0MCArMzc2LDQwIEBAIGNhc2UgIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19 OiR7VU5BTUVfUkVMRUFTRX06JHtVTkFNRV9WRVJTSU9OfSIgaW4KKyAgICAgIyBiZSBubyBwcm9i bGVtLgorICAgICBhdGFyaXN0W2VdOipNaU5UOio6KiB8IGF0YXJpc3RbZV06Km1pbnQ6KjoqIHwg YXRhcmlzdFtlXToqVE9TOio6KikKKyAgICAgICAgIGVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFN RV9SRUxFQVNFfQorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBhdGFyaSo6Kk1pTlQ6Kjoq IHwgYXRhcmkqOiptaW50Oio6KiB8IGF0YXJpc3RbZV06KlRPUzoqOiopCisgCWVjaG8gbTY4ay1h dGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorLSAgICAgICAgZXhpdCAwIDs7CisrICAgICAgICBl eGl0IDs7CisgICAgICpmYWxjb24qOipNaU5UOio6KiB8ICpmYWxjb24qOiptaW50Oio6KiB8ICpm YWxjb24qOipUT1M6KjoqKQorICAgICAgICAgZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JF TEVBU0V9CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIG1pbGFuKjoqTWlOVDoqOiogfCBt aWxhbio6Km1pbnQ6KjoqIHwgKm1pbGFuKjoqVE9TOio6KikKKyAgICAgICAgIGVjaG8gbTY4ay1t aWxhbi1taW50JHtVTkFNRV9SRUxFQVNFfQorLSAgICAgICAgZXhpdCAwIDs7CisrICAgICAgICBl eGl0IDs7CisgICAgIGhhZGVzKjoqTWlOVDoqOiogfCBoYWRlcyo6Km1pbnQ6KjoqIHwgKmhhZGVz KjoqVE9TOio6KikKKyAgICAgICAgIGVjaG8gbTY4ay1oYWRlcy1taW50JHtVTkFNRV9SRUxFQVNF fQorLSAgICAgICAgZXhpdCAwIDs7CisrICAgICAgICBleGl0IDs7CisgICAgICo6Kk1pTlQ6Kjoq IHwgKjoqbWludDoqOiogfCAqOipUT1M6KjoqKQorICAgICAgICAgZWNobyBtNjhrLXVua25vd24t bWludCR7VU5BTUVfUkVMRUFTRX0KKy0gICAgICAgIGV4aXQgMCA7OworKyAgICAgICAgZXhpdCA7 OworICAgICBtNjhrOm1hY2h0ZW46KjoqKQorIAllY2hvIG02OGstYXBwbGUtbWFjaHRlbiR7VU5B TUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgcG93ZXJwYzptYWNodGVu Oio6KikKKyAJZWNobyBwb3dlcnBjLWFwcGxlLW1hY2h0ZW4ke1VOQU1FX1JFTEVBU0V9CistCWV4 aXQgMCA7OworKwlleGl0IDs7CisgICAgIFJJU0MqOk1hY2g6KjoqKQorIAllY2hvIG1pcHMtZGVj LW1hY2hfYnNkNC4zCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIFJJU0MqOlVMVFJJWDoq OiopCisgCWVjaG8gbWlwcy1kZWMtdWx0cml4JHtVTkFNRV9SRUxFQVNFfQorLQlleGl0IDAgOzsK KysJZXhpdCA7OworICAgICBWQVgqOlVMVFJJWCo6KjoqKQorIAllY2hvIHZheC1kZWMtdWx0cml4 JHtVTkFNRV9SRUxFQVNFfQorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICAyMDIwOkNMSVg6 KjoqIHwgMjQzMDpDTElYOio6KikKKyAJZWNobyBjbGlwcGVyLWludGVyZ3JhcGgtY2xpeCR7VU5B TUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgbWlwczoqOio6VU1JUFMg fCBtaXBzOio6KjpSSVNDb3MpCisgCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKyAJc2VkICdzL14J Ly8nIDw8IEVPRiA+JGR1bW15LmMKK0BAIC00NjEsMzIgKzQzMywzMyBAQCBjYXNlICIke1VOQU1F X01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfToke1VOQU1FX1JFTEVBU0V9OiR7VU5BTUVfVkVSU0lP Tn0iIGluCisgCSAgZXhpdCAoLTEpOworIAl9CisgRU9GCistCSRDQ19GT1JfQlVJTEQgLW8gJGR1 bW15ICRkdW1teS5jIFwKKy0JICAmJiAkZHVtbXkgYGVjaG8gIiR7VU5BTUVfUkVMRUFTRX0iIHwg c2VkIC1uICdzL1woWzAtOV0qXCkuKi9cMS9wJ2AgXAorLQkgICYmIGV4aXQgMAorKwkkQ0NfRk9S X0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAmJgorKwkgIGR1bW15YXJnPWBlY2hvICIke1VOQU1F X1JFTEVBU0V9IiB8IHNlZCAtbiAncy9cKFswLTldKlwpLiovXDEvcCdgICYmCisrCSAgU1lTVEVN X05BTUU9YCRkdW1teSAkZHVtbXlhcmdgICYmCisrCSAgICB7IGVjaG8gIiRTWVNURU1fTkFNRSI7 IGV4aXQ7IH0KKyAJZWNobyBtaXBzLW1pcHMtcmlzY29zJHtVTkFNRV9SRUxFQVNFfQorLQlleGl0 IDAgOzsKKysJZXhpdCA7OworICAgICBNb3Rvcm9sYTpQb3dlck1BWF9PUzoqOiopCisgCWVjaG8g cG93ZXJwYy1tb3Rvcm9sYS1wb3dlcm1heAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBN b3Rvcm9sYToqOjQuMzpQTDgtKikKKyAJZWNobyBwb3dlcnBjLWhhcnJpcy1wb3dlcm1heAorLQll eGl0IDAgOzsKKysJZXhpdCA7OworICAgICBOaWdodF9IYXdrOio6KjpQb3dlck1BWF9PUyB8IFN5 bmVyZ3k6UG93ZXJNQVhfT1M6KjoqKQorIAllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VybWF4Cist CWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIE5pZ2h0X0hhd2s6UG93ZXJfVU5JWDoqOiopCisg CWVjaG8gcG93ZXJwYy1oYXJyaXMtcG93ZXJ1bml4CistCWV4aXQgMCA7OworKwlleGl0IDs7Cisg ICAgIG04OGs6Q1gvVVg6Nyo6KikKKyAJZWNobyBtODhrLWhhcnJpcy1jeHV4NworLQlleGl0IDAg OzsKKysJZXhpdCA7OworICAgICBtODhrOio6NCo6UjQqKQorIAllY2hvIG04OGstbW90b3JvbGEt c3lzdjQKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgbTg4azoqOjMqOlIzKikKKyAJZWNo byBtODhrLW1vdG9yb2xhLXN5c3YzCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIEFWaWlP TjpkZ3V4Oio6KikKKyAgICAgICAgICMgREcvVVggcmV0dXJucyBBVmlpT04gZm9yIGFsbCBhcmNo aXRlY3R1cmVzCisgICAgICAgICBVTkFNRV9QUk9DRVNTT1I9YC91c3IvYmluL3VuYW1lIC1wYAor QEAgLTUwMiwyOSArNDc1LDI5IEBAIEVPRgorIAllbHNlCisgCSAgICBlY2hvIGk1ODYtZGctZGd1 eCR7VU5BTUVfUkVMRUFTRX0KKyAJZmkKKy0gCWV4aXQgMCA7OworKyAJZXhpdCA7OworICAgICBN ODgqOkRvbHBoaW5PUzoqOiopCSMgRG9scGhpbk9TIChTVlIzKQorIAllY2hvIG04OGstZG9scGhp bi1zeXN2MworLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBNODgqOio6UjMqOiopCisgCSMg RGVsdGEgODhrIHN5c3RlbSBydW5uaW5nIFNWUjMKKyAJZWNobyBtODhrLW1vdG9yb2xhLXN5c3Yz CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIFhEODgqOio6KjoqKSAjIFRla3Ryb25peCBY RDg4IHN5c3RlbSBydW5uaW5nIFVUZWtWIChTVlIzKQorIAllY2hvIG04OGstdGVrdHJvbml4LXN5 c3YzCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIFRlazQzWzAtOV1bMC05XTpVVGVrOio6 KikgIyBUZWt0cm9uaXggNDMwMCBzeXN0ZW0gcnVubmluZyBVVGVrIChCU0QpCisgCWVjaG8gbTY4 ay10ZWt0cm9uaXgtYnNkCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgICo6SVJJWCo6Kjoq KQorIAllY2hvIG1pcHMtc2dpLWlyaXhgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8t L18vZydgCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgID8/Pz8/Pz8/OkFJWD86WzEyXS4x OjIpICAgIyBBSVggMi4yLjEgb3IgQUlYIDIuMS4xIGlzIFJUL1BDIEFJWC4KKy0JZWNobyByb21w LWlibS1haXggICAgICAjIHVuYW1lIC1tIGdpdmVzIGFuIDggaGV4LWNvZGUgQ1BVIGlkCistCWV4 aXQgMCA7OyAgICAgICAgICAgICAgIyBOb3RlIHRoYXQ6IGVjaG8gIidgdW5hbWUgLXNgJyIgZ2l2 ZXMgJ0FJWCAnCisrCWVjaG8gcm9tcC1pYm0tYWl4ICAgICAjIHVuYW1lIC1tIGdpdmVzIGFuIDgg aGV4LWNvZGUgQ1BVIGlkCisrCWV4aXQgOzsgICAgICAgICAgICAgICAjIE5vdGUgdGhhdDogZWNo byAiJ2B1bmFtZSAtc2AnIiBnaXZlcyAnQUlYICcKKyAgICAgaSo4NjpBSVg6KjoqKQorIAllY2hv IGkzODYtaWJtLWFpeAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBpYTY0OkFJWDoqOiop CisgCWlmIFsgLXggL3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgorIAkJSUJNX1JFVj1gL3Vzci9i aW4vb3NsZXZlbGAKK0BAIC01MzIsNyArNTA1LDcgQEAgRU9GCisgCQlJQk1fUkVWPSR7VU5BTUVf VkVSU0lPTn0uJHtVTkFNRV9SRUxFQVNFfQorIAlmaQorIAllY2hvICR7VU5BTUVfTUFDSElORX0t aWJtLWFpeCR7SUJNX1JFVn0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjpBSVg6Mjoz KQorIAlpZiBncmVwIGJvczMyNSAvdXNyL2luY2x1ZGUvc3RkaW8uaCA+L2Rldi9udWxsIDI+JjE7 IHRoZW4KKyAJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKK0BAIC01NDcsMTUgKzUyMCwxOSBAQCBF T0YKKyAJCQlleGl0KDApOworIAkJCX0KKyBFT0YKKy0JCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15 ICRkdW1teS5jICYmICRkdW1teSAmJiBleGl0IDAKKy0JCWVjaG8gcnM2MDAwLWlibS1haXgzLjIu NQorKwkJaWYgJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9 YCRkdW1teWAKKysJCXRoZW4KKysJCQllY2hvICIkU1lTVEVNX05BTUUiCisrCQllbHNlCisrCQkJ ZWNobyByczYwMDAtaWJtLWFpeDMuMi41CisrCQlmaQorIAllbGlmIGdyZXAgYm9zMzI0IC91c3Iv aW5jbHVkZS9zdGRpby5oID4vZGV2L251bGwgMj4mMTsgdGhlbgorIAkJZWNobyByczYwMDAtaWJt LWFpeDMuMi40CisgCWVsc2UKKyAJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIKKyAJZmkKKy0JZXhp dCAwIDs7CistICAgICo6QUlYOio6WzQ1XSkKKysJZXhpdCA7OworKyAgICAqOkFJWDoqOls0NTZd KQorIAlJQk1fQ1BVX0lEPWAvdXNyL3NiaW4vbHNkZXYgLUMgLWMgcHJvY2Vzc29yIC1TIGF2YWls YWJsZSB8IHNlZCAxcSB8IGF3ayAneyBwcmludCAkMSB9J2AKKyAJaWYgL3Vzci9zYmluL2xzYXR0 ciAtRWwgJHtJQk1fQ1BVX0lEfSB8IGdyZXAgJyBQT1dFUicgPi9kZXYvbnVsbCAyPiYxOyB0aGVu CisgCQlJQk1fQVJDSD1yczYwMDAKK0BAIC01NjgsMjggKzU0NSwyOCBAQCBFT0YKKyAJCUlCTV9S RVY9JHtVTkFNRV9WRVJTSU9OfS4ke1VOQU1FX1JFTEVBU0V9CisgCWZpCisgCWVjaG8gJHtJQk1f QVJDSH0taWJtLWFpeCR7SUJNX1JFVn0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjpB SVg6KjoqKQorIAllY2hvIHJzNjAwMC1pYm0tYWl4CistCWV4aXQgMCA7OworKwlleGl0IDs7Cisg ICAgIGlibXJ0OjQuNEJTRDoqfHJvbXAtaWJtOkJTRDoqKQorIAllY2hvIHJvbXAtaWJtLWJzZDQu NAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBpYm1ydDoqQlNEOip8cm9tcC1pYm06QlNE OiopICAgICAgICAgICAgIyBjb3ZlcnMgUlQvUEMgQlNEIGFuZAorIAllY2hvIHJvbXAtaWJtLWJz ZCR7VU5BTUVfUkVMRUFTRX0gICAjIDQuMyB3aXRoIHVuYW1lIGFkZGVkIHRvCistCWV4aXQgMCA7 OyAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVwb3J0OiByb21wLWlibSBCU0QgNC4zCisr CWV4aXQgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVwb3J0OiByb21wLWlibSBC U0QgNC4zCisgICAgICo6Qk9TWDoqOiopCisgCWVjaG8gcnM2MDAwLWJ1bGwtYm9zeAorLQlleGl0 IDAgOzsKKysJZXhpdCA7OworICAgICBEUFgvMj8wMDpCLk8uUy46KjoqKQorIAllY2hvIG02OGst YnVsbC1zeXN2MworLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICA5MDAwL1szNF0/Pzo0LjNi c2Q6MS4qOiopCisgCWVjaG8gbTY4ay1ocC1ic2QKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAg ICAgaHAzMDA6NC40QlNEOio6KiB8IDkwMDAvWzM0XT8/OjQuM2JzZDoyLio6KikKKyAJZWNobyBt NjhrLWhwLWJzZDQuNAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICA5MDAwL1szNDY3OF0/ PzpIUC1VWDoqOiopCisgCUhQVVhfUkVWPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdz L1teLl0qLlswQl0qLy8nYAorIAljYXNlICIke1VOQU1FX01BQ0hJTkV9IiBpbgorQEAgLTY1MSw5 ICs2MjgsMTkgQEAgRU9GCisgCWVzYWMKKyAJaWYgWyAke0hQX0FSQ0h9ID0gImhwcGEyLjB3IiBd CisgCXRoZW4KKy0JICAgICMgYXZvaWQgZG91YmxlIGV2YWx1YXRpb24gb2YgJHNldF9jY19mb3Jf YnVpbGQKKy0JICAgIHRlc3QgLW4gIiRDQ19GT1JfQlVJTEQiIHx8IGV2YWwgJHNldF9jY19mb3Jf YnVpbGQKKy0JICAgIGlmIGVjaG8gX19MUDY0X18gfCAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1F IC0pIHwgZ3JlcCBfX0xQNjRfXyA+L2Rldi9udWxsCisrCSAgICBldmFsICRzZXRfY2NfZm9yX2J1 aWxkCisrCisrCSAgICAjIGhwcGEyLjB3LWhwLWhwdXgqIGhhcyBhIDY0LWJpdCBrZXJuZWwgYW5k IGEgY29tcGlsZXIgZ2VuZXJhdGluZworKwkgICAgIyAzMi1iaXQgY29kZS4gIGhwcGE2NC1ocC1o cHV4KiBoYXMgdGhlIHNhbWUga2VybmVsIGFuZCBhIGNvbXBpbGVyCisrCSAgICAjIGdlbmVyYXRp bmcgNjQtYml0IGNvZGUuICBHTlUgYW5kIEhQIHVzZSBkaWZmZXJlbnQgbm9tZW5jbGF0dXJlOgor KwkgICAgIworKwkgICAgIyAkIENDX0ZPUl9CVUlMRD1jYyAuL2NvbmZpZy5ndWVzcworKwkgICAg IyA9PiBocHBhMi4wdy1ocC1ocHV4MTEuMjMKKysJICAgICMgJCBDQ19GT1JfQlVJTEQ9ImNjICtE QTIuMHciIC4vY29uZmlnLmd1ZXNzCisrCSAgICAjID0+IGhwcGE2NC1ocC1ocHV4MTEuMjMKKysK KysJICAgIGlmIGVjaG8gX19MUDY0X18gfCAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4v ZGV2L251bGwpIHwKKysJCWdyZXAgX19MUDY0X18gPi9kZXYvbnVsbAorIAkgICAgdGhlbgorIAkJ SFBfQVJDSD0iaHBwYTIuMHciCisgCSAgICBlbHNlCitAQCAtNjYxLDExICs2NDgsMTEgQEAgRU9G CisgCSAgICBmaQorIAlmaQorIAllY2hvICR7SFBfQVJDSH0taHAtaHB1eCR7SFBVWF9SRVZ9Cist CWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIGlhNjQ6SFAtVVg6KjoqKQorIAlIUFVYX1JFVj1g ZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi5bMEJdKi8vJ2AKKyAJZWNobyBp YTY0LWhwLWhwdXgke0hQVVhfUkVWfQorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICAzMDUw KjpISS1VWDoqOiopCisgCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKyAJc2VkICdzL14JLy8nIDw8 IEVPRiA+JGR1bW15LmMKK0BAIC02OTMsMTYzICs2ODAsMTkyIEBAIEVPRgorIAkgIGV4aXQgKDAp OworIAl9CisgRU9GCistCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmICRkdW1t eSAmJiBleGl0IDAKKysJJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVN X05BTUU9YCRkdW1teWAgJiYKKysJCXsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQorIAll Y2hvIHVua25vd24taGl0YWNoaS1oaXV4d2UyCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAg IDkwMDAvNz8/OjQuM2JzZDoqOiogfCA5MDAwLzg/Wzc5XTo0LjNic2Q6KjoqICkKKyAJZWNobyBo cHBhMS4xLWhwLWJzZAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICA5MDAwLzg/Pzo0LjNi c2Q6KjoqKQorIAllY2hvIGhwcGExLjAtaHAtYnNkCistCWV4aXQgMCA7OworKwlleGl0IDs7Cisg ICAgICo5Pz8qOk1QRS9pWDoqOiogfCAqMzAwMCo6TVBFL2lYOio6KikKKyAJZWNobyBocHBhMS4w LWhwLW1wZWl4CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIGhwNz8/Ok9TRjE6KjoqIHwg aHA4P1s3OV06T1NGMToqOiogKQorIAllY2hvIGhwcGExLjEtaHAtb3NmCistCWV4aXQgMCA7Owor KwlleGl0IDs7CisgICAgIGhwOD8/Ok9TRjE6KjoqKQorIAllY2hvIGhwcGExLjAtaHAtb3NmCist CWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIGkqODY6T1NGMToqOiopCisgCWlmIFsgLXggL3Vz ci9zYmluL3N5c3ZlcnNpb24gXSA7IHRoZW4KKyAJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11 bmtub3duLW9zZjFtaworIAllbHNlCisgCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93 bi1vc2YxCisgCWZpCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIHBhcmlzYyo6TGl0ZXMq Oio6KikKKyAJZWNobyBocHBhMS4xLWhwLWxpdGVzCistCWV4aXQgMCA7OworKwlleGl0IDs7Cisg ICAgIEMxKjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzEqOiopCisgCWVjaG8gYzEt Y29udmV4LWJzZAorLSAgICAgICAgZXhpdCAwIDs7CisrICAgICAgICBleGl0IDs7CisgICAgIEMy KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzIqOiopCisgCWlmIGdldHN5c2luZm8g LWYgc2NhbGFyX2FjYworIAl0aGVuIGVjaG8gYzMyLWNvbnZleC1ic2QKKyAJZWxzZSBlY2hvIGMy LWNvbnZleC1ic2QKKyAJZmkKKy0gICAgICAgIGV4aXQgMCA7OworKyAgICAgICAgZXhpdCA7Owor ICAgICBDMzQqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzQqOiopCisgCWVjaG8g YzM0LWNvbnZleC1ic2QKKy0gICAgICAgIGV4aXQgMCA7OworKyAgICAgICAgZXhpdCA7OworICAg ICBDMzgqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzgqOiopCisgCWVjaG8gYzM4 LWNvbnZleC1ic2QKKy0gICAgICAgIGV4aXQgMCA7OworKyAgICAgICAgZXhpdCA7OworICAgICBD NCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkM0KjoqKQorIAllY2hvIGM0LWNvbnZl eC1ic2QKKy0gICAgICAgIGV4aXQgMCA7OworKyAgICAgICAgZXhpdCA7OworICAgICBDUkFZKlkt TVA6KjoqOiopCisgCWVjaG8geW1wLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAt ZSAncy9cLlteLl0qJC8uWC8nCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIENSQVkqW0Et Wl05MDoqOio6KikKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWNyYXktdW5pY29zJHtVTkFNRV9S RUxFQVNFfSBcCisgCXwgc2VkIC1lICdzL0NSQVkuKlwoW0EtWl05MFwpL1wxLycgXAorIAkgICAg ICAtZSB5L0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3 eHl6LyBcCisgCSAgICAgIC1lICdzL1wuW14uXSokLy5YLycKKy0JZXhpdCAwIDs7CisrCWV4aXQg OzsKKyAgICAgQ1JBWSpUUzoqOio6KikKKyAJZWNobyB0OTAtY3JheS11bmljb3Mke1VOQU1FX1JF TEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsK KyAgICAgQ1JBWSpUM0U6KjoqOiopCisgCWVjaG8gYWxwaGFldjUtY3JheS11bmljb3NtayR7VU5B TUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworLQlleGl0IDAgOzsKKysJZXhp dCA7OworICAgICBDUkFZKlNWMToqOio6KikKKyAJZWNobyBzdjEtY3JheS11bmljb3Mke1VOQU1F X1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKy0JZXhpdCAwIDs7CisrCWV4aXQg OzsKKyAgICAgKjpVTklDT1MvbXA6KjoqKQorLQllY2hvIG52MS1jcmF5LXVuaWNvc21wJHtVTkFN RV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCistCWV4aXQgMCA7OworKwllY2hv IGNyYXludi1jcmF5LXVuaWNvc21wJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0q JC8uWC8nCisrCWV4aXQgOzsKKyAgICAgRjMwWzAxXTpVTklYX1N5c3RlbV9WOio6KiB8IEY3MDA6 VU5JWF9TeXN0ZW1fVjoqOiopCisgCUZVSklUU1VfUFJPQz1gdW5hbWUgLW0gfCB0ciAnQUJDREVG R0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCisgICAg ICAgICBGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldY WVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCisgICAg ICAgICBGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzLyAvXy8n YAorICAgICAgICAgZWNobyAiJHtGVUpJVFNVX1BST0N9LWZ1aml0c3UtJHtGVUpJVFNVX1NZU30k e0ZVSklUU1VfUkVMfSIKKy0gICAgICAgIGV4aXQgMCA7OworKyAgICAgICAgZXhpdCA7OworICAg ICA1MDAwOlVOSVhfU3lzdGVtX1Y6NC4qOiopCisgICAgICAgICBGVUpJVFNVX1NZUz1gdW5hbWUg LXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJz dHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCisgICAgICAgICBGVUpJVFNVX1JFTD1gZWNobyAk e1VOQU1FX1JFTEVBU0V9IHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVm Z2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzLyAvXy8nYAorICAgICAgICAgZWNobyAi c3BhcmMtZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgorLQlleGl0IDAgOzsK KysJZXhpdCA7OworICAgICBpKjg2OkJTRC8zODY6KjoqIHwgaSo4NjpCU0QvT1M6KjoqIHwgKjpB c2NlbmRcIEVtYmVkZGVkL09TOio6KikKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWJzZGkk e1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIHNwYXJjKjpCU0Qv T1M6KjoqKQorIAllY2hvIHNwYXJjLXVua25vd24tYnNkaSR7VU5BTUVfUkVMRUFTRX0KKy0JZXhp dCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjpCU0QvT1M6KjoqKQorIAllY2hvICR7VU5BTUVfTUFD SElORX0tdW5rbm93bi1ic2RpJHtVTkFNRV9SRUxFQVNFfQorLQlleGl0IDAgOzsKKysJZXhpdCA7 OworICAgICAqOkZyZWVCU0Q6KjoqKQorLQkjIERldGVybWluZSB3aGV0aGVyIHRoZSBkZWZhdWx0 IGNvbXBpbGVyIHVzZXMgZ2xpYmMuCistCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKy0Jc2VkICdz L14JLy8nIDw8IEVPRiA+JGR1bW15LmMKKy0JI2luY2x1ZGUgPGZlYXR1cmVzLmg+CistCSNpZiBf X0dMSUJDX18gPj0gMgorLQlMSUJDPWdudQorLQkjZWxzZQorLQlMSUJDPQorLQkjZW5kaWYKKy1F T0YKKy0JZXZhbCBgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IGdyZXAg XkxJQkM9YAorLQkjIEdOVS9LRnJlZUJTRCBzeXN0ZW1zIGhhdmUgYSAiayIgcHJlZml4IHRvIGlu ZGljYXRlIHdlIGFyZSB1c2luZworLQkjIEZyZWVCU0QncyBrZXJuZWwsIGJ1dCBub3QgdGhlIGNv bXBsZXRlIE9TLgorLQljYXNlICR7TElCQ30gaW4gZ251KSBrZXJuZWxfb25seT0naycgOzsgZXNh YworLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi0ke2tlcm5lbF9vbmx5fWZyZWVic2Rg ZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgJHtMSUJDOistJExJQkN9 CistCWV4aXQgMCA7OworKwljYXNlICR7VU5BTUVfTUFDSElORX0gaW4KKysJICAgIHBjOTgpCisr CQllY2hvIGkzODYtdW5rbm93bi1mcmVlYnNkYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUg J3MvWy0oXS4qLy8nYCA7OworKwkgICAgYW1kNjQpCisrCQllY2hvIHg4Nl82NC11bmtub3duLWZy ZWVic2RgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7CisrCSAg ICAqKQorKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tZnJlZWJzZGBlY2hvICR7VU5B TUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AgOzsKKysJZXNhYworKwlleGl0IDs7Cisg ICAgIGkqOkNZR1dJTio6KikKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWN5Z3dpbgorLQll eGl0IDAgOzsKKy0gICAgaSo6TUlOR1cqOiopCisrCWV4aXQgOzsKKysgICAgKjpNSU5HVyo6KikK KyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1pbmd3MzIKKy0JZXhpdCAwIDs7CisrCWV4aXQg OzsKKysgICAgaSo6d2luZG93czMyKjoqKQorKyAgICAJIyB1bmFtZSAtbSBpbmNsdWRlcyAiLXBj IiBvbiB0aGlzIHN5c3RlbS4KKysgICAgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1taW5ndzMyCisr CWV4aXQgOzsKKyAgICAgaSo6UFcqOiopCisgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1wdzMy CistCWV4aXQgMCA7OworLSAgICB4ODY6SW50ZXJpeCo6WzM0XSopCistCWVjaG8gaTU4Ni1wYy1p bnRlcml4JHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvXC4uKi8vJworLQlleGl0IDAgOzsKKysJ ZXhpdCA7OworKyAgICAqOkludGVyaXgqOlszNDU2XSopCisrICAgIAljYXNlICR7VU5BTUVfTUFD SElORX0gaW4KKysJICAgIHg4NikKKysJCWVjaG8gaTU4Ni1wYy1pbnRlcml4JHtVTkFNRV9SRUxF QVNFfQorKwkJZXhpdCA7OworKwkgICAgRU02NFQgfCBhdXRoZW50aWNhbWQpCisrCQllY2hvIHg4 Nl82NC11bmtub3duLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CisrCQlleGl0IDs7CisrCSAgICBJ QTY0KQorKwkJZWNobyBpYTY0LXVua25vd24taW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0KKysJCWV4 aXQgOzsKKysJZXNhYyA7OworICAgICBbMzQ1XTg2OldpbmRvd3NfOTU6KiB8IFszNDVdODY6V2lu ZG93c185ODoqIHwgWzM0NV04NjpXaW5kb3dzX05UOiopCisgCWVjaG8gaSR7VU5BTUVfTUFDSElO RX0tcGMtbWtzCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIGkqOldpbmRvd3NfTlQqOiog fCBQZW50aXVtKjpXaW5kb3dzX05UKjoqKQorIAkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJp eCByYXRoZXIgdGhhbiB0aGUgZ2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CisgCSMgSXQgYWxzbyBj b25mbGljdHMgd2l0aCBwcmUtMi4wIHZlcnNpb25zIG9mIEFUJlQgVVdJTi4gU2hvdWxkIHdlCisg CSMgVU5BTUVfTUFDSElORSBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mIHVuYW1lIGluc3RlYWQgb2Yg aTM4Nj8KKyAJZWNobyBpNTg2LXBjLWludGVyaXgKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAg ICAgaSo6VVdJTio6KikKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXV3aW4KKy0JZXhpdCAw IDs7CisrCWV4aXQgOzsKKysgICAgYW1kNjQ6Q1lHV0lOKjoqOiogfCB4ODZfNjQ6Q1lHV0lOKjoq OiopCisrCWVjaG8geDg2XzY0LXVua25vd24tY3lnd2luCisrCWV4aXQgOzsKKyAgICAgcCo6Q1lH V0lOKjoqKQorIAllY2hvIHBvd2VycGNsZS11bmtub3duLWN5Z3dpbgorLQlleGl0IDAgOzsKKysJ ZXhpdCA7OworICAgICBwcmVwKjpTdW5PUzo1Lio6KikKKyAJZWNobyBwb3dlcnBjbGUtdW5rbm93 bi1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorLQll eGl0IDAgOzsKKysJZXhpdCA7OworICAgICAqOkdOVToqOiopCisgCSMgdGhlIEdOVSBzeXN0ZW0K KyAJZWNobyBgZWNobyAke1VOQU1FX01BQ0hJTkV9fHNlZCAtZSAncyxbLS9dLiokLCwnYC11bmtu b3duLWdudWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLC8uKiQsLCdgCistCWV4aXQg MCA7OworKwlleGl0IDs7CisgICAgICo6R05VLyo6KjoqKQorIAkjIG90aGVyIHN5c3RlbXMgd2l0 aCBHTlUgbGliYyBhbmQgdXNlcmxhbmQKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24t YGVjaG8gJHtVTkFNRV9TWVNURU19IHwgc2VkICdzLF5bXi9dKi8sLCcgfCB0ciAnW0EtWl0nICdb YS16XSdgYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYC1nbnUKKy0J ZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgaSo4NjpNaW5peDoqOiopCisgCWVjaG8gJHtVTkFN RV9NQUNISU5FfS1wYy1taW5peAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBhcm0qOkxp bnV4Oio6KikKKysJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorKwlpZiBlY2hvIF9fQVJNX0VBQklf XyB8ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCBcCisrCSAgICB8IGdyZXAgLXEgX19B Uk1fRUFCSV9fCisrCXRoZW4KKysJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxp bnV4LWdudQorKwllbHNlCisrCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51 eC1nbnVlYWJpCisrCWZpCisrCWV4aXQgOzsKKysgICAgYXZyMzIqOkxpbnV4Oio6KikKKyAJZWNo byAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CistCWV4aXQgMCA7OworKwlleGl0 IDs7CisgICAgIGNyaXM6TGludXg6KjoqKQorIAllY2hvIGNyaXMtYXhpcy1saW51eC1nbnUKKy0J ZXhpdCAwIDs7CisrCWV4aXQgOzsKKysgICAgY3Jpc3YzMjpMaW51eDoqOiopCisrCWVjaG8gY3Jp c3YzMi1heGlzLWxpbnV4LWdudQorKwlleGl0IDs7CisrICAgIGZydjpMaW51eDoqOiopCisrICAg IAllY2hvIGZydi11bmtub3duLWxpbnV4LWdudQorKwlleGl0IDs7CisgICAgIGlhNjQ6TGludXg6 KjoqKQorIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKy0JZXhpdCAw IDs7CisrCWV4aXQgOzsKKysgICAgbTMycio6TGludXg6KjoqKQorKwllY2hvICR7VU5BTUVfTUFD SElORX0tdW5rbm93bi1saW51eC1nbnUKKysJZXhpdCA7OworICAgICBtNjgqOkxpbnV4Oio6KikK KyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CistCWV4aXQgMCA7Owor KwlleGl0IDs7CisgICAgIG1pcHM6TGludXg6KjoqKQorIAlldmFsICRzZXRfY2NfZm9yX2J1aWxk CisgCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCitAQCAtODY2LDggKzg4MiwxMiBAQCBF T0YKKyAJI2VuZGlmCisgCSNlbmRpZgorIEVPRgorLQlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRk dW1teS5jIDI+L2Rldi9udWxsIHwgZ3JlcCBeQ1BVPWAKKy0JdGVzdCB4IiR7Q1BVfSIgIT0geCAm JiBlY2hvICIke0NQVX0tdW5rbm93bi1saW51eC1nbnUiICYmIGV4aXQgMAorKwlldmFsICJgJEND X0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IHNlZCAtbiAnCisrCSAgICAvXkNQ VS97CisrCQlzOiA6OmcKKysJCXAKKysJICAgIH0nYCIKKysJdGVzdCB4IiR7Q1BVfSIgIT0geCAm JiB7IGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LWdudSI7IGV4aXQ7IH0KKyAJOzsKKyAgICAg bWlwczY0OkxpbnV4Oio6KikKKyAJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorQEAgLTg4NSwxNSAr OTA1LDIyIEBAIEVPRgorIAkjZW5kaWYKKyAJI2VuZGlmCisgRU9GCistCWV2YWwgYCRDQ19GT1Jf QlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwIF5DUFU9YAorLQl0ZXN0IHgiJHtD UFV9IiAhPSB4ICYmIGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LWdudSIgJiYgZXhpdCAwCisr CWV2YWwgImAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2VkIC1uICcK KysJICAgIC9eQ1BVL3sKKysJCXM6IDo6ZworKwkJcAorKwkgICAgfSdgIgorKwl0ZXN0IHgiJHtD UFV9IiAhPSB4ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtZ251IjsgZXhpdDsgfQor IAk7OworKyAgICBvcjMyOkxpbnV4Oio6KikKKysJZWNobyBvcjMyLXVua25vd24tbGludXgtZ251 CisrCWV4aXQgOzsKKyAgICAgcHBjOkxpbnV4Oio6KikKKyAJZWNobyBwb3dlcnBjLXVua25vd24t bGludXgtZ251CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIHBwYzY0OkxpbnV4Oio6KikK KyAJZWNobyBwb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUKKy0JZXhpdCAwIDs7CisrCWV4aXQg OzsKKyAgICAgYWxwaGE6TGludXg6KjoqKQorIAljYXNlIGBzZWQgLW4gJy9eY3B1IG1vZGVsL3Mv Xi4qOiBcKC4qXCkvXDEvcCcgPCAvcHJvYy9jcHVpbmZvYCBpbgorIAkgIEVWNSkgICBVTkFNRV9N QUNISU5FPWFscGhhZXY1IDs7CitAQCAtOTA3LDcgKzkzNCw3IEBAIEVPRgorIAlvYmpkdW1wIC0t cHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIGxkLnNvLjEgPi9kZXYvbnVsbAorIAlpZiB0 ZXN0ICIkPyIgPSAwIDsgdGhlbiBMSUJDPSJsaWJjMSIgOyBlbHNlIExJQkM9IiIgOyBmaQorIAll Y2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUke0xJQkN9CistCWV4aXQgMCA7 OworKwlleGl0IDs7CisgICAgIHBhcmlzYzpMaW51eDoqOiogfCBocHBhOkxpbnV4Oio6KikKKyAJ IyBMb29rIGZvciBDUFUgbGV2ZWwKKyAJY2FzZSBgZ3JlcCAnXmNwdVteYS16XSo6JyAvcHJvYy9j cHVpbmZvIDI+L2Rldi9udWxsIHwgY3V0IC1kJyAnIC1mMmAgaW4KK0BAIC05MTUsMjUgKzk0Miwz MSBAQCBFT0YKKyAJICBQQTgqKSBlY2hvIGhwcGEyLjAtdW5rbm93bi1saW51eC1nbnUgOzsKKyAJ ICAqKSAgICBlY2hvIGhwcGEtdW5rbm93bi1saW51eC1nbnUgOzsKKyAJZXNhYworLQlleGl0IDAg OzsKKysJZXhpdCA7OworICAgICBwYXJpc2M2NDpMaW51eDoqOiogfCBocHBhNjQ6TGludXg6Kjoq KQorIAllY2hvIGhwcGE2NC11bmtub3duLWxpbnV4LWdudQorLQlleGl0IDAgOzsKKysJZXhpdCA7 OworICAgICBzMzkwOkxpbnV4Oio6KiB8IHMzOTB4OkxpbnV4Oio6KikKKyAJZWNobyAke1VOQU1F X01BQ0hJTkV9LWlibS1saW51eAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBzaDY0KjpM aW51eDoqOiopCisgICAgIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUK Ky0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgc2gqOkxpbnV4Oio6KikKKyAJZWNobyAke1VO QU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CistCWV4aXQgMCA7OworKwlleGl0IDs7Cisg ICAgIHNwYXJjOkxpbnV4Oio6KiB8IHNwYXJjNjQ6TGludXg6KjoqKQorIAllY2hvICR7VU5BTUVf TUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKysgICAg dmF4OkxpbnV4Oio6KikKKysJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1saW51eC1nbnUKKysJ ZXhpdCA7OworICAgICB4ODZfNjQ6TGludXg6KjoqKQorIAllY2hvIHg4Nl82NC11bmtub3duLWxp bnV4LWdudQorLQlleGl0IDAgOzsKKysJZXhpdCA7OworKyAgICB4dGVuc2EqOkxpbnV4Oio6KikK KysgICAgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorKwlleGl0IDs7 CisgICAgIGkqODY6TGludXg6KjoqKQorIAkjIFRoZSBCRkQgbGlua2VyIGtub3dzIHdoYXQgdGhl IGRlZmF1bHQgb2JqZWN0IGZpbGUgZm9ybWF0IGlzLCBzbworIAkjIGZpcnN0IHNlZSBpZiBpdCB3 aWxsIHRlbGwgdXMuIGNkIHRvIHRoZSByb290IGRpcmVjdG9yeSB0byBwcmV2ZW50CitAQCAtOTUx LDE1ICs5ODQsMTUgQEAgRU9GCisgCQk7OworIAkgIGEub3V0LWkzODYtbGludXgpCisgCQllY2hv ICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudWFvdXQiCistCQlleGl0IDAgOzsKKysJCWV4 aXQgOzsKKyAJICBjb2ZmLWkzODYpCisgCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4 LWdudWNvZmYiCistCQlleGl0IDAgOzsKKysJCWV4aXQgOzsKKyAJICAiIikKKyAJCSMgRWl0aGVy IGEgcHJlLUJGRCBhLm91dCBsaW5rZXIgKGxpbnV4LWdudW9sZGxkKSBvcgorIAkJIyBvbmUgdGhh dCBkb2VzIG5vdCBnaXZlIHVzIHVzZWZ1bCAtLWhlbHAuCisgCQllY2hvICIke1VOQU1FX01BQ0hJ TkV9LXBjLWxpbnV4LWdudW9sZGxkIgorLQkJZXhpdCAwIDs7CisrCQlleGl0IDs7CisgCWVzYWMK KyAJIyBEZXRlcm1pbmUgd2hldGhlciB0aGUgZGVmYXVsdCBjb21waWxlciBpcyBhLm91dCBvciBl bGYKKyAJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorQEAgLTk3Niw3ICsxMDA5LDcgQEAgRU9GCisg CUxJQkM9Z251bGliYzEKKyAJIyBlbmRpZgorIAkjZWxzZQorLQkjaWZkZWYgX19JTlRFTF9DT01Q SUxFUgorKwkjaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSB8fCBkZWZpbmVkKF9fUEdJKSB8 fCBkZWZpbmVkKF9fU1VOUFJPX0MpIHx8IGRlZmluZWQoX19TVU5QUk9fQ0MpCisgCUxJQkM9Z251 CisgCSNlbHNlCisgCUxJQkM9Z251YW91dAorQEAgLTk4NiwxNiArMTAxOSwyMyBAQCBFT0YKKyAJ TElCQz1kaWV0bGliYworIAkjZW5kaWYKKyBFT0YKKy0JZXZhbCBgJENDX0ZPUl9CVUlMRCAtRSAk ZHVtbXkuYyAyPi9kZXYvbnVsbCB8IGdyZXAgXkxJQkM9YAorLQl0ZXN0IHgiJHtMSUJDfSIgIT0g eCAmJiBlY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LSR7TElCQ30iICYmIGV4aXQgMAor LQl0ZXN0IHgiJHtURU5UQVRJVkV9IiAhPSB4ICYmIGVjaG8gIiR7VEVOVEFUSVZFfSIgJiYgZXhp dCAwCisrCWV2YWwgImAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2Vk IC1uICcKKysJICAgIC9eTElCQy97CisrCQlzOiA6OmcKKysJCXAKKysJICAgIH0nYCIKKysJdGVz dCB4IiR7TElCQ30iICE9IHggJiYgeworKwkJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51 eC0ke0xJQkN9IgorKwkJZXhpdAorKwl9CisrCXRlc3QgeCIke1RFTlRBVElWRX0iICE9IHggJiYg eyBlY2hvICIke1RFTlRBVElWRX0iOyBleGl0OyB9CisgCTs7CisgICAgIGkqODY6RFlOSVgvcHR4 OjQqOiopCisgCSMgcHR4IDQuMCBkb2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9w dHggaW4gdGhlcmUuCisgCSMgZWFybGllciB2ZXJzaW9ucyBhcmUgbWVzc2VkIHVwIGFuZCBwdXQg dGhlIG5vZGVuYW1lIGluIGJvdGgKKyAJIyBzeXNuYW1lIGFuZCBub2RlbmFtZS4KKyAJZWNobyBp Mzg2LXNlcXVlbnQtc3lzdjQKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgaSo4NjpVTklY X1NWOjQuMk1QOjIuKikKKyAgICAgICAgICMgVW5peHdhcmUgaXMgYW4gb2Zmc2hvb3Qgb2YgU1ZS NCwgYnV0IGl0IGhhcyBpdHMgb3duIHZlcnNpb24KKyAgICAgICAgICMgbnVtYmVyIHNlcmllcyBz dGFydGluZyB3aXRoIDIuLi4KK0BAIC0xMDAzLDI3ICsxMDQzLDI3IEBAIEVPRgorIAkjIEkganVz dCBoYXZlIHRvIGhvcGUuICAtLSBybXMuCisgICAgICAgICAjIFVzZSBzeXN2NC4ydXcuLi4gc28g dGhhdCBzeXN2NCogbWF0Y2hlcyBpdC4KKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3Y0 LjJ1dyR7VU5BTUVfVkVSU0lPTn0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgaSo4NjpP Uy8yOio6KikKKyAJIyBJZiB3ZSB3ZXJlIGFibGUgdG8gZmluZCBgdW5hbWUnLCB0aGVuIEVNWCBV bml4IGNvbXBhdGliaWxpdHkKKyAJIyBpcyBwcm9iYWJseSBpbnN0YWxsZWQuCisgCWVjaG8gJHtV TkFNRV9NQUNISU5FfS1wYy1vczItZW14CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIGkq ODY6WFRTLTMwMDoqOlNUT1ApCisgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN0b3AK Ky0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgaSo4NjphdGhlb3M6KjoqKQorIAllY2hvICR7 VU5BTUVfTUFDSElORX0tdW5rbm93bi1hdGhlb3MKKy0JZXhpdCAwIDs7CistCWkqODY6c3lsbGFi bGU6KjoqKQorKwlleGl0IDs7CisrICAgIGkqODY6c3lsbGFibGU6KjoqKQorIAllY2hvICR7VU5B TUVfTUFDSElORX0tcGMtc3lsbGFibGUKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgaSo4 NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LjAq OiopCisgCWVjaG8gaTM4Ni11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAw IDs7CisrCWV4aXQgOzsKKyAgICAgaSo4NjoqRE9TOio6KikKKyAJZWNobyAke1VOQU1FX01BQ0hJ TkV9LXBjLW1zZG9zZGpncHAKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgaSo4NjoqOjQu KjoqIHwgaSo4NjpTWVNURU1fVjo0Lio6KikKKyAJVU5BTUVfUkVMPWBlY2hvICR7VU5BTUVfUkVM RUFTRX0gfCBzZWQgJ3MvXC9NUCQvLydgCisgCWlmIGdyZXAgTm92ZWxsIC91c3IvaW5jbHVkZS9s aW5rLmggPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbgorQEAgLTEwMzEsMTUgKzEwNzEsMTYg QEAgRU9GCisgCWVsc2UKKyAJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeXN2JHtVTkFNRV9S RUx9CisgCWZpCistCWV4aXQgMCA7OworLSAgICBpKjg2Oio6NTpbNzhdKikKKysJZXhpdCA7Owor KyAgICBpKjg2Oio6NTpbNjc4XSopCisrICAgIAkjIFVuaXhXYXJlIDcueCwgT3BlblVOSVggYW5k IE9wZW5TZXJ2ZXIgNi4KKyAJY2FzZSBgL2Jpbi91bmFtZSAtWCB8IGdyZXAgIl5NYWNoaW5lImAg aW4KKyAJICAgICo0ODYqKQkgICAgIFVOQU1FX01BQ0hJTkU9aTQ4NiA7OworIAkgICAgKlBlbnRp dW0pCSAgICAgVU5BTUVfTUFDSElORT1pNTg2IDs7CisgCSAgICAqUGVudCp8KkNlbGVyb24pIFVO QU1FX01BQ0hJTkU9aTY4NiA7OworIAllc2FjCisgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtu b3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9JHtVTkFNRV9TWVNURU19JHtVTkFNRV9WRVJTSU9OfQor LQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBpKjg2Oio6My4yOiopCisgCWlmIHRlc3QgLWYg L3Vzci9vcHRpb25zL2NiLm5hbWU7IHRoZW4KKyAJCVVOQU1FX1JFTD1gc2VkIC1uICdzLy4qVmVy c2lvbiAvL3AnIDwvdXNyL29wdGlvbnMvY2IubmFtZWAKK0BAIC0xMDU3LDczICsxMDk4LDczIEBA IEVPRgorIAllbHNlCisgCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdjMyCisgCWZpCist CWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIHBjOio6KjoqKQorIAkjIExlZnQgaGVyZSBmb3Ig Y29tcGF0aWJpbGl0eToKKyAgICAgICAgICMgdW5hbWUgLW0gcHJpbnRzIGZvciBESkdQUCBhbHdh eXMgJ3BjJywgYnV0IGl0IHByaW50cyBub3RoaW5nIGFib3V0CisgICAgICAgICAjIHRoZSBwcm9j ZXNzb3IsIHNvIHdlIHBsYXkgc2FmZSBieSBhc3N1bWluZyBpMzg2LgorIAllY2hvIGkzODYtcGMt bXNkb3NkamdwcAorLSAgICAgICAgZXhpdCAwIDs7CisrICAgICAgICBleGl0IDs7CisgICAgIElu dGVsOk1hY2g6Myo6KikKKyAJZWNobyBpMzg2LXBjLW1hY2gzCistCWV4aXQgMCA7OworKwlleGl0 IDs7CisgICAgIHBhcmFnb246KjoqOiopCisgCWVjaG8gaTg2MC1pbnRlbC1vc2YxCistCWV4aXQg MCA7OworKwlleGl0IDs7CisgICAgIGk4NjA6Kjo0Lio6KikgIyBpODYwLVNWUjQKKyAJaWYgZ3Jl cCBTdGFyZGVudCAvdXNyL2luY2x1ZGUvc3lzL3VhZG1pbi5oID4vZGV2L251bGwgMj4mMSA7IHRo ZW4KKyAJICBlY2hvIGk4NjAtc3RhcmRlbnQtc3lzdiR7VU5BTUVfUkVMRUFTRX0gIyBTdGFyZGVu dCBWaXN0cmEgaTg2MC1TVlI0CisgCWVsc2UgIyBBZGQgb3RoZXIgaTg2MC1TVlI0IHZlbmRvcnMg YmVsb3cgYXMgdGhleSBhcmUgZGlzY292ZXJlZC4KKyAJICBlY2hvIGk4NjAtdW5rbm93bi1zeXN2 JHtVTkFNRV9SRUxFQVNFfSAgIyBVbmtub3duIGk4NjAtU1ZSNAorIAlmaQorLQlleGl0IDAgOzsK KysJZXhpdCA7OworICAgICBtaW5pKjpDVElYOlNZUyo1OiopCisgCSMgIm1pbmlmcmFtZSIKKyAJ ZWNobyBtNjgwMTAtY29udmVyZ2VudC1zeXN2CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAg IG1jNjhrOlVOSVg6U1lTVEVNNTozLjUxbSkKKyAJZWNobyBtNjhrLWNvbnZlcmdlbnQtc3lzdgor LQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBNNjgwPzA6RC1OSVg6NS4zOiopCisgCWVjaG8g bTY4ay1kaWFiLWRuaXgKKy0JZXhpdCAwIDs7CistICAgIE02OCo6KjpSM1ZbNTY3XSo6KikKKy0J dGVzdCAtciAvc3lzVjY4ICYmIGVjaG8gJ202OGstbW90b3JvbGEtc3lzdicgJiYgZXhpdCAwIDs7 CistICAgIDNbMzQ1XT8/Oio6NC4wOjMuMCB8IDNbMzRdPz9BOio6NC4wOjMuMCB8IDNbMzRdPz8s KjoqOjQuMDozLjAgfCAzWzM0XT8/Lyo6Kjo0LjA6My4wIHwgNDQwMDoqOjQuMDozLjAgfCA0ODUw Oio6NC4wOjMuMCB8IFNLQTQwOio6NC4wOjMuMCB8IFNEUzI6Kjo0LjA6My4wIHwgU0hHMjoqOjQu MDozLjApCisrCWV4aXQgOzsKKysgICAgTTY4KjoqOlIzVls1Njc4XSo6KikKKysJdGVzdCAtciAv c3lzVjY4ICYmIHsgZWNobyAnbTY4ay1tb3Rvcm9sYS1zeXN2JzsgZXhpdDsgfSA7OworKyAgICAz WzM0NV0/PzoqOjQuMDozLjAgfCAzWzM0XT8/QToqOjQuMDozLjAgfCAzWzM0XT8/LCo6Kjo0LjA6 My4wIHwgM1szNF0/Py8qOio6NC4wOjMuMCB8IDQ0MDA6Kjo0LjA6My4wIHwgNDg1MDoqOjQuMDoz LjAgfCBTS0E0MDoqOjQuMDozLjAgfCBTRFMyOio6NC4wOjMuMCB8IFNIRzI6Kjo0LjA6My4wIHwg Uzc1MDEqOio6NC4wOjMuMCkKKyAJT1NfUkVMPScnCisgCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXAor IAkmJiBPU19SRUw9LmBzZWQgLW4gJ3MvW14gXSogW14gXSogXChbMC05XVswLTldXCkuKi9cMS9w JyA8IC9ldGMvLnJlbGlkYAorIAkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+ L2Rldi9udWxsIFwKKy0JICAmJiBlY2hvIGk0ODYtbmNyLXN5c3Y0LjMke09TX1JFTH0gJiYgZXhp dCAwCisrCSAgJiYgeyBlY2hvIGk0ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0KKyAJ L2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBlbnRpdW0gPi9kZXYvbnVsbCBc CistCSAgJiYgZWNobyBpNTg2LW5jci1zeXN2NC4zJHtPU19SRUx9ICYmIGV4aXQgMCA7OworKwkg ICYmIHsgZWNobyBpNTg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9IDs7CisgICAgIDNb MzRdPz86Kjo0LjA6KiB8IDNbMzRdPz8sKjoqOjQuMDoqKQorICAgICAgICAgL2Jpbi91bmFtZSAt cCAyPi9kZXYvbnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCistICAgICAgICAgICYmIGVjaG8g aTQ4Ni1uY3Itc3lzdjQgJiYgZXhpdCAwIDs7CisrICAgICAgICAgICYmIHsgZWNobyBpNDg2LW5j ci1zeXN2NDsgZXhpdDsgfSA7OworICAgICBtNjgqOkx5bnhPUzoyLio6KiB8IG02OCo6THlueE9T OjMuMCo6KikKKyAJZWNobyBtNjhrLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorLQll eGl0IDAgOzsKKysJZXhpdCA7OworICAgICBtYzY4MDMwOlVOSVhfU3lzdGVtX1Y6NC4qOiopCisg CWVjaG8gbTY4ay1hdGFyaS1zeXN2NAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBUU1VO QU1JOkx5bnhPUzoyLio6KikKKyAJZWNobyBzcGFyYy11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVM RUFTRX0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgcnM2MDAwOkx5bnhPUzoyLio6KikK KyAJZWNobyByczYwMDAtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7 OworKwlleGl0IDs7CisgICAgIFBvd2VyUEM6THlueE9TOjIuKjoqIHwgUG93ZXJQQzpMeW54T1M6 My5bMDFdKjoqIHwgUG93ZXJQQzpMeW54T1M6NC4wKjoqKQorIAllY2hvIHBvd2VycGMtdW5rbm93 bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIFNN W0JFXVM6VU5JWF9TVjoqOiopCisgCWVjaG8gbWlwcy1kZGUtc3lzdiR7VU5BTUVfUkVMRUFTRX0K Ky0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgUk0qOlJlbGlhbnRVTklYLSo6KjoqKQorIAll Y2hvIG1pcHMtc25pLXN5c3Y0CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIFJNKjpTSU5J WC0qOio6KikKKyAJZWNobyBtaXBzLXNuaS1zeXN2NAorLQlleGl0IDAgOzsKKysJZXhpdCA7Owor ICAgICAqOlNJTklYLSo6KjoqKQorIAlpZiB1bmFtZSAtcCAyPi9kZXYvbnVsbCA+L2Rldi9udWxs IDsgdGhlbgorIAkJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKK0BAIC0x MTMxLDY4ICsxMTcyLDg0IEBAIEVPRgorIAllbHNlCisgCQllY2hvIG5zMzJrLXNuaS1zeXN2Cisg CWZpCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIFBFTlRJVU06Kjo0LjAqOiopICMgVW5p c3lzIGBDbGVhclBhdGggSE1QIElYIDQwMDAnIFNWUjQvTVAgZWZmb3J0CisgICAgICAgICAgICAg ICAgICAgICAgICMgc2F5cyA8UmljaGFyZC5NLkJhcnRlbEBjY01haWwuQ2Vuc3VzLkdPVj4KKyAg ICAgICAgIGVjaG8gaTU4Ni11bmlzeXMtc3lzdjQKKy0gICAgICAgIGV4aXQgMCA7OworKyAgICAg ICAgZXhpdCA7OworICAgICAqOlVOSVhfU3lzdGVtX1Y6NCo6RlRYKikKKyAJIyBGcm9tIEdlcmFs ZCBIZXdlcyA8aGV3ZXNAb3Blbm1hcmtldC5jb20+LgorIAkjIEhvdyBhYm91dCBkaWZmZXJlbnRp YXRpbmcgYmV0d2VlbiBzdHJhdHVzIGFyY2hpdGVjdHVyZXM/IC1kam0KKyAJZWNobyBocHBhMS4x LXN0cmF0dXMtc3lzdjQKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjoqOio6RlRYKikK KyAJIyBGcm9tIHNlYW5mQHN3ZGMuc3RyYXR1cy5jb20uCisgCWVjaG8gaTg2MC1zdHJhdHVzLXN5 c3Y0CistCWV4aXQgMCA7OworKwlleGl0IDs7CisrICAgIGkqODY6Vk9TOio6KikKKysJIyBGcm9t IFBhdWwuR3JlZW5Ac3RyYXR1cy5jb20uCisrCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1zdHJhdHVz LXZvcworKwlleGl0IDs7CisgICAgICo6Vk9TOio6KikKKyAJIyBGcm9tIFBhdWwuR3JlZW5Ac3Ry YXR1cy5jb20uCisgCWVjaG8gaHBwYTEuMS1zdHJhdHVzLXZvcworLQlleGl0IDAgOzsKKysJZXhp dCA7OworICAgICBtYzY4KjpBL1VYOio6KikKKyAJZWNobyBtNjhrLWFwcGxlLWF1eCR7VU5BTUVf UkVMRUFTRX0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgbmV3cyo6TkVXUy1PUzo2Kjoq KQorIAllY2hvIG1pcHMtc29ueS1uZXdzb3M2CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAg IFJbMzRdMDAwOipTeXN0ZW1fVio6KjoqIHwgUjQwMDA6VU5JWF9TWVNWOio6KiB8IFIqMDAwOlVO SVhfU1Y6KjoqKQorIAlpZiBbIC1kIC91c3IvbmVjIF07IHRoZW4KKyAJICAgICAgICBlY2hvIG1p cHMtbmVjLXN5c3Yke1VOQU1FX1JFTEVBU0V9CisgCWVsc2UKKyAJICAgICAgICBlY2hvIG1pcHMt dW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfQorIAlmaQorLSAgICAgICAgZXhpdCAwIDs7Cisr ICAgICAgICBleGl0IDs7CisgICAgIEJlQm94OkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBo YXJkd2FyZSBtYWRlIGJ5IEJlLCBQUEMgb25seS4KKyAJZWNobyBwb3dlcnBjLWJlLWJlb3MKKy0J ZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgQmVNYWM6QmVPUzoqOiopCSMgQmVPUyBydW5uaW5n IG9uIE1hYyBvciBNYWMgY2xvbmUsIFBQQyBvbmx5LgorIAllY2hvIHBvd2VycGMtYXBwbGUtYmVv cworLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBCZVBDOkJlT1M6KjoqKQkjIEJlT1MgcnVu bmluZyBvbiBJbnRlbCBQQyBjb21wYXRpYmxlLgorIAllY2hvIGk1ODYtcGMtYmVvcworLQlleGl0 IDAgOzsKKysJZXhpdCA7OworKyAgICBCZVBDOkhhaWt1Oio6KikJIyBIYWlrdSBydW5uaW5nIG9u IEludGVsIFBDIGNvbXBhdGlibGUuCisrCWVjaG8gaTU4Ni1wYy1oYWlrdQorKwlleGl0IDs7Cisg ICAgIFNYLTQ6U1VQRVItVVg6KjoqKQorIAllY2hvIHN4NC1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVM RUFTRX0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgU1gtNTpTVVBFUi1VWDoqOiopCisg CWVjaG8gc3g1LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorLQlleGl0IDAgOzsKKysJZXhp dCA7OworICAgICBTWC02OlNVUEVSLVVYOio6KikKKyAJZWNobyBzeDYtbmVjLXN1cGVydXgke1VO QU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworKwlleGl0IDs7CisrICAgIFNYLTc6U1VQRVItVVg6 KjoqKQorKwllY2hvIHN4Ny1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKysJZXhpdCA7Owor KyAgICBTWC04OlNVUEVSLVVYOio6KikKKysJZWNobyBzeDgtbmVjLXN1cGVydXgke1VOQU1FX1JF TEVBU0V9CisrCWV4aXQgOzsKKysgICAgU1gtOFI6U1VQRVItVVg6KjoqKQorKwllY2hvIHN4OHIt bmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisrCWV4aXQgOzsKKyAgICAgUG93ZXIqOlJoYXBz b2R5Oio6KikKKyAJZWNobyBwb3dlcnBjLWFwcGxlLXJoYXBzb2R5JHtVTkFNRV9SRUxFQVNFfQor LQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICAqOlJoYXBzb2R5Oio6KikKKyAJZWNobyAke1VO QU1FX01BQ0hJTkV9LWFwcGxlLXJoYXBzb2R5JHtVTkFNRV9SRUxFQVNFfQorLQlleGl0IDAgOzsK KysJZXhpdCA7OworICAgICAqOkRhcndpbjoqOiopCistCWNhc2UgYHVuYW1lIC1wYCBpbgorLQkg ICAgKjg2KSBVTkFNRV9QUk9DRVNTT1I9aTY4NiA7OworLQkgICAgcG93ZXJwYykgVU5BTUVfUFJP Q0VTU09SPXBvd2VycGMgOzsKKysJVU5BTUVfUFJPQ0VTU09SPWB1bmFtZSAtcGAgfHwgVU5BTUVf UFJPQ0VTU09SPXVua25vd24KKysJY2FzZSAkVU5BTUVfUFJPQ0VTU09SIGluCisrCSAgICB1bmtu b3duKSBVTkFNRV9QUk9DRVNTT1I9cG93ZXJwYyA7OworIAllc2FjCisgCWVjaG8gJHtVTkFNRV9Q Uk9DRVNTT1J9LWFwcGxlLWRhcndpbiR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CisrCWV4 aXQgOzsKKyAgICAgKjpwcm9jbnRvKjoqOiogfCAqOlFOWDpbMDEyMzQ1Njc4OV0qOiopCisgCVVO QU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgCisgCWlmIHRlc3QgIiRVTkFNRV9QUk9DRVNTT1IiID0g Ing4NiI7IHRoZW4KK0BAIC0xMjAwLDIyICsxMjU3LDI1IEBAIEVPRgorIAkJVU5BTUVfTUFDSElO RT1wYworIAlmaQorIAllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS0ke1VOQU1FX01BQ0hJTkV9LW50 by1xbngke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgICo6UU5Y Oio6NCopCisgCWVjaG8gaTM4Ni1wYy1xbngKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKysgICAg TlNFLT86Tk9OU1RPUF9LRVJORUw6KjoqKQorKwllY2hvIG5zZS10YW5kZW0tbnNrJHtVTkFNRV9S RUxFQVNFfQorKwlleGl0IDs7CisgICAgIE5TUi0/Ok5PTlNUT1BfS0VSTkVMOio6KikKKyAJZWNo byBuc3ItdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsK KyAgICAgKjpOb25TdG9wLVVYOio6KikKKyAJZWNobyBtaXBzLWNvbXBhcS1ub25zdG9wdXgKKy0J ZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgQlMyMDAwOlBPU0lYKjoqOiopCisgCWVjaG8gYnMy MDAwLXNpZW1lbnMtc3lzdgorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBEUy8qOlVOSVhf U3lzdGVtX1Y6KjoqKQorIAllY2hvICR7VU5BTUVfTUFDSElORX0tJHtVTkFNRV9TWVNURU19LSR7 VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjpQbGFuOToqOiop CisgCSMgInVuYW1lIC1tIiBpcyBub3QgY29uc2lzdGVudCwgc28gdXNlICRjcHV0eXBlIGluc3Rl YWQuIDM4NgorIAkjIGlzIGNvbnZlcnRlZCB0byBpMzg2IGZvciBjb25zaXN0ZW5jeSB3aXRoIG90 aGVyIHg4NgorQEAgLTEyMjYsMzEgKzEyODYsNDcgQEAgRU9GCisgCSAgICBVTkFNRV9NQUNISU5F PSIkY3B1dHlwZSIKKyAJZmkKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tcGxhbjkK Ky0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjpUT1BTLTEwOio6KikKKyAJZWNobyBwZHAx MC11bmtub3duLXRvcHMxMAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICAqOlRFTkVYOio6 KikKKyAJZWNobyBwZHAxMC11bmtub3duLXRlbmV4CistCWV4aXQgMCA7OworKwlleGl0IDs7Cisg ICAgIEtTMTA6VE9QUy0yMDoqOiogfCBLTDEwOlRPUFMtMjA6KjoqIHwgVFlQRTQ6VE9QUy0yMDoq OiopCisgCWVjaG8gcGRwMTAtZGVjLXRvcHMyMAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAg ICBYS0wtMTpUT1BTLTIwOio6KiB8IFRZUEU1OlRPUFMtMjA6KjoqKQorIAllY2hvIHBkcDEwLXhr bC10b3BzMjAKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjpUT1BTLTIwOio6KikKKyAJ ZWNobyBwZHAxMC11bmtub3duLXRvcHMyMAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICAq OklUUzoqOiopCisgCWVjaG8gcGRwMTAtdW5rbm93bi1pdHMKKy0JZXhpdCAwIDs7CisrCWV4aXQg OzsKKyAgICAgU0VJOio6KjpTRUlVWCkKKyAgICAgICAgIGVjaG8gbWlwcy1zZWktc2VpdXgke1VO QU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgICo6RHJhZ29uRmx5Oio6 KikKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tZHJhZ29uZmx5YGVjaG8gJHtVTkFN RV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYAorLQlleGl0IDAgOzsKKysJZXhpdCA7Owor KyAgICAqOipWTVM6KjoqKQorKyAgICAJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYv bnVsbGAKKysJY2FzZSAiJHtVTkFNRV9NQUNISU5FfSIgaW4KKysJICAgIEEqKSBlY2hvIGFscGhh LWRlYy12bXMgOyBleGl0IDs7CisrCSAgICBJKikgZWNobyBpYTY0LWRlYy12bXMgOyBleGl0IDs7 CisrCSAgICBWKikgZWNobyB2YXgtZGVjLXZtcyA7IGV4aXQgOzsKKysJZXNhYyA7OworKyAgICAq OlhFTklYOio6U3lzVikKKysJZWNobyBpMzg2LXBjLXhlbml4CisrCWV4aXQgOzsKKysgICAgaSo4 Njpza3lvczoqOiopCisrCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1za3lvc2BlY2hvICR7VU5B TUVfUkVMRUFTRX1gIHwgc2VkIC1lICdzLyAuKiQvLycKKysJZXhpdCA7OworKyAgICBpKjg2OnJk b3M6KjoqKQorKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtcmRvcworKwlleGl0IDs7CisgZXNh YworIAorICNlY2hvICcoTm8gdW5hbWUgY29tbWFuZCBvciB1bmFtZSBvdXRwdXQgbm90IHJlY29n bml6ZWQuKScgMT4mMgorQEAgLTEyODIsNyArMTM1OCw3IEBAIG1haW4gKCkKKyAjZW5kaWYKKyAK KyAjaWYgZGVmaW5lZCAoX19hcm0pICYmIGRlZmluZWQgKF9fYWNvcm4pICYmIGRlZmluZWQgKF9f dW5peCkKKy0gIHByaW50ZiAoImFybS1hY29ybi1yaXNjaXgiKTsgZXhpdCAoMCk7CisrICBwcmlu dGYgKCJhcm0tYWNvcm4tcmlzY2l4XG4iKTsgZXhpdCAoMCk7CisgI2VuZGlmCisgCisgI2lmIGRl ZmluZWQgKGhwMzAwKSAmJiAhZGVmaW5lZCAoaHB1eCkKK0BAIC0xMzcxLDExICsxNDQ3LDEyIEBA IG1haW4gKCkKKyB9CisgRU9GCisgCistJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMg Mj4vZGV2L251bGwgJiYgJGR1bW15ICYmIGV4aXQgMAorKyRDQ19GT1JfQlVJTEQgLW8gJGR1bW15 ICRkdW1teS5jIDI+L2Rldi9udWxsICYmIFNZU1RFTV9OQU1FPWAkZHVtbXlgICYmCisrCXsgZWNo byAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQorIAorICMgQXBvbGxvcyBwdXQgdGhlIHN5c3RlbSB0 eXBlIGluIHRoZSBlbnZpcm9ubWVudC4KKyAKKy10ZXN0IC1kIC91c3IvYXBvbGxvICYmIHsgZWNo byAke0lTUH0tYXBvbGxvLSR7U1lTVFlQRX07IGV4aXQgMDsgfQorK3Rlc3QgLWQgL3Vzci9hcG9s bG8gJiYgeyBlY2hvICR7SVNQfS1hcG9sbG8tJHtTWVNUWVBFfTsgZXhpdDsgfQorIAorICMgQ29u dmV4IHZlcnNpb25zIHRoYXQgcHJlZGF0ZSB1bmFtZSBjYW4gdXNlIGdldHN5c2luZm8oMSkKKyAK K0BAIC0xMzg0LDIyICsxNDYxLDIyIEBAIHRoZW4KKyAgICAgY2FzZSBgZ2V0c3lzaW5mbyAtZiBj cHVfdHlwZWAgaW4KKyAgICAgYzEqKQorIAllY2hvIGMxLWNvbnZleC1ic2QKKy0JZXhpdCAwIDs7 CisrCWV4aXQgOzsKKyAgICAgYzIqKQorIAlpZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKKyAJ dGhlbiBlY2hvIGMzMi1jb252ZXgtYnNkCisgCWVsc2UgZWNobyBjMi1jb252ZXgtYnNkCisgCWZp CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIGMzNCopCisgCWVjaG8gYzM0LWNvbnZleC1i c2QKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgYzM4KikKKyAJZWNobyBjMzgtY29udmV4 LWJzZAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBjNCopCisgCWVjaG8gYzQtY29udmV4 LWJzZAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBlc2FjCisgZmkKKyAKK0BAIC0xNDEw LDcgKzE0ODcsOSBAQCBUaGlzIHNjcmlwdCwgbGFzdCBtb2RpZmllZCAkdGltZXN0YW1wLCBoYXMg ZmFpbGVkIHRvIHJlY29nbml6ZQorIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHlvdSBhcmUgdXNpbmcu IEl0IGlzIGFkdmlzZWQgdGhhdCB5b3UKKyBkb3dubG9hZCB0aGUgbW9zdCB1cCB0byBkYXRlIHZl cnNpb24gb2YgdGhlIGNvbmZpZyBzY3JpcHRzIGZyb20KKyAKKy0gICAgZnRwOi8vZnRwLmdudS5v cmcvcHViL2dudS9jb25maWcvCisrICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2Vi Lz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzO2hiPUhFQUQKKythbmQK KysgIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJs b2JfcGxhaW47Zj1jb25maWcuc3ViO2hiPUhFQUQKKyAKKyBJZiB0aGUgdmVyc2lvbiB5b3UgcnVu ICgkMCkgaXMgYWxyZWFkeSB1cCB0byBkYXRlLCBwbGVhc2UKKyBzZW5kIHRoZSBmb2xsb3dpbmcg ZGF0YSBhbmQgYW55IGluZm9ybWF0aW9uIHlvdSB0aGluayBtaWdodCBiZQorb2xkIG1vZGUgMTAw NzU1CituZXcgbW9kZSAxMDA2NDQKKy0tLSBhL3JlYWRsaW5lL3N1cHBvcnQvY29uZmlnLnJwYXRo CisrKysgYi9yZWFkbGluZS9zdXBwb3J0L2NvbmZpZy5ycGF0aAorQEAgLTYsMTkgKzYsMTggQEAK KyAjICAgVGFrZW4gZnJvbSBHTlUgbGlidG9vbCwgMjAwMQorICMgICBPcmlnaW5hbGx5IGJ5IEdv cmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgorICMKKy0jICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKysjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0jICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg b3IKKysjICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKyAjICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyAjCistIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKy0jICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSMgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorLSMgICBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIyAgIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisrIyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgIworICMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSMgICBGb3VuZGF0aW9uLCBJ bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg VVNBLgorKyMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAjCisgIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24g dG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyAjICAgZGlzdHJpYnV0 ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCitvbGQgbW9k ZSAxMDA3NTUKK25ldyBtb2RlIDEwMDY0NAorLS0tIGEvcmVhZGxpbmUvc3VwcG9ydC9jb25maWcu c3ViCisrKysgYi9yZWFkbGluZS9zdXBwb3J0L2NvbmZpZy5zdWIKK0BAIC0xLDkgKzEsMTAgQEAK KyAjISAvYmluL3NoCisgIyBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gc3Vicm91dGluZSBzY3Jp cHQuCisgIyAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5 NywgMTk5OCwgMTk5OSwKKy0jICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKysjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAw NSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOTgKKysjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisgCistdGltZXN0YW1wPScyMDA0LTAyLTE2JworK3RpbWVzdGFtcD0nMjAwOC0wMy0y NicKKyAKKyAjIFRoaXMgZmlsZSBpcyAoaW4gcHJpbmNpcGxlKSBjb21tb24gdG8gQUxMIEdOVSBz b2Z0d2FyZS4KKyAjIFRoZSBwcmVzZW5jZSBvZiBhIG1hY2hpbmUgaW4gdGhpcyBmaWxlIHN1Z2dl c3RzIHRoYXQgU09NRSBHTlUgc29mdHdhcmUKK0BAIC0yMSwxNCArMjIsMTUgQEAgdGltZXN0YW1w PScyMDA0LTAyLTE2JworICMKKyAjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSMgRm91bmRhdGlvbiwgSW5j LiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorLSMgQm9zdG9uLCBNQSAwMjExMS0xMzA3 LCBVU0EuCistCisrIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQgLSBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQQorKyMgMDIxMTAtMTMwMSwgVVNBLgorKyMKKyAjIEFzIGEgc3Bl Y2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UK KyAjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFp bnMgYQorICMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3Ug bWF5IGluY2x1ZGUgaXQgdW5kZXIKKyAjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0 IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKyAKKysKKyAjIFBsZWFzZSBz ZW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiAgU3VibWl0IGEgY29udGV4 dAorICMgZGlmZiBhbmQgYSBwcm9wZXJseSBmb3JtYXR0ZWQgQ2hhbmdlTG9nIGVudHJ5LgorICMK K0BAIC03MCw4ICs3Miw4IEBAIFJlcG9ydCBidWdzIGFuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0 Y2hlc0BnbnUub3JnPi4iCisgdmVyc2lvbj0iXAorIEdOVSBjb25maWcuc3ViICgkdGltZXN0YW1w KQorIAorLUNvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5Nywg MTk5OCwgMTk5OSwgMjAwMCwgMjAwMQorLUZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor K0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwg MTk5OSwgMjAwMCwgMjAwMSwKKysyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy MDA4LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCisgVGhpcyBpcyBmcmVl IHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUg aXMgTk8KKyB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCitAQCAtODMsMTEgKzg1LDExIEBAIFRyeSBcYCRt ZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKyB3aGlsZSB0ZXN0ICQjIC1ndCAwIDsg ZG8KKyAgIGNhc2UgJDEgaW4KKyAgICAgLS10aW1lLXN0YW1wIHwgLS10aW1lKiB8IC10ICkKKy0g ICAgICAgZWNobyAiJHRpbWVzdGFtcCIgOyBleGl0IDAgOzsKKysgICAgICAgZWNobyAiJHRpbWVz dGFtcCIgOyBleGl0IDs7CisgICAgIC0tdmVyc2lvbiB8IC12ICkKKy0gICAgICAgZWNobyAiJHZl cnNpb24iIDsgZXhpdCAwIDs7CisrICAgICAgIGVjaG8gIiR2ZXJzaW9uIiA7IGV4aXQgOzsKKyAg ICAgLS1oZWxwIHwgLS1oKiB8IC1oICkKKy0gICAgICAgZWNobyAiJHVzYWdlIjsgZXhpdCAwIDs7 CisrICAgICAgIGVjaG8gIiR1c2FnZSI7IGV4aXQgOzsKKyAgICAgLS0gKSAgICAgIyBTdG9wIG9w dGlvbiBwcm9jZXNzaW5nCisgICAgICAgIHNoaWZ0OyBicmVhayA7OworICAgICAtICkJIyBVc2Ug c3RkaW4gYXMgaW5wdXQuCitAQCAtOTksNyArMTAxLDcgQEAgd2hpbGUgdGVzdCAkIyAtZ3QgMCA7 IGRvCisgICAgICpsb2NhbCopCisgICAgICAgICMgRmlyc3QgcGFzcyB0aHJvdWdoIGFueSBsb2Nh bCBtYWNoaW5lIHR5cGVzLgorICAgICAgICBlY2hvICQxCistICAgICAgIGV4aXQgMDs7CisrICAg ICAgIGV4aXQgOzsKKyAKKyAgICAgKiApCisgICAgICAgIGJyZWFrIDs7CitAQCAtMTE4LDggKzEy MCw5IEBAIGVzYWMKKyAjIEhlcmUgd2UgbXVzdCByZWNvZ25pemUgYWxsIHRoZSB2YWxpZCBLRVJO RUwtT1MgY29tYmluYXRpb25zLgorIG1heWJlX29zPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCkt XChbXi1dKi1bXi1dKlwpJC9cMi8nYAorIGNhc2UgJG1heWJlX29zIGluCistICBudG8tcW54KiB8 IGxpbnV4LWdudSogfCBsaW51eC1kaWV0bGliYyB8IGxpbnV4LXVjbGliYyogfCB1Y2xpbnV4LXVj bGliYyogfCB1Y2xpbnV4LWdudSogfCBcCistICBrZnJlZWJzZCotZ251KiB8IGtuZXRic2QqLWdu dSogfCBuZXRic2QqLWdudSogfCBzdG9ybS1jaGFvcyogfCBvczItZW14KiB8IHJ0bWstbm92YSop CisrICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC1kaWV0bGliYyB8IGxpbnV4LW5ld2xp YiogfCBsaW51eC11Y2xpYmMqIHwgXAorKyAgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUq IHwga2ZyZWVic2QqLWdudSogfCBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAorKyAg c3Rvcm0tY2hhb3MqIHwgb3MyLWVteCogfCBydG1rLW5vdmEqKQorICAgICBvcz0tJG1heWJlX29z CisgICAgIGJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVte LV0qXCkkL1wxLydgCisgICAgIDs7CitAQCAtMTQ1LDcgKzE0OCw3IEBAIGNhc2UgJG9zIGluCisg CS1jb252ZXJnZW50KiB8IC1uY3IqIHwgLW5ld3MgfCAtMzIqIHwgLTM2MDAqIHwgLTMxMDAqIHwg LWhpdGFjaGkqIHxcCisgCS1jWzEyM10qIHwgLWNvbnZleCogfCAtc3VuIHwgLWNyZHMgfCAtb21y b24qIHwgLWRnIHwgLXVsdHJhIHwgLXR0aSogfCBcCisgCS1oYXJyaXMgfCAtZG9scGhpbiB8IC1o aWdobGV2ZWwgfCAtZ291bGQgfCAtY2JtIHwgLW5zIHwgLW1hc3Njb21wIHwgXAorLQktYXBwbGUg fCAtYXhpcykKKysJLWFwcGxlIHwgLWF4aXMgfCAta251dGggfCAtY3JheSkKKyAJCW9zPQorIAkJ YmFzaWNfbWFjaGluZT0kMQorIAkJOzsKK0BAIC0xNzAsNiArMTczLDEwIEBAIGNhc2UgJG9zIGlu CisgCS1oaXV4KikKKyAJCW9zPS1oaXV4d2UyCisgCQk7OworKwktc2NvNikKKysJCW9zPS1zY281 djYKKysJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AK KysJCTs7CisgCS1zY281KQorIAkJb3M9LXNjbzMuMnY1CisgCQliYXNpY19tYWNoaW5lPWBlY2hv ICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCitAQCAtMTg2LDYgKzE5MywxMCBAQCBjYXNl ICRvcyBpbgorIAkJIyBEb24ndCBmb3JnZXQgdmVyc2lvbiBpZiBpdCBpcyAzLjJ2NCBvciBuZXdl ci4KKyAJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AK KyAJCTs7CisrCS1zY281djYqKQorKwkJIyBEb24ndCBmb3JnZXQgdmVyc2lvbiBpZiBpdCBpcyAz LjJ2NCBvciBuZXdlci4KKysJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYt LiovODYtcGMvJ2AKKysJCTs7CisgCS1zY28qKQorIAkJb3M9LXNjbzMuMnYyCisgCQliYXNpY19t YWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCitAQCAtMjMwLDIyICsy NDEsMjcgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorIAl8IGFscGhhIHwgYWxwaGFldls0LThd IHwgYWxwaGFldjU2IHwgYWxwaGFldjZbNzhdIHwgYWxwaGFwY2E1WzY3XSBcCisgCXwgYWxwaGE2 NCB8IGFscGhhNjRldls0LThdIHwgYWxwaGE2NGV2NTYgfCBhbHBoYTY0ZXY2Wzc4XSB8IGFscGhh NjRwY2E1WzY3XSBcCisgCXwgYW0zM18yLjAgXAorLQl8IGFyYyB8IGFybSB8IGFybVtibF1lIHwg YXJtZVtsYl0gfCBhcm12WzIzNDVdIHwgYXJtdlszNDVdW2xiXSB8IGF2ciBcCisrCXwgYXJjIHwg YXJtIHwgYXJtW2JsXWUgfCBhcm1lW2xiXSB8IGFybXZbMjM0NV0gfCBhcm12WzM0NV1bbGJdIHwg YXZyIHwgYXZyMzIgXAorKwl8IGJmaW4gXAorIAl8IGM0eCB8IGNsaXBwZXIgXAorIAl8IGQxMHYg fCBkMzB2IHwgZGx4IHwgZHNwMTZ4eCBcCistCXwgZnIzMCB8IGZydiBcCisrCXwgZmlkbyB8IGZy MzAgfCBmcnYgXAorIAl8IGg4MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEy LjAgfCBocHBhMi4wW253XSB8IGhwcGE2NCBcCisgCXwgaTM3MCB8IGk4NjAgfCBpOTYwIHwgaWE2 NCBcCisgCXwgaXAyayB8IGlxMjAwMCBcCistCXwgbTMyciB8IG02ODAwMCB8IG02OGsgfCBtODhr IHwgbWNvcmUgXAorKwl8IG0zMmMgfCBtMzJyIHwgbTMycmxlIHwgbTY4MDAwIHwgbTY4ayB8IG04 OGsgXAorKwl8IG1heHEgfCBtYiB8IG1pY3JvYmxhemUgfCBtY29yZSB8IG1lcCB8IG1ldGFnIFwK KyAJfCBtaXBzIHwgbWlwc2JlIHwgbWlwc2ViIHwgbWlwc2VsIHwgbWlwc2xlIFwKKyAJfCBtaXBz MTYgXAorIAl8IG1pcHM2NCB8IG1pcHM2NGVsIFwKKy0JfCBtaXBzNjR2ciB8IG1pcHM2NHZyZWwg XAorKwl8IG1pcHM2NG9jdGVvbiB8IG1pcHM2NG9jdGVvbmVsIFwKKyAJfCBtaXBzNjRvcmlvbiB8 IG1pcHM2NG9yaW9uZWwgXAorKwl8IG1pcHM2NHI1OTAwIHwgbWlwczY0cjU5MDBlbCBcCisrCXwg bWlwczY0dnIgfCBtaXBzNjR2cmVsIFwKKyAJfCBtaXBzNjR2cjQxMDAgfCBtaXBzNjR2cjQxMDBl bCBcCisgCXwgbWlwczY0dnI0MzAwIHwgbWlwczY0dnI0MzAwZWwgXAorIAl8IG1pcHM2NHZyNTAw MCB8IG1pcHM2NHZyNTAwMGVsIFwKKysJfCBtaXBzNjR2cjU5MDAgfCBtaXBzNjR2cjU5MDBlbCBc CisgCXwgbWlwc2lzYTMyIHwgbWlwc2lzYTMyZWwgXAorIAl8IG1pcHNpc2EzMnIyIHwgbWlwc2lz YTMycjJlbCBcCisgCXwgbWlwc2lzYTY0IHwgbWlwc2lzYTY0ZWwgXAorQEAgLTI1NCwyMCArMjcw LDI0IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KKyAJfCBtaXBzaXNhNjRzcjcxayB8IG1pcHNp c2E2NHNyNzFrZWwgXAorIAl8IG1pcHN0eDM5IHwgbWlwc3R4MzllbCBcCisgCXwgbW4xMDIwMCB8 IG1uMTAzMDAgXAorKwl8IG10IFwKKyAJfCBtc3A0MzAgXAorKwl8IG5pb3MgfCBuaW9zMiBcCisg CXwgbnMxNmsgfCBuczMyayBcCistCXwgb3BlbnJpc2MgfCBvcjMyIFwKKysJfCBvcjMyIFwKKyAJ fCBwZHAxMCB8IHBkcDExIHwgcGogfCBwamwgXAorIAl8IHBvd2VycGMgfCBwb3dlcnBjNjQgfCBw b3dlcnBjNjRsZSB8IHBvd2VycGNsZSB8IHBwY2JlIFwKKyAJfCBweXJhbWlkIFwKKy0JfCBzaCB8 IHNoWzEyMzRdIHwgc2hbMjNdZSB8IHNoWzM0XWViIHwgc2hiZSB8IHNobGUgfCBzaFsxMjM0XWxl IHwgc2gzZWxlIFwKKysJfCBzY29yZSBcCisrCXwgc2ggfCBzaFsxMjM0XSB8IHNoWzI0XWEgfCBz aFsyM11lIHwgc2hbMzRdZWIgfCBzaGViIHwgc2hiZSB8IHNobGUgfCBzaFsxMjM0XWxlIHwgc2gz ZWxlIFwKKyAJfCBzaDY0IHwgc2g2NGxlIFwKKy0JfCBzcGFyYyB8IHNwYXJjNjQgfCBzcGFyYzg2 eCB8IHNwYXJjbGV0IHwgc3BhcmNsaXRlIHwgc3BhcmN2OSB8IHNwYXJjdjliIFwKKy0JfCBzdHJv bmdhcm0gXAorKwl8IHNwYXJjIHwgc3BhcmM2NCB8IHNwYXJjNjRiIHwgc3BhcmM2NHYgfCBzcGFy Yzg2eCB8IHNwYXJjbGV0IHwgc3BhcmNsaXRlIFwKKysJfCBzcGFyY3Y4IHwgc3BhcmN2OSB8IHNw YXJjdjliIHwgc3BhcmN2OXYgXAorKwl8IHNwdSB8IHN0cm9uZ2FybSBcCisgCXwgdGFob2UgfCB0 aHVtYiB8IHRpYzR4IHwgdGljODAgfCB0cm9uIFwKKyAJfCB2ODUwIHwgdjg1MGUgXAorIAl8IHdl MzJrIFwKKy0JfCB4ODYgfCB4c2NhbGUgfCB4c3Rvcm15MTYgfCB4dGVuc2EgXAorKwl8IHg4NiB8 IHhjMTZ4IHwgeHNjYWxlIHwgeHNjYWxlZVtibF0gfCB4c3Rvcm15MTYgfCB4dGVuc2EgXAorIAl8 IHo4aykKKyAJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorIAkJOzsKK0BA IC0yNzgsNiArMjk4LDkgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorIAkJOzsKKyAJbTg4MTEw IHwgbTY4MFsxMjM0Nl0wIHwgbTY4Mz8yIHwgbTY4MzYwIHwgbTUyMDAgfCB2NzAgfCB3NjUgfCB6 OGspCisgCQk7OworKwltczEpCisrCQliYXNpY19tYWNoaW5lPW10LXVua25vd24KKysJCTs7Cisg CisgCSMgV2UgdXNlIGBwYycgcmF0aGVyIHRoYW4gYHVua25vd24nCisgCSMgYmVjYXVzZSAoMSkg dGhhdCdzIHdoYXQgdGhleSBub3JtYWxseSBhcmUsIGFuZAorQEAgLTI5NywyOCArMzIwLDMxIEBA IGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KKyAJfCBhbHBoYTY0LSogfCBhbHBoYTY0ZXZbNC04XS0q IHwgYWxwaGE2NGV2NTYtKiB8IGFscGhhNjRldjZbNzhdLSogXAorIAl8IGFscGhhcGNhNVs2N10t KiB8IGFscGhhNjRwY2E1WzY3XS0qIHwgYXJjLSogXAorIAl8IGFybS0qICB8IGFybWJlLSogfCBh cm1sZS0qIHwgYXJtZWItKiB8IGFybXYqLSogXAorLQl8IGF2ci0qIFwKKy0JfCBiczIwMDAtKiBc CisrCXwgYXZyLSogfCBhdnIzMi0qIFwKKysJfCBiZmluLSogfCBiczIwMDAtKiBcCisgCXwgY1sx MjNdKiB8IGMzMC0qIHwgW2NqdF05MC0qIHwgYzR4LSogfCBjNTR4LSogfCBjNTV4LSogfCBjNngt KiBcCistCXwgY2xpcHBlci0qIHwgY3lkcmEtKiBcCisrCXwgY2xpcHBlci0qIHwgY3JheW52LSog fCBjeWRyYS0qIFwKKyAJfCBkMTB2LSogfCBkMzB2LSogfCBkbHgtKiBcCisgCXwgZWx4c2ktKiBc CistCXwgZjMwWzAxXS0qIHwgZjcwMC0qIHwgZnIzMC0qIHwgZnJ2LSogfCBmeDgwLSogXAorKwl8 IGYzMFswMV0tKiB8IGY3MDAtKiB8IGZpZG8tKiB8IGZyMzAtKiB8IGZydi0qIHwgZng4MC0qIFwK KyAJfCBoODMwMC0qIHwgaDg1MDAtKiBcCisgCXwgaHBwYS0qIHwgaHBwYTEuWzAxXS0qIHwgaHBw YTIuMC0qIHwgaHBwYTIuMFtud10tKiB8IGhwcGE2NC0qIFwKKyAJfCBpKjg2LSogfCBpODYwLSog fCBpOTYwLSogfCBpYTY0LSogXAorIAl8IGlwMmstKiB8IGlxMjAwMC0qIFwKKy0JfCBtMzJyLSog XAorKwl8IG0zMmMtKiB8IG0zMnItKiB8IG0zMnJsZS0qIFwKKyAJfCBtNjgwMDAtKiB8IG02ODBb MDEyMzQ2XTAtKiB8IG02ODM2MC0qIHwgbTY4Mz8yLSogfCBtNjhrLSogXAorLQl8IG04ODExMC0q IHwgbTg4ay0qIHwgbWNvcmUtKiBcCisrCXwgbTg4MTEwLSogfCBtODhrLSogfCBtYXhxLSogfCBt Y29yZS0qIHwgbWV0YWctKiBcCisgCXwgbWlwcy0qIHwgbWlwc2JlLSogfCBtaXBzZWItKiB8IG1p cHNlbC0qIHwgbWlwc2xlLSogXAorIAl8IG1pcHMxNi0qIFwKKyAJfCBtaXBzNjQtKiB8IG1pcHM2 NGVsLSogXAorLQl8IG1pcHM2NHZyLSogfCBtaXBzNjR2cmVsLSogXAorKwl8IG1pcHM2NG9jdGVv bi0qIHwgbWlwczY0b2N0ZW9uZWwtKiBcCisgCXwgbWlwczY0b3Jpb24tKiB8IG1pcHM2NG9yaW9u ZWwtKiBcCisrCXwgbWlwczY0cjU5MDAtKiB8IG1pcHM2NHI1OTAwZWwtKiBcCisrCXwgbWlwczY0 dnItKiB8IG1pcHM2NHZyZWwtKiBcCisgCXwgbWlwczY0dnI0MTAwLSogfCBtaXBzNjR2cjQxMDBl bC0qIFwKKyAJfCBtaXBzNjR2cjQzMDAtKiB8IG1pcHM2NHZyNDMwMGVsLSogXAorIAl8IG1pcHM2 NHZyNTAwMC0qIHwgbWlwczY0dnI1MDAwZWwtKiBcCisrCXwgbWlwczY0dnI1OTAwLSogfCBtaXBz NjR2cjU5MDBlbC0qIFwKKyAJfCBtaXBzaXNhMzItKiB8IG1pcHNpc2EzMmVsLSogXAorIAl8IG1p cHNpc2EzMnIyLSogfCBtaXBzaXNhMzJyMmVsLSogXAorIAl8IG1pcHNpc2E2NC0qIHwgbWlwc2lz YTY0ZWwtKiBcCitAQCAtMzI2LDI3ICszNTIsMzUgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgor IAl8IG1pcHNpc2E2NHNiMS0qIHwgbWlwc2lzYTY0c2IxZWwtKiBcCisgCXwgbWlwc2lzYTY0c3I3 MWstKiB8IG1pcHNpc2E2NHNyNzFrZWwtKiBcCisgCXwgbWlwc3R4MzktKiB8IG1pcHN0eDM5ZWwt KiBcCisrCXwgbW1peC0qIFwKKysJfCBtdC0qIFwKKyAJfCBtc3A0MzAtKiBcCistCXwgbm9uZS0q IHwgbnAxLSogfCBudjEtKiB8IG5zMTZrLSogfCBuczMyay0qIFwKKysJfCBuaW9zLSogfCBuaW9z Mi0qIFwKKysJfCBub25lLSogfCBucDEtKiB8IG5zMTZrLSogfCBuczMyay0qIFwKKyAJfCBvcmlv bi0qIFwKKyAJfCBwZHAxMC0qIHwgcGRwMTEtKiB8IHBqLSogfCBwamwtKiB8IHBuLSogfCBwb3dl ci0qIFwKKyAJfCBwb3dlcnBjLSogfCBwb3dlcnBjNjQtKiB8IHBvd2VycGM2NGxlLSogfCBwb3dl cnBjbGUtKiB8IHBwY2JlLSogXAorIAl8IHB5cmFtaWQtKiBcCisgCXwgcm9tcC0qIHwgcnM2MDAw LSogXAorLQl8IHNoLSogfCBzaFsxMjM0XS0qIHwgc2hbMjNdZS0qIHwgc2hbMzRdZWItKiB8IHNo YmUtKiBcCisrCXwgc2gtKiB8IHNoWzEyMzRdLSogfCBzaFsyNF1hLSogfCBzaFsyM11lLSogfCBz aFszNF1lYi0qIHwgc2hlYi0qIHwgc2hiZS0qIFwKKyAJfCBzaGxlLSogfCBzaFsxMjM0XWxlLSog fCBzaDNlbGUtKiB8IHNoNjQtKiB8IHNoNjRsZS0qIFwKKy0JfCBzcGFyYy0qIHwgc3BhcmM2NC0q IHwgc3BhcmM4NngtKiB8IHNwYXJjbGV0LSogfCBzcGFyY2xpdGUtKiBcCistCXwgc3BhcmN2OS0q IHwgc3BhcmN2OWItKiB8IHN0cm9uZ2FybS0qIHwgc3YxLSogfCBzeD8tKiBcCisrCXwgc3BhcmMt KiB8IHNwYXJjNjQtKiB8IHNwYXJjNjRiLSogfCBzcGFyYzY0di0qIHwgc3BhcmM4NngtKiB8IHNw YXJjbGV0LSogXAorKwl8IHNwYXJjbGl0ZS0qIFwKKysJfCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSog fCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN0cm9uZ2FybS0qIHwgc3YxLSogfCBzeD8tKiBc CisgCXwgdGFob2UtKiB8IHRodW1iLSogXAorLQl8IHRpYzMwLSogfCB0aWM0eC0qIHwgdGljNTR4 LSogfCB0aWM1NXgtKiB8IHRpYzZ4LSogfCB0aWM4MC0qIFwKKysJfCB0aWMzMC0qIHwgdGljNHgt KiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiB8IHRpbGUtKiBcCisg CXwgdHJvbi0qIFwKKyAJfCB2ODUwLSogfCB2ODUwZS0qIHwgdmF4LSogXAorIAl8IHdlMzJrLSog XAorLQl8IHg4Ni0qIHwgeDg2XzY0LSogfCB4cHMxMDAtKiB8IHhzY2FsZS0qIHwgeHN0b3JteTE2 LSogXAorLQl8IHh0ZW5zYS0qIFwKKysJfCB4ODYtKiB8IHg4Nl82NC0qIHwgeGMxNngtKiB8IHhw czEwMC0qIHwgeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qIFwKKysJfCB4c3Rvcm15MTYtKiB8IHh0 ZW5zYSotKiBcCisgCXwgeW1wLSogXAorIAl8IHo4ay0qKQorIAkJOzsKKysJIyBSZWNvZ25pemUg dGhlIGJhc2ljIENQVSB0eXBlcyB3aXRob3V0IGNvbXBhbnkgbmFtZSwgd2l0aCBnbG9iIG1hdGNo LgorKwl4dGVuc2EqKQorKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisr CQk7OworIAkjIFJlY29nbml6ZSB0aGUgdmFyaW91cyBtYWNoaW5lIG5hbWVzIGFuZCBhbGlhc2Vz IHdoaWNoIHN0YW5kCisgCSMgZm9yIGEgQ1BVIHR5cGUgYW5kIGEgY29tcGFueSBhbmQgc29tZXRp bWVzIGV2ZW4gYW4gT1MuCisgCTM4NmJzZCkKK0BAIC00MTcsNiArNDUxLDE0IEBAIGNhc2UgJGJh c2ljX21hY2hpbmUgaW4KKyAJCWJhc2ljX21hY2hpbmU9bnMzMmstc2VxdWVudAorIAkJb3M9LWR5 bml4CisgCQk7OworKwlibGFja2ZpbikKKysJCWJhc2ljX21hY2hpbmU9YmZpbi11bmtub3duCisr CQlvcz0tbGludXgKKysJCTs7CisrCWJsYWNrZmluLSopCisrCQliYXNpY19tYWNoaW5lPWJmaW4t YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKysJCW9zPS1saW51eAor KwkJOzsKKyAJYzkwKQorIAkJYmFzaWNfbWFjaGluZT1jOTAtY3JheQorIAkJb3M9LXVuaWNvcwor QEAgLTQ0NSwxNiArNDg3LDI3IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KKyAJCWJhc2ljX21h Y2hpbmU9ajkwLWNyYXkKKyAJCW9zPS11bmljb3MKKyAJCTs7CistCWNyMTZjKQorLQkJYmFzaWNf bWFjaGluZT1jcjE2Yy11bmtub3duCisrCWNyYXludikKKysJCWJhc2ljX21hY2hpbmU9Y3JheW52 LWNyYXkKKysJCW9zPS11bmljb3NtcAorKwkJOzsKKysJY3IxNikKKysJCWJhc2ljX21hY2hpbmU9 Y3IxNi11bmtub3duCisgCQlvcz0tZWxmCisgCQk7OworIAljcmRzIHwgdW5vcykKKyAJCWJhc2lj X21hY2hpbmU9bTY4ay1jcmRzCisgCQk7OworKwljcmlzdjMyIHwgY3Jpc3YzMi0qIHwgZXRyYXhm cyopCisrCQliYXNpY19tYWNoaW5lPWNyaXN2MzItYXhpcworKwkJOzsKKyAJY3JpcyB8IGNyaXMt KiB8IGV0cmF4KikKKyAJCWJhc2ljX21hY2hpbmU9Y3Jpcy1heGlzCisgCQk7OworKwljcngpCisr CQliYXNpY19tYWNoaW5lPWNyeC11bmtub3duCisrCQlvcz0tZWxmCisrCQk7OworIAlkYTMwIHwg ZGEzMC0qKQorIAkJYmFzaWNfbWFjaGluZT1tNjhrLWRhMzAKKyAJCTs7CitAQCAtNDc3LDYgKzUz MCwxMCBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGluCisgCQliYXNpY19tYWNoaW5lPW04OGstbW90 b3JvbGEKKyAJCW9zPS1zeXN2MworIAkJOzsKKysJZGpncHApCisrCQliYXNpY19tYWNoaW5lPWk1 ODYtcGMKKysJCW9zPS1tc2Rvc2RqZ3BwCisrCQk7OworIAlkcHgyMCB8IGRweDIwLSopCisgCQli YXNpY19tYWNoaW5lPXJzNjAwMC1idWxsCisgCQlvcz0tYm9zeAorQEAgLTYyNyw2ICs2ODQsMTQg QEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorIAkJYmFzaWNfbWFjaGluZT1tNjhrLWlzaQorIAkJ b3M9LXN5c3YKKyAJCTs7CisrCW02OGtub21tdSkKKysJCWJhc2ljX21hY2hpbmU9bTY4ay11bmtu b3duCisrCQlvcz0tbGludXgKKysJCTs7CisrCW02OGtub21tdS0qKQorKwkJYmFzaWNfbWFjaGlu ZT1tNjhrLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisrCQlvcz0t bGludXgKKysJCTs7CisgCW04OGstb21yb24qKQorIAkJYmFzaWNfbWFjaGluZT1tODhrLW9tcm9u CisgCQk7OworQEAgLTY0Miw2ICs3MDcsMTAgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorIAkJ YmFzaWNfbWFjaGluZT1pMzg2LXBjCisgCQlvcz0tbWluZ3czMgorIAkJOzsKKysJbWluZ3czMmNl KQorKwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgorKwkJb3M9LW1pbmd3MzJjZQorKwkJOzsK KyAJbWluaWZyYW1lKQorIAkJYmFzaWNfbWFjaGluZT1tNjgwMDAtY29udmVyZ2VudAorIAkJOzsK K0BAIC02NTUsMTAgKzcyNCw2IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KKyAJbWlwczMqKQor IAkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAtZSAncy9taXBzMy9t aXBzNjQvJ2AtdW5rbm93bgorIAkJOzsKKy0JbW1peCopCistCQliYXNpY19tYWNoaW5lPW1taXgt a251dGgKKy0JCW9zPS1tbWl4d2FyZQorLQkJOzsKKyAJbW9uaXRvcikKKyAJCWJhc2ljX21hY2hp bmU9bTY4ay1yb202OGsKKyAJCW9zPS1jb2ZmCitAQCAtNjcxLDYgKzczNiw5IEBAIGNhc2UgJGJh c2ljX21hY2hpbmUgaW4KKyAJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworIAkJb3M9LW1zZG9zCisg CQk7OworKwltczEtKikKKysJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBz ZWQgLWUgJ3MvbXMxLS9tdC0vJ2AKKysJCTs7CisgCW12cykKKyAJCWJhc2ljX21hY2hpbmU9aTM3 MC1pYm0KKyAJCW9zPS1tdnMKK0BAIC03MzksOSArODA3LDggQEAgY2FzZSAkYmFzaWNfbWFjaGlu ZSBpbgorIAlucDEpCisgCQliYXNpY19tYWNoaW5lPW5wMS1nb3VsZAorIAkJOzsKKy0JbnYxKQor LQkJYmFzaWNfbWFjaGluZT1udjEtY3JheQorLQkJb3M9LXVuaWNvc21wCisrCW5zZS10YW5kZW0p CisrCQliYXNpY19tYWNoaW5lPW5zZS10YW5kZW0KKyAJCTs7CisgCW5zci10YW5kZW0pCisgCQli YXNpY19tYWNoaW5lPW5zci10YW5kZW0KK0BAIC03NTAsOSArODE3LDggQEAgY2FzZSAkYmFzaWNf bWFjaGluZSBpbgorIAkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLW9raQorIAkJb3M9LXByb2VsZgor IAkJOzsKKy0Jb3IzMiB8IG9yMzItKikKKysJb3BlbnJpc2MgfCBvcGVucmlzYy0qKQorIAkJYmFz aWNfbWFjaGluZT1vcjMyLXVua25vd24KKy0JCW9zPS1jb2ZmCisgCQk7OworIAlvczQwMCkKKyAJ CWJhc2ljX21hY2hpbmU9cG93ZXJwYy1pYm0KK0BAIC03NzQsNiArODQwLDE0IEBAIGNhc2UgJGJh c2ljX21hY2hpbmUgaW4KKyAJCWJhc2ljX21hY2hpbmU9aTg2MC1pbnRlbAorIAkJb3M9LW9zZgor IAkJOzsKKysJcGFyaXNjKQorKwkJYmFzaWNfbWFjaGluZT1ocHBhLXVua25vd24KKysJCW9zPS1s aW51eAorKwkJOzsKKysJcGFyaXNjLSopCisrCQliYXNpY19tYWNoaW5lPWhwcGEtYGVjaG8gJGJh c2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKysJCW9zPS1saW51eAorKwkJOzsKKyAJ cGJkKQorIAkJYmFzaWNfbWFjaGluZT1zcGFyYy10dGkKKyAJCTs7CitAQCAtNzgzLDYgKzg1Nywx MiBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGluCisgCXBjNTMyIHwgcGM1MzItKikKKyAJCWJhc2lj X21hY2hpbmU9bnMzMmstcGM1MzIKKyAJCTs7CisrCXBjOTgpCisrCQliYXNpY19tYWNoaW5lPWkz ODYtcGMKKysJCTs7CisrCXBjOTgtKikKKysJCWJhc2ljX21hY2hpbmU9aTM4Ni1gZWNobyAkYmFz aWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorKwkJOzsKKyAJcGVudGl1bSB8IHA1IHwg azUgfCBrNiB8IG5leGdlbiB8IHZpYWMzKQorIAkJYmFzaWNfbWFjaGluZT1pNTg2LXBjCisgCQk7 OworQEAgLTgzOSw2ICs5MTksMTAgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorIAkJYmFzaWNf bWFjaGluZT1pNTg2LXVua25vd24KKyAJCW9zPS1wdzMyCisgCQk7OworKwlyZG9zKQorKwkJYmFz aWNfbWFjaGluZT1pMzg2LXBjCisrCQlvcz0tcmRvcworKwkJOzsKKyAJcm9tNjhrKQorIAkJYmFz aWNfbWFjaGluZT1tNjhrLXJvbTY4aworIAkJb3M9LWNvZmYKK0BAIC04NjUsNiArOTQ5LDEwIEBA IGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KKyAJc2IxZWwpCisgCQliYXNpY19tYWNoaW5lPW1pcHNp c2E2NHNiMWVsLXVua25vd24KKyAJCTs7CisrCXNkZSkKKysJCWJhc2ljX21hY2hpbmU9bWlwc2lz YTMyLXNkZQorKwkJb3M9LWVsZgorKwkJOzsKKyAJc2VpKQorIAkJYmFzaWNfbWFjaGluZT1taXBz LXNlaQorIAkJb3M9LXNlaXV4CitAQCAtODc2LDYgKzk2NCw5IEBAIGNhc2UgJGJhc2ljX21hY2hp bmUgaW4KKyAJCWJhc2ljX21hY2hpbmU9c2gtaGl0YWNoaQorIAkJb3M9LWhtcworIAkJOzsKKysJ c2g1ZWwpCisrCQliYXNpY19tYWNoaW5lPXNoNWxlLXVua25vd24KKysJCTs7CisgCXNoNjQpCisg CQliYXNpY19tYWNoaW5lPXNoNjQtdW5rbm93bgorIAkJOzsKK0BAIC05NjUsNiArMTA1NiwxMCBA QCBjYXNlICRiYXNpY19tYWNoaW5lIGluCisgCQliYXNpY19tYWNoaW5lPXRpYzZ4LXVua25vd24K KyAJCW9zPS1jb2ZmCisgCQk7OworKwl0aWxlKikKKysJCWJhc2ljX21hY2hpbmU9dGlsZS11bmtu b3duCisrCQlvcz0tbGludXgtZ251CisrCQk7OworIAl0eDM5KQorIAkJYmFzaWNfbWFjaGluZT1t aXBzdHgzOS11bmtub3duCisgCQk7OworQEAgLTEwMjUsNiArMTEyMCwxMCBAQCBjYXNlICRiYXNp Y19tYWNoaW5lIGluCisgCQliYXNpY19tYWNoaW5lPWhwcGExLjEtd2luYm9uZAorIAkJb3M9LXBy b2VsZgorIAkJOzsKKysJeGJveCkKKysJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworKwkJb3M9LW1p bmd3MzIKKysJCTs7CisgCXhwcyB8IHhwczEwMCkKKyAJCWJhc2ljX21hY2hpbmU9eHBzMTAwLWhv bmV5d2VsbAorIAkJOzsKK0BAIC0xMDU1LDYgKzExNTQsOSBAQCBjYXNlICRiYXNpY19tYWNoaW5l IGluCisgCXJvbXApCisgCQliYXNpY19tYWNoaW5lPXJvbXAtaWJtCisgCQk7OworKwltbWl4KQor KwkJYmFzaWNfbWFjaGluZT1tbWl4LWtudXRoCisrCQk7OworIAlyczYwMDApCisgCQliYXNpY19t YWNoaW5lPXJzNjAwMC1pYm0KKyAJCTs7CitAQCAtMTA3MSwxMyArMTE3MywxMCBAQCBjYXNlICRi YXNpY19tYWNoaW5lIGluCisgCXdlMzJrKQorIAkJYmFzaWNfbWFjaGluZT13ZTMyay1hdHQKKyAJ CTs7CistCXNoMyB8IHNoNCB8IHNoWzM0XWViIHwgc2hbMTIzNF1sZSB8IHNoWzIzXWVsZSkKKysJ c2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMzRdZWIgfCBzaFsxMjM0XWxlIHwgc2hbMjNdZWxlKQor IAkJYmFzaWNfbWFjaGluZT1zaC11bmtub3duCisgCQk7OworLQlzaDY0KQorLQkJYmFzaWNfbWFj aGluZT1zaDY0LXVua25vd24KKy0JCTs7CistCXNwYXJjIHwgc3BhcmN2OSB8IHNwYXJjdjliKQor KwlzcGFyYyB8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIgfCBzcGFyY3Y5dikKKyAJCWJh c2ljX21hY2hpbmU9c3BhcmMtc3VuCisgCQk7OworIAljeWRyYSkKK0BAIC0xMTUwLDIwICsxMjQ5 LDIzIEBAIGNhc2UgJG9zIGluCisgCSAgICAgIHwgLWFvcyogXAorIAkgICAgICB8IC1uaW5keSog fCAtdnhzaW0qIHwgLXZ4d29ya3MqIHwgLWVibW9uKiB8IC1obXMqIHwgLW12cyogXAorIAkgICAg ICB8IC1jbGl4KiB8IC1yaXNjb3MqIHwgLXVuaXBsdXMqIHwgLWlyaXMqIHwgLXJ0dSogfCAteGVu aXgqIFwKKy0JICAgICAgfCAtaGl1eCogfCAtMzg2YnNkKiB8IC1rbmV0YnNkKiB8IC1taXJic2Qq IHwgLW5ldGJzZCogfCAtb3BlbmJzZCogXAorKwkgICAgICB8IC1oaXV4KiB8IC0zODZic2QqIHwg LWtuZXRic2QqIHwgLW1pcmJzZCogfCAtbmV0YnNkKiBcCisrCSAgICAgIHwgLW9wZW5ic2QqIHwg LXNvbGlkYnNkKiBcCisgCSAgICAgIHwgLWVra29ic2QqIHwgLWtmcmVlYnNkKiB8IC1mcmVlYnNk KiB8IC1yaXNjaXgqIHwgLWx5bnhvcyogXAorIAkgICAgICB8IC1ib3N4KiB8IC1uZXh0c3RlcCog fCAtY3h1eCogfCAtYW91dCogfCAtZWxmKiB8IC1vYWJpKiBcCisgCSAgICAgIHwgLXB0eCogfCAt Y29mZiogfCAtZWNvZmYqIHwgLXdpbm50KiB8IC1kb21haW4qIHwgLXZzdGEqIFwKKyAJICAgICAg fCAtdWRpKiB8IC1lYWJpKiB8IC1saXRlcyogfCAtaWVlZSogfCAtZ28zMiogfCAtYXV4KiBcCisg CSAgICAgIHwgLWNob3J1c29zKiB8IC1jaG9ydXNyZGIqIFwKKyAJICAgICAgfCAtY3lnd2luKiB8 IC1wZSogfCAtcHNvcyogfCAtbW9zcyogfCAtcHJvZWxmKiB8IC1ydGVtcyogXAorLQkgICAgICB8 IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LXVjbGliYyogfCAtdXhwdiogfCAtYmVv cyogfCAtbXBlaXgqIHwgLXVkayogXAorKwkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUq IHwgLWxpbnV4LW5ld2xpYiogfCAtbGludXgtdWNsaWJjKiBcCisrCSAgICAgIHwgLXV4cHYqIHwg LWJlb3MqIHwgLW1wZWl4KiB8IC11ZGsqIFwKKyAJICAgICAgfCAtaW50ZXJpeCogfCAtdXdpbiog fCAtbWtzKiB8IC1yaGFwc29keSogfCAtZGFyd2luKiB8IC1vcGVuZWQqIFwKKyAJICAgICAgfCAt b3BlbnN0ZXAqIHwgLW9za2l0KiB8IC1jb25peCogfCAtcHczMiogfCAtbm9uc3RvcHV4KiBcCisg CSAgICAgIHwgLXN0b3JtLWNoYW9zKiB8IC10b3BzMTAqIHwgLXRlbmV4KiB8IC10b3BzMjAqIHwg LWl0cyogXAorIAkgICAgICB8IC1vczIqIHwgLXZvcyogfCAtcGFsbW9zKiB8IC11Y2xpbnV4KiB8 IC1udWNsZXVzKiBcCisgCSAgICAgIHwgLW1vcnBob3MqIHwgLXN1cGVydXgqIHwgLXJ0bWsqIHwg LXJ0bWstbm92YSogfCAtd2luZGlzcyogXAorLQkgICAgICB8IC1wb3dlcm1heCogfCAtZG5peCog fCAtbng2IHwgLW54NyB8IC1zZWkqIHwgLWRyYWdvbmZseSopCisrCSAgICAgIHwgLXBvd2VybWF4 KiB8IC1kbml4KiB8IC1ueDYgfCAtbng3IHwgLXNlaSogfCAtZHJhZ29uZmx5KiBcCisrCSAgICAg IHwgLXNreW9zKiB8IC1oYWlrdSogfCAtcmRvcyogfCAtdG9wcGVycyogfCAtZHJvcHMqKQorIAkj IFJlbWVtYmVyLCBlYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOICosIHRvIG1hdGNoIGEgdmVy c2lvbiBudW1iZXIuCisgCQk7OworIAktcW54KikKK0BAIC0xMTgxLDcgKzEyODMsNyBAQCBjYXNl ICRvcyBpbgorIAkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfG50b3xudG8tcW54fCdgCisgCQk7 OworIAktc2ltIHwgLWVzMTgwMCogfCAtaG1zKiB8IC14cmF5IHwgLW9zNjhrKiB8IC1ub25lKiB8 IC12ODhyKiBcCistCSAgICAgIHwgLXdpbmRvd3MqIHwgLW9zeCB8IC1hYnVnIHwgLW5ldHdhcmUq IHwgLW9zOSogfCAtYmVvcyogXAorKwkgICAgICB8IC13aW5kb3dzKiB8IC1vc3ggfCAtYWJ1ZyB8 IC1uZXR3YXJlKiB8IC1vczkqIHwgLWJlb3MqIHwgLWhhaWt1KiBcCisgCSAgICAgIHwgLW1hY29z KiB8IC1tcHcqIHwgLW1hZ2ljKiB8IC1tbWl4d2FyZSogfCAtbW9uOTYwKiB8IC1sbmV3cyopCisg CQk7OworIAktbWFjKikKK0BAIC0xMjkwLDYgKzEzOTIsOSBAQCBjYXNlICRvcyBpbgorIAkta2Fv cyopCisgCQlvcz0ta2FvcworIAkJOzsKKysJLXp2bW9lKQorKwkJb3M9LXp2bW9lCisrCQk7Owor IAktbm9uZSkKKyAJCTs7CisgCSopCitAQCAtMTMxMiw2ICsxNDE3LDEyIEBAIGVsc2UKKyAjIHN5 c3RlbSwgYW5kIHdlJ2xsIG5ldmVyIGdldCB0byB0aGlzIHBvaW50LgorIAorIGNhc2UgJGJhc2lj X21hY2hpbmUgaW4KKysgICAgICAgIHNjb3JlLSopCisrCQlvcz0tZWxmCisrCQk7OworKyAgICAg ICAgc3B1LSopCisrCQlvcz0tZWxmCisrCQk7OworIAkqLWFjb3JuKQorIAkJb3M9LXJpc2NpeDEu MgorIAkJOzsKK0BAIC0xMzIxLDkgKzE0MzIsOSBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGluCisg CWFybSotc2VtaSkKKyAJCW9zPS1hb3V0CisgCQk7OworLSAgICBjNHgtKiB8IHRpYzR4LSopCist ICAgICAgICBvcz0tY29mZgorLSAgICAgICAgOzsKKysgICAgICAgIGM0eC0qIHwgdGljNHgtKikK KysgICAgICAgIAlvcz0tY29mZgorKwkJOzsKKyAJIyBUaGlzIG11c3QgY29tZSBiZWZvcmUgdGhl ICotZGVjIGVudHJ5LgorIAlwZHAxMC0qKQorIAkJb3M9LXRvcHMyMAorQEAgLTEzNDksNiArMTQ2 MCw5IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KKyAJbTY4Ki1jaXNjbykKKyAJCW9zPS1hb3V0 CisgCQk7OworKyAgICAgICAgbWVwLSopCisrCQlvcz0tZWxmCisrCQk7OworIAltaXBzKi1jaXNj bykKKyAJCW9zPS1lbGYKKyAJCTs7CitAQCAtMTM2Nyw5ICsxNDgxLDE1IEBAIGNhc2UgJGJhc2lj X21hY2hpbmUgaW4KKyAJKi1iZSkKKyAJCW9zPS1iZW9zCisgCQk7OworKwkqLWhhaWt1KQorKwkJ b3M9LWhhaWt1CisrCQk7OworIAkqLWlibSkKKyAJCW9zPS1haXgKKyAJCTs7CisrICAgIAkqLWtu dXRoKQorKwkJb3M9LW1taXh3YXJlCisrCQk7OworIAkqLXdlYykKKyAJCW9zPS1wcm9lbGYKKyAJ CTs7CitAQCAtMTUzNSw3ICsxNjU1LDcgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorIGVzYWMK KyAKKyBlY2hvICRiYXNpY19tYWNoaW5lJG9zCistZXhpdCAwCisrZXhpdAorIAorICMgTG9jYWwg dmFyaWFibGVzOgorICMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0 YW1wKQorLS0tIGEvcmVhZGxpbmUvc3VwcG9ydC9ta2RpcnMKKysrKyBiL3JlYWRsaW5lL3N1cHBv cnQvbWtkaXJzCitAQCAtNywxOSArNywxOCBAQAorIAorICMgQ29weXJpZ2h0IChDKSAxOTk2LTIw MDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgIworLSMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0j IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CistIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAjCistIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCist IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCistIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKysjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICMKKy0jIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSMg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg MDIxMTEgVVNBLgorKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAKKyBmb3IgZGly CisgZG8KKy0tLSBhL3JlYWRsaW5lL3N1cHBvcnQvbWtkaXN0CisrKysgYi9yZWFkbGluZS9zdXBw b3J0L21rZGlzdAorQEAgLTEyLDE5ICsxMiwxOSBAQAorIAorICMgQ29weXJpZ2h0IChDKSAxOTk2 LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgIworLSMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK Ky0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CistIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKysj ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKysjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAjCistIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CistIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCistIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKysjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisgIworLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistIyBGb3VuZGF0aW9uLCBJbmMu LCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuCisgCisg U1JDRElSPXNyYworIFJPT1ROQU1FPWJhc2gKKy0tLSBhL3JlYWRsaW5lL3N1cHBvcnQvc2hsaWIt aW5zdGFsbAorKysrIGIvcmVhZGxpbmUvc3VwcG9ydC9zaGxpYi1pbnN0YWxsCitAQCAtMyw3ICsz LDcgQEAKKyAjIHNobGliLWluc3RhbGwgLSBpbnN0YWxsIGEgc2hhcmVkIGxpYnJhcnkgYW5kIGRv IGFueSBuZWNlc3NhcnkgaG9zdC1zcGVjaWZpYworICMJCSAgcG9zdC1pbnN0YWxsYXRpb24gY29u ZmlndXJhdGlvbiAobGlrZSBsZGNvbmZpZykKKyAjCistIyB1c2FnZTogc2hsaWItaW5zdGFsbCBb LURdIC1PIGhvc3Rfb3MgLWQgaW5zdGFsbGF0aW9uLWRpciBbLWIgYmluLWRpcl0gLWkgaW5zdGFs bC1wcm9nIFstVV0gbGlicmFyeQorKyMgdXNhZ2U6IHNobGliLWluc3RhbGwgWy1EXSAtTyBob3N0 X29zIFstViBob3N0X3ZlbmRvcl0gLWQgaW5zdGFsbGF0aW9uLWRpciBbLWIgYmluLWRpcl0gLWkg aW5zdGFsbC1wcm9nIFstVV0gbGlicmFyeQorICMKKyAjIENoZXQgUmFtZXkKKyAjIGNoZXRAcG8u Y3dydS5lZHUKK0BAIC0xNSwxMyArMTUsMTQgQEAgSU5TVEFMTERJUj0vdXNyL2xvY2FsL2xpYgor IExEQ09ORklHPWxkY29uZmlnCisgCisgUFJPR05BTUU9YGJhc2VuYW1lICQwYAorLVVTQUdFPSIk UFJPR05BTUUgWy1EXSAtTyBob3N0X29zIC1kIGluc3RhbGxhdGlvbi1kaXIgWy1iIGJpbi1kaXJd IC1pIGluc3RhbGwtcHJvZyBbLVVdIGxpYnJhcnkiCisrVVNBR0U9IiRQUk9HTkFNRSBbLURdIC1P IGhvc3Rfb3MgWy1WIGhvc3RfdmVuZG9yXSAtZCBpbnN0YWxsYXRpb24tZGlyIFstYiBiaW4tZGly XSAtaSBpbnN0YWxsLXByb2cgWy1VXSBsaWJyYXJ5IgorIAorICMgcHJvY2VzcyBvcHRpb25zCisg Cisgd2hpbGUgWyAkIyAtZ3QgMCBdOyBkbworIAljYXNlICIkMSIgaW4KKyAJLU8pCXNoaWZ0OyBo b3N0X29zPSIkMSI7IHNoaWZ0IDs7CisrCS1WKQlzaGlmdDsgaG9zdF92ZW5kb3I9IiQxIjsgc2hp ZnQgOzsKKyAJLWQpCXNoaWZ0OyBJTlNUQUxMRElSPSIkMSI7IHNoaWZ0IDs7CisgCS1iKQlzaGlm dDsgQklORElSPSIkMSIgOyBzaGlmdCA7OworIAktaSkJc2hpZnQ7IElOU1RBTExQUk9HPSIkMSIg OyBzaGlmdCA7OworQEAgLTY1LDE0ICs2NiwxNSBAQCBmaQorICMgcG9zdC1pbnN0YWxsL3VuaW5z dGFsbAorIAorICMgSFAtVVggYW5kIERhcndpbi9NYWNPUyBYIHJlcXVpcmUgdGhhdCBhIHNoYXJl ZCBsaWJyYXJ5IGhhdmUgZXhlY3V0ZSBwZXJtaXNzaW9uCisrIyBMaW51eCBkb2VzLCB0b28sIGFu ZCBsZGQgd2FybnMgYWJvdXQgaXQKKyAjIEN5Z3dpbiBpbnN0YWxscyBib3RoIGEgZGxsICh3aGlj aCBtdXN0IGdvIGluICRCSU5ESVIpIGFuZCBhbiBpbXBsaWNpdAorICMgbGluayBsaWJyYXJ5IChp biAkbGliZGlyKQorIGNhc2UgIiRob3N0X29zIiBpbgorLWhwdXgqfGRhcndpbip8bWFjb3N4KikK KytocHV4KnxkYXJ3aW4qfG1hY29zeCp8bGludXgqKQorIAlpZiBbIC16ICIkdW5pbnN0YWxsIiBd OyB0aGVuCisgCQljaG1vZCA1NTUgJHtJTlNUQUxMRElSfS8ke0xJQk5BTUV9CisgCWZpIDs7Cist Y3lnd2luKikKKytjeWd3aW4qfG1pbmd3KikKKyAJSU1QTElCTkFNRT1gZWNobyAke0xJQk5BTUV9 IFwKKyAJCXwgc2VkIC1lICdzLF5jeWcsbGliLCcgLWUgJ3MsWzAtOV0qLmRsbCQsLmRsbC5hLCdg CisgCWlmIFsgLXogIiR1bmluc3RhbGwiIF07IHRoZW4KK0BAIC0xMTQsOCArMTE2LDggQEAgSU5T VEFMTF9MSU5LMj0nJHtlY2hvfSBjZCAkSU5TVEFMTERJUiAmJiAke2VjaG99ICR7TE59ICRMSUJO QU1FICRMSU5LMicKKyAjCisgIyBDcmVhdGUgc3ltbGlua3MgdG8gdGhlIGluc3RhbGxlZCBsaWJy YXJ5LiAgVGhpcyBzZWN0aW9uIGlzIGluY29tcGxldGUuCisgIworLWNhc2UgIiRob3N0X29zIiBp bgorLSpsaW51eCopCisrY2FzZSAiJGhvc3Rfb3MtJGhvc3RfdmVuZG9yIiBpbgorKypsaW51eCp8 ZnJlZWJzZCotZ2VudG9vKQorIAkjIGxpYm5hbWUuc28uTSAtPiBsaWJuYW1lLnNvLk0uTgorIAkk e2VjaG99ICR7Uk19ICR7SU5TVEFMTERJUn0vJExJTksyCisgCWlmIFsgLXogIiR1bmluc3RhbGwi IF07IHRoZW4KK0BAIC0xMjksNyArMTMxLDcgQEAgY2FzZSAiJGhvc3Rfb3MiIGluCisgCWZpCisg CTs7CisgCistYnNkaTQqfCpnbnUqfGRhcndpbip8bWFjb3N4KnxrKmJzZCotZ251KQorK2JzZGk0 KnwqZ251KnxkYXJ3aW4qfG1hY29zeCp8bmV0YnNkKikKKyAJIyBsaWJuYW1lLnNvLk0gLT4gbGli bmFtZS5zby5NLk4KKyAJJHtlY2hvfSAke1JNfSAke0lOU1RBTExESVJ9LyRMSU5LMgorIAlpZiBb IC16ICIkdW5pbnN0YWxsIiBdOyB0aGVuCitAQCAtMTQzLDcgKzE0NSw3IEBAIGJzZGk0KnwqZ251 KnxkYXJ3aW4qfG1hY29zeCp8aypic2QqLWdudSkKKyAJZmkKKyAJOzsKKyAKKy1zb2xhcmlzMip8 YWl4NC5bMi05XSp8b3NmKnxpcml4WzU2XSp8c3lzdls0NV0qfGRndXgqKQorK3NvbGFyaXMyKnxh aXg0LlsyLTldKnxhaXhbNS05XSp8b3NmKnxpcml4WzU2XSp8c3lzdls0NV0qfGRndXgqfGludGVy aXgqKQorIAkjIGxpYm5hbWUuc28gLT4gbGlibmFtZS5zby5NCisgCSR7ZWNob30gJHtSTX0gJHtJ TlNUQUxMRElSfS8kTElOSzEKKyAJaWYgWyAteiAiJHVuaW5zdGFsbCIgXTsgdGhlbgorQEAgLTE1 Myw3ICsxNTUsNyBAQCBzb2xhcmlzMip8YWl4NC5bMi05XSp8b3NmKnxpcml4WzU2XSp8c3lzdls0 NV0qfGRndXgqKQorIAorIAorICMgRnJlZUJTRCAzLnggYW5kIGFib3ZlIGNhbiBoYXZlIGVpdGhl ciBhLm91dCBvciBFTEYgc2hhcmVkIGxpYnJhcmllcworLWZyZWVic2RbMy05XSp8ZnJlZWJzZGVs ZlszLTldKnxmcmVlYnNkYW91dFszLTldKikKKytmcmVlYnNkMyp8ZnJlZWJzZGFvdXQqKQorIAlp ZiBbIC14IC91c3IvYmluL29iamZvcm1hdCBdICYmIFsgImAvdXNyL2Jpbi9vYmpmb3JtYXRgIiA9 ICJlbGYiIF07IHRoZW4KKyAJCSMgbGlibmFtZS5zbyAtPiBsaWJuYW1lLnNvLk0KKyAJCSR7ZWNo b30gJHtSTX0gJHtJTlNUQUxMRElSfS8kTElOSzEKK0BAIC0xNzUsNiArMTc3LDE0IEBAIGZyZWVi c2RbMy05XSp8ZnJlZWJzZGVsZlszLTldKnxmcmVlYnNkYW91dFszLTldKikKKyAJZmkKKyAJOzsK KyAKKytmcmVlYnNkWzQtOV0qfGZyZWVic2RlbGYqfGRyYWdvbmZseSopCisrCSMgbGlibmFtZS5z byAtPiBsaWJuYW1lLnNvLk0KKysJJHtlY2hvfSAke1JNfSAke0lOU1RBTExESVJ9LyRMSU5LMQor KwlpZiBbIC16ICIkdW5pbnN0YWxsIiBdOyB0aGVuCisrCQlldmFsICRJTlNUQUxMX0xJTksxCisr CWZpCisrCTs7CisrCQorIGhwdXgxKikKKyAJIyBsaWJuYW1lLnNsIC0+IGxpYm5hbWUuTQorIAkk e2VjaG99ICR7Uk19ICR7SU5TVEFMTERJUn0vJExJTksxLnNsCitAQCAtMTgzLDcgKzE5Myw3IEBA IGhwdXgxKikKKyAJZmkKKyAJOzsKKyAKKy1jeWd3aW4qKQorK2N5Z3dpbip8bWluZ3cqKQorIAkj IExpbmtzIHRvIC5kbGxzIGRvbid0IHdvcmsuICBIZW5jZSBzaG9iai1jb25mIHVzZWQgRExMVkVS U0lPTi5kbGwKKyAJIyBpbnN0ZWFkIG9mIHNvLlNITElCX01BSk9SLlNITElCX01JTk9SLiAgVGhl IHBvc3RpbnN0YWxsIGFib3ZlCisgCSMgdG9vayBjYXJlIG9mIGV2ZXJ5dGhpbmcgZWxzZS4KK29s ZCBtb2RlIDEwMDc1NQorbmV3IG1vZGUgMTAwNjQ0CistLS0gYS9yZWFkbGluZS9zdXBwb3J0L3No b2JqLWNvbmYKKysrKyBiL3JlYWRsaW5lL3N1cHBvcnQvc2hvYmotY29uZgorQEAgLTEwLDIxICsx MCwyMyBAQAorICMgQ2hldCBSYW1leQorICMgY2hldEBwby5jd3J1LmVkdQorIAorLSMgQ29weXJp Z2h0IChDKSAxOTk2LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgIENv cHlyaWdodCAoQykgMTk5Ni0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICMK Ky0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CistIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSMgYW55IGxh dGVyIHZlcnNpb24uCisrIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBCYXNoLCB0aGUgQm91 cm5lIEFnYWluIFNIZWxsLgorICMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0jIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0jIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIyAgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisrIyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyMgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KyMKKysjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysjICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgIworLSMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0j IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlCistIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMSBVU0EuCisgCisgIworICMgZGVmYXVsdHMKK0BAIC02Miw3ICs2NCw3IEBA IHdoaWxlIFsgJCMgLWd0IDAgXTsgZG8KKyAJZXNhYworIGRvbmUKKyAKKy1jYXNlICIke2hvc3Rf b3N9LSR7U0hPQkpfQ0N9IiBpbgorK2Nhc2UgIiR7aG9zdF9vc30tJHtTSE9CSl9DQ30tJHtob3N0 X3ZlbmRvcn0iIGluCisgc3Vub3M0Ki0qZ2NjKikKKyAJU0hPQkpfQ0ZMQUdTPS1mcGljCisgCVNI T0JKX0xEPS91c3IvYmluL2xkCitAQCAtODAsMTUgKzgyLDE3IEBAIHN1bm9zNCopCisgCTs7Cisg Cisgc3Vub3M1Ki0qZ2NjKnxzb2xhcmlzMiotKmdjYyopCistCVNIT0JKX0NGTEFHUz0tZnBpYwor IAlTSE9CSl9MRD0nJHtDQ30nCisgCWxkX3VzZWQ9YGdjYyAtcHJpbnQtcHJvZy1uYW1lPWxkYAor IAlpZiAke2xkX3VzZWR9IC1WIDI+JjEgfCBncmVwIEdOVSA+L2Rldi9udWxsIDI+JjE7IHRoZW4K KyAJCSMgVGhpcyBsaW5lIHdvcmtzIGZvciB0aGUgR05VIGxkCisgCQlTSE9CSl9MREZMQUdTPSct c2hhcmVkIC1XbCwtaCwkQCcKKysJCSMgaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2JpbnV0aWxz LzIwMDEtMDgvbXNnMDAzNjEuaHRtbAorKwkJU0hPQkpfQ0ZMQUdTPS1mUElDCisgCWVsc2UKKyAJ CSMgVGhpcyBsaW5lIHdvcmtzIGZvciB0aGUgU29sYXJpcyBsaW5rZXIgaW4gL3Vzci9jY3MvYmlu L2xkCisgCQlTSE9CSl9MREZMQUdTPSctc2hhcmVkIC1XbCwtaSAtV2wsLWgsJEAnCisrCQlTSE9C Sl9DRkxBR1M9LWZwaWMKKyAJZmkKKyAKKyAjCVNITElCX1hMREZMQUdTPSctUiAkKGxpYmRpcikn CitAQCAtMTA0LDggKzEwOCw4IEBAIHN1bm9zNSp8c29sYXJpczIqKQorIAlTSExJQl9MSUJWRVJT SU9OPSckKFNITElCX0xJQlNVRkYpLiQoU0hMSUJfTUFKT1IpJworIAk7OworIAorLSMgQWxsIHZl cnNpb25zIG9mIExpbnV4IG9yIHRoZSBzZW1pLW15dGhpY2FsIEdOVSBIdXJkLgorLWxpbnV4Ki0q fGdudSotKnxrKmJzZCotZ251LSopCisrIyBBbGwgdmVyc2lvbnMgb2YgTGludXggKGluY2x1ZGlu ZyBHZW50b28vRnJlZUJTRCkgb3IgdGhlIHNlbWktbXl0aGljYWwgR05VIEh1cmQuCisrbGludXgq LSp8Z251Ki0qfGsqYnNkKi1nbnUtKnxmcmVlYnNkKi1nZW50b28pCisgCVNIT0JKX0NGTEFHUz0t ZlBJQworIAlTSE9CSl9MRD0nJHtDQ30nCisgCVNIT0JKX0xERkxBR1M9Jy1zaGFyZWQgLVdsLC1z b25hbWUsJEAnCitAQCAtMTE0LDcgKzExOCw3IEBAIGxpbnV4Ki0qfGdudSotKnxrKmJzZCotZ251 LSopCisgCVNITElCX0xJQlZFUlNJT049JyQoU0hMSUJfTElCU1VGRikuJChTSExJQl9NQUpPUikk KFNITElCX01JTk9SKScKKyAJOzsKKyAKKy1mcmVlYnNkMiogfCBuZXRic2QqKQorK2ZyZWVic2Qy KikKKyAJU0hPQkpfQ0ZMQUdTPS1mcGljCisgCVNIT0JKX0xEPWxkCisgCVNIT0JKX0xERkxBR1M9 Jy14IC1Cc2hhcmVhYmxlJworQEAgLTEyNCw4ICsxMjgsOCBAQCBmcmVlYnNkMiogfCBuZXRic2Qq KQorIAk7OworIAorICMgRnJlZUJTRC0zLnggRUxGCistZnJlZWJzZFszLTldKnxmcmVlYnNkZWxm WzMtOV0qfGZyZWVic2Rhb3V0WzMtOV0qfGRyYWdvbmZseSopCistCVNIT0JKX0NGTEFHUz0tZnBp YworK2ZyZWVic2QzKnxmcmVlYnNkYW91dCopCisrCVNIT0JKX0NGTEFHUz0tZlBJQworIAlTSE9C Sl9MRD0nJHtDQ30nCisgCisgCWlmIFsgLXggL3Vzci9iaW4vb2JqZm9ybWF0IF0gJiYgWyAiYC91 c3IvYmluL29iamZvcm1hdGAiID0gImVsZiIgXTsgdGhlbgorQEAgLTE0MSw3ICsxNDUsMzUgQEAg ZnJlZWJzZFszLTldKnxmcmVlYnNkZWxmWzMtOV0qfGZyZWVic2Rhb3V0WzMtOV0qfGRyYWdvbmZs eSopCisgCWZpCisgCTs7CisgCisrIyBGcmVlQlNELTQueCBhbmQgbGF0ZXIgaGF2ZSBvbmx5IEVM RgorK2ZyZWVic2RbNC05XSp8ZnJlZWJzZGVsZip8ZHJhZ29uZmx5KikKKysJU0hPQkpfQ0ZMQUdT PS1mUElDCisrCVNIT0JKX0xEPScke0NDfScKKysKKysJU0hPQkpfTERGTEFHUz0nLXNoYXJlZCAt V2wsLXNvbmFtZSwkQCcKKysJU0hMSUJfWExERkxBR1M9Jy1XbCwtcnBhdGgsJChsaWJkaXIpJwor KworKwlTSExJQl9MSUJWRVJTSU9OPSckKFNITElCX0xJQlNVRkYpLiQoU0hMSUJfTUFKT1IpJwor Kwk7OworKworICMgRGFyd2luL01hY09TIFgKKytkYXJ3aW5bODldKnxkYXJ3aW4xMCopCisrCVNI T0JKX1NUQVRVUz1zdXBwb3J0ZWQKKysJU0hMSUJfU1RBVFVTPXN1cHBvcnRlZAorKwkKKysJU0hP QkpfQ0ZMQUdTPSctZm5vLWNvbW1vbicKKysKKysJU0hPQkpfTEQ9J01BQ09TWF9ERVBMT1lNRU5U X1RBUkdFVD0xMC4zICR7Q0N9JworKworKwlTSExJQl9MSUJWRVJTSU9OPSckKFNITElCX01BSk9S KSQoU0hMSUJfTUlOT1IpLiQoU0hMSUJfTElCU1VGRiknCisrCVNITElCX0xJQlNVRkY9J2R5bGli JworKworKwlTSE9CSl9MREZMQUdTPSctZHluYW1pY2xpYiAtZHluYW1pYyAtdW5kZWZpbmVkIGR5 bmFtaWNfbG9va3VwIC1hcmNoX29ubHkgYC91c3IvYmluL2FyY2hgJworKwlTSExJQl9YTERGTEFH Uz0nLWR5bmFtaWNsaWIgLWFyY2hfb25seSBgL3Vzci9iaW4vYXJjaGAgLWluc3RhbGxfbmFtZSAk KGxpYmRpcikvJEAgLWN1cnJlbnRfdmVyc2lvbiAkKFNITElCX01BSk9SKSQoU0hMSUJfTUlOT1Ip IC1jb21wYXRpYmlsaXR5X3ZlcnNpb24gJChTSExJQl9NQUpPUikgLXYnCisrCisrCVNITElCX0xJ QlM9Jy1sbmN1cnNlcycJIyBzZWUgaWYgLWxjdXJzZXMgd29ya3Mgb24gTWFjT1MgWCAxMC4xIAor Kwk7OworKworIGRhcndpbip8bWFjb3N4KikKKyAJU0hPQkpfU1RBVFVTPXVuc3VwcG9ydGVkCisg CVNITElCX1NUQVRVUz1zdXBwb3J0ZWQKK0BAIC0xNTQsNyArMTg2LDcgQEAgZGFyd2luKnxtYWNv c3gqKQorIAlTSExJQl9MSUJTVUZGPSdkeWxpYicKKyAKKyAJY2FzZSAiJHtob3N0X29zfSIgaW4K Ky0JZGFyd2luWzc4XSopCVNIT0JKX0xERkxBR1M9JycKKysJZGFyd2luWzc4OV0qfGRhcndpbjEw KikJU0hPQkpfTERGTEFHUz0nJworIAkJCVNITElCX1hMREZMQUdTPSctZHluYW1pY2xpYiAtYXJj aF9vbmx5IGAvdXNyL2Jpbi9hcmNoYCAtaW5zdGFsbF9uYW1lICQobGliZGlyKS8kQCAtY3VycmVu dF92ZXJzaW9uICQoU0hMSUJfTUFKT1IpJChTSExJQl9NSU5PUikgLWNvbXBhdGliaWxpdHlfdmVy c2lvbiAkKFNITElCX01BSk9SKSAtdicKKyAJCQk7OworIAkqKQkJU0hPQkpfTERGTEFHUz0nLWR5 bmFtaWMnCitAQCAtMTY1LDcgKzE5Nyw3IEBAIGRhcndpbip8bWFjb3N4KikKKyAJU0hMSUJfTElC Uz0nLWxuY3Vyc2VzJwkjIHNlZSBpZiAtbGN1cnNlcyB3b3JrcyBvbiBNYWNPUyBYIDEwLjEgCisg CTs7CisgCistb3BlbmJzZCopCisrb3BlbmJzZCp8bmV0YnNkKikKKyAJU0hPQkpfQ0ZMQUdTPS1m UElDCisgCVNIT0JKX0xEPScke0NDfScKKyAJU0hPQkpfTERGTEFHUz0nLXNoYXJlZCcKK0BAIC0y MzAsNyArMjYyLDcgQEAgb3NmKikKKyAJU0hMSUJfTElCVkVSU0lPTj0nJChTSExJQl9MSUJTVUZG KS4kKFNITElCX01BSk9SKScKKyAJOzsKKyAKKy1haXg0LlsyLTldKi0qZ2NjKikJCSMgbGlnaHRs eSB0ZXN0ZWQgYnkgamlrQGNpc2NvLmNvbQorK2FpeDQuWzItOV0qLSpnY2MqfGFpeFs1LTldLiot KmdjYyopCQkjIGxpZ2h0bHkgdGVzdGVkIGJ5IGppa0BjaXNjby5jb20KKyAJU0hPQkpfQ0ZMQUdT PS1mcGljCisgCVNIT0JKX0xEPSdsZCcKKyAJU0hPQkpfTERGTEFHUz0nLWJkeW5hbWljIC1ibm9l bnRyeSAtYmV4cGFsbCcKK0BAIC0yNDEsNyArMjczLDcgQEAgYWl4NC5bMi05XSotKmdjYyopCQkj IGxpZ2h0bHkgdGVzdGVkIGJ5IGppa0BjaXNjby5jb20KKyAJU0hMSUJfTElCVkVSU0lPTj0nJChT SExJQl9MSUJTVUZGKS4kKFNITElCX01BSk9SKScKKyAJOzsKKyAKKy1haXg0LlsyLTldKikKKyth aXg0LlsyLTldKnxhaXhbNS05XS4qKQorIAlTSE9CSl9DRkxBR1M9LUsKKyAJU0hPQkpfTEQ9J2xk JworIAlTSE9CSl9MREZMQUdTPSctYmR5bmFtaWMgLWJub2VudHJ5IC1iZXhwYWxsJworQEAgLTMx Miw3ICszNDQsNyBAQCBocHV4MTAqLSpnY2MqKQorIAlTSE9CSl9MRD0nJHtDQ30nCisgCSMgaWYg eW91IGhhdmUgcHJvYmxlbXMgbGlua2luZyBoZXJlLCBtb3ZpbmcgdGhlIGAtV2wsK2gsJEAnIGZy b20KKyAJIyBTSExJQl9YTERGTEFHUyB0byBTSE9CSl9MREZMQUdTIGhhcyBiZWVuIHJlcG9ydGVk IHRvIHdvcmsKKy0JU0hPQkpfTERGTEFHUz0nLXNoYXJlZCAtV2wsLWIgLVdsLCtzJworKwlTSE9C Sl9MREZMQUdTPSctc2hhcmVkIC1mcGljIC1XbCwtYiAtV2wsK3MnCisgCisgCVNITElCX1hMREZM QUdTPSctV2wsK2gsJEAgLVdsLCtiLCQobGliZGlyKScKKyAJU0hMSUJfTElCU1VGRj0nc2wnCitA QCAtNDcyLDIwICs1MDQsMzcgQEAgbXNkb3MqKQorIAorIGN5Z3dpbiopCisgCVNIT0JKX0xEPSck KENDKScKKy0gICAgICAgIFNIT0JKX0xERkxBR1M9Jy1zaGFyZWQgLVdsLC0tZW5hYmxlLWF1dG8t aW1wb3J0IC1XbCwtLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVdsLC0tZXhwb3J0LWFsbCAtV2ws LS1vdXQtaW1wbGliPSQoQCkuYScKKy0gICAgICAgIFNITElCX0xJQlBSRUY9J2N5ZycKKy0gICAg ICAgIFNITElCX0xJQlNVRkY9J2RsbCcKKy0gICAgICAgIFNITElCX0xJQlZFUlNJT049JyQoU0hM SUJfRExMVkVSU0lPTikuJChTSExJQl9MSUJTVUZGKScKKy0gICAgICAgIFNITElCX0xJQlM9JyQo VEVSTUNBUF9MSUIpJworKwlTSE9CSl9MREZMQUdTPSctc2hhcmVkIC1XbCwtLWVuYWJsZS1hdXRv LWltcG9ydCAtV2wsLS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1XbCwtLWV4cG9ydC1hbGwgLVds LC0tb3V0LWltcGxpYj0kKEApLmEnCisrCVNITElCX0xJQlBSRUY9J2N5ZycKKysJU0hMSUJfTElC U1VGRj0nZGxsJworKwlTSExJQl9MSUJWRVJTSU9OPSckKFNITElCX0RMTFZFUlNJT04pLiQoU0hM SUJfTElCU1VGRiknCisrCVNITElCX0xJQlM9JyQoVEVSTUNBUF9MSUIpJworIAorIAlTSExJQl9E T1Q9CistICAgICAgICAjIEZvciBvZmZpY2lhbCBjeWd3aW4gcmVsZWFzZXMsIERMTFZFUlNJT04g d2lsbCBiZSBkZWZpbmVkIGluIHRoZQorLSAgICAgICAgIyBlbnZpcm9ubWVudCBvZiBjb25maWd1 cmUsIGFuZCB3aWxsIGJlIGluY3JlbWVudGVkIGFueSB0aW1lIHRoZSBBUEkKKy0gICAgICAgICMg Y2hhbmdlcyBpbiBhIG5vbi1iYWNrd2FyZHMgY29tcGF0aWJsZSBtYW5uZXIuICBPdGhlcndpc2Us IGl0IGlzIGp1c3QKKy0gICAgICAgICMgU0hMSUJfTUFKT1IuCistICAgICAgICBpZiBbIC1uICIk RExMVkVSU0lPTiIgXSA7IHRoZW4KKysJIyBGb3Igb2ZmaWNpYWwgY3lnd2luIHJlbGVhc2VzLCBE TExWRVJTSU9OIHdpbGwgYmUgZGVmaW5lZCBpbiB0aGUKKysJIyBlbnZpcm9ubWVudCBvZiBjb25m aWd1cmUsIGFuZCB3aWxsIGJlIGluY3JlbWVudGVkIGFueSB0aW1lIHRoZSBBUEkKKysJIyBjaGFu Z2VzIGluIGEgbm9uLWJhY2t3YXJkcyBjb21wYXRpYmxlIG1hbm5lci4gIE90aGVyd2lzZSwgaXQg aXMganVzdAorKwkjIFNITElCX01BSk9SLgorKwlpZiBbIC1uICIkRExMVkVSU0lPTiIgXSA7IHRo ZW4KKyAJCVNITElCX0RMTFZFUlNJT049IiRETExWRVJTSU9OIgorLSAgICAgICAgZmkKKysJZmkK KysJOzsKKysKKyttaW5ndyopCisrCVNIT0JKX0xEPSckKENDKScKKysJU0hPQkpfTERGTEFHUz0n LXNoYXJlZCAtV2wsLS1lbmFibGUtYXV0by1pbXBvcnQgLVdsLC0tZW5hYmxlLWF1dG8taW1hZ2Ut YmFzZSAtV2wsLS1leHBvcnQtYWxsIC1XbCwtLW91dC1pbXBsaWI9JChAKS5hJworKwlTSExJQl9M SUJTVUZGPSdkbGwnCisrCVNITElCX0xJQlZFUlNJT049JyQoU0hMSUJfRExMVkVSU0lPTikuJChT SExJQl9MSUJTVUZGKScKKysJU0hMSUJfTElCUz0nJChURVJNQ0FQX0xJQiknCisrCisrCVNITElC X0RPVD0KKysJIyBGb3Igb2ZmaWNpYWwgY3lnd2luIHJlbGVhc2VzLCBETExWRVJTSU9OIHdpbGwg YmUgZGVmaW5lZCBpbiB0aGUKKysJIyBlbnZpcm9ubWVudCBvZiBjb25maWd1cmUsIGFuZCB3aWxs IGJlIGluY3JlbWVudGVkIGFueSB0aW1lIHRoZSBBUEkKKysJIyBjaGFuZ2VzIGluIGEgbm9uLWJh Y2t3YXJkcyBjb21wYXRpYmxlIG1hbm5lci4gIE90aGVyd2lzZSwgaXQgaXMganVzdAorKwkjIFNI TElCX01BSk9SLgorKwlpZiBbIC1uICIkRExMVkVSU0lPTiIgXSA7IHRoZW4KKysJCVNITElCX0RM TFZFUlNJT049IiRETExWRVJTSU9OIgorKwlmaQorIAk7OworIAorICMKKy0tLSBhL3JlYWRsaW5l L3N1cHBvcnQvd2N3aWR0aC5jCisrKysgYi9yZWFkbGluZS9zdXBwb3J0L3djd2lkdGguYworQEAg LTEsMjEgKzEsNzMgQEAKKyAvKgorLSAqIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2Ygd2N3 aWR0aCgpIGFuZCB3Y3N3aWR0aCgpIGFzIGRlZmluZWQgaW4KKy0gKiAiVGhlIFNpbmdsZSBVTklY IFNwZWNpZmljYXRpb24sIFZlcnNpb24gMiwgVGhlIE9wZW4gR3JvdXAsIDE5OTciCistICogPGh0 dHA6Ly93d3cuVU5JWC1zeXN0ZW1zLm9yZy9vbmxpbmUuaHRtbD4KKysgKiBUaGlzIGlzIGFuIGlt cGxlbWVudGF0aW9uIG9mIHdjd2lkdGgoKSBhbmQgd2Nzd2lkdGgoKSAoZGVmaW5lZCBpbgorKyAq IElFRUUgU3RkIDEwMDIuMS0yMDAxKSBmb3IgVW5pY29kZS4KKyAgKgorLSAqIE1hcmt1cyBLdWhu IC0tIDIwMDEtMDktMDggLS0gcHVibGljIGRvbWFpbgorKyAqIGh0dHA6Ly93d3cub3Blbmdyb3Vw Lm9yZy9vbmxpbmVwdWJzLzAwNzkwNDk3NS9mdW5jdGlvbnMvd2N3aWR0aC5odG1sCisrICogaHR0 cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA3OTA0OTc1L2Z1bmN0aW9ucy93Y3N3 aWR0aC5odG1sCisrICoKKysgKiBJbiBmaXhlZC13aWR0aCBvdXRwdXQgZGV2aWNlcywgTGF0aW4g Y2hhcmFjdGVycyBhbGwgb2NjdXB5IGEgc2luZ2xlCisrICogImNlbGwiIHBvc2l0aW9uIG9mIGVx dWFsIHdpZHRoLCB3aGVyZWFzIGlkZW9ncmFwaGljIENKSyBjaGFyYWN0ZXJzCisrICogb2NjdXB5 IHR3byBzdWNoIGNlbGxzLiBJbnRlcm9wZXJhYmlsaXR5IGJldHdlZW4gdGVybWluYWwtbGluZQor KyAqIGFwcGxpY2F0aW9ucyBhbmQgKHRlbGV0eXBlLXN0eWxlKSBjaGFyYWN0ZXIgdGVybWluYWxz IHVzaW5nIHRoZQorKyAqIFVURi04IGVuY29kaW5nIHJlcXVpcmVzIGFncmVlbWVudCBvbiB3aGlj aCBjaGFyYWN0ZXIgc2hvdWxkIGFkdmFuY2UKKysgKiB0aGUgY3Vyc29yIGJ5IGhvdyBtYW55IGNl bGwgcG9zaXRpb25zLiBObyBlc3RhYmxpc2hlZCBmb3JtYWwKKysgKiBzdGFuZGFyZHMgZXhpc3Qg YXQgcHJlc2VudCBvbiB3aGljaCBVbmljb2RlIGNoYXJhY3RlciBzaGFsbCBvY2N1cHkKKysgKiBo b3cgbWFueSBjZWxsIHBvc2l0aW9ucyBvbiBjaGFyYWN0ZXIgdGVybWluYWxzLiBUaGVzZSByb3V0 aW5lcyBhcmUKKysgKiBhIGZpcnN0IGF0dGVtcHQgb2YgZGVmaW5pbmcgc3VjaCBiZWhhdmlvciBi YXNlZCBvbiBzaW1wbGUgcnVsZXMKKysgKiBhcHBsaWVkIHRvIGRhdGEgcHJvdmlkZWQgYnkgdGhl IFVuaWNvZGUgQ29uc29ydGl1bS4KKysgKgorKyAqIEZvciBzb21lIGdyYXBoaWNhbCBjaGFyYWN0 ZXJzLCB0aGUgVW5pY29kZSBzdGFuZGFyZCBleHBsaWNpdGx5CisrICogZGVmaW5lcyBhIGNoYXJh Y3Rlci1jZWxsIHdpZHRoIHZpYSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgRWFzdCBBc2lhbgorKyAq IEZ1bGxXaWR0aCAoRiksIFdpZGUgKFcpLCBIYWxmLXdpZHRoIChIKSwgYW5kIE5hcnJvdyAoTmEp IGNsYXNzZXMuCisrICogSW4gYWxsIHRoZXNlIGNhc2VzLCB0aGVyZSBpcyBubyBhbWJpZ3VpdHkg YWJvdXQgd2hpY2ggd2lkdGggYQorKyAqIHRlcm1pbmFsIHNoYWxsIHVzZS4gRm9yIGNoYXJhY3Rl cnMgaW4gdGhlIEVhc3QgQXNpYW4gQW1iaWd1b3VzIChBKQorKyAqIGNsYXNzLCB0aGUgd2lkdGgg Y2hvaWNlIGRlcGVuZHMgcHVyZWx5IG9uIGEgcHJlZmVyZW5jZSBvZiBiYWNrd2FyZAorKyAqIGNv bXBhdGliaWxpdHkgd2l0aCBlaXRoZXIgaGlzdG9yaWMgQ0pLIG9yIFdlc3Rlcm4gcHJhY3RpY2Uu CisrICogQ2hvb3Npbmcgc2luZ2xlLXdpZHRoIGZvciB0aGVzZSBjaGFyYWN0ZXJzIGlzIGVhc3kg dG8ganVzdGlmeSBhcworKyAqIHRoZSBhcHByb3ByaWF0ZSBsb25nLXRlcm0gc29sdXRpb24sIGFz IHRoZSBDSksgcHJhY3RpY2Ugb2YKKysgKiBkaXNwbGF5aW5nIHRoZXNlIGNoYXJhY3RlcnMgYXMg ZG91YmxlLXdpZHRoIGNvbWVzIGZyb20gaGlzdG9yaWMKKysgKiBpbXBsZW1lbnRhdGlvbiBzaW1w bGljaXR5ICg4LWJpdCBlbmNvZGVkIGNoYXJhY3RlcnMgd2VyZSBkaXNwbGF5ZWQKKysgKiBzaW5n bGUtd2lkdGggYW5kIDE2LWJpdCBvbmVzIGRvdWJsZS13aWR0aCwgZXZlbiBmb3IgR3JlZWssCisr ICogQ3lyaWxsaWMsIGV0Yy4pIGFuZCBub3QgYW55IHR5cG9ncmFwaGljIGNvbnNpZGVyYXRpb25z LgorKyAqCisrICogTXVjaCBsZXNzIGNsZWFyIGlzIHRoZSBjaG9pY2Ugb2Ygd2lkdGggZm9yIHRo ZSBOb3QgRWFzdCBBc2lhbgorKyAqIChOZXV0cmFsKSBjbGFzcy4gRXhpc3RpbmcgcHJhY3RpY2Ug ZG9lcyBub3QgZGljdGF0ZSBhIHdpZHRoIGZvciBhbnkKKysgKiBvZiB0aGVzZSBjaGFyYWN0ZXJz LiBJdCB3b3VsZCBuZXZlcnRoZWxlc3MgbWFrZSBzZW5zZQorKyAqIHR5cG9ncmFwaGljYWxseSB0 byBhbGxvY2F0ZSB0d28gY2hhcmFjdGVyIGNlbGxzIHRvIGNoYXJhY3RlcnMgc3VjaAorKyAqIGFz IGZvciBpbnN0YW5jZSBFTSBTUEFDRSBvciBWT0xVTUUgSU5URUdSQUwsIHdoaWNoIGNhbm5vdCBi ZQorKyAqIHJlcHJlc2VudGVkIGFkZXF1YXRlbHkgd2l0aCBhIHNpbmdsZS13aWR0aCBnbHlwaC4g VGhlIGZvbGxvd2luZworKyAqIHJvdXRpbmVzIGF0IHByZXNlbnQgbWVyZWx5IGFzc2lnbiBhIHNp bmdsZS1jZWxsIHdpZHRoIHRvIGFsbAorKyAqIG5ldXRyYWwgY2hhcmFjdGVycywgaW4gdGhlIGlu dGVyZXN0IG9mIHNpbXBsaWNpdHkuIFRoaXMgaXMgbm90CisrICogZW50aXJlbHkgc2F0aXNmYWN0 b3J5IGFuZCBzaG91bGQgYmUgcmVjb25zaWRlcmVkIGJlZm9yZQorKyAqIGVzdGFibGlzaGluZyBh IGZvcm1hbCBzdGFuZGFyZCBpbiB0aGlzIGFyZWEuIEF0IHRoZSBtb21lbnQsIHRoZQorKyAqIGRl Y2lzaW9uIHdoaWNoIE5vdCBFYXN0IEFzaWFuIChOZXV0cmFsKSBjaGFyYWN0ZXJzIHNob3VsZCBi ZQorKyAqIHJlcHJlc2VudGVkIGJ5IGRvdWJsZS13aWR0aCBnbHlwaHMgY2Fubm90IHlldCBiZSBh bnN3ZXJlZCBieQorKyAqIGFwcGx5aW5nIGEgc2ltcGxlIHJ1bGUgZnJvbSB0aGUgVW5pY29kZSBk YXRhYmFzZSBjb250ZW50LiBTZXR0aW5nCisrICogdXAgYSBwcm9wZXIgc3RhbmRhcmQgZm9yIHRo ZSBiZWhhdmlvciBvZiBVVEYtOCBjaGFyYWN0ZXIgdGVybWluYWxzCisrICogd2lsbCByZXF1aXJl IGEgY2FyZWZ1bCBhbmFseXNpcyBub3Qgb25seSBvZiBlYWNoIFVuaWNvZGUgY2hhcmFjdGVyLAor KyAqIGJ1dCBhbHNvIG9mIGVhY2ggcHJlc2VudGF0aW9uIGZvcm0sIHNvbWV0aGluZyB0aGUgYXV0 aG9yIG9mIHRoZXNlCisrICogcm91dGluZXMgaGFzIGF2b2lkZWQgdG8gZG8gc28gZmFyLgorKyAq CisrICogaHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHIxMS8KKysgKgor KyAqIE1hcmt1cyBLdWhuIC0tIDIwMDctMDUtMjYgKFVuaWNvZGUgNS4wKQorKyAqCisrICogUGVy bWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2Fy ZQorKyAqIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQu IFRoZSBhdXRob3IKKysgKiBkaXNjbGFpbXMgYWxsIHdhcnJhbnRpZXMgd2l0aCByZWdhcmQgdG8g dGhpcyBzb2Z0d2FyZS4KKysgKgorKyAqIExhdGVzdCB2ZXJzaW9uOiBodHRwOi8vd3d3LmNsLmNh bS5hYy51ay9+bWdrMjUvdWNzL3djd2lkdGguYworICAqLworIAorICNpZmRlZiBfX0dPMzJfXwor LS8qIERKR1BQIG5lZWRzIHRvIGluY2x1ZGUgdGhpcyBiZWZvcmUgaW5jbHVkaW5nIHdjaGFyLmgu ICAqLworLSMgaW5jbHVkZSA8d2N0eXBlLmg+CisrIyAgaW5jbHVkZSA8d2N0eXBlLmg+CisgI2Vu ZGlmCisgCisgI2luY2x1ZGUgPHdjaGFyLmg+CisgCisgc3RydWN0IGludGVydmFsIHsKKy0gIHVu c2lnbmVkIHNob3J0IGZpcnN0OworLSAgdW5zaWduZWQgc2hvcnQgbGFzdDsKKysgIGludCBmaXJz dDsKKysgIGludCBsYXN0OworIH07CisgCisgLyogYXV4aWxpYXJ5IGZ1bmN0aW9uIGZvciBiaW5h cnkgc2VhcmNoIGluIGludGVydmFsIHRhYmxlICovCitAQCAtMzksNyArOTEsNyBAQCBzdGF0aWMg aW50IGJpc2VhcmNoKHdjaGFyX3QgdWNzLCBjb25zdCBzdHJ1Y3QgaW50ZXJ2YWwgKnRhYmxlLCBp bnQgbWF4KSB7CisgfQorIAorIAorLS8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGRlZmluZSB0 aGUgY29sdW1uIHdpZHRoIG9mIGFuIElTTyAxMDY0NgorKy8qIFRoZSBmb2xsb3dpbmcgdHdvIGZ1 bmN0aW9ucyBkZWZpbmUgdGhlIGNvbHVtbiB3aWR0aCBvZiBhbiBJU08gMTA2NDYKKyAgKiBjaGFy YWN0ZXIgYXMgZm9sbG93czoKKyAgKgorICAqICAgIC0gVGhlIG51bGwgY2hhcmFjdGVyIChVKzAw MDApIGhhcyBhIGNvbHVtbiB3aWR0aCBvZiAwLgorQEAgLTUxLDYgKzEwMyw4IEBAIHN0YXRpYyBp bnQgYmlzZWFyY2god2NoYXJfdCB1Y3MsIGNvbnN0IHN0cnVjdCBpbnRlcnZhbCAqdGFibGUsIGlu dCBtYXgpIHsKKyAgKiAgICAgIGNhdGVnb3J5IGNvZGUgTW4gb3IgTWUgaW4gdGhlIFVuaWNvZGUg ZGF0YWJhc2UpIGhhdmUgYQorICAqICAgICAgY29sdW1uIHdpZHRoIG9mIDAuCisgICoKKysgKiAg ICAtIFNPRlQgSFlQSEVOIChVKzAwQUQpIGhhcyBhIGNvbHVtbiB3aWR0aCBvZiAxLgorKyAqCisg ICogICAgLSBPdGhlciBmb3JtYXQgY2hhcmFjdGVycyAoZ2VuZXJhbCBjYXRlZ29yeSBjb2RlIENm IGluIHRoZSBVbmljb2RlCisgICogICAgICBkYXRhYmFzZSkgYW5kIFpFUk8gV0lEVEggU1BBQ0Ug KFUrMjAwQikgaGF2ZSBhIGNvbHVtbiB3aWR0aCBvZiAwLgorICAqCitAQCAtNTgsNyArMTEyLDcg QEAgc3RhdGljIGludCBiaXNlYXJjaCh3Y2hhcl90IHVjcywgY29uc3Qgc3RydWN0IGludGVydmFs ICp0YWJsZSwgaW50IG1heCkgeworICAqICAgICAgaGF2ZSBhIGNvbHVtbiB3aWR0aCBvZiAwLgor ICAqCisgICogICAgLSBTcGFjaW5nIGNoYXJhY3RlcnMgaW4gdGhlIEVhc3QgQXNpYW4gV2lkZSAo Vykgb3IgRWFzdCBBc2lhbgorLSAqICAgICAgRnVsbFdpZHRoIChGKSBjYXRlZ29yeSBhcyBkZWZp bmVkIGluIFVuaWNvZGUgVGVjaG5pY2FsCisrICogICAgICBGdWxsLXdpZHRoIChGKSBjYXRlZ29y eSBhcyBkZWZpbmVkIGluIFVuaWNvZGUgVGVjaG5pY2FsCisgICogICAgICBSZXBvcnQgIzExIGhh dmUgYSBjb2x1bW4gd2lkdGggb2YgMi4KKyAgKgorICAqICAgIC0gQWxsIHJlbWFpbmluZyBjaGFy YWN0ZXJzIChpbmNsdWRpbmcgYWxsIHByaW50YWJsZQorQEAgLTY5LDQ0ICsxMjMsNTkgQEAgc3Rh dGljIGludCBiaXNlYXJjaCh3Y2hhcl90IHVjcywgY29uc3Qgc3RydWN0IGludGVydmFsICp0YWJs ZSwgaW50IG1heCkgeworICAqIGluIElTTyAxMDY0Ni4KKyAgKi8KKyAKKy1pbnQgd2N3aWR0aCh3 Y2hhcl90IHVjcykKKytpbnQgbWtfd2N3aWR0aCh3Y2hhcl90IHVjcykKKyB7CisgICAvKiBzb3J0 ZWQgbGlzdCBvZiBub24tb3ZlcmxhcHBpbmcgaW50ZXJ2YWxzIG9mIG5vbi1zcGFjaW5nIGNoYXJh Y3RlcnMgKi8KKysgIC8qIGdlbmVyYXRlZCBieSAidW5pc2V0ICtjYXQ9TWUgK2NhdD1NbiArY2F0 PUNmIC0wMEFEICsxMTYwLTExRkYgKzIwMEIgYyIgKi8KKyAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aW50ZXJ2YWwgY29tYmluaW5nW10gPSB7CistICAgIHsgMHgwMzAwLCAweDAzNEUgfSwgeyAweDAz NjAsIDB4MDM2MiB9LCB7IDB4MDQ4MywgMHgwNDg2IH0sCistICAgIHsgMHgwNDg4LCAweDA0ODkg fSwgeyAweDA1OTEsIDB4MDVBMSB9LCB7IDB4MDVBMywgMHgwNUI5IH0sCistICAgIHsgMHgwNUJC LCAweDA1QkQgfSwgeyAweDA1QkYsIDB4MDVCRiB9LCB7IDB4MDVDMSwgMHgwNUMyIH0sCistICAg IHsgMHgwNUM0LCAweDA1QzQgfSwgeyAweDA2NEIsIDB4MDY1NSB9LCB7IDB4MDY3MCwgMHgwNjcw IH0sCisrICAgIHsgMHgwMzAwLCAweDAzNkYgfSwgeyAweDA0ODMsIDB4MDQ4NiB9LCB7IDB4MDQ4 OCwgMHgwNDg5IH0sCisrICAgIHsgMHgwNTkxLCAweDA1QkQgfSwgeyAweDA1QkYsIDB4MDVCRiB9 LCB7IDB4MDVDMSwgMHgwNUMyIH0sCisrICAgIHsgMHgwNUM0LCAweDA1QzUgfSwgeyAweDA1Qzcs IDB4MDVDNyB9LCB7IDB4MDYwMCwgMHgwNjAzIH0sCisrICAgIHsgMHgwNjEwLCAweDA2MTUgfSwg eyAweDA2NEIsIDB4MDY1RSB9LCB7IDB4MDY3MCwgMHgwNjcwIH0sCisgICAgIHsgMHgwNkQ2LCAw eDA2RTQgfSwgeyAweDA2RTcsIDB4MDZFOCB9LCB7IDB4MDZFQSwgMHgwNkVEIH0sCisgICAgIHsg MHgwNzBGLCAweDA3MEYgfSwgeyAweDA3MTEsIDB4MDcxMSB9LCB7IDB4MDczMCwgMHgwNzRBIH0s CistICAgIHsgMHgwN0E2LCAweDA3QjAgfSwgeyAweDA5MDEsIDB4MDkwMiB9LCB7IDB4MDkzQywg MHgwOTNDIH0sCistICAgIHsgMHgwOTQxLCAweDA5NDggfSwgeyAweDA5NEQsIDB4MDk0RCB9LCB7 IDB4MDk1MSwgMHgwOTU0IH0sCistICAgIHsgMHgwOTYyLCAweDA5NjMgfSwgeyAweDA5ODEsIDB4 MDk4MSB9LCB7IDB4MDlCQywgMHgwOUJDIH0sCistICAgIHsgMHgwOUMxLCAweDA5QzQgfSwgeyAw eDA5Q0QsIDB4MDlDRCB9LCB7IDB4MDlFMiwgMHgwOUUzIH0sCistICAgIHsgMHgwQTAyLCAweDBB MDIgfSwgeyAweDBBM0MsIDB4MEEzQyB9LCB7IDB4MEE0MSwgMHgwQTQyIH0sCistICAgIHsgMHgw QTQ3LCAweDBBNDggfSwgeyAweDBBNEIsIDB4MEE0RCB9LCB7IDB4MEE3MCwgMHgwQTcxIH0sCist ICAgIHsgMHgwQTgxLCAweDBBODIgfSwgeyAweDBBQkMsIDB4MEFCQyB9LCB7IDB4MEFDMSwgMHgw QUM1IH0sCistICAgIHsgMHgwQUM3LCAweDBBQzggfSwgeyAweDBBQ0QsIDB4MEFDRCB9LCB7IDB4 MEIwMSwgMHgwQjAxIH0sCistICAgIHsgMHgwQjNDLCAweDBCM0MgfSwgeyAweDBCM0YsIDB4MEIz RiB9LCB7IDB4MEI0MSwgMHgwQjQzIH0sCistICAgIHsgMHgwQjRELCAweDBCNEQgfSwgeyAweDBC NTYsIDB4MEI1NiB9LCB7IDB4MEI4MiwgMHgwQjgyIH0sCistICAgIHsgMHgwQkMwLCAweDBCQzAg fSwgeyAweDBCQ0QsIDB4MEJDRCB9LCB7IDB4MEMzRSwgMHgwQzQwIH0sCistICAgIHsgMHgwQzQ2 LCAweDBDNDggfSwgeyAweDBDNEEsIDB4MEM0RCB9LCB7IDB4MEM1NSwgMHgwQzU2IH0sCisrICAg IHsgMHgwN0E2LCAweDA3QjAgfSwgeyAweDA3RUIsIDB4MDdGMyB9LCB7IDB4MDkwMSwgMHgwOTAy IH0sCisrICAgIHsgMHgwOTNDLCAweDA5M0MgfSwgeyAweDA5NDEsIDB4MDk0OCB9LCB7IDB4MDk0 RCwgMHgwOTREIH0sCisrICAgIHsgMHgwOTUxLCAweDA5NTQgfSwgeyAweDA5NjIsIDB4MDk2MyB9 LCB7IDB4MDk4MSwgMHgwOTgxIH0sCisrICAgIHsgMHgwOUJDLCAweDA5QkMgfSwgeyAweDA5QzEs IDB4MDlDNCB9LCB7IDB4MDlDRCwgMHgwOUNEIH0sCisrICAgIHsgMHgwOUUyLCAweDA5RTMgfSwg eyAweDBBMDEsIDB4MEEwMiB9LCB7IDB4MEEzQywgMHgwQTNDIH0sCisrICAgIHsgMHgwQTQxLCAw eDBBNDIgfSwgeyAweDBBNDcsIDB4MEE0OCB9LCB7IDB4MEE0QiwgMHgwQTREIH0sCisrICAgIHsg MHgwQTcwLCAweDBBNzEgfSwgeyAweDBBODEsIDB4MEE4MiB9LCB7IDB4MEFCQywgMHgwQUJDIH0s CisrICAgIHsgMHgwQUMxLCAweDBBQzUgfSwgeyAweDBBQzcsIDB4MEFDOCB9LCB7IDB4MEFDRCwg MHgwQUNEIH0sCisrICAgIHsgMHgwQUUyLCAweDBBRTMgfSwgeyAweDBCMDEsIDB4MEIwMSB9LCB7 IDB4MEIzQywgMHgwQjNDIH0sCisrICAgIHsgMHgwQjNGLCAweDBCM0YgfSwgeyAweDBCNDEsIDB4 MEI0MyB9LCB7IDB4MEI0RCwgMHgwQjREIH0sCisrICAgIHsgMHgwQjU2LCAweDBCNTYgfSwgeyAw eDBCODIsIDB4MEI4MiB9LCB7IDB4MEJDMCwgMHgwQkMwIH0sCisrICAgIHsgMHgwQkNELCAweDBC Q0QgfSwgeyAweDBDM0UsIDB4MEM0MCB9LCB7IDB4MEM0NiwgMHgwQzQ4IH0sCisrICAgIHsgMHgw QzRBLCAweDBDNEQgfSwgeyAweDBDNTUsIDB4MEM1NiB9LCB7IDB4MENCQywgMHgwQ0JDIH0sCisg ICAgIHsgMHgwQ0JGLCAweDBDQkYgfSwgeyAweDBDQzYsIDB4MENDNiB9LCB7IDB4MENDQywgMHgw Q0NEIH0sCistICAgIHsgMHgwRDQxLCAweDBENDMgfSwgeyAweDBENEQsIDB4MEQ0RCB9LCB7IDB4 MERDQSwgMHgwRENBIH0sCistICAgIHsgMHgwREQyLCAweDBERDQgfSwgeyAweDBERDYsIDB4MERE NiB9LCB7IDB4MEUzMSwgMHgwRTMxIH0sCistICAgIHsgMHgwRTM0LCAweDBFM0EgfSwgeyAweDBF NDcsIDB4MEU0RSB9LCB7IDB4MEVCMSwgMHgwRUIxIH0sCistICAgIHsgMHgwRUI0LCAweDBFQjkg fSwgeyAweDBFQkIsIDB4MEVCQyB9LCB7IDB4MEVDOCwgMHgwRUNEIH0sCistICAgIHsgMHgwRjE4 LCAweDBGMTkgfSwgeyAweDBGMzUsIDB4MEYzNSB9LCB7IDB4MEYzNywgMHgwRjM3IH0sCistICAg IHsgMHgwRjM5LCAweDBGMzkgfSwgeyAweDBGNzEsIDB4MEY3RSB9LCB7IDB4MEY4MCwgMHgwRjg0 IH0sCistICAgIHsgMHgwRjg2LCAweDBGODcgfSwgeyAweDBGOTAsIDB4MEY5NyB9LCB7IDB4MEY5 OSwgMHgwRkJDIH0sCistICAgIHsgMHgwRkM2LCAweDBGQzYgfSwgeyAweDEwMkQsIDB4MTAzMCB9 LCB7IDB4MTAzMiwgMHgxMDMyIH0sCistICAgIHsgMHgxMDM2LCAweDEwMzcgfSwgeyAweDEwMzks IDB4MTAzOSB9LCB7IDB4MTA1OCwgMHgxMDU5IH0sCistICAgIHsgMHgxMTYwLCAweDExRkYgfSwg eyAweDE3QjcsIDB4MTdCRCB9LCB7IDB4MTdDNiwgMHgxN0M2IH0sCistICAgIHsgMHgxN0M5LCAw eDE3RDMgfSwgeyAweDE4MEIsIDB4MTgwRSB9LCB7IDB4MThBOSwgMHgxOEE5IH0sCistICAgIHsg MHgyMDBCLCAweDIwMEYgfSwgeyAweDIwMkEsIDB4MjAyRSB9LCB7IDB4MjA2QSwgMHgyMDZGIH0s CistICAgIHsgMHgyMEQwLCAweDIwRTMgfSwgeyAweDMwMkEsIDB4MzAyRiB9LCB7IDB4MzA5OSwg MHgzMDlBIH0sCistICAgIHsgMHhGQjFFLCAweEZCMUUgfSwgeyAweEZFMjAsIDB4RkUyMyB9LCB7 IDB4RkVGRiwgMHhGRUZGIH0sCistICAgIHsgMHhGRkY5LCAweEZGRkIgfQorKyAgICB7IDB4MENF MiwgMHgwQ0UzIH0sIHsgMHgwRDQxLCAweDBENDMgfSwgeyAweDBENEQsIDB4MEQ0RCB9LAorKyAg ICB7IDB4MERDQSwgMHgwRENBIH0sIHsgMHgwREQyLCAweDBERDQgfSwgeyAweDBERDYsIDB4MERE NiB9LAorKyAgICB7IDB4MEUzMSwgMHgwRTMxIH0sIHsgMHgwRTM0LCAweDBFM0EgfSwgeyAweDBF NDcsIDB4MEU0RSB9LAorKyAgICB7IDB4MEVCMSwgMHgwRUIxIH0sIHsgMHgwRUI0LCAweDBFQjkg fSwgeyAweDBFQkIsIDB4MEVCQyB9LAorKyAgICB7IDB4MEVDOCwgMHgwRUNEIH0sIHsgMHgwRjE4 LCAweDBGMTkgfSwgeyAweDBGMzUsIDB4MEYzNSB9LAorKyAgICB7IDB4MEYzNywgMHgwRjM3IH0s IHsgMHgwRjM5LCAweDBGMzkgfSwgeyAweDBGNzEsIDB4MEY3RSB9LAorKyAgICB7IDB4MEY4MCwg MHgwRjg0IH0sIHsgMHgwRjg2LCAweDBGODcgfSwgeyAweDBGOTAsIDB4MEY5NyB9LAorKyAgICB7 IDB4MEY5OSwgMHgwRkJDIH0sIHsgMHgwRkM2LCAweDBGQzYgfSwgeyAweDEwMkQsIDB4MTAzMCB9 LAorKyAgICB7IDB4MTAzMiwgMHgxMDMyIH0sIHsgMHgxMDM2LCAweDEwMzcgfSwgeyAweDEwMzks IDB4MTAzOSB9LAorKyAgICB7IDB4MTA1OCwgMHgxMDU5IH0sIHsgMHgxMTYwLCAweDExRkYgfSwg eyAweDEzNUYsIDB4MTM1RiB9LAorKyAgICB7IDB4MTcxMiwgMHgxNzE0IH0sIHsgMHgxNzMyLCAw eDE3MzQgfSwgeyAweDE3NTIsIDB4MTc1MyB9LAorKyAgICB7IDB4MTc3MiwgMHgxNzczIH0sIHsg MHgxN0I0LCAweDE3QjUgfSwgeyAweDE3QjcsIDB4MTdCRCB9LAorKyAgICB7IDB4MTdDNiwgMHgx N0M2IH0sIHsgMHgxN0M5LCAweDE3RDMgfSwgeyAweDE3REQsIDB4MTdERCB9LAorKyAgICB7IDB4 MTgwQiwgMHgxODBEIH0sIHsgMHgxOEE5LCAweDE4QTkgfSwgeyAweDE5MjAsIDB4MTkyMiB9LAor KyAgICB7IDB4MTkyNywgMHgxOTI4IH0sIHsgMHgxOTMyLCAweDE5MzIgfSwgeyAweDE5MzksIDB4 MTkzQiB9LAorKyAgICB7IDB4MUExNywgMHgxQTE4IH0sIHsgMHgxQjAwLCAweDFCMDMgfSwgeyAw eDFCMzQsIDB4MUIzNCB9LAorKyAgICB7IDB4MUIzNiwgMHgxQjNBIH0sIHsgMHgxQjNDLCAweDFC M0MgfSwgeyAweDFCNDIsIDB4MUI0MiB9LAorKyAgICB7IDB4MUI2QiwgMHgxQjczIH0sIHsgMHgx REMwLCAweDFEQ0EgfSwgeyAweDFERkUsIDB4MURGRiB9LAorKyAgICB7IDB4MjAwQiwgMHgyMDBG IH0sIHsgMHgyMDJBLCAweDIwMkUgfSwgeyAweDIwNjAsIDB4MjA2MyB9LAorKyAgICB7IDB4MjA2 QSwgMHgyMDZGIH0sIHsgMHgyMEQwLCAweDIwRUYgfSwgeyAweDMwMkEsIDB4MzAyRiB9LAorKyAg ICB7IDB4MzA5OSwgMHgzMDlBIH0sIHsgMHhBODA2LCAweEE4MDYgfSwgeyAweEE4MEIsIDB4QTgw QiB9LAorKyAgICB7IDB4QTgyNSwgMHhBODI2IH0sIHsgMHhGQjFFLCAweEZCMUUgfSwgeyAweEZF MDAsIDB4RkUwRiB9LAorKyAgICB7IDB4RkUyMCwgMHhGRTIzIH0sIHsgMHhGRUZGLCAweEZFRkYg fSwgeyAweEZGRjksIDB4RkZGQiB9LAorKyAgICB7IDB4MTBBMDEsIDB4MTBBMDMgfSwgeyAweDEw QTA1LCAweDEwQTA2IH0sIHsgMHgxMEEwQywgMHgxMEEwRiB9LAorKyAgICB7IDB4MTBBMzgsIDB4 MTBBM0EgfSwgeyAweDEwQTNGLCAweDEwQTNGIH0sIHsgMHgxRDE2NywgMHgxRDE2OSB9LAorKyAg ICB7IDB4MUQxNzMsIDB4MUQxODIgfSwgeyAweDFEMTg1LCAweDFEMThCIH0sIHsgMHgxRDFBQSwg MHgxRDFBRCB9LAorKyAgICB7IDB4MUQyNDIsIDB4MUQyNDQgfSwgeyAweEUwMDAxLCAweEUwMDAx IH0sIHsgMHhFMDAyMCwgMHhFMDA3RiB9LAorKyAgICB7IDB4RTAxMDAsIDB4RTAxRUYgfQorICAg fTsKKyAKKyAgIC8qIHRlc3QgZm9yIDgtYml0IGNvbnRyb2wgY2hhcmFjdGVycyAqLworQEAgLTEy NSwyMyArMTk0LDI2IEBAIGludCB3Y3dpZHRoKHdjaGFyX3QgdWNzKQorICAgcmV0dXJuIDEgKyAK KyAgICAgKHVjcyA+PSAweDExMDAgJiYKKyAgICAgICh1Y3MgPD0gMHgxMTVmIHx8ICAgICAgICAg ICAgICAgICAgICAvKiBIYW5ndWwgSmFtbyBpbml0LiBjb25zb25hbnRzICovCistICAgICAgKHVj cyA+PSAweDJlODAgJiYgdWNzIDw9IDB4YTRjZiAmJiAodWNzICYgfjB4MDAxMSkgIT0gMHgzMDBh ICYmCisrICAgICAgdWNzID09IDB4MjMyOSB8fCB1Y3MgPT0gMHgyMzJhIHx8CisrICAgICAgKHVj cyA+PSAweDJlODAgJiYgdWNzIDw9IDB4YTRjZiAmJgorICAgICAgICB1Y3MgIT0gMHgzMDNmKSB8 fCAgICAgICAgICAgICAgICAgIC8qIENKSyAuLi4gWWkgKi8KKyAgICAgICAodWNzID49IDB4YWMw MCAmJiB1Y3MgPD0gMHhkN2EzKSB8fCAvKiBIYW5ndWwgU3lsbGFibGVzICovCisgICAgICAgKHVj cyA+PSAweGY5MDAgJiYgdWNzIDw9IDB4ZmFmZikgfHwgLyogQ0pLIENvbXBhdGliaWxpdHkgSWRl b2dyYXBocyAqLworKyAgICAgICh1Y3MgPj0gMHhmZTEwICYmIHVjcyA8PSAweGZlMTkpIHx8IC8q IFZlcnRpY2FsIGZvcm1zICovCisgICAgICAgKHVjcyA+PSAweGZlMzAgJiYgdWNzIDw9IDB4ZmU2 ZikgfHwgLyogQ0pLIENvbXBhdGliaWxpdHkgRm9ybXMgKi8KKy0gICAgICAodWNzID49IDB4ZmYw MCAmJiB1Y3MgPD0gMHhmZjVmKSB8fCAvKiBGdWxsd2lkdGggRm9ybXMgKi8KKysgICAgICAodWNz ID49IDB4ZmYwMCAmJiB1Y3MgPD0gMHhmZjYwKSB8fCAvKiBGdWxsd2lkdGggRm9ybXMgKi8KKyAg ICAgICAodWNzID49IDB4ZmZlMCAmJiB1Y3MgPD0gMHhmZmU2KSB8fAorLSAgICAgICh1Y3MgPj0g MHgyMDAwMCAmJiB1Y3MgPD0gMHgyZmZmZikpKTsKKysgICAgICAodWNzID49IDB4MjAwMDAgJiYg dWNzIDw9IDB4MmZmZmQpIHx8CisrICAgICAgKHVjcyA+PSAweDMwMDAwICYmIHVjcyA8PSAweDNm ZmZkKSkpOworIH0KKyAKKyAKKy1pbnQgd2Nzd2lkdGgoY29uc3Qgd2NoYXJfdCAqcHdjcywgc2l6 ZV90IG4pCisraW50IG1rX3djc3dpZHRoKGNvbnN0IHdjaGFyX3QgKnB3Y3MsIHNpemVfdCBuKQor IHsKKyAgIGludCB3LCB3aWR0aCA9IDA7CisgCisgICBmb3IgKDsqcHdjcyAmJiBuLS0gPiAwOyBw d2NzKyspCistICAgIGlmICgodyA9IHdjd2lkdGgoKnB3Y3MpKSA8IDApCisrICAgIGlmICgodyA9 IG1rX3djd2lkdGgoKnB3Y3MpKSA8IDApCisgICAgICAgcmV0dXJuIC0xOworICAgICBlbHNlCisg ICAgICAgd2lkdGggKz0gdzsKK0BAIC0xNTEsMjAgKzIyMywyMSBAQCBpbnQgd2Nzd2lkdGgoY29u c3Qgd2NoYXJfdCAqcHdjcywgc2l6ZV90IG4pCisgCisgCisgLyoKKy0gKiBUaGUgZm9sbG93aW5n IGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHdjd2lkdGgoKSwgZXhjZXB0IHRoYXQKKy0gKiBzcGFj aW5nIGNoYXJhY3RlcnMgaW4gdGhlIEVhc3QgQXNpYW4gQW1iaWd1b3VzIChBKSBjYXRlZ29yeSBh cworLSAqIGRlZmluZWQgaW4gVW5pY29kZSBUZWNobmljYWwgUmVwb3J0ICMxMSBoYXZlIGEgY29s dW1uIHdpZHRoIG9mIDIuCistICogVGhpcyBleHBlcmltZW50YWwgdmFyaWFudCBtaWdodCBiZSB1 c2VmdWwgZm9yIHVzZXJzIG9mIENKSyBsZWdhY3kKKy0gKiBlbmNvZGluZ3Mgd2hvIHdhbnQgdG8g bWlncmF0ZSB0byBVQ1MuIEl0IGlzIG5vdCBvdGhlcndpc2UKKy0gKiByZWNvbW1lbmRlZCBmb3Ig Z2VuZXJhbCB1c2UuCisrICogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHRoZSBzYW1lIGFz IG1rX3djd2lkdGgoKSBhbmQKKysgKiBta193Y3N3aWR0aCgpLCBleGNlcHQgdGhhdCBzcGFjaW5n IGNoYXJhY3RlcnMgaW4gdGhlIEVhc3QgQXNpYW4KKysgKiBBbWJpZ3VvdXMgKEEpIGNhdGVnb3J5 IGFzIGRlZmluZWQgaW4gVW5pY29kZSBUZWNobmljYWwgUmVwb3J0ICMxMQorKyAqIGhhdmUgYSBj b2x1bW4gd2lkdGggb2YgMi4gVGhpcyB2YXJpYW50IG1pZ2h0IGJlIHVzZWZ1bCBmb3IgdXNlcnMg b2YKKysgKiBDSksgbGVnYWN5IGVuY29kaW5ncyB3aG8gd2FudCB0byBtaWdyYXRlIHRvIFVDUyB3 aXRob3V0IGNoYW5naW5nCisrICogdGhlIHRyYWRpdGlvbmFsIHRlcm1pbmFsIGNoYXJhY3Rlci13 aWR0aCBiZWhhdmlvdXIuIEl0IGlzIG5vdAorKyAqIG90aGVyd2lzZSByZWNvbW1lbmRlZCBmb3Ig Z2VuZXJhbCB1c2UuCisgICovCistc3RhdGljIGludCB3Y3dpZHRoX2Nqayh3Y2hhcl90IHVjcykK KytpbnQgbWtfd2N3aWR0aF9jamsod2NoYXJfdCB1Y3MpCisgeworICAgLyogc29ydGVkIGxpc3Qg b2Ygbm9uLW92ZXJsYXBwaW5nIGludGVydmFscyBvZiBFYXN0IEFzaWFuIEFtYmlndW91cworLSAg ICogY2hhcmFjdGVycyAqLworKyAgICogY2hhcmFjdGVycywgZ2VuZXJhdGVkIGJ5ICJ1bmlzZXQg K1dJRFRILUEgLWNhdD1NZSAtY2F0PU1uIC1jYXQ9Q2YgYyIgKi8KKyAgIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaW50ZXJ2YWwgYW1iaWd1b3VzW10gPSB7CisgICAgIHsgMHgwMEExLCAweDAwQTEgfSwg eyAweDAwQTQsIDB4MDBBNCB9LCB7IDB4MDBBNywgMHgwMEE4IH0sCistICAgIHsgMHgwMEFBLCAw eDAwQUEgfSwgeyAweDAwQUQsIDB4MDBBRSB9LCB7IDB4MDBCMCwgMHgwMEI0IH0sCisrICAgIHsg MHgwMEFBLCAweDAwQUEgfSwgeyAweDAwQUUsIDB4MDBBRSB9LCB7IDB4MDBCMCwgMHgwMEI0IH0s CisgICAgIHsgMHgwMEI2LCAweDAwQkEgfSwgeyAweDAwQkMsIDB4MDBCRiB9LCB7IDB4MDBDNiwg MHgwMEM2IH0sCisgICAgIHsgMHgwMEQwLCAweDAwRDAgfSwgeyAweDAwRDcsIDB4MDBEOCB9LCB7 IDB4MDBERSwgMHgwMEUxIH0sCisgICAgIHsgMHgwMEU2LCAweDAwRTYgfSwgeyAweDAwRTgsIDB4 MDBFQSB9LCB7IDB4MDBFQywgMHgwMEVEIH0sCitAQCAtMTgwLDQyICsyNTMsNDEgQEAgc3RhdGlj IGludCB3Y3dpZHRoX2Nqayh3Y2hhcl90IHVjcykKKyAgICAgeyAweDAxREMsIDB4MDFEQyB9LCB7 IDB4MDI1MSwgMHgwMjUxIH0sIHsgMHgwMjYxLCAweDAyNjEgfSwKKyAgICAgeyAweDAyQzQsIDB4 MDJDNCB9LCB7IDB4MDJDNywgMHgwMkM3IH0sIHsgMHgwMkM5LCAweDAyQ0IgfSwKKyAgICAgeyAw eDAyQ0QsIDB4MDJDRCB9LCB7IDB4MDJEMCwgMHgwMkQwIH0sIHsgMHgwMkQ4LCAweDAyREIgfSwK Ky0gICAgeyAweDAyREQsIDB4MDJERCB9LCB7IDB4MDJERiwgMHgwMkRGIH0sIHsgMHgwMzAwLCAw eDAzNEUgfSwKKy0gICAgeyAweDAzNjAsIDB4MDM2MiB9LCB7IDB4MDM5MSwgMHgwM0ExIH0sIHsg MHgwM0EzLCAweDAzQTkgfSwKKy0gICAgeyAweDAzQjEsIDB4MDNDMSB9LCB7IDB4MDNDMywgMHgw M0M5IH0sIHsgMHgwNDAxLCAweDA0MDEgfSwKKy0gICAgeyAweDA0MTAsIDB4MDQ0RiB9LCB7IDB4 MDQ1MSwgMHgwNDUxIH0sIHsgMHgyMDEwLCAweDIwMTAgfSwKKy0gICAgeyAweDIwMTMsIDB4MjAx NiB9LCB7IDB4MjAxOCwgMHgyMDE5IH0sIHsgMHgyMDFDLCAweDIwMUQgfSwKKy0gICAgeyAweDIw MjAsIDB4MjAyMiB9LCB7IDB4MjAyNCwgMHgyMDI3IH0sIHsgMHgyMDMwLCAweDIwMzAgfSwKKy0g ICAgeyAweDIwMzIsIDB4MjAzMyB9LCB7IDB4MjAzNSwgMHgyMDM1IH0sIHsgMHgyMDNCLCAweDIw M0IgfSwKKy0gICAgeyAweDIwM0UsIDB4MjAzRSB9LCB7IDB4MjA3NCwgMHgyMDc0IH0sIHsgMHgy MDdGLCAweDIwN0YgfSwKKy0gICAgeyAweDIwODEsIDB4MjA4NCB9LCB7IDB4MjBBQywgMHgyMEFD IH0sIHsgMHgyMTAzLCAweDIxMDMgfSwKKy0gICAgeyAweDIxMDUsIDB4MjEwNSB9LCB7IDB4MjEw OSwgMHgyMTA5IH0sIHsgMHgyMTEzLCAweDIxMTMgfSwKKy0gICAgeyAweDIxMTYsIDB4MjExNiB9 LCB7IDB4MjEyMSwgMHgyMTIyIH0sIHsgMHgyMTI2LCAweDIxMjYgfSwKKy0gICAgeyAweDIxMkIs IDB4MjEyQiB9LCB7IDB4MjE1MywgMHgyMTU1IH0sIHsgMHgyMTVCLCAweDIxNUUgfSwKKy0gICAg eyAweDIxNjAsIDB4MjE2QiB9LCB7IDB4MjE3MCwgMHgyMTc5IH0sIHsgMHgyMTkwLCAweDIxOTkg fSwKKy0gICAgeyAweDIxQjgsIDB4MjFCOSB9LCB7IDB4MjFEMiwgMHgyMUQyIH0sIHsgMHgyMUQ0 LCAweDIxRDQgfSwKKy0gICAgeyAweDIxRTcsIDB4MjFFNyB9LCB7IDB4MjIwMCwgMHgyMjAwIH0s IHsgMHgyMjAyLCAweDIyMDMgfSwKKy0gICAgeyAweDIyMDcsIDB4MjIwOCB9LCB7IDB4MjIwQiwg MHgyMjBCIH0sIHsgMHgyMjBGLCAweDIyMEYgfSwKKy0gICAgeyAweDIyMTEsIDB4MjIxMSB9LCB7 IDB4MjIxNSwgMHgyMjE1IH0sIHsgMHgyMjFBLCAweDIyMUEgfSwKKy0gICAgeyAweDIyMUQsIDB4 MjIyMCB9LCB7IDB4MjIyMywgMHgyMjIzIH0sIHsgMHgyMjI1LCAweDIyMjUgfSwKKy0gICAgeyAw eDIyMjcsIDB4MjIyQyB9LCB7IDB4MjIyRSwgMHgyMjJFIH0sIHsgMHgyMjM0LCAweDIyMzcgfSwK Ky0gICAgeyAweDIyM0MsIDB4MjIzRCB9LCB7IDB4MjI0OCwgMHgyMjQ4IH0sIHsgMHgyMjRDLCAw eDIyNEMgfSwKKy0gICAgeyAweDIyNTIsIDB4MjI1MiB9LCB7IDB4MjI2MCwgMHgyMjYxIH0sIHsg MHgyMjY0LCAweDIyNjcgfSwKKy0gICAgeyAweDIyNkEsIDB4MjI2QiB9LCB7IDB4MjI2RSwgMHgy MjZGIH0sIHsgMHgyMjgyLCAweDIyODMgfSwKKy0gICAgeyAweDIyODYsIDB4MjI4NyB9LCB7IDB4 MjI5NSwgMHgyMjk1IH0sIHsgMHgyMjk5LCAweDIyOTkgfSwKKy0gICAgeyAweDIyQTUsIDB4MjJB NSB9LCB7IDB4MjJCRiwgMHgyMkJGIH0sIHsgMHgyMzEyLCAweDIzMTIgfSwKKy0gICAgeyAweDIz MjksIDB4MjMyQSB9LCB7IDB4MjQ2MCwgMHgyNEJGIH0sIHsgMHgyNEQwLCAweDI0RTkgfSwKKy0g ICAgeyAweDI1MDAsIDB4MjU0QiB9LCB7IDB4MjU1MCwgMHgyNTc0IH0sIHsgMHgyNTgwLCAweDI1 OEYgfSwKKy0gICAgeyAweDI1OTIsIDB4MjU5NSB9LCB7IDB4MjVBMCwgMHgyNUExIH0sIHsgMHgy NUEzLCAweDI1QTkgfSwKKy0gICAgeyAweDI1QjIsIDB4MjVCMyB9LCB7IDB4MjVCNiwgMHgyNUI3 IH0sIHsgMHgyNUJDLCAweDI1QkQgfSwKKy0gICAgeyAweDI1QzAsIDB4MjVDMSB9LCB7IDB4MjVD NiwgMHgyNUM4IH0sIHsgMHgyNUNCLCAweDI1Q0IgfSwKKy0gICAgeyAweDI1Q0UsIDB4MjVEMSB9 LCB7IDB4MjVFMiwgMHgyNUU1IH0sIHsgMHgyNUVGLCAweDI1RUYgfSwKKy0gICAgeyAweDI2MDUs IDB4MjYwNiB9LCB7IDB4MjYwOSwgMHgyNjA5IH0sIHsgMHgyNjBFLCAweDI2MEYgfSwKKysgICAg eyAweDAyREQsIDB4MDJERCB9LCB7IDB4MDJERiwgMHgwMkRGIH0sIHsgMHgwMzkxLCAweDAzQTEg fSwKKysgICAgeyAweDAzQTMsIDB4MDNBOSB9LCB7IDB4MDNCMSwgMHgwM0MxIH0sIHsgMHgwM0Mz LCAweDAzQzkgfSwKKysgICAgeyAweDA0MDEsIDB4MDQwMSB9LCB7IDB4MDQxMCwgMHgwNDRGIH0s IHsgMHgwNDUxLCAweDA0NTEgfSwKKysgICAgeyAweDIwMTAsIDB4MjAxMCB9LCB7IDB4MjAxMywg MHgyMDE2IH0sIHsgMHgyMDE4LCAweDIwMTkgfSwKKysgICAgeyAweDIwMUMsIDB4MjAxRCB9LCB7 IDB4MjAyMCwgMHgyMDIyIH0sIHsgMHgyMDI0LCAweDIwMjcgfSwKKysgICAgeyAweDIwMzAsIDB4 MjAzMCB9LCB7IDB4MjAzMiwgMHgyMDMzIH0sIHsgMHgyMDM1LCAweDIwMzUgfSwKKysgICAgeyAw eDIwM0IsIDB4MjAzQiB9LCB7IDB4MjAzRSwgMHgyMDNFIH0sIHsgMHgyMDc0LCAweDIwNzQgfSwK KysgICAgeyAweDIwN0YsIDB4MjA3RiB9LCB7IDB4MjA4MSwgMHgyMDg0IH0sIHsgMHgyMEFDLCAw eDIwQUMgfSwKKysgICAgeyAweDIxMDMsIDB4MjEwMyB9LCB7IDB4MjEwNSwgMHgyMTA1IH0sIHsg MHgyMTA5LCAweDIxMDkgfSwKKysgICAgeyAweDIxMTMsIDB4MjExMyB9LCB7IDB4MjExNiwgMHgy MTE2IH0sIHsgMHgyMTIxLCAweDIxMjIgfSwKKysgICAgeyAweDIxMjYsIDB4MjEyNiB9LCB7IDB4 MjEyQiwgMHgyMTJCIH0sIHsgMHgyMTUzLCAweDIxNTQgfSwKKysgICAgeyAweDIxNUIsIDB4MjE1 RSB9LCB7IDB4MjE2MCwgMHgyMTZCIH0sIHsgMHgyMTcwLCAweDIxNzkgfSwKKysgICAgeyAweDIx OTAsIDB4MjE5OSB9LCB7IDB4MjFCOCwgMHgyMUI5IH0sIHsgMHgyMUQyLCAweDIxRDIgfSwKKysg ICAgeyAweDIxRDQsIDB4MjFENCB9LCB7IDB4MjFFNywgMHgyMUU3IH0sIHsgMHgyMjAwLCAweDIy MDAgfSwKKysgICAgeyAweDIyMDIsIDB4MjIwMyB9LCB7IDB4MjIwNywgMHgyMjA4IH0sIHsgMHgy MjBCLCAweDIyMEIgfSwKKysgICAgeyAweDIyMEYsIDB4MjIwRiB9LCB7IDB4MjIxMSwgMHgyMjEx IH0sIHsgMHgyMjE1LCAweDIyMTUgfSwKKysgICAgeyAweDIyMUEsIDB4MjIxQSB9LCB7IDB4MjIx RCwgMHgyMjIwIH0sIHsgMHgyMjIzLCAweDIyMjMgfSwKKysgICAgeyAweDIyMjUsIDB4MjIyNSB9 LCB7IDB4MjIyNywgMHgyMjJDIH0sIHsgMHgyMjJFLCAweDIyMkUgfSwKKysgICAgeyAweDIyMzQs IDB4MjIzNyB9LCB7IDB4MjIzQywgMHgyMjNEIH0sIHsgMHgyMjQ4LCAweDIyNDggfSwKKysgICAg eyAweDIyNEMsIDB4MjI0QyB9LCB7IDB4MjI1MiwgMHgyMjUyIH0sIHsgMHgyMjYwLCAweDIyNjEg fSwKKysgICAgeyAweDIyNjQsIDB4MjI2NyB9LCB7IDB4MjI2QSwgMHgyMjZCIH0sIHsgMHgyMjZF LCAweDIyNkYgfSwKKysgICAgeyAweDIyODIsIDB4MjI4MyB9LCB7IDB4MjI4NiwgMHgyMjg3IH0s IHsgMHgyMjk1LCAweDIyOTUgfSwKKysgICAgeyAweDIyOTksIDB4MjI5OSB9LCB7IDB4MjJBNSwg MHgyMkE1IH0sIHsgMHgyMkJGLCAweDIyQkYgfSwKKysgICAgeyAweDIzMTIsIDB4MjMxMiB9LCB7 IDB4MjQ2MCwgMHgyNEU5IH0sIHsgMHgyNEVCLCAweDI1NEIgfSwKKysgICAgeyAweDI1NTAsIDB4 MjU3MyB9LCB7IDB4MjU4MCwgMHgyNThGIH0sIHsgMHgyNTkyLCAweDI1OTUgfSwKKysgICAgeyAw eDI1QTAsIDB4MjVBMSB9LCB7IDB4MjVBMywgMHgyNUE5IH0sIHsgMHgyNUIyLCAweDI1QjMgfSwK KysgICAgeyAweDI1QjYsIDB4MjVCNyB9LCB7IDB4MjVCQywgMHgyNUJEIH0sIHsgMHgyNUMwLCAw eDI1QzEgfSwKKysgICAgeyAweDI1QzYsIDB4MjVDOCB9LCB7IDB4MjVDQiwgMHgyNUNCIH0sIHsg MHgyNUNFLCAweDI1RDEgfSwKKysgICAgeyAweDI1RTIsIDB4MjVFNSB9LCB7IDB4MjVFRiwgMHgy NUVGIH0sIHsgMHgyNjA1LCAweDI2MDYgfSwKKysgICAgeyAweDI2MDksIDB4MjYwOSB9LCB7IDB4 MjYwRSwgMHgyNjBGIH0sIHsgMHgyNjE0LCAweDI2MTUgfSwKKyAgICAgeyAweDI2MUMsIDB4MjYx QyB9LCB7IDB4MjYxRSwgMHgyNjFFIH0sIHsgMHgyNjQwLCAweDI2NDAgfSwKKyAgICAgeyAweDI2 NDIsIDB4MjY0MiB9LCB7IDB4MjY2MCwgMHgyNjYxIH0sIHsgMHgyNjYzLCAweDI2NjUgfSwKKyAg ICAgeyAweDI2NjcsIDB4MjY2QSB9LCB7IDB4MjY2QywgMHgyNjZEIH0sIHsgMHgyNjZGLCAweDI2 NkYgfSwKKy0gICAgeyAweDI3M0QsIDB4MjczRCB9LCB7IDB4MzAwOCwgMHgzMDBCIH0sIHsgMHgz MDE0LCAweDMwMTUgfSwKKy0gICAgeyAweDMwMTgsIDB4MzAxQiB9LCB7IDB4RkZGRCwgMHhGRkZE IH0KKysgICAgeyAweDI3M0QsIDB4MjczRCB9LCB7IDB4Mjc3NiwgMHgyNzdGIH0sIHsgMHhFMDAw LCAweEY4RkYgfSwKKysgICAgeyAweEZGRkQsIDB4RkZGRCB9LCB7IDB4RjAwMDAsIDB4RkZGRkQg fSwgeyAweDEwMDAwMCwgMHgxMEZGRkQgfQorICAgfTsKKyAKKyAgIC8qIGJpbmFyeSBzZWFyY2gg aW4gdGFibGUgb2Ygbm9uLXNwYWNpbmcgY2hhcmFjdGVycyAqLworQEAgLTIyMywxNiArMjk1LDE2 IEBAIHN0YXRpYyBpbnQgd2N3aWR0aF9jamsod2NoYXJfdCB1Y3MpCisgCSAgICAgICBzaXplb2Yo YW1iaWd1b3VzKSAvIHNpemVvZihzdHJ1Y3QgaW50ZXJ2YWwpIC0gMSkpCisgICAgIHJldHVybiAy OworIAorLSAgcmV0dXJuIHdjd2lkdGgodWNzKTsKKysgIHJldHVybiBta193Y3dpZHRoKHVjcyk7 CisgfQorIAorIAorLWludCB3Y3N3aWR0aF9jamsoY29uc3Qgd2NoYXJfdCAqcHdjcywgc2l6ZV90 IG4pCisraW50IG1rX3djc3dpZHRoX2Nqayhjb25zdCB3Y2hhcl90ICpwd2NzLCBzaXplX3QgbikK KyB7CisgICBpbnQgdywgd2lkdGggPSAwOworIAorICAgZm9yICg7KnB3Y3MgJiYgbi0tID4gMDsg cHdjcysrKQorLSAgICBpZiAoKHcgPSB3Y3dpZHRoX2NqaygqcHdjcykpIDwgMCkKKysgICAgaWYg KCh3ID0gbWtfd2N3aWR0aF9jamsoKnB3Y3MpKSA8IDApCisgICAgICAgcmV0dXJuIC0xOworICAg ICBlbHNlCisgICAgICAgd2lkdGggKz0gdzsKKy0tLSBhL3JlYWRsaW5lL3RjYXAuaAorKysrIGIv cmVhZGxpbmUvdGNhcC5oCitAQCAtMSwyNSArMSwyMyBAQAorIC8qIHRjYXAuaCAtLSB0ZXJtY2Fw IGxpYnJhcnkgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMuICovCisgCistLyogQ29weXJpZ2h0IChD KSAxOTk2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykg MTk5Ni0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmls ZSBjb250YWlucyB0aGUgUmVhZGxpbmUgTGlicmFyeSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgor LSAgIHJvdXRpbmVzIGZvciBwcm92aWRpbmcgRW1hY3Mgc3R5bGUgbGluZSBpbnB1dCB0byBwcm9n cmFtcyB0aGF0IGFzaworLSAgIGZvciBpdC4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg R05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRp bmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRp bmcuICAgICAgCisgCistICAgVGhlIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdh cmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y IChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGUgTGli cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBi dXQKKy0gICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKy0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCistCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9m dGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0 IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAg IGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExIFVTQS4gKi8KKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAg YWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKysqLworIAorICNpZiAhZGVmaW5lZCAoX1JMVENBUF9IXykKKyAjZGVmaW5lIF9S TFRDQVBfSF8KKy0tLSBhL3JlYWRsaW5lL3Rlcm1pbmFsLmMKKysrKyBiL3JlYWRsaW5lL3Rlcm1p bmFsLmMKK0BAIC0xLDI0ICsxLDI0IEBACisgLyogdGVybWluYWwuYyAtLSBjb250cm9sbGluZyB0 aGUgdGVybWluYWwgd2l0aCB0ZXJtY2FwLiAqLworIAorLS8qIENvcHlyaWdodCAoQykgMTk5Ni0y MDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk5 Ni0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJl YWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVk aXRpbmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5 IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0 aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZy ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVy YWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRv IG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0 b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxp bmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKysK KyAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKKyAKKyAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdf SCkKK0BAIC03MSw2ICs3MSwxNyBAQAorICNpbmNsdWRlICJ4bWFsbG9jLmgiCisgCisgI2lmIGRl ZmluZWQgKF9fTUlOR1czMl9fKQorKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KKysjICBpbmNsdWRl IDx3aW5jb24uaD4KKysKKytzdGF0aWMgdm9pZCBfd2luX2dldF9zY3JlZW5zaXplIFBBUkFNUygo aW50ICosIGludCAqKSk7CisrI2VuZGlmCisrCisrI2lmIGRlZmluZWQgKF9fRU1YX18pCisrc3Rh dGljIHZvaWQgX2VteF9nZXRfc2NyZWVuc2l6ZSBQQVJBTVMoKGludCAqLCBpbnQgKikpOworKyNl bmRpZgorKworKyNpZiBkZWZpbmVkIChfX01JTkdXMzJfXykKKyAjIGluY2x1ZGUgPHdpbmRvd3Mu aD4KKyAjIGluY2x1ZGUgPHdpbmNvbi5oPgorICNlbmRpZgorQEAgLTc4LDcgKzg5LDEwIEBACisg I2RlZmluZSBDVVNUT01fUkVESVNQTEFZX0ZVTkMoKSAocmxfcmVkaXNwbGF5X2Z1bmN0aW9uICE9 IHJsX3JlZGlzcGxheSkKKyAjZGVmaW5lIENVU1RPTV9JTlBVVF9GVU5DKCkgKHJsX2dldGNfZnVu Y3Rpb24gIT0gcmxfZ2V0YykKKyAKKy1pbnQgcmxfcHJlZmVyX2Vudl93aW5zaXplOworKy8qICBJ ZiB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbiBzZXRzIHRoaXMgdG8gYSBub24temVybyB2YWx1ZSwg cmVhZGxpbmUgd2lsbAorKyAgICB1c2UgdGhlICRMSU5FUyBhbmQgJENPTFVNTlMgZW52aXJvbm1l bnQgdmFyaWFibGVzIHRvIHNldCBpdHMgaWRlYSBvZiB0aGUKKysgICAgd2luZG93IHNpemUgYmVm b3JlIGludGVycm9nYXRpbmcgdGhlIGtlcm5lbC4gKi8KKytpbnQgcmxfcHJlZmVyX2Vudl93aW5z aXplID0gMDsKKyAKKyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqICovCisgLyoJCQkJCQkJCSAgICAqLworQEAgLTkzLDEy ICsxMDcsMTIgQEAgc3RhdGljIGNoYXIgKnRlcm1fc3RyaW5nX2J1ZmZlciA9IChjaGFyICopTlVM TDsKKyAKKyBzdGF0aWMgaW50IHRjYXBfaW5pdGlhbGl6ZWQ7CisgCistI2lmICFkZWZpbmVkIChf X2xpbnV4X18pCisrI2lmICFkZWZpbmVkIChfX2xpbnV4X18pICYmICFkZWZpbmVkIChOQ1VSU0VT X1ZFUlNJT04pCisgIyAgaWYgZGVmaW5lZCAoX19FTVhfXykgfHwgZGVmaW5lZCAoTkVFRF9FWFRF Uk5fUEMpCisgZXh0ZXJuIAorICMgIGVuZGlmIC8qIF9fRU1YX18gfHwgTkVFRF9FWFRFUk5fUEMg Ki8KKyBjaGFyIFBDLCAqQkMsICpVUDsKKy0jZW5kaWYgLyogX19saW51eF9fICovCisrI2VuZGlm IC8qICFfX2xpbnV4X18gJiYgIU5DVVJTRVNfVkVSU0lPTiAqLworIAorIC8qIFNvbWUgc3RyaW5n cyB0byBjb250cm9sIHRlcm1pbmFsIGFjdGlvbnMuICBUaGVzZSBhcmUgb3V0cHV0IGJ5IHRwdXRz ICgpLiAqLworIGNoYXIgKl9ybF90ZXJtX2NscmVvbDsKK0BAIC0xMjIsOSArMTM2LDcgQEAgY2hh ciAqX3JsX3Rlcm1fSUM7CisgY2hhciAqX3JsX3Rlcm1fZGM7CisgY2hhciAqX3JsX3Rlcm1fREM7 CisgCistI2lmIGRlZmluZWQgKEhBQ0tfVEVSTUNBUF9NT1RJT04pCisgY2hhciAqX3JsX3Rlcm1f Zm9yd2FyZF9jaGFyOworLSNlbmRpZiAgLyogSEFDS19URVJNQ0FQX01PVElPTiAqLworIAorIC8q IEhvdyB0byBnbyB1cCBhIGxpbmUuICovCisgY2hhciAqX3JsX3Rlcm1fdXA7CitAQCAtMTk1LDYg KzIwNywyNiBAQCBfZW14X2dldF9zY3JlZW5zaXplIChzd3AsIHNocCkKKyB9CisgI2VuZGlmCisg CisrI2lmIGRlZmluZWQgKF9fTUlOR1czMl9fKQorK3N0YXRpYyB2b2lkCisrX3dpbl9nZXRfc2Ny ZWVuc2l6ZSAoc3dwLCBzaHApCisrICAgICBpbnQgKnN3cCwgKnNocDsKKyt7CisrICBIQU5ETEUg aENvbk91dDsKKysgIENPTlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPIHNjcjsKKysKKysgIGhDb25P dXQgPSBHZXRTdGRIYW5kbGUgKFNURF9PVVRQVVRfSEFORExFKTsKKysgIGlmIChoQ29uT3V0ICE9 IElOVkFMSURfSEFORExFX1ZBTFVFKQorKyAgICB7CisrICAgICAgaWYgKEdldENvbnNvbGVTY3Jl ZW5CdWZmZXJJbmZvIChoQ29uT3V0LCAmc2NyKSkKKysJeworKwkgICpzd3AgPSBzY3IuZHdTaXpl Llg7CisrCSAgKnNocCA9IHNjci5zcldpbmRvdy5Cb3R0b20gLSBzY3Iuc3JXaW5kb3cuVG9wICsg MTsKKysJfQorKyAgICB9CisrfQorKyNlbmRpZgorKworIC8qIEdldCByZWFkbGluZSdzIGlkZWEg b2YgdGhlIHNjcmVlbiBzaXplLiAgVFRZIGlzIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4KKyAgICB0 byB0aGUgdGVybWluYWwuICBJZiBJR05PUkVfRU5WIGlzIHRydWUsIHdlIGRvIG5vdCBwYXkgYXR0 ZW50aW9uIHRvIHRoZQorICAgIHZhbHVlcyBvZiAkTElORVMgYW5kICRDT0xVTU5TLiAgVGhlIHRl c3RzIGZvciBURVJNX1NUUklOR19CVUZGRVIgYmVpbmcKK0BAIC0yMzMsNyArMjY1LDkgQEAgX3Js X2dldF9zY3JlZW5fc2l6ZSAodHR5LCBpZ25vcmVfZW52KQorICNlbmRpZgorIAorICNpZiBkZWZp bmVkIChfX0VNWF9fKQorLSAgX2VteF9nZXRfc2NyZWVuc2l6ZSAoJl9ybF9zY3JlZW53aWR0aCwg Jl9ybF9zY3JlZW5oZWlnaHQpOworKyAgX2VteF9nZXRfc2NyZWVuc2l6ZSAoJndjLCAmd3IpOwor KyNlbGlmIGRlZmluZWQgKF9fTUlOR1czMl9fKQorKyAgX3dpbl9nZXRfc2NyZWVuc2l6ZSAoJndj LCAmd3IpOworICNlbmRpZgorIAorICAgaWYgKGlnbm9yZV9lbnYgfHwgcmxfcHJlZmVyX2Vudl93 aW5zaXplID09IDApCitAQCAtMzQ3LDI0ICszODEsMjQgQEAgcmxfcmVzZXRfc2NyZWVuX3NpemUg KCkKKyB2b2lkCisgcmxfcmVzaXplX3Rlcm1pbmFsICgpCisgeworLSAgaWYgKHJlYWRsaW5lX2Vj aG9pbmdfcCkKKysgIF9ybF9nZXRfc2NyZWVuX3NpemUgKGZpbGVubyAocmxfaW5zdHJlYW0pLCAx KTsKKysgIGlmIChfcmxfZWNob2luZ19wKQorICAgICB7CistICAgICAgX3JsX2dldF9zY3JlZW5f c2l6ZSAoZmlsZW5vIChybF9pbnN0cmVhbSksIDEpOworICAgICAgIGlmIChDVVNUT01fUkVESVNQ TEFZX0ZVTkMgKCkpCisgCXJsX2ZvcmNlZF91cGRhdGVfZGlzcGxheSAoKTsKKy0gICAgICBlbHNl CisrICAgICAgZWxzZSBpZiAoUkxfSVNTVEFURShSTF9TVEFURV9SRURJU1BMQVlJTkcpID09IDAp CisgCV9ybF9yZWRpc3BsYXlfYWZ0ZXJfc2lnd2luY2ggKCk7CisgICAgIH0KKyB9CisgCisgc3Ry dWN0IF90Y19zdHJpbmcgeworLSAgICAgY29uc3QgY2hhciAqdGNfdmFyOworKyAgICAgY29uc3Qg Y2hhciAqIGNvbnN0IHRjX3ZhcjsKKyAgICAgIGNoYXIgKip0Y192YWx1ZTsKKyB9OworIAorIC8q IFRoaXMgc2hvdWxkIGJlIGtlcHQgc29ydGVkLCBqdXN0IGluIGNhc2Ugd2UgZGVjaWRlIHRvIGNo YW5nZSB0aGUKKyAgICBzZWFyY2ggYWxnb3JpdGhtIHRvIHNvbWV0aGluZyBzbWFydGVyLiAqLwor LXN0YXRpYyBzdHJ1Y3QgX3RjX3N0cmluZyB0Y19zdHJpbmdzW10gPQorK3N0YXRpYyBjb25zdCBz dHJ1Y3QgX3RjX3N0cmluZyB0Y19zdHJpbmdzW10gPQorIHsKKyAgIHsgIkA3IiwgJl9ybF90ZXJt X2F0NyB9LAorICAgeyAiREMiLCAmX3JsX3Rlcm1fREMgfSwKK0BAIC0zODksOSArNDIzLDcgQEAg c3RhdGljIHN0cnVjdCBfdGNfc3RyaW5nIHRjX3N0cmluZ3NbXSA9CisgICB7ICJsZSIsICZfcmxf dGVybV9iYWNrc3BhY2UgfSwKKyAgIHsgIm1tIiwgJl9ybF90ZXJtX21tIH0sCisgICB7ICJtbyIs ICZfcmxfdGVybV9tbyB9LAorLSNpZiBkZWZpbmVkIChIQUNLX1RFUk1DQVBfTU9USU9OKQorICAg eyAibmQiLCAmX3JsX3Rlcm1fZm9yd2FyZF9jaGFyIH0sCistI2VuZGlmCisgICB7ICJwYyIsICZf cmxfdGVybV9wYyB9LAorICAgeyAidXAiLCAmX3JsX3Rlcm1fdXAgfSwKKyAgIHsgInZiIiwgJl9y bF92aXNpYmxlX2JlbGwgfSwKK0BAIC01MDUsOSArNTM3LDcgQEAgX3JsX2luaXRfdGVybWluYWxf aW8gKHRlcm1pbmFsX25hbWUpCisgICAgICAgX3JsX3Rlcm1fa3MgPSBfcmxfdGVybV9rZSA9IF9y bF90ZXJtX2F0NyA9IChjaGFyICopTlVMTDsKKyAgICAgICBfcmxfdGVybV9tbSA9IF9ybF90ZXJt X21vID0gKGNoYXIgKilOVUxMOworICAgICAgIF9ybF90ZXJtX3ZlID0gX3JsX3Rlcm1fdnMgPSAo Y2hhciAqKU5VTEw7CistI2lmIGRlZmluZWQgKEhBQ0tfVEVSTUNBUF9NT1RJT04pCistICAgICAg dGVybV9mb3J3YXJkX2NoYXIgPSAoY2hhciAqKU5VTEw7CistI2VuZGlmCisrICAgICAgX3JsX3Rl cm1fZm9yd2FyZF9jaGFyID0gKGNoYXIgKilOVUxMOworICAgICAgIF9ybF90ZXJtaW5hbF9jYW5f aW5zZXJ0ID0gdGVybV9oYXNfbWV0YSA9IDA7CisgCisgICAgICAgLyogUmVhc29uYWJsZSBkZWZh dWx0cyBmb3IgdGdvdG8oKS4gIFJlYWRsaW5lIGN1cnJlbnRseSBvbmx5IHVzZXMKK0BAIC01NDYs OCArNTc2LDggQEAgX3JsX2luaXRfdGVybWluYWxfaW8gKHRlcm1pbmFsX25hbWUpCisgCisgICAv KiBDaGVjayB0byBzZWUgaWYgdGhpcyB0ZXJtaW5hbCBoYXMgYSBtZXRhIGtleSBhbmQgY2xlYXIg dGhlIGNhcGFiaWxpdHkKKyAgICAgIHZhcmlhYmxlcyBpZiB0aGVyZSBpcyBub25lLiAqLworLSAg dGVybV9oYXNfbWV0YSA9ICh0Z2V0ZmxhZyAoImttIikgfHwgdGdldGZsYWcgKCJNVCIpKTsKKy0g IGlmICghdGVybV9oYXNfbWV0YSkKKysgIHRlcm1faGFzX21ldGEgPSB0Z2V0ZmxhZyAoImttIikg IT0gMDsKKysgIGlmICh0ZXJtX2hhc19tZXRhID09IDApCisgICAgIF9ybF90ZXJtX21tID0gX3Js X3Rlcm1fbW8gPSAoY2hhciAqKU5VTEw7CisgCisgI2VuZGlmIC8qICFfX01TRE9TX18gKi8KK0BA IC02NjMsMTAgKzY5MywxMCBAQCBfcmxfYmFja3NwYWNlIChjb3VudCkKKyBpbnQKKyBybF9jcmxm ICgpCisgeworLSNpZiBkZWZpbmVkIChORVdfVFRZX0RSSVZFUikKKysjaWYgZGVmaW5lZCAoTkVX X1RUWV9EUklWRVIpIHx8IGRlZmluZWQgKF9fTUlOVF9fKQorICAgaWYgKF9ybF90ZXJtX2NyKQor ICAgICB0cHV0cyAoX3JsX3Rlcm1fY3IsIDEsIF9ybF9vdXRwdXRfY2hhcmFjdGVyX2Z1bmN0aW9u KTsKKy0jZW5kaWYgLyogTkVXX1RUWV9EUklWRVIgKi8KKysjZW5kaWYgLyogTkVXX1RUWV9EUklW RVIgfHwgX19NSU5UX18gKi8KKyAgIHB1dGMgKCdcbicsIF9ybF9vdXRfc3RyZWFtKTsKKyAgIHJl dHVybiAwOworIH0KK0BAIC02NzUsNyArNzA1LDcgQEAgcmxfY3JsZiAoKQorIGludAorIHJsX2Rp bmcgKCkKKyB7CistICBpZiAocmVhZGxpbmVfZWNob2luZ19wKQorKyAgaWYgKF9ybF9lY2hvaW5n X3ApCisgICAgIHsKKyAgICAgICBzd2l0Y2ggKF9ybF9iZWxsX3ByZWZlcmVuY2UpCisgICAgICAg ICB7CistLS0gYS9yZWFkbGluZS90ZXh0LmMKKysrKyBiL3JlYWRsaW5lL3RleHQuYworQEAgLTEs MjQgKzEsMjQgQEAKKyAvKiB0ZXh0LmMgLS0gdGV4dCBoYW5kbGluZyBjb21tYW5kcyBmb3IgcmVh ZGxpbmUuICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMTAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBS ZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCistICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0 IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKysgICBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJy YXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0 IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJy YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0CistICAgYW5kL29y IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAgIFRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIFJlYWRsaW5lIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBl ZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxl IGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBhIGNv cHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s CistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAq LworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworKworICNkZWZpbmUgUkVBRExJTkVf TElCUkFSWQorIAorICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19IKQorQEAgLTY3LDYgKzY3LDEw IEBAIHN0YXRpYyBpbnQgX3JsX2luc2VydF9uZXh0X2NhbGxiYWNrIFBBUkFNUygoX3JsX2NhbGxi YWNrX2dlbmVyaWNfYXJnICopKTsKKyBzdGF0aWMgaW50IF9ybF9jaGFyX3NlYXJjaF9jYWxsYmFj ayBQQVJBTVMoKF9ybF9jYWxsYmFja19nZW5lcmljX2FyZyAqKSk7CisgI2VuZGlmCisgCisrLyog VGhlIGxhcmdlc3QgY2h1bmsgb2YgdGV4dCB0aGF0IGNhbiBiZSBpbnNlcnRlZCBpbiBvbmUgY2Fs bCB0bworKyAgIHJsX2luc2VydF90ZXh0LiAgVGV4dCBibG9ja3MgbGFyZ2VyIHRoYW4gdGhpcyBh cmUgZGl2aWRlZC4gKi8KKysjZGVmaW5lIFRFWFRfQ09VTlRfTUFYCTEwMjQKKysKKyAvKiAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqICovCisgLyoJCQkJCQkJCSAgICAqLworIC8qCQkJSW5zZXJ0IGFuZCBEZWxldGUJCQkgICAg Ki8KK0BAIC0xNDYsNyArMTUwLDcgQEAgcmxfZGVsZXRlX3RleHQgKGZyb20sIHRvKQorICAgaWYg KF9ybF9kb2luZ19hbl91bmRvID09IDApCisgICAgIHJsX2FkZF91bmRvIChVTkRPX0RFTEVURSwg ZnJvbSwgdG8sIHRleHQpOworICAgZWxzZQorLSAgICBmcmVlICh0ZXh0KTsKKysgICAgeGZyZWUg KHRleHQpOworIAorICAgcmxfZW5kIC09IGRpZmY7CisgICBybF9saW5lX2J1ZmZlcltybF9lbmRd ID0gJ1wwJzsKK0BAIC0xODUsMTAgKzE4OSwxMyBAQCBfcmxfcmVwbGFjZV90ZXh0ICh0ZXh0LCBz dGFydCwgZW5kKQorIHsKKyAgIGludCBuOworIAorKyAgbiA9IDA7CisgICBybF9iZWdpbl91bmRv X2dyb3VwICgpOworLSAgcmxfZGVsZXRlX3RleHQgKHN0YXJ0LCBlbmQgKyAxKTsKKysgIGlmIChz dGFydCA8PSBlbmQpCisrICAgIHJsX2RlbGV0ZV90ZXh0IChzdGFydCwgZW5kICsgMSk7CisgICBy bF9wb2ludCA9IHN0YXJ0OworLSAgbiA9IHJsX2luc2VydF90ZXh0ICh0ZXh0KTsKKysgIGlmICgq dGV4dCkKKysgICAgbiA9IHJsX2luc2VydF90ZXh0ICh0ZXh0KTsKKyAgIHJsX2VuZF91bmRvX2dy b3VwICgpOworIAorICAgcmV0dXJuIG47CitAQCAtMjU4LDExICsyNjUsMTMgQEAgcmxfZm9yd2Fy ZF9ieXRlIChjb3VudCwga2V5KQorIAorICAgaWYgKGNvdW50ID4gMCkKKyAgICAgeworLSAgICAg IGludCBlbmQgPSBybF9wb2ludCArIGNvdW50OworKyAgICAgIGludCBlbmQsIGxlbmQ7CisrCisr ICAgICAgZW5kID0gcmxfcG9pbnQgKyBjb3VudDsKKyAjaWYgZGVmaW5lZCAoVklfTU9ERSkKKy0g ICAgICBpbnQgbGVuZCA9IHJsX2VuZCA+IDAgPyBybF9lbmQgLSAocmxfZWRpdGluZ19tb2RlID09 IHZpX21vZGUpIDogcmxfZW5kOworKyAgICAgIGxlbmQgPSBybF9lbmQgPiAwID8gcmxfZW5kIC0g KFZJX0NPTU1BTkRfTU9ERSgpKSA6IHJsX2VuZDsKKyAjZWxzZQorLSAgICAgIGludCBsZW5kID0g cmxfZW5kOworKyAgICAgIGxlbmQgPSBybF9lbmQ7CisgI2VuZGlmCisgCisgICAgICAgaWYgKGVu ZCA+IGxlbmQpCitAQCAtMjgwLDYgKzI4OSwzMSBAQCBybF9mb3J3YXJkX2J5dGUgKGNvdW50LCBr ZXkpCisgICByZXR1cm4gMDsKKyB9CisgCisraW50CisrX3JsX2ZvcndhcmRfY2hhcl9pbnRlcm5h bCAoY291bnQpCisrICAgICBpbnQgY291bnQ7CisreworKyAgaW50IHBvaW50OworKworKyNpZiBk ZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQorKyAgcG9pbnQgPSBfcmxfZmluZF9uZXh0X21iY2hh ciAocmxfbGluZV9idWZmZXIsIHJsX3BvaW50LCBjb3VudCwgTUJfRklORF9OT05aRVJPKTsKKysK KysjaWYgZGVmaW5lZCAoVklfTU9ERSkKKysgIGlmIChwb2ludCA+PSBybF9lbmQgJiYgVklfQ09N TUFORF9NT0RFKCkpCisrICAgIHBvaW50ID0gX3JsX2ZpbmRfcHJldl9tYmNoYXIgKHJsX2xpbmVf YnVmZmVyLCBybF9lbmQsIE1CX0ZJTkRfTk9OWkVSTyk7CisrI2VuZGlmCisrCisrICAgIGlmIChy bF9lbmQgPCAwKQorKwlybF9lbmQgPSAwOworKyNlbHNlCisrICBwb2ludCA9IHJsX3BvaW50ICsg Y291bnQ7CisrICBpZiAocG9pbnQgPiBybF9lbmQpCisrICAgIHBvaW50ID0gcmxfZW5kOworKyNl bmRpZgorKworKyAgcmV0dXJuIChwb2ludCk7CisrfQorKworICNpZiBkZWZpbmVkIChIQU5ETEVf TVVMVElCWVRFKQorIC8qIE1vdmUgZm9yd2FyZCBDT1VOVCBjaGFyYWN0ZXJzLiAqLworIGludAor QEAgLTI5NiwyMCArMzMwLDE4IEBAIHJsX2ZvcndhcmRfY2hhciAoY291bnQsIGtleSkKKyAKKyAg IGlmIChjb3VudCA+IDApCisgICAgIHsKKy0gICAgICBwb2ludCA9IF9ybF9maW5kX25leHRfbWJj aGFyIChybF9saW5lX2J1ZmZlciwgcmxfcG9pbnQsIGNvdW50LCBNQl9GSU5EX05PTlpFUk8pOwor KyAgICAgIGlmIChybF9wb2ludCA9PSBybF9lbmQgJiYgRU1BQ1NfTU9ERSgpKQorKwl7CisrCSAg cmxfZGluZyAoKTsKKysJICByZXR1cm4gMDsKKysJfQorIAorLSNpZiBkZWZpbmVkIChWSV9NT0RF KQorLSAgICAgIGlmIChybF9lbmQgPD0gcG9pbnQgJiYgcmxfZWRpdGluZ19tb2RlID09IHZpX21v ZGUpCistCXBvaW50ID0gX3JsX2ZpbmRfcHJldl9tYmNoYXIgKHJsX2xpbmVfYnVmZmVyLCBybF9l bmQsIE1CX0ZJTkRfTk9OWkVSTyk7CistI2VuZGlmCisrICAgICAgcG9pbnQgPSBfcmxfZm9yd2Fy ZF9jaGFyX2ludGVybmFsIChjb3VudCk7CisgCisgICAgICAgaWYgKHJsX3BvaW50ID09IHBvaW50 KQorIAlybF9kaW5nICgpOworIAorICAgICAgIHJsX3BvaW50ID0gcG9pbnQ7CistCistICAgICAg aWYgKHJsX2VuZCA8IDApCistCXJsX2VuZCA9IDA7CisgICAgIH0KKyAKKyAgIHJldHVybiAwOwor QEAgLTU2NSw2ICs1OTcsMjEgQEAgcmxfY2xlYXJfc2NyZWVuIChjb3VudCwga2V5KQorIH0KKyAK KyBpbnQKKytybF9za2lwX2NzaV9zZXF1ZW5jZSAoY291bnQsIGtleSkKKysgICAgIGludCBjb3Vu dCwga2V5OworK3sKKysgIGludCBjaDsKKysKKysgIFJMX1NFVFNUQVRFIChSTF9TVEFURV9NT1JF SU5QVVQpOworKyAgZG8KKysgICAgY2ggPSBybF9yZWFkX2tleSAoKTsKKysgIHdoaWxlIChjaCA+ PSAweDIwICYmIGNoIDwgMHg0MCk7CisrICBSTF9VTlNFVFNUQVRFIChSTF9TVEFURV9NT1JFSU5Q VVQpOworKworKyAgcmV0dXJuIDA7CisrfQorKworK2ludAorIHJsX2Fycm93X2tleXMgKGNvdW50 LCBjKQorICAgICAgaW50IGNvdW50LCBjOworIHsKK0BAIC03MDEsNyArNzQ4LDcgQEAgX3JsX2lu c2VydF9jaGFyIChjb3VudCwgYykKKyAJICAKKyAgIC8qIElmIHdlIGNhbiBvcHRpbWl6ZSwgdGhl biBkbyBpdC4gIEJ1dCBkb24ndCBsZXQgcGVvcGxlIGNyYXNoCisgICAgICByZWFkbGluZSBiZWNh dXNlIG9mIGV4dHJhIGxhcmdlIGFyZ3VtZW50cy4gKi8KKy0gIGlmIChjb3VudCA+IDEgJiYgY291 bnQgPD0gMTAyNCkKKysgIGlmIChjb3VudCA+IDEgJiYgY291bnQgPD0gVEVYVF9DT1VOVF9NQVgp CisgICAgIHsKKyAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKKyAgICAgICBzdHJpbmdf c2l6ZSA9IGNvdW50ICogaW5jb21pbmdfbGVuZ3RoOworQEAgLTcyNCwxNiArNzcxLDE2IEBAIF9y bF9pbnNlcnRfY2hhciAoY291bnQsIGMpCisgCisgICAgICAgc3RyaW5nW2ldID0gJ1wwJzsKKyAg ICAgICBybF9pbnNlcnRfdGV4dCAoc3RyaW5nKTsKKy0gICAgICBmcmVlIChzdHJpbmcpOworKyAg ICAgIHhmcmVlIChzdHJpbmcpOworIAorICAgICAgIHJldHVybiAwOworICAgICB9CisgCistICBp ZiAoY291bnQgPiAxMDI0KQorKyAgaWYgKGNvdW50ID4gVEVYVF9DT1VOVF9NQVgpCisgICAgIHsK KyAgICAgICBpbnQgZGVjcmVhc2VyOworICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQor LSAgICAgIHN0cmluZ19zaXplID0gaW5jb21pbmdfbGVuZ3RoICogMTAyNDsKKysgICAgICBzdHJp bmdfc2l6ZSA9IGluY29taW5nX2xlbmd0aCAqIFRFWFRfQ09VTlRfTUFYOworICAgICAgIHN0cmlu ZyA9IChjaGFyICopeG1hbGxvYyAoMSArIHN0cmluZ19zaXplKTsKKyAKKyAgICAgICBpID0gMDsK K0BAIC03NDUsMjQgKzc5MiwyNCBAQCBfcmxfaW5zZXJ0X2NoYXIgKGNvdW50LCBjKQorIAorICAg ICAgIHdoaWxlIChjb3VudCkKKyAJeworLQkgIGRlY3JlYXNlciA9IChjb3VudCA+IDEwMjQpID8g MTAyNCA6IGNvdW50OworKwkgIGRlY3JlYXNlciA9IChjb3VudCA+IFRFWFRfQ09VTlRfTUFYKSA/ IFRFWFRfQ09VTlRfTUFYIDogY291bnQ7CisgCSAgc3RyaW5nW2RlY3JlYXNlcippbmNvbWluZ19s ZW5ndGhdID0gJ1wwJzsKKyAJICBybF9pbnNlcnRfdGV4dCAoc3RyaW5nKTsKKyAJICBjb3VudCAt PSBkZWNyZWFzZXI7CisgCX0KKyAKKy0gICAgICBmcmVlIChzdHJpbmcpOworKyAgICAgIHhmcmVl IChzdHJpbmcpOworICAgICAgIGluY29taW5nX2xlbmd0aCA9IDA7CisgICAgICAgc3RvcmVkX2Nv dW50ID0gMDsKKyAjZWxzZSAvKiAhSEFORExFX01VTFRJQllURSAqLworLSAgICAgIGNoYXIgc3Ry WzEwMjQrMV07CisrICAgICAgY2hhciBzdHJbVEVYVF9DT1VOVF9NQVgrMV07CisgCistICAgICAg Zm9yIChpID0gMDsgaSA8IDEwMjQ7IGkrKykKKysgICAgICBmb3IgKGkgPSAwOyBpIDwgVEVYVF9D T1VOVF9NQVg7IGkrKykKKyAJc3RyW2ldID0gYzsKKyAKKyAgICAgICB3aGlsZSAoY291bnQpCisg CXsKKy0JICBkZWNyZWFzZXIgPSAoY291bnQgPiAxMDI0ID8gMTAyNCA6IGNvdW50KTsKKysJICBk ZWNyZWFzZXIgPSAoY291bnQgPiBURVhUX0NPVU5UX01BWCA/IFRFWFRfQ09VTlRfTUFYIDogY291 bnQpOworIAkgIHN0cltkZWNyZWFzZXJdID0gJ1wwJzsKKyAJICBybF9pbnNlcnRfdGV4dCAoc3Ry KTsKKyAJICBjb3VudCAtPSBkZWNyZWFzZXI7CitAQCAtNzc3LDggKzgyNCw5IEBAIF9ybF9pbnNl cnRfY2hhciAoY291bnQsIGMpCisgICAgICAgLyogV2UgYXJlIGluc2VydGluZyBhIHNpbmdsZSBj aGFyYWN0ZXIuCisgCSBJZiB0aGVyZSBpcyBwZW5kaW5nIGlucHV0LCB0aGVuIG1ha2UgYSBzdHJp bmcgb2YgYWxsIG9mIHRoZQorIAkgcGVuZGluZyBjaGFyYWN0ZXJzIHRoYXQgYXJlIGJvdW5kIHRv IHJsX2luc2VydCwgYW5kIGluc2VydAorLQkgdGhlbSBhbGwuICovCistICAgICAgaWYgKF9ybF9h bnlfdHlwZWluICgpKQorKwkgdGhlbSBhbGwuICBEb24ndCBkbyB0aGlzIGlmIHdlJ3JlIGN1cnJl bnQgcmVhZGluZyBpbnB1dCBmcm9tCisrCSBhIG1hY3JvLiAqLworKyAgICAgIGlmICgoUkxfSVNT VEFURSAoUkxfU1RBVEVfTUFDUk9JTlBVVCkgPT0gMCkgJiYgX3JsX2FueV90eXBlaW4gKCkpCisg CV9ybF9pbnNlcnRfdHlwZWluIChjKTsKKyAgICAgICBlbHNlCisgCXsKK0BAIC04NTcsNiArOTA1 LDkgQEAgX3JsX2luc2VydF9uZXh0IChjb3VudCkKKyAgIGMgPSBybF9yZWFkX2tleSAoKTsKKyAg IFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfTU9SRUlOUFVUKTsKKyAKKysgIGlmIChjIDwgMCkKKysg ICAgcmV0dXJuIC0xOworKworICNpZiBkZWZpbmVkIChIQU5ETEVfU0lHTkFMUykKKyAgIGlmIChS TF9JU1NUQVRFIChSTF9TVEFURV9DQUxMQkFDSykgPT0gMCkKKyAgICAgX3JsX3Jlc3RvcmVfdHR5 X3NpZ25hbHMgKCk7CitAQCAtOTQwLDcgKzk5MSw3IEBAIHJsX25ld2xpbmUgKGNvdW50LCBrZXkp CisgICBpZiAocmxfZXJhc2VfZW1wdHlfbGluZSAmJiBybF9wb2ludCA9PSAwICYmIHJsX2VuZCA9 PSAwKQorICAgICByZXR1cm4gMDsKKyAKKy0gIGlmIChyZWFkbGluZV9lY2hvaW5nX3ApCisrICBp ZiAoX3JsX2VjaG9pbmdfcCkKKyAgICAgX3JsX3VwZGF0ZV9maW5hbCAoKTsKKyAgIHJldHVybiAw OworIH0KK0BAIC0xMDcxLDYgKzExMjIsOCBAQCBpbnQKKyBybF9kZWxldGUgKGNvdW50LCBrZXkp CisgICAgICBpbnQgY291bnQsIGtleTsKKyB7CisrICBpbnQgeHBvaW50OworKworICAgaWYgKGNv dW50IDwgMCkKKyAgICAgcmV0dXJuIChfcmxfcnVib3V0X2NoYXIgKC1jb3VudCwga2V5KSk7Cisg CitAQCAtMTA4MiwyMSArMTEzNSwxOSBAQCBybF9kZWxldGUgKGNvdW50LCBrZXkpCisgCisgICBp ZiAoY291bnQgPiAxIHx8IHJsX2V4cGxpY2l0X2FyZykKKyAgICAgeworLSAgICAgIGludCBvcmln X3BvaW50ID0gcmxfcG9pbnQ7CisrICAgICAgeHBvaW50ID0gcmxfcG9pbnQ7CisgICAgICAgaWYg KE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKKyAJcmxfZm9yd2FyZF9j aGFyIChjb3VudCwga2V5KTsKKyAgICAgICBlbHNlCisgCXJsX2ZvcndhcmRfYnl0ZSAoY291bnQs IGtleSk7CisgCistICAgICAgcmxfa2lsbF90ZXh0IChvcmlnX3BvaW50LCBybF9wb2ludCk7Cist ICAgICAgcmxfcG9pbnQgPSBvcmlnX3BvaW50OworKyAgICAgIHJsX2tpbGxfdGV4dCAoeHBvaW50 LCBybF9wb2ludCk7CisrICAgICAgcmxfcG9pbnQgPSB4cG9pbnQ7CisgICAgIH0KKyAgIGVsc2UK KyAgICAgeworLSAgICAgIGludCBuZXdfcG9pbnQ7CistCistICAgICAgbmV3X3BvaW50ID0gTUJf TkVYVENIQVIgKHJsX2xpbmVfYnVmZmVyLCBybF9wb2ludCwgMSwgTUJfRklORF9OT05aRVJPKTsK Ky0gICAgICBybF9kZWxldGVfdGV4dCAocmxfcG9pbnQsIG5ld19wb2ludCk7CisrICAgICAgeHBv aW50ID0gTUJfTkVYVENIQVIgKHJsX2xpbmVfYnVmZmVyLCBybF9wb2ludCwgMSwgTUJfRklORF9O T05aRVJPKTsKKysgICAgICBybF9kZWxldGVfdGV4dCAocmxfcG9pbnQsIHhwb2ludCk7CisgICAg IH0KKyAgIHJldHVybiAwOworIH0KK0BAIC0xMTIwLDcgKzExNzEsNyBAQCBpbnQKKyBybF9kZWxl dGVfaG9yaXpvbnRhbF9zcGFjZSAoY291bnQsIGlnbm9yZSkKKyAgICAgIGludCBjb3VudCwgaWdu b3JlOworIHsKKy0gIGludCBzdGFydCA9IHJsX3BvaW50OworKyAgaW50IHN0YXJ0OworIAorICAg d2hpbGUgKHJsX3BvaW50ICYmIHdoaXRlc3BhY2UgKHJsX2xpbmVfYnVmZmVyW3JsX3BvaW50IC0g MV0pKQorICAgICBybF9wb2ludC0tOworQEAgLTEyMzcsOCArMTI4OCw5IEBAIHJsX2NoYW5nZV9j YXNlIChjb3VudCwgb3ApCisgI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCisgICB3Y2hh cl90IHdjLCBud2M7CisgICBjaGFyIG1iW01CX0xFTl9NQVgrMV07CistICBpbnQgbWJsZW4sIHA7 CistICBtYnN0YXRlX3QgcHM7CisrICBpbnQgbWxlbjsKKysgIHNpemVfdCBtOworKyAgbWJzdGF0 ZV90IG1wczsKKyAjZW5kaWYKKyAKKyAgIHN0YXJ0ID0gcmxfcG9pbnQ7CitAQCAtMTI1NSw3ICsx MzA3LDcgQEAgcmxfY2hhbmdlX2Nhc2UgKGNvdW50LCBvcCkKKyAgICAgU1dBUCAoc3RhcnQsIGVu ZCk7CisgCisgI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCistICBtZW1zZXQgKCZwcywg MCwgc2l6ZW9mIChtYnN0YXRlX3QpKTsKKysgIG1lbXNldCAoJm1wcywgMCwgc2l6ZW9mIChtYnN0 YXRlX3QpKTsKKyAjZW5kaWYKKyAKKyAgIC8qIFdlIGFyZSBnb2luZyB0byBtb2RpZnkgc29tZSB0 ZXh0LCBzbyBsZXQncyBwcmVwYXJlIHRvIHVuZG8gaXQuICovCitAQCAtMTI5MCwxNSArMTM0Miwx OSBAQCBybF9jaGFuZ2VfY2FzZSAoY291bnQsIG9wKQorICNpZiBkZWZpbmVkIChIQU5ETEVfTVVM VElCWVRFKQorICAgICAgIGVsc2UKKyAJeworLQkgIG1icnRvd2MgKCZ3YywgcmxfbGluZV9idWZm ZXIgKyBzdGFydCwgZW5kIC0gc3RhcnQsICZwcyk7CisrCSAgbSA9IG1icnRvd2MgKCZ3Yywgcmxf bGluZV9idWZmZXIgKyBzdGFydCwgZW5kIC0gc3RhcnQsICZtcHMpOworKwkgIGlmIChNQl9JTlZB TElEQ0ggKG0pKQorKwkgICAgd2MgPSAod2NoYXJfdClybF9saW5lX2J1ZmZlcltzdGFydF07Cisr CSAgZWxzZSBpZiAoTUJfTlVMTFdDSCAobSkpCisrCSAgICB3YyA9IEwnXDAnOworIAkgIG53YyA9 IChub3AgPT0gVXBDYXNlKSA/IF9ybF90b193dXBwZXIgKHdjKSA6IF9ybF90b193bG93ZXIgKHdj KTsKKyAJICBpZiAgKG53YyAhPSB3YykJLyogIGp1c3Qgc2tpcCB1bmNoYW5nZWQgY2hhcmFjdGVy cyAqLworIAkgICAgeworLQkgICAgICBtYmxlbiA9IHdjcnRvbWIgKG1iLCBud2MsICZwcyk7Cist CSAgICAgIGlmIChtYmxlbiA+IDApCistCQltYlttYmxlbl0gPSAnXDAnOworKwkgICAgICBtbGVu ID0gd2NydG9tYiAobWIsIG53YywgJm1wcyk7CisrCSAgICAgIGlmIChtbGVuID4gMCkKKysJCW1i W21sZW5dID0gJ1wwJzsKKyAJICAgICAgLyogQXNzdW1lIHRoZSBzYW1lIHdpZHRoICovCistCSAg ICAgIHN0cm5jcHkgKHJsX2xpbmVfYnVmZmVyICsgc3RhcnQsIG1iLCBtYmxlbik7CisrCSAgICAg IHN0cm5jcHkgKHJsX2xpbmVfYnVmZmVyICsgc3RhcnQsIG1iLCBtbGVuKTsKKyAJICAgIH0KKyAJ fQorICNlbmRpZgorQEAgLTEzNzEsOCArMTQyNyw4IEBAIHJsX3RyYW5zcG9zZV93b3JkcyAoY291 bnQsIGtleSkKKyAKKyAgIC8qIEkgdGhpbmsgdGhhdCBkb2VzIGl0LiAqLworICAgcmxfZW5kX3Vu ZG9fZ3JvdXAgKCk7CistICBmcmVlICh3b3JkMSk7CistICBmcmVlICh3b3JkMik7CisrICB4ZnJl ZSAod29yZDEpOworKyAgeGZyZWUgKHdvcmQyKTsKKyAKKyAgIHJldHVybiAwOworIH0KK0BAIC0x NDMxLDcgKzE0ODcsNyBAQCBybF90cmFuc3Bvc2VfY2hhcnMgKGNvdW50LCBrZXkpCisgICBybF9l bmRfdW5kb19ncm91cCAoKTsKKyAKKyAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKKy0g IGZyZWUgKGR1bW15KTsKKysgIHhmcmVlIChkdW1teSk7CisgI2VuZGlmCisgCisgICByZXR1cm4g MDsKK0BAIC0xNDU5LDYgKzE1MTUsOSBAQCBfcmxfY2hhcl9zZWFyY2hfaW50ZXJuYWwgKGNvdW50 LCBkaXIsIHNjaGFyKQorICAgaW50IHByZXBvczsKKyAjZW5kaWYKKyAKKysgIGlmIChkaXIgPT0g MCkKKysgICAgcmV0dXJuIC0xOworKworICAgcG9zID0gcmxfcG9pbnQ7CisgICBpbmMgPSAoZGly IDwgMCkgPyAtMSA6IDE7CisgICB3aGlsZSAoY291bnQpCitAQCAtMTUyMCw2ICsxNTc5LDkgQEAg X3JsX2NoYXJfc2VhcmNoIChjb3VudCwgZmRpciwgYmRpcikKKyAKKyAgIG1iX2xlbiA9IF9ybF9y ZWFkX21iY2hhciAobWJjaGFyLCBNQl9MRU5fTUFYKTsKKyAKKysgIGlmIChtYl9sZW4gPD0gMCkK KysgICAgcmV0dXJuIC0xOworKworICAgaWYgKGNvdW50IDwgMCkKKyAgICAgcmV0dXJuIChfcmxf Y2hhcl9zZWFyY2hfaW50ZXJuYWwgKC1jb3VudCwgYmRpciwgbWJjaGFyLCBtYl9sZW4pKTsKKyAg IGVsc2UKK0BAIC0xNTM2LDYgKzE1OTgsOSBAQCBfcmxfY2hhcl9zZWFyY2ggKGNvdW50LCBmZGly LCBiZGlyKQorICAgYyA9IHJsX3JlYWRfa2V5ICgpOworICAgUkxfVU5TRVRTVEFURShSTF9TVEFU RV9NT1JFSU5QVVQpOworIAorKyAgaWYgKGMgPCAwKQorKyAgICByZXR1cm4gLTE7CisrCisgICBp ZiAoY291bnQgPCAwKQorICAgICByZXR1cm4gKF9ybF9jaGFyX3NlYXJjaF9pbnRlcm5hbCAoLWNv dW50LCBiZGlyLCBjKSk7CisgICBlbHNlCistLS0gYS9yZWFkbGluZS90aWxkZS5jCisrKysgYi9y ZWFkbGluZS90aWxkZS5jCitAQCAtMSwyMyArMSwyMyBAQAorIC8qIHRpbGRlLmMgLS0gVGlsZGUg ZXhwYW5zaW9uIGNvZGUgKH4vZm9vIDo9ICRIT01FL2ZvbykuICovCisgCistLyogQ29weXJpZ2h0 IChDKSAxOTg4LDE5ODkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJp Z2h0IChDKSAxOTg4LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIFJlYWRsaW5lLCBhIGxpYnJhcnkgZm9yIHJlYWRpbmcg bGluZXMKKy0gICBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRp dGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkg KFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRo IGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisgCistICAgUmVhZGxpbmUg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBp dAorLSAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5IHRoZQorLSAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKKy0gICBsYXRlciB2ZXJzaW9uLgor KyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBSZWFkbGluZSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKy0gICBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUKKy0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICAg UmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorIAorICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCBSZWFkbGlu ZTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCistICAg U29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rvbiwg TUEgMDIxMTEgVVNBLiAqLworKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgZGVmaW5lZCAoSEFW RV9DT05GSUdfSCkKKyAjICBpbmNsdWRlIDxjb25maWcuaD4KK0BAIC0yMzYsNyArMjM2LDcgQEAg dGlsZGVfZXhwYW5kIChzdHJpbmcpCisgICAgICAgc3RyaW5nICs9IGVuZDsKKyAKKyAgICAgICBl eHBhbnNpb24gPSB0aWxkZV9leHBhbmRfd29yZCAodGlsZGVfd29yZCk7CistICAgICAgZnJlZSAo dGlsZGVfd29yZCk7CisrICAgICAgeGZyZWUgKHRpbGRlX3dvcmQpOworIAorICAgICAgIGxlbiA9 IHN0cmxlbiAoZXhwYW5zaW9uKTsKKyAjaWZkZWYgX19DWUdXSU5fXworQEAgLTI1MSw3ICsyNTEs NyBAQCB0aWxkZV9leHBhbmQgKHN0cmluZykKKyAJICBzdHJjcHkgKHJlc3VsdCArIHJlc3VsdF9p bmRleCwgZXhwYW5zaW9uKTsKKyAJICByZXN1bHRfaW5kZXggKz0gbGVuOworIAl9CistICAgICAg ZnJlZSAoZXhwYW5zaW9uKTsKKysgICAgICB4ZnJlZSAoZXhwYW5zaW9uKTsKKyAgICAgfQorIAor ICAgcmVzdWx0W3Jlc3VsdF9pbmRleF0gPSAnXDAnOworQEAgLTM3Nyw4ICszNzcsOCBAQCB0aWxk ZV9leHBhbmRfd29yZCAoZmlsZW5hbWUpCisgICAgICAgaWYgKGV4cGFuc2lvbikKKyAJeworIAkg IGRpcm5hbWUgPSBnbHVlX3ByZWZpeF9hbmRfc3VmZml4IChleHBhbnNpb24sIGZpbGVuYW1lLCB1 c2VyX2xlbik7CistCSAgZnJlZSAodXNlcm5hbWUpOworLQkgIGZyZWUgKGV4cGFuc2lvbik7Cisr CSAgeGZyZWUgKHVzZXJuYW1lKTsKKysJICB4ZnJlZSAoZXhwYW5zaW9uKTsKKyAJICByZXR1cm4g KGRpcm5hbWUpOworIAl9CisgICAgIH0KK0BAIC00MDEsMTAgKzQwMSw5IEBAIHRpbGRlX2V4cGFu ZF93b3JkIChmaWxlbmFtZSkKKyAJICBpZiAoZXhwYW5zaW9uKQorIAkgICAgeworIAkgICAgICBk aXJuYW1lID0gZ2x1ZV9wcmVmaXhfYW5kX3N1ZmZpeCAoZXhwYW5zaW9uLCBmaWxlbmFtZSwgdXNl cl9sZW4pOworLQkgICAgICBmcmVlIChleHBhbnNpb24pOworKwkgICAgICB4ZnJlZSAoZXhwYW5z aW9uKTsKKyAJICAgIH0KKyAJfQorLSAgICAgIGZyZWUgKHVzZXJuYW1lKTsKKyAgICAgICAvKiBJ ZiB3ZSBkb24ndCBoYXZlIGEgZmFpbHVyZSBob29rLCBvciBpZiB0aGUgZmFpbHVyZSBob29rIGRp ZCBub3QKKyAJIGV4cGFuZCB0aGUgdGlsZGUsIHJldHVybiBhIGNvcHkgb2Ygd2hhdCB3ZSB3ZXJl IHBhc3NlZC4gKi8KKyAgICAgICBpZiAoZGlybmFtZSA9PSAwKQorQEAgLTQxMiwxMCArNDExLDEx IEBAIHRpbGRlX2V4cGFuZF93b3JkIChmaWxlbmFtZSkKKyAgICAgfQorICNpZiBkZWZpbmVkIChI QVZFX0dFVFBXRU5UKQorICAgZWxzZQorLSAgICB7CistICAgICAgZnJlZSAodXNlcm5hbWUpOwor LSAgICAgIGRpcm5hbWUgPSBnbHVlX3ByZWZpeF9hbmRfc3VmZml4ICh1c2VyX2VudHJ5LT5wd19k aXIsIGZpbGVuYW1lLCB1c2VyX2xlbik7CistICAgIH0KKysgICAgZGlybmFtZSA9IGdsdWVfcHJl Zml4X2FuZF9zdWZmaXggKHVzZXJfZW50cnktPnB3X2RpciwgZmlsZW5hbWUsIHVzZXJfbGVuKTsK KysjZW5kaWYKKysKKysgIHhmcmVlICh1c2VybmFtZSk7CisrI2lmIGRlZmluZWQgKEhBVkVfR0VU UFdFTlQpCisgICBlbmRwd2VudCAoKTsKKyAjZW5kaWYKKyAgIHJldHVybiAoZGlybmFtZSk7Cist LS0gYS9yZWFkbGluZS90aWxkZS5oCisrKysgYi9yZWFkbGluZS90aWxkZS5oCitAQCAtMSwyNSAr MSwyNCBAQAorIC8qIHRpbGRlLmg6IEV4dGVybmFsbHkgYXZhaWxhYmxlIHZhcmlhYmxlcyBhbmQg ZnVuY3Rpb24gaW4gbGlidGlsZGUuYS4gKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5OTIgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTkyLTIwMDkg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGNvbnRhaW5z IHRoZSBSZWFkbGluZSBMaWJyYXJ5ICh0aGUgTGlicmFyeSksIGEgc2V0IG9mCisrICAgVGhpcyBm aWxlIGNvbnRhaW5zIHRoZSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgc2V0IG9mCisg ICAgcm91dGluZXMgZm9yIHByb3ZpZGluZyBFbWFjcyBzdHlsZSBsaW5lIGlucHV0IHRvIHByb2dy YW1zIHRoYXQgYXNrCisgICAgZm9yIGl0LgorIAorLSAgIFRoZSBMaWJyYXJ5IGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBSZWFkbGlu ZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24u CistCistICAgVGhlIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwgYnV0CistICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCistICAgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBp cyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElm IHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMz MCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgIWRlZmluZWQgKF9USUxERV9I XykKKyAjICBkZWZpbmUgX1RJTERFX0hfCistLS0gYS9yZWFkbGluZS91bmRvLmMKKysrKyBiL3Jl YWRsaW5lL3VuZG8uYworQEAgLTEsMjUgKzEsMjUgQEAKKyAvKiByZWFkbGluZS5jIC0tIGEgZ2Vu ZXJhbCBmYWNpbGl0eSBmb3IgcmVhZGluZyBsaW5lcyBvZiBpbnB1dAorICAgIHdpdGggZW1hY3Mg c3R5bGUgZWRpdGluZyBhbmQgY29tcGxldGlvbi4gKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5 ODcsIDE5ODksIDE5OTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJp Z2h0IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkg Zm9yCistICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5k IGhpc3RvcnkgZWRpdGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRs aW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMg b2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAg CisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVh ZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5Cist ICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCist ICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0Uu ICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0 ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcg d2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKysqLworKworICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQorIAorICNpZiBkZWZpbmVkIChI QVZFX0NPTkZJR19IKQorQEAgLTUwLDYgKzUwLDggQEAKKyAjaW5jbHVkZSAicmxwcml2YXRlLmgi CisgI2luY2x1ZGUgInhtYWxsb2MuaCIKKyAKKytleHRlcm4gdm9pZCByZXBsYWNlX2hpc3Rvcnlf ZGF0YSBQQVJBTVMoKGludCwgaGlzdGRhdGFfdCAqLCBoaXN0ZGF0YV90ICopKTsKKysKKyAvKiBO b24temVybyB0ZWxscyBybF9kZWxldGVfdGV4dCBhbmQgcmxfaW5zZXJ0X3RleHQgdG8gbm90IGFk ZCB0bworICAgIHRoZSB1bmRvIGxpc3QuICovCisgaW50IF9ybF9kb2luZ19hbl91bmRvID0gMDsK K0BAIC02NiwxOSArNjgsMzUgQEAgVU5ET19MSVNUICpybF91bmRvX2xpc3QgPSAoVU5ET19MSVNU ICopTlVMTDsKKyAvKgkJCQkJCQkJICAgICovCisgLyogKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLworIAorLS8qIFJlbWVt YmVyIGhvdyB0byB1bmRvIHNvbWV0aGluZy4gIENvbmNhdGVuYXRlIHNvbWUgdW5kb3MgaWYgdGhh dAorLSAgIHNlZW1zIHJpZ2h0LiAqLworLXZvaWQKKy1ybF9hZGRfdW5kbyAod2hhdCwgc3RhcnQs IGVuZCwgdGV4dCkKKytzdGF0aWMgVU5ET19MSVNUICoKKythbGxvY191bmRvX2VudHJ5ICh3aGF0 LCBzdGFydCwgZW5kLCB0ZXh0KQorICAgICAgZW51bSB1bmRvX2NvZGUgd2hhdDsKKyAgICAgIGlu dCBzdGFydCwgZW5kOworICAgICAgY2hhciAqdGV4dDsKKyB7CistICBVTkRPX0xJU1QgKnRlbXAg PSAoVU5ET19MSVNUICopeG1hbGxvYyAoc2l6ZW9mIChVTkRPX0xJU1QpKTsKKysgIFVORE9fTElT VCAqdGVtcDsKKysKKysgIHRlbXAgPSAoVU5ET19MSVNUICopeG1hbGxvYyAoc2l6ZW9mIChVTkRP X0xJU1QpKTsKKyAgIHRlbXAtPndoYXQgPSB3aGF0OworICAgdGVtcC0+c3RhcnQgPSBzdGFydDsK KyAgIHRlbXAtPmVuZCA9IGVuZDsKKyAgIHRlbXAtPnRleHQgPSB0ZXh0OworKworKyAgdGVtcC0+ bmV4dCA9IChVTkRPX0xJU1QgKilOVUxMOworKyAgcmV0dXJuIHRlbXA7CisrfQorKworKy8qIFJl bWVtYmVyIGhvdyB0byB1bmRvIHNvbWV0aGluZy4gIENvbmNhdGVuYXRlIHNvbWUgdW5kb3MgaWYg dGhhdAorKyAgIHNlZW1zIHJpZ2h0LiAqLworK3ZvaWQKKytybF9hZGRfdW5kbyAod2hhdCwgc3Rh cnQsIGVuZCwgdGV4dCkKKysgICAgIGVudW0gdW5kb19jb2RlIHdoYXQ7CisrICAgICBpbnQgc3Rh cnQsIGVuZDsKKysgICAgIGNoYXIgKnRleHQ7CisreworKyAgVU5ET19MSVNUICp0ZW1wOworKwor KyAgdGVtcCA9IGFsbG9jX3VuZG9fZW50cnkgKHdoYXQsIHN0YXJ0LCBlbmQsIHRleHQpOworICAg dGVtcC0+bmV4dCA9IHJsX3VuZG9fbGlzdDsKKyAgIHJsX3VuZG9fbGlzdCA9IHRlbXA7CisgfQor QEAgLTg3LDE3ICsxMDUsNjAgQEAgcmxfYWRkX3VuZG8gKHdoYXQsIHN0YXJ0LCBlbmQsIHRleHQp Cisgdm9pZAorIHJsX2ZyZWVfdW5kb19saXN0ICgpCisgeworKyAgVU5ET19MSVNUICpyZWxlYXNl LCAqb3JpZ19saXN0OworKworKyAgb3JpZ19saXN0ID0gcmxfdW5kb19saXN0OworICAgd2hpbGUg KHJsX3VuZG9fbGlzdCkKKyAgICAgeworLSAgICAgIFVORE9fTElTVCAqcmVsZWFzZSA9IHJsX3Vu ZG9fbGlzdDsKKysgICAgICByZWxlYXNlID0gcmxfdW5kb19saXN0OworICAgICAgIHJsX3VuZG9f bGlzdCA9IHJsX3VuZG9fbGlzdC0+bmV4dDsKKyAKKyAgICAgICBpZiAocmVsZWFzZS0+d2hhdCA9 PSBVTkRPX0RFTEVURSkKKy0JZnJlZSAocmVsZWFzZS0+dGV4dCk7CisrCXhmcmVlIChyZWxlYXNl LT50ZXh0KTsKKyAKKy0gICAgICBmcmVlIChyZWxlYXNlKTsKKysgICAgICB4ZnJlZSAocmVsZWFz ZSk7CisgICAgIH0KKyAgIHJsX3VuZG9fbGlzdCA9IChVTkRPX0xJU1QgKilOVUxMOworKyAgcmVw bGFjZV9oaXN0b3J5X2RhdGEgKC0xLCAoaGlzdGRhdGFfdCAqKW9yaWdfbGlzdCwgKGhpc3RkYXRh X3QgKilOVUxMKTsKKyt9CisrCisrVU5ET19MSVNUICoKKytfcmxfY29weV91bmRvX2VudHJ5IChl bnRyeSkKKysgICAgIFVORE9fTElTVCAqZW50cnk7CisreworKyAgVU5ET19MSVNUICpuZXc7Cisr CisrICBuZXcgPSBhbGxvY191bmRvX2VudHJ5IChlbnRyeS0+d2hhdCwgZW50cnktPnN0YXJ0LCBl bnRyeS0+ZW5kLCAoY2hhciAqKU5VTEwpOworKyAgbmV3LT50ZXh0ID0gZW50cnktPnRleHQgPyBz YXZlc3RyaW5nIChlbnRyeS0+dGV4dCkgOiAwOworKyAgcmV0dXJuIG5ldzsKKyt9CisrCisrVU5E T19MSVNUICoKKytfcmxfY29weV91bmRvX2xpc3QgKGhlYWQpCisrICAgICBVTkRPX0xJU1QgKmhl YWQ7CisreworKyAgVU5ET19MSVNUICpsaXN0LCAqbmV3LCAqcm92aW5nLCAqYzsKKysKKysgIGlm IChoZWFkID09IDApCisrICAgIHJldHVybiBoZWFkOworKworKyAgbGlzdCA9IGhlYWQ7CisrICBu ZXcgPSAwOworKyAgd2hpbGUgKGxpc3QpCisrICAgIHsKKysgICAgICBjID0gX3JsX2NvcHlfdW5k b19lbnRyeSAobGlzdCk7CisrICAgICAgaWYgKG5ldyA9PSAwKQorKwlyb3ZpbmcgPSBuZXcgPSBj OworKyAgICAgIGVsc2UKKysJeworKwkgIHJvdmluZy0+bmV4dCA9IGM7CisrCSAgcm92aW5nID0g cm92aW5nLT5uZXh0OworKwl9CisrICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7CisrICAgIH0KKysK KysgIHJvdmluZy0+bmV4dCA9IDA7CisrICByZXR1cm4gbmV3OworIH0KKyAKKyAvKiBVbmRvIHRo ZSBuZXh0IHRoaW5nIGluIHRoZSBsaXN0LiAgUmV0dXJuIDAgaWYgdGhlcmUKK0BAIC0xMTMsNyAr MTc0LDcgQEAgcmxfZG9fdW5kbyAoKQorICAgc3RhcnQgPSBlbmQgPSB3YWl0aW5nX2Zvcl9iZWdp biA9IDA7CisgICBkbworICAgICB7CistICAgICAgaWYgKCFybF91bmRvX2xpc3QpCisrICAgICAg aWYgKHJsX3VuZG9fbGlzdCA9PSAwKQorIAlyZXR1cm4gKDApOworIAorICAgICAgIF9ybF9kb2lu Z19hbl91bmRvID0gMTsKK0BAIC0xMzMsNyArMTk0LDcgQEAgcmxfZG9fdW5kbyAoKQorIAljYXNl IFVORE9fREVMRVRFOgorIAkgIHJsX3BvaW50ID0gc3RhcnQ7CisgCSAgcmxfaW5zZXJ0X3RleHQg KHJsX3VuZG9fbGlzdC0+dGV4dCk7CistCSAgZnJlZSAocmxfdW5kb19saXN0LT50ZXh0KTsKKysJ ICB4ZnJlZSAocmxfdW5kb19saXN0LT50ZXh0KTsKKyAJICBicmVhazsKKyAKKyAJLyogVW5kb2lu ZyBpbnNlcnRzIG1lYW5zIGRlbGV0aW5nIHNvbWUgdGV4dC4gKi8KK0BAIC0xNjEsNyArMjIyLDkg QEAgcmxfZG9fdW5kbyAoKQorIAorICAgICAgIHJlbGVhc2UgPSBybF91bmRvX2xpc3Q7CisgICAg ICAgcmxfdW5kb19saXN0ID0gcmxfdW5kb19saXN0LT5uZXh0OworLSAgICAgIGZyZWUgKHJlbGVh c2UpOworKyAgICAgIHJlcGxhY2VfaGlzdG9yeV9kYXRhICgtMSwgKGhpc3RkYXRhX3QgKilyZWxl YXNlLCAoaGlzdGRhdGFfdCAqKXJsX3VuZG9fbGlzdCk7CisrCisrICAgICAgeGZyZWUgKHJlbGVh c2UpOworICAgICB9CisgICB3aGlsZSAod2FpdGluZ19mb3JfYmVnaW4pOworIAorQEAgLTIzMSw3 ICsyOTQsNyBAQCBpbnQKKyBybF9yZXZlcnRfbGluZSAoY291bnQsIGtleSkKKyAgICAgIGludCBj b3VudCwga2V5OworIHsKKy0gIGlmICghcmxfdW5kb19saXN0KQorKyAgaWYgKHJsX3VuZG9fbGlz dCA9PSAwKQorICAgICBybF9kaW5nICgpOworICAgZWxzZQorICAgICB7CistLS0gYS9yZWFkbGlu ZS91dGlsLmMKKysrKyBiL3JlYWRsaW5lL3V0aWwuYworQEAgLTEsMjQgKzEsMjQgQEAKKyAvKiB1 dGlsLmMgLS0gcmVhZGxpbmUgdXRpbGl0eSBmdW5jdGlvbnMgKi8KKyAKKy0vKiBDb3B5cmlnaHQg KEMpIDE5ODctMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmln aHQgKEMpIDE5ODctMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBm b3IKKy0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQg aGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBv ZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAK KyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFk bGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0g ICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0g ICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4g IElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl IDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3 aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorKyovCisrCisgI2RlZmluZSBSRUFETElORV9MSUJSQVJZCisgCisgI2lmIGRlZmluZWQgKEhB VkVfQ09ORklHX0gpCitAQCAtNjYsNyArNjYsNyBAQAorICAgIGluIHdvcmRzLCBvciAxIGlmIGl0 IGlzLiAqLworIAorIGludCBfcmxfYWxsb3dfcGF0aG5hbWVfYWxwaGFiZXRpY19jaGFycyA9IDA7 Cistc3RhdGljIGNvbnN0IGNoYXIgKnBhdGhuYW1lX2FscGhhYmV0aWNfY2hhcnMgPSAiLy1fPX4u IyQiOworK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcGF0aG5hbWVfYWxwaGFiZXRpY19jaGFy cyA9ICIvLV89fi4jJCI7CisgCisgaW50CisgcmxfYWxwaGFiZXRpYyAoYykKK0BAIC04MSw4ICs4 MSw3IEBAIHJsX2FscGhhYmV0aWMgKGMpCisgCisgI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZ VEUpCisgaW50CistX3JsX3dhbHBoYWJldGljICh3YykKKy0gICAgIHdjaGFyX3Qgd2M7CisrX3Js X3dhbHBoYWJldGljICh3Y2hhcl90IHdjKQorIHsKKyAgIGludCBjOworIAorQEAgLTEwOSw3ICsx MDgsNyBAQCBfcmxfYWJvcnRfaW50ZXJuYWwgKCkKKyAgICAgX3JsX3BvcF9leGVjdXRpbmdfbWFj cm8gKCk7CisgCisgICBybF9sYXN0X2Z1bmMgPSAocmxfY29tbWFuZF9mdW5jX3QgKilOVUxMOwor LSAgbG9uZ2ptcCAocmVhZGxpbmVfdG9wX2xldmVsLCAxKTsKKysgIGxvbmdqbXAgKF9ybF90b3Bf bGV2ZWwsIDEpOworICAgcmV0dXJuICgwKTsKKyB9CisgCitAQCAtMTIxLDYgKzEyMCwxMyBAQCBy bF9hYm9ydCAoY291bnQsIGtleSkKKyB9CisgCisgaW50CisrX3JsX251bGxfZnVuY3Rpb24gKGNv dW50LCBrZXkpCisrICAgICBpbnQgY291bnQsIGtleTsKKyt7CisrICByZXR1cm4gMDsKKyt9Cisr CisraW50CisgcmxfdHR5X3N0YXR1cyAoY291bnQsIGtleSkKKyAgICAgIGludCBjb3VudCwga2V5 OworIHsKK0BAIC0xODUsNiArMTkxLDcgQEAgcmxfdGlsZGVfZXhwYW5kIChpZ25vcmUsIGtleSkK KyAgICAgeworICAgICAgIGhvbWVkaXIgPSB0aWxkZV9leHBhbmQgKCJ+Iik7CisgICAgICAgX3Js X3JlcGxhY2VfdGV4dCAoaG9tZWRpciwgc3RhcnQsIGVuZCk7CisrICAgICAgeGZyZWUgKGhvbWVk aXIpOworICAgICAgIHJldHVybiAoMCk7CisgICAgIH0KKyAgIGVsc2UgaWYgKHJsX2xpbmVfYnVm ZmVyW3N0YXJ0XSAhPSAnficpCitAQCAtMjEyLDE0ICsyMTksOTYgQEAgcmxfdGlsZGVfZXhwYW5k IChpZ25vcmUsIGtleSkKKyAgICAgICBzdHJuY3B5ICh0ZW1wLCBybF9saW5lX2J1ZmZlciArIHN0 YXJ0LCBsZW4pOworICAgICAgIHRlbXBbbGVuXSA9ICdcMCc7CisgICAgICAgaG9tZWRpciA9IHRp bGRlX2V4cGFuZCAodGVtcCk7CistICAgICAgZnJlZSAodGVtcCk7CisrICAgICAgeGZyZWUgKHRl bXApOworIAorICAgICAgIF9ybF9yZXBsYWNlX3RleHQgKGhvbWVkaXIsIHN0YXJ0LCBlbmQpOwor KyAgICAgIHhmcmVlIChob21lZGlyKTsKKyAgICAgfQorIAorICAgcmV0dXJuICgwKTsKKyB9Cisg CisrI2lmIGRlZmluZWQgKFVTRV9WQVJBUkdTKQorK3ZvaWQKKysjaWYgZGVmaW5lZCAoUFJFRkVS X1NUREFSRykKKytfcmxfdHR5bXNnIChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKKysjZWxzZQor K19ybF90dHltc2cgKHZhX2FsaXN0KQorKyAgICAgdmFfZGNsCisrI2VuZGlmCisreworKyAgdmFf bGlzdCBhcmdzOworKyNpZiBkZWZpbmVkIChQUkVGRVJfVkFSQVJHUykKKysgIGNoYXIgKmZvcm1h dDsKKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZCAoUFJFRkVSX1NUREFSRykKKysgIHZhX3N0YXJ0 IChhcmdzLCBmb3JtYXQpOworKyNlbHNlCisrICB2YV9zdGFydCAoYXJncyk7CisrICBmb3JtYXQg PSB2YV9hcmcgKGFyZ3MsIGNoYXIgKik7CisrI2VuZGlmCisrCisrICBmcHJpbnRmIChzdGRlcnIs ICJyZWFkbGluZTogIik7CisrICB2ZnByaW50ZiAoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpOworKyAg ZnByaW50ZiAoc3RkZXJyLCAiXG4iKTsKKysgIGZmbHVzaCAoc3RkZXJyKTsKKysKKysgIHZhX2Vu ZCAoYXJncyk7CisrCisrICBybF9mb3JjZWRfdXBkYXRlX2Rpc3BsYXkgKCk7CisrfQorKworK3Zv aWQKKysjaWYgZGVmaW5lZCAoUFJFRkVSX1NUREFSRykKKytfcmxfZXJybXNnIChjb25zdCBjaGFy ICpmb3JtYXQsIC4uLikKKysjZWxzZQorK19ybF9lcnJtc2cgKHZhX2FsaXN0KQorKyAgICAgdmFf ZGNsCisrI2VuZGlmCisreworKyAgdmFfbGlzdCBhcmdzOworKyNpZiBkZWZpbmVkIChQUkVGRVJf VkFSQVJHUykKKysgIGNoYXIgKmZvcm1hdDsKKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZCAoUFJF RkVSX1NUREFSRykKKysgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOworKyNlbHNlCisrICB2YV9z dGFydCAoYXJncyk7CisrICBmb3JtYXQgPSB2YV9hcmcgKGFyZ3MsIGNoYXIgKik7CisrI2VuZGlm CisrCisrICBmcHJpbnRmIChzdGRlcnIsICJyZWFkbGluZTogIik7CisrICB2ZnByaW50ZiAoc3Rk ZXJyLCBmb3JtYXQsIGFyZ3MpOworKyAgZnByaW50ZiAoc3RkZXJyLCAiXG4iKTsKKysgIGZmbHVz aCAoc3RkZXJyKTsKKysKKysgIHZhX2VuZCAoYXJncyk7CisrfQorKworKyNlbHNlIC8qICFVU0Vf VkFSQVJHUyAqLworK3ZvaWQKKytfcmxfdHR5bXNnIChmb3JtYXQsIGFyZzEsIGFyZzIpCisrICAg ICBjaGFyICpmb3JtYXQ7CisreworKyAgZnByaW50ZiAoc3RkZXJyLCAicmVhZGxpbmU6ICIpOwor KyAgZnByaW50ZiAoc3RkZXJyLCBmb3JtYXQsIGFyZzEsIGFyZzIpOworKyAgZnByaW50ZiAoc3Rk ZXJyLCAiXG4iKTsKKysKKysgIHJsX2ZvcmNlZF91cGRhdGVfZGlzcGxheSAoKTsKKyt9CisrCisr dm9pZAorK19ybF9lcnJtc2cgKGZvcm1hdCwgYXJnMSwgYXJnMikKKysgICAgIGNoYXIgKmZvcm1h dDsKKyt7CisrICBmcHJpbnRmIChzdGRlcnIsICJyZWFkbGluZTogIik7CisrICBmcHJpbnRmIChz dGRlcnIsIGZvcm1hdCwgYXJnMSwgYXJnMik7CisrICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOwor K30KKysjZW5kaWYgLyogIVVTRV9WQVJBUkdTICovCisrCisgLyogKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLworIC8qCQkJ CQkJCQkgICAgKi8KKyAvKgkJCVN0cmluZyBVdGlsaXR5IEZ1bmN0aW9ucwkJICAgICovCitAQCAt Mjc3LDQxICszNjYsNTYgQEAgX3JsX3N0cnBicmsgKHN0cmluZzEsIHN0cmluZzIpCisgCisgI2lm ICFkZWZpbmVkIChIQVZFX1NUUkNBU0VDTVApCisgLyogQ29tcGFyZSBhdCBtb3N0IENPVU5UIGNo YXJhY3RlcnMgZnJvbSBzdHJpbmcxIHRvIHN0cmluZzIuICBDYXNlCistICAgZG9lc24ndCBtYXR0 ZXIuICovCisrICAgZG9lc24ndCBtYXR0ZXIgKHN0cm5jYXNlY21wKS4gKi8KKyBpbnQKKyBfcmxf c3RybmljbXAgKHN0cmluZzEsIHN0cmluZzIsIGNvdW50KQorICAgICAgY2hhciAqc3RyaW5nMSwg KnN0cmluZzI7CisgICAgICBpbnQgY291bnQ7CisgeworLSAgcmVnaXN0ZXIgY2hhciBjaDEsIGNo MjsKKysgIHJlZ2lzdGVyIGNoYXIgKnMxLCAqczI7CisrICBpbnQgZDsKKyAKKy0gIHdoaWxlIChj b3VudCkKKysgIGlmIChjb3VudCA8PSAwIHx8IChzdHJpbmcxID09IHN0cmluZzIpKQorKyAgICBy ZXR1cm4gMDsKKysKKysgIHMxID0gc3RyaW5nMTsKKysgIHMyID0gc3RyaW5nMjsKKysgIGRvCisg ICAgIHsKKy0gICAgICBjaDEgPSAqc3RyaW5nMSsrOworLSAgICAgIGNoMiA9ICpzdHJpbmcyKys7 CistICAgICAgaWYgKF9ybF90b191cHBlcihjaDEpID09IF9ybF90b191cHBlcihjaDIpKQorLQlj b3VudC0tOworLSAgICAgIGVsc2UKKysgICAgICBkID0gX3JsX3RvX2xvd2VyICgqczEpIC0gX3Js X3RvX2xvd2VyICgqczIpOwkvKiBYWFggLSBjYXN0IHRvIHVuc2lnbmVkIGNoYXI/ICovCisrICAg ICAgaWYgKGQgIT0gMCkKKysJcmV0dXJuIGQ7CisrICAgICAgaWYgKCpzMSsrID09ICdcMCcpCisg ICAgICAgICBicmVhazsKKysgICAgICBzMisrOworICAgICB9CistICByZXR1cm4gKGNvdW50KTsK KysgIHdoaWxlICgtLWNvdW50ICE9IDApCisrCisrICByZXR1cm4gKDApOworIH0KKyAKKy0vKiBz dHJjbXAgKCksIGJ1dCBjYXNlbGVzcy4gKi8KKysvKiBzdHJjbXAgKCksIGJ1dCBjYXNlbGVzcyAo c3RyY2FzZWNtcCkuICovCisgaW50CisgX3JsX3N0cmljbXAgKHN0cmluZzEsIHN0cmluZzIpCisg ICAgICBjaGFyICpzdHJpbmcxLCAqc3RyaW5nMjsKKyB7CistICByZWdpc3RlciBjaGFyIGNoMSwg Y2gyOworKyAgcmVnaXN0ZXIgY2hhciAqczEsICpzMjsKKysgIGludCBkOworKworKyAgczEgPSBz dHJpbmcxOworKyAgczIgPSBzdHJpbmcyOworIAorLSAgd2hpbGUgKCpzdHJpbmcxICYmICpzdHJp bmcyKQorKyAgaWYgKHMxID09IHMyKQorKyAgICByZXR1cm4gMDsKKysKKysgIHdoaWxlICgoZCA9 IF9ybF90b19sb3dlciAoKnMxKSAtIF9ybF90b19sb3dlciAoKnMyKSkgPT0gMCkKKyAgICAgewor LSAgICAgIGNoMSA9ICpzdHJpbmcxKys7CistICAgICAgY2gyID0gKnN0cmluZzIrKzsKKy0gICAg ICBpZiAoX3JsX3RvX3VwcGVyKGNoMSkgIT0gX3JsX3RvX3VwcGVyKGNoMikpCistCXJldHVybiAo MSk7CisrICAgICAgaWYgKCpzMSsrID09ICdcMCcpCisrICAgICAgICByZXR1cm4gMDsKKysgICAg ICBzMisrOworICAgICB9CistICByZXR1cm4gKCpzdHJpbmcxIC0gKnN0cmluZzIpOworKworKyAg cmV0dXJuIChkKTsKKyB9CisgI2VuZGlmIC8qICFIQVZFX1NUUkNBU0VDTVAgKi8KKyAKK0BAIC0z NDQsNiArNDQ4LDE2IEBAIEZVTkNUSU9OX0ZPUl9NQUNSTyAoX3JsX3RvX2xvd2VyKQorIEZVTkNU SU9OX0ZPUl9NQUNSTyAoX3JsX3RvX3VwcGVyKQorIEZVTkNUSU9OX0ZPUl9NQUNSTyAoX3JsX3Vw cGVyY2FzZV9wKQorIAorKy8qIEEgY29udmVuaWVuY2UgZnVuY3Rpb24sIHRvIGZvcmNlIG1lbW9y eSBkZWFsbG9jYXRpb24gdG8gYmUgcGVyZm9ybWVkCisrICAgYnkgcmVhZGxpbmUuICBETExzIG9u IFdpbmRvd3MgYXBwYXJlbnRseSByZXF1aXJlIHRoaXMuICovCisrdm9pZAorK3JsX2ZyZWUgKG1l bSkKKysgICAgIHZvaWQgKm1lbTsKKyt7CisrICBpZiAobWVtKQorKyAgICBmcmVlIChtZW0pOwor K30KKysKKyAvKiBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgbm93IHRoYXQgc2F2ZXN0cmluZyBo YXMgYmVlbiByZW1vdmVkIGZyb20KKyAgICBhbGwgYHB1YmxpYycgcmVhZGxpbmUgaGVhZGVyIGZp bGVzLiAqLworICN1bmRlZiBfcmxfc2F2ZXN0cmluZworQEAgLTM1MywzICs0NjcsNjAgQEAgX3Js X3NhdmVzdHJpbmcgKHMpCisgeworICAgcmV0dXJuIChzdHJjcHkgKChjaGFyICopeG1hbGxvYyAo MSArIChpbnQpc3RybGVuIChzKSksIChzKSkpOworIH0KKysKKysjaWYgZGVmaW5lZCAoVVNFX1ZB UkFSR1MpCisrc3RhdGljIEZJTEUgKl9ybF90cmFjZWZwOworKworK3ZvaWQKKysjaWYgZGVmaW5l ZCAoUFJFRkVSX1NUREFSRykKKytfcmxfdHJhY2UgKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQor KyNlbHNlCisrX3JsX3RyYWNlICh2YV9hbGlzdCkKKysgICAgIHZhX2RjbAorKyNlbmRpZgorK3sK KysgIHZhX2xpc3QgYXJnczsKKysjaWYgZGVmaW5lZCAoUFJFRkVSX1ZBUkFSR1MpCisrICBjaGFy ICpmb3JtYXQ7CisrI2VuZGlmCisrCisrI2lmIGRlZmluZWQgKFBSRUZFUl9TVERBUkcpCisrICB2 YV9zdGFydCAoYXJncywgZm9ybWF0KTsKKysjZWxzZQorKyAgdmFfc3RhcnQgKGFyZ3MpOworKyAg Zm9ybWF0ID0gdmFfYXJnIChhcmdzLCBjaGFyICopOworKyNlbmRpZgorKworKyAgaWYgKF9ybF90 cmFjZWZwID09IDApCisrICAgIF9ybF90cm9wZW4gKCk7CisrICB2ZnByaW50ZiAoX3JsX3RyYWNl ZnAsIGZvcm1hdCwgYXJncyk7CisrICBmcHJpbnRmIChfcmxfdHJhY2VmcCwgIlxuIik7CisrICBm Zmx1c2ggKF9ybF90cmFjZWZwKTsKKysKKysgIHZhX2VuZCAoYXJncyk7CisrfQorKworK2ludAor K19ybF90cm9wZW4gKCkKKyt7CisrICBjaGFyIGZuYnVmWzEyOF07CisrCisrICBpZiAoX3JsX3Ry YWNlZnApCisrICAgIGZjbG9zZSAoX3JsX3RyYWNlZnApOworKyAgc3ByaW50ZiAoZm5idWYsICIv dmFyL3RtcC9ybHRyYWNlLiVsZCIsIGdldHBpZCgpKTsKKysgIHVubGluayhmbmJ1Zik7CisrICBf cmxfdHJhY2VmcCA9IGZvcGVuIChmbmJ1ZiwgIncrIik7CisrICByZXR1cm4gX3JsX3RyYWNlZnAg IT0gMDsKKyt9CisrCisraW50CisrX3JsX3RyY2xvc2UgKCkKKyt7CisrICBpbnQgcjsKKysKKysg IHIgPSBmY2xvc2UgKF9ybF90cmFjZWZwKTsKKysgIF9ybF90cmFjZWZwID0gMDsKKysgIHJldHVy biByOworK30KKysKKysjZW5kaWYKKy0tLSBhL3JlYWRsaW5lL3ZpX2tleW1hcC5jCisrKysgYi9y ZWFkbGluZS92aV9rZXltYXAuYworQEAgLTEsMjQgKzEsMjMgQEAKKyAvKiB2aV9rZXltYXAuYyAt LSB0aGUga2V5bWFwIGZvciB2aV9tb2RlIGluIHJlYWRsaW5lICgpLiAqLworIAorLS8qIENvcHly aWdodCAoQykgMTk4NywgMTk4OSwgMTk5MiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KysvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKyAKKy0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnks IGEgbGlicmFyeSBmb3IKKy0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2 ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVh ZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRp dGluZy4gICAgICAKKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwg b3IKKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBM aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVz ZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkKKy0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3 YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcg b3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5z ZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUg UGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorKyovCisgCisgI2lmICFkZWZpbmVkIChCVUZTSVopCisgI2luY2x1ZGUg PHN0ZGlvLmg+CitAQCAtMTUxLDcgKzE1MCw3IEBAIEtFWU1BUF9FTlRSWV9BUlJBWSB2aV9tb3Zl bWVudF9rZXltYXAgPSB7CisgICB7IElTRlVOQywgcmxfdmlfY2hhcl9zZWFyY2ggfSwJCS8qIGYg Ki8KKyAgIHsgSVNGVU5DLCAocmxfY29tbWFuZF9mdW5jX3QgKikweDAgfSwJCS8qIGcgKi8KKyAg IHsgSVNGVU5DLCBybF9iYWNrd2FyZF9jaGFyIH0sCQkJLyogaCAqLworLSAgeyBJU0ZVTkMsIHJs X3ZpX2luc2VydGlvbl9tb2RlIH0sCQkvKiBpICovCisrICB7IElTRlVOQywgcmxfdmlfaW5zZXJ0 X21vZGUgfSwJCS8qIGkgKi8KKyAgIHsgSVNGVU5DLCBybF9nZXRfbmV4dF9oaXN0b3J5IH0sCQkv KiBqICovCisgICB7IElTRlVOQywgcmxfZ2V0X3ByZXZpb3VzX2hpc3RvcnkgfSwJCS8qIGsgKi8K KyAgIHsgSVNGVU5DLCBybF9mb3J3YXJkX2NoYXIgfSwJCQkvKiBsICovCitAQCAtMzI3LDkgKzMy Niw5IEBAIEtFWU1BUF9FTlRSWV9BUlJBWSB2aV9pbnNlcnRpb25fa2V5bWFwID0geworICAgeyBJ U0ZVTkMsIHJsX2luc2VydCB9LAkJCS8qIENvbnRyb2wtayAqLworICAgeyBJU0ZVTkMsIHJsX2lu c2VydCB9LAkJCS8qIENvbnRyb2wtbCAqLworICAgeyBJU0ZVTkMsIHJsX25ld2xpbmUgfSwJCQkv KiBDb250cm9sLW0gKi8KKy0gIHsgSVNGVU5DLCBybF9pbnNlcnQgfSwJCQkvKiBDb250cm9sLW4g Ki8KKysgIHsgSVNGVU5DLCBybF9tZW51X2NvbXBsZXRlfSwJCQkvKiBDb250cm9sLW4gKi8KKyAg IHsgSVNGVU5DLCBybF9pbnNlcnQgfSwJCQkvKiBDb250cm9sLW8gKi8KKy0gIHsgSVNGVU5DLCBy bF9pbnNlcnQgfSwJCQkvKiBDb250cm9sLXAgKi8KKysgIHsgSVNGVU5DLCBybF9iYWNrd2FyZF9t ZW51X2NvbXBsZXRlIH0sCS8qIENvbnRyb2wtcCAqLworICAgeyBJU0ZVTkMsIHJsX2luc2VydCB9 LAkJCS8qIENvbnRyb2wtcSAqLworICAgeyBJU0ZVTkMsIHJsX3JldmVyc2Vfc2VhcmNoX2hpc3Rv cnkgfSwJLyogQ29udHJvbC1yICovCisgICB7IElTRlVOQywgcmxfZm9yd2FyZF9zZWFyY2hfaGlz dG9yeSB9LAkvKiBDb250cm9sLXMgKi8KKy0tLSBhL3JlYWRsaW5lL3ZpX21vZGUuYworKysrIGIv cmVhZGxpbmUvdmlfbW9kZS5jCitAQCAtMSwyNSArMSwyNSBAQAorIC8qIHZpX21vZGUuYyAtLSBB IHZpIGVtdWxhdGlvbiBtb2RlIGZvciBCYXNoLgorICAgIERlcml2ZWQgZnJvbSBjb2RlIHdyaXR0 ZW4gYnkgSmVmZiBTcGFya2VzIChqc3Bhcmtlc0BibnIuY2EpLiAgKi8KKyAKKy0vKiBDb3B5cmln aHQgKEMpIDE5ODctMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5 cmlnaHQgKEMpIDE5ODctMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0g ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFy eSBmb3IKKy0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBh bmQgaGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVh ZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5l cyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAg ICAKKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBS ZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkK Ky0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQK Ky0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5T RS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9u ZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorKyovCisrCisgI2RlZmluZSBSRUFETElORV9MSUJSQVJZCisgCisgLyogKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAq LworQEAgLTY1LDExICs2NSwxMyBAQAorIAorIGludCBfcmxfdmlfbGFzdF9jb21tYW5kID0gJ2kn OwkvKiBkZWZhdWx0IGAuJyBwdXRzIHlvdSBpbiBpbnNlcnQgbW9kZSAqLworIAorK19ybF92aW1v dGlvbl9jeHQgKl9ybF92aW12Y3h0ID0gMDsKKysKKyAvKiBOb24temVybyBtZWFucyBlbnRlciBp bnNlcnRpb24gbW9kZS4gKi8KKyBzdGF0aWMgaW50IF9ybF92aV9kb2luZ19pbnNlcnQ7CisgCisg LyogQ29tbWFuZCBrZXlzIHdoaWNoIGRvIG1vdmVtZW50IGZvciB4eHhfdG8gY29tbWFuZHMuICov Cistc3RhdGljIGNvbnN0IGNoYXIgKnZpX21vdGlvbiA9ICIgaGxeJDBmdEZUOywld2JlV0JFfCI7 Cisrc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB2aV9tb3Rpb24gPSAiIGhsXiQwZnRGVDssJXdi ZVdCRXxgIjsKKyAKKyAvKiBLZXltYXAgdXNlZCBmb3IgdmkgcmVwbGFjZSBjaGFyYWN0ZXJzLiAg Q3JlYXRlZCBkeW5hbWljYWxseSBzaW5jZQorICAgIHJhcmVseSB1c2VkLiAqLworQEAgLTEwMSw3 ICsxMDMsNyBAQCBzdGF0aWMgaW50IF9ybF92aV9sYXN0X2tleV9iZWZvcmVfaW5zZXJ0OworIHN0 YXRpYyBpbnQgdmlfcmVkb2luZzsKKyAKKyAvKiBUZXh0IG1vZGlmaWNhdGlvbiBjb21tYW5kcy4g IFRoZXNlIGFyZSB0aGUgYHJlZG9hYmxlJyBjb21tYW5kcy4gKi8KKy1zdGF0aWMgY29uc3QgY2hh ciAqdmlfdGV4dG1vZCA9ICJfKlxcQWFJaUNjRGRQcFl5UnJTc1h4fiI7Cisrc3RhdGljIGNvbnN0 IGNoYXIgKiBjb25zdCB2aV90ZXh0bW9kID0gIl8qXFxBYUlpQ2NEZFBwWXlSclNzWHh+IjsKKyAK KyAvKiBBcnJheXMgZm9yIHRoZSBzYXZlZCBtYXJrcy4gKi8KKyBzdGF0aWMgaW50IHZpX21hcmtf Y2hhcnNbJ3onIC0gJ2EnICsgMV07CitAQCAtMTA5LDEyICsxMTEsMTYgQEAgc3RhdGljIGludCB2 aV9tYXJrX2NoYXJzWyd6JyAtICdhJyArIDFdOworIHN0YXRpYyB2b2lkIF9ybF92aV9zdHVmZl9p bnNlcnQgUEFSQU1TKChpbnQpKTsKKyBzdGF0aWMgdm9pZCBfcmxfdmlfc2F2ZV9pbnNlcnQgUEFS QU1TKChVTkRPX0xJU1QgKikpOworIAorK3N0YXRpYyB2b2lkIF9ybF92aV9iYWNrdXAgUEFSQU1T KCh2b2lkKSk7CisrCisgc3RhdGljIGludCBfcmxfdmlfYXJnX2Rpc3BhdGNoIFBBUkFNUygoaW50 KSk7Cisgc3RhdGljIGludCBybF9kaWdpdF9sb29wMSBQQVJBTVMoKHZvaWQpKTsKKyAKKyBzdGF0 aWMgaW50IF9ybF92aV9zZXRfbWFyayBQQVJBTVMoKHZvaWQpKTsKKyBzdGF0aWMgaW50IF9ybF92 aV9nb3RvX21hcmsgUEFSQU1TKCh2b2lkKSk7CisgCisrc3RhdGljIHZvaWQgX3JsX3ZpX2FwcGVu ZF9mb3J3YXJkIFBBUkFNUygoaW50KSk7CisrCisgc3RhdGljIGludCBfcmxfdmlfY2FsbGJhY2tf Z2V0Y2hhciBQQVJBTVMoKGNoYXIgKiwgaW50KSk7CisgCisgI2lmIGRlZmluZWQgKFJFQURMSU5F X0NBTExCQUNLUykKK0BAIC0xMjQsMTIgKzEzMCwyMyBAQCBzdGF0aWMgaW50IF9ybF92aV9jYWxs YmFja19jaGFuZ2VfY2hhciBQQVJBTVMoKF9ybF9jYWxsYmFja19nZW5lcmljX2FyZyAqKSk7Cisg c3RhdGljIGludCBfcmxfdmlfY2FsbGJhY2tfY2hhcl9zZWFyY2ggUEFSQU1TKChfcmxfY2FsbGJh Y2tfZ2VuZXJpY19hcmcgKikpOworICNlbmRpZgorIAorK3N0YXRpYyBpbnQgcmxfZG9tb3ZlX3Jl YWRfY2FsbGJhY2sgUEFSQU1TKChfcmxfdmltb3Rpb25fY3h0ICopKTsKKytzdGF0aWMgaW50IHJs X2RvbW92ZV9tb3Rpb25fY2FsbGJhY2sgUEFSQU1TKChfcmxfdmltb3Rpb25fY3h0ICopKTsKKytz dGF0aWMgaW50IHJsX3ZpX2RvbW92ZV9nZXRjaGFyIFBBUkFNUygoX3JsX3ZpbW90aW9uX2N4dCAq KSk7CisrCisrc3RhdGljIGludCB2aV9jaGFuZ2VfZGlzcGF0Y2ggUEFSQU1TKChfcmxfdmltb3Rp b25fY3h0ICopKTsKKytzdGF0aWMgaW50IHZpX2RlbGV0ZV9kaXNwYXRjaCBQQVJBTVMoKF9ybF92 aW1vdGlvbl9jeHQgKikpOworK3N0YXRpYyBpbnQgdmlfeWFua19kaXNwYXRjaCBQQVJBTVMoKF9y bF92aW1vdGlvbl9jeHQgKikpOworKworK3N0YXRpYyBpbnQgdmlkb21vdmVfZGlzcGF0Y2ggUEFS QU1TKChfcmxfdmltb3Rpb25fY3h0ICopKTsKKysKKyB2b2lkCisgX3JsX3ZpX2luaXRpYWxpemVf bGluZSAoKQorIHsKKy0gIHJlZ2lzdGVyIGludCBpOworKyAgcmVnaXN0ZXIgaW50IGksIG47Cisg CistICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mICh2aV9tYXJrX2NoYXJzKSAvIHNpemVvZiAoaW50 KTsgaSsrKQorKyAgbiA9IHNpemVvZiAodmlfbWFya19jaGFycykgLyBzaXplb2YgKHZpX21hcmtf Y2hhcnNbMF0pOworKyAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKyAgICAgdmlfbWFya19jaGFy c1tpXSA9IC0xOworIAorICAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9WSUNNRE9OQ0UpOworQEAg LTIwNSw3ICsyMjIsMzQgQEAgcmxfdmlfcmVkbyAoY291bnQsIGMpCisgICAgICAgX3JsX3ZpX3N0 dWZmX2luc2VydCAoY291bnQpOworICAgICAgIC8qIEFuZCBiYWNrIHVwIHBvaW50IG92ZXIgdGhl IGxhc3QgY2hhcmFjdGVyIGluc2VydGVkLiAqLworICAgICAgIGlmIChybF9wb2ludCA+IDApCist CXJsX3BvaW50LS07CisrCV9ybF92aV9iYWNrdXAgKCk7CisrICAgIH0KKysgIC8qIERpdHRvIGZv ciByZWRvaW5nIGFuIGluc2VydCB3aXRoIGBJJywgYnV0IG1vdmUgdG8gdGhlIGJlZ2lubmluZyBv ZiB0aGUKKysgICAgIGxpbmUgbGlrZSB0aGUgYEknIGNvbW1hbmQgZG9lcy4gKi8KKysgIGVsc2Ug aWYgKF9ybF92aV9sYXN0X2NvbW1hbmQgPT0gJ0knICYmIHZpX2luc2VydF9idWZmZXIgJiYgKnZp X2luc2VydF9idWZmZXIpCisrICAgIHsKKysgICAgICBybF9iZWdfb2ZfbGluZSAoMSwgJ0knKTsK KysgICAgICBfcmxfdmlfc3R1ZmZfaW5zZXJ0IChjb3VudCk7CisrICAgICAgaWYgKHJsX3BvaW50 ID4gMCkKKysJX3JsX3ZpX2JhY2t1cCAoKTsKKysgICAgfQorKyAgLyogRGl0dG8gZm9yIHJlZG9p bmcgYW4gaW5zZXJ0IHdpdGggYGEnLCBidXQgbW92ZSBmb3J3YXJkIGEgY2hhcmFjdGVyIGZpcnN0 CisrICAgICBsaWtlIHRoZSBgYScgY29tbWFuZCBkb2VzLiAqLworKyAgZWxzZSBpZiAoX3JsX3Zp X2xhc3RfY29tbWFuZCA9PSAnYScgJiYgdmlfaW5zZXJ0X2J1ZmZlciAmJiAqdmlfaW5zZXJ0X2J1 ZmZlcikKKysgICAgeworKyAgICAgIF9ybF92aV9hcHBlbmRfZm9yd2FyZCAoJ2EnKTsKKysgICAg ICBfcmxfdmlfc3R1ZmZfaW5zZXJ0IChjb3VudCk7CisrICAgICAgaWYgKHJsX3BvaW50ID4gMCkK KysJX3JsX3ZpX2JhY2t1cCAoKTsKKysgICAgfQorKyAgLyogRGl0dG8gZm9yIHJlZG9pbmcgYW4g aW5zZXJ0IHdpdGggYEEnLCBidXQgbW92ZSB0byB0aGUgZW5kIG9mIHRoZSBsaW5lCisrICAgICBs aWtlIHRoZSBgQScgY29tbWFuZCBkb2VzLiAqLworKyAgZWxzZSBpZiAoX3JsX3ZpX2xhc3RfY29t bWFuZCA9PSAnQScgJiYgdmlfaW5zZXJ0X2J1ZmZlciAmJiAqdmlfaW5zZXJ0X2J1ZmZlcikKKysg ICAgeworKyAgICAgIHJsX2VuZF9vZl9saW5lICgxLCAnQScpOworKyAgICAgIF9ybF92aV9zdHVm Zl9pbnNlcnQgKGNvdW50KTsKKysgICAgICBpZiAocmxfcG9pbnQgPiAwKQorKwlfcmxfdmlfYmFj a3VwICgpOworICAgICB9CisgICBlbHNlCisgICAgIHIgPSBfcmxfZGlzcGF0Y2ggKF9ybF92aV9s YXN0X2NvbW1hbmQsIF9ybF9rZXltYXApOworQEAgLTU3MSwyNyArNjE1LDQwIEBAIHJsX3ZpX2lu c2VydF9iZWcgKGNvdW50LCBrZXkpCisgICAgICBpbnQgY291bnQsIGtleTsKKyB7CisgICBybF9i ZWdfb2ZfbGluZSAoMSwga2V5KTsKKy0gIHJsX3ZpX2luc2VydGlvbl9tb2RlICgxLCBrZXkpOwor KyAgcmxfdmlfaW5zZXJ0X21vZGUgKDEsIGtleSk7CisgICByZXR1cm4gKDApOworIH0KKyAKKy1p bnQKKy1ybF92aV9hcHBlbmRfbW9kZSAoY291bnQsIGtleSkKKy0gICAgIGludCBjb3VudCwga2V5 OworK3N0YXRpYyB2b2lkCisrX3JsX3ZpX2FwcGVuZF9mb3J3YXJkIChrZXkpCisrICAgICBpbnQg a2V5OworIHsKKysgIGludCBwb2ludDsKKysKKyAgIGlmIChybF9wb2ludCA8IHJsX2VuZCkKKyAg ICAgeworICAgICAgIGlmIChNQl9DVVJfTUFYID09IDEgfHwgcmxfYnl0ZV9vcmllbnRlZCkKKyAJ cmxfcG9pbnQrKzsKKyAgICAgICBlbHNlCistICAgICAgICB7CistICAgICAgICAgIGludCBwb2lu dCA9IHJsX3BvaW50OworLSAgICAgICAgICBybF9mb3J3YXJkX2NoYXIgKDEsIGtleSk7CistICAg ICAgICAgIGlmIChwb2ludCA9PSBybF9wb2ludCkKKy0gICAgICAgICAgICBybF9wb2ludCA9IHJs X2VuZDsKKy0gICAgICAgIH0KKysJeworKwkgIHBvaW50ID0gcmxfcG9pbnQ7CisrI2lmIDAKKysJ ICBybF9mb3J3YXJkX2NoYXIgKDEsIGtleSk7CisrI2Vsc2UKKysJICBybF9wb2ludCA9IF9ybF9m b3J3YXJkX2NoYXJfaW50ZXJuYWwgKDEpOworKyNlbmRpZgorKwkgIGlmIChwb2ludCA9PSBybF9w b2ludCkKKysJICAgIHJsX3BvaW50ID0gcmxfZW5kOworKwl9CisgICAgIH0KKy0gIHJsX3ZpX2lu c2VydGlvbl9tb2RlICgxLCBrZXkpOworK30KKysKKytpbnQKKytybF92aV9hcHBlbmRfbW9kZSAo Y291bnQsIGtleSkKKysgICAgIGludCBjb3VudCwga2V5OworK3sKKysgIF9ybF92aV9hcHBlbmRf Zm9yd2FyZCAoa2V5KTsKKysgIHJsX3ZpX3N0YXJ0X2luc2VydGluZyAoa2V5LCAxLCBybF9hcmdf c2lnbik7CisgICByZXR1cm4gKDApOworIH0KKyAKK0BAIC02MjUsMTMgKzY4MiwyMSBAQCBybF92 aV9pbnNlcnRpb25fbW9kZSAoY291bnQsIGtleSkKKyAgIHJldHVybiAoMCk7CisgfQorIAorK2lu dAorK3JsX3ZpX2luc2VydF9tb2RlIChjb3VudCwga2V5KQorKyAgICAgaW50IGNvdW50LCBrZXk7 CisreworKyAgcmxfdmlfc3RhcnRfaW5zZXJ0aW5nIChrZXksIDEsIHJsX2FyZ19zaWduKTsKKysg IHJldHVybiAoMCk7CisrfQorKworIHN0YXRpYyB2b2lkCisgX3JsX3ZpX3NhdmVfaW5zZXJ0ICh1 cCkKKyAgICAgICBVTkRPX0xJU1QgKnVwOworIHsKKyAgIGludCBsZW4sIHN0YXJ0LCBlbmQ7Cisg CistICBpZiAodXAgPT0gMCkKKysgIGlmICh1cCA9PSAwIHx8IHVwLT53aGF0ICE9IFVORE9fSU5T RVJUKQorICAgICB7CisgICAgICAgaWYgKHZpX2luc2VydF9idWZmZXJfc2l6ZSA+PSAxKQorIAl2 aV9pbnNlcnRfYnVmZmVyWzBdID0gJ1wwJzsKK0BAIC02NjgsOCArNzMzLDExIEBAIF9ybF92aV9k b25lX2luc2VydGluZyAoKQorICAgICB9CisgICBlbHNlCisgICAgIHsKKy0gICAgICBpZiAoKF9y bF92aV9sYXN0X2tleV9iZWZvcmVfaW5zZXJ0ID09ICdpJyB8fCBfcmxfdmlfbGFzdF9rZXlfYmVm b3JlX2luc2VydCA9PSAnYScpICYmIHJsX3VuZG9fbGlzdCkKKy0gICAgICAgIF9ybF92aV9zYXZl X2luc2VydCAocmxfdW5kb19saXN0KTsKKysgICAgICBpZiAocmxfdW5kb19saXN0ICYmIChfcmxf dmlfbGFzdF9rZXlfYmVmb3JlX2luc2VydCA9PSAnaScgfHwKKysJCQkgICBfcmxfdmlfbGFzdF9r ZXlfYmVmb3JlX2luc2VydCA9PSAnYScgfHwKKysJCQkgICBfcmxfdmlfbGFzdF9rZXlfYmVmb3Jl X2luc2VydCA9PSAnSScgfHwKKysJCQkgICBfcmxfdmlfbGFzdF9rZXlfYmVmb3JlX2luc2VydCA9 PSAnQScpKQorKwlfcmxfdmlfc2F2ZV9pbnNlcnQgKHJsX3VuZG9fbGlzdCk7CisgICAgICAgLyog WFhYIC0gT3RoZXIga2V5cyBwcm9iYWJseSBuZWVkIHRvIGJlIGNoZWNrZWQuICovCisgICAgICAg ZWxzZSBpZiAoX3JsX3ZpX2xhc3Rfa2V5X2JlZm9yZV9pbnNlcnQgPT0gJ0MnKQorIAlybF9lbmRf dW5kb19ncm91cCAoKTsKK0BAIC03MTYsNyArNzg0LDggQEAgX3JsX3ZpX2NoYW5nZV9tYmNoYXJf Y2FzZSAoY291bnQpCisgeworICAgd2NoYXJfdCB3YzsKKyAgIGNoYXIgbWJbTUJfTEVOX01BWCsx XTsKKy0gIGludCBtYmxlbiwgcDsKKysgIGludCBtbGVuLCBwOworKyAgc2l6ZV90IG07CisgICBt YnN0YXRlX3QgcHM7CisgCisgICBtZW1zZXQgKCZwcywgMCwgc2l6ZW9mIChtYnN0YXRlX3QpKTsK K0BAIC03MjQsNyArNzkzLDExIEBAIF9ybF92aV9jaGFuZ2VfbWJjaGFyX2Nhc2UgKGNvdW50KQor ICAgICBjb3VudC0tOworICAgd2hpbGUgKGNvdW50LS0gJiYgcmxfcG9pbnQgPCBybF9lbmQpCisg ICAgIHsKKy0gICAgICBtYnJ0b3djICgmd2MsIHJsX2xpbmVfYnVmZmVyICsgcmxfcG9pbnQsIHJs X2VuZCAtIHJsX3BvaW50LCAmcHMpOworKyAgICAgIG0gPSBtYnJ0b3djICgmd2MsIHJsX2xpbmVf YnVmZmVyICsgcmxfcG9pbnQsIHJsX2VuZCAtIHJsX3BvaW50LCAmcHMpOworKyAgICAgIGlmIChN Ql9JTlZBTElEQ0ggKG0pKQorKwl3YyA9ICh3Y2hhcl90KXJsX2xpbmVfYnVmZmVyW3JsX3BvaW50 XTsKKysgICAgICBlbHNlIGlmIChNQl9OVUxMV0NIIChtKSkKKysJd2MgPSBMJ1wwJzsKKyAgICAg ICBpZiAoaXN3dXBwZXIgKHdjKSkKKyAJd2MgPSB0b3dsb3dlciAod2MpOworICAgICAgIGVsc2Ug aWYgKGlzd2xvd2VyICh3YykpCitAQCAtNzQwLDkgKzgxMyw5IEBAIF9ybF92aV9jaGFuZ2VfbWJj aGFyX2Nhc2UgKGNvdW50KQorICAgICAgIGlmICh3YykKKyAJeworIAkgIHAgPSBybF9wb2ludDsK Ky0JICBtYmxlbiA9IHdjcnRvbWIgKG1iLCB3YywgJnBzKTsKKy0JICBpZiAobWJsZW4gPj0gMCkK Ky0JICAgIG1iW21ibGVuXSA9ICdcMCc7CisrCSAgbWxlbiA9IHdjcnRvbWIgKG1iLCB3YywgJnBz KTsKKysJICBpZiAobWxlbiA+PSAwKQorKwkgICAgbWJbbWxlbl0gPSAnXDAnOworIAkgIHJsX2Jl Z2luX3VuZG9fZ3JvdXAgKCk7CisgCSAgcmxfdmlfZGVsZXRlICgxLCAwKTsKKyAJICBpZiAocmxf cG9pbnQgPCBwKQkvKiBEaWQgd2UgcmV0cmVhdCBhdCBFT0w/ICovCitAQCAtNzUyLDcgKzgyNSw3 IEBAIF9ybF92aV9jaGFuZ2VfbWJjaGFyX2Nhc2UgKGNvdW50KQorIAkgIHJsX3ZpX2NoZWNrICgp OworIAl9CisgICAgICAgZWxzZQorLSAgICAgICAgcmxfZm9yd2FyZF9jaGFyICgxLCAwKTsKKysJ cmxfZm9yd2FyZF9jaGFyICgxLCAwKTsKKyAgICAgfQorIAorICAgcmV0dXJuIDA7CitAQCAtNzk5 LDcgKzg3Miw3IEBAIHJsX3ZpX2NoYW5nZV9jYXNlIChjb3VudCwgaWdub3JlKQorIAkgIF9ybF9p bnNlcnRfY2hhciAoMSwgYyk7CisgCSAgcmxfZW5kX3VuZG9fZ3JvdXAgKCk7CisgCSAgcmxfdmlf Y2hlY2sgKCk7CistICAgICAgICB9CisrCX0KKyAgICAgICBlbHNlCisgCXJsX2ZvcndhcmRfY2hh ciAoMSwgYyk7CisgICAgIH0KK0BAIC04MjAsNiArODkzLDE1IEBAIHJsX3ZpX3B1dCAoY291bnQs IGtleSkKKyAgIHJldHVybiAoMCk7CisgfQorIAorK3N0YXRpYyB2b2lkCisrX3JsX3ZpX2JhY2t1 cCAoKQorK3sKKysgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDAp CisrICAgIHJsX3BvaW50ID0gX3JsX2ZpbmRfcHJldl9tYmNoYXIgKHJsX2xpbmVfYnVmZmVyLCBy bF9wb2ludCwgTUJfRklORF9OT05aRVJPKTsKKysgIGVsc2UKKysgICAgcmxfcG9pbnQtLTsKKyt9 CisrCisgaW50CisgcmxfdmlfY2hlY2sgKCkKKyB7CitAQCAtODI4LDcgKzkxMCw3IEBAIHJsX3Zp X2NoZWNrICgpCisgICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQg PT0gMCkKKyAJcmxfcG9pbnQgPSBfcmxfZmluZF9wcmV2X21iY2hhciAocmxfbGluZV9idWZmZXIs IHJsX3BvaW50LCBNQl9GSU5EX05PTlpFUk8pOworICAgICAgIGVsc2UKKy0gICAgICAgIHJsX3Bv aW50LS07CisrCXJsX3BvaW50LS07CisgICAgIH0KKyAgIHJldHVybiAoMCk7CisgfQorQEAgLTg0 NCw0NyArOTI2LDEwNiBAQCBybF92aV9jb2x1bW4gKGNvdW50LCBrZXkpCisgICByZXR1cm4gKDAp OworIH0KKyAKKy1pbnQKKy1ybF92aV9kb21vdmUgKGtleSwgbmV4dGtleSkKKy0gICAgIGludCBr ZXksICpuZXh0a2V5OworKy8qIFByb2Nlc3MgQyBhcyBwYXJ0IG9mIHRoZSBjdXJyZW50IG51bWVy aWMgYXJndW1lbnQuICBSZXR1cm4gLTEgaWYgdGhlCisrICAgYXJndW1lbnQgc2hvdWxkIGJlIGFi b3J0ZWQsIDAgaWYgd2Ugc2hvdWxkIG5vdCByZWFkIGFueSBtb3JlIGNoYXJzLCBhbmQKKysgICAx IGlmIHdlIHNob3VsZCBjb250aW51ZSB0byByZWFkIGNoYXJzLiAqLworK3N0YXRpYyBpbnQKKytf cmxfdmlfYXJnX2Rpc3BhdGNoIChjKQorKyAgICAgaW50IGM7CisgeworLSAgaW50IGMsIHNhdmU7 CistICBpbnQgb2xkX2VuZDsKKysgIGludCBrZXk7CisgCistICBybF9tYXJrID0gcmxfcG9pbnQ7 CistICBSTF9TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQpOworLSAgYyA9IHJsX3JlYWRfa2V5 ICgpOworLSAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQpOworLSAgKm5leHRrZXkg PSBjOworKyAga2V5ID0gYzsKKysgIGlmIChjID49IDAgJiYgX3JsX2tleW1hcFtjXS50eXBlID09 IElTRlVOQyAmJiBfcmxfa2V5bWFwW2NdLmZ1bmN0aW9uID09IHJsX3VuaXZlcnNhbF9hcmd1bWVu dCkKKysgICAgeworKyAgICAgIHJsX251bWVyaWNfYXJnICo9IDQ7CisrICAgICAgcmV0dXJuIDE7 CisrICAgIH0KKysKKysgIGMgPSBVTk1FVEEgKGMpOworIAorLSAgaWYgKCFtZW1iZXIgKGMsIHZp X21vdGlvbikpCisrICBpZiAoX3JsX2RpZ2l0X3AgKGMpKQorICAgICB7CistICAgICAgaWYgKF9y bF9kaWdpdF9wIChjKSkKKy0JeworLQkgIHNhdmUgPSBybF9udW1lcmljX2FyZzsKKy0JICBybF9u dW1lcmljX2FyZyA9IF9ybF9kaWdpdF92YWx1ZSAoYyk7CistCSAgcmxfZXhwbGljaXRfYXJnID0g MTsKKy0JICBSTF9TRVRTVEFURSAoUkxfU1RBVEVfTlVNRVJJQ0FSR3xSTF9TVEFURV9WSU1PVElP Tik7CistCSAgcmxfZGlnaXRfbG9vcDEgKCk7CistCSAgUkxfVU5TRVRTVEFURSAoUkxfU1RBVEVf VklNT1RJT04pOworLQkgIHJsX251bWVyaWNfYXJnICo9IHNhdmU7CistCSAgUkxfU0VUU1RBVEUo UkxfU1RBVEVfTU9SRUlOUFVUKTsKKy0JICBjID0gcmxfcmVhZF9rZXkgKCk7CS8qIHJlYWwgY29t bWFuZCAqLworLQkgIFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfTU9SRUlOUFVUKTsKKy0JICAqbmV4 dGtleSA9IGM7CistCX0KKy0gICAgICBlbHNlIGlmIChrZXkgPT0gYyAmJiAoa2V5ID09ICdkJyB8 fCBrZXkgPT0gJ3knIHx8IGtleSA9PSAnYycpKQorLQl7CistCSAgcmxfbWFyayA9IHJsX2VuZDsK Ky0JICBybF9iZWdfb2ZfbGluZSAoMSwgYyk7CistCSAgX3JsX3ZpX2xhc3RfbW90aW9uID0gYzsK Ky0JICByZXR1cm4gKDApOworLQl9CisrICAgICAgaWYgKHJsX2V4cGxpY2l0X2FyZykKKysJcmxf bnVtZXJpY19hcmcgPSAocmxfbnVtZXJpY19hcmcgKiAxMCkgKyBfcmxfZGlnaXRfdmFsdWUgKGMp OworICAgICAgIGVsc2UKKy0JcmV0dXJuICgtMSk7CisrCXJsX251bWVyaWNfYXJnID0gX3JsX2Rp Z2l0X3ZhbHVlIChjKTsKKysgICAgICBybF9leHBsaWNpdF9hcmcgPSAxOworKyAgICAgIHJldHVy biAxOwkJLyoga2VlcCBnb2luZyAqLworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICBy bF9jbGVhcl9tZXNzYWdlICgpOworKyAgICAgIHJsX3N0dWZmX2NoYXIgKGtleSk7CisrICAgICAg cmV0dXJuIDA7CQkvKiBkb25lICovCisrICAgIH0KKyt9CisrCisrLyogQSBzaW1wbGlmaWVkIGxv b3AgZm9yIHZpLiBEb24ndCBkaXNwYXRjaCBrZXkgYXQgZW5kLgorKyAgIERvbid0IHJlY29nbml6 ZSBtaW51cyBzaWduPworKyAgIFNob3VsZCB0aGlzIGRvIHJsX3NhdmVfcHJvbXB0L3JsX3Jlc3Rv cmVfcHJvbXB0PyAqLworK3N0YXRpYyBpbnQKKytybF9kaWdpdF9sb29wMSAoKQorK3sKKysgIGlu dCBjLCByOworKworKyAgd2hpbGUgKDEpCisrICAgIHsKKysgICAgICBpZiAoX3JsX2FyZ19vdmVy ZmxvdyAoKSkKKysJcmV0dXJuIDE7CisrCisrICAgICAgYyA9IF9ybF9hcmdfZ2V0Y2hhciAoKTsK KysKKysgICAgICByID0gX3JsX3ZpX2FyZ19kaXNwYXRjaCAoYyk7CisrICAgICAgaWYgKHIgPD0g MCkKKysJYnJlYWs7CisgICAgIH0KKyAKKy0gIF9ybF92aV9sYXN0X21vdGlvbiA9IGM7CisrICBS TF9VTlNFVFNUQVRFKFJMX1NUQVRFX05VTUVSSUNBUkcpOworKyAgcmV0dXJuICgwKTsKKyt9Cisr Cisrc3RhdGljIHZvaWQKKytfcmxfbXZjeHRfaW5pdCAobSwgb3AsIGtleSkKKysgICAgIF9ybF92 aW1vdGlvbl9jeHQgKm07CisrICAgICBpbnQgb3AsIGtleTsKKyt7CisrICBtLT5vcCA9IG9wOwor KyAgbS0+c3RhdGUgPSBtLT5mbGFncyA9IDA7CisrICBtLT5uY3h0ID0gMDsKKysgIG0tPm51bWVy aWNfYXJnID0gLTE7CisrICBtLT5zdGFydCA9IHJsX3BvaW50OworKyAgbS0+ZW5kID0gcmxfZW5k OworKyAgbS0+a2V5ID0ga2V5OworKyAgbS0+bW90aW9uID0gLTE7CisrfQorKworK3N0YXRpYyBf cmxfdmltb3Rpb25fY3h0ICoKKytfcmxfbXZjeHRfYWxsb2MgKG9wLCBrZXkpCisrICAgICBpbnQg b3AsIGtleTsKKyt7CisrICBfcmxfdmltb3Rpb25fY3h0ICptOworKworKyAgbSA9IHhtYWxsb2Mg KHNpemVvZiAoX3JsX3ZpbW90aW9uX2N4dCkpOworKyAgX3JsX212Y3h0X2luaXQgKG0sIG9wLCBr ZXkpOworKyAgcmV0dXJuIG07CisrfQorKworK3N0YXRpYyB2b2lkCisrX3JsX212Y3h0X2Rpc3Bv c2UgKG0pCisrICAgICBfcmxfdmltb3Rpb25fY3h0ICptOworK3sKKysgIHhmcmVlIChtKTsKKyt9 CisrCisrc3RhdGljIGludAorK3JsX2RvbW92ZV9tb3Rpb25fY2FsbGJhY2sgKG0pCisrICAgICBf cmxfdmltb3Rpb25fY3h0ICptOworK3sKKysgIGludCBjLCBzYXZlLCByOworKyAgaW50IG9sZF9l bmQ7CisrCisrICBfcmxfdmlfbGFzdF9tb3Rpb24gPSBjID0gbS0+bW90aW9uOworIAorICAgLyog QXBwZW5kIGEgYmxhbmsgY2hhcmFjdGVyIHRlbXBvcmFyaWx5IHNvIHRoYXQgdGhlIG1vdGlvbiBy b3V0aW5lcworICAgICAgd29yayByaWdodCBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lLiAqLworQEAg LTkxMyw3ICsxMDU0LDcgQEAgcmxfdmlfZG9tb3ZlIChrZXksIG5leHRrZXkpCisgCisgICAvKiBJ ZiBjdyBvciBjVywgYmFjayB1cCB0byB0aGUgZW5kIG9mIGEgd29yZCwgc28gdGhlIGJlaGF2aW91 ciBvZiBjZQorICAgICAgb3IgY0UgaXMgdGhlIGFjdHVhbCByZXN1bHQuICBCcnV0ZS1mb3JjZSwg bm8gc3VidGxldHkuICovCistICBpZiAoa2V5ID09ICdjJyAmJiBybF9wb2ludCA+PSBybF9tYXJr ICYmIChfcmxfdG9fdXBwZXIgKGMpID09ICdXJykpCisrICBpZiAobS0+a2V5ID09ICdjJyAmJiBy bF9wb2ludCA+PSBybF9tYXJrICYmIChfcmxfdG9fdXBwZXIgKGMpID09ICdXJykpCisgICAgIHsK KyAgICAgICAvKiBEb24ndCBtb3ZlIGZhcnRoZXIgYmFjayB0aGFuIHdoZXJlIHdlIHN0YXJ0ZWQu ICovCisgICAgICAgd2hpbGUgKHJsX3BvaW50ID4gcmxfbWFyayAmJiB3aGl0ZXNwYWNlIChybF9s aW5lX2J1ZmZlcltybF9wb2ludF0pKQorQEAgLTkyMiw3ICsxMDYzLDcgQEAgcmxfdmlfZG9tb3Zl IChrZXksIG5leHRrZXkpCisgICAgICAgLyogUG9zaXguMiBzYXlzIHRoYXQgaWYgY3cgb3IgY1cg bW92ZXMgdGhlIGN1cnNvciB0b3dhcmRzIHRoZSBlbmQgb2YKKyAJIHRoZSBsaW5lLCB0aGUgY2hh cmFjdGVyIHVuZGVyIHRoZSBjdXJzb3Igc2hvdWxkIGJlIGRlbGV0ZWQuICovCisgICAgICAgaWYg KHJsX3BvaW50ID09IHJsX21hcmspCistICAgICAgICBybF9wb2ludCsrOworKwlybF9wb2ludCsr OworICAgICAgIGVsc2UKKyAJeworIAkgIC8qIE1vdmUgcGFzdCB0aGUgZW5kIG9mIHRoZSB3b3Jk IHNvIHRoYXQgdGhlIGtpbGwgZG9lc24ndAorQEAgLTkzNiw4OCArMTA3NywxNDIgQEAgcmxfdmlf ZG9tb3ZlIChrZXksIG5leHRrZXkpCisgICBpZiAocmxfbWFyayA8IHJsX3BvaW50KQorICAgICBT V0FQIChybF9wb2ludCwgcmxfbWFyayk7CisgCistICByZXR1cm4gKDApOworKyNpZiBkZWZpbmVk IChSRUFETElORV9DQUxMQkFDS1MpCisrICBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfQ0FMTEJB Q0spKQorKyAgICAoKnJsX3JlZGlzcGxheV9mdW5jdGlvbikoKTsJCS8qIG1ha2Ugc3VyZSBtb3Rp b24gaXMgZGlzcGxheWVkICovCisrI2VuZGlmCisrCisrICByID0gdmlkb21vdmVfZGlzcGF0Y2gg KG0pOworKworKyAgcmV0dXJuIChyKTsKKyB9CisgCistLyogUHJvY2VzcyBDIGFzIHBhcnQgb2Yg dGhlIGN1cnJlbnQgbnVtZXJpYyBhcmd1bWVudC4gIFJldHVybiAtMSBpZiB0aGUKKy0gICBhcmd1 bWVudCBzaG91bGQgYmUgYWJvcnRlZCwgMCBpZiB3ZSBzaG91bGQgbm90IHJlYWQgYW55IG1vcmUg Y2hhcnMsIGFuZAorLSAgIDEgaWYgd2Ugc2hvdWxkIGNvbnRpbnVlIHRvIHJlYWQgY2hhcnMuICov CisrI2RlZmluZSBSTF9WSU1PVkVOVU1BUkcoKQkoUkxfSVNTVEFURSAoUkxfU1RBVEVfVklNT1RJ T04pICYmIFJMX0lTU1RBVEUgKFJMX1NUQVRFX05VTUVSSUNBUkcpKQorKworIHN0YXRpYyBpbnQK Ky1fcmxfdmlfYXJnX2Rpc3BhdGNoIChjKQorLSAgICAgaW50IGM7CisrcmxfZG9tb3ZlX3JlYWRf Y2FsbGJhY2sgKG0pCisrICAgICBfcmxfdmltb3Rpb25fY3h0ICptOworIHsKKy0gIGludCBrZXk7 CisrICBpbnQgYywgc2F2ZTsKKyAKKy0gIGtleSA9IGM7CistICBpZiAoYyA+PSAwICYmIF9ybF9r ZXltYXBbY10udHlwZSA9PSBJU0ZVTkMgJiYgX3JsX2tleW1hcFtjXS5mdW5jdGlvbiA9PSBybF91 bml2ZXJzYWxfYXJndW1lbnQpCisrICBjID0gbS0+bW90aW9uOworKworKyAgaWYgKG1lbWJlciAo YywgdmlfbW90aW9uKSkKKyAgICAgeworLSAgICAgIHJsX251bWVyaWNfYXJnICo9IDQ7CistICAg ICAgcmV0dXJuIDE7CisrI2lmIGRlZmluZWQgKFJFQURMSU5FX0NBTExCQUNLUykKKysgICAgICAv KiBJZiB3ZSBqdXN0IHJlYWQgYSB2aS1tb2RlIG1vdGlvbiBjb21tYW5kIG51bWVyaWMgYXJndW1l bnQsIHR1cm4gb2ZmCisrCSB0aGUgYHJlYWRpbmcgbnVtZXJpYyBhcmcnIHN0YXRlICovCisrICAg ICAgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSAmJiBSTF9WSU1PVkVOVU1BUkco KSkKKysJUkxfVU5TRVRTVEFURSAoUkxfU1RBVEVfTlVNRVJJQ0FSRyk7CisrI2VuZGlmCisrICAg ICAgLyogU2hvdWxkIGRvIGV2ZXJ5dGhpbmcsIGluY2x1ZGluZyB0dXJuaW5nIG9mZiBSTF9TVEFU RV9WSU1PVElPTiAqLworKyAgICAgIHJldHVybiAocmxfZG9tb3ZlX21vdGlvbl9jYWxsYmFjayAo bSkpOworICAgICB9CistCistICBjID0gVU5NRVRBIChjKTsKKy0KKy0gIGlmIChfcmxfZGlnaXRf cCAoYykpCisrICBlbHNlIGlmIChtLT5rZXkgPT0gYyAmJiAobS0+a2V5ID09ICdkJyB8fCBtLT5r ZXkgPT0gJ3knIHx8IG0tPmtleSA9PSAnYycpKQorICAgICB7CistICAgICAgaWYgKHJsX2V4cGxp Y2l0X2FyZykKKy0JcmxfbnVtZXJpY19hcmcgPSAocmxfbnVtZXJpY19hcmcgKiAxMCkgKyBfcmxf ZGlnaXRfdmFsdWUgKGMpOworLSAgICAgIGVsc2UKKy0JcmxfbnVtZXJpY19hcmcgPSBfcmxfZGln aXRfdmFsdWUgKGMpOworKyAgICAgIHJsX21hcmsgPSBybF9lbmQ7CisrICAgICAgcmxfYmVnX29m X2xpbmUgKDEsIGMpOworKyAgICAgIF9ybF92aV9sYXN0X21vdGlvbiA9IGM7CisrICAgICAgUkxf VU5TRVRTVEFURSAoUkxfU1RBVEVfVklNT1RJT04pOworKyAgICAgIHJldHVybiAodmlkb21vdmVf ZGlzcGF0Y2ggKG0pKTsKKysgICAgfQorKyNpZiBkZWZpbmVkIChSRUFETElORV9DQUxMQkFDS1Mp CisrICAvKiBYWFggLSB0aGVzZSBuZWVkIHRvIGhhbmRsZSBybF91bml2ZXJzYWxfYXJndW1lbnQg YmluZGluZ3MgKi8KKysgIC8qIFJlYWRpbmcgdmkgbW90aW9uIGNoYXIgY29udGludWluZyBudW1l cmljIGFyZ3VtZW50ICovCisrICBlbHNlIGlmIChfcmxfZGlnaXRfcCAoYykgJiYgUkxfSVNTVEFU RSAoUkxfU1RBVEVfQ0FMTEJBQ0spICYmIFJMX1ZJTU9WRU5VTUFSRygpKQorKyAgICB7CisrICAg ICAgcmV0dXJuIChfcmxfdmlfYXJnX2Rpc3BhdGNoIChjKSk7CisrICAgIH0KKysgIC8qIFJlYWRp bmUgdmkgbW90aW9uIGNoYXIgc3RhcnRpbmcgbnVtZXJpYyBhcmd1bWVudCAqLworKyAgZWxzZSBp ZiAoX3JsX2RpZ2l0X3AgKGMpICYmIFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSAmJiBS TF9JU1NUQVRFIChSTF9TVEFURV9WSU1PVElPTikgJiYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX05V TUVSSUNBUkcpID09IDApKQorKyAgICB7CisrICAgICAgUkxfU0VUU1RBVEUgKFJMX1NUQVRFX05V TUVSSUNBUkcpOworKyAgICAgIHJldHVybiAoX3JsX3ZpX2FyZ19kaXNwYXRjaCAoYykpOworKyAg ICB9CisrI2VuZGlmCisrICBlbHNlIGlmIChfcmxfZGlnaXRfcCAoYykpCisrICAgIHsKKysgICAg ICAvKiBUaGlzIGNvZGUgcGF0aCB0YWtlbiB3aGVuIG5vdCBpbiBjYWxsYmFjayBtb2RlICovCisr ICAgICAgc2F2ZSA9IHJsX251bWVyaWNfYXJnOworKyAgICAgIHJsX251bWVyaWNfYXJnID0gX3Js X2RpZ2l0X3ZhbHVlIChjKTsKKyAgICAgICBybF9leHBsaWNpdF9hcmcgPSAxOworLSAgICAgIHJl dHVybiAxOworKyAgICAgIFJMX1NFVFNUQVRFIChSTF9TVEFURV9OVU1FUklDQVJHKTsKKysgICAg ICBybF9kaWdpdF9sb29wMSAoKTsKKysgICAgICBybF9udW1lcmljX2FyZyAqPSBzYXZlOworKyAg ICAgIGMgPSBybF92aV9kb21vdmVfZ2V0Y2hhciAobSk7CisrICAgICAgaWYgKGMgPCAwKQorKwl7 CisrCSAgbS0+bW90aW9uID0gMDsKKysJICByZXR1cm4gLTE7CisrCX0KKysgICAgICBtLT5tb3Rp b24gPSBjOworKyAgICAgIHJldHVybiAocmxfZG9tb3ZlX21vdGlvbl9jYWxsYmFjayAobSkpOwor ICAgICB9CisgICBlbHNlCisgICAgIHsKKy0gICAgICBybF9jbGVhcl9tZXNzYWdlICgpOworLSAg ICAgIHJsX3N0dWZmX2NoYXIgKGtleSk7CistICAgICAgcmV0dXJuIDA7CisrICAgICAgUkxfVU5T RVRTVEFURSAoUkxfU1RBVEVfVklNT1RJT04pOworKyAgICAgIFJMX1VOU0VUU1RBVEUgKFJMX1NU QVRFX05VTUVSSUNBUkcpOworKyAgICAgIHJldHVybiAoMSk7CisgICAgIH0KKyB9CisgCistLyog QSBzaW1wbGlmaWVkIGxvb3AgZm9yIHZpLiBEb24ndCBkaXNwYXRjaCBrZXkgYXQgZW5kLgorLSAg IERvbid0IHJlY29nbml6ZSBtaW51cyBzaWduPworLSAgIFNob3VsZCB0aGlzIGRvIHJsX3NhdmVf cHJvbXB0L3JsX3Jlc3RvcmVfcHJvbXB0PyAqLworIHN0YXRpYyBpbnQKKy1ybF9kaWdpdF9sb29w MSAoKQorK3JsX3ZpX2RvbW92ZV9nZXRjaGFyIChtKQorKyAgICAgX3JsX3ZpbW90aW9uX2N4dCAq bTsKKyB7CistICBpbnQgYywgcjsKKysgIGludCBjOworIAorLSAgd2hpbGUgKDEpCistICAgIHsK Ky0gICAgICBpZiAoX3JsX2FyZ19vdmVyZmxvdyAoKSkKKy0JcmV0dXJuIDE7CisrICBSTF9TRVRT VEFURShSTF9TVEFURV9NT1JFSU5QVVQpOworKyAgYyA9IHJsX3JlYWRfa2V5ICgpOworKyAgUkxf VU5TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQpOworIAorLSAgICAgIGMgPSBfcmxfYXJnX2dl dGNoYXIgKCk7CisrICByZXR1cm4gYzsKKyt9CisgCistICAgICAgciA9IF9ybF92aV9hcmdfZGlz cGF0Y2ggKGMpOworLSAgICAgIGlmIChyIDw9IDApCistCWJyZWFrOworLSAgICB9CisrI2lmIGRl ZmluZWQgKFJFQURMSU5FX0NBTExCQUNLUykKKytpbnQKKytfcmxfdmlfZG9tb3ZlX2NhbGxiYWNr IChtKQorKyAgICAgX3JsX3ZpbW90aW9uX2N4dCAqbTsKKyt7CisrICBpbnQgYywgcjsKKyAKKy0g IFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfTlVNRVJJQ0FSRyk7CistICByZXR1cm4gKDApOworKyAg bS0+bW90aW9uID0gYyA9IHJsX3ZpX2RvbW92ZV9nZXRjaGFyIChtKTsKKysgIC8qIFhYWCAtIHdo YXQgdG8gZG8gaWYgdGhpcyByZXR1cm5zIC0xPyAgU2hvdWxkIHdlIHJldHVybiAxIGZvciBlb2Yg dG8KKysgICAgIGNhbGxiYWNrIGNvZGU/ICovCisrICByID0gcmxfZG9tb3ZlX3JlYWRfY2FsbGJh Y2sgKG0pOworKworKyAgcmV0dXJuICgociA9PSAwKSA/IHIgOiAxKTsJLyogbm9ybWFsaXplIHJl dHVybiB2YWx1ZXMgKi8KKyB9CisrI2VuZGlmCisgCisrLyogVGhpcyBjb2RlIHBhdGggdGFrZW4g d2hlbiBub3QgaW4gY2FsbGJhY2sgbW9kZS4gKi8KKyBpbnQKKy1ybF92aV9kZWxldGVfdG8gKGNv dW50LCBrZXkpCistICAgICBpbnQgY291bnQsIGtleTsKKytybF92aV9kb21vdmUgKHgsIGlnbm9y ZSkKKysgICAgIGludCB4LCAqaWdub3JlOworIHsKKy0gIGludCBjOworKyAgaW50IHI7CisrICBf cmxfdmltb3Rpb25fY3h0ICptOworIAorLSAgaWYgKF9ybF91cHBlcmNhc2VfcCAoa2V5KSkKKy0g ICAgcmxfc3R1ZmZfY2hhciAoJyQnKTsKKy0gIGVsc2UgaWYgKHZpX3JlZG9pbmcpCistICAgIHJs X3N0dWZmX2NoYXIgKF9ybF92aV9sYXN0X21vdGlvbik7CisrICBtID0gX3JsX3ZpbXZjeHQ7Cisr ICAqaWdub3JlID0gbS0+bW90aW9uID0gcmxfdmlfZG9tb3ZlX2dldGNoYXIgKG0pOworIAorLSAg aWYgKHJsX3ZpX2RvbW92ZSAoa2V5LCAmYykpCisrICBpZiAobS0+bW90aW9uIDwgMCkKKyAgICAg eworLSAgICAgIHJsX2RpbmcgKCk7CisrICAgICAgbS0+bW90aW9uID0gMDsKKyAgICAgICByZXR1 cm4gLTE7CisgICAgIH0KKyAKKysgIHJldHVybiAocmxfZG9tb3ZlX3JlYWRfY2FsbGJhY2sgKG0p KTsKKyt9CisrCisrc3RhdGljIGludAorK3ZpX2RlbGV0ZV9kaXNwYXRjaCAobSkKKysgICAgIF9y bF92aW1vdGlvbl9jeHQgKm07CisreworICAgLyogVGhlc2UgYXJlIHRoZSBtb3Rpb24gY29tbWFu ZHMgdGhhdCBkbyBub3QgcmVxdWlyZSBhZGp1c3RpbmcgdGhlCisgICAgICBtYXJrLiAqLworLSAg aWYgKChzdHJjaHIgKCIgbHxoXjBiQiIsIGMpID09IDApICYmIChybF9tYXJrIDwgcmxfZW5kKSkK KysgIGlmICgoKHN0cmNociAoIiBsfGheMGJCRlRgIiwgbS0+bW90aW9uKSA9PSAwKSAmJiAocmxf cG9pbnQgPj0gbS0+c3RhcnQpKSAmJgorKyAgICAgIChybF9tYXJrIDwgcmxfZW5kKSkKKyAgICAg cmxfbWFyaysrOworIAorICAgcmxfa2lsbF90ZXh0IChybF9wb2ludCwgcmxfbWFyayk7CitAQCAt MTAyNSwzMyArMTIyMCw2MSBAQCBybF92aV9kZWxldGVfdG8gKGNvdW50LCBrZXkpCisgfQorIAor IGludAorLXJsX3ZpX2NoYW5nZV90byAoY291bnQsIGtleSkKKytybF92aV9kZWxldGVfdG8gKGNv dW50LCBrZXkpCisgICAgICBpbnQgY291bnQsIGtleTsKKyB7CistICBpbnQgYywgc3RhcnRfcG9z OworKyAgaW50IGMsIHI7CisrCisrICBfcmxfdmltdmN4dCA9IF9ybF9tdmN4dF9hbGxvYyAoVklN X0RFTEVURSwga2V5KTsKKysgIF9ybF92aW12Y3h0LT5zdGFydCA9IHJsX3BvaW50OworIAorKyAg cmxfbWFyayA9IHJsX3BvaW50OworICAgaWYgKF9ybF91cHBlcmNhc2VfcCAoa2V5KSkKKy0gICAg cmxfc3R1ZmZfY2hhciAoJyQnKTsKKysgICAgeworKyAgICAgIF9ybF92aW12Y3h0LT5tb3Rpb24g PSAnJCc7CisrICAgICAgciA9IHJsX2RvbW92ZV9tb3Rpb25fY2FsbGJhY2sgKF9ybF92aW12Y3h0 KTsKKysgICAgfQorICAgZWxzZSBpZiAodmlfcmVkb2luZykKKy0gICAgcmxfc3R1ZmZfY2hhciAo X3JsX3ZpX2xhc3RfbW90aW9uKTsKKy0KKy0gIHN0YXJ0X3BvcyA9IHJsX3BvaW50OworKyAgICB7 CisrICAgICAgX3JsX3ZpbXZjeHQtPm1vdGlvbiA9IF9ybF92aV9sYXN0X21vdGlvbjsKKysgICAg ICByID0gcmxfZG9tb3ZlX21vdGlvbl9jYWxsYmFjayAoX3JsX3ZpbXZjeHQpOworKyAgICB9Cisr I2lmIGRlZmluZWQgKFJFQURMSU5FX0NBTExCQUNLUykKKysgIGVsc2UgaWYgKFJMX0lTU1RBVEUg KFJMX1NUQVRFX0NBTExCQUNLKSkKKysgICAgeworKyAgICAgIFJMX1NFVFNUQVRFIChSTF9TVEFU RV9WSU1PVElPTik7CisrICAgICAgcmV0dXJuICgwKTsKKysgICAgfQorKyNlbmRpZgorKyAgZWxz ZQorKyAgICByID0gcmxfdmlfZG9tb3ZlIChrZXksICZjKTsKKyAKKy0gIGlmIChybF92aV9kb21v dmUgKGtleSwgJmMpKQorKyAgaWYgKHIgPCAwKQorICAgICB7CisgICAgICAgcmxfZGluZyAoKTsK Ky0gICAgICByZXR1cm4gLTE7CisrICAgICAgciA9IC0xOworICAgICB9CisgCisrICBfcmxfbXZj eHRfZGlzcG9zZSAoX3JsX3ZpbXZjeHQpOworKyAgX3JsX3ZpbXZjeHQgPSAwOworKworKyAgcmV0 dXJuIHI7CisrfQorKworK3N0YXRpYyBpbnQKKyt2aV9jaGFuZ2VfZGlzcGF0Y2ggKG0pCisrICAg ICBfcmxfdmltb3Rpb25fY3h0ICptOworK3sKKyAgIC8qIFRoZXNlIGFyZSB0aGUgbW90aW9uIGNv bW1hbmRzIHRoYXQgZG8gbm90IHJlcXVpcmUgYWRqdXN0aW5nIHRoZQorICAgICAgbWFyay4gIGNb d1ddIGFyZSBoYW5kbGVkIGJ5IHNwZWNpYWwtY2FzZSBjb2RlIGluIHJsX3ZpX2RvbW92ZSgpLAor ICAgICAgYW5kIGFscmVhZHkgbGVhdmUgdGhlIG1hcmsgYXQgdGhlIGNvcnJlY3QgbG9jYXRpb24u ICovCistICBpZiAoKHN0cmNociAoIiBsfGh3V14wYkIiLCBjKSA9PSAwKSAmJiAocmxfbWFyayA8 IHJsX2VuZCkpCisrICBpZiAoKChzdHJjaHIgKCIgbHxod1deMGJCRlRgIiwgbS0+bW90aW9uKSA9 PSAwKSAmJiAocmxfcG9pbnQgPj0gbS0+c3RhcnQpKSAmJgorKyAgICAgIChybF9tYXJrIDwgcmxf ZW5kKSkKKyAgICAgcmxfbWFyaysrOworIAorICAgLyogVGhlIGN1cnNvciBuZXZlciBtb3ZlcyB3 aXRoIGNbd1ddLiAqLworLSAgaWYgKChfcmxfdG9fdXBwZXIgKGMpID09ICdXJykgJiYgcmxfcG9p bnQgPCBzdGFydF9wb3MpCistICAgIHJsX3BvaW50ID0gc3RhcnRfcG9zOworKyAgaWYgKChfcmxf dG9fdXBwZXIgKG0tPm1vdGlvbikgPT0gJ1cnKSAmJiBybF9wb2ludCA8IG0tPnN0YXJ0KQorKyAg ICBybF9wb2ludCA9IG0tPnN0YXJ0OworIAorICAgaWYgKHZpX3JlZG9pbmcpCisgICAgIHsKK0BA IC0xMDY5LDQ5ICsxMjkyLDE0NSBAQCBybF92aV9jaGFuZ2VfdG8gKGNvdW50LCBrZXkpCisgICAg ICAgcmxfYmVnaW5fdW5kb19ncm91cCAoKTsJCS8qIHRvIG1ha2UgdGhlIGB1JyBjb21tYW5kIHdv cmsgKi8KKyAgICAgICBybF9raWxsX3RleHQgKHJsX3BvaW50LCBybF9tYXJrKTsKKyAgICAgICAv KiBgQycgZG9lcyBub3Qgc2F2ZSB0aGUgdGV4dCBpbnNlcnRlZCBmb3IgdW5kb2luZyBvciByZWRv aW5nLiAqLworLSAgICAgIGlmIChfcmxfdXBwZXJjYXNlX3AgKGtleSkgPT0gMCkKKy0gICAgICAg IF9ybF92aV9kb2luZ19pbnNlcnQgPSAxOworLSAgICAgIHJsX3ZpX3N0YXJ0X2luc2VydGluZyAo a2V5LCBybF9udW1lcmljX2FyZywgcmxfYXJnX3NpZ24pOworKyAgICAgIGlmIChfcmxfdXBwZXJj YXNlX3AgKG0tPmtleSkgPT0gMCkKKysJX3JsX3ZpX2RvaW5nX2luc2VydCA9IDE7CisrICAgICAg LyogWFhYIC0tIFRPRE8gLS0gdXNlIG0tPm51bWVyaWNhcmc/ICovCisrICAgICAgcmxfdmlfc3Rh cnRfaW5zZXJ0aW5nIChtLT5rZXksIHJsX251bWVyaWNfYXJnLCBybF9hcmdfc2lnbik7CisgICAg IH0KKyAKKyAgIHJldHVybiAoMCk7CisgfQorIAorIGludAorLXJsX3ZpX3lhbmtfdG8gKGNvdW50 LCBrZXkpCisrcmxfdmlfY2hhbmdlX3RvIChjb3VudCwga2V5KQorICAgICAgaW50IGNvdW50LCBr ZXk7CisgeworLSAgaW50IGMsIHNhdmU7CisrICBpbnQgYywgcjsKKysKKysgIF9ybF92aW12Y3h0 ID0gX3JsX212Y3h0X2FsbG9jIChWSU1fQ0hBTkdFLCBrZXkpOworKyAgX3JsX3ZpbXZjeHQtPnN0 YXJ0ID0gcmxfcG9pbnQ7CisgCistICBzYXZlID0gcmxfcG9pbnQ7CisrICBybF9tYXJrID0gcmxf cG9pbnQ7CisgICBpZiAoX3JsX3VwcGVyY2FzZV9wIChrZXkpKQorLSAgICBybF9zdHVmZl9jaGFy ICgnJCcpOworKyAgICB7CisrICAgICAgX3JsX3ZpbXZjeHQtPm1vdGlvbiA9ICckJzsKKysgICAg ICByID0gcmxfZG9tb3ZlX21vdGlvbl9jYWxsYmFjayAoX3JsX3ZpbXZjeHQpOworKyAgICB9Cisr ICBlbHNlIGlmICh2aV9yZWRvaW5nKQorKyAgICB7CisrICAgICAgX3JsX3ZpbXZjeHQtPm1vdGlv biA9IF9ybF92aV9sYXN0X21vdGlvbjsKKysgICAgICByID0gcmxfZG9tb3ZlX21vdGlvbl9jYWxs YmFjayAoX3JsX3ZpbXZjeHQpOworKyAgICB9CisrI2lmIGRlZmluZWQgKFJFQURMSU5FX0NBTExC QUNLUykKKysgIGVsc2UgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSkKKysgICAg eworKyAgICAgIFJMX1NFVFNUQVRFIChSTF9TVEFURV9WSU1PVElPTik7CisrICAgICAgcmV0dXJu ICgwKTsKKysgICAgfQorKyNlbmRpZgorKyAgZWxzZQorKyAgICByID0gcmxfdmlfZG9tb3ZlIChr ZXksICZjKTsKKyAKKy0gIGlmIChybF92aV9kb21vdmUgKGtleSwgJmMpKQorKyAgaWYgKHIgPCAw KQorICAgICB7CisgICAgICAgcmxfZGluZyAoKTsKKy0gICAgICByZXR1cm4gLTE7CisrICAgICAg ciA9IC0xOwkvKiBub3JtYWxpemUgcmV0dXJuIHZhbHVlICovCisgICAgIH0KKyAKKysgIF9ybF9t dmN4dF9kaXNwb3NlIChfcmxfdmltdmN4dCk7CisrICBfcmxfdmltdmN4dCA9IDA7CisrCisrICBy ZXR1cm4gcjsKKyt9CisrCisrc3RhdGljIGludAorK3ZpX3lhbmtfZGlzcGF0Y2ggKG0pCisrICAg ICBfcmxfdmltb3Rpb25fY3h0ICptOworK3sKKyAgIC8qIFRoZXNlIGFyZSB0aGUgbW90aW9uIGNv bW1hbmRzIHRoYXQgZG8gbm90IHJlcXVpcmUgYWRqdXN0aW5nIHRoZQorICAgICAgbWFyay4gKi8K Ky0gIGlmICgoc3RyY2hyICgiIGx8aF4wJWJCIiwgYykgPT0gMCkgJiYgKHJsX21hcmsgPCBybF9l bmQpKQorKyAgaWYgKCgoc3RyY2hyICgiIGx8aF4wJWJCRlRgIiwgbS0+bW90aW9uKSA9PSAwKSAm JiAocmxfcG9pbnQgPj0gbS0+c3RhcnQpKSAmJgorKyAgICAgIChybF9tYXJrIDwgcmxfZW5kKSkK KyAgICAgcmxfbWFyaysrOworIAorICAgcmxfYmVnaW5fdW5kb19ncm91cCAoKTsKKyAgIHJsX2tp bGxfdGV4dCAocmxfcG9pbnQsIHJsX21hcmspOworICAgcmxfZW5kX3VuZG9fZ3JvdXAgKCk7Cisg ICBybF9kb191bmRvICgpOworLSAgcmxfcG9pbnQgPSBzYXZlOworKyAgcmxfcG9pbnQgPSBtLT5z dGFydDsKKyAKKyAgIHJldHVybiAoMCk7CisgfQorIAorIGludAorK3JsX3ZpX3lhbmtfdG8gKGNv dW50LCBrZXkpCisrICAgICBpbnQgY291bnQsIGtleTsKKyt7CisrICBpbnQgYywgcjsKKysKKysg IF9ybF92aW12Y3h0ID0gX3JsX212Y3h0X2FsbG9jIChWSU1fWUFOSywga2V5KTsKKysgIF9ybF92 aW12Y3h0LT5zdGFydCA9IHJsX3BvaW50OworKworKyAgcmxfbWFyayA9IHJsX3BvaW50OworKyAg aWYgKF9ybF91cHBlcmNhc2VfcCAoa2V5KSkKKysgICAgeworKyAgICAgIF9ybF92aW12Y3h0LT5t b3Rpb24gPSAnJCc7CisrICAgICAgciA9IHJsX2RvbW92ZV9tb3Rpb25fY2FsbGJhY2sgKF9ybF92 aW12Y3h0KTsKKysgICAgfQorKyNpZiBkZWZpbmVkIChSRUFETElORV9DQUxMQkFDS1MpCisrICBl bHNlIGlmIChSTF9JU1NUQVRFIChSTF9TVEFURV9DQUxMQkFDSykpCisrICAgIHsKKysgICAgICBS TF9TRVRTVEFURSAoUkxfU1RBVEVfVklNT1RJT04pOworKyAgICAgIHJldHVybiAoMCk7CisrICAg IH0KKysjZW5kaWYKKysgIGVsc2UKKysgICAgciA9IHJsX3ZpX2RvbW92ZSAoa2V5LCAmYyk7Cisr CisrICBpZiAociA8IDApCisrICAgIHsKKysgICAgICBybF9kaW5nICgpOworKyAgICAgIHIgPSAt MTsKKysgICAgfQorKworKyAgX3JsX212Y3h0X2Rpc3Bvc2UgKF9ybF92aW12Y3h0KTsKKysgIF9y bF92aW12Y3h0ID0gMDsKKysKKysgIHJldHVybiByOworK30KKysKKytzdGF0aWMgaW50Cisrdmlk b21vdmVfZGlzcGF0Y2ggKG0pCisrICAgICBfcmxfdmltb3Rpb25fY3h0ICptOworK3sKKysgIGlu dCByOworKworKyAgc3dpdGNoIChtLT5vcCkKKysgICAgeworKyAgICBjYXNlIFZJTV9ERUxFVEU6 CisrICAgICAgciA9IHZpX2RlbGV0ZV9kaXNwYXRjaCAobSk7CisrICAgICAgYnJlYWs7CisrICAg IGNhc2UgVklNX0NIQU5HRToKKysgICAgICByID0gdmlfY2hhbmdlX2Rpc3BhdGNoIChtKTsKKysg ICAgICBicmVhazsKKysgICAgY2FzZSBWSU1fWUFOSzoKKysgICAgICByID0gdmlfeWFua19kaXNw YXRjaCAobSk7CisrICAgICAgYnJlYWs7CisrICAgIGRlZmF1bHQ6CisrICAgICAgX3JsX2Vycm1z ZyAoInZpZG9tb3ZlX2Rpc3BhdGNoOiB1bmtub3duIG9wZXJhdG9yICVkIiwgbS0+b3ApOworKyAg ICAgIHIgPSAxOworKyAgICAgIGJyZWFrOworKyAgICB9CisrCisrICBSTF9VTlNFVFNUQVRFIChS TF9TVEFURV9WSU1PVElPTik7CisrICByZXR1cm4gcjsKKyt9CisrCisraW50CisgcmxfdmlfcnVi b3V0IChjb3VudCwga2V5KQorICAgICAgaW50IGNvdW50LCBrZXk7CisgeworLSAgaW50IHAsIG9w b2ludDsKKysgIGludCBvcG9pbnQ7CisgCisgICBpZiAoY291bnQgPCAwKQorICAgICByZXR1cm4g KHJsX3ZpX2RlbGV0ZSAoLWNvdW50LCBrZXkpKTsKK0BAIC0xMTkzLDE0ICsxNTEyLDIyIEBAIHN0 YXRpYyBpbnQKKyBfcmxfdmlfY2FsbGJhY2tfY2hhcl9zZWFyY2ggKGRhdGEpCisgICAgICBfcmxf Y2FsbGJhY2tfZ2VuZXJpY19hcmcgKmRhdGE7CisgeworKyAgaW50IGM7CisgI2lmIGRlZmluZWQg KEhBTkRMRV9NVUxUSUJZVEUpCistICBfcmxfdmlfbGFzdF9zZWFyY2hfbWJsZW4gPSBfcmxfcmVh ZF9tYmNoYXIgKF9ybF92aV9sYXN0X3NlYXJjaF9tYmNoYXIsIE1CX0xFTl9NQVgpOworKyAgYyA9 IF9ybF92aV9sYXN0X3NlYXJjaF9tYmxlbiA9IF9ybF9yZWFkX21iY2hhciAoX3JsX3ZpX2xhc3Rf c2VhcmNoX21iY2hhciwgTUJfTEVOX01BWCk7CisgI2Vsc2UKKyAgIFJMX1NFVFNUQVRFKFJMX1NU QVRFX01PUkVJTlBVVCk7CistICBfcmxfdmlfbGFzdF9zZWFyY2hfY2hhciA9IHJsX3JlYWRfa2V5 ICgpOworKyAgYyA9IHJsX3JlYWRfa2V5ICgpOworICAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9N T1JFSU5QVVQpOworICNlbmRpZgorIAorKyAgaWYgKGMgPD0gMCkKKysgICAgcmV0dXJuIC0xOwor KworKyNpZiAhZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKKysgIF9ybF92aV9sYXN0X3NlYXJj aF9jaGFyID0gYzsKKysjZW5kaWYKKysKKyAgIF9ybF9jYWxsYmFja19mdW5jID0gMDsKKyAgIF9y bF93YW50X3JlZGlzcGxheSA9IDE7CisgCitAQCAtMTIxNiw2ICsxNTQzLDcgQEAgaW50Cisgcmxf dmlfY2hhcl9zZWFyY2ggKGNvdW50LCBrZXkpCisgICAgICBpbnQgY291bnQsIGtleTsKKyB7Cisr ICBpbnQgYzsKKyAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKKyAgIHN0YXRpYyBjaGFy ICp0YXJnZXQ7CisgICBzdGF0aWMgaW50IHRsZW47CitAQCAtMTIyNCwyNyArMTU1MiwzOCBAQCBy bF92aV9jaGFyX3NlYXJjaCAoY291bnQsIGtleSkKKyAjZW5kaWYKKyAKKyAgIGlmIChrZXkgPT0g JzsnIHx8IGtleSA9PSAnLCcpCistICAgIF9ybF9jc19kaXIgPSAoa2V5ID09ICc7JykgPyBfcmxf Y3Nfb3JpZ19kaXIgOiAtX3JsX2NzX29yaWdfZGlyOworKyAgICB7CisrICAgICAgaWYgKF9ybF9j c19vcmlnX2RpciA9PSAwKQorKwlyZXR1cm4gLTE7CisrI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxU SUJZVEUpCisrICAgICAgaWYgKF9ybF92aV9sYXN0X3NlYXJjaF9tYmxlbiA9PSAwKQorKwlyZXR1 cm4gLTE7CisrI2Vsc2UKKysgICAgICBpZiAoX3JsX3ZpX2xhc3Rfc2VhcmNoX2NoYXIgPT0gMCkK KysJcmV0dXJuIC0xOworKyNlbmRpZgorKyAgICAgIF9ybF9jc19kaXIgPSAoa2V5ID09ICc7Jykg PyBfcmxfY3Nfb3JpZ19kaXIgOiAtX3JsX2NzX29yaWdfZGlyOworKyAgICB9CisgICBlbHNlCisg ICAgIHsKKyAgICAgICBzd2l0Y2ggKGtleSkKKy0gICAgICAgIHsKKy0gICAgICAgIGNhc2UgJ3Qn OgorLSAgICAgICAgICBfcmxfY3Nfb3JpZ19kaXIgPSBfcmxfY3NfZGlyID0gRlRPOworLSAgICAg ICAgICBicmVhazsKKysJeworKwljYXNlICd0JzoKKysJICBfcmxfY3Nfb3JpZ19kaXIgPSBfcmxf Y3NfZGlyID0gRlRPOworKwkgIGJyZWFrOworIAorLSAgICAgICAgY2FzZSAnVCc6CistICAgICAg ICAgIF9ybF9jc19vcmlnX2RpciA9IF9ybF9jc19kaXIgPSBCVE87CistICAgICAgICAgIGJyZWFr OworKwljYXNlICdUJzoKKysJICBfcmxfY3Nfb3JpZ19kaXIgPSBfcmxfY3NfZGlyID0gQlRPOwor KwkgIGJyZWFrOworIAorLSAgICAgICAgY2FzZSAnZic6CistICAgICAgICAgIF9ybF9jc19vcmln X2RpciA9IF9ybF9jc19kaXIgPSBGRklORDsKKy0gICAgICAgICAgYnJlYWs7CisrCWNhc2UgJ2Yn OgorKwkgIF9ybF9jc19vcmlnX2RpciA9IF9ybF9jc19kaXIgPSBGRklORDsKKysJICBicmVhazsK KyAKKy0gICAgICAgIGNhc2UgJ0YnOgorLSAgICAgICAgICBfcmxfY3Nfb3JpZ19kaXIgPSBfcmxf Y3NfZGlyID0gQkZJTkQ7CistICAgICAgICAgIGJyZWFrOworLSAgICAgICAgfQorKwljYXNlICdG JzoKKysJICBfcmxfY3Nfb3JpZ19kaXIgPSBfcmxfY3NfZGlyID0gQkZJTkQ7CisrCSAgYnJlYWs7 CisrCX0KKyAKKyAgICAgICBpZiAodmlfcmVkb2luZykKKyAJeworQEAgLTEyNTIsMjEgKzE1OTEs MjcgQEAgcmxfdmlfY2hhcl9zZWFyY2ggKGNvdW50LCBrZXkpCisgCX0KKyAjaWYgZGVmaW5lZCAo UkVBRExJTkVfQ0FMTEJBQ0tTKQorICAgICAgIGVsc2UgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRF X0NBTExCQUNLKSkKKy0gICAgICAgIHsKKy0gICAgICAgICAgX3JsX2NhbGxiYWNrX2RhdGEgPSBf cmxfY2FsbGJhY2tfZGF0YV9hbGxvYyAoY291bnQpOworLSAgICAgICAgICBfcmxfY2FsbGJhY2tf ZGF0YS0+aTEgPSBfcmxfY3NfZGlyOworLSAgICAgICAgICBfcmxfY2FsbGJhY2tfZnVuYyA9IF9y bF92aV9jYWxsYmFja19jaGFyX3NlYXJjaDsKKy0gICAgICAgICAgcmV0dXJuICgwKTsKKy0gICAg ICAgIH0KKysJeworKwkgIF9ybF9jYWxsYmFja19kYXRhID0gX3JsX2NhbGxiYWNrX2RhdGFfYWxs b2MgKGNvdW50KTsKKysJICBfcmxfY2FsbGJhY2tfZGF0YS0+aTEgPSBfcmxfY3NfZGlyOworKwkg IF9ybF9jYWxsYmFja19mdW5jID0gX3JsX3ZpX2NhbGxiYWNrX2NoYXJfc2VhcmNoOworKwkgIHJl dHVybiAoMCk7CisrCX0KKyAjZW5kaWYKKyAgICAgICBlbHNlCisgCXsKKyAjaWYgZGVmaW5lZCAo SEFORExFX01VTFRJQllURSkKKy0JICBfcmxfdmlfbGFzdF9zZWFyY2hfbWJsZW4gPSBfcmxfcmVh ZF9tYmNoYXIgKF9ybF92aV9sYXN0X3NlYXJjaF9tYmNoYXIsIE1CX0xFTl9NQVgpOworKwkgIGMg PSBfcmxfcmVhZF9tYmNoYXIgKF9ybF92aV9sYXN0X3NlYXJjaF9tYmNoYXIsIE1CX0xFTl9NQVgp OworKwkgIGlmIChjIDw9IDApCisrCSAgICByZXR1cm4gLTE7CisrCSAgX3JsX3ZpX2xhc3Rfc2Vh cmNoX21ibGVuID0gYzsKKyAjZWxzZQorIAkgIFJMX1NFVFNUQVRFKFJMX1NUQVRFX01PUkVJTlBV VCk7CistCSAgX3JsX3ZpX2xhc3Rfc2VhcmNoX2NoYXIgPSBybF9yZWFkX2tleSAoKTsKKysJICBj ID0gcmxfcmVhZF9rZXkgKCk7CisgCSAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQp OworKwkgIGlmIChjIDwgMCkKKysJICAgIHJldHVybiAtMTsKKysJICBfcmxfdmlfbGFzdF9zZWFy Y2hfY2hhciA9IGM7CisgI2VuZGlmCisgCX0KKyAgICAgfQorQEAgLTEzMDIsNyArMTY0Nyw3IEBA IHJsX3ZpX21hdGNoIChpZ25vcmUsIGtleSkKKyAJICAgICAgcHJlID0gcmxfcG9pbnQ7CisgCSAg ICAgIHJsX2ZvcndhcmRfY2hhciAoMSwga2V5KTsKKyAJICAgICAgaWYgKHByZSA9PSBybF9wb2lu dCkKKy0JICAgICAgICBicmVhazsKKysJCWJyZWFrOworIAkgICAgfQorIAl9CisgICAgICAgZWxz ZQorQEAgLTEzMzEsNyArMTY3Niw3IEBAIHJsX3ZpX21hdGNoIChpZ25vcmUsIGtleSkKKyAJICAg IHsKKyAJICAgICAgcG9zID0gX3JsX2ZpbmRfcHJldl9tYmNoYXIgKHJsX2xpbmVfYnVmZmVyLCBw b3MsIE1CX0ZJTkRfQU5ZKTsKKyAJICAgICAgaWYgKHRtcCA9PSBwb3MpCistCSAgICAgICAgcG9z LS07CisrCQlwb3MtLTsKKyAJICAgIH0KKyAJICBpZiAocG9zID49IDApCisgCSAgICB7CitAQCAt MTQyNiw5ICsxNzcxLDkgQEAgX3JsX3ZpX2NoYW5nZV9jaGFyIChjb3VudCwgYywgbWIpCisgfQor IAorIHN0YXRpYyBpbnQKKy1fcmxfdmlfY2FsbGJhY2tfZ2V0Y2hhciAobWIsIG1ibGVuKQorK19y bF92aV9jYWxsYmFja19nZXRjaGFyIChtYiwgbWxlbikKKyAgICAgIGNoYXIgKm1iOworLSAgICAg aW50IG1ibGVuOworKyAgICAgaW50IG1sZW47CisgeworICAgaW50IGM7CisgCitAQCAtMTQzNiw5 ICsxNzgxLDEyIEBAIF9ybF92aV9jYWxsYmFja19nZXRjaGFyIChtYiwgbWJsZW4pCisgICBjID0g cmxfcmVhZF9rZXkgKCk7CisgICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX01PUkVJTlBVVCk7Cisg CisrICBpZiAoYyA8IDApCisrICAgIHJldHVybiAtMTsKKysKKyAjaWYgZGVmaW5lZCAoSEFORExF X01VTFRJQllURSkKKyAgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09 IDApCistICAgIGMgPSBfcmxfcmVhZF9tYnN0cmluZyAoYywgbWIsIG1ibGVuKTsKKysgICAgYyA9 IF9ybF9yZWFkX21ic3RyaW5nIChjLCBtYiwgbWxlbik7CisgI2VuZGlmCisgCisgICByZXR1cm4g YzsKK0BAIC0xNDU0LDYgKzE4MDIsOSBAQCBfcmxfdmlfY2FsbGJhY2tfY2hhbmdlX2NoYXIgKGRh dGEpCisgCisgICBfcmxfdmlfbGFzdF9yZXBsYWNlbWVudCA9IGMgPSBfcmxfdmlfY2FsbGJhY2tf Z2V0Y2hhciAobWIsIE1CX0xFTl9NQVgpOworIAorKyAgaWYgKGMgPCAwKQorKyAgICByZXR1cm4g LTE7CisrCisgICBfcmxfY2FsbGJhY2tfZnVuYyA9IDA7CisgICBfcmxfd2FudF9yZWRpc3BsYXkg PSAxOworIAorQEAgLTE0ODUsNiArMTgzNiw5IEBAIHJsX3ZpX2NoYW5nZV9jaGFyIChjb3VudCwg a2V5KQorICAgZWxzZQorICAgICBfcmxfdmlfbGFzdF9yZXBsYWNlbWVudCA9IGMgPSBfcmxfdmlf Y2FsbGJhY2tfZ2V0Y2hhciAobWIsIE1CX0xFTl9NQVgpOworIAorKyAgaWYgKGMgPCAwKQorKyAg ICByZXR1cm4gLTE7CisrCisgICByZXR1cm4gKF9ybF92aV9jaGFuZ2VfY2hhciAoY291bnQsIGMs IG1iKSk7CisgfQorIAorQEAgLTE1NzAsOCArMTkyNCw4IEBAIHJsX3ZpX3JlcGxhY2UgKGNvdW50 LCBrZXkpCisgICAgICAgdmlfcmVwbGFjZV9tYXBbTkVXTElORV0uZnVuY3Rpb24gPSBybF9uZXds aW5lOworIAorICAgICAgIC8qIElmIHRoZSBub3JtYWwgdmkgaW5zZXJ0aW9uIGtleW1hcCBoYXMg XkggYm91bmQgdG8gZXJhc2UsIGRvIHRoZQorLSAgICAgICAgIHNhbWUgaGVyZS4gIFByb2JhYmx5 IHNob3VsZCByZW1vdmUgdGhlIGFzc2lnbm1lbnQgdG8gUlVCT1VUIHVwCistICAgICAgICAgdGhl cmUsIGJ1dCBJIGRvbid0IHRoaW5rIGl0IHdpbGwgbWFrZSBhIGRpZmZlcmVuY2UgaW4gcmVhbCBs aWZlLiAqLworKwkgc2FtZSBoZXJlLiAgUHJvYmFibHkgc2hvdWxkIHJlbW92ZSB0aGUgYXNzaWdu bWVudCB0byBSVUJPVVQgdXAKKysJIHRoZXJlLCBidXQgSSBkb24ndCB0aGluayBpdCB3aWxsIG1h a2UgYSBkaWZmZXJlbmNlIGluIHJlYWwgbGlmZS4gKi8KKyAgICAgICBpZiAodmlfaW5zZXJ0aW9u X2tleW1hcFtDVFJMICgnSCcpXS50eXBlID09IElTRlVOQyAmJgorIAkgIHZpX2luc2VydGlvbl9r ZXltYXBbQ1RSTCAoJ0gnKV0uZnVuY3Rpb24gPT0gcmxfcnVib3V0KQorIAl2aV9yZXBsYWNlX21h cFtDVFJMICgnSCcpXS5mdW5jdGlvbiA9IHJsX3ZpX292ZXJzdHJpa2VfZGVsZXRlOworQEAgLTE2 MTksNyArMTk3Myw3IEBAIF9ybF92aV9zZXRfbWFyayAoKQorICAgY2ggPSBybF9yZWFkX2tleSAo KTsKKyAgIFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfTU9SRUlOUFVUKTsKKyAKKy0gIGlmIChjaCA8 ICdhJyB8fCBjaCA+ICd6JykKKysgIGlmIChjaCA8IDAgfHwgY2ggPCAnYScgfHwgY2ggPiAneicp CS8qIG1ha2UgdGVzdCBhZ2FpbnN0IDAgZXhwbGljaXQgKi8KKyAgICAgeworICAgICAgIHJsX2Rp bmcgKCk7CisgICAgICAgcmV0dXJuIC0xOworQEAgLTE2NzEsNyArMjAyNSw3IEBAIF9ybF92aV9n b3RvX21hcmsgKCkKKyAgICAgICBybF9wb2ludCA9IHJsX21hcms7CisgICAgICAgcmV0dXJuIDA7 CisgICAgIH0KKy0gIGVsc2UgaWYgKGNoIDwgJ2EnIHx8IGNoID4gJ3onKQorKyAgZWxzZSBpZiAo Y2ggPCAwIHx8IGNoIDwgJ2EnIHx8IGNoID4gJ3onKQkvKiBtYWtlIHRlc3QgYWdhaW5zdCAwIGV4 cGxpY2l0ICovCisgICAgIHsKKyAgICAgICBybF9kaW5nICgpOworICAgICAgIHJldHVybiAtMTsK Ky0tLSAvZGV2L251bGwKKysrKyBiL3JlYWRsaW5lL3hmcmVlLmMKK0BAIC0wLDAgKzEsNTAgQEAK KysvKiB4ZnJlZS5jIC0tIHNhZmUgdmVyc2lvbiBvZiBmcmVlIHRoYXQgaWdub3JlcyBhdHRlbXB0 cyB0byBmcmVlIE5VTCAqLworKworKy8qIENvcHlyaWdodCAoQykgMTk5MS0yMDEwIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBH TlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGlu ZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGlu Zy4gICAgICAKKysKKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgUmVhZGxpbmUg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworKworKyNkZWZpbmUg UkVBRExJTkVfTElCUkFSWQorKworKyNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19IKQorKyNpbmNs dWRlIDxjb25maWcuaD4KKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZCAoSEFWRV9TVERMSUJfSCkK KysjICBpbmNsdWRlIDxzdGRsaWIuaD4KKysjZWxzZQorKyMgIGluY2x1ZGUgImFuc2lfc3RkbGli LmgiCisrI2VuZGlmIC8qIEhBVkVfU1RETElCX0ggKi8KKysKKysjaW5jbHVkZSAieG1hbGxvYy5o IgorKworKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiogKi8KKysvKgkJCQkJCQkJICAgICovCisrLyoJCSAgIE1lbW9yeSBE ZWFsbG9jYXRpb24uCQkJCSAgICAqLworKy8qCQkJCQkJCQkgICAgKi8KKysvKiAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICov CisrCisrLyogVXNlIHRoaXMgYXMgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBhZGRpbmcgdW53 aW5kIHByb3RlY3RzIHNvIHdlCisrICAgZG9uJ3QgbmVlZCB0byBrbm93IHdoYXQgZnJlZSgpIHJl dHVybnMuICovCisrdm9pZAorK3hmcmVlIChzdHJpbmcpCisrICAgICBQVFJfVCBzdHJpbmc7Cisr eworKyAgaWYgKHN0cmluZykKKysgICAgZnJlZSAoc3RyaW5nKTsKKyt9CistLS0gYS9yZWFkbGlu ZS94bWFsbG9jLmMKKysrKyBiL3JlYWRsaW5lL3htYWxsb2MuYworQEAgLTEsMjMgKzEsMjQgQEAK KyAvKiB4bWFsbG9jLmMgLS0gc2FmZSB2ZXJzaW9ucyBvZiBtYWxsb2MgYW5kIHJlYWxsb2MgKi8K KyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisrLyogQ29weXJpZ2h0IChDKSAxOTkxLTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisgCistICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIFJlYWRsaW5lLCBhIGxpYnJhcnkg Zm9yIHJlYWRpbmcgbGluZXMKKy0gICBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5k IGhpc3RvcnkgZWRpdGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRs aW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMg b2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAg CisgCistICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeSBpdAorLSAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorLSAgIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKKy0g ICBsYXRlciB2ZXJzaW9uLgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBSZWFk bGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBi dXQKKy0gICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKy0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorICAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAg YWxvbmcgd2l0aCBSZWFkbGluZTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlCistICAgU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlLCBT dWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIGFsb25nIHdpdGggUmVhZGxp bmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKysK KyAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKKyAKKyAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdf SCkKK0BAIC03NiwxMyArNzcsMyBAQCB4cmVhbGxvYyAocG9pbnRlciwgYnl0ZXMpCisgICAgIG1l bW9yeV9lcnJvcl9hbmRfYWJvcnQgKCJ4cmVhbGxvYyIpOworICAgcmV0dXJuICh0ZW1wKTsKKyB9 CistCistLyogVXNlIHRoaXMgYXMgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBhZGRpbmcgdW53 aW5kIHByb3RlY3RzIHNvIHdlCistICAgZG9uJ3QgbmVlZCB0byBrbm93IHdoYXQgZnJlZSgpIHJl dHVybnMuICovCistdm9pZAorLXhmcmVlIChzdHJpbmcpCistICAgICBQVFJfVCBzdHJpbmc7Cist eworLSAgaWYgKHN0cmluZykKKy0gICAgZnJlZSAoc3RyaW5nKTsKKy19CistLS0gYS9yZWFkbGlu ZS94bWFsbG9jLmgKKysrKyBiL3JlYWRsaW5lL3htYWxsb2MuaAorQEAgLTEsMjQgKzEsMjMgQEAK KyAvKiB4bWFsbG9jLmggLS0gbWVtb3J5IGFsbG9jYXRpb24gdGhhdCBhYm9ydHMgb24gZXJyb3Jz LiAqLworIAorLS8qIENvcHlyaWdodCAoQykgMTk5OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKysvKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKyAKKy0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExp YnJhcnksIGEgbGlicmFyeSBmb3IKKy0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRl cmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBm b3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3Rv cnkgZWRpdGluZy4gICAgICAKKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiwgb3IKKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhlIEdOVSBSZWFk bGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQor LSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkKKy0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAg IFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05V IHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENP UFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUg bGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBU ZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorKyovCisgCisgI2lmICFkZWZpbmVkIChfWE1BTExPQ19IXykK KyAjZGVmaW5lIF9YTUFMTE9DX0hfCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NzAxMTMxLXJlYWRsaW5l NjItMm9mMy5wYXRjaCBiL2dkYi1iejcwMTEzMS1yZWFkbGluZTYyLTJvZjMucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ0NWJkZQotLS0gL2Rldi9udWxsCisrKyBi L2dkYi1iejcwMTEzMS1yZWFkbGluZTYyLTJvZjMucGF0Y2gKQEAgLTAsMCArMSwyMzEgQEAKK2h0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDExLTA1L21zZzAwMDAyLmh0bWwK K1N1YmplY3Q6IFtwYXRjaF0gdGVzdHN1aXRlOiBUZXN0IHJlYWRsaW5lLTYuMiAiYXNrIiByZWdy ZXNzaW9uCisKK0hpLAorCit0aGlzIHByb2JsZW0gZG9lcyBub3QgYWZmZWN0IGRlZmF1bHQgRlNG IEdEQiBidWlsZCBhcyBpdCBpcyB1c2luZyBidW5kbGVkCityZWFkbGluZS01LjEuICBCdXQgd2l0 aCBzeXN0ZW0gcmVhZGxpbmUtNi4yIGFuZCBidWlsZCB1c2luZzoKKyAgLS13aXRoLXN5c3RlbS1y ZWFkbGluZSAgdXNlIGluc3RhbGxlZCByZWFkbGluZSBsaWJyYXJ5CisKK0dEQiB3aWxsIG5vIGxv bmdlciBhc2sgYWJvdXQgZGlzcGxheWluZyB0b28gbWFueSBzeW1ib2xzIGFuZCBkdW1wcyB0aGVt IGFsbAoraW1tZWRpYXRlbHkuCitQQVNTOgorCSQgZ2RiIGdkYgorCShnZGIpIHAgPHRhYj48dGFi PgorCURpc3BsYXkgYWxsIDIxNDgyIHBvc3NpYmlsaXRpZXM/ICh5IG9yIG4pXworRkFJTDoKKwkk IGdkYiBnZGIKKwkoZ2RiKSBwIDx0YWI+PHRhYj4KKwlEaXNwbGF5IGFsbCAyMjEyOSBwb3NzaWJp bGl0aWVzPyAoeSBvciBuKQorCS4uLy4uL2JmZC9hb3V0LXRhcmdldC5oICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjc190b19zZWN0aW9uCisJLi4vLi4vYmZkL2FvdXQzMi5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0aW1lCisJPHNjcmVl bnMgYW5kIHNjcmVlbnMgb2YgZHVtcHMgd2l0aG91dCBhbnkgcXVlc3Rpb24+CisKK1RoaXMgcmVn cmVzc2lvbiB3aWxsIHNvb24gc3RhcnQgYWZmZWN0aW5nIGRpc3Ryb3M6CisJRlNGIEdEQiBIRUFE ICAtIFBBU1MgLSB1c2luZyBidW5kbGVkIHJlYWRsaW5lLTUuMQorCWZlZG9yYS0xNSAgICAgLSBG QUlMIC0gdXNpbmcgc3lzdGVtICByZWFkbGluZS02LjIKKwlmZWRvcmEtMTQgICAgIC0gUEFTUyAt IHVzaW5nIHN5c3RlbSAgcmVhZGxpbmUtNi4xCisJZGViaWFuLTYuMCAgICAtIFBBU1MgLSB1c2lu ZyBzeXN0ZW0gIHJlYWRsaW5lLTYuMQorCWt1YnVudHUtMTAuMTAgLSBQQVNTIC0gdXNpbmcgc3lz dGVtICByZWFkbGluZS02LjEKKworSSBoYXZlIGFza2VkIGFib3V0IGl0IG9uIHJlYWRsaW5lIG1s OgorCVJlOiBbQnVnLXJlYWRsaW5lXSBjYWxsYmFjayBtb2RlIHBhZ2VyIGRpc2FibGUgc3RhdHVz CisJaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctcmVhZGxpbmUvMjAxMS0w NC9tc2cwMDAxMi5odG1sCitUaGUgc3VnZ2VzdGVkIHdvcmthcm91bmQgKGluIGZhY3QgdGhlIHJl YWRsaW5lLTUuMSBjb2RlIHN0YXRlKSBnb2luZyB0byBwYXRjaAoraW50byB0aGUgcHJvcG9zZWQg RlNGIEdEQiBidW5kbGVkIHJlYWRsaW5lLTYuMi4gIERpc3Ryb3MgdGhlbiBjYW4gc3RvcCB1c2lu ZworLS13aXRoLXN5c3RlbS1yZWFkbGluZSB0byBzdGlsbCBmZWF0dXJlIHJlY2VudCBhbmQgc3lz dGVtIG1hdGNoaW5nIHJlYWRsaW5lCit1bnRpbCByZWFkbGluZS03LjAgZ2V0cyByZWxlYXNlZC4K KworVGhpcyByZWdyZXNzaW9uIGhhcyBiZWVuIHNvIGZhciBjYXVnaHQgb25seSB3aXRoIHN5c3Rl bSBkZWJ1ZyBpbmZvcyBpbnN0YWxsZWQ6CisJLVBBU1M6IGdkYi5iYXNlL2NvbXBsZXRpb24uZXhw OiBjb21wbGV0ZSAoMikgJ3Agbm9fdmFyX25hbWVkX3RoaXMtJworCS1QQVNTOiBnZGIuYmFzZS9j b21wbGV0aW9uLmV4cDogY29tcGxldGUgJ3AgdmFsdWVzWzBdLmEnCisJLVBBU1M6IGdkYi5iYXNl L2NvbXBsZXRpb24uZXhwOiBjb21wbGV0ZSAncCB2YWx1ZXNbMF0gLiBhJworCS1QQVNTOiBnZGIu YmFzZS9jb21wbGV0aW9uLmV4cDogY29tcGxldGUgJ3AgJnZhbHVlc1swXSAtPiBhJworCS1QQVNT OiBnZGIuYmFzZS9jb21wbGV0aW9uLmV4cDogY29wbWxldGlvbiBvZiBmaWVsZCBpbiBhbm9ueW1v dXMgdW5pb24KKwkrRkFJTDogZ2RiLmJhc2UvY29tcGxldGlvbi5leHA6ICh0aW1lb3V0KSBjb21w bGV0ZSAoMikgJ3Agbm9fdmFyX25hbWVkX3RoaXMtJworCStGQUlMOiBnZGIuYmFzZS9jb21wbGV0 aW9uLmV4cDogKHRpbWVvdXQpIGNvbXBsZXRlICdwIHZhbHVlc1swXS5hJyAyCisJK0ZBSUw6IGdk Yi5iYXNlL2NvbXBsZXRpb24uZXhwOiAodGltZW91dCkgY29tcGxldGUgJ3AgdmFsdWVzWzBdIC4g YScgMgorCStGQUlMOiBnZGIuYmFzZS9jb21wbGV0aW9uLmV4cDogKHRpbWVvdXQpIGNvbXBsZXRl ICdwICZ2YWx1ZXNbMF0gLT4gYScgMgorCStGQUlMOiBnZGIuYmFzZS9jb21wbGV0aW9uLmV4cDog Y29wbWxldGlvbiBvZiBmaWVsZCBpbiBhbm9ueW1vdXMgdW5pb24KKworSSB3aWxsIGNoZWNrIGl0 IGluIHdpdGggbm8gY29tbWVudHMuCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiL3Rlc3RzdWl0 ZS8KKzIwMTEtMDUtMDEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KKworCSogZ2RiLmJhc2UvcmVhZGxpbmUtYXNrLmM6IE5ldyBmaWxlLgorCSogZ2RiLmJhc2Uv cmVhZGxpbmUtYXNrLmV4cDogTmV3IGZpbGUuCisJKiBnZGIuYmFzZS9yZWFkbGluZS1hc2suaW5w dXRyYzogTmV3IGZpbGUuCisKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvcmVhZGxpbmUtYXNrLmMKK0BAIC0wLDAgKzEsMjMgQEAKKysvKiBUaGlzIHRlc3RjYXNl IGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDEx IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKytpbnQKKytzeW1ib2xfMDFfbGVuZ3RoXzQwX19fX19f X19fX19fX19fX19fX19fLAorK3N5bWJvbF8wMl9sZW5ndGhfNDBfX19fX19fX19fX19fX19fX19f X18sCisrc3ltYm9sXzAzX2xlbmd0aF80MF9fX19fX19fX19fX19fX19fX19fXywKKytzeW1ib2xf MDRfbGVuZ3RoXzQwX19fX19fX19fX19fX19fX19fX19fLAorK3N5bWJvbF8xMF9sZW5ndGhfNDBf X19fX19fX19fX19fX19fX19fX187CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3JlYWRsaW5lLWFzay5leHAKK0BAIC0wLDAgKzEsMTE4IEBACisrIyBDb3B5cmln aHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzZXQgdGVzdGZpbGUgcmVhZGxpbmUtYXNrCisrc2V0 IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0ueAorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytz ZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0KKytzZXQgaW5wdXRy YyAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LmlucHV0cmMKKysKKytpZiB7IFtnZGJf Y29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgb2Jq ZWN0IHtkZWJ1Z31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAke3Rlc3RmaWxlfS5leHAKKysg ICAgcmV0dXJuIC0xCisrfQorKworKyMgSU5QVVRSQyBnZXRzIHJlc2V0IGZvciB0aGUgbmV4dCB0 ZXN0ZmlsZS4KKytzZXRlbnYgSU5QVVRSQyAkaW5wdXRyYworK2NsZWFuX3Jlc3RhcnQgJHtleGVj dXRhYmxlfQorKworK2dkYl90ZXN0X25vX291dHB1dCAic2V0IHdpZHRoIDUwIgorK2dkYl90ZXN0 X25vX291dHB1dCAic2V0IGhlaWdodCAzIgorKworK3NldCBjbWQgInAgc3ltYm9sXzAiCisrc2Vu ZF9nZGIgIiRjbWRcdCIKKytzZXQgdGVzdCAiYmVsbCBmb3IgbW9yZSBtZXNzYWdlIgorK2dkYl90 ZXN0X211bHRpcGxlICIiICR0ZXN0IHsKKysgICAgLXJlICIkY21kXDAwNyQiIHsKKysJcGFzcyAk dGVzdAorKyAgICB9CisrfQorKworK3NlbmRfZ2RiICJcdCIKKytzZXQgdGVzdCAibW9yZSBtZXNz YWdlIGZvciAwMSBhbmQgMDIiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgeworKyAgICAt cmUgIl5cclxuc3ltYm9sXzAxX2xlbmd0aF80MF9fX19fX19fX19fX19fX19fX19fX1xyXG5zeW1i b2xfMDJfbGVuZ3RoXzQwX19fX19fX19fX19fX19fX19fX19fXHJcbi0tTW9yZS0tJCIgeworKwlw YXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICIkZ2RiX3Byb21wdCAiIHsKKysJZmFpbCAkdGVz dAorKyAgICB9CisrfQorKworKyMgVGhlcmUgZ2V0IHNvbWUgVlQxMDAgY2hhcmFjdGVycyBwcmlu dGVkLgorKworK3NlbmRfZ2RiICJcciIKKytzZXQgdGVzdCAibW9yZSBtZXNzYWdlIGZvciAwMyIK KytnZGJfdGVzdF9tdWx0aXBsZSAiIiAkdGVzdCB7CisrICAgIC1yZSAiXHJzeW1ib2xfMDNfbGVu Z3RoXzQwX19fX19fX19fX19fX19fX19fX19fXHJcbi0tTW9yZS0tJCIgeworKwlwYXNzICR0ZXN0 CisrICAgIH0KKyt9CisrCisrIyAiJGdkYl9wcm9tcHQgJCIgd2lsbCBub3QgbWF0Y2ggYXMgJGNt ZCBnZXRzIG91dHB1dDogJGdkYl9wcm9tcHQgcCBzeW1ib2xfMAorKyMgQW5kICIkZ2RiX3Byb21w dCBwIHN5bWJvbF8wIiBjYW5ub3QgYmUgbWF0Y2hlZCBhcyB0aGUgZGVmYXVsdCAiJGdkYl9wcm9t cHQgJCIKKysjIHN0cmluZyBmcm9tIGdkYl90ZXN0X211bHRpcGxlIGNvdWxkIG1hdGNoIGVhcmxp ZXIuCisrCisrc2VuZF9nZGIgIlxyIgorK3NldCB0ZXN0ICJtb3JlIGZpbmlzaCBmb3IgMDQiCisr Z2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgeworKyAgICAtcmUgIlxyc3ltYm9sXzA0X2xlbmd0 aF80MF9fX19fX19fX19fX19fX19fX19fX1xyXG4kZ2RiX3Byb21wdCAiIHsKKysJcGFzcyAkdGVz dAorKyAgICB9CisrfQorKworK2dkYl90ZXN0ICJmb28iIHtObyBzeW1ib2wgInN5bWJvbF8wZm9v IiBpbiBjdXJyZW50IGNvbnRleHRcLn0gImFib3J0IG1vcmUgbWVzc2FnZSIKKysKKytzZXQgY21k ICJwIHN5bWJvbF8iCisrc2VuZF9nZGIgIiRjbWRcdCIKKytzZXQgdGVzdCAiYmVsbCBmb3IgYXNr IG1lc3NhZ2UiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgeworKyAgICAtcmUgIiRjbWRc MDA3JCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKyt9CisrCisrc2VuZF9nZGIgIlx0IgorK3Nl dCB0ZXN0ICJhc2sgbWVzc2FnZSIKKytnZGJfdGVzdF9tdWx0aXBsZSAiIiAkdGVzdCB7CisrICAg IC1yZSAiXlxyXG5EaXNwbGF5IGFsbCA1IHBvc3NpYmlsaXRpZXNcXD8gXFwoeSBvciBuXFwpJCIg eworKwlwYXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICIkZ2RiX3Byb21wdCAiIHsKKysJZmFp bCAkdGVzdAorKwlyZXR1cm4gMAorKyAgICB9CisrfQorKworK3NlbmRfZ2RiICJ5IgorK3NldCB0 ZXN0ICJhc2sgbWVzc2FnZSBmb3IgMDEgYW5kIDAyIgorK2dkYl90ZXN0X211bHRpcGxlICIiICR0 ZXN0IHsKKysgICAgLXJlICJeXHJcbnN5bWJvbF8wMV9sZW5ndGhfNDBfX19fX19fX19fX19fX19f X19fX19cclxuc3ltYm9sXzAyX2xlbmd0aF80MF9fX19fX19fX19fX19fX19fX19fX1xyXG4tLU1v cmUtLSQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrfQorKworKyMgVGhlcmUgZ2V0IHNvbWUg VlQxMDAgY2hhcmFjdGVycyBwcmludGVkLgorKyMgU2VlIHRoZSAiJGdkYl9wcm9tcHQgIiBtYXRj aCBsaWtlIGluICJtb3JlIGZpbmlzaCBmb3IgMDQiLgorKworK3NlbmRfZ2RiICJuIgorK3NldCB0 ZXN0ICJhc2sgbWVzc2FnZSBubyIKKytnZGJfdGVzdF9tdWx0aXBsZSAiIiAkdGVzdCB7CisrICAg IC1yZSAiXHIkZ2RiX3Byb21wdCAiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrfQorKworK2dk Yl90ZXN0ICJmb28iIHtObyBzeW1ib2wgInN5bWJvbF9mb28iIGluIGN1cnJlbnQgY29udGV4dFwu fSAiYWJvcnQgYXNrIG1lc3NhZ2UiCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3JlYWRsaW5lLWFzay5pbnB1dHJjCitAQCAtMCwwICsxLDE2IEBACisrIyBDb3B5 cmlnaHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzZXQgY29tcGxldGlvbi1xdWVyeS1pdGVtcyA1 CisKCmRpZmYgLS1naXQgYS9nZGItYno3MDExMzEtcmVhZGxpbmU2Mi0zb2YzLnBhdGNoIGIvZ2Ri LWJ6NzAxMTMxLXJlYWRsaW5lNjItM29mMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi40MWQyMzc0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NzAxMTMxLXJlYWRs aW5lNjItM29mMy5wYXRjaApAQCAtMCwwICsxLDExNyBAQAoraHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1wYXRjaGVzLzIwMTEtMDUvbXNnMDAwMTAuaHRtbAorU3ViamVjdDogW3BhdGNoIDQv M10gcmVhZGxpbmUtNi4yOiBTdWJzdGl0dXRlIGluYy1oaXN0LnRleGluZm8KKworSGksCisKK2Zv cmdvdCB0aGUgcGF0Y2hzZXQgaGFkIGEgYG1ha2UgZG9jJyByZWdyZXNzaW9uOgorbWFrZTogKioq IE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgYC4uLy4uLy4uL2dkYi9kb2MvLi4vLi4vcmVhZGxpbmUv ZG9jL2luYy1oaXN0LnRleGluZm8nLCBuZWVkZWQgYnkgYGdkYi5pbmZvJy4gIFN0b3AuCisKK1Ro ZXJlIHdhcyBhIGNvcHkgaHN1c2VyLnRleGkgLT4gaW5jLWhpc3QudGV4aW5mbyBiZWZvcmUgd2l0 aCB0aGlzIGRpZmY6CisJQEAgLTI2LDkgKzI2LDkgQEAgaW50byBhbm90aGVyIGxhbmd1YWdlLCB1 bmRlciB0aGUgYWJvdmUgYworCSBAbm9kZSBVc2luZyBIaXN0b3J5IEludGVyYWN0aXZlbHkKKwkg QGNoYXB0ZXIgVXNpbmcgSGlzdG9yeSBJbnRlcmFjdGl2ZWx5CisJIAorCS1AaWZjbGVhciBCYXNo RmVhdHVyZXMKKwktQGRlZmNvZGVpbmRleCBidAorCS1AZW5kIGlmY2xlYXIKKwkrQGMgQGlmY2xl YXIgQmFzaEZlYXR1cmVzCisJK0BjIEBkZWZjb2RlaW5kZXggYnQKKwkrQGMgQGVuZCBpZmNsZWFy CisJIAorCSBAaWZzZXQgQmFzaEZlYXR1cmVzCisJIFRoaXMgY2hhcHRlciBkZXNjcmliZXMgaG93 IHRvIHVzZSB0aGUgQHNje2dudX0gSGlzdG9yeSBMaWJyYXJ5CisJQEAgLTM5LDkgKzM5LDkgQEAg c2VlIHRoZSBAc2N7Z251fSBSZWFkbGluZSBMaWJyYXJ5IE1hbnVhbAorCSBAZW5kIGlmc2V0CisJ IEBpZmNsZWFyIEJhc2hGZWF0dXJlcworCSBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGhvdyB0byB1 c2UgdGhlIEBzY3tnbnV9IEhpc3RvcnkgTGlicmFyeSBpbnRlcmFjdGl2ZWx5LAorCS1mcm9tIGEg dXNlcidzIHN0YW5kcG9pbnQuICBJdCBzaG91bGQgYmUgY29uc2lkZXJlZCBhIHVzZXIncyBndWlk ZS4gIEZvcgorCS1pbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgQHNje2dudX0gSGlzdG9yeSBMaWJy YXJ5IGluIHlvdXIgb3duIHByb2dyYW1zLAorCS1AcHhyZWZ7UHJvZ3JhbW1pbmcgd2l0aCBHTlUg SGlzdG9yeX0uCisJK2Zyb20gYSB1c2VyJ3Mgc3RhbmRwb2ludC4gIEl0IHNob3VsZCBiZSBjb25z aWRlcmVkIGEgdXNlcidzIGd1aWRlLgorCStGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlIEBz Y3tnbnV9IEhpc3RvcnkgTGlicmFyeSBpbiBvdGhlciBwcm9ncmFtcywKKwkrc2VlIHRoZSBAc2N7 Z251fSBSZWFkbGluZSBMaWJyYXJ5IE1hbnVhbC4KKwkgQGVuZCBpZmNsZWFyCisJIAorCSBAaWZz ZXQgQmFzaEZlYXR1cmVzCisKK1VzZWQgc2xpZ2h0bHkgYWx0ZXJuYXRpdmUgb25lIHdpdGggSU1P IGJldHRlciByZWZlcmVuY2UgYW5kIEkgaGF2ZSBhbHNvIGtlcHQKK2hzdXNlci50ZXhpIGluIHBs YWNlIGFzIHJlYWRsaW5lLyBpbiBzcmMvIGlzIG5vIGxvbmdlciBhIHN0YW5kYWxvbmUgcmVhZGxp bmUKK2Rpc3RyaWJ1dGlvbiBhbnl3YXkuCisKKworU29ycnksCitKYW4KKworCitnZGIvZG9jLwor MjAxMS0wNS0wMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgor CisJKiBNYWtlZmlsZS5pbiAoR0RCX0RPQ19TT1VSQ0VfSU5DTFVERVMpOiBSZW5hbWUgaW5jLWhp c3QudGV4aW5mbyB0bworCWhzdXNlci50ZXhpLgorCSogZ2RiLnRleGluZm8gPCFTWVNURU1fUkVB RExJTkU+OiBSZW5hbWUgaW5jLWhpc3QudGV4aW5mbyBpbmNsdXNpb24gYW5kCisJY29tbWVudCB0 byBoc3VzZXIudGV4aS4gIENoYW5nZSBybHVzZXIudGV4aSBuYW1lIGluIHRoZSBjb21tZW50Lgor CityZWFkbGluZS9kb2MvCisyMDExLTA1LTAyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+CisKKwkqIGhzdXNlci50ZXhpIChVc2luZyBIaXN0b3J5IEludGVyYWN0 aXZlbHkpOiBEaXNhYmxlICFCYXNoRmVhdHVyZXMKKwlAZGVmY29kZWluZGV4LiAgTWFrZSB0aGUg YFByb2dyYW1taW5nIHdpdGggR05VIEhpc3RvcnknIHJlZmVyZW5jZQorCWV4dGVybmFsLgorCist LS0gYS9nZGIvZG9jL01ha2VmaWxlLmluCisrKysgYi9nZGIvZG9jL01ha2VmaWxlLmluCitAQCAt MTE3LDcgKzExNyw3IEBAIEdEQl9ET0NfU09VUkNFX0lOQ0xVREVTID0gXAorIAkkKHNyY2Rpcikv Z3BsLnRleGkgXAorIAkkKHNyY2RpcikvYWdlbnRleHByLnRleGkgXAorIAkkKFJFQURMSU5FX0RJ Uikvcmx1c2VyLnRleGkgXAorLQkkKFJFQURMSU5FX0RJUikvaW5jLWhpc3QudGV4aW5mbworKwkk KFJFQURMSU5FX0RJUikvaHN1c2VyLnRleGkKKyBHREJfRE9DX0JVSUxEX0lOQ0xVREVTID0gXAor IAlnZGItY2ZnLnRleGkgXAorIAlHREJ2bi50ZXhpCistLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZv CisrKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCitAQCAtMzEwMDgsMTMgKzMxMDA4LDEzIEBAIHRo aW5ncyB3aXRob3V0IGZpcnN0IHVzaW5nIHRoZSBkZWJ1Z2dlciB0byBmaW5kIHRoZSBmYWN0cy4K KyAKKyBAYyBUaGUgcmVhZGxpbmUgZG9jdW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCB3aXRoIHRo ZSByZWFkbGluZSBjb2RlCisgQGMgYW5kIGNvbnNpc3RzIG9mIHRoZSB0d28gZm9sbG93aW5nIGZp bGVzOgorLUBjICAgICBybHVzZXIudGV4aW5mbworLUBjICAgICBpbmMtaGlzdC50ZXhpbmZvCisr QGMgICAgIHJsdXNlci50ZXhpCisrQGMgICAgIGhzdXNlci50ZXhpCisgQGMgVXNlIC1JIHdpdGgg bWFrZWluZm8gdG8gcG9pbnQgdG8gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdG9yeSwKKyBAYyBlbnZp cm9ubWVudCB2YXIgVEVYSU5QVVRTIHdpdGggVGVYLgorIEBpZmNsZWFyIFNZU1RFTV9SRUFETElO RQorIEBpbmNsdWRlIHJsdXNlci50ZXhpCistQGluY2x1ZGUgaW5jLWhpc3QudGV4aW5mbworK0Bp bmNsdWRlIGhzdXNlci50ZXhpCisgQGVuZCBpZmNsZWFyCisgCisgCistLS0gYS9yZWFkbGluZS9k b2MvaHN1c2VyLnRleGkKKysrKyBiL3JlYWRsaW5lL2RvYy9oc3VzZXIudGV4aQorQEAgLTI2LDkg KzI2LDEwIEBAIGludG8gYW5vdGhlciBsYW5ndWFnZSwgdW5kZXIgdGhlIGFib3ZlIGNvbmRpdGlv bnMgZm9yIG1vZGlmaWVkIHZlcnNpb25zLgorIEBub2RlIFVzaW5nIEhpc3RvcnkgSW50ZXJhY3Rp dmVseQorIEBjaGFwdGVyIFVzaW5nIEhpc3RvcnkgSW50ZXJhY3RpdmVseQorIAorLUBpZmNsZWFy IEJhc2hGZWF0dXJlcworLUBkZWZjb2RlaW5kZXggYnQKKy1AZW5kIGlmY2xlYXIKKytAYyBHREIg YnVuZGxpbmcgbW9kaWZpY2F0aW9uOgorK0BjIEBpZmNsZWFyIEJhc2hGZWF0dXJlcworK0BjIEBk ZWZjb2RlaW5kZXggYnQKKytAYyBAZW5kIGlmY2xlYXIKKyAKKyBAaWZzZXQgQmFzaEZlYXR1cmVz CisgVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyBob3cgdG8gdXNlIHRoZSBAc2N7Z251fSBIaXN0b3J5 IExpYnJhcnkKK0BAIC00MSw3ICs0Miw4IEBAIHNlZSB0aGUgQHNje2dudX0gUmVhZGxpbmUgTGli cmFyeSBNYW51YWwuCisgVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyBob3cgdG8gdXNlIHRoZSBAc2N7 Z251fSBIaXN0b3J5IExpYnJhcnkgaW50ZXJhY3RpdmVseSwKKyBmcm9tIGEgdXNlcidzIHN0YW5k cG9pbnQuICBJdCBzaG91bGQgYmUgY29uc2lkZXJlZCBhIHVzZXIncyBndWlkZS4gIEZvcgorIGlu Zm9ybWF0aW9uIG9uIHVzaW5nIHRoZSBAc2N7Z251fSBIaXN0b3J5IExpYnJhcnkgaW4geW91ciBv d24gcHJvZ3JhbXMsCistQHB4cmVme1Byb2dyYW1taW5nIHdpdGggR05VIEhpc3Rvcnl9LgorK0Bj IEdEQiBidW5kbGluZyBtb2RpZmljYXRpb246CisrQHB4cmVme1Byb2dyYW1taW5nIHdpdGggR05V IEhpc3RvcnksICwgLCBoaXN0b3J5LCBHTlUgSGlzdG9yeSBMaWJyYXJ5fS4KKyBAZW5kIGlmY2xl YXIKKyAKKyBAaWZzZXQgQmFzaEZlYXR1cmVzCisKCmRpZmYgLS1naXQgYS9nZGItcmVhZGxpbmUt Ni4wLXNpZ25hbC5wYXRjaCBiL2dkYi1yZWFkbGluZS02LjAtc2lnbmFsLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWMzNmIwLi4wMDAwMDAwCi0tLSBhL2dkYi1yZWFkbGlu ZS02LjAtc2lnbmFsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjY2ICswLDAgQEAKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTExL21zZzAwNTk2Lmh0bWwKLVN1 YmplY3Q6IFtnZGIgRllJLXBhdGNoXSBjYWxsYmFjay1tb2RlIHJlYWRsaW5lLTYuMCByZWdyZXNz aW9uCi0KLUhpIENoZXQsCi0KLUZTRiBHREIgY3VycmVudGx5IHNoaXBzIGJ1bmRsZWQgd2l0aCBy ZWFkbGluZS01LjIgd2hpY2ggd29ya3MgZmluZS4KLUJ1dCB1c2luZyAtLXdpdGgtc3lzdGVtLXJl YWRsaW5lIGFuZCByZWFkbGluZS02LjAtcGF0Y2hsZXZlbDQgaGFzCi1hIHJlZ3Jlc3Npb246Ci0K LXJlYWRsaW5lLTUuMjogUnVuIGBnZGIgLW54IC1xJyBhbmQgdHlwZSBDVFJMLUM6Ci0oZ2RiKSBR dWl0Ci0oZ2RiKSBfCi0KLXJlYWRsaW5lLTYuMDogUnVuIGBnZGIgLW54IC1xJyBhbmQgdHlwZSBD VFJMLUM6Ci0oZ2RiKSBfCi0gPSBub3RoaW5nIGhhcHBlbnMgKGl0IGdldHMgYnVmZmVyZWQgYW5k IGV4ZWN1dGVkIGxhdGVyKQotCShJdCBkb2VzIGFsc28gRkFJTCBvbiBnZGIuZ2RiL3NlbGZ0ZXN0 LmV4cC4pCi0KLUl0IGlzIGJlY2F1c2UgR0RCIHdhaXRzIGluIGl0cyBvd24gcG9sbCgpIG1haW5s b29wIGFuZCByZWFkbGluZSB1c2VzIHZpYQotcmxfY2FsbGJhY2tfaGFuZGxlcl9pbnN0YWxsIGFu ZCBybF9jYWxsYmFja19oYW5kbGVyX3JlbW92ZS4gIFRoaXMgd2F5IHRoZQotcmVhZGxpbmUgaW50 ZXJuYWwgdmFyaWFibGUgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSByZW1haW5zIDAgYW5kIENU UkwtQyBnZXRzCi1vbmx5IHN0b3JlZCB0byBfcmxfY2F1Z2h0X3NpZ25hbCBidXQgbm90IGV4ZWN1 dGVkLgotCi1TZWVuIGluIHJsX3NpZ25hbF9oYW5kbGVyIGV2ZW4gaWYgX3JsX2ludGVycnVwdF9p bW1lZGlhdGVseSBpcyBzZXQgYW5kCi1fcmxfaGFuZGxlX3NpZ25hbCBpcyBjYWxsZWQgdGhlbiB0 aGUgc2lnbmFsIGlzIHN0aWxsIHN0b3JlZCB0bwotX3JsX2NhdWdodF9zaWduYWwuICBJbiB0aGUg X3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSBjYXNlIGl0IHNob3VsZCBub3QgYmUKLXN0b3JlZCB3 aGVuIGl0IHdhcyBhbHJlYWR5IHByb2Nlc3NlZC4KLQotcmxfc2lnbmFsX2hhbmRsZXIgZG9lcyBg X3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSA9IDA7JyAtIHdoaWxlIEkgYW0gbm90IGF3YXJlCi1v ZiBpdHMgbWVhbmluZyBpdCBicmVha3MgdGhlIG5lc3QtY291bnRpbmcgb2Ygb3RoZXIgcm91dGlu ZXMgd2hpY2ggZG8KLWBfcmxfaW50ZXJydXB0X2ltbWVkaWF0ZWx5Kys7JyBhbmQgYF9ybF9pbnRl cnJ1cHRfaW1tZWRpYXRlbHktLTsnIHBvc3NpYmx5Ci1jcmVhdGluZyBwcm9ibGVtYXRpYyBgX3Js X2ludGVycnVwdF9pbW1lZGlhdGVseSA9PSAtMScuCi0KLWBfcmxfaW50ZXJydXB0X2ltbWVkaWF0 ZWx5JyBpcyBhbiBpbnRlcm5hbCB2YXJpYWJsZSwgaG93IGl0IGNvdWxkIGJlIGFjY2Vzc2VkCi1i eSBhIHJlYWRsaW5lIGFwcGxpY2F0aW9uPyAoT0ssIG1heWJlIGl0IHNob3VsZCBub3QgYmUgdXNl ZC4pCi0KLUF0dGFjaGluZyBhIGN1cnJlbnQgR0RCLXNpZGUgcGF0Y2ggYnV0IGl0IG11c3QgYWNj ZXNzIHJlYWRsaW5lIGludGVybmFsCi12YXJpYWJsZSBfcmxfY2F1Z2h0X3NpZ25hbCBhbmQgaXQg aXMgZ2VuZXJhbGx5IGp1c3QgYSB3b3JrYXJvdW5kLiAgQ291bGQgeW91Ci1wbGVhc2UgaW5jbHVk ZSBzdXBwb3J0IGZvciBzaWduYWxzIGluIHRoaXMgYXN5bmNocm9ub3VzIG1vZGUgaW4gcmVhZGxp bmUtNi4xPwotSSBmaW5kIGl0IHdvdWxkIGJlIGVub3VnaCB0byBtYWtlIFJMX0NIRUNLX1NJR05B TFMgcHVibGljPwotCi0KLUdEQjogTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMy LGk2ODZ9LWZlZG9yYTEyLWxpbnV4LWdudS4KLUJ1dCB0aGlzIGlzIG5vdCBhIHBhdGNoIGludGVu ZGVkIHRvIGJlIGFjY2VwdGVkLgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIwMDktMTEt MjkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogY29u ZmlnLmluLCBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCi0JKiBjb25maWd1cmUuYWMgKGZvciByZWFk bGluZV9lY2hvaW5nX3ApOiBNb3ZlIGluc2lkZSAkTElCUyBjaGFuZ2UuCi0JKGZvciBfcmxfY2F1 Z2h0X3NpZ25hbCk6IE5ldy4KLQkqIGV2ZW50LWxvb3AuYzogSW5jbHVkZSByZWFkbGluZS9yZWFk bGluZS5oLgotCShnZGJfZG9fb25lX2V2ZW50KSBbSEFWRV9SRUFETElORV9DQVVHSFRfU0lHTkFM XTogTmV3LgotCi1nZGIvdGVzdHN1aXRlLwotMjAwOS0xMS0yOSAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIuZ2RiL3NlbGZ0ZXN0LmV4cCAoYmFj a3RyYWNlIHRocm91Z2ggc2lnbmFsIGhhbmRsZXIpOiBNb3ZlIGJlZm9yZQotCVNJR0lOVCBwYXNz LCBkcm9wIHRoZSB0aW1lb3V0IGNhc2UuCi0JKHNlbmQgU0lHSU5UIHNpZ25hbCB0byBjaGlsZCBw cm9jZXNzKTogVXNlIGdkYl90ZXN0LgotCShiYWNrdHJhY2UgdGhyb3VnaCByZWFkbGluZSBoYW5k bGVyKTogTmV3LgotCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDEwNy9nZGIvY29uZmlnLmluCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDEwNy5vcmlnL2dkYi9jb25maWcuaW4JMjAx MS0wMS0xNyAxNTozNjo0MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTA3 L2dkYi9jb25maWcuaW4JMjAxMS0wMS0xNyAxNTozNzowOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC00 NjQsNiArNDY0LDkgQEAKLSAvKiBEZWZpbmUgdG8gMSBpZiB3Y3dpZHRoIGlzIGRlY2xhcmVkIGV2 ZW4gYWZ0ZXIgdW5kZWZpbmluZyBtYWNyb3MuICovCi0gI3VuZGVmIEhBVkVfUkFXX0RFQ0xfV0NX SURUSAotIAotKy8qIHJlYWRsaW5lLTYuMCB3b3JrYXJvdW5kIG9mIGJsb2NrZWQgc2lnbmFscy4g Ki8KLSsjdW5kZWYgSEFWRV9SRUFETElORV9DQVVHSFRfU0lHTkFMCi0rCi0gLyogRGVmaW5lIHRv IDEgaWYgeW91IGhhdmUgdGhlIGByZWFscGF0aCcgZnVuY3Rpb24uICovCi0gI3VuZGVmIEhBVkVf UkVBTFBBVEgKLSAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTA3L2dkYi9jb25maWd1cmUuYWMK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMTA3Lm9yaWcvZ2RiL2NvbmZpZ3VyZS5h YwkyMDExLTAxLTE3IDE1OjM2OjQyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAx MTAxMDcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTAxLTE3IDE1OjM3OjA5LjAwMDAwMDAwMCArMDEw MAotQEAgLTczNiwxNyArNzM2LDI1IEBAIGlmIHRlc3QgIiR3aXRoX3N5c3RlbV9yZWFkbGluZSIg PSB5ZXM7IHQKLSAgICMgcmVhZGxpbmUtNi4wIHN0YXJ0ZWQgdG8gdXNlIHRoZSBuYW1lIGBfcmxf ZWNob2luZ19wJy4KLSAgICMgYCQoUkVBRExJTkVfRElSKS8nIG9mIGJ1bmRsZWQgcmVhZGxpbmUg d291bGQgbm90IHJlc29sdmUgaW4gY29uZmlndXJlLgotIAotLSAgQUNfTVNHX0NIRUNLSU5HKFtm b3IgcmVhZGxpbmVfZWNob2luZ19wXSkKLSAgIHNhdmVfTElCUz0kTElCUwotICAgTElCUz0iJExJ QlMgJFJFQURMSU5FIgotKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgcmVhZGxpbmVfZWNob2luZ19w XSkKLSAgIEFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSgsW1tleHRlcm4gaW50IHJlYWRs aW5lX2VjaG9pbmdfcDsKLSAJCQkJICAgIHJldHVybiByZWFkbGluZV9lY2hvaW5nX3A7XV0pLAot IAkJIFtSRUFETElORV9FQ0hPSU5HX1A9eWVzXSwKLSAJCSBbUkVBRExJTkVfRUNIT0lOR19QPW5v Ci0gCQkgIEFDX0RFRklORShbcmVhZGxpbmVfZWNob2luZ19wXSwgW19ybF9lY2hvaW5nX3BdLAot IAkJCSAgICBbcmVhZGxpbmUtNi4wIHN0YXJ0ZWQgdG8gdXNlIGRpZmZlcmVudCBuYW1lLl0pXSkK LS0gIExJQlM9IiRzYXZlX0xJQlMiCi0gICBBQ19NU0dfUkVTVUxUKFskUkVBRExJTkVfRUNIT0lO R19QXSkKLSsgIEFDX01TR19DSEVDS0lORyhbZm9yIF9ybF9jYXVnaHRfc2lnbmFsXSkKLSsgIEFD X0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSgsW1tleHRlcm4gaW50IHZvbGF0aWxlIF9ybF9j YXVnaHRfc2lnbmFsOwotKwkJCQkgICAgcmV0dXJuIF9ybF9jYXVnaHRfc2lnbmFsO11dKSwKLSsJ CSBbUkVBRExJTkVfQ0FVR0hUX1NJR05BTD15ZXMKLSsJCSAgQUNfREVGSU5FKFtIQVZFX1JFQURM SU5FX0NBVUdIVF9TSUdOQUxdLCwKLSsJCQkgICAgW3JlYWRsaW5lLTYuMCB3b3JrYXJvdW5kIG9m IGJsb2NrZWQgc2lnbmFscy5dKV0sCi0rCQkgW1JFQURMSU5FX0NBVUdIVF9TSUdOQUw9bm9dKQot KyAgQUNfTVNHX1JFU1VMVChbJFJFQURMSU5FX0NBVUdIVF9TSUdOQUxdKQotKyAgTElCUz0iJHNh dmVfTElCUyIKLSBlbHNlCi0gICBSRUFETElORT0nJChSRUFETElORV9ESVIpL2xpYnJlYWRsaW5l LmEnCi0gICBSRUFETElORV9ERVBTPSckKFJFQURMSU5FKScKLUluZGV4OiBnZGItNy4yLjUwLjIw MTEwMTA3L2dkYi9ldmVudC1sb29wLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEw MTA3Lm9yaWcvZ2RiL2V2ZW50LWxvb3AuYwkyMDExLTAxLTA1IDIzOjIyOjQ4LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAxMDcvZ2RiL2V2ZW50LWxvb3AuYwkyMDExLTAxLTE3 IDE1OjM3OjIzLjAwMDAwMDAwMCArMDEwMAotQEAgLTM3LDYgKzM3LDcgQEAKLSAjaW5jbHVkZSAi ZXhjZXB0aW9ucy5oIgotICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0gI2luY2x1ZGUgImdkYl9z ZWxlY3QuaCIKLSsjaW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIKLSAKLSAvKiBUZWxsIGNy ZWF0ZV9maWxlX2hhbmRsZXIgd2hhdCBldmVudHMgd2UgYXJlIGludGVyZXN0ZWQgaW4uCi0gICAg VGhpcyBpcyB1c2VkIGJ5IHRoZSBzZWxlY3QgdmVyc2lvbiBvZiB0aGUgZXZlbnQgbG9vcC4gICov Ci1AQCAtNDE5LDYgKzQyMCw5IEBAIGdkYl9kb19vbmVfZXZlbnQgKHZvaWQgKmRhdGEpCi0gICBz dGF0aWMgaW50IGV2ZW50X3NvdXJjZV9oZWFkID0gMDsKLSAgIGNvbnN0IGludCBudW1iZXJfb2Zf c291cmNlcyA9IDM7Ci0gICBpbnQgY3VycmVudCA9IDA7Ci0rI2lmZGVmIEhBVkVfUkVBRExJTkVf Q0FVR0hUX1NJR05BTAotKyAgZXh0ZXJuIGludCB2b2xhdGlsZSBfcmxfY2F1Z2h0X3NpZ25hbDsK LSsjZW5kaWYKLSAKLSAgIC8qIEFueSBldmVudHMgYWxyZWFkeSB3YWl0aW5nIGluIHRoZSBxdWV1 ZT8gICovCi0gICBpZiAocHJvY2Vzc19ldmVudCAoKSkKLUBAIC00NjMsNiArNDY3LDI5IEBAIGdk Yl9kb19vbmVfZXZlbnQgKHZvaWQgKmRhdGEpCi0gICBpZiAoZ2RiX3dhaXRfZm9yX2V2ZW50ICgx KSA8IDApCi0gICAgIHJldHVybiAtMTsKLSAKLSsjaWZkZWYgSEFWRV9SRUFETElORV9DQVVHSFRf U0lHTkFMCi0rICBpZiAoYXN5bmNfY29tbWFuZF9lZGl0aW5nX3AgJiYgUkxfSVNTVEFURSAoUkxf U1RBVEVfQ0FMTEJBQ0spCi0rICAgICAgJiYgX3JsX2NhdWdodF9zaWduYWwpCi0rICAgIHsKLSsg ICAgICBjaGFyICpwcm9tcHQ7Ci0rCi0rICAgICAgaWYgKHJsX3Byb21wdCA9PSBOVUxMKQotKwl7 Ci0rCSAgLyogU2hvdWxkIG5vdCBoYXBwZW4sIGRlZmVuc2l2ZSBvbmx5LiAgKi8KLSsJICBwcm9t cHQgPSAiIjsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIHByb21wdCA9IGFsbG9jYSAoc3Ry bGVuIChybF9wcm9tcHQpICsgMSk7Ci0rCSAgc3RyY3B5IChwcm9tcHQsIHJsX3Byb21wdCk7Ci0r CX0KLSsKLSsgICAgICAvKiBDYWxsIFJMX0NIRUNLX1NJR05BTFMgdGhpcyB3YXkuICAqLwotKyAg ICAgIHJsX2NhbGxiYWNrX2hhbmRsZXJfcmVtb3ZlICgpOwotKyAgICAgIHJsX2NhbGxiYWNrX2hh bmRsZXJfaW5zdGFsbCAocHJvbXB0LCBpbnB1dF9oYW5kbGVyKTsKLSsgICAgfQotKyNlbmRpZgot KwotICAgLyogSGFuZGxlIGFueSBuZXcgZXZlbnRzIG9jY3VycmVkIHdoaWxlIHdhaXRpbmcuICAq LwotICAgaWYgKHByb2Nlc3NfZXZlbnQgKCkpCi0gICAgIHJldHVybiAxOwotSW5kZXg6IGdkYi03 LjIuNTAuMjAxMTAxMDcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAxMDcub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5nZGIv c2VsZnRlc3QuZXhwCTIwMTEtMDEtMTcgMTU6MzY6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuMi41MC4yMDExMDEwNy9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCTIwMTEt MDEtMTcgMTU6Mzc6MDkuMDAwMDAwMDAwICswMTAwCi1AQCAtNDMzLDYgKzQzMywyOCBAQCBwcm9j IHRlc3Rfd2l0aF9zZWxmIHsgZXhlY3V0YWJsZSB9IHsKLSAJfQotICAgICB9Ci0gICAgIAotKyAg ICAjIGdldCBhIHN0YWNrIHRyYWNlIHdpdGggdGhlIHBvbGwgZnVuY3Rpb24KLSsgICAgIwotKyAg ICAjIFRoaXMgZmFpbHMgb24gc29tZSBsaW51eCBzeXN0ZW1zIGZvciB1bmtub3duIHJlYXNvbnMu ICBPbiB0aGUKLSsgICAgIyBzeXN0ZW1zIHdoZXJlIGl0IGZhaWxzLCBzb21ldGltZXMgaXQgd29y a3MgZmluZSB3aGVuIHJ1biBtYW51YWxseS4KLSsgICAgIyBUaGUgdGVzdHN1aXRlIGZhaWx1cmVz IG1heSBub3QgYmUgbGltaXRlZCB0byBqdXN0IGFvdXQgc3lzdGVtcy4KLSsgICAgc2V0dXBfeGZh aWwgImkqODYtcGMtbGludXhhb3V0LWdudSIKLSsgICAgc2V0IGRlc2NyaXB0aW9uICJiYWNrdHJh Y2UgdGhyb3VnaCBzaWduYWwgaGFuZGxlciIKLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImJhY2t0 cmFjZSIgIiRkZXNjcmlwdGlvbiIgewotKwktcmUgIiMwLioocmVhZHxwb2xsKS4qaW4gbWFpbiBc XCguKlxcKSBhdCAuKmdkYlxcLmMuKiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3MgIiRkZXNj cmlwdGlvbiIKLSsJfQotKwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgewotKwkgICAgIyBPbiB0aGUg YWxwaGEsIHdlIGhpdCB0aGUgaW5mYW1vdXMgcHJvYmxlbSBhYm91dCBnZGIKLSsJICAgICMgYmVp bmcgdW5hYmxlIHRvIGdldCB0aGUgZnJhbWUgcG9pbnRlciAobWVudGlvbmVkIGluCi0rCSAgICAj IGdkYi9SRUFETUUpLiAgQXMgaXQgaXMgaW50ZXJtaXR0ZW50LCB0aGVyZSBpcyBubyB3YXkgdG8K LSsJICAgICMgWEZBSUwgaXQgd2hpY2ggd2lsbCBnaXZlIHVzIGFuIFhQQVNTIGlmIHRoZSBwcm9i bGVtIGdvZXMKLSsJICAgICMgYXdheS4KLSsJICAgIHNldHVwX3hmYWlsICJhbHBoYSotKi1vc2Yq IgotKwkgICAgZmFpbCAiJGRlc2NyaXB0aW9uIgotKwl9Ci0rICAgIH0KLSsKLSAgICAgc2V0IGRl c2NyaXB0aW9uICJzZW5kIFNJR0lOVCBzaWduYWwgdG8gY2hpbGQgcHJvY2VzcyIKLSAgICAgZ2Ri X3Rlc3QgInNpZ25hbCBTSUdJTlQiIFwKLSAJIkNvbnRpbnVpbmcgd2l0aCBzaWduYWwgU0lHSU5U LioiIFwKLUBAIC00NDMsMTAgKzQ2NSwxMSBAQCBwcm9jIHRlc3Rfd2l0aF9zZWxmIHsgZXhlY3V0 YWJsZSB9IHsKLSAgICAgIyBUaGlzIGZhaWxzIG9uIHNvbWUgbGludXggc3lzdGVtcyBmb3IgdW5r bm93biByZWFzb25zLiAgT24gdGhlCi0gICAgICMgc3lzdGVtcyB3aGVyZSBpdCBmYWlscywgc29t ZXRpbWVzIGl0IHdvcmtzIGZpbmUgd2hlbiBydW4gbWFudWFsbHkuCi0gICAgICMgVGhlIHRlc3Rz dWl0ZSBmYWlsdXJlcyBtYXkgbm90IGJlIGxpbWl0ZWQgdG8ganVzdCBhb3V0IHN5c3RlbXMuCi0r ICAgICMgT3B0aW9uYWwgc3lzdGVtIHJlYWRsaW5lIG1heSBub3QgaGF2ZSBzeW1ib2xzIHRvIGJl IHNob3duLgotICAgICBzZXR1cF94ZmFpbCAiaSo4Ni1wYy1saW51eGFvdXQtZ251IgotLSAgICBz ZXQgZGVzY3JpcHRpb24gImJhY2t0cmFjZSB0aHJvdWdoIHNpZ25hbCBoYW5kbGVyIgotKyAgICBz ZXQgZGVzY3JpcHRpb24gImJhY2t0cmFjZSB0aHJvdWdoIHJlYWRsaW5lIGhhbmRsZXIiCi0gICAg IGdkYl90ZXN0X211bHRpcGxlICJiYWNrdHJhY2UiICIkZGVzY3JpcHRpb24iIHsKLS0JLXJlICIj MC4qKHJlYWR8cG9sbCkuKmluIG1haW4gXFwoLipcXCkgYXQgLipnZGJcXC5jLiokZ2RiX3Byb21w dCAkIiB7Ci0rCS1yZSAiIzAuKmdkYl9kb19vbmVfZXZlbnQuKmluIG1haW4gXFwoLipcXCkgYXQg LipnZGJcXC5jLiokZ2RiX3Byb21wdCAkIiB7Ci0gCSAgICBwYXNzICIkZGVzY3JpcHRpb24iCi0g CX0KLSAJLXJlICIuKiRnZGJfcHJvbXB0ICQiIHsKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTA3 L2dkYi9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMTA3Lm9yaWcv Z2RiL2NvbmZpZ3VyZQkyMDExLTAxLTE3IDE1OjM2OjQyLjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjIuNTAuMjAxMTAxMDcvZ2RiL2NvbmZpZ3VyZQkyMDExLTAxLTE3IDE1OjM3OjA5LjAwMDAw MDAwMCArMDEwMAotQEAgLTEwMjM3LDEwICsxMDIzNywxMCBAQCBpZiB0ZXN0ICIkd2l0aF9zeXN0 ZW1fcmVhZGxpbmUiID0geWVzOyB0Ci0gICAjIHJlYWRsaW5lLTYuMCBzdGFydGVkIHRvIHVzZSB0 aGUgbmFtZSBgX3JsX2VjaG9pbmdfcCcuCi0gICAjIGAkKFJFQURMSU5FX0RJUikvJyBvZiBidW5k bGVkIHJlYWRsaW5lIHdvdWxkIG5vdCByZXNvbHZlIGluIGNvbmZpZ3VyZS4KLSAKLS0gIHsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHJlYWRsaW5l X2VjaG9pbmdfcCIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHJlYWRsaW5lX2VjaG9p bmdfcC4uLiAiID4mNjsgfQotICAgc2F2ZV9MSUJTPSRMSUJTCi0gICBMSUJTPSIkTElCUyAkUkVB RExJTkUiCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciByZWFkbGluZV9lY2hvaW5nX3AiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZv ciByZWFkbGluZV9lY2hvaW5nX3AuLi4gIiA+JjY7IH0KLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxf QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi1AQCAt MTAyNjMsOSArMTAyNjMsMzUgQEAgJGFzX2VjaG8gIiNkZWZpbmUgcmVhZGxpbmVfZWNob2luZ19w IF9ybAotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBc Ci0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICBMSUJTPSIkc2F2 ZV9MSUJTIgotICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6ICRSRUFETElORV9FQ0hPSU5HX1AiID4mNQotICRhc19lY2hvICIkUkVBRExJTkVfRUNIT0lO R19QIiA+JjY7IH0KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Y2hlY2tpbmcgZm9yIF9ybF9jYXVnaHRfc2lnbmFsIiA+JjUKLSskYXNfZWNob19uICJjaGVja2lu ZyBmb3IgX3JsX2NhdWdodF9zaWduYWwuLi4gIiA+JjY7IH0KLSsgIGNhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0r aW50Ci0rbWFpbiAoKQotK3sKLStleHRlcm4gaW50IHZvbGF0aWxlIF9ybF9jYXVnaHRfc2lnbmFs OwotKwkJCQkgICAgcmV0dXJuIF9ybF9jYXVnaHRfc2lnbmFsOwotKyAgOwotKyAgcmV0dXJuIDA7 Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSsg IFJFQURMSU5FX0NBVUdIVF9TSUdOQUw9eWVzCi0rCi0rJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9S RUFETElORV9DQVVHSFRfU0lHTkFMIC8qKi8iID4+Y29uZmRlZnMuaAotKwotK2Vsc2UKLSsgIFJF QURMSU5FX0NBVUdIVF9TSUdOQUw9bm8KLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNv bmZ0ZXN0LiRhY19vYmpleHQgXAotKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFj X2V4dAotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 ICRSRUFETElORV9DQVVHSFRfU0lHTkFMIiA+JjUKLSskYXNfZWNobyAiJFJFQURMSU5FX0NBVUdI VF9TSUdOQUwiID4mNjsgfQotKyAgTElCUz0iJHNhdmVfTElCUyIKLSBlbHNlCi0gICBSRUFETElO RT0nJChSRUFETElORV9ESVIpL2xpYnJlYWRsaW5lLmEnCi0gICBSRUFETElORV9ERVBTPSckKFJF QURMSU5FKScKCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IGUwMDZkNzIu LmRkMmY0YzcgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0yNyw3ICsy Nyw3IEBAIFZlcnNpb246IDcuMi45MC4yMDExMDQyOQogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBj b250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBz dHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVu Y2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDM1JXs/X3dpdGhfdXBz dHJlYW06LnVwc3RyZWFtfSV7P2Rpc3R9CitSZWxlYXNlOiAzNiV7P193aXRoX3Vwc3RyZWFtOi51 cHN0cmVhbX0lez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2Vw dGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQg TEdQTHYyKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWluCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVi dWdnZXJzCkBAIC0yMzEsOCArMjMxLDYgQEAgUGF0Y2gyMTE6IGdkYi02LjUtbGFzdC1hZGRyZXNz LXNwYWNlLWJ5dGUtdGVzdC5wYXRjaAogUGF0Y2gyMDg6IGdkYi02LjUtQkVBLXRlc3RzdWl0ZS5w YXRjaAogCiAjIEZpeCByZWFkbGluZSBzZWdmYXVsdCBvbiBleGNlc3NpdmVseSBsb25nIGhhbmQt dHlwZWQgbGluZXMuCi0jPWRyb3A6IEFmdGVyIHVwc3RyZWFtJ3MgcmVhZGxpbmUgcmViYXNlIGl0 IHdpbGwgYmUgb2Jzb2xldGUuCi1QYXRjaDIwOTogZ2RiLTYuNS1yZWFkbGluZS1sb25nLWxpbmUt Y3Jhc2gucGF0Y2gKICM9ZmVkb3JhdGVzdAogUGF0Y2gyMTM6IGdkYi02LjUtcmVhZGxpbmUtbG9u Zy1saW5lLWNyYXNoLXRlc3QucGF0Y2gKIApAQCAtNDE3LDkgKzQxNSw2IEBAIFBhdGNoMzgxOiBn ZGItc2ltdWx0YW5lb3VzLXN0ZXAtcmVzdW1lLWJyZWFrcG9pbnQtdGVzdC5wYXRjaAogIz1wdXNo K3dvcms6IEl0IHNob3VsZCBiZSBpbiBnbGliYzogbGliYy1hbHBoYTogPDIwMDkxMDA0MTYxNzA2 LkdBMjc0NTBALio+CiBQYXRjaDM4MjogZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gK IAotIyBGaXggY2FsbGJhY2stbW9kZSByZWFkbGluZS02LjAgcmVncmVzc2lvbiBmb3IgQ1RSTC1D IChmb3IgUkhFTC02LjApLgotUGF0Y2gzOTA6IGdkYi1yZWFkbGluZS02LjAtc2lnbmFsLnBhdGNo Ci0KICMgRml4IHN5c2NhbGwgcmVzdGFydHMgZm9yIGFtZDY0LT5pMzg2IGJpYXJjaC4KICM9cHVz aAogUGF0Y2gzOTE6IGdkYi14ODZfNjQtaTM4Ni1zeXNjYWxsLXJlc3RhcnQucGF0Y2gKQEAgLTU3 MCw5ICs1NjUsMTUgQEAgUGF0Y2g1ODk6IGdkYi1vcHRpbS1nLXByb2xvZ3VlLXNraXAucGF0Y2gK ICMgRml4IHBoeXNuYW1lLXJlbGF0ZWQgQ1UgZXhwYW5zaW9uIGlzc3VlIGZvciBDKysgKFBSIDEy NzA4KS4KIFBhdGNoNTkwOiBnZGItcGh5c25hbWUtZXhwYW5kLWNvbXBsZXRlci5wYXRjaAogCisj IEJ1bmRsZSByZWFkbGluZS02LjIgd2l0aCBhIHdvcmthcm91bmQgb2Ygc2tpcHBlZCAiYXNrIiAo QlogNzAxMTMxKS4KK1BhdGNoNTkxOiBnZGItYno3MDExMzEtcmVhZGxpbmU2Mi0xb2YzLnBhdGNo CitQYXRjaDU5MjogZ2RiLWJ6NzAxMTMxLXJlYWRsaW5lNjItMm9mMy5wYXRjaAorUGF0Y2g1OTM6 IGdkYi1iejcwMTEzMS1yZWFkbGluZTYyLTNvZjMucGF0Y2gKKwogQnVpbGRSZXF1aXJlczogbmN1 cnNlcy1kZXZlbCV7P19pc2F9IHRleGluZm8gZ2V0dGV4dCBmbGV4IGJpc29uIGV4cGF0LWRldmVs JXs/X2lzYX0KLVJlcXVpcmVzOiByZWFkbGluZSV7P19pc2F9Ci1CdWlsZFJlcXVpcmVzOiByZWFk bGluZS1kZXZlbCV7P19pc2F9CisjIC0td2l0aG91dC1zeXN0ZW0tcmVhZGxpbmUKKyMgUmVxdWly ZXM6IHJlYWRsaW5lJXs/X2lzYX0KKyMgQnVpbGRSZXF1aXJlczogcmVhZGxpbmUtZGV2ZWwlez9f aXNhfQogJWlmIDAleyE/ZWw1OjF9CiAjIGRsb3BlbigpIG5vIGxvbmdlciBtYWtlcyBycG0tbGli cyBhIG1hbmRhdG9yeSBkZXBlbmRlbmN5LgogI1JlcXVpcmVzOiBycG0tbGlicyV7P19pc2F9CkBA IC03NTgsNyArNzU5LDYgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2Jq Yy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoMTk2IC1wMQogJXBhdGNoMTk5IC1wMQogJXBhdGNo MjA4IC1wMQotJXBhdGNoMjA5IC1wMQogJXBhdGNoMjExIC1wMQogJXBhdGNoMjEzIC1wMQogJXBh dGNoMjE0IC1wMQpAQCAtODQ2LDE1ICs4NDYsMTIgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9t Mi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoNTg4IC1wMQogJXBhdGNo NTg5IC1wMQogJXBhdGNoNTkwIC1wMQorJXBhdGNoNTkxIC1wMQorJXBhdGNoNTkyIC1wMQorJXBh dGNoNTkzIC1wMQogCi0lcGF0Y2gzOTAgLXAxCiAlcGF0Y2gzOTMgLXAxCiAlcGF0Y2gzMzUgLXAx Ci1yZWFkbGluZT0iJChyZWFkbGluayAtZiAle19saWJkaXJ9L2xpYnJlYWRsaW5lLnNvKSIKLWlm IFsgIiRyZWFkbGluZSIgPSAiJHtyZWFkbGluZSUvbGlicmVhZGxpbmUuc28uNi4wfSIgXQotdGhl bgotJXBhdGNoMzkwIC1wMSAtUgotZmkKICVpZiAwJXshP2VsNToxfQogJXBhdGNoMzkzIC1wMSAt UgogJXBhdGNoMzM1IC1wMSAtUgpAQCAtOTMyLDcgKzkyOSw3IEBAIENGTEFHUz0iJENGTEFHUyAt TzAgLWdnZGIyIgogCS0td2l0aC1zZXBhcmF0ZS1kZWJ1Zy1kaXI9L3Vzci9saWIvZGVidWcJCVwK IAktLWRpc2FibGUtc2ltCQkJCQkJXAogCS0tZGlzYWJsZS1ycGF0aAkJCQkJCVwKLQktLXdpdGgt c3lzdGVtLXJlYWRsaW5lCQkJCQlcCisJLS13aXRob3V0LXN5c3RlbS1yZWFkbGluZQkJCQlcCiAJ LS13aXRoLWV4cGF0CQkJCQkJXAogJCg6IHBwYzY0IGhvc3QgYnVpbGQgY3Jhc2hlcyBvbiBwcGMg dmFyaWFudCBvZiBsaWJleHBhdC5zbyApCVwKIAktLXdpdGhvdXQtbGliZXhwYXQtcHJlZml4CQkJ CVwKQEAgLTEyNzQsNiArMTI3MSwxMSBAQCBmaQogJXtfaW5mb2Rpcn0vZ2RiLmluZm8qCiAKICVj aGFuZ2Vsb2cKKyogTW9uIE1heSAgMiAyMDExIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPiAtIDcuMi45MC4yMDExMDQyOS0zNi5mYzE1CistIEJ1bmRsZSByZWFkbGlu ZS02LjIgd2l0aCBhIHdvcmthcm91bmQgb2Ygc2tpcHBlZCAiYXNrIiAoQlogNzAxMTMxKS4KKyAg LSBVc2UgLS13aXRob3V0LXN5c3RlbS1yZWFkbGluZSwgZGlzYWJsZSBSZXF1aXJlcyBhbmQgQnVp bGRSZXF1aXJlcyBvZiByZWFkbGluZS4KKyAgLSBEcm9wIGdkYi02LjUtcmVhZGxpbmUtbG9uZy1s aW5lLWNyYXNoLnBhdGNoIGFuZCBnZGItcmVhZGxpbmUtNi4wLXNpZ25hbC5wYXRjaC4KKwogKiBG cmkgQXByIDI5IDIwMTEgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ IC0gNy4yLjkwLjIwMTEwNDI5LTM1LmZjMTUKIC0gUmViYXNlIHRvIEZTRiBHREIgNy4yLjkwLjIw MTEwNDI5ICh3aGljaCBpcyBhIDcuMyBwcmUtcmVsZWFzZSkuCiAtIEZpeCAtTzIgLWcgYnJlYWtw b2ludHMgaW50ZXJuYWwgZXJyb3IgKyBwcm9sb2d1ZSBza2lwcGluZyAoQlogNjEyMjUzKS4K