From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 26660 invoked from network); 21 Apr 2022 00:48:39 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 21 Apr 2022 00:48:39 -0000 Content-Type: multipart/mixed; boundary="===============5296518238409320775==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_LuaJIT=3A_update_to_git_v2=2E1_branch?= To: ml@inbox.vuxu.org From: CameronNemo Reply-to: ml@inbox.vuxu.org Message-ID: Date: Thu, 21 Apr 2022 02:48:39 +0200 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============5296518238409320775== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IENhbWVyb25OZW1vIGFnYWluc3QgbWFzdGVy IG9uIHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9DYW1l cm9uTmVtby92b2lkLXBhY2thZ2VzIGx1YWppdApodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51 eC92b2lkLXBhY2thZ2VzL3B1bGwvMzY3OTAKCkx1YUpJVDogdXBkYXRlIHRvIGdpdCB2Mi4xIGJy YW5jaApDQzogQHE2NgoKVGhlIEx1YUpJVCBtYWludGFpbmVyIGhhcyBub3QgcHVibGlzaGVkIGEg bmV3IHZlcnNpb24gaW4gNSB5ZWFycywgYnV0IGhlCmhhcyBzdGVhZGlseSBhZGRlZCBjb21taXRz IHRvIHRoZSAiMi4xIiBicmFuY2gsIGxpbmtlZCBiZWxvdy4KCmh0dHBzOi8vcmVwby5vci5jei9s dWFqaXQtMi4wLmdpdC9zaG9ydGxvZy9yZWZzL2hlYWRzL3YyLjEKClByb2plY3RzIGxpa2UgbmVv dmltIGJ1aWxkIGFnYWluc3QgdGhpcyBicmFuY2ggb3IgbWFzdGVyIGR1ZSB0byB0aGUgbGFjawpv ZiBhIHJlY2VudCByZWxlYXNlLgpGdXJ0aGVybW9yZSwgZGlzdHJpYnV0aW9ucyBzdWNoIGFzIEFy Y2ggTGludXggYW5kIERlYmlhbiBTaWQgYXJlCmJ1aWxkaW5nIGZyb20gYSBjb21taXQgcmF0aGVy IHRoYW4gYSByZWxlYXNlLgoKaHR0cHM6Ly9naXRodWIuY29tL2FyY2hsaW51eC9zdm50b2dpdC1j b21tdW5pdHkvY29tbWl0LzExNDczYzNjNzg2NTkzYjI0MzhhODY1NTE5ZDQwN2M3YTg0Y2UwYTEK Cmh0dHBzOi8vc2Fsc2EuZGViaWFuLm9yZy9sdWEtdGVhbS9sdWFqaXQvLS9jb21taXQvZTA2Y2Jj NmQyYTYxYjI1MzA1NjIxNGY1ZWQzZjAzY2U2NjFlMzFmOQoKVGhlIEx1YUpJVCB1cHN0cmVhbSBt YWludGFpbmVyIGhhcyBkZWNsaW5lZCB0byBjdXQgYSByZWxlYXNlLCByZWFzb25pbmcKIlJlbGVh c2VzIGFyZSBhbiBhbnRpcXVhdGVkIGNvbmNlcHQiLgoKaHR0cHM6Ly9naXRodWIuY29tL0x1YUpJ VC9MdWFKSVQvaXNzdWVzLzY2NSNpc3N1ZWNvbW1lbnQtNzg0NDUyNTgzCgo8IS0tIFVuY29tbWVu dCByZWxldmFudCBzZWN0aW9ucyBhbmQgZGVsZXRlIG9wdGlvbnMgd2hpY2ggYXJlIG5vdCBhcHBs aWNhYmxlIC0tPgoKIyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzCi0gSSB0ZXN0ZWQgdGhlIGNoYW5n ZXMgaW4gdGhpcyBQUjogKipZRVMqKiwgb24geDg2XzY0IGFuZCBhYXJjaDY0CgoKQSBwYXRjaCBm aWxlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxs LzM2NzkwLnBhdGNoIGlzIGF0dGFjaGVk --===============5296518238409320775== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-luajit-36790.patch" RnJvbSBkZDA1MmE0MDkyZGRhYWQxYWI0NDdlOGMwMTU4M2FiYTJhNTliY2VhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDYW1lcm9uIE5lbW8gPGNuZW1vQHR1dGFub3RhLmNvbT4KRGF0 ZTogV2VkLCAyMCBBcHIgMjAyMiAxNjo0MzozMSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEx1YUpJ VDogdXBkYXRlIHRvIGdpdCB2Mi4xIGJyYW5jaAoKVGhlIEx1YUpJVCBtYWludGFpbmVyIGhhcyBu b3QgcHVibGlzaGVkIGEgbmV3IHZlcnNpb24gaW4gNSB5ZWFycywgYnV0IGhlCmhhcyBzdGVhZGls eSBhZGRlZCBjb21taXRzIHRvIHRoZSAiMi4xIiBicmFuY2gsIGxpbmtlZCBiZWxvdy4KCmh0dHBz Oi8vcmVwby5vci5jei9sdWFqaXQtMi4wLmdpdC9zaG9ydGxvZy9yZWZzL2hlYWRzL3YyLjEKClBy b2plY3RzIGxpa2UgbmVvdmltIGJ1aWxkIGFnYWluc3QgdGhpcyBicmFuY2ggb3IgbWFzdGVyIGR1 ZSB0byB0aGUgbGFjawpvZiBhIHJlY2VudCByZWxlYXNlLgpGdXJ0aGVybW9yZSwgZGlzdHJpYnV0 aW9ucyBzdWNoIGFzIEFyY2ggTGludXggYW5kIERlYmlhbiBTaWQgYXJlCmJ1aWxkaW5nIGZyb20g YSBjb21taXQgcmF0aGVyIHRoYW4gYSByZWxlYXNlLgoKaHR0cHM6Ly9naXRodWIuY29tL2FyY2hs aW51eC9zdm50b2dpdC1jb21tdW5pdHkvY29tbWl0LzExNDczYzNjNzg2NTkzYjI0MzhhODY1NTE5 ZDQwN2M3YTg0Y2UwYTEKCmh0dHBzOi8vc2Fsc2EuZGViaWFuLm9yZy9sdWEtdGVhbS9sdWFqaXQv LS9jb21taXQvZTA2Y2JjNmQyYTYxYjI1MzA1NjIxNGY1ZWQzZjAzY2U2NjFlMzFmOQoKVGhlIEx1 YUpJVCB1cHN0cmVhbSBtYWludGFpbmVyIGhhcyBkZWNsaW5lZCB0byBjdXQgYSByZWxlYXNlLCBy ZWFzb25pbmcKIlJlbGVhc2VzIGFyZSBhbiBhbnRpcXVhdGVkIGNvbmNlcHQiLgoKaHR0cHM6Ly9n aXRodWIuY29tL0x1YUpJVC9MdWFKSVQvaXNzdWVzLzY2NSNpc3N1ZWNvbW1lbnQtNzg0NDUyNTgz Ci0tLQogLi4uX1ZFUlNJT05fU1lNLXRoYXQtY2hhbmdlcy1BQkktb24tZXYucGF0Y2h9IHwgIDE2 ICstCiAuLi4vYWFyY2g2NC1GaXgtZXhpdC1zdHViLXBhdGNoaW5nLnBhdGNoICAgICAgfCAyMzEg LS0tLS0tLQogLi4uL2FhcmNoNjQtcmVnaXN0ZXItYWxsb2NhdGlvbi1idWctZml4LnBhdGNoIHwg IDI5IC0KIC4uLjFhYmVjNTQyZTZmOTg1MWZmMjM2OGU3ZjE5NmI2MzgyYTQ0Yy5wYXRjaCB8IDU2 MiAtLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvTHVhSklUL3BhdGNoZXMvZml4LWJjc2F2ZS1w cGM2NC5wYXRjaCB8ICA0NCArLQogLi4uL3BhdGNoZXMvdW5wb2xsdXRlLWdsb2JhbC1uYW1lc3Bh Y2UucGF0Y2ggIHwgIDIxIC0KIHNyY3BrZ3MvTHVhSklUL3RlbXBsYXRlICAgICAgICAgICAgICAg ICAgICAgICB8ICAxMyArLQogNyBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCA4OTAg ZGVsZXRpb25zKC0pCiByZW5hbWUgc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy97Z2V0LXJpZC1vZi1s dWFqaXQtdmVyc2lvbi1zeW0ucGF0Y2ggPT4gMDAwMy1HZXQtcmlkLW9mLUxVQUpJVF9WRVJTSU9O X1NZTS10aGF0LWNoYW5nZXMtQUJJLW9uLWV2LnBhdGNofSAoODQlKQogZGVsZXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvTHVhSklUL3BhdGNoZXMvYWFyY2g2NC1GaXgtZXhpdC1zdHViLXBhdGNoaW5n LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9hYXJjaDY0 LXJlZ2lzdGVyLWFsbG9jYXRpb24tYnVnLWZpeC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvTHVhSklUL3BhdGNoZXMvZTlhZjFhYmVjNTQyZTZmOTg1MWZmMjM2OGU3ZjE5NmI2Mzgy YTQ0Yy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvTHVhSklUL3BhdGNoZXMvdW5w b2xsdXRlLWdsb2JhbC1uYW1lc3BhY2UucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL0x1YUpJ VC9wYXRjaGVzL2dldC1yaWQtb2YtbHVhaml0LXZlcnNpb24tc3ltLnBhdGNoIGIvc3JjcGtncy9M dWFKSVQvcGF0Y2hlcy8wMDAzLUdldC1yaWQtb2YtTFVBSklUX1ZFUlNJT05fU1lNLXRoYXQtY2hh bmdlcy1BQkktb24tZXYucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA4NCUKcmVuYW1lIGZyb20gc3Jj cGtncy9MdWFKSVQvcGF0Y2hlcy9nZXQtcmlkLW9mLWx1YWppdC12ZXJzaW9uLXN5bS5wYXRjaApy ZW5hbWUgdG8gc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy8wMDAzLUdldC1yaWQtb2YtTFVBSklUX1ZF UlNJT05fU1lNLXRoYXQtY2hhbmdlcy1BQkktb24tZXYucGF0Y2gKaW5kZXggNTllMWVlNzJmY2Ji Li43ZDAyODk2YTc4NDAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvTHVhSklUL3BhdGNoZXMvZ2V0LXJp ZC1vZi1sdWFqaXQtdmVyc2lvbi1zeW0ucGF0Y2gKKysrIGIvc3JjcGtncy9MdWFKSVQvcGF0Y2hl cy8wMDAzLUdldC1yaWQtb2YtTFVBSklUX1ZFUlNJT05fU1lNLXRoYXQtY2hhbmdlcy1BQkktb24t ZXYucGF0Y2gKQEAgLTgsNyArOCw3IEBAIFN1YmplY3Q6IEdldCByaWQgb2YgTFVBSklUX1ZFUlNJ T05fU1lNIHRoYXQgY2hhbmdlcyBBQkkgb24gZXZlcnkgcGF0Y2ggcmVsZWFzZQogIHNyYy9sdWFq aXQuaCAgICAgIHwgMyAtLS0KICAzIGZpbGVzIGNoYW5nZWQsIDEwIGRlbGV0aW9ucygtKQogCi1k aWZmIC0tZ2l0IHNyYy9sal9kaXNwYXRjaC5jIHNyYy9sal9kaXNwYXRjaC5jCitkaWZmIC0tZ2l0 IGEvc3JjL2xqX2Rpc3BhdGNoLmMgYi9zcmMvbGpfZGlzcGF0Y2guYwogaW5kZXggNWQ2Nzk1Zi4u ZTg2NWE3OCAxMDA2NDQKIC0tLSBhL3NyYy9sal9kaXNwYXRjaC5jCiArKysgYi9zcmMvbGpfZGlz cGF0Y2guYwpAQCAtMjQsMjAgKzI0LDIwIEBAIGluZGV4IDVkNjc5NWYuLmU4NjVhNzggMTAwNjQ0 CiAgLyogLS0gSG9va3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAgCiAgLyogVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2Fs bGVkIGFzeW5jaHJvbm91c2x5IChlLmcuIGR1cmluZyBhIHNpZ25hbCkuICovCi1kaWZmIC0tZ2l0 IHNyYy9sdWFqaXQuYyBzcmMvbHVhaml0LmMKK2RpZmYgLS1naXQgYS9zcmMvbHVhaml0LmMgYi9z cmMvbHVhaml0LmMKIGluZGV4IDFjYTI0MzAuLmNjZjQyNWUgMTAwNjQ0CiAtLS0gYS9zcmMvbHVh aml0LmMKICsrKyBiL3NyYy9sdWFqaXQuYwotQEAgLTUxNiw4ICs1MTYsNiBAQCBzdGF0aWMgaW50 IHBtYWluKGx1YV9TdGF0ZSAqTCkKK0BAIC01MTUsNyArNTE1LDYgQEAKKyAgIGludCBhcmduOwor ICAgaW50IGZsYWdzID0gMDsKICAgIGdsb2JhbEwgPSBMOwotICAgaWYgKGFyZ3ZbMF0gJiYgYXJn dlswXVswXSkgcHJvZ25hbWUgPSBhcmd2WzBdOwotIAogLSAgTFVBSklUX1ZFUlNJT05fU1lNKCk7 ICAvKiBMaW5rZXItZW5mb3JjZWQgdmVyc2lvbiBjaGVjay4gKi8KLS0KKyAKICAgIGFyZ24gPSBj b2xsZWN0YXJncyhhcmd2LCAmZmxhZ3MpOwogICAgaWYgKGFyZ24gPCAwKSB7ICAvKiBJbnZhbGlk IGFyZ3M/ICovCi0gICAgIHByaW50X3VzYWdlKCk7Ci1kaWZmIC0tZ2l0IHNyYy9sdWFqaXQuaCBz cmMvbHVhaml0LmgKKworZGlmZiAtLWdpdCBhL3NyYy9sdWFqaXQuaCBiL3NyYy9sdWFqaXQuaAog aW5kZXggNzA4YTVhMS4uMzVhZTAyYyAxMDA2NDQKIC0tLSBhL3NyYy9sdWFqaXQuaAogKysrIGIv c3JjL2x1YWppdC5oCmRpZmYgLS1naXQgYS9zcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2FhcmNoNjQt Rml4LWV4aXQtc3R1Yi1wYXRjaGluZy5wYXRjaCBiL3NyY3BrZ3MvTHVhSklUL3BhdGNoZXMvYWFy Y2g2NC1GaXgtZXhpdC1zdHViLXBhdGNoaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA0ODdhMWNkMWNhNzguLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL0x1YUpJVC9w YXRjaGVzL2FhcmNoNjQtRml4LWV4aXQtc3R1Yi1wYXRjaGluZy5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDIzMSArMCwwIEBACi1jb21taXQgOWRhMDY1MzUwOTJkNmQ5ZGVjNDQyNjQxYTI2YzY0 YmNlNTU3NDMyMgotQXV0aG9yOiBNaWtlIFBhbGwgPG1pa2U+Ci1EYXRlOiAgIFN1biBKdW4gMjQg MTQ6MDg6NTkgMjAxOCArMDIwMAotCi0gICAgQVJNNjQ6IEZpeCBleGl0IHN0dWIgcGF0Y2hpbmcu Ci0gICAgCi0gICAgQ29udHJpYnV0ZWQgYnkgSmF2aWVyIEd1ZXJyYSBHaXJhbGRlei4KLQotZGlm ZiAtLWdpdCBhL3NyYy9sal9hc21fYXJtNjQuaCBiL3NyYy9sal9hc21fYXJtNjQuaAotaW5kZXgg Y2JiMTg2ZDMuLmJhYWZhMjFhIDEwMDY0NAotLS0tIGEvc3JjL2xqX2FzbV9hcm02NC5oCi0rKysg Yi9zcmMvbGpfYXNtX2FybTY0LmgKLUBAIC01NiwxMSArNTYsMTEgQEAgc3RhdGljIHZvaWQgYXNt X2V4aXRzdHViX3NldHVwKEFTTVN0YXRlICphcywgRXhpdE5vIG5leGl0cykKLSAgICAgYXNtX21j bGltaXQoYXMpOwotICAgLyogMTogc3RyIGxyLFtzcF07IGJsIC0+dm1fZXhpdF9oYW5kbGVyOyBt b3Z6IHcwLHRyYWNlbm87IGJsIDwxOyBibCA8MTsgLi4uICovCi0gICBmb3IgKGkgPSBuZXhpdHMt MTsgKGludDMyX3QpaSA+PSAwOyBpLS0pCi0tICAgICotLW14cCA9IEE2NElfTEUoQTY0SV9CTHwo KC0zLWkpJjB4MDNmZmZmZmZ1KSk7Ci0tICAqLS1teHAgPSBBNjRJX0xFKEE2NElfTU9WWnd8QTY0 Rl9VMTYoYXMtPlQtPnRyYWNlbm8pKTsKLSsgICAgKi0tbXhwID0gQTY0SV9MRShBNjRJX0JMIHwg QTY0Rl9TMjYoLTMtaSkpOwotKyAgKi0tbXhwID0gQTY0SV9MRShBNjRJX01PVlp3IHwgQTY0Rl9V MTYoYXMtPlQtPnRyYWNlbm8pKTsKLSAgIG14cC0tOwotLSAgKm14cCA9IEE2NElfTEUoQTY0SV9C THwoKChNQ29kZSAqKSh2b2lkICopbGpfdm1fZXhpdF9oYW5kbGVyLW14cCkmMHgwM2ZmZmZmZnUp KTsKLS0gICotLW14cCA9IEE2NElfTEUoQTY0SV9TVFJ4fEE2NEZfRChSSURfTFIpfEE2NEZfTihS SURfU1ApKTsKLSsgICpteHAgPSBBNjRJX0xFKEE2NElfQkwgfCBBNjRGX1MyNigoKE1Db2RlICop KHZvaWQgKilsal92bV9leGl0X2hhbmRsZXItbXhwKSkpOwotKyAgKi0tbXhwID0gQTY0SV9MRShB NjRJX1NUUnggfCBBNjRGX0QoUklEX0xSKSB8IEE2NEZfTihSSURfU1ApKTsKLSAgIGFzLT5tY3Rv cCA9IG14cDsKLSB9Ci0gCi1AQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgdm9pZCBhc21fZ3VhcmRj YyhBU01TdGF0ZSAqYXMsIEE2NENDIGNjKQotICAgTUNvZGUgKnAgPSBhcy0+bWNwOwotICAgaWYg KExKX1VOTElLRUxZKHAgPT0gYXMtPmludm1jcCkpIHsKLSAgICAgYXMtPmxvb3BpbnYgPSAxOwot LSAgICAqcCA9IEE2NElfQiB8ICgodGFyZ2V0LXApICYgMHgwM2ZmZmZmZnUpOwotKyAgICAqcCA9 IEE2NElfQiB8IEE2NEZfUzI2KHRhcmdldC1wKTsKLSAgICAgZW1pdF9jb25kX2JyYW5jaChhcywg Y2NeMSwgcC0xKTsKLSAgICAgcmV0dXJuOwotICAgfQotQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGlj IHZvaWQgYXNtX2d1YXJkdG5iKEFTTVN0YXRlICphcywgQTY0SW5zIGFpLCBSZWcgciwgdWludDMy X3QgYml0KQotICAgTUNvZGUgKnAgPSBhcy0+bWNwOwotICAgaWYgKExKX1VOTElLRUxZKHAgPT0g YXMtPmludm1jcCkpIHsKLSAgICAgYXMtPmxvb3BpbnYgPSAxOwotLSAgICAqcCA9IEE2NElfQiB8 ICgodGFyZ2V0LXApICYgMHgwM2ZmZmZmZnUpOwotKyAgICAqcCA9IEE2NElfQiB8IEE2NEZfUzI2 KHRhcmdldC1wKTsKLSAgICAgZW1pdF90bmIoYXMsIGFpXjB4MDEwMDAwMDB1LCByLCBiaXQsIHAt MSk7Ci0gICAgIHJldHVybjsKLSAgIH0KLUBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIHZvaWQg YXNtX2d1YXJkY25iKEFTTVN0YXRlICphcywgQTY0SW5zIGFpLCBSZWcgcikKLSAgIE1Db2RlICpw ID0gYXMtPm1jcDsKLSAgIGlmIChMSl9VTkxJS0VMWShwID09IGFzLT5pbnZtY3ApKSB7Ci0gICAg IGFzLT5sb29waW52ID0gMTsKLS0gICAgKnAgPSBBNjRJX0IgfCAoKHRhcmdldC1wKSAmIDB4MDNm ZmZmZmZ1KTsKLSsgICAgKnAgPSBBNjRJX0IgfCBBNjRGX1MyNih0YXJnZXQtcCk7Ci0gICAgIGVt aXRfY25iKGFzLCBhaV4weDAxMDAwMDAwdSwgciwgcC0xKTsKLSAgICAgcmV0dXJuOwotICAgfQot QEAgLTE4NTAsNyArMTg1MCw3IEBAIHN0YXRpYyB2b2lkIGFzbV9sb29wX2ZpeHVwKEFTTVN0YXRl ICphcykKLSAgICAgcFstMl0gfD0gKCh1aW50MzJfdClkZWx0YSAmIG1hc2spIDw8IDU7Ci0gICB9 IGVsc2UgewotICAgICBwdHJkaWZmX3QgZGVsdGEgPSB0YXJnZXQgLSAocCAtIDEpOwotLSAgICBw Wy0xXSA9IEE2NElfQiB8ICgodWludDMyX3QpKGRlbHRhKSAmIDB4MDNmZmZmZmZ1KTsKLSsgICAg cFstMV0gPSBBNjRJX0IgfCBBNjRGX1MyNihkZWx0YSk7Ci0gICB9Ci0gfQotIAotQEAgLTE5MTks NyArMTkxOSw3IEBAIHN0YXRpYyB2b2lkIGFzbV90YWlsX2ZpeHVwKEFTTVN0YXRlICphcywgVHJh Y2VObyBsbmspCi0gICB9Ci0gICAvKiBQYXRjaCBleGl0IGJyYW5jaC4gKi8KLSAgIHRhcmdldCA9 IGxuayA/IHRyYWNlcmVmKGFzLT5KLCBsbmspLT5tY29kZSA6IChNQ29kZSAqKWxqX3ZtX2V4aXRf aW50ZXJwOwotLSAgcFstMV0gPSBBNjRJX0IgfCAoKCh0YXJnZXQtcCkrMSkmMHgwM2ZmZmZmZnUp OwotKyAgcFstMV0gPSBBNjRJX0IgfCBBNjRGX1MyNigodGFyZ2V0LXApKzEpOwotIH0KLSAKLSAv KiBQcmVwYXJlIHRhaWwgb2YgY29kZS4gKi8KLUBAIC0xOTgyLDQwICsxOTgyLDUwIEBAIHZvaWQg bGpfYXNtX3BhdGNoZXhpdChqaXRfU3RhdGUgKkosIEdDdHJhY2UgKlQsIEV4aXRObyBleGl0bm8s IE1Db2RlICp0YXJnZXQpCi0gewotICAgTUNvZGUgKnAgPSBULT5tY29kZTsKLSAgIE1Db2RlICpw ZSA9IChNQ29kZSAqKSgoY2hhciAqKXAgKyBULT5zem1jb2RlKTsKLS0gIE1Db2RlICpjc3RhcnQg PSBOVUxMLCAqY2VuZCA9IHA7Ci0rICBNQ29kZSAqY3N0YXJ0ID0gTlVMTDsKLSAgIE1Db2RlICpt Y2FyZWEgPSBsal9tY29kZV9wYXRjaChKLCBwLCAwKTsKLSAgIE1Db2RlICpweCA9IGV4aXRzdHVi X3RyYWNlX2FkZHIoVCwgZXhpdG5vKTsKLSsgIC8qIE5vdGU6IHRoaXMgYXNzdW1lcyBhIHRyYWNl IGV4aXQgaXMgb25seSBldmVyIHBhdGNoZWQgb25jZS4gKi8KLSAgIGZvciAoOyBwIDwgcGU7IHAr KykgewotICAgICAvKiBMb29rIGZvciBleGl0c3R1YiBicmFuY2gsIHJlcGxhY2Ugd2l0aCBicmFu Y2ggdG8gdGFyZ2V0LiAqLwotKyAgICBwdHJkaWZmX3QgZGVsdGEgPSB0YXJnZXQgLSBwOwotICAg ICBNQ29kZSBpbnMgPSBBNjRJX0xFKCpwKTsKLSAgICAgaWYgKChpbnMgJiAweGZmMDAwMDAwdSkg PT0gMHg1NDAwMDAwMHUgJiYKLSAJKChpbnMgXiAoKHB4LXApPDw1KSkgJiAweDAwZmZmZmUwdSkg PT0gMCkgewotLSAgICAgIC8qIFBhdGNoIGJjYyBleGl0c3R1Yi4gKi8KLS0gICAgICAqcCA9IEE2 NElfTEUoKGlucyAmIDB4ZmYwMDAwMWZ1KSB8ICgoKHRhcmdldC1wKTw8NSkgJiAweDAwZmZmZmUw dSkpOwotLSAgICAgIGNlbmQgPSBwKzE7Ci0tICAgICAgaWYgKCFjc3RhcnQpIGNzdGFydCA9IHA7 Ci0rICAgICAgLyogUGF0Y2ggYmNjLCBpZiB3aXRoaW4gcmFuZ2UuICovCi0rICAgICAgaWYgKEE2 NEZfU19PSyhkZWx0YSwgMTkpKSB7Ci0rCSpwID0gQTY0SV9MRSgoaW5zICYgMHhmZjAwMDAxZnUp IHwgQTY0Rl9TMTkoZGVsdGEpKTsKLSsJaWYgKCFjc3RhcnQpIGNzdGFydCA9IHA7Ci0rICAgICAg fQotICAgICB9IGVsc2UgaWYgKChpbnMgJiAweGZjMDAwMDAwdSkgPT0gMHgxNDAwMDAwMHUgJiYK LSAJICAgICAgICgoaW5zIF4gKHB4LXApKSAmIDB4MDNmZmZmZmZ1KSA9PSAwKSB7Ci0tICAgICAg LyogUGF0Y2ggYiBleGl0c3R1Yi4gKi8KLS0gICAgICAqcCA9IEE2NElfTEUoKGlucyAmIDB4ZmMw MDAwMDB1KSB8ICgodGFyZ2V0LXApICYgMHgwM2ZmZmZmZnUpKTsKLS0gICAgICBjZW5kID0gcCsx OwotKyAgICAgIC8qIFBhdGNoIGIuICovCi0rICAgICAgbHVhX2Fzc2VydChBNjRGX1NfT0soZGVs dGEsIDI2KSk7Ci0rICAgICAgKnAgPSBBNjRJX0xFKChpbnMgJiAweGZjMDAwMDAwdSkgfCBBNjRG X1MyNihkZWx0YSkpOwotICAgICAgIGlmICghY3N0YXJ0KSBjc3RhcnQgPSBwOwotICAgICB9IGVs c2UgaWYgKChpbnMgJiAweDdlMDAwMDAwdSkgPT0gMHgzNDAwMDAwMHUgJiYKLSAJICAgICAgICgo aW5zIF4gKChweC1wKTw8NSkpICYgMHgwMGZmZmZlMHUpID09IDApIHsKLS0gICAgICAvKiBQYXRj aCBjYnovY2JueiBleGl0c3R1Yi4gKi8KLS0gICAgICAqcCA9IEE2NElfTEUoKGlucyAmIDB4ZmYw MDAwMWYpIHwgKCgodGFyZ2V0LXApPDw1KSAmIDB4MDBmZmZmZTB1KSk7Ci0tICAgICAgY2VuZCA9 IHArMTsKLS0gICAgICBpZiAoIWNzdGFydCkgY3N0YXJ0ID0gcDsKLSsgICAgICAvKiBQYXRjaCBj YnovY2JueiwgaWYgd2l0aGluIHJhbmdlLiAqLwotKyAgICAgIGlmIChBNjRGX1NfT0soZGVsdGEs IDE5KSkgewotKwkqcCA9IEE2NElfTEUoKGlucyAmIDB4ZmYwMDAwMWZ1KSB8IEE2NEZfUzE5KGRl bHRhKSk7Ci0rCWlmICghY3N0YXJ0KSBjc3RhcnQgPSBwOwotKyAgICAgIH0KLSAgICAgfSBlbHNl IGlmICgoaW5zICYgMHg3ZTAwMDAwMHUpID09IDB4MzYwMDAwMDB1ICYmCi0gCSAgICAgICAoKGlu cyBeICgocHgtcCk8PDUpKSAmIDB4MDAwN2ZmZTB1KSA9PSAwKSB7Ci0tICAgICAgLyogUGF0Y2gg dGJ6L3RibnogZXhpdHN0dWIuICovCi0tICAgICAgKnAgPSBBNjRJX0xFKChpbnMgJiAweGZmZjgw MDFmdSkgfCAoKCh0YXJnZXQtcCk8PDUpICYgMHgwMDA3ZmZlMHUpKTsKLS0gICAgICBjZW5kID0g cCsxOwotLSAgICAgIGlmICghY3N0YXJ0KSBjc3RhcnQgPSBwOwotKyAgICAgIC8qIFBhdGNoIHRi ei90Ym56LCBpZiB3aXRoaW4gcmFuZ2UuICovCi0rICAgICAgaWYgKEE2NEZfU19PSyhkZWx0YSwg MTQpKSB7Ci0rCSpwID0gQTY0SV9MRSgoaW5zICYgMHhmZmY4MDAxZnUpIHwgQTY0Rl9TMTQoZGVs dGEpKTsKLSsJaWYgKCFjc3RhcnQpIGNzdGFydCA9IHA7Ci0rICAgICAgfQotICAgICB9Ci0gICB9 Ci0tICBsdWFfYXNzZXJ0KGNzdGFydCAhPSBOVUxMKTsKLS0gIGxqX21jb2RlX3N5bmMoY3N0YXJ0 LCBjZW5kKTsKLSsgIHsgIC8qIEFsd2F5cyBwYXRjaCBsb25nLXJhbmdlIGJyYW5jaCBpbiBleGl0 IHN0dWIgaXRzZWxmLiAqLwotKyAgICBwdHJkaWZmX3QgZGVsdGEgPSB0YXJnZXQgLSBweDsKLSsg ICAgbHVhX2Fzc2VydChBNjRGX1NfT0soZGVsdGEsIDI2KSk7Ci0rICAgICpweCA9IEE2NElfQiB8 IEE2NEZfUzI2KGRlbHRhKTsKLSsgICAgaWYgKCFjc3RhcnQpIGNzdGFydCA9IHB4OwotKyAgfQot KyAgbGpfbWNvZGVfc3luYyhjc3RhcnQsIHB4KzEpOwotICAgbGpfbWNvZGVfcGF0Y2goSiwgbWNh cmVhLCAxKTsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2xqX2VtaXRfYXJtNjQuaCBiL3NyYy9s al9lbWl0X2FybTY0LmgKLWluZGV4IDZkYTRjN2Q0Li4xMDAxYjFkOCAxMDA2NDQKLS0tLSBhL3Ny Yy9sal9lbWl0X2FybTY0LmgKLSsrKyBiL3NyYy9sal9lbWl0X2FybTY0LmgKLUBAIC0yNDEsNyAr MjQxLDcgQEAgc3RhdGljIHZvaWQgZW1pdF9sb2FkayhBU01TdGF0ZSAqYXMsIFJlZyByZCwgdWlu dDY0X3QgdTY0LCBpbnQgaXM2NCkKLSAjZGVmaW5lIG1jcG9mcyhhcywgaykgXAotICAgKChpbnRw dHJfdCkoKHVpbnRwdHJfdCkoaykgLSAodWludHB0cl90KShhcy0+bWNwIC0gMSkpKQotICNkZWZp bmUgY2hlY2ttY3BvZnMoYXMsIGspIFwKLS0gICgoKChtY3BvZnMoYXMsIGspPj4yKSArIDB4MDAw NDAwMDApID4+IDE5KSA9PSAwKQotKyAgKEE2NEZfU19PSyhtY3BvZnMoYXMsIGspPj4yLCAxOSkp Ci0gCi0gc3RhdGljIFJlZyByYV9hbGxvY2soQVNNU3RhdGUgKmFzLCBpbnRwdHJfdCBrLCBSZWdT ZXQgYWxsb3cpOwotIAotQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X2NvbmRf YnJhbmNoKEFTTVN0YXRlICphcywgQTY0Q0MgY29uZCwgTUNvZGUgKnRhcmdldCkKLSB7Ci0gICBN Q29kZSAqcCA9IC0tYXMtPm1jcDsKLSAgIHB0cmRpZmZfdCBkZWx0YSA9IHRhcmdldCAtIHA7Ci0t ICBsdWFfYXNzZXJ0KCgoZGVsdGEgKyAweDQwMDAwKSA+PiAxOSkgPT0gMCk7Ci0rICBsdWFfYXNz ZXJ0KEE2NEZfU19PSyhkZWx0YSwgMTkpKTsKLSAgICpwID0gQTY0SV9CQ0MgfCBBNjRGX1MxOShk ZWx0YSkgfCBjb25kOwotIH0KLSAKLUBAIC0zMjAsMjQgKzMyMCwyNCBAQCBzdGF0aWMgdm9pZCBl bWl0X2JyYW5jaChBU01TdGF0ZSAqYXMsIEE2NElucyBhaSwgTUNvZGUgKnRhcmdldCkKLSB7Ci0g ICBNQ29kZSAqcCA9IC0tYXMtPm1jcDsKLSAgIHB0cmRpZmZfdCBkZWx0YSA9IHRhcmdldCAtIHA7 Ci0tICBsdWFfYXNzZXJ0KCgoZGVsdGEgKyAweDAyMDAwMDAwKSA+PiAyNikgPT0gMCk7Ci0tICAq cCA9IGFpIHwgKCh1aW50MzJfdClkZWx0YSAmIDB4MDNmZmZmZmZ1KTsKLSsgIGx1YV9hc3NlcnQo QTY0Rl9TX09LKGRlbHRhLCAyNikpOwotKyAgKnAgPSBhaSB8IEE2NEZfUzI2KGRlbHRhKTsKLSB9 Ci0gCi0gc3RhdGljIHZvaWQgZW1pdF90bmIoQVNNU3RhdGUgKmFzLCBBNjRJbnMgYWksIFJlZyBy LCB1aW50MzJfdCBiaXQsIE1Db2RlICp0YXJnZXQpCi0gewotICAgTUNvZGUgKnAgPSAtLWFzLT5t Y3A7Ci0gICBwdHJkaWZmX3QgZGVsdGEgPSB0YXJnZXQgLSBwOwotLSAgbHVhX2Fzc2VydChiaXQg PCA2MyAmJiAoKGRlbHRhICsgMHgyMDAwKSA+PiAxNCkgPT0gMCk7Ci0rICBsdWFfYXNzZXJ0KGJp dCA8IDYzICYmIEE2NEZfU19PSyhkZWx0YSwgMTQpKTsKLSAgIGlmIChiaXQgPiAzMSkgYWkgfD0g QTY0SV9YOwotLSAgKnAgPSBhaSB8IEE2NEZfQklUKGJpdCAmIDMxKSB8IEE2NEZfUzE0KCh1aW50 MzJfdClkZWx0YSAmIDB4M2ZmZnUpIHwgcjsKLSsgICpwID0gYWkgfCBBNjRGX0JJVChiaXQgJiAz MSkgfCBBNjRGX1MxNChkZWx0YSkgfCByOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBlbWl0X2NuYihB U01TdGF0ZSAqYXMsIEE2NElucyBhaSwgUmVnIHIsIE1Db2RlICp0YXJnZXQpCi0gewotICAgTUNv ZGUgKnAgPSAtLWFzLT5tY3A7Ci0gICBwdHJkaWZmX3QgZGVsdGEgPSB0YXJnZXQgLSBwOwotLSAg bHVhX2Fzc2VydCgoKGRlbHRhICsgMHg0MDAwMCkgPj4gMTkpID09IDApOwotKyAgbHVhX2Fzc2Vy dChBNjRGX1NfT0soZGVsdGEsIDE5KSk7Ci0gICAqcCA9IGFpIHwgQTY0Rl9TMTkoZGVsdGEpIHwg cjsKLSB9Ci0gCi1AQCAtMzQ3LDggKzM0Nyw4IEBAIHN0YXRpYyB2b2lkIGVtaXRfY2FsbChBU01T dGF0ZSAqYXMsIHZvaWQgKnRhcmdldCkKLSB7Ci0gICBNQ29kZSAqcCA9IC0tYXMtPm1jcDsKLSAg IHB0cmRpZmZfdCBkZWx0YSA9IChjaGFyICopdGFyZ2V0IC0gKGNoYXIgKilwOwotLSAgaWYgKCgo KGRlbHRhPj4yKSArIDB4MDIwMDAwMDApID4+IDI2KSA9PSAwKSB7Ci0tICAgICpwID0gQTY0SV9C TCB8ICgodWludDMyX3QpKGRlbHRhPj4yKSAmIDB4MDNmZmZmZmZ1KTsKLSsgIGlmIChBNjRGX1Nf T0soZGVsdGE+PjIsIDI2KSkgewotKyAgICAqcCA9IEE2NElfQkwgfCBBNjRGX1MyNihkZWx0YT4+ Mik7Ci0gICB9IGVsc2UgeyAgLyogVGFyZ2V0IG91dCBvZiByYW5nZTogbmVlZCBpbmRpcmVjdCBj YWxsLiBCdXQgZG9uJ3QgdXNlIFIwLVI3LiAqLwotICAgICBSZWcgciA9IHJhX2FsbG9jayhhcywg aTY0cHRyKHRhcmdldCksCi0gCQkgICAgICBSU0VUX1JBTkdFKFJJRF9YOCwgUklEX01BWF9HUFIp LVJTRVRfRklYRUQpOwotZGlmZiAtLWdpdCBhL3NyYy9sal90YXJnZXRfYXJtNjQuaCBiL3NyYy9s al90YXJnZXRfYXJtNjQuaAotaW5kZXggNTIwMDIzYWUuLmEyMDdhMmJhIDEwMDY0NAotLS0tIGEv c3JjL2xqX3RhcmdldF9hcm02NC5oCi0rKysgYi9zcmMvbGpfdGFyZ2V0X2FybTY0LmgKLUBAIC0x MzIsOSArMTMyLDkgQEAgc3RhdGljIExKX0FJTkxJTkUgdWludDMyX3QgKmV4aXRzdHViX3RyYWNl X2FkZHJfKHVpbnQzMl90ICpwLCB1aW50MzJfdCBleGl0bm8pCi0gI2RlZmluZSBBNjRGX0lNTVIo eCkJKCh4KSA8PCAxNikKLSAjZGVmaW5lIEE2NEZfVTE2KHgpCSgoeCkgPDwgNSkKLSAjZGVmaW5l IEE2NEZfVTEyKHgpCSgoeCkgPDwgMTApCi0tI2RlZmluZSBBNjRGX1MyNih4KQkoeCkKLSsjZGVm aW5lIEE2NEZfUzI2KHgpCSgoKHVpbnQzMl90KSh4KSAmIDB4MDNmZmZmZmZ1KSkKLSAjZGVmaW5l IEE2NEZfUzE5KHgpCSgoKHVpbnQzMl90KSh4KSAmIDB4N2ZmZmZ1KSA8PCA1KQotLSNkZWZpbmUg QTY0Rl9TMTQoeCkJKCh4KSA8PCA1KQotKyNkZWZpbmUgQTY0Rl9TMTQoeCkJKCgodWludDMyX3Qp KHgpICYgMHgzZmZmdSkgPDwgNSkKLSAjZGVmaW5lIEE2NEZfUzkoeCkJKCh4KSA8PCAxMikKLSAj ZGVmaW5lIEE2NEZfQklUKHgpCSgoeCkgPDwgMTkpCi0gI2RlZmluZSBBNjRGX1NIKHNoLCB4KQko KChzaCkgPDwgMjIpIHwgKCh4KSA8PCAxMCkpCi1AQCAtMTQ1LDYgKzE0NSw5IEBAIHN0YXRpYyBM Sl9BSU5MSU5FIHVpbnQzMl90ICpleGl0c3R1Yl90cmFjZV9hZGRyXyh1aW50MzJfdCAqcCwgdWlu dDMyX3QgZXhpdG5vKQotICNkZWZpbmUgQTY0Rl9MU0wxNih4KQkoKCh4KSAvIDE2KSA8PCAyMSkK LSAjZGVmaW5lIEE2NEZfQlNIKHNoKQkoKHNoKSA8PCAxMCkKLSAKLSsvKiBDaGVjayBmb3IgdmFs aWQgZmllbGQgcmFuZ2UuICovCi0rI2RlZmluZSBBNjRGX1NfT0soeCwgYikJKCgoKHgpICsgKDEg PDwgKGItMSkpKSA+PiAoYikpID09IDApCi0rCi0gdHlwZWRlZiBlbnVtIEE2NElucyB7Ci0gICBB NjRJX1MgPSAweDIwMDAwMDAwLAotICAgQTY0SV9YID0gMHg4MDAwMDAwMCwKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvTHVhSklUL3BhdGNoZXMvYWFyY2g2NC1yZWdpc3Rlci1hbGxvY2F0aW9uLWJ1Zy1m aXgucGF0Y2ggYi9zcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2FhcmNoNjQtcmVnaXN0ZXItYWxsb2Nh dGlvbi1idWctZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzAyNjQ3 ODY3NTUuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2FhcmNoNjQt cmVnaXN0ZXItYWxsb2NhdGlvbi1idWctZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkg KzAsMCBAQAotRnJvbTogSmFzb24gVGVwbGl0eiA8amFzb25AdGVuc3lyLmNvbT4KLURhdGU6IE1v biwgOSBPY3QgMjAxNyAyMzowMzowOSArMDAwMAotU3ViamVjdDogRml4IHJlZ2lzdGVyIGFsbG9j YXRpb24gYnVnIGluIGFybTY0Ci0KLS0tLQotIHNyYy9sal9hc21fYXJtNjQuaCB8IDMgKy0tCi0g MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0t Z2l0IHNyYy9sal9hc21fYXJtNjQuaCBzcmMvbGpfYXNtX2FybTY0LmgKLWluZGV4IDhmZDkyZTcu LjU0OWY4YTYgMTAwNjQ0Ci0tLS0gYS9zcmMvbGpfYXNtX2FybTY0LmgKLSsrKyBiL3NyYy9sal9h c21fYXJtNjQuaAotQEAgLTg3MSw3ICs4NzEsNyBAQCBzdGF0aWMgdm9pZCBhc21faHJlZmsoQVNN U3RhdGUgKmFzLCBJUklucyAqaXIpCi0gICBpbnQgYmlnb2ZzID0gIWVtaXRfY2hlY2tvZnMoQTY0 SV9MRFJ4LCBvZnMpOwotICAgUmVnU2V0IGFsbG93ID0gUlNFVF9HUFI7Ci0gICBSZWcgZGVzdCA9 IChyYV91c2VkKGlyKSB8fCBiaWdvZnMpID8gcmFfZGVzdChhcywgaXIsIFJTRVRfR1BSKSA6IFJJ RF9OT05FOwotLSAgUmVnIG5vZGUgPSByYV9hbGxvYzEoYXMsIGlyLT5vcDEsIGFsbG93KTsKLSsg IFJlZyBub2RlID0gcmFfYWxsb2MxKGFzLCBpci0+b3AxLCByYV9oYXNyZWcoZGVzdCkgPyByc2V0 X2NsZWFyKGFsbG93LCBkZXN0KSA6IGFsbG93KTsKLSAgIFJlZyBrZXkgPSByYV9zY3JhdGNoKGFz LCByc2V0X2NsZWFyKGFsbG93LCBub2RlKSk7Ci0gICBSZWcgaWR4ID0gbm9kZTsKLSAgIHVpbnQ2 NF90IGs7Ci1AQCAtODc5LDcgKzg3OSw2IEBAIHN0YXRpYyB2b2lkIGFzbV9ocmVmayhBU01TdGF0 ZSAqYXMsIElSSW5zICppcikKLSAgIHJzZXRfY2xlYXIoYWxsb3csIGtleSk7Ci0gICBpZiAoYmln b2ZzKSB7Ci0gICAgIGlkeCA9IGRlc3Q7Ci0tICAgIHJzZXRfY2xlYXIoYWxsb3csIGRlc3QpOwot ICAgICBrb2ZzID0gKGludDMyX3Qpb2Zmc2V0b2YoTm9kZSwga2V5KTsKLSAgIH0gZWxzZSBpZiAo cmFfaGFzcmVnKGRlc3QpKSB7Ci0gICAgIGVtaXRfb3BrKGFzLCBBNjRJX0FERHgsIGRlc3QsIG5v ZGUsIG9mcywgYWxsb3cpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9lOWFm MWFiZWM1NDJlNmY5ODUxZmYyMzY4ZTdmMTk2YjYzODJhNDRjLnBhdGNoIGIvc3JjcGtncy9MdWFK SVQvcGF0Y2hlcy9lOWFmMWFiZWM1NDJlNmY5ODUxZmYyMzY4ZTdmMTk2YjYzODJhNDRjLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjE3ODY2YzM5MmMuLjAwMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2U5YWYxYWJlYzU0MmU2Zjk4NTFmZjIzNjhl N2YxOTZiNjM4MmE0NGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NjIgKzAsMCBAQAotRnJv bSBlOWFmMWFiZWM1NDJlNmY5ODUxZmYyMzY4ZTdmMTk2YjYzODJhNDRjIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQotRnJvbTogTWlrZSBQYWxsIDxtaWtlPgotRGF0ZTogV2VkLCAzMCBTZXAgMjAy MCAwMTozMToyNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgZnVsbC1y YW5nZSA2NCBiaXQgbGlnaHR1c2VyZGF0YS4KLQotLS0tCi0gZG9jL3N0YXR1cy5odG1sICAgfCAx MSAtLS0tLS0tLS0KLSBzcmMvaml0L2R1bXAubHVhICB8ICA0ICsrKy0KLSBzcmMvbGliX2RlYnVn LmMgICB8IDEyICsrKysrLS0tLS0KLSBzcmMvbGliX2ppdC5jICAgICB8IDE0ICsrKysrKy0tLS0t LQotIHNyYy9saWJfcGFja2FnZS5jIHwgIDggKysrLS0tLQotIHNyYy9saWJfc3RyaW5nLmMgIHwg IDIgKy0KLSBzcmMvbGpfYXBpLmMgICAgICB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLQotIHNyYy9sal9jY2FsbC5jICAgIHwgIDIgKy0KLSBzcmMvbGpfY2NvbnYuYyAgICB8 ICAyICstCi0gc3JjL2xqX2NyZWNvcmQuYyAgfCAgNiArKy0tLQotIHNyYy9sal9kaXNwYXRjaC5j IHwgIDIgKy0KLSBzcmMvbGpfaXIuYyAgICAgICB8ICA2ICsrKy0tCi0gc3JjL2xqX29iai5jICAg ICAgfCAgNSArKystLQotIHNyYy9sal9vYmouaCAgICAgIHwgNTcgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KLSBzcmMvbGpfc25hcC5jICAgICB8ICA5ICsr KysrKystCi0gc3JjL2xqX3N0YXRlLmMgICAgfCAgNiArKysrKwotIHNyYy9sal9zdHJmbXQuYyAg IHwgIDIgKy0KLSAxNyBmaWxlcyBjaGFuZ2VkLCAxMjEgaW5zZXJ0aW9ucygrKSwgNjcgZGVsZXRp b25zKC0pCi0KLSNkaWZmIC0tZ2l0IGEvZG9jL3N0YXR1cy5odG1sIGIvZG9jL3N0YXR1cy5odG1s Ci0jaW5kZXggMGFhZmUxM2EyLi5mZDBhZThiYWUgMTAwNjQ0Ci0jLS0tIGEvZG9jL3N0YXR1cy5o dG1sCi0jKysrIGIvZG9jL3N0YXR1cy5odG1sCi0jQEAgLTkxLDE3ICs5MSw2IEBAIDxoMj5DdXJy ZW50IFN0YXR1czwvaDI+Ci0jIDx0dD5sdWFfYXRwYW5pYzwvdHQ+IG9uIHg2NC4gVGhpcyBpc3N1 ZSB3aWxsIGJlIGZpeGVkIHdpdGggdGhlIG5ldwotIyBnYXJiYWdlIGNvbGxlY3Rvci4KLSMgPC9s aT4KLSMtPGxpPgotIy1MdWFKSVQgb24gNjQgYml0IHN5c3RlbXMgcHJvdmlkZXMgYSA8Yj5saW1p dGVkIHJhbmdlPC9iPiBvZiA0NyBiaXRzIGZvciB0aGUKLSMtPGI+bGVnYWN5IDx0dD5saWdodHVz ZXJkYXRhPC90dD48L2I+IGRhdGEgdHlwZS4KLSMtVGhpcyBpcyBvbmx5IHJlbGV2YW50IG9uIHg2 NCBzeXN0ZW1zIHdoaWNoIHVzZSB0aGUgbmVnYXRpdmUgcGFydCBvZiB0aGUKLSMtdmlydHVhbCBh ZGRyZXNzIHNwYWNlIGluIHVzZXIgbW9kZSwgZS5nLiBTb2xhcmlzL3g2NCwgYW5kIG9uIEFSTTY0 IHN5c3RlbXMKLSMtY29uZmlndXJlZCB3aXRoIGEgNDggYml0IG9yIDUyIGJpdCBWQS4KLSMtQXZv aWQgdXNpbmcgPHR0PmxpZ2h0dXNlcmRhdGE8L3R0PiB0byBob2xkIHBvaW50ZXJzIHRoYXQgbWF5 IHBvaW50IG91dHNpZGUKLSMtb2YgdGhhdCByYW5nZSwgZS5nLiB2YXJpYWJsZXMgb24gdGhlIHN0 YWNrLiBJbiBnZW5lcmFsLCBhdm9pZCB0aGlzIGRhdGEKLSMtdHlwZSBmb3IgbmV3IGNvZGUgYW5k IHJlcGxhY2UgaXQgd2l0aCAobXVjaCBtb3JlIHBlcmZvcm1hbnQpIEZGSSBiaW5kaW5ncy4KLSMt RkZJIGNkYXRhIHBvaW50ZXJzIGNhbiBhZGRyZXNzIHRoZSBmdWxsIDY0IGJpdCByYW5nZS4KLSMt PC9saT4KLSMgPC91bD4KLSMgPGJyIGNsYXNzPSJmbHVzaCI+Ci0jIDwvZGl2PgotSW5kZXg6IGx1 YWppdC9zcmMvaml0L2R1bXAubHVhCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbHVhaml0Lm9yaWcvc3JjL2pp dC9kdW1wLmx1YQotKysrIGx1YWppdC9zcmMvaml0L2R1bXAubHVhCi1AQCAtMzE1LDcgKzMxNSw5 IEBACi0gICBsb2NhbCB0biA9IHR5cGUoaykKLSAgIGxvY2FsIHMKLSAgIGlmIHRuID09ICJudW1i ZXIiIHRoZW4KLS0gICAgaWYgYmFuZChzbiBvciAwLCAweDMwMDAwKSB+PSAwIHRoZW4KLSsgICAg aWYgdCA8IDEyIHRoZW4KLSsgICAgICBzID0gayA9PSAwIGFuZCAiTlVMTCIgb3IgZm9ybWF0KCJb MHglMDh4XSIsIGspCi0rICAgIGVsc2VpZiBiYW5kKHNuIG9yIDAsIDB4MzAwMDApIH49IDAgdGhl bgotICAgICAgIHMgPSBiYW5kKHNuLCAweDIwMDAwKSB+PSAwIGFuZCAiY29udHBjIiBvciAiZnRz eiIKLSAgICAgZWxzZWlmIGsgPT0gMl41MisyXjUxIHRoZW4KLSAgICAgICBzID0gImJpYXMiCi1J bmRleDogbHVhaml0L3NyYy9saWJfZGVidWcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGx1YWppdC5vcmln L3NyYy9saWJfZGVidWcuYwotKysrIGx1YWppdC9zcmMvbGliX2RlYnVnLmMKLUBAIC0yMzEsOCAr MjMxLDggQEAKLSAgIGludDMyX3QgbiA9IGxqX2xpYl9jaGVja2ludChMLCAyKSAtIDE7Ci0gICBp ZiAoKHVpbnQzMl90KW4gPj0gZm4tPmwubnVwdmFsdWVzKQotICAgICBsal9lcnJfYXJnKEwsIDIs IExKX0VSUl9JRFhSTkcpOwotLSAgc2V0bGlnaHR1ZFYoTC0+dG9wLTEsIGlzbHVhZnVuYyhmbikg PyAodm9pZCAqKWdjcmVmKGZuLT5sLnV2cHRyW25dKSA6Ci0tCQkJCQkodm9pZCAqKSZmbi0+Yy51 cHZhbHVlW25dKTsKLSsgIGx1YV9wdXNobGlnaHR1c2VyZGF0YShMLCBpc2x1YWZ1bmMoZm4pID8g KHZvaWQgKilnY3JlZihmbi0+bC51dnB0cltuXSkgOgotKwkJCQkJICAgKHZvaWQgKikmZm4tPmMu dXB2YWx1ZVtuXSk7Ci0gICByZXR1cm4gMTsKLSB9Ci0gCi1AQCAtMjgzLDEzICsyODMsMTMgQEAK LSAKLSAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLSAKLS0jZGVmaW5lIEtFWV9IT09LCSgodm9pZCAq KTB4MzAwNCkKLSsjZGVmaW5lIEtFWV9IT09LCShVNjR4KDgwMDAwMDAwLDAwMDAwMDAwKXwnaCcp Ci0gCi0gc3RhdGljIHZvaWQgaG9va2YobHVhX1N0YXRlICpMLCBsdWFfRGVidWcgKmFyKQotIHsK LSAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBob29rbmFtZXNbXSA9Ci0gICAgIHsiY2FsbCIs ICJyZXR1cm4iLCAibGluZSIsICJjb3VudCIsICJ0YWlsIHJldHVybiJ9OwotLSAgbHVhX3B1c2hs aWdodHVzZXJkYXRhKEwsIEtFWV9IT09LKTsKLSsgIChMLT50b3ArKyktPnU2NCA9IEtFWV9IT09L OwotICAgbHVhX3Jhd2dldChMLCBMVUFfUkVHSVNUUllJTkRFWCk7Ci0gICBpZiAobHVhX2lzZnVu Y3Rpb24oTCwgLTEpKSB7Ci0gICAgIGx1YV9wdXNoc3RyaW5nKEwsIGhvb2tuYW1lc1soaW50KWFy LT5ldmVudF0pOwotQEAgLTMzNCw3ICszMzQsNyBAQAotICAgICBjb3VudCA9IGx1YUxfb3B0aW50 KEwsIGFyZyszLCAwKTsKLSAgICAgZnVuYyA9IGhvb2tmOyBtYXNrID0gbWFrZW1hc2soc21hc2ss IGNvdW50KTsKLSAgIH0KLS0gIGx1YV9wdXNobGlnaHR1c2VyZGF0YShMLCBLRVlfSE9PSyk7Ci0r ICAoTC0+dG9wKyspLT51NjQgPSBLRVlfSE9PSzsKLSAgIGx1YV9wdXNodmFsdWUoTCwgYXJnKzEp OwotICAgbHVhX3Jhd3NldChMLCBMVUFfUkVHSVNUUllJTkRFWCk7Ci0gICBsdWFfc2V0aG9vayhM LCBmdW5jLCBtYXNrLCBjb3VudCk7Ci1AQCAtMzQ5LDcgKzM0OSw3IEBACi0gICBpZiAoaG9vayAh PSBOVUxMICYmIGhvb2sgIT0gaG9va2YpIHsgIC8qIGV4dGVybmFsIGhvb2s/ICovCi0gICAgIGx1 YV9wdXNobGl0ZXJhbChMLCAiZXh0ZXJuYWwgaG9vayIpOwotICAgfSBlbHNlIHsKLS0gICAgbHVh X3B1c2hsaWdodHVzZXJkYXRhKEwsIEtFWV9IT09LKTsKLSsgICAgKEwtPnRvcCsrKS0+dTY0ID0g S0VZX0hPT0s7Ci0gICAgIGx1YV9yYXdnZXQoTCwgTFVBX1JFR0lTVFJZSU5ERVgpOyAgIC8qIGdl dCBob29rICovCi0gICB9Ci0gICBsdWFfcHVzaHN0cmluZyhMLCB1bm1ha2VtYXNrKG1hc2ssIGJ1 ZmYpKTsKLUluZGV4OiBsdWFqaXQvc3JjL2xpYl9qaXQuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGx1YWpp dC5vcmlnL3NyYy9saWJfaml0LmMKLSsrKyBsdWFqaXQvc3JjL2xpYl9qaXQuYwotQEAgLTU0MCwx NSArNTQwLDE1IEBACi0gCi0gLyogTm90IGxvYWRlZCBieSBkZWZhdWx0LCB1c2U6IGxvY2FsIHBy b2ZpbGUgPSByZXF1aXJlKCJqaXQucHJvZmlsZSIpICovCi0gCi0tc3RhdGljIGNvbnN0IGNoYXIg S0VZX1BST0ZJTEVfVEhSRUFEID0gJ3QnOwotLXN0YXRpYyBjb25zdCBjaGFyIEtFWV9QUk9GSUxF X0ZVTkMgPSAnZic7Ci0rI2RlZmluZSBLRVlfUFJPRklMRV9USFJFQUQJKFU2NHgoODAwMDAwMDAs MDAwMDAwMDApfCd0JykKLSsjZGVmaW5lIEtFWV9QUk9GSUxFX0ZVTkMJKFU2NHgoODAwMDAwMDAs MDAwMDAwMDApfCdmJykKLSAKLSBzdGF0aWMgdm9pZCBqaXRfcHJvZmlsZV9jYWxsYmFjayhsdWFf U3RhdGUgKkwyLCBsdWFfU3RhdGUgKkwsIGludCBzYW1wbGVzLAotIAkJCQkgaW50IHZtc3RhdGUp Ci0gewotICAgVFZhbHVlIGtleTsKLSAgIGNUVmFsdWUgKnR2OwotLSAgc2V0bGlnaHR1ZFYoJmtl eSwgKHZvaWQgKikmS0VZX1BST0ZJTEVfRlVOQyk7Ci0rICBrZXkudTY0ID0gS0VZX1BST0ZJTEVf RlVOQzsKLSAgIHR2ID0gbGpfdGFiX2dldChMLCB0YWJWKHJlZ2lzdHJ5KEwpKSwgJmtleSk7Ci0g ICBpZiAodHZpc2Z1bmModHYpKSB7Ci0gICAgIGNoYXIgdm1zdCA9IChjaGFyKXZtc3RhdGU7Ci1A QCAtNTc1LDkgKzU3NSw5IEBACi0gICBsdWFfU3RhdGUgKkwyID0gbHVhX25ld3RocmVhZChMKTsg IC8qIFRocmVhZCB0aGF0IHJ1bnMgcHJvZmlsZXIgY2FsbGJhY2suICovCi0gICBUVmFsdWUga2V5 OwotICAgLyogQW5jaG9yIHRocmVhZCBhbmQgZnVuY3Rpb24gaW4gcmVnaXN0cnkuICovCi0tICBz ZXRsaWdodHVkVigma2V5LCAodm9pZCAqKSZLRVlfUFJPRklMRV9USFJFQUQpOwotKyAga2V5LnU2 NCA9IEtFWV9QUk9GSUxFX1RIUkVBRDsKLSAgIHNldHRocmVhZFYoTCwgbGpfdGFiX3NldChMLCBy ZWdpc3RyeSwgJmtleSksIEwyKTsKLS0gIHNldGxpZ2h0dWRWKCZrZXksICh2b2lkICopJktFWV9Q Uk9GSUxFX0ZVTkMpOwotKyAga2V5LnU2NCA9IEtFWV9QUk9GSUxFX0ZVTkM7Ci0gICBzZXRmdW5j VihMLCBsal90YWJfc2V0KEwsIHJlZ2lzdHJ5LCAma2V5KSwgZnVuYyk7Ci0gICBsal9nY19hbnli YXJyaWVydChMLCByZWdpc3RyeSk7Ci0gICBsdWFKSVRfcHJvZmlsZV9zdGFydChMLCBtb2RlID8g c3RyZGF0YShtb2RlKSA6ICIiLAotQEAgLTU5Miw5ICs1OTIsOSBAQAotICAgVFZhbHVlIGtleTsK LSAgIGx1YUpJVF9wcm9maWxlX3N0b3AoTCk7Ci0gICByZWdpc3RyeSA9IHRhYlYocmVnaXN0cnko TCkpOwotLSAgc2V0bGlnaHR1ZFYoJmtleSwgKHZvaWQgKikmS0VZX1BST0ZJTEVfVEhSRUFEKTsK LSsgIGtleS51NjQgPSBLRVlfUFJPRklMRV9USFJFQUQ7Ci0gICBzZXRuaWxWKGxqX3RhYl9zZXQo TCwgcmVnaXN0cnksICZrZXkpKTsKLS0gIHNldGxpZ2h0dWRWKCZrZXksICh2b2lkICopJktFWV9Q Uk9GSUxFX0ZVTkMpOwotKyAga2V5LnU2NCA9IEtFWV9QUk9GSUxFX0ZVTkM7Ci0gICBzZXRuaWxW KGxqX3RhYl9zZXQoTCwgcmVnaXN0cnksICZrZXkpKTsKLSAgIGxqX2djX2FueWJhcnJpZXJ0KEws IHJlZ2lzdHJ5KTsKLSAgIHJldHVybiAwOwotSW5kZXg6IGx1YWppdC9zcmMvbGliX3BhY2thZ2Uu YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGx1YWppdC5vcmlnL3NyYy9saWJfcGFja2FnZS5jCi0rKysgbHVh aml0L3NyYy9saWJfcGFja2FnZS5jCi1AQCAtMzk4LDcgKzM5OCw3IEBACi0gCi0gLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICovCi0gCi0tI2RlZmluZSBzZW50aW5lbAkoKHZvaWQgKikweDQwMDQpCi0rI2Rl ZmluZSBLRVlfU0VOVElORUwJKFU2NHgoODAwMDAwMDAsMDAwMDAwMDApfCdzJykKLSAKLSBzdGF0 aWMgaW50IGxqX2NmX3BhY2thZ2VfcmVxdWlyZShsdWFfU3RhdGUgKkwpCi0gewotQEAgLTQwOCw3 ICs0MDgsNyBAQAotICAgbHVhX2dldGZpZWxkKEwsIExVQV9SRUdJU1RSWUlOREVYLCAiX0xPQURF RCIpOwotICAgbHVhX2dldGZpZWxkKEwsIDIsIG5hbWUpOwotICAgaWYgKGx1YV90b2Jvb2xlYW4o TCwgLTEpKSB7ICAvKiBpcyBpdCB0aGVyZT8gKi8KLS0gICAgaWYgKGx1YV90b3VzZXJkYXRhKEws IC0xKSA9PSBzZW50aW5lbCkgIC8qIGNoZWNrIGxvb3BzICovCi0rICAgIGlmICgoTC0+dG9wLTEp LT51NjQgPT0gS0VZX1NFTlRJTkVMKSAgLyogY2hlY2sgbG9vcHMgKi8KLSAgICAgICBsdWFMX2Vy cm9yKEwsICJsb29wIG9yIHByZXZpb3VzIGVycm9yIGxvYWRpbmcgbW9kdWxlICIgTFVBX1FTLCBu YW1lKTsKLSAgICAgcmV0dXJuIDE7ICAvKiBwYWNrYWdlIGlzIGFscmVhZHkgbG9hZGVkICovCi0g ICB9Ci1AQCAtNDMxLDE0ICs0MzEsMTQgQEAKLSAgICAgZWxzZQotICAgICAgIGx1YV9wb3AoTCwg MSk7Ci0gICB9Ci0tICBsdWFfcHVzaGxpZ2h0dXNlcmRhdGEoTCwgc2VudGluZWwpOwotKyAgKEwt PnRvcCsrKS0+dTY0ID0gS0VZX1NFTlRJTkVMOwotICAgbHVhX3NldGZpZWxkKEwsIDIsIG5hbWUp OyAgLyogX0xPQURFRFtuYW1lXSA9IHNlbnRpbmVsICovCi0gICBsdWFfcHVzaHN0cmluZyhMLCBu YW1lKTsgIC8qIHBhc3MgbmFtZSBhcyBhcmd1bWVudCB0byBtb2R1bGUgKi8KLSAgIGx1YV9jYWxs KEwsIDEsIDEpOyAgLyogcnVuIGxvYWRlZCBtb2R1bGUgKi8KLSAgIGlmICghbHVhX2lzbmlsKEws IC0xKSkgIC8qIG5vbi1uaWwgcmV0dXJuPyAqLwotICAgICBsdWFfc2V0ZmllbGQoTCwgMiwgbmFt ZSk7ICAvKiBfTE9BREVEW25hbWVdID0gcmV0dXJuZWQgdmFsdWUgKi8KLSAgIGx1YV9nZXRmaWVs ZChMLCAyLCBuYW1lKTsKLS0gIGlmIChsdWFfdG91c2VyZGF0YShMLCAtMSkgPT0gc2VudGluZWwp IHsgICAvKiBtb2R1bGUgZGlkIG5vdCBzZXQgYSB2YWx1ZT8gKi8KLSsgIGlmICgoTC0+dG9wLTEp LT51NjQgPT0gS0VZX1NFTlRJTkVMKSB7ICAgLyogbW9kdWxlIGRpZCBub3Qgc2V0IGEgdmFsdWU/ ICovCi0gICAgIGx1YV9wdXNoYm9vbGVhbihMLCAxKTsgIC8qIHVzZSB0cnVlIGFzIHJlc3VsdCAq LwotICAgICBsdWFfcHVzaHZhbHVlKEwsIC0xKTsgIC8qIGV4dHJhIGNvcHkgdG8gYmUgcmV0dXJu ZWQgKi8KLSAgICAgbHVhX3NldGZpZWxkKEwsIDIsIG5hbWUpOyAgLyogX0xPQURFRFtuYW1lXSA9 IHRydWUgKi8KLUluZGV4OiBsdWFqaXQvc3JjL2xpYl9zdHJpbmcuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGx1YWppdC5vcmlnL3NyYy9saWJfc3RyaW5nLmMKLSsrKyBsdWFqaXQvc3JjL2xpYl9zdHJpbmcu YwotQEAgLTcxNCw3ICs3MTQsNyBAQAotIAlsal9zdHJmbXRfcHV0ZmNoYXIoc2IsIHNmLCBsal9s aWJfY2hlY2tpbnQoTCwgYXJnKSk7Ci0gCWJyZWFrOwotICAgICAgIGNhc2UgU1RSRk1UX1BUUjog IC8qIE5vIGZvcm1hdHRpbmcuICovCi0tCWxqX3N0cmZtdF9wdXRwdHIoc2IsIGxqX29ial9wdHIo TC0+YmFzZSthcmctMSkpOwotKwlsal9zdHJmbXRfcHV0cHRyKHNiLCBsal9vYmpfcHRyKEcoTCks IEwtPmJhc2UrYXJnLTEpKTsKLSAJYnJlYWs7Ci0gICAgICAgZGVmYXVsdDoKLSAJbHVhX2Fzc2Vy dCgwKTsKLUluZGV4OiBsdWFqaXQvc3JjL2xqX2FwaS5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbHVhaml0 Lm9yaWcvc3JjL2xqX2FwaS5jCi0rKysgbHVhaml0L3NyYy9sal9hcGkuYwotQEAgLTU5NSw3ICs1 OTUsNyBAQAotICAgaWYgKHR2aXN1ZGF0YShvKSkKLSAgICAgcmV0dXJuIHVkZGF0YSh1ZGF0YVYo bykpOwotICAgZWxzZSBpZiAodHZpc2xpZ2h0dWQobykpCi0tICAgIHJldHVybiBsaWdodHVkVihv KTsKLSsgICAgcmV0dXJuIGxpZ2h0dWRWKEcoTCksIG8pOwotICAgZWxzZQotICAgICByZXR1cm4g TlVMTDsKLSB9Ci1AQCAtNjA4LDcgKzYwOCw3IEBACi0gCi0gTFVBX0FQSSBjb25zdCB2b2lkICps dWFfdG9wb2ludGVyKGx1YV9TdGF0ZSAqTCwgaW50IGlkeCkKLSB7Ci0tICByZXR1cm4gbGpfb2Jq X3B0cihpbmRleDJhZHIoTCwgaWR4KSk7Ci0rICByZXR1cm4gbGpfb2JqX3B0cihHKEwpLCBpbmRl eDJhZHIoTCwgaWR4KSk7Ci0gfQotIAotIC8qIC0tIFN0YWNrIHNldHRlcnMgKG9iamVjdCBjcmVh dGlvbikgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotQEAgLTY5NCw5 ICs2OTQsMzggQEAKLSAgIGluY3JfdG9wKEwpOwotIH0KLSAKLSsjaWYgTEpfNjQKLStzdGF0aWMg dm9pZCAqbGlnaHR1ZF9pbnRlcm4obHVhX1N0YXRlICpMLCB2b2lkICpwKQotK3sKLSsgIGdsb2Jh bF9TdGF0ZSAqZyA9IEcoTCk7Ci0rICB1aW50NjRfdCB1ID0gKHVpbnQ2NF90KXA7Ci0rICB1aW50 MzJfdCB1cCA9IGxpZ2h0dWR1cCh1KTsKLSsgIHVpbnQzMl90ICpzZWdtYXAgPSBtcmVmKGctPmdj LmxpZ2h0dWRzZWcsIHVpbnQzMl90KTsKLSsgIE1TaXplIHNlZ251bSA9IGctPmdjLmxpZ2h0dWRu dW07Ci0rICBpZiAoc2VnbWFwKSB7Ci0rICAgIE1TaXplIHNlZzsKLSsgICAgZm9yIChzZWcgPSAw OyBzZWcgPD0gc2VnbnVtOyBzZWcrKykKLSsgICAgICBpZiAoc2VnbWFwW3NlZ10gPT0gdXApICAv KiBGYXN0IHBhdGguICovCi0rCXJldHVybiAodm9pZCAqKSgoKHVpbnQ2NF90KXNlZyA8PCBMSl9M SUdIVFVEX0JJVFNfTE8pIHwgbGlnaHR1ZGxvKHUpKTsKLSsgICAgc2VnbnVtKys7Ci0rICB9Ci0r ICBpZiAoISgoc2VnbnVtLTEpICYgc2VnbnVtKSAmJiBzZWdudW0gIT0gMSkgewotKyAgICBpZiAo c2VnbnVtID49ICgxIDw8IExKX0xJR0hUVURfQklUU19TRUcpKSBsal9lcnJfbXNnKEwsIExKX0VS Ul9CQURMVSk7Ci0rICAgIGxqX21lbV9yZWFsbG9jdmVjKEwsIHNlZ21hcCwgc2VnbnVtLCBzZWdu dW0gPyAyKnNlZ251bSA6IDJ1LCB1aW50MzJfdCk7Ci0rICAgIHNldG1yZWYoZy0+Z2MubGlnaHR1 ZHNlZywgc2VnbWFwKTsKLSsgIH0KLSsgIGctPmdjLmxpZ2h0dWRudW0gPSBzZWdudW07Ci0rICBz ZWdtYXBbc2VnbnVtXSA9IHVwOwotKyAgcmV0dXJuICh2b2lkICopKCgodWludDY0X3Qpc2VnbnVt IDw8IExKX0xJR0hUVURfQklUU19MTykgfCBsaWdodHVkbG8odSkpOwotK30KLSsjZW5kaWYKLSsK LSBMVUFfQVBJIHZvaWQgbHVhX3B1c2hsaWdodHVzZXJkYXRhKGx1YV9TdGF0ZSAqTCwgdm9pZCAq cCkKLSB7Ci0tICBzZXRsaWdodHVkVihMLT50b3AsIGNoZWNrbGlnaHR1ZHB0cihMLCBwKSk7Ci0r I2lmIExKXzY0Ci0rICBwID0gbGlnaHR1ZF9pbnRlcm4oTCwgcCk7Ci0rI2VuZGlmCi0rICBzZXRy YXdsaWdodHVkVihMLT50b3AsIHApOwotICAgaW5jcl90b3AoTCk7Ci0gfQotIAotQEAgLTExMzgs NyArMTE2NywxMCBAQAotICAgZm4tPmMuZiA9IGZ1bmM7Ci0gICBzZXRmdW5jVihMLCB0b3ArKywg Zm4pOwotICAgaWYgKExKX0ZSMikgc2V0bmlsVih0b3ArKyk7Ci0tICBzZXRsaWdodHVkVih0b3Ar KywgY2hlY2tsaWdodHVkcHRyKEwsIHVkKSk7Ci0rI2lmIExKXzY0Ci0rICB1ZCA9IGxpZ2h0dWRf aW50ZXJuKEwsIHVkKTsKLSsjZW5kaWYKLSsgIHNldHJhd2xpZ2h0dWRWKHRvcCsrLCB1ZCk7Ci0g ICBjZnJhbWVfbnJlcyhMLT5jZnJhbWUpID0gMSswOyAgLyogWmVybyByZXN1bHRzLiAqLwotICAg TC0+dG9wID0gdG9wOwotICAgcmV0dXJuIHRvcC0xOyAgLyogTm93IGNhbGwgdGhlIG5ld2x5IGFs bG9jYXRlZCBDIGZ1bmN0aW9uLiAqLwotSW5kZXg6IGx1YWppdC9zcmMvbGpfY2NhbGwuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGx1YWppdC5vcmlnL3NyYy9sal9jY2FsbC5jCi0rKysgbHVhaml0L3NyYy9s al9jY2FsbC5jCi1AQCAtMTMxNCw3ICsxMzE0LDcgQEAKLSAgICAgbGpfdm1fZmZpX2NhbGwoJmNj KTsKLSAgICAgaWYgKGN0cy0+Y2Iuc2xvdCAhPSB+MHUpIHsgIC8qIEJsYWNrbGlzdCBmdW5jdGlv biB0aGF0IGNhbGxlZCBhIGNhbGxiYWNrLiAqLwotICAgICAgIFRWYWx1ZSB0djsKLS0gICAgICBz ZXRsaWdodHVkVigmdHYsICh2b2lkICopY2MuZnVuYyk7Ci0rICAgICAgdHYudTY0ID0gKCh1aW50 cHRyX3QpKHZvaWQgKiljYy5mdW5jID4+IDIpIHwgVTY0eCg4MDAwMDAwMDAsIDAwMDAwMDAwKTsK LSAgICAgICBzZXRib29sVihsal90YWJfc2V0KEwsIGN0cy0+bWlzY21hcCwgJnR2KSwgMSk7Ci0g ICAgIH0KLSAgICAgY3QgPSAoQ1R5cGUgKikoKGludHB0cl90KWN0KyhpbnRwdHJfdCljdHMtPnRh Yik7ICAvKiBNYXkgYmUgcmVhbGxvY2F0ZWQuICovCi1JbmRleDogbHVhaml0L3NyYy9sal9jY29u di5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gbHVhaml0Lm9yaWcvc3JjL2xqX2Njb252LmMKLSsrKyBsdWFq aXQvc3JjL2xqX2Njb252LmMKLUBAIC02MTEsNyArNjExLDcgQEAKLSAgICAgaWYgKHVkLT51ZHR5 cGUgPT0gVURUWVBFX0lPX0ZJTEUpCi0gICAgICAgdG1wcHRyID0gKih2b2lkICoqKXRtcHB0cjsK LSAgIH0gZWxzZSBpZiAodHZpc2xpZ2h0dWQobykpIHsKLS0gICAgdG1wcHRyID0gbGlnaHR1ZFYo byk7Ci0rICAgIHRtcHB0ciA9IGxpZ2h0dWRWKGN0cy0+Zywgbyk7Ci0gICB9IGVsc2UgaWYgKHR2 aXNmdW5jKG8pKSB7Ci0gICAgIHZvaWQgKnAgPSBsal9jY2FsbGJhY2tfbmV3KGN0cywgZCwgZnVu Y1YobykpOwotICAgICBpZiAocCkgewotSW5kZXg6IGx1YWppdC9zcmMvbGpfY3JlY29yZC5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gbHVhaml0Lm9yaWcvc3JjL2xqX2NyZWNvcmQuYwotKysrIGx1YWppdC9z cmMvbGpfY3JlY29yZC5jCi1AQCAtNjQzLDggKzY0Myw3IEBACi0gICAgIH0KLSAgIH0gZWxzZSBp ZiAodHJlZl9pc2xpZ2h0dWQoc3ApKSB7Ci0gI2lmIExKXzY0Ci0tICAgIHNwID0gZW1pdGlyKElS VChJUl9CQU5ELCBJUlRfUDY0KSwgc3AsCi0tCQlsal9pcl9raW50NjQoSiwgVTY0eCgwMDAwN2Zm ZixmZmZmZmZmZikpKTsKLSsgICAgbGpfdHJhY2VfZXJyKEosIExKX1RSRVJSX05ZSUNPTlYpOwot ICNlbmRpZgotICAgfSBlbHNlIHsgIC8qIE5ZSTogdHJlZl9pc3RhYihzcCkuICovCi0gICAgIElS VHlwZSB0OwotQEAgLTEyMDksOCArMTIwOCw3IEBACi0gICAgIFRSZWYgdHI7Ci0gICAgIFRWYWx1 ZSB0djsKLSAgICAgLyogQ2hlY2sgZm9yIGJsYWNrbGlzdGVkIEMgZnVuY3Rpb25zIHRoYXQgbWln aHQgY2FsbCBhIGNhbGxiYWNrLiAqLwotLSAgICBzZXRsaWdodHVkVigmdHYsCi0tCQljZGF0YV9n ZXRwdHIoY2RhdGFwdHIoY2QpLCAoTEpfNjQgJiYgdHAgPT0gSVJUX1A2NCkgPyA4IDogNCkpOwot KyAgICB0di51NjQgPSAoKHVpbnRwdHJfdCljZGF0YV9nZXRwdHIoY2RhdGFwdHIoY2QpLCAoTEpf NjQgJiYgdHAgPT0gSVJUX1A2NCkgPyA4IDogNCkgPj4gMikgfCBVNjR4KDgwMDAwMDAwMCwgMDAw MDAwMDApOwotICAgICBpZiAodHZpc3RydWUobGpfdGFiX2dldChKLT5MLCBjdHMtPm1pc2NtYXAs ICZ0dikpKQotICAgICAgIGxqX3RyYWNlX2VycihKLCBMSl9UUkVSUl9CTEFDS0wpOwotICAgICBp ZiAoY3R5cGVfaXN2b2lkKGN0ci0+aW5mbykpIHsKLUluZGV4OiBsdWFqaXQvc3JjL2xqX2Rpc3Bh dGNoLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBsdWFqaXQub3JpZy9zcmMvbGpfZGlzcGF0Y2guYwotKysr IGx1YWppdC9zcmMvbGpfZGlzcGF0Y2guYwotQEAgLTMwMiw3ICszMDIsNyBAQAotICAgICAgIGlm IChpZHggIT0gMCkgewotIAljVFZhbHVlICp0diA9IGlkeCA+IDAgPyBMLT5iYXNlICsgKGlkeC0x KSA6IEwtPnRvcCArIGlkeDsKLSAJaWYgKHR2aXNsaWdodHVkKHR2KSkKLS0JICBnLT53cmFwZiA9 IChsdWFfQ0Z1bmN0aW9uKWxpZ2h0dWRWKHR2KTsKLSsJICBnLT53cmFwZiA9IChsdWFfQ0Z1bmN0 aW9uKWxpZ2h0dWRWKGcsIHR2KTsKLSAJZWxzZQotIAkgIHJldHVybiAwOyAgLyogRmFpbGVkLiAq LwotICAgICAgIH0gZWxzZSB7Ci1JbmRleDogbHVhaml0L3NyYy9sal9pci5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gbHVhaml0Lm9yaWcvc3JjL2xqX2lyLmMKLSsrKyBsdWFqaXQvc3JjL2xqX2lyLmMKLUBA IC0zODYsOCArMzg2LDEwIEBACi0gICBjYXNlIElSX0tQUkk6IHNldHByaVYodHYsIGlydF90b2l0 eXBlKGlyLT50KSk7IGJyZWFrOwotICAgY2FzZSBJUl9LSU5UOiBzZXRpbnRWKHR2LCBpci0+aSk7 IGJyZWFrOwotICAgY2FzZSBJUl9LR0M6IHNldGdjVihMLCB0diwgaXJfa2djKGlyKSwgaXJ0X3Rv aXR5cGUoaXItPnQpKTsgYnJlYWs7Ci0tICBjYXNlIElSX0tQVFI6IGNhc2UgSVJfS0tQVFI6IHNl dGxpZ2h0dWRWKHR2LCBpcl9rcHRyKGlyKSk7IGJyZWFrOwotLSAgY2FzZSBJUl9LTlVMTDogc2V0 bGlnaHR1ZFYodHYsIE5VTEwpOyBicmVhazsKLSsgIGNhc2UgSVJfS1BUUjogY2FzZSBJUl9LS1BU UjoKLSsgICAgc2V0bnVtVih0diwgKGx1YV9OdW1iZXIpKHVpbnRwdHJfdClpcl9rcHRyKGlyKSk7 Ci0rICAgIGJyZWFrOwotKyAgY2FzZSBJUl9LTlVMTDogc2V0aW50Vih0diwgMCk7IGJyZWFrOwot ICAgY2FzZSBJUl9LTlVNOiBzZXRudW1WKHR2LCBpcl9rbnVtKGlyKS0+bik7IGJyZWFrOwotICNp ZiBMSl9IQVNGRkkKLSAgIGNhc2UgSVJfS0lOVDY0OiB7Ci1JbmRleDogbHVhaml0L3NyYy9sal9v YmouYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGx1YWppdC5vcmlnL3NyYy9sal9vYmouYwotKysrIGx1YWpp dC9zcmMvbGpfb2JqLmMKLUBAIC0zNCwxMiArMzQsMTMgQEAKLSB9Ci0gCi0gLyogUmV0dXJuIHBv aW50ZXIgdG8gb2JqZWN0IG9yIGl0cyBvYmplY3QgZGF0YS4gKi8KLS1jb25zdCB2b2lkICogTEpf RkFTVENBTEwgbGpfb2JqX3B0cihjVFZhbHVlICpvKQotK2NvbnN0IHZvaWQgKiBMSl9GQVNUQ0FM TCBsal9vYmpfcHRyKGdsb2JhbF9TdGF0ZSAqZywgY1RWYWx1ZSAqbykKLSB7Ci0rICBVTlVTRUQo Zyk7Ci0gICBpZiAodHZpc3VkYXRhKG8pKQotICAgICByZXR1cm4gdWRkYXRhKHVkYXRhVihvKSk7 Ci0gICBlbHNlIGlmICh0dmlzbGlnaHR1ZChvKSkKLS0gICAgcmV0dXJuIGxpZ2h0dWRWKG8pOwot KyAgICByZXR1cm4gbGlnaHR1ZFYoZywgbyk7Ci0gICBlbHNlIGlmIChMSl9IQVNGRkkgJiYgdHZp c2NkYXRhKG8pKQotICAgICByZXR1cm4gY2RhdGFwdHIoY2RhdGFWKG8pKTsKLSAgIGVsc2UgaWYg KHR2aXNnY3YobykpCi1JbmRleDogbHVhaml0L3NyYy9sal9vYmouaAotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGx1YWppdC5vcmlnL3NyYy9sal9vYmouaAotKysrIGx1YWppdC9zcmMvbGpfb2JqLmgKLUBAIC0y MzIsNyArMjMyLDcgQEAKLSAqKiAgICAgICAgICAgICAgICAgIC0tLU1TVy0tLS4tLS1MU1ctLS0K LSAqKiBwcmltaXRpdmUgdHlwZXMgfCAgaXR5cGUgIHwgICAgICAgICB8Ci0gKiogbGlnaHR1c2Vy ZGF0YSAgIHwgIGl0eXBlICB8ICB2b2lkICogfCAgKDMyIGJpdCBwbGF0Zm9ybXMpCi0tKiogbGln aHR1c2VyZGF0YSAgIHxmZmZmfCAgICB2b2lkICogICAgfCAgKDY0IGJpdCBwbGF0Zm9ybXMsIDQ3 IGJpdCBwb2ludGVycykKLSsqKiBsaWdodHVzZXJkYXRhICAgfGZmZmZ8c2VnfCAgICBvZnMgICB8 ICAoNjQgYml0IHBsYXRmb3JtcykKLSAqKiBHQyBvYmplY3RzICAgICAgfCAgaXR5cGUgIHwgIEdD UmVmICB8Ci0gKiogaW50IChMSl9EVUFMTlVNKXwgIGl0eXBlICB8ICAgaW50ICAgfAotICoqIG51 bWJlciAgICAgICAgICAgLS0tLS0tLWRvdWJsZS0tLS0tLQotQEAgLTI0NSw3ICsyNDUsOCBAQAot ICoqCi0gKiogICAgICAgICAgICAgICAgICAgICAtLS0tLS1NU1ctLS0tLS0uLS0tLS0tTFNXLS0t LS0tCi0gKiogcHJpbWl0aXZlIHR5cGVzICAgIHwxLi4xfGl0eXBlfDEuLi4uLi4uLi4uLi4uLi4u Li4xfAotLSoqIEdDIG9iamVjdHMvbGlnaHR1ZCB8MS4uMXxpdHlwZXwtLS0tLS0tR0NSZWYtLS0t LS0tLXwKLSsqKiBHQyBvYmplY3RzICAgICAgICAgfDEuLjF8aXR5cGV8LS0tLS0tLUdDUmVmLS0t LS0tLS18Ci0rKiogbGlnaHR1c2VyZGF0YSAgICAgIHwxLi4xfGl0eXBlfHNlZ3wtLS0tLS1vZnMt LS0tLS0tfAotICoqIGludCAoTEpfRFVBTE5VTSkgICB8MS4uMXxpdHlwZXwwLi4wfC0tLS0taW50 LS0tLS0tLXwKLSAqKiBudW1iZXIgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLWRvdWJsZS0tLS0t LS0tLS0tLS0KLSAqKgotQEAgLTI4NSw2ICsyODYsMTIgQEAKLSAjZGVmaW5lIExKX0dDVk1BU0sJ CSgoKHVpbnQ2NF90KTEgPDwgNDcpIC0gMSkKLSAjZW5kaWYKLSAKLSsjaWYgTEpfNjQKLSsvKiBU byBzdGF5IHdpdGhpbiA0NyBiaXRzLCBsaWdodHVzZXJkYXRhIGlzIHNlZ21lbnRlZC4gKi8KLSsj ZGVmaW5lIExKX0xJR0hUVURfQklUU19TRUcJOAotKyNkZWZpbmUgTEpfTElHSFRVRF9CSVRTX0xP CSg0NyAtIExKX0xJR0hUVURfQklUU19TRUcpCi0rI2VuZGlmCi0rCi0gLyogLS0gU3RyaW5nIG9i amVjdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tICovCi0gCi0gLyogU3RyaW5nIG9iamVjdCBoZWFkZXIuIFN0cmluZyBwYXlsb2FkIGZvbGxv d3MuICovCi1AQCAtNTc2LDcgKzU4MywxMSBAQAotICAgdWludDhfdCBjdXJyZW50d2hpdGU7CS8q IEN1cnJlbnQgd2hpdGUgY29sb3IuICovCi0gICB1aW50OF90IHN0YXRlOwkvKiBHQyBzdGF0ZS4g Ki8KLSAgIHVpbnQ4X3Qgbm9jZGF0YWZpbjsJLyogTm8gY2RhdGEgZmluYWxpemVyIGNhbGxlZC4g Ki8KLS0gIHVpbnQ4X3QgdW51c2VkMjsKLSsjaWYgTEpfNjQKLSsgIHVpbnQ4X3QgbGlnaHR1ZG51 bTsJLyogTnVtYmVyIG9mIGxpZ2h0dXNlcmRhdGEgc2VnbWVudHMgLSAxLiAqLwotKyNlbHNlCi0r ICB1aW50OF90IHVudXNlZDE7Ci0rI2VuZGlmCi0gICBNU2l6ZSBzd2VlcHN0cjsJLyogU3dlZXAg cG9zaXRpb24gaW4gc3RyaW5nIHRhYmxlLiAqLwotICAgR0NSZWYgcm9vdDsJCS8qIExpc3Qgb2Yg YWxsIGNvbGxlY3RhYmxlIG9iamVjdHMuICovCi0gICBNUmVmIHN3ZWVwOwkJLyogU3dlZXAgcG9z aXRpb24gaW4gcm9vdCBsaXN0LiAqLwotQEAgLTU4OCw2ICs1OTksOSBAQAotICAgR0NTaXplIGVz dGltYXRlOwkvKiBFc3RpbWF0ZSBvZiBtZW1vcnkgYWN0dWFsbHkgaW4gdXNlLiAqLwotICAgTVNp emUgc3RlcG11bDsJLyogSW5jcmVtZW50YWwgR0Mgc3RlcCBncmFudWxhcml0eS4gKi8KLSAgIE1T aXplIHBhdXNlOwkJLyogUGF1c2UgYmV0d2VlbiBzdWNjZXNzaXZlIEdDIGN5Y2xlcy4gKi8KLSsj aWYgTEpfNjQKLSsgIE1SZWYgbGlnaHR1ZHNlZzsJLyogVXBwZXIgYml0cyBvZiBsaWdodHVzZXJk YXRhIHNlZ21lbnRzLiAqLwotKyNlbmRpZgotIH0gR0NTdGF0ZTsKLSAKLSAvKiBHbG9iYWwgc3Rh dGUsIHNoYXJlZCBieSBhbGwgdGhyZWFkcyBvZiBhIEx1YSB1bml2ZXJzZS4gKi8KLUBAIC03OTUs MTAgKzgwOSwyMyBAQAotICNlbmRpZgotICNkZWZpbmUgYm9vbFYobykJY2hlY2tfZXhwKHR2aXNi b29sKG8pLCAoTEpfVEZBTFNFIC0gaXR5cGUobykpKQotICNpZiBMSl82NAotLSNkZWZpbmUgbGln aHR1ZFYobykgXAotLSAgY2hlY2tfZXhwKHR2aXNsaWdodHVkKG8pLCAodm9pZCAqKSgobyktPnU2 NCAmIFU2NHgoMDAwMDdmZmYsZmZmZmZmZmYpKSkKLSsjZGVmaW5lIGxpZ2h0dWRzZWcodSkgXAot KyAgKCgodSkgPj4gTEpfTElHSFRVRF9CSVRTX0xPKSAmICgoMSA8PCBMSl9MSUdIVFVEX0JJVFNf U0VHKS0xKSkKLSsjZGVmaW5lIGxpZ2h0dWRsbyh1KSBcCi0rICAoKHUpICYgKCgodWludDY0X3Qp MSA8PCBMSl9MSUdIVFVEX0JJVFNfTE8pIC0gMSkpCi0rI2RlZmluZSBsaWdodHVkdXAocCkgXAot KyAgKCh1aW50MzJfdCkoKChwKSA+PiBMSl9MSUdIVFVEX0JJVFNfTE8pIDw8IChMSl9MSUdIVFVE X0JJVFNfTE8tMzIpKSkKLStzdGF0aWMgTEpfQUlOTElORSB2b2lkICpsaWdodHVkVihnbG9iYWxf U3RhdGUgKmcsIGNUVmFsdWUgKm8pCi0rewotKyAgdWludDY0X3QgdSA9IG8tPnU2NDsKLSsgIHVp bnQ2NF90IHNlZyA9IGxpZ2h0dWRzZWcodSk7Ci0rICB1aW50MzJfdCAqc2VnbWFwID0gbXJlZihn LT5nYy5saWdodHVkc2VnLCB1aW50MzJfdCk7Ci0rICBsdWFfYXNzZXJ0KHR2aXNsaWdodHVkKG8p KTsKLSsgIGx1YV9hc3NlcnQoc2VnIDw9IGctPmdjLmxpZ2h0dWRudW0pOwotKyAgcmV0dXJuICh2 b2lkICopKCgodWludDY0X3Qpc2VnbWFwW3NlZ10gPDwgMzIpIHwgbGlnaHR1ZGxvKHUpKTsKLSt9 Ci0gI2Vsc2UKLS0jZGVmaW5lIGxpZ2h0dWRWKG8pCWNoZWNrX2V4cCh0dmlzbGlnaHR1ZChvKSwg Z2NyZWZwKChvKS0+Z2NyLCB2b2lkKSkKLSsjZGVmaW5lIGxpZ2h0dWRWKGcsIG8pCWNoZWNrX2V4 cCh0dmlzbGlnaHR1ZChvKSwgZ2NyZWZwKChvKS0+Z2NyLCB2b2lkKSkKLSAjZW5kaWYKLSAjZGVm aW5lIGdjVihvKQkJY2hlY2tfZXhwKHR2aXNnY3YobyksIGdjdmFsKG8pKQotICNkZWZpbmUgc3Ry VihvKQkJY2hlY2tfZXhwKHR2aXNzdHIobyksICZnY3ZhbChvKS0+c3RyKQotQEAgLTgyNCw3ICs4 NTEsNyBAQAotICNkZWZpbmUgc2V0cHJpVihvLCBpKQkJKHNldGl0eXBlKChvKSwgKGkpKSkKLSAj ZW5kaWYKLSAKLS1zdGF0aWMgTEpfQUlOTElORSB2b2lkIHNldGxpZ2h0dWRWKFRWYWx1ZSAqbywg dm9pZCAqcCkKLStzdGF0aWMgTEpfQUlOTElORSB2b2lkIHNldHJhd2xpZ2h0dWRWKFRWYWx1ZSAq bywgdm9pZCAqcCkKLSB7Ci0gI2lmIExKX0dDNjQKLSAgIG8tPnU2NCA9ICh1aW50NjRfdClwIHwg KCgodWludDY0X3QpTEpfVExJR0hUVUQpIDw8IDQ3KTsKLUBAIC04MzUsMjQgKzg2MiwxNCBAQAot ICNlbmRpZgotIH0KLSAKLS0jaWYgTEpfNjQKLS0jZGVmaW5lIGNoZWNrbGlnaHR1ZHB0cihMLCBw KSBcCi0tICAoKCh1aW50NjRfdCkocCkgPj4gNDcpID8gKGxqX2Vycl9tc2coTCwgTEpfRVJSX0JB RExVKSwgTlVMTCkgOiAocCkpCi0tI2Vsc2UKLS0jZGVmaW5lIGNoZWNrbGlnaHR1ZHB0cihMLCBw KQkocCkKLS0jZW5kaWYKLS0KLS0jaWYgTEpfRlIyCi0rI2lmIExKX0ZSMiB8fCBMSl8zMgotICNk ZWZpbmUgY29udHB0cihmKQkJKCh2b2lkICopKGYpKQotICNkZWZpbmUgc2V0Y29udChvLCBmKQkJ KChvKS0+dTY0ID0gKHVpbnQ2NF90KSh1aW50cHRyX3QpY29udHB0cihmKSkKLS0jZWxpZiBMSl82 NAotKyNlbHNlCi0gI2RlZmluZSBjb250cHRyKGYpIFwKLSAgICgodm9pZCAqKSh1aW50cHRyX3Qp KHVpbnQzMl90KSgoaW50cHRyX3QpKGYpIC0gKGludHB0cl90KWxqX3ZtX2FzbV9iZWdpbikpCi0g I2RlZmluZSBzZXRjb250KG8sIGYpIFwKLSAgICgobyktPnU2NCA9ICh1aW50NjRfdCkodm9pZCAq KShmKSAtICh1aW50NjRfdClsal92bV9hc21fYmVnaW4pCi0tI2Vsc2UKLS0jZGVmaW5lIGNvbnRw dHIoZikJCSgodm9pZCAqKShmKSkKLS0jZGVmaW5lIHNldGNvbnQobywgZikJCXNldGxpZ2h0dWRW KChvKSwgY29udHB0cihmKSkKLSAjZW5kaWYKLSAKLSAjZGVmaW5lIHR2Y2hlY2tsaXZlKEwsIG8p IFwKLUBAIC05NzgsNiArOTk1LDYgQEAKLSAKLSAvKiBDb21wYXJlIHR3byBvYmplY3RzIHdpdGhv dXQgY2FsbGluZyBtZXRhbWV0aG9kcy4gKi8KLSBMSl9GVU5DIGludCBMSl9GQVNUQ0FMTCBsal9v YmpfZXF1YWwoY1RWYWx1ZSAqbzEsIGNUVmFsdWUgKm8yKTsKLS1MSl9GVU5DIGNvbnN0IHZvaWQg KiBMSl9GQVNUQ0FMTCBsal9vYmpfcHRyKGNUVmFsdWUgKm8pOwotK0xKX0ZVTkMgY29uc3Qgdm9p ZCAqIExKX0ZBU1RDQUxMIGxqX29ial9wdHIoZ2xvYmFsX1N0YXRlICpnLCBjVFZhbHVlICpvKTsK LSAKLSAjZW5kaWYKLUluZGV4OiBsdWFqaXQvc3JjL2xqX3NuYXAuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGx1YWppdC5vcmlnL3NyYy9sal9zbmFwLmMKLSsrKyBsdWFqaXQvc3JjL2xqX3NuYXAuYwotQEAg LTYyNiw3ICs2MjYsMTIgQEAKLSAgIElSVHlwZTEgdCA9IGlyLT50OwotICAgUmVnU1AgcnMgPSBp ci0+cHJldjsKLSAgIGlmIChpcnJlZl9pc2socmVmKSkgeyAgLyogUmVzdG9yZSBjb25zdGFudCBz bG90LiAqLwotLSAgICBsal9pcl9rdmFsdWUoSi0+TCwgbywgaXIpOwotKyAgICBpZiAoaXItPm8g PT0gSVJfS1BUUikgewotKyAgICAgIG8tPnU2NCA9ICh1aW50NjRfdCkodWludHB0cl90KWlyX2tw dHIoaXIpOwotKyAgICB9IGVsc2UgewotKyAgICAgIGx1YV9hc3NlcnQoIShpci0+byA9PSBJUl9L S1BUUiB8fCBpci0+byA9PSBJUl9LTlVMTCkpOwotKyAgICAgIGxqX2lyX2t2YWx1ZShKLT5MLCBv LCBpcik7Ci0rICAgIH0KLSAgICAgcmV0dXJuOwotICAgfQotICAgaWYgKExKX1VOTElLRUxZKGJs b29tdGVzdChyZmlsdCwgcmVmKSkpCi1JbmRleDogbHVhaml0L3NyYy9sal9zdGF0ZS5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gbHVhaml0Lm9yaWcvc3JjL2xqX3N0YXRlLmMKLSsrKyBsdWFqaXQvc3JjL2xq X3N0YXRlLmMKLUBAIC0xNzEsNiArMTcxLDEyIEBACi0gICBsal9tZW1fZnJlZXZlYyhnLCBnLT5z dHJoYXNoLCBnLT5zdHJtYXNrKzEsIEdDUmVmKTsKLSAgIGxqX2J1Zl9mcmVlKGcsICZnLT50bXBi dWYpOwotICAgbGpfbWVtX2ZyZWV2ZWMoZywgdHZyZWYoTC0+c3RhY2spLCBMLT5zdGFja3NpemUs IFRWYWx1ZSk7Ci0rI2lmIExKXzY0Ci0rICBpZiAobXJlZihnLT5nYy5saWdodHVkc2VnLCB1aW50 MzJfdCkpIHsKLSsgICAgTVNpemUgc2VnbnVtID0gZy0+Z2MubGlnaHR1ZG51bSA/ICgyIDw8IGxq X2ZscyhnLT5nYy5saWdodHVkbnVtKSkgOiAyOwotKyAgICBsal9tZW1fZnJlZXZlYyhnLCBtcmVm KGctPmdjLmxpZ2h0dWRzZWcsIHVpbnQzMl90KSwgc2VnbnVtLCB1aW50MzJfdCk7Ci0rICB9Ci0r I2VuZGlmCi0gICBsdWFfYXNzZXJ0KGctPmdjLnRvdGFsID09IHNpemVvZihHR19TdGF0ZSkpOwot ICNpZm5kZWYgTFVBSklUX1VTRV9TWVNNQUxMT0MKLSAgIGlmIChnLT5hbGxvY2YgPT0gbGpfYWxs b2NfZikKLUluZGV4OiBsdWFqaXQvc3JjL2xqX3N0cmZtdC5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbHVh aml0Lm9yaWcvc3JjL2xqX3N0cmZtdC5jCi0rKysgbHVhaml0L3NyYy9sal9zdHJmbXQuYwotQEAg LTM5Myw3ICszOTMsNyBAQAotICAgICAgIHAgPSBsal9idWZfd21lbShwLCAiYnVpbHRpbiMiLCA4 KTsKLSAgICAgICBwID0gbGpfc3RyZm10X3dpbnQocCwgZnVuY1YobyktPmMuZmZpZCk7Ci0gICAg IH0gZWxzZSB7Ci0tICAgICAgcCA9IGxqX3N0cmZtdF93cHRyKHAsIGxqX29ial9wdHIobykpOwot KyAgICAgIHAgPSBsal9zdHJmbXRfd3B0cihwLCBsal9vYmpfcHRyKEcoTCksIG8pKTsKLSAgICAg fQotICAgICByZXR1cm4gbGpfc3RyX25ldyhMLCBidWYsIChzaXplX3QpKHAgLSBidWYpKTsKLSAg IH0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvTHVhSklUL3BhdGNoZXMvZml4LWJjc2F2ZS1wcGM2NC5w YXRjaCBiL3NyY3BrZ3MvTHVhSklUL3BhdGNoZXMvZml4LWJjc2F2ZS1wcGM2NC5wYXRjaAppbmRl eCBmNTNlMjExMDcxMDYuLmMwYjQ0ODE1ZTNhNSAxMDA2NDQKLS0tIGEvc3JjcGtncy9MdWFKSVQv cGF0Y2hlcy9maXgtYmNzYXZlLXBwYzY0LnBhdGNoCisrKyBiL3NyY3BrZ3MvTHVhSklUL3BhdGNo ZXMvZml4LWJjc2F2ZS1wcGM2NC5wYXRjaApAQCAtMSwzMyArMSwxMSBAQAotLS0tIGEvc3JjL2pp dC9iY3NhdmUubHVhCTIwMTgtMTItMTcgMTk6MDY6MjcuMjE1MDQyNDE3ICswMTAwCi0rKysgYi9z cmMvaml0L2Jjc2F2ZS5sdWEJMjAxOC0xMi0xNyAxOToxNzoxMi45ODI0Nzc5NDUgKzAxMDAKLUBA IC02NCw3ICs2NCw3IEBACi0gCi0gbG9jYWwgbWFwX2FyY2ggPSB7Ci0gICB4ODYgPSB0cnVlLCB4 NjQgPSB0cnVlLCBhcm0gPSB0cnVlLCBhcm02NCA9IHRydWUsIGFybTY0YmUgPSB0cnVlLAotLSAg cHBjID0gdHJ1ZSwgbWlwcyA9IHRydWUsIG1pcHNlbCA9IHRydWUsCi0rICBwcGMgPSB0cnVlLCBw cGM2NCA9IHRydWUsIHBwYzY0bGUgPSB0cnVlLCBtaXBzID0gdHJ1ZSwgbWlwc2VsID0gdHJ1ZSwK LSB9Ci0gCi0gbG9jYWwgbWFwX29zID0gewotQEAgLTIwMCw5ICsyMDAsMTAgQEAKLSBdXQotICAg bG9jYWwgc3ltbmFtZSA9IExKQkNfUFJFRklYLi5jdHgubW9kbmFtZQotICAgbG9jYWwgaXM2NCwg aXNiZSA9IGZhbHNlLCBmYWxzZQotLSAgaWYgY3R4LmFyY2ggPT0gIng2NCIgb3IgY3R4LmFyY2gg PT0gImFybTY0IiBvciBjdHguYXJjaCA9PSAiYXJtNjRiZSIgdGhlbgotKyAgaWYgY3R4LmFyY2gg PT0gIng2NCIgb3IgY3R4LmFyY2ggPT0gImFybTY0IiBvciBjdHguYXJjaCA9PSAiYXJtNjRiZSIg b3IgY3R4LmFyY2ggPT0gInBwYzY0IiBvciBjdHguYXJjaCA9PSAicHBjNjRsZSIgdGhlbgotICAg ICBpczY0ID0gdHJ1ZQotLSAgZWxzZWlmIGN0eC5hcmNoID09ICJwcGMiIG9yIGN0eC5hcmNoID09 ICJtaXBzIiB0aGVuCi0rICBlbmQKLSsgIGlmIGN0eC5hcmNoID09ICJwcGMiIG9yIGN0eC5hcmNo ID09ICJwcGM2NCIgb3IgY3R4LmFyY2ggPT0gIm1pcHMiIHRoZW4KLSAgICAgaXNiZSA9IHRydWUK LSAgIGVuZAotIAotQEAgLTIzNyw3ICsyMzgsNyBAQAotICAgaGRyLmVlbmRpYW4gPSBpc2JlIGFu ZCAyIG9yIDEKLSAgIGhkci5ldmVyc2lvbiA9IDEKLSAgIGhkci50eXBlID0gZjE2KDEpCi0tICBo ZHIubWFjaGluZSA9IGYxNigoeyB4ODY9MywgeDY0PTYyLCBhcm09NDAsIGFybTY0PTE4MywgYXJt NjRiZT0xODMsIHBwYz0yMCwgbWlwcz04LCBtaXBzZWw9OCB9KVtjdHguYXJjaF0pCi0rICBoZHIu bWFjaGluZSA9IGYxNigoeyB4ODY9MywgeDY0PTYyLCBhcm09NDAsIGFybTY0PTE4MywgYXJtNjRi ZT0xODMsIHBwYz0yMCwgcHBjNjQ9MjEsIHBwYzY0bGU9MjEsIG1pcHM9OCwgbWlwc2VsPTggfSlb Y3R4LmFyY2hdKQotICAgaWYgY3R4LmFyY2ggPT0gIm1pcHMiIG9yIGN0eC5hcmNoID09ICJtaXBz ZWwiIHRoZW4KLSAgICAgaGRyLmZsYWdzID0gZjMyKDB4NTAwMDEwMDYpCi0gICBlbmQKKy0tLSBh L3NyYy9qaXQvYmNzYXZlLmx1YQkyMDIyLTA0LTIwIDE3OjMxOjIxLjYwODQ2NjQ4OSAtMDcwMAor KysrIGIvc3JjL2ppdC9iY3NhdmUubHVhCTIwMjItMDQtMjAgMTc6MzM6NTAuMzk1MTY0NDEwIC0w NzAwCitAQCAtNzgsNiArNzgsOCBAQAorICAgYXJtNjQgPQl7IGUgPSAibGUiLCBiID0gNjQsIG0g PSAxODMsIHAgPSAweGFhNjQsIH0sCisgICBhcm02NGJlID0JeyBlID0gImJlIiwgYiA9IDY0LCBt ID0gMTgzLCB9LAorICAgcHBjID0JCXsgZSA9ICJiZSIsIGIgPSAzMiwgbSA9IDIwLCB9LAorKyAg cHBjNjQgPQl7IGUgPSAiYmUiLCBiID0gNjQsIG0gPSAyMSwgfSwKKysgIHBwYzY0bGUgPQl7IGUg PSAibGUiLCBiID0gNjQsIG0gPSAyMSwgfSwKKyAgIG1pcHMgPQl7IGUgPSAiYmUiLCBiID0gMzIs IG0gPSA4LCBmID0gMHg1MDAwMTAwNiwgfSwKKyAgIG1pcHNlbCA9CXsgZSA9ICJsZSIsIGIgPSAz MiwgbSA9IDgsIGYgPSAweDUwMDAxMDA2LCB9LAorICAgbWlwczY0ID0JeyBlID0gImJlIiwgYiA9 IDY0LCBtID0gOCwgZiA9IDB4ODAwMDAwMDcsIH0sCmRpZmYgLS1naXQgYS9zcmNwa2dzL0x1YUpJ VC9wYXRjaGVzL3VucG9sbHV0ZS1nbG9iYWwtbmFtZXNwYWNlLnBhdGNoIGIvc3JjcGtncy9MdWFK SVQvcGF0Y2hlcy91bnBvbGx1dGUtZ2xvYmFsLW5hbWVzcGFjZS5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggYWVkYWFjYmFhZWE0Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtn cy9MdWFKSVQvcGF0Y2hlcy91bnBvbGx1dGUtZ2xvYmFsLW5hbWVzcGFjZS5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDIxICswLDAgQEAKLUZyb206ID0/dXRmLTg/cT9PbmQ9QzU9OTllal9TdXI9 QzM9QkQ/PSA8b25kcmVqQHN1cnkub3JnPgotRGF0ZTogV2VkLCAxMSBPY3QgMjAxNyAwODo0Mjo0 MSArMDAwMAotU3ViamVjdDogTWFrZSBjY2FsbF9jb3B5X3N0cnVjdCBzdGF0aWMgdG8gdW5wb2xs dXRlIGdsb2JhbCBsaWJyYXJ5IG5hbWVzcGFjZQotCi0tLS0KLSBzcmMvbGpfY2NhbGwuYyB8IDIg Ky0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlm ZiAtLWdpdCBzcmMvbGpfY2NhbGwuYyBzcmMvbGpfY2NhbGwuYwotaW5kZXggYjg5MTU5MS4uYTdk Y2MxYiAxMDA2NDQKLS0tLSBhL3NyYy9sal9jY2FsbC5jCi0rKysgYi9zcmMvbGpfY2NhbGwuYwot QEAgLTk2MCw3ICs5NjAsNyBAQCBub3RoOiAgLyogTm90IGEgaG9tb2dlbmVvdXMgZmxvYXQvZG91 YmxlIGFnZ3JlZ2F0ZS4gKi8KLSAgIHJldHVybiAwOyAgLyogU3RydWN0IGlzIGluIEdQUnMuICov Ci0gfQotIAotLXZvaWQgY2NhbGxfY29weV9zdHJ1Y3QoQ0NhbGxTdGF0ZSAqY2MsIENUeXBlICpj dHIsIHZvaWQgKmRwLCB2b2lkICpzcCwgaW50IGZ0KQotK3N0YXRpYyB2b2lkIGNjYWxsX2NvcHlf c3RydWN0KENDYWxsU3RhdGUgKmNjLCBDVHlwZSAqY3RyLCB2b2lkICpkcCwgdm9pZCAqc3AsIGlu dCBmdCkKLSB7Ci0gICBpZiAoTEpfQUJJX1NPRlRGUCA/IGZ0IDoKLSAgICAgICAoKGZ0ICYgMykg PT0gRlRZUEVfRkxPQVQgfHwgKGZ0ID4+IDIpID09IEZUWVBFX0ZMT0FUKSkgewpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9MdWFKSVQvdGVtcGxhdGUgYi9zcmNwa2dzL0x1YUpJVC90ZW1wbGF0ZQppbmRl eCA3NzhhOGRmMGU1OTMuLmFmMTJmMjMwYmUyYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9MdWFKSVQv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9MdWFKSVQvdGVtcGxhdGUKQEAgLTEsMTcgKzEsMTggQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ0x1YUpJVCcKIHBrZ25hbWU9THVhSklUCiB2ZXJzaW9uPTIu MS4wYmV0YTMKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIF9zb192ZXJzaW9uPTIuMS4wCi1fZGlz dF92ZXJzaW9uPSR7X3NvX3ZlcnNpb259LWJldGEzCi13cmtzcmM9IiR7cGtnbmFtZX0tJHtfZGlz dF92ZXJzaW9ufSIKK19zaG9ydF9jb21taXQ9ZjJiMzdmNQorX2NvbW1pdD1mMmIzN2Y1MWY2OWJh N2U5ZjhkZWZkMDVlNWFjYTY0ODEyMWYwZmU2Cit3cmtzcmM9Imx1YWppdC0yLjAtJHtfc2hvcnRf Y29tbWl0fSIKIGhvc3RtYWtlZGVwZW5kcz0ibHVhNTItQml0T3AiCiBzaG9ydF9kZXNjPSJKdXN0 LUluLVRpbWUgQ29tcGlsZXIgZm9yIEx1YSIKIG1haW50YWluZXI9InE2NiA8ZGFuaWVsQG9jdGFm b3JnZS5vcmc+IgogbGljZW5zZT0iTUlUIgotaG9tZXBhZ2U9Imh0dHA6Ly93d3cubHVhaml0Lm9y ZyIKLWRpc3RmaWxlcz0iaHR0cDovL2x1YWppdC5vcmcvZG93bmxvYWQvJHtwa2duYW1lfS0ke19k aXN0X3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTFhZDJlMzRiMTExYzgwMmY5ZDBjZGYwMTll OTg2OTA5MTIzMjM3YTI4Yzc0NmIyMTI5NWI2M2M5ZTc4NWQ5YzMKK2hvbWVwYWdlPSJodHRwczov L3d3dy5sdWFqaXQub3JnIgorZGlzdGZpbGVzPSJodHRwczovL3JlcG8ub3IuY3ovbHVhaml0LTIu MC5naXQvc25hcHNob3QvJHtfY29tbWl0fS50YXIuZ3oiCitjaGVja3N1bT1mMWI1ZjgxY2EzZDVj YzA3Nzg2NWU3Nzc5NmZkN2IxN2UxYzI5YmYzY2ZlMWViMmVkNDVjODJkMmVjN2NlMmIwCiAKIGJ1 aWxkX29wdGlvbnM9Imx1YTUyY29tcGF0IgogCg== --===============5296518238409320775==--