[PR] swscale/ops: add SWS_OP_LUT_3D and add gamut/tone mapping support for SwsOpList (PR #23925)
Niklas Haas via ffmpeg-devel <[email protected]> Mon, 27 Jul 2026 14:20:04 -0000
| Newsgroups | gmane.comp.video.ffmpeg.devel |
|---|---|
| Message-ID | <178516201791.59.5492067518148016756@29965ddac10e> |
UFIgIzIzOTI1IG9wZW5lZCBieSBOaWtsYXMgSGFhcyAoaGFhc24pClVSTDogaHR0cHM6Ly9jb2Rl LmZmbXBlZy5vcmcvRkZtcGVnL0ZGbXBlZy9wdWxscy8yMzkyNQpQYXRjaCBVUkw6IGh0dHBzOi8v Y29kZS5mZm1wZWcub3JnL0ZGbXBlZy9GRm1wZWcvcHVsbHMvMjM5MjUucGF0Y2gKClRoaXMgYnJl YWtzIHRoZSBkZXNpZ24gcGhpbG9zb3BoeSBvZiBTd3NPcCBqdXN0IGEgbGl0dGxlIGJpdCwgaW4g dGhhdCBpdCdzIGEgZmFpcmx5IGNvbXBsZXggbm9uLWF0b21pYyBvcGVyYXRpb24gaW52b2x2aW5n IG11bHRpcGxlIHN0ZXBzLiBIb3dldmVyLCB0aGUgc2VtYW50aWNzIGFyZSBzbyB0aWdodGx5IG1h cnJpZWQgdG8gdGhlIGV4YWN0IGBsdXQzZC5oYCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCB0aGF0 IEkgZG9uJ3QgdGhpbmsgaXQncyB3b3J0aCBpbnRlbnRpb25hbGx5IG9ic2N1cmluZyB0aGF0IHJl bGF0aW9uc2hpcCBqdXN0IGZvciB0aGUgc2FrZSBvZiBjb25jZXB0dWFsIHB1cml0eS4NCg0KSW4g dGhlb3J5LCB3ZSBjb3VsZCB0cmVhdCB0aGVzZSBhcyB0aHJlZSBzZXBhcmF0ZSBtZXRhLXVvcHMg ZS5nLiBTV1NfVU9QX0xVVF9URVRSQUhFRFJBTCwgU1dTX1VPUF9UT05FX01BUCwgYW5kIFNXU19V T1BfTFVUX1RSSUxJTkVBUjsgd2l0aCBhbiBleHBsaWNpdCBTV1NfVU9QX1NDQUxFIGluIGJldHdl ZW4gZm9yIHRoZSBpbnRlcm1lZGlhdGUgc3RlcCBiZXR3ZWVuIHRoZSB0b25lIG1hcHBpbmcgYW5k IHRyaWxpbmVhciBzdGVwLCBidXQgdGhhdCBwcmV2ZW50cyBzb21lIGZ1c2lvbiAoZS5nLiBmdXNp bmcgdGhlIHNjYWxlIGFkanVzdG1lbnQgZGlyZWN0bHkgaW50byB0aGUgYGJpYXNgIGFuZCBgc2Nh bGVgIHZhbHVlcyBmb3IgdGhlIFBUIGNoYW5uZWwgZGVzYXR1cmF0aW9uKS4gSWYgaXQgZXZlciBj b21lcyB0byBpdCwgd2UgY2FuIHN0aWxsIHJvbGwgdGhpcyBkZWNpc2lvbiBiYWNrIGFuZCBnZW5l cmFsaXplIHRoaXMgdW9wIHNvbWUgbW9yZS4NCg0KVGhpcyBQUiBvbmx5IGltcGxlbWVudHMgdGhl IEMgcmVmZXJlbmNlLiBJIHN1c3BlY3QgdGhhdCBhIHByb3Blcmx5IHZlY3Rvcml6ZWQgU0lNRCBz b2x1dGlvbiBpcyBtdWNoIGZhc3RlciwgYnV0IEkgd2lsbCBmb2xsb3cgdXAgd2l0aCB0aGF0IGlu IGEgc2VwYXJhdGUgUFIgYXMgaXQgaXMgcXVpdGUgYW4gdW5kZXJ0YWtpbmcuCgoKRnJvbSA0NTJm NTJiMTA2NjI0NmQ5YTQ2NGRkYzQ1MGRhYjk2NDc1MTIzYjIwIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBOaWtsYXMgSGFhcyA8Z2l0QGhhYXNuLmRldj4KRGF0ZTogU3VuLCAyMSBKdW4g MjAyNiAxNjo1MTowMyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDEvMThdIHN3c2NhbGUvb3BzOiBm aXggbWVyZ2VfY29tcF9mbGFncygpIGZvcgogU1dTX0NPTVBfU1dBUFBFRAoKVGhpcyB2aW9sYXRl cyB0aGUgZG9jdW1lbnRhdGlvbiAobW9ub2lkIHByb3BlcnR5KS4KCkl0J3MgYSBiaXQgYXJiaXRy YXJ5IHdoZXRoZXIgdG8gY29uc2lkZXIgdGhpcyBhbiBPUi10eXBlIG9yIEFORC10eXBlIGZsYWcs CnNpbmNlIG1peGluZyBzd2FwcGVkIGFuZCBub24tc3dhcHBlZCBjb21wb25lbnRzIGlzIGFsbW9z dCBzdXJlbHkgYSBidWcsIGJ1dAprZWVwaW5nIGl0IGFzIGFuIE9SLXR5cGUgbWFrZXMgc3VyZSBz dWNoIGNhc2VzIGF0IGxlYXN0IHNob3cgdXAgaW4gdGhlCnJlc3VsdC4KClNwb25zb3JlZC1ieTog U292ZXJlaWduIFRlY2ggRnVuZApTaWduZWQtb2ZmLWJ5OiBOaWtsYXMgSGFhcyA8Z2l0QGhhYXNu LmRldj4KLS0tCiBsaWJzd3NjYWxlL29wcy5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbGlic3dzY2FsZS9vcHMuYyBi L2xpYnN3c2NhbGUvb3BzLmMKaW5kZXggMDU4MmEzMjM0NS4uMWY1NTVlOTQ3OSAxMDA2NDQKLS0t IGEvbGlic3dzY2FsZS9vcHMuYworKysgYi9saWJzd3NjYWxlL29wcy5jCkBAIC0yODEsNyArMjgx LDcgQEAgZW51bSB7CiAvKiBtZXJnZV9jb21wX2ZsYWdzKCkgZm9ybXMgYSBtb25vaWQgd2l0aCBT V1NfQ09NUF9JREVOVElUWSBhcyB0aGUgbnVsbCBlbGVtZW50ICovCiBzdGF0aWMgU3dzQ29tcEZs YWdzIG1lcmdlX2NvbXBfZmxhZ3MoU3dzQ29tcEZsYWdzIGEsIFN3c0NvbXBGbGFncyBiKQogewot ICAgIGNvbnN0IFN3c0NvbXBGbGFncyBmbGFnc19vciAgPSBTV1NfQ09NUF9HQVJCQUdFOworICAg IGNvbnN0IFN3c0NvbXBGbGFncyBmbGFnc19vciAgPSBTV1NfQ09NUF9HQVJCQUdFIHwgU1dTX0NP TVBfU1dBUFBFRDsKICAgICBjb25zdCBTd3NDb21wRmxhZ3MgZmxhZ3NfYW5kID0gU1dTX0NPTVBf SURFTlRJVFk7CiAgICAgcmV0dXJuICgoYSAmIGIpICYgZmxhZ3NfYW5kKSB8ICgoYSB8IGIpICYg ZmxhZ3Nfb3IpOwogfQotLSAKMi41Mi4wCgoKRnJvbSAxNzNhNmQ3MmM3MzdhZDdlOWJmZDBjMjVl M2VlMjgwODNlODY2MWM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtsYXMgSGFh cyA8Z2l0QGhhYXNuLmRldj4KRGF0ZTogVGh1LCAyNSBKdW4gMjAyNiAxODozMToxMyArMDIwMApT dWJqZWN0OiBbUEFUQ0ggMDIvMThdIHN3c2NhbGUvb3BzOiByZWZhY3RvciBjb21wIGZsYWdzIHBy b3BhZ2F0aW9uIHNsaWdodGx5CgpJbnRyb2R1Y2UgYSB1bmlmaWVkIEZPUldBUkQoKSBoZWxwZXIg bWFjcm8gdGhhdCBjYW4gYmUgdXNlZCBmb3IgYW55IHR5cGUgb2YKb3AsIHdoZXRoZXIgaXQgaXMg aW5kZXBlbmRlbnQgcGVyIGNvbXBvbmVudCBvciBtb3JlIGNvbXBsZXguIEJ5IGluaXRpYWxpemlu ZwpldmVyeSBvcCB0byB0aGUgc2FtZSBJREVOVElUWSBzdGF0ZSwgd2UgY2FuIGxldmVyYWdlIHRo ZSBtb25vaWQgcHJvcGVydHkgdG8KbWFrZSB0aGlzIHdvcmsgZm9yIG5haXZlIHByb3BhZ2F0aW9u cyBhcyB3ZWxsLgoKQXMgYW4gYXNpZGUsIHdlIGFsc28gcHJvcGVybHkgemVybyBvdXQgdGhlIHVu cmVsYXRlZCBmaWVsZHMgd2hlbiBkaXNjYXJkaW5nCmEgY29tcG9uZW50IChpLmUuIG1hcmtpbmcg aXQgYXMgR0FSQkFHRSkuCgpUaGlzIHdpbGwgbWFrZSBhIGNvdXBsZSBvZiB1cC1jb21pbmcgcmVm YWN0b3JzIGEgYml0IGVhc2llci4KClNwb25zb3JlZC1ieTogU292ZXJlaWduIFRlY2ggRnVuZApT aWduZWQtb2ZmLWJ5OiBOaWtsYXMgSGFhcyA8Z2l0QGhhYXNuLmRldj4KLS0tCiBsaWJzd3NjYWxl L29wcy5jIHwgNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvbGlic3dzY2FsZS9vcHMuYyBiL2xpYnN3c2NhbGUvb3BzLmMKaW5kZXggMWY1 NTVlOTQ3OS4uYmUzZTk4NTNhOSAxMDA2NDQKLS0tIGEvbGlic3dzY2FsZS9vcHMuYworKysgYi9s aWJzd3NjYWxlL29wcy5jCkBAIC0zMzEsNiArMzMxLDE5IEBAIHZvaWQgZmZfc3dzX29wX2xpc3Rf dXBkYXRlX2NvbXBzKFN3c09wTGlzdCAqb3BzKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg IH0KIAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKKyAgICAgICAgICAgIG9w LT5jb21wcy5mbGFnc1tpXSA9IFNXU19DT01QX0lERU5USVRZOworCisgICAgICAgICNkZWZpbmUg Rk9SV0FSRChJLCBKLCBFWFBSKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgICAgIFN3c0NvbXBGbGFncyBmbGFncyA9IHByZXYuZmxhZ3NbSl07 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgb3AtPmNvbXBz LmZsYWdzW0ldID0gbWVyZ2VfY29tcF9mbGFncyhvcC0+Y29tcHMuZmxhZ3NbSV0sIChFWFBSKSk7 ICBcCisgICAgICAgIH0gd2hpbGUgKDApCisKKyAgICAgICAgI2RlZmluZSBSRVNFVChJKSBkbyB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgb3AtPmNvbXBzLmZsYWdzW0ldID0gU1dTX0NPTVBfR0FSQkFHRTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBvcC0+Y29tcHMubWluW0ldID0gb3At PmNvbXBzLm1heFtJXSA9IChBVlJhdGlvbmFsNjQpIHswfTsgICAgICAgICAgIFwKKyAgICAgICAg fSB3aGlsZSAoMCkKKwogICAgICAgICBzd2l0Y2ggKG9wLT5vcCkgewogICAgICAgICBjYXNlIFNX U19PUF9SRUFEOgogICAgICAgICAgICAgLyogQWN0aXZlIGNvbXBvbmVudHMgYXJlIHRha2VuIGZy b20gdGhlIHVzZXItcHJvdmlkZWQgdmFsdWVzLApAQCAtMzY2LDI3ICszNzksMjcgQEAgdm9pZCBm Zl9zd3Nfb3BfbGlzdF91cGRhdGVfY29tcHMoU3dzT3BMaXN0ICpvcHMpCiAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgY2FzZSBTV1NfT1BfU1dBUF9CWVRFUzoKICAgICAgICAgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgb3AtPmNvbXBzLmZsYWdz W2ldID0gKHByZXYuZmxhZ3NbaV0gXiBTV1NfQ09NUF9TV0FQUEVEKSAmIFNXU19DT01QX0RJUlRZ OwotICAgICAgICAgICAgICAgIG9wLT5jb21wcy5taW5baV0gICA9IHByZXYubWluW2ldOwotICAg ICAgICAgICAgICAgIG9wLT5jb21wcy5tYXhbaV0gICA9IHByZXYubWF4W2ldOworICAgICAgICAg ICAgICAgIEZPUldBUkQoaSwgaSwgKGZsYWdzIF4gU1dTX0NPTVBfU1dBUFBFRCkgJiBTV1NfQ09N UF9ESVJUWSk7CisgICAgICAgICAgICAgICAgb3AtPmNvbXBzLm1pbltpXSA9IHByZXYubWluW2ld OworICAgICAgICAgICAgICAgIG9wLT5jb21wcy5tYXhbaV0gPSBwcmV2Lm1heFtpXTsKICAgICAg ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNXU19PUF9XUklURToK ICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb3AtPnJ3LmVsZW1zOyBpKyspCiAgICAg ICAgICAgICAgICAgYXZfYXNzZXJ0MSghKHByZXYuZmxhZ3NbaV0gJiBTV1NfQ09NUF9HQVJCQUdF KSk7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKLSAgICAgICAgICAg ICAgICBvcC0+Y29tcHMuZmxhZ3NbaV0gPSBwcmV2LmZsYWdzW2ldOworICAgICAgICAgICAgICAg IEZPUldBUkQoaSwgaSwgZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug U1dTX09QX0xTSElGVDoKICAgICAgICAgY2FzZSBTV1NfT1BfUlNISUZUOgogICAgICAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCi0gICAgICAgICAgICAgICAgb3AtPmNvbXBzLmZs YWdzW2ldID0gcHJldi5mbGFnc1tpXSAmIFNXU19DT01QX0RJUlRZOworICAgICAgICAgICAgICAg IEZPUldBUkQoaSwgaSwgZmxhZ3MgJiBTV1NfQ09NUF9ESVJUWSk7CiAgICAgICAgICAgICBicmVh azsKICAgICAgICAgY2FzZSBTV1NfT1BfTUlOOgogICAgICAgICBjYXNlIFNXU19PUF9NQVg6IHsK ICAgICAgICAgICAgIEFWUmF0aW9uYWw2NCAqYm91bmQgPSBvcC0+b3AgPT0gU1dTX09QX01JTiA/ IG9wLT5jb21wcy5tYXggOiBvcC0+Y29tcHMubWluOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCA0OyBpKyspIHsKLSAgICAgICAgICAgICAgICBvcC0+Y29tcHMuZmxhZ3NbaV0gPSBw cmV2LmZsYWdzW2ldOworICAgICAgICAgICAgICAgIEZPUldBUkQoaSwgaSwgZmxhZ3MpOwogICAg ICAgICAgICAgICAgIGlmIChvcC0+Y2xhbXAubGltaXRbaV0uZGVuKQogICAgICAgICAgICAgICAg ICAgICBvcC0+Y29tcHMuZmxhZ3NbaV0gJj0gU1dTX0NPTVBfRElSVFk7CiAgICAgICAgICAgICAg ICAgaWYgKCFib3VuZFtpXS5kZW4pIC8qIHJlc2V0IHVuZGVmaW5lZCBib3VuZHMgdG8ga25vd24g cmFuZ2UgKi8KQEAgLTM5Niw5ICs0MDksOSBAQCB2b2lkIGZmX3N3c19vcF9saXN0X3VwZGF0ZV9j b21wcyhTd3NPcExpc3QgKm9wcykKICAgICAgICAgfQogICAgICAgICBjYXNlIFNXU19PUF9ESVRI RVI6CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAgICAgICAg ICAgICAgIG9wLT5jb21wcy5mbGFnc1tpXSA9IHByZXYuZmxhZ3NbaV07Ci0gICAgICAgICAgICAg ICAgb3AtPmNvbXBzLm1pbltpXSAgID0gcHJldi5taW5baV07Ci0gICAgICAgICAgICAgICAgb3At PmNvbXBzLm1heFtpXSAgID0gcHJldi5tYXhbaV07CisgICAgICAgICAgICAgICAgRk9SV0FSRChp LCBpLCBmbGFncyk7CisgICAgICAgICAgICAgICAgb3AtPmNvbXBzLm1pbltpXSA9IHByZXYubWlu W2ldOworICAgICAgICAgICAgICAgIG9wLT5jb21wcy5tYXhbaV0gPSBwcmV2Lm1heFtpXTsKICAg ICAgICAgICAgICAgICBpZiAob3AtPmRpdGhlci55X29mZnNldFtpXSA8IDApCiAgICAgICAgICAg ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIC8qIFN0cmlwIHplcm8gZmxhZyBi ZWNhdXNlIG9mIHRoZSBub256ZXJvIGRpdGhlcmluZyBvZmZzZXQgKi8KQEAgLTQxMiwyNCArNDI1 LDIxIEBAIHZvaWQgZmZfc3dzX29wX2xpc3RfdXBkYXRlX2NvbXBzKFN3c09wTGlzdCAqb3BzKQog ICAgICAgICAgICAgICAgIGNvbnN0IGludCBwYXR0ZXJuID0gb3AtPnBhY2sucGF0dGVybltpXTsK ICAgICAgICAgICAgICAgICBpZiAocGF0dGVybikgewogICAgICAgICAgICAgICAgICAgICBhdl9h c3NlcnQxKHBhdHRlcm4gPCAzMik7Ci0gICAgICAgICAgICAgICAgICAgIG9wLT5jb21wcy5mbGFn c1tpXSA9IHByZXYuZmxhZ3NbMF0gJiBTV1NfQ09NUF9ESVJUWTsKLSAgICAgICAgICAgICAgICAg ICAgb3AtPmNvbXBzLm1pbltpXSAgID0gUSgwKTsKLSAgICAgICAgICAgICAgICAgICAgb3AtPmNv bXBzLm1heFtpXSAgID0gUSgoMVVMTCA8PCBwYXR0ZXJuKSAtIDEpOworICAgICAgICAgICAgICAg ICAgICBGT1JXQVJEKGksIDAsIGZsYWdzICYgU1dTX0NPTVBfRElSVFkpOworICAgICAgICAgICAg ICAgICAgICBvcC0+Y29tcHMubWluW2ldID0gUSgwKTsKKyAgICAgICAgICAgICAgICAgICAgb3At PmNvbXBzLm1heFtpXSA9IFEoKDFVTEwgPDwgcGF0dGVybikgLSAxKTsKICAgICAgICAgICAgICAg ICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgb3AtPmNvbXBzLmZsYWdzW2ldID0gU1dTX0NP TVBfR0FSQkFHRTsKKyAgICAgICAgICAgICAgICAgICAgUkVTRVQoaSk7CiAgICAgICAgICAgICB9 CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTV1NfT1BfUEFDSzogewotICAgICAg ICAgICAgU3dzQ29tcEZsYWdzIGZsYWdzID0gU1dTX0NPTVBfSURFTlRJVFk7CisgICAgICAgIGNh c2UgU1dTX09QX1BBQ0s6CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykg ewogICAgICAgICAgICAgICAgIGlmIChvcC0+cGFjay5wYXR0ZXJuW2ldKQotICAgICAgICAgICAg ICAgICAgICBmbGFncyA9IG1lcmdlX2NvbXBfZmxhZ3MoZmxhZ3MsIHByZXYuZmxhZ3NbaV0pOwor ICAgICAgICAgICAgICAgICAgICBGT1JXQVJEKDAsIGksIGZsYWdzICYgU1dTX0NPTVBfRElSVFkp OwogICAgICAgICAgICAgICAgIGlmIChpID4gMCkgLyogY2xlYXIgcmVtYWluaW5nIGNvbXBzIGZv ciBzYW5pdHkgKi8KLSAgICAgICAgICAgICAgICAgICAgb3AtPmNvbXBzLmZsYWdzW2ldID0gU1dT X0NPTVBfR0FSQkFHRTsKKyAgICAgICAgICAgICAgICAgICAgUkVTRVQoaSk7CiAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICBvcC0+Y29tcHMuZmxhZ3NbMF0gPSBmbGFncyAmIFNXU19DT01QX0RJ UlRZOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBTV1NfT1Bf Q0xFQVI6CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAg ICAgICAgICAgIGlmIChTV1NfQ09NUF9URVNUKG9wLT5jbGVhci5tYXNrLCBpKSkgewpAQCAtNDM5 LDE3ICs0NDksMTcgQEAgdm9pZCBmZl9zd3Nfb3BfbGlzdF91cGRhdGVfY29tcHMoU3dzT3BMaXN0 ICpvcHMpCiAgICAgICAgICAgICAgICAgICAgIGlmIChvcC0+Y2xlYXIudmFsdWVbaV0uZGVuID09 IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICBvcC0+Y29tcHMuZmxhZ3NbaV0gfD0gU1dTX0NP TVBfRVhBQ1Q7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg b3AtPmNvbXBzLmZsYWdzW2ldID0gcHJldi5mbGFnc1tpXTsKKyAgICAgICAgICAgICAgICAgICAg Rk9SV0FSRChpLCBpLCBmbGFncyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1dTX09QX1NXSVpaTEU6CiAgICAgICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKLSAgICAgICAgICAgICAgICBvcC0+Y29t cHMuZmxhZ3NbaV0gPSBwcmV2LmZsYWdzW29wLT5zd2l6emxlLmluW2ldXTsKKyAgICAgICAgICAg ICAgICBGT1JXQVJEKGksIG9wLT5zd2l6emxlLmluW2ldLCBmbGFncyk7CiAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgY2FzZSBTV1NfT1BfQ09OVkVSVDoKICAgICAgICAgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgb3AtPmNvbXBzLmZsYWdzW2ld ID0gcHJldi5mbGFnc1tpXTsKKyAgICAgICAgICAgICAgICBGT1JXQVJEKGksIGksIGZsYWdzKTsK ICAgICAgICAgICAgICAgICBpZiAoIShwcmV2LmZsYWdzW2ldICYgU1dTX0NPTVBfRVhBQ1QpIHx8 IG9wLT5jb252ZXJ0LmV4cGFuZCkKICAgICAgICAgICAgICAgICAgICAgb3AtPmNvbXBzLmZsYWdz W2ldICY9IFNXU19DT01QX0RJUlRZOwogICAgICAgICAgICAgICAgIGlmIChmZl9zd3NfcGl4ZWxf dHlwZV9pc19pbnQob3AtPmNvbnZlcnQudG8pKQpAQCAtNDU4LDcgKzQ2OCw2IEBAIHZvaWQgZmZf c3dzX29wX2xpc3RfdXBkYXRlX2NvbXBzKFN3c09wTGlzdCAqb3BzKQogICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgIGNhc2UgU1dTX09QX0xJTkVBUjoKICAgICAgICAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgNDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgU3dzQ29tcEZsYWdzIGZsYWdzID0g U1dTX0NPTVBfSURFTlRJVFk7CiAgICAgICAgICAgICAgICAgQVZSYXRpb25hbDY0IG1pbiA9IFEo MCksIG1heCA9IFEoMCk7CiAgICAgICAgICAgICAgICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICAg ICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCA0OyBqKyspIHsKQEAgLTQ2NiwzMyArNDc1 LDMyIEBAIHZvaWQgZmZfc3dzX29wX2xpc3RfdXBkYXRlX2NvbXBzKFN3c09wTGlzdCAqb3BzKQog ICAgICAgICAgICAgICAgICAgICBBVlJhdGlvbmFsNjQgbWluayA9IGF2X211bF9xNjQocHJldi5t aW5bal0sIGspOwogICAgICAgICAgICAgICAgICAgICBBVlJhdGlvbmFsNjQgbWF4ayA9IGF2X211 bF9xNjQocHJldi5tYXhbal0sIGspOwogICAgICAgICAgICAgICAgICAgICBpZiAoay5udW0pIHsK LSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gbWVyZ2VfY29tcF9mbGFncyhmbGFncywg cHJldi5mbGFnc1tqXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBGT1JXQVJEKGksIGosIGZs YWdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrLmRlbiAhPSAxKSAvKiBmcmFjdGlv bmFsIGNvZWZmaWNpZW50ICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0g flNXU19DT01QX0VYQUNUOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLT5jb21wcy5m bGFnc1tpXSAmPSB+U1dTX0NPTVBfRVhBQ1Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo ay5udW0gPCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZGU1dBUChBVlJhdGlvbmFs NjQsIG1pbmssIG1heGspOwogICAgICAgICAgICAgICAgICAgICAgICAgbWluID0gYXZfYWRkX3E2 NChtaW4sIG1pbmspOwogICAgICAgICAgICAgICAgICAgICAgICAgbWF4ID0gYXZfYWRkX3E2NCht YXgsIG1heGspOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdCB8fCBhdl9jbXBf cTY0KGssIFEoMSkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzICY9IFNXU19D T01QX0RJUlRZOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLT5jb21wcy5mbGFnc1tp XSAmPSBTV1NfQ09NUF9ESVJUWTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gZmFs c2U7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICAgaWYgKG9wLT5saW4ubVtpXVs0XS5udW0pIHsgLyogbm9uemVybyBvZmZzZXQgKi8KLSAg ICAgICAgICAgICAgICAgICAgZmxhZ3MgJj0gflNXU19DT01QX1pFUk8gJiBTV1NfQ09NUF9ESVJU WTsKKyAgICAgICAgICAgICAgICAgICAgb3AtPmNvbXBzLmZsYWdzW2ldICY9IH5TV1NfQ09NUF9a RVJPICYgU1dTX0NPTVBfRElSVFk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChvcC0+bGluLm1b aV1bNF0uZGVuICE9IDEpIC8qIGZyYWN0aW9uYWwgb2Zmc2V0ICovCi0gICAgICAgICAgICAgICAg ICAgICAgICBmbGFncyAmPSB+U1dTX0NPTVBfRVhBQ1Q7CisgICAgICAgICAgICAgICAgICAgICAg ICBvcC0+Y29tcHMuZmxhZ3NbaV0gJj0gflNXU19DT01QX0VYQUNUOwogICAgICAgICAgICAgICAg ICAgICBtaW4gPSBhdl9hZGRfcTY0KG1pbiwgb3AtPmxpbi5tW2ldWzRdKTsKICAgICAgICAgICAg ICAgICAgICAgbWF4ID0gYXZfYWRkX3E2NChtYXgsIG9wLT5saW4ubVtpXVs0XSk7CiAgICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICAgIG9wLT5jb21wcy5mbGFnc1tpXSA9IGZsYWdzOwog ICAgICAgICAgICAgICAgIG9wLT5jb21wcy5taW5baV0gPSBtaW47CiAgICAgICAgICAgICAgICAg b3AtPmNvbXBzLm1heFtpXSA9IG1heDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICBjYXNlIFNXU19PUF9TQ0FMRToKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgNDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgb3AtPmNvbXBzLmZsYWdzW2ldID0gcHJl di5mbGFnc1tpXSAmIFNXU19DT01QX0RJUlRZOworICAgICAgICAgICAgICAgIEZPUldBUkQoaSwg aSwgZmxhZ3MgJiBTV1NfQ09NUF9ESVJUWSk7CiAgICAgICAgICAgICAgICAgaWYgKG9wLT5zY2Fs ZS5mYWN0b3IuZGVuICE9IDEpIC8qIGZyYWN0aW9uYWwgc2NhbGUgKi8KICAgICAgICAgICAgICAg ICAgICAgb3AtPmNvbXBzLmZsYWdzW2ldICY9IH5TV1NfQ09NUF9FWEFDVDsKICAgICAgICAgICAg ICAgICBpZiAob3AtPnNjYWxlLmZhY3Rvci5udW0gPCAwKQpAQCAtNTIxLDcgKzUyOSw3IEBAIHZv aWQgZmZfc3dzX29wX2xpc3RfdXBkYXRlX2NvbXBzKFN3c09wTGlzdCAqb3BzKQogCiAgICAgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoIW5lZWRfb3V0 W2ldKQotICAgICAgICAgICAgICAgIG9wLT5jb21wcy5mbGFnc1tpXSA9IFNXU19DT01QX0dBUkJB R0U7CisgICAgICAgICAgICAgICAgUkVTRVQoaSk7CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0 Y2ggKG9wLT5vcCkgewpAQCAtNTc1LDYgKzU4Myw5IEBAIHZvaWQgZmZfc3dzX29wX2xpc3RfdXBk YXRlX2NvbXBzKFN3c09wTGlzdCAqb3BzKQogCiAgICAgICAgIG1lbWNweShuZWVkX291dCwgbmVl ZF9pbiwgc2l6ZW9mKG5lZWRfaW4pKTsKICAgICB9CisKKyAgICAjdW5kZWYgRk9SV0FSRAorICAg ICN1bmRlZiBSRVNFVAogfQogCiBzdGF0aWMgdm9pZCBvcF91bmluaXQoU3dzT3AgKm9wKQotLSAK Mi41Mi4wCgoKRnJvbSAzMWZiYjJlNWI1MDY5OWUyMjYwZDNjOTNlM2ViNDM1ZjZkZGIyYmQzIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtsYXMgSGFhcyA8Z2l0QGhhYXNuLmRldj4K RGF0ZTogVGh1LCAyNSBKdW4gMjAyNiAxODozNjo0NCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDMv MThdIHN3c2NhbGUvb3BzOiBzb2x2ZSBmb3IgY29tcG9uZW50IGRlcGVuZGVuY2llcwoKTmVlZGVk IHRvIGRldGVybWluZSByZXZlcnNlIGRlcGVuZGVuY2llcyBvZiBkaWZmZXJlbnQgaW5wdXQgcGxh bmVzLCBmb3IKYXBwcm9wcmlhdGVseSBzcGxpdHRpbmcgb3AgbGlzdHMgaW52b2x2aW5nIHN1YnNh bXBsZWQgcGxhbmVzLgoKR2VuZXJhdGVzIGJlbmlnbiBkaWZmcyB0aGF0IGp1c3QgcmVmbGVjdCB0 aGUgbmV3IGFkZGl0aW9uLCBlLmcuOgoKIHl1dmE0NDRwIDE2eDE2IC0+IHJnYjI0IDE2eDE2Ogog ICBbIHU4ID09PVhdIFNXU19PUF9SRUFEICAgICAgICAgOiAzIGVsZW0ocykgcGxhbmFyID4+IDAK ICAgICBtaW46IHswIDAgMCBffSwgbWF4OiB7MjU1IDI1NSAyNTUgX30KKyAgICBpbnB1dHM6IHt4 IHkgeiBffSwgb3V0cHV0czoge3h5eiB5eiB4eSBffQogICBbIHU4ID09PVhdIFNXU19PUF9DT05W RVJUICAgICAgOiB1OCAtPiBmMzIKICAgICBtaW46IHswIDAgMCBffSwgbWF4OiB7MjU1IDI1NSAy NTUgX30KKyAgICBpbnB1dHM6IHt4IHkgeiBffSwgb3V0cHV0czoge3h5eiB5eiB4eSBffQogICBb ZjMyIC4uLlhdIFNXU19PUF9MSU5FQVIgICAgICAgOiBtYXRyaXgzK29mZjMgW1s4NS83MyAwIDEu NTk2MDI3IDAgLTIyMi45MjE1NjZdIFs4NS83MyAtMC4zOTE3NjIgLTAuODEyOTY4IDAgMTM1LjU3 NTI5NV0gWzg1LzczIDIuMDE3MjMyIDAgMCAtMjc2LjgzNTg1MV0gWzAgMCAwIDEgMF1dCiAgICAg bWluOiB7LTIyMi45MjE1NjYgLTE3MS42MzA4MzkgLTI3Ni44MzU4NTEgX30sIG1heDogezQ4MC45 ODMwNzMgNDMyLjQ5MzEwMyA1MzQuNDc2MTUzIF99CisgICAgaW5wdXRzOiB7eHogeHl6IHh5IF99 LCBvdXRwdXRzOiB7eCB5IHogX30KICAgW2YzMiAuLi5YXSBTV1NfT1BfRElUSEVSICAgICAgIDog MTZ4MTYgbWF0cml4ICsgezAgMyAyIC0xfQogICAgIG1pbjogey0yMjIuOTE5NjEyIC0xNzEuNjI4 ODg2IC0yNzYuODMzODk4IF99LCBtYXg6IHs0ODEuOTgxMTIwIDQzMy40OTExNTAgNTM1LjQ3NDIw MCBffQorICAgIGlucHV0czoge3h6IHh5eiB4eSBffSwgb3V0cHV0czoge3ggeSB6IF99CiAgIFtm MzIgLi4uWF0gU1dTX09QX01BWCAgICAgICAgICA6IHswIDAgMCBffSA8PSB4CiAgICAgbWluOiB7 MCAwIDAgX30sIG1heDogezQ4MS45ODExMjAgNDMzLjQ5MTE1MCA1MzUuNDc0MjAwIF99CisgICAg aW5wdXRzOiB7eHogeHl6IHh5IF99LCBvdXRwdXRzOiB7eCB5IHogX30KICAgW2YzMiAuLi5YXSBT V1NfT1BfTUlOICAgICAgICAgIDogeCA8PSB7MjU1IDI1NSAyNTUgX30KICAgICBtaW46IHswIDAg MCBffSwgbWF4OiB7MjU1IDI1NSAyNTUgX30KKyAgICBpbnB1dHM6IHt4eiB4eXogeHkgX30sIG91 dHB1dHM6IHt4IHkgeiBffQogICBbZjMyICsrK1hdIFNXU19PUF9DT05WRVJUICAgICAgOiBmMzIg LT4gdTgKICAgICBtaW46IHswIDAgMCBffSwgbWF4OiB7MjU1IDI1NSAyNTUgX30KKyAgICBpbnB1 dHM6IHt4eiB4eXogeHkgX30sIG91dHB1dHM6IHt4IHkgeiBffQogICBbIHU4IFhYWFhdIFNXU19P UF9XUklURSAgICAgICAgOiAzIGVsZW0ocykgcGFja2VkID4+IDAKICAgICAoJ1gnIHVudXNlZCwg J3onIGJ5dGVzd2FwcGVkLCAnPScgY29waWVkLCAnJCcgY29uc3QsICcrJyBpbnRlZ2VyLCAnMCcg emVybykKClNwb25zb3JlZC1ieTogU292ZXJlaWduIFRlY2ggRnVuZApTaWduZWQtb2ZmLWJ5OiBO aWtsYXMgSGFhcyA8Z2l0QGhhYXNuLmRldj4KLS0tCiBsaWJzd3NjYWxlL29wcy5jICAgICAgICAg ICAgfCA0NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiBsaWJzd3NjYWxl L29wcy5oICAgICAgICAgICAgfCAgMyArKysKIHRlc3RzL3JlZi9mYXRlL3N3cy1vcHMtbGlzdCB8 ICAyICstCiAzIGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvbGlic3dzY2FsZS9vcHMuYyBiL2xpYnN3c2NhbGUvb3BzLmMKaW5kZXgg YmUzZTk4NTNhOS4uMjE0NjJkZjM4NiAxMDA2NDQKLS0tIGEvbGlic3dzY2FsZS9vcHMuYworKysg Yi9saWJzd3NjYWxlL29wcy5jCkBAIC0yOTIsNyArMjkyLDggQEAgc3RhdGljIHZvaWQgYXBwbHlf ZmlsdGVyX3dlaWdodHMoU3dzQ29tcHMgKmNvbXBzLCBjb25zdCBTd3NDb21wcyAqcHJldiwKICAg ICBjb25zdCBBVlJhdGlvbmFsNjQgcG9zdyA9IHsgd2VpZ2h0cy0+c3VtX3Bvc2l0aXZlLCBTV1Nf RklMVEVSX1NDQUxFIH07CiAgICAgY29uc3QgQVZSYXRpb25hbDY0IG5lZ3cgPSB7IHdlaWdodHMt PnN1bV9uZWdhdGl2ZSwgU1dTX0ZJTFRFUl9TQ0FMRSB9OwogICAgIGZvciAoaW50IGkgPSAwOyBp IDwgNDsgaSsrKSB7Ci0gICAgICAgIGNvbXBzLT5mbGFnc1tpXSA9IHByZXYtPmZsYWdzW2ldICYg U1dTX0NPTVBfRElSVFk7CisgICAgICAgIGNvbXBzLT5mbGFnc1tpXSAgPSBwcmV2LT5mbGFnc1tp XSAmIFNXU19DT01QX0RJUlRZOworICAgICAgICBjb21wcy0+ZGVwX2luW2ldID0gcHJldi0+ZGVw X2luW2ldOwogICAgICAgICAvKiBPbmx5IHBvaW50IHNhbXBsaW5nIHByZXNlcnZlcyBleGFjdG5l c3MgKi8KICAgICAgICAgaWYgKHdlaWdodHMtPmZpbHRlcl9zaXplICE9IDEpCiAgICAgICAgICAg ICBjb21wcy0+ZmxhZ3NbaV0gJj0gflNXU19DT01QX0VYQUNUOwpAQCAtMzMxLDE3ICszMzIsMjEg QEAgdm9pZCBmZl9zd3Nfb3BfbGlzdF91cGRhdGVfY29tcHMoU3dzT3BMaXN0ICpvcHMpCiAgICAg ICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg NDsgaSsrKQotICAgICAgICAgICAgb3AtPmNvbXBzLmZsYWdzW2ldID0gU1dTX0NPTVBfSURFTlRJ VFk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAgICAgICBv cC0+Y29tcHMuZmxhZ3NbaV0gID0gU1dTX0NPTVBfSURFTlRJVFk7CisgICAgICAgICAgICBvcC0+ Y29tcHMuZGVwX2luW2ldID0gU1dTX0NPTVBfTk9ORTsKKyAgICAgICAgfQogCiAgICAgICAgICNk ZWZpbmUgRk9SV0FSRChJLCBKLCBFWFBSKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKICAgICAgICAgICAgIFN3c0NvbXBGbGFncyBmbGFncyA9IHByZXYuZmxh Z3NbSl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgb3At PmNvbXBzLmZsYWdzW0ldID0gbWVyZ2VfY29tcF9mbGFncyhvcC0+Y29tcHMuZmxhZ3NbSV0sIChF WFBSKSk7ICBcCisgICAgICAgICAgICBvcC0+Y29tcHMuZGVwX2luW0ldIHw9IHByZXYuZGVwX2lu W0pdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgfSB3aGlsZSAoMCkK IAogICAgICAgICAjZGVmaW5lIFJFU0VUKEkpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBvcC0+Y29tcHMuZmxhZ3Nb SV0gPSBTV1NfQ09NUF9HQVJCQUdFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg ICAgICAgICAgIG9wLT5jb21wcy5taW5bSV0gPSBvcC0+Y29tcHMubWF4W0ldID0gKEFWUmF0aW9u YWw2NCkgezB9OyAgICAgICAgICAgXAorICAgICAgICAgICAgb3AtPmNvbXBzLmRlcF9pbltJXSA9 IFNXU19DT01QX05PTkU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg IH0gd2hpbGUgKDApCiAKICAgICAgICAgc3dpdGNoIChvcC0+b3ApIHsKQEAgLTM2MCw2ICszNjUs NyBAQCB2b2lkIGZmX3N3c19vcF9saXN0X3VwZGF0ZV9jb21wcyhTd3NPcExpc3QgKm9wcykKICAg ICAgICAgICAgICAgICBvcC0+Y29tcHMuZmxhZ3NbaV0gPSBvcHMtPmNvbXBzX3NyYy5mbGFnc1tp ZHhdICYgU1dTX0NPTVBfRElSVFk7CiAgICAgICAgICAgICAgICAgb3AtPmNvbXBzLm1pbltpXSAg ID0gb3BzLT5jb21wc19zcmMubWluW2lkeF07CiAgICAgICAgICAgICAgICAgb3AtPmNvbXBzLm1h eFtpXSAgID0gb3BzLT5jb21wc19zcmMubWF4W2lkeF07CisgICAgICAgICAgICAgICAgb3AtPmNv bXBzLmRlcF9pbltpXSA9IFNXU19DT01QKGlkeCk7CiAKICAgICAgICAgICAgICAgICAvKioKICAg ICAgICAgICAgICAgICAgKiBEb24ndCBtYXJrIHBhY2tlZCBvciBmcmFjdGlvbmFsIHJlYWRzIGFz IGEgY29weSwgYmVjYXVzZSB0aGUKQEAgLTUyMSwxMyArNTI3LDE1IEBAIHZvaWQgZmZfc3dzX29w X2xpc3RfdXBkYXRlX2NvbXBzKFN3c09wTGlzdCAqb3BzKQogICAgICAgICBwcmV2ID0gb3AtPmNv bXBzOwogICAgIH0KIAotICAgIC8qIEJhY2t3YXJkcyBwYXNzLCBzb2x2ZXMgZm9yIGNvbXBvbmVu dCBkZXBlbmRlbmNpZXMgKi8KLSAgICBib29sIG5lZWRfb3V0WzRdID0geyBmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSB9OworICAgIC8qIEJhY2t3YXJkcyBwYXNzLCBzb2x2ZXMgZm9yIG91dHB1 dCBjb21wb25lbnQgZGVwZW5kZW5jaWVzICovCisgICAgU3dzQ29tcE1hc2sgbmVlZF9vdXRbNF0g PSB7MH07CisKICAgICBmb3IgKGludCBuID0gb3BzLT5udW1fb3BzIC0gMTsgbiA+PSAwOyBuLS0p IHsKICAgICAgICAgU3dzT3AgKm9wID0gJm9wcy0+b3BzW25dOwotICAgICAgICBib29sIG5lZWRf aW5bNF0gPSB7IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlIH07CisgICAgICAgIFN3c0NvbXBN YXNrIG5lZWRfaW5bNF0gPSB7MH07CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBp KyspIHsKKyAgICAgICAgICAgIG9wLT5jb21wcy5kZXBfb3V0W2ldID0gbmVlZF9vdXRbaV07CiAg ICAgICAgICAgICBpZiAoIW5lZWRfb3V0W2ldKQogICAgICAgICAgICAgICAgIFJFU0VUKGkpOwog ICAgICAgICB9CkBAIC01MzYsNyArNTQ0LDcgQEAgdm9pZCBmZl9zd3Nfb3BfbGlzdF91cGRhdGVf Y29tcHMoU3dzT3BMaXN0ICpvcHMpCiAgICAgICAgIGNhc2UgU1dTX09QX1JFQUQ6CiAgICAgICAg IGNhc2UgU1dTX09QX1dSSVRFOgogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvcC0+ cncuZWxlbXM7IGkrKykKLSAgICAgICAgICAgICAgICBuZWVkX2luW2ldID0gb3AtPm9wID09IFNX U19PUF9XUklURTsKKyAgICAgICAgICAgICAgICBuZWVkX2luW2ldID0gKG9wLT5vcCA9PSBTV1Nf T1BfV1JJVEUpID8gU1dTX0NPTVAoaSkgOiAwOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IG9w LT5ydy5lbGVtczsgaSA8IDQ7IGkrKykKICAgICAgICAgICAgICAgICBuZWVkX2luW2ldID0gbmVl ZF9vdXRbaV07CiAgICAgICAgICAgICBicmVhazsKQEAgLTc4OSw2ICs3OTcsMTcgQEAgc3RhdGlj IGNoYXIgZGVzY3JpYmVfY29tcF9mbGFncyhTd3NDb21wRmxhZ3MgZmxhZ3MpCiAgICAgICAgIHJl dHVybiAnLic7CiB9CiAKK3N0YXRpYyB2b2lkIHByaW50X2RlcHMoQVZCUHJpbnQgKmJwLCBjb25z dCBTd3NDb21wTWFzayAqZGVwcykKK3sKKyAgICBhdl9icHJpbnRmKGJwLCAieyIpOworICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAgIGlmIChpKQorICAgICAgICAgICAg YXZfYnByaW50ZihicCwgIiAiKTsKKyAgICAgICAgYXZfYnByaW50ZihicCwgIiVzIiwgZGVwc1tp XSA/IGZmX3N3c19jb21wX21hc2tfc3RyKGRlcHNbaV0pIDogIl8iKTsKKyAgICB9CisgICAgYXZf YnByaW50ZihicCwgIn0iKTsKK30KKwogc3RhdGljIHZvaWQgcHJpbnRfcShBVkJQcmludCAqYnAs IGNvbnN0IEFWUmF0aW9uYWw2NCBxKQogewogICAgIGlmICghcS5kZW4pIHsKQEAgLTk3Niw2ICs5 OTUsMTkgQEAgdm9pZCBmZl9zd3Nfb3BfbGlzdF9wcmludCh2b2lkICpsb2csIGludCBsZXYsIGlu dCBsZXZfZXh0cmEsCiAgICAgICAgICAgICBhdl9sb2cobG9nLCBsZXZfZXh0cmEsICIlc1xuIiwg YnAuc3RyKTsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgaGFzX2RlcHMgPSBmYWxzZTsKKyAg ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCisgICAgICAgICAgICBoYXNfZGVwcyB8 PSBvcC0+Y29tcHMuZGVwX2luW2ldIHx8IG9wLT5jb21wcy5kZXBfb3V0W2ldOworICAgICAgICBp ZiAoaGFzX2RlcHMpIHsKKyAgICAgICAgICAgIGF2X2JwcmludF9jbGVhcigmYnApOworICAgICAg ICAgICAgYXZfYnByaW50ZigmYnAsICIgICAgaW5wdXRzOiAiKTsKKyAgICAgICAgICAgIHByaW50 X2RlcHMoJmJwLCBvcC0+Y29tcHMuZGVwX2luKTsKKyAgICAgICAgICAgIGF2X2JwcmludGYoJmJw LCAiLCBvdXRwdXRzOiAiKTsKKyAgICAgICAgICAgIHByaW50X2RlcHMoJmJwLCBvcC0+Y29tcHMu ZGVwX291dCk7CisgICAgICAgICAgICBhdl9hc3NlcnQwKGF2X2JwcmludF9pc19jb21wbGV0ZSgm YnApKTsKKyAgICAgICAgICAgIGF2X2xvZyhsb2csIGxldl9leHRyYSwgIiVzXG4iLCBicC5zdHIp OworICAgICAgICB9CisKICAgICB9CiAKICAgICBhdl9sb2cobG9nLCBsZXYsICIgICAgKCdYJyB1 bnVzZWQsICd6JyBieXRlc3dhcHBlZCwgJz0nIGNvcGllZCwgJyQnIGNvbnN0LCAnKycgaW50ZWdl ciwgJzAnIHplcm8pXG4iKTsKZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvb3BzLmggYi9saWJzd3Nj YWxlL29wcy5oCmluZGV4IDY3ZGQwNGQyMjcuLjAyYzEyMjY1NWEgMTAwNjQ0Ci0tLSBhL2xpYnN3 c2NhbGUvb3BzLmgKKysrIGIvbGlic3dzY2FsZS9vcHMuaApAQCAtODUsNiArODUsOSBAQCB0eXBl ZGVmIHN0cnVjdCBTd3NDb21wcyB7CiAgICAgLyogS2VlcHMgdHJhY2sgb2YgdGhlIGtub3duIHBv c3NpYmxlIHZhbHVlIHJhbmdlLCBvciB7MCwgMH0gZm9yIHVuZGVmaW5lZAogICAgICAqIG9yICh1 bmtub3duIHJhbmdlKSBmbG9hdGluZyBwb2ludCBpbnB1dHMgKi8KICAgICBBVlJhdGlvbmFsNjQg bWluWzRdLCBtYXhbNF07CisKKyAgICAvKiBLZWVwcyB0cmFjayBvZiBpbnB1dCAoZm9yd2FyZCkg YW5kIG91dHB1dCAocmV2ZXJzZSkgZGVwZW5kZW5jaWVzICovCisgICAgU3dzQ29tcE1hc2sgZGVw X2luWzRdLCBkZXBfb3V0WzRdOwogfSBTd3NDb21wczsKIAogdHlwZWRlZiBlbnVtIFN3c1JlYWRX cml0ZU1vZGUgewpkaWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvc3dzLW9wcy1saXN0IGIvdGVz dHMvcmVmL2ZhdGUvc3dzLW9wcy1saXN0CmluZGV4IDBmYjg4ZDY1ZGEuLjhiOTJmZjYwYjYgMTAw NjQ0Ci0tLSBhL3Rlc3RzL3JlZi9mYXRlL3N3cy1vcHMtbGlzdAorKysgYi90ZXN0cy9yZWYvZmF0 ZS9zd3Mtb3BzLWxpc3QKQEAgLTEgKzEgQEAKLTNhOGYzYmNjZDdjMWY4NDA3ZWU3YzQwZmQyNmQ4 NmNjCis2MzQ0OGE5ZDczNDVhYzYxYmVkY2I0NzkwNDUzNThmMwotLSAKMi41Mi4wCgoKRnJvbSA1 ZDMwMWU1ZDgxMWQ0NTMwYTM5OWNjMjUwNTUxNjIyZDI0MmI5N2Q0IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBOaWtsYXMgSGFhcyA8Z2l0QGhhYXNuLmRldj4KRGF0ZTogRnJpLCAxNyBK dWwgMjAyNiAxMjo0MTo0MyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDQvMThdIHN3c2NhbGUvb3Bz OiByZW1vdmUgU3dzTGluZWFyT3AubWFzawoKVGhpcyB3YXMgb3JpZ2luYWxseSBpbnRyb2R1Y2Vk IHRvIG1ha2UgbWF0Y2hpbmcgbGluZWFyIG9wcyBhZ2FpbnN0CmltcGxlbWVudGF0aW9ucyBmYXN0 ZXIuIEhvd2V2ZXIsIHNpbmNlIHRoaXMgaXMgbm93IGhhbmRsZWQgb24gdGhlIHVvcHMKbGV2ZWws IHRoZXJlIGlzIG5vIG1vcmUgcmVhc29uIHRvIGNhcnJ5IHRoaXMgbWV0YWRhdGEgb24gdGhlIG9w cyBsZXZlbC4KClNpbXBsaWZpZXMgYSBsb3Qgb2YgcGxhY2VzIGluIHRoZSBjb2RlLiBJdCB3aWxs IHNpbXBsaWZ5IGV2ZW4gbW9yZSwgb25jZQp0aGUgbGluZWFyIG9wdGltaXphdGlvbnMgYXJlIG1v dmVkIHRvIHRoZSB1b3BzIGxldmVsLgoKU3BvbnNvcmVkLWJ5OiBTb3ZlcmVpZ24gVGVjaCBGdW5k ClNpZ25lZC1vZmYtYnk6IE5pa2xhcyBIYWFzIDxnaXRAaGFhc24uZGV2PgotLS0KIGxpYnN3c2Nh bGUvYWFyY2g2NC9vcHNfaW1wbF9jb252LmMgfCAgMyArKy0KIGxpYnN3c2NhbGUvZm9ybWF0LmMg ICAgICAgICAgICAgICAgfCAgNyArLS0tLS0tCiBsaWJzd3NjYWxlL29wcy5oICAgICAgICAgICAg ICAgICAgIHwgIDggKy0tLS0tLS0KIGxpYnN3c2NhbGUvb3BzX29wdGltaXplci5jICAgICAgICAg fCAxNyArKysrKysrLS0tLS0tLS0tLQogbGlic3dzY2FsZS91b3BzLmMgICAgICAgICAgICAgICAg ICB8ICAzICsrLQogNSBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9saWJzd3NjYWxlL2FhcmNoNjQvb3BzX2ltcGxfY29udi5jIGIv bGlic3dzY2FsZS9hYXJjaDY0L29wc19pbXBsX2NvbnYuYwppbmRleCAyMTM2MGU1MWM3Li5kYWVi YWM5ZjA5IDEwMDY0NAotLS0gYS9saWJzd3NjYWxlL2FhcmNoNjQvb3BzX2ltcGxfY29udi5jCisr KyBiL2xpYnN3c2NhbGUvYWFyY2g2NC9vcHNfaW1wbF9jb252LmMKQEAgLTI2OCw4ICsyNjgsOSBA QCBzdGF0aWMgaW50IGNvbnZlcnRfdG9fYWFyY2g2NF9pbXBsKFN3c0NvbnRleHQgKmN0eCwgY29u c3QgU3dzT3BMaXN0ICpvcHMsIGludCBuLAogICAgIGNhc2UgU1dTX1VPUF9MSU5FQVI6CiAgICAg Y2FzZSBTV1NfVU9QX0xJTkVBUl9GTUE6CiAgICAgICAgIG91dC0+bWFzayA9IDA7CisgICAgICAg IGNvbnN0IHVpbnQzMl90IGxpbl9tYXNrID0gZmZfc3dzX2xpbmVhcl9tYXNrKCZvcC0+bGluKTsK ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKLSAgICAgICAgICAgIGlmICgh U1dTX09QX05FRURFRChvcCwgaSkgfHwgIShvcC0+bGluLm1hc2sgJiBTV1NfTUFTS19ST1coaSkp KSB7CisgICAgICAgICAgICBpZiAoIVNXU19PUF9ORUVERUQob3AsIGkpIHx8ICEobGluX21hc2sg JiBTV1NfTUFTS19ST1coaSkpKSB7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGog PCA1OyBqKyspCiAgICAgICAgICAgICAgICAgICAgIG91dC0+cGFyLmxpbi56ZXJvIHw9IFNXU19N QVNLKGksIGopOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvbGlic3dz Y2FsZS9mb3JtYXQuYyBiL2xpYnN3c2NhbGUvZm9ybWF0LmMKaW5kZXggNzBjYzgxM2RkNy4uMjUz MTQzNWRhZSAxMDA2NDQKLS0tIGEvbGlic3dzY2FsZS9mb3JtYXQuYworKysgYi9saWJzd3NjYWxl L2Zvcm1hdC5jCkBAIC0xMjgzLDcgKzEyODMsNiBAQCBzdGF0aWMgU3dzTGluZWFyT3AgZm10X2Vu Y29kZV9yYW5nZShjb25zdCBTd3NGb3JtYXQgKmZtdCwgYm9vbCAqaW5jb21wbGV0ZSkKICAgICAg ICAgYy5tWzBdWzBdID0gYXZfbmVnX3E2NChjLm1bMF1bMF0pOwogICAgIH0KIAotICAgIGMubWFz ayA9IGZmX3N3c19saW5lYXJfbWFzaygmYyk7CiAgICAgcmV0dXJuIGM7CiB9CiAKQEAgLTEzMDIs NyArMTMwMSw2IEBAIHN0YXRpYyBTd3NMaW5lYXJPcCBmbXRfZGVjb2RlX3JhbmdlKGNvbnN0IFN3 c0Zvcm1hdCAqZm10LCBib29sICppbmNvbXBsZXRlKQogICAgIGlmICghKGZtdC0+ZGVzYy0+Zmxh Z3MgJiBBVl9QSVhfRk1UX0ZMQUdfQUxQSEEpKQogICAgICAgICBjLm1bM11bNF0gPSBRKDEpOwog Ci0gICAgYy5tYXNrID0gZmZfc3dzX2xpbmVhcl9tYXNrKCZjKTsKICAgICByZXR1cm4gYzsKIH0K IApAQCAtMTQ2NCwxNSArMTQ2MiwxMiBAQCBsaW5lYXJfbWF0Myhjb25zdCBBVlJhdGlvbmFsIG0w MCwgY29uc3QgQVZSYXRpb25hbCBtMDEsIGNvbnN0IEFWUmF0aW9uYWwgbTAyLAogICAgICAgICAg ICAgY29uc3QgQVZSYXRpb25hbCBtMTAsIGNvbnN0IEFWUmF0aW9uYWwgbTExLCBjb25zdCBBVlJh dGlvbmFsIG0xMiwKICAgICAgICAgICAgIGNvbnN0IEFWUmF0aW9uYWwgbTIwLCBjb25zdCBBVlJh dGlvbmFsIG0yMSwgY29uc3QgQVZSYXRpb25hbCBtMjIpCiB7Ci0gICAgU3dzTGluZWFyT3AgYyA9 IHt7CisgICAgcmV0dXJuIChTd3NMaW5lYXJPcCkge3sKICAgICAgICAgeyBRNjQobTAwKSwgUTY0 KG0wMSksIFE2NChtMDIpLCBRKDApLCBRKDApIH0sCiAgICAgICAgIHsgUTY0KG0xMCksIFE2NCht MTEpLCBRNjQobTEyKSwgUSgwKSwgUSgwKSB9LAogICAgICAgICB7IFE2NChtMjApLCBRNjQobTIx KSwgUTY0KG0yMiksIFEoMCksIFEoMCkgfSwKICAgICAgICAgeyAgICAgUSgwKSwgICAgIFEoMCks ICAgICBRKDApLCBRKDEpLCBRKDApIH0sCiAgICAgfX07Ci0KLSAgICBjLm1hc2sgPSBmZl9zd3Nf bGluZWFyX21hc2soJmMpOwotICAgIHJldHVybiBjOwogfQogCiBpbnQgZmZfc3dzX2RlY29kZV9j b2xvcnMoU3dzQ29udGV4dCAqY3R4LCBTd3NQaXhlbFR5cGUgdHlwZSwKZGlmZiAtLWdpdCBhL2xp YnN3c2NhbGUvb3BzLmggYi9saWJzd3NjYWxlL29wcy5oCmluZGV4IDAyYzEyMjY1NWEuLjgzZWYy YjQ5ZGYgMTAwNjQ0Ci0tLSBhL2xpYnN3c2NhbGUvb3BzLmgKKysrIGIvbGlic3dzY2FsZS9vcHMu aApAQCAtMTkyLDE3ICsxOTIsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgU3dzTGluZWFyT3AgewogICAg ICAqICAgWyBPdXQueSBdID0gWyBGIEcgSCBJIEogXSAqIFsgeCB5IHogdyAxIF0KICAgICAgKiAg IFsgT3V0LnogXSA9IFsgSyBMIE0gTiBPIF0KICAgICAgKiAgIFsgT3V0LncgXSA9IFsgUCBRIFIg UyBUIF0KLSAgICAgKgotICAgICAqIFRoZSBtYXNrIGtlZXBzIHRyYWNrIG9mIHdoaWNoIGNvbXBv bmVudHMgZGlmZmVyIGZyb20gYW4gaWRlbnRpdHkgbWF0cml4LgotICAgICAqIFRoZXJlIG1heSBi ZSBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbnMgb2YgcGFydGljdWxhciBzdWJzZXRzLCBm b3IKLSAgICAgKiBleGFtcGxlIHRoZSBjb21tb24gc3Vic2V0IG9mIHtBLCBFLCBHLCBKLCBNLCBP fSBjYW4gYmUgaW1wbGVtZW50ZWQgd2l0aAotICAgICAqIGp1c3QgdGhyZWUgZnVzZWQgbXVsdGlw bHktYWRkIG9wZXJhdGlvbnMuCiAgICAgICovCiAgICAgQVZSYXRpb25hbDY0IG1bNF1bNV07Ci0g ICAgdWludDMyX3QgbWFzazsgLyogbVtpXVtqXSA8LT4gMSA8PCAoNSAqIGkgKyBqKSAqLwogfSBT d3NMaW5lYXJPcDsKIAotLyogSGVscGVyIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlIGNvcnJlY3Qg bWFzayAqLworLyogbVtpXVtqXSA8LT4gMSA8PCAoNSAqIGkgKyBqKSAqLwogdWludDMyX3QgZmZf c3dzX2xpbmVhcl9tYXNrKGNvbnN0IFN3c0xpbmVhck9wICpjKTsKIAogdHlwZWRlZiBzdHJ1Y3Qg U3dzRmlsdGVyT3AgewpkaWZmIC0tZ2l0IGEvbGlic3dzY2FsZS9vcHNfb3B0aW1pemVyLmMgYi9s aWJzd3NjYWxlL29wc19vcHRpbWl6ZXIuYwppbmRleCA1YjIyZjNiMzg3Li4zNTQ2ZDhiYzllIDEw MDY0NAotLS0gYS9saWJzd3NjYWxlL29wc19vcHRpbWl6ZXIuYworKysgYi9saWJzd3NjYWxlL29w c19vcHRpbWl6ZXIuYwpAQCAtMjM4LDcgKzIzOCw3IEBAIHN0YXRpYyBib29sIGV4dHJhY3Rfc2Nh bGFyKGNvbnN0IFN3c0xpbmVhck9wICpjLAogICAgIFN3c1NjYWxlT3Agc2NhbGUgPSB7MH07CiAK ICAgICAvKiBUaGVyZSBhcmUgY29tcG9uZW50cyBub3Qgb24gdGhlIG1haW4gZGlhZ29uYWwgKi8K LSAgICBpZiAoYy0+bWFzayAmIH5TV1NfTUFTS19ESUFHNCkKKyAgICBpZiAoZmZfc3dzX2xpbmVh cl9tYXNrKGMpICYgflNXU19NQVNLX0RJQUc0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg ICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewpAQCAtMjYwLDYgKzI2MCw3IEBAIHN0YXRp YyBib29sIGV4dHJhY3Rfc2NhbGFyKGNvbnN0IFN3c0xpbmVhck9wICpjLAogc3RhdGljIGJvb2wg ZXh0cmFjdF9jb25zdGFudF9yb3dzKFN3c0xpbmVhck9wICpjLCBjb25zdCBTd3NDb21wcyAqcHJl diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTd3NDbGVhck9wICpvdXRfY2xl YXIpCiB7CisgICAgY29uc3QgdWludDMyX3QgbWFzayA9IGZmX3N3c19saW5lYXJfbWFzayhjKTsK ICAgICBTd3NDbGVhck9wIGNsZWFyID0gezB9OwogICAgIGJvb2wgcmV0ID0gZmFsc2U7CiAKQEAg LTI2OSwxMiArMjcwLDExIEBAIHN0YXRpYyBib29sIGV4dHJhY3RfY29uc3RhbnRfcm93cyhTd3NM aW5lYXJPcCAqYywgY29uc3QgU3dzQ29tcHMgKnByZXYsCiAgICAgICAgICAgICBjb25zdF9yb3cg Jj0gYy0+bVtpXVtqXS5udW0gPT0gMCB8fCAvKiBzY2FsYXIgaXMgemVybyAqLwogICAgICAgICAg ICAgICAgICAgICAgICAgIChwcmV2LT5mbGFnc1tqXSAmIFNXU19DT01QX1pFUk8pOyAvKiBpbnB1 dCBpcyB6ZXJvICovCiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNvbnN0X3JvdyAmJiAoYy0+bWFz ayAmIFNXU19NQVNLX1JPVyhpKSkpIHsKKyAgICAgICAgaWYgKGNvbnN0X3JvdyAmJiAobWFzayAm IFNXU19NQVNLX1JPVyhpKSkpIHsKICAgICAgICAgICAgIGNsZWFyLm1hc2sgfD0gU1dTX0NPTVAo aSk7CiAgICAgICAgICAgICBjbGVhci52YWx1ZVtpXSA9IGMtPm1baV1bNF07CiAgICAgICAgICAg ICBmb3IgKGludCBqID0gMDsgaiA8IDU7IGorKykKICAgICAgICAgICAgICAgICBjLT5tW2ldW2pd ID0gUShpID09IGopOwotICAgICAgICAgICAgYy0+bWFzayAmPSB+U1dTX01BU0tfUk9XKGkpOwog ICAgICAgICAgICAgcmV0ID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTMyMSw3ICszMjEs NiBAQCBzdGF0aWMgYm9vbCBleHRyYWN0X3N3aXp6bGUoU3dzTGluZWFyT3AgKm9wLCBjb25zdCBT d3NDb21wcyAqcHJldiwKICAgICBpZiAoc3dpei5tYXNrID09IFNXU19TV0laWkxFKDAsIDEsIDIs IDMpLm1hc2spCiAgICAgICAgIHJldHVybiBmYWxzZTsgLyogbm8gc3dpenpsZSB3YXMgaWRlbnRp ZmllZCAqLwogCi0gICAgYy5tYXNrID0gZmZfc3dzX2xpbmVhcl9tYXNrKCZjKTsKICAgICAqb3V0 X3N3aXogPSBzd2l6OwogICAgICpvcCA9IGM7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02MjIsMTIg KzYyMSwxMyBAQCByZXRyeToKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1dT X09QX0xJTkVBUjogeworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgbWFzayA9IGZmX3N3c19s aW5lYXJfbWFzaygmb3AtPmxpbik7CiAgICAgICAgICAgICBTd3NTd2l6emxlT3Agc3dpenpsZTsK ICAgICAgICAgICAgIFN3c0NsZWFyT3AgY2xlYXI7CiAgICAgICAgICAgICBTd3NTY2FsZU9wIHNj YWxlOwogCiAgICAgICAgICAgICAvKiBOby1vcCAoaWRlbnRpdHkpIGxpbmVhciBvcGVyYXRpb24g Ki8KLSAgICAgICAgICAgIGlmICghb3AtPmxpbi5tYXNrKSB7CisgICAgICAgICAgICBpZiAoIW1h c2spIHsKICAgICAgICAgICAgICAgICBmZl9zd3Nfb3BfbGlzdF9yZW1vdmVfYXQob3BzLCBuLCAx KTsKICAgICAgICAgICAgICAgICBnb3RvIHJldHJ5OwogICAgICAgICAgICAgfQpAQCAtNjQ2LDcg KzY0Niw2IEBAIHJldHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgb3AtPmxpbi5tW2ldW2pd ID0gc3VtOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgICAgIG9wLT5saW4ubWFzayA9IGZmX3N3c19saW5lYXJfbWFzaygmb3AtPmxpbik7CiAg ICAgICAgICAgICAgICAgZmZfc3dzX29wX2xpc3RfcmVtb3ZlX2F0KG9wcywgbiArIDEsIDEpOwog ICAgICAgICAgICAgICAgIGdvdG8gcmV0cnk7CiAgICAgICAgICAgICB9CkBAIC02NTQsMjIgKzY1 MywyMCBAQCByZXRyeToKICAgICAgICAgICAgIC8qIE9wdGltaXplIGF3YXkgemVybyBjb2x1bW5z ICovCiAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDQ7IGorKykgewogICAgICAgICAg ICAgICAgIGNvbnN0IHVpbnQzMl90IGNvbCA9IFNXU19NQVNLX0NPTChqKTsKLSAgICAgICAgICAg ICAgICBpZiAoIShwcmV2LT5jb21wcy5mbGFnc1tqXSAmIFNXU19DT01QX1pFUk8pIHx8ICEob3At Pmxpbi5tYXNrICYgY29sKSkKKyAgICAgICAgICAgICAgICBpZiAoIShwcmV2LT5jb21wcy5mbGFn c1tqXSAmIFNXU19DT01QX1pFUk8pIHx8ICEobWFzayAmIGNvbCkpCiAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsr KQogICAgICAgICAgICAgICAgICAgICBvcC0+bGluLm1baV1bal0gPSBRKGkgPT0gaik7Ci0gICAg ICAgICAgICAgICAgb3AtPmxpbi5tYXNrICY9IH5jb2w7CiAgICAgICAgICAgICAgICAgZ290byBy ZXRyeTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyogT3B0aW1pemUgYXdheSB1bnVz ZWQgcm93cyAqLwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKICAg ICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCByb3cgPSBTV1NfTUFTS19ST1coaSk7Ci0gICAg ICAgICAgICAgICAgaWYgKFNXU19PUF9ORUVERUQob3AsIGkpIHx8ICEob3AtPmxpbi5tYXNrICYg cm93KSkKKyAgICAgICAgICAgICAgICBpZiAoU1dTX09QX05FRURFRChvcCwgaSkgfHwgIShtYXNr ICYgcm93KSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg Zm9yIChpbnQgaiA9IDA7IGogPCA1OyBqKyspCiAgICAgICAgICAgICAgICAgICAgIG9wLT5saW4u bVtpXVtqXSA9IFEoaSA9PSBqKTsKLSAgICAgICAgICAgICAgICBvcC0+bGluLm1hc2sgJj0gfnJv dzsKICAgICAgICAgICAgICAgICBnb3RvIHJldHJ5OwogICAgICAgICAgICAgfQogCmRpZmYgLS1n aXQgYS9saWJzd3NjYWxlL3VvcHMuYyBiL2xpYnN3c2NhbGUvdW9wcy5jCmluZGV4IDQ0MDAwYjM1 ZjEuLmZjOWQ2MDk2MzYgMTAwNjQ0Ci0tLSBhL2xpYnN3c2NhbGUvdW9wcy5jCisrKyBiL2xpYnN3 c2NhbGUvdW9wcy5jCkBAIC01MDYsMTEgKzUwNiwxMiBAQCBzdGF0aWMgaW50IHRyYW5zbGF0ZV9s aW5lYXJfb3AoU3dzQ29udGV4dCAqY3R4LCBTd3NVT3BMaXN0ICpvcHMsCiAgICAgICAgIC51b3Ag ID0gU1dTX1VPUF9MSU5FQVIsCiAgICAgfTsKIAorICAgIGNvbnN0IHVpbnQzMl90IG1hc2sgPSBm Zl9zd3NfbGluZWFyX21hc2soJm9wLT5saW4pOwogICAgIGNvbnN0IGJvb2wgYml0ZXhhY3QgPSBj dHgtPmZsYWdzICYgU1dTX0JJVEVYQUNUOwogICAgIHVpbnQzMl90IGV4YWN0ID0gMDsKIAogICAg IGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0gICAgICAgIGlmICghU1dTX09QX05FRURF RChvcCwgaSkgfHwgIShvcC0+bGluLm1hc2sgJiBTV1NfTUFTS19ST1coaSkpKSB7CisgICAgICAg IGlmICghU1dTX09QX05FRURFRChvcCwgaSkgfHwgIShtYXNrICYgU1dTX01BU0tfUk9XKGkpKSkg ewogICAgICAgICAgICAgdW9wLnBhci5saW4uemVybyB8PSBTV1NfTUFTS19ST1coaSk7CiAgICAg ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotLSAKMi41Mi4wCgoKRnJvbSBkMDMwMzI1ZTRk MDRmYmQ4ZGQxYzFmMmZkOWM2MGQ0YmM2OGZhZGIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiBOaWtsYXMgSGFhcyA8Z2l0QGhhYXNuLmRldj4KRGF0ZTogVGh1LCAyMyBKdWwgMjAyNiAx NzoyMTo0MyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDUvMThdIHN3c2NhbGUvY3NwdXRpbHM6IHJl bW92ZSB1bnVzZWQgc3RydWN0CgpTcG9uc29yZWQtYnk6IFNvdmVyZWlnbiBUZWNoIEZ1bmQKU2ln bmVkLW9mZi1ieTogTmlrbGFzIEhhYXMgPGdpdEBoYWFzbi5kZXY+Ci0tLQogbGlic3dzY2FsZS9j c3B1dGlscy5oIHwgNCAtLS0tCiAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9saWJzd3NjYWxlL2NzcHV0aWxzLmggYi9saWJzd3NjYWxlL2NzcHV0aWxzLmgKaW5k ZXggYzI4ZTRhYzdhZS4uODJlYjBiNjhmNCAxMDA2NDQKLS0tIGEvbGlic3dzY2FsZS9jc3B1dGls cy5oCisrKyBiL2xpYnN3c2NhbGUvY3NwdXRpbHMuaApAQCAtNjUsMTAgKzY1LDYgQEAgU3dzTWF0 cml4M3gzIGZmX3N3c19nZXRfYWRhcHRhdGlvbihjb25zdCBBVlByaW1hcnlDb2VmZmljaWVudHMg KnByaW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWV2hpdGVwb2ludENv ZWZmaWNpZW50cyB0byk7CiAKIC8qIEludGVnZXIgbWF0aCBkZWZpbml0aW9ucyAvIGhlbHBlcnMg Ki8KLXR5cGVkZWYgc3RydWN0IHYzdThfdCB7Ci0gICAgdWludDhfdCB4LCB5LCB6OwotfSB2M3U4 X3Q7Ci0KIHR5cGVkZWYgc3RydWN0IHYydTE2X3QgewogICAgIHVpbnQxNl90IHgsIHk7CiB9IHYy dTE2X3Q7Ci0tIAoyLjUyLjAKCgpGcm9tIGY2MjM1MWIwYTYyOGJjMDBmOGRjNDYyYjU1NGQ1YWM4 MDkxNzgzNWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE5pa2xhcyBIYWFzIDxnaXRA aGFhc24uZGV2PgpEYXRlOiBXZWQsIDIyIEp1bCAyMDI2IDE3OjIzOjE5ICswMjAwClN1YmplY3Q6 IFtQQVRDSCAwNi8xOF0gc3dzY2FsZS9hYXJjaDY0OiByZWplY3QgdW5rbm93biBvcHMgYnkgZGVm YXVsdAoKU3BvbnNvcmVkLWJ5OiBTb3ZlcmVpZ24gVGVjaCBGdW5kClNpZ25lZC1vZmYtYnk6IE5p a2xhcyBIYWFzIDxnaXRAaGFhc24uZGV2PgotLS0KIGxpYnN3c2NhbGUvYWFyY2g2NC9vcHNfaW1w bF9jb252LmMgfCAzICstLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvYWFyY2g2NC9vcHNfaW1wbF9jb252LmMg Yi9saWJzd3NjYWxlL2FhcmNoNjQvb3BzX2ltcGxfY29udi5jCmluZGV4IGRhZWJhYzlmMDkuLmZi ZDY5YzljODcgMTAwNjQ0Ci0tLSBhL2xpYnN3c2NhbGUvYWFyY2g2NC9vcHNfaW1wbF9jb252LmMK KysrIGIvbGlic3dzY2FsZS9hYXJjaDY0L29wc19pbXBsX2NvbnYuYwpAQCAtMTk5LDggKzE5OSw3 IEBAIHN0YXRpYyBpbnQgY29udmVydF90b19hYXJjaDY0X2ltcGwoU3dzQ29udGV4dCAqY3R4LCBj b25zdCBTd3NPcExpc3QgKm9wcywgaW50IG4sCiAgICAgICAgICAgICAgICAgIDogU1dTX1VPUF9M SU5FQVJfRk1BOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNXU19PUF9ESVRIRVI6ICAgICBv dXQtPnVvcCA9IFNXU19VT1BfRElUSEVSOyAgICAgYnJlYWs7Ci0gICAgY2FzZSBTV1NfT1BfRklM VEVSX0g6Ci0gICAgY2FzZSBTV1NfT1BfRklMVEVSX1Y6CisgICAgZGVmYXVsdDoKICAgICAgICAg cmV0dXJuIEFWRVJST1IoRU5PVFNVUCk7CiAgICAgfQogCi0tIAoyLjUyLjAKCgpGcm9tIGZhYzZi MjY0NjZiNGFmMWRlOWM2NzkxMDExMGRjZGYwNGE1N2NhMDQgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IE5pa2xhcyBIYWFzIDxnaXRAaGFhc24uZGV2PgpEYXRlOiBUaHUsIDIzIEp1bCAy MDI2IDE3OjIxOjU2ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwNy8xOF0gc3dzY2FsZS9sdXQzZDog YWxpZ25tZW50IChjb3NtZXRpYykKClNwb25zb3JlZC1ieTogU292ZXJlaWduIFRlY2ggRnVuZApT aWduZWQtb2ZmLWJ5OiBOaWtsYXMgSGFhcyA8Z2l0QGhhYXNuLmRldj4KLS0tCiBsaWJzd3NjYWxl L2x1dDNkLmMgfCA4ICsrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvbHV0M2QuYyBiL2xpYnN3c2Nh bGUvbHV0M2QuYwppbmRleCBkNzAxY2EyYmE1Li42OTRiNDU1ZGJjIDEwMDY0NAotLS0gYS9saWJz d3NjYWxlL2x1dDNkLmMKKysrIGIvbGlic3dzY2FsZS9sdXQzZC5jCkBAIC0yMjEsOSArMjIxLDkg QEAgaW50IGZmX3N3c19sdXQzZF9nZW5lcmF0ZShTd3NMdXQzRCAqbHV0M2QsIGVudW0gQVZQaXhl bEZvcm1hdCBmbXRfaW4sCiAKICAgICBpZiAobHV0M2QtPmR5bmFtaWMpIHsKICAgICAgICAgcmV0 ID0gZmZfc3dzX2NvbG9yX21hcF9nZW5lcmF0ZV9keW5hbWljKCZsdXQzZC0+aW5wdXRbMF1bMF1b MF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHV0M2Qt Pm91dHB1dFswXVswXVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElOUFVUX0xVVF9TSVpFLCBPVVRQVVRfTFVUX1NJWkVfSSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9VVFBVVF9MVVRfU0laRV9QVCwgbWFwKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdXQzZC0+ b3V0cHV0WzBdWzBdWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSU5QVVRfTFVUX1NJWkUsIE9VVFBVVF9MVVRfU0laRV9JLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1VUUFVUX0xVVF9TSVpFX1BULCBt YXApOwogICAgICAgICBpZiAocmV0IDwgMCkKICAgICAgICAgICAgIHJldHVybiByZXQ7CiAKQEAg LTIzMiw3ICsyMzIsNyBAQCBpbnQgZmZfc3dzX2x1dDNkX2dlbmVyYXRlKFN3c0x1dDNEICpsdXQz ZCwgZW51bSBBVlBpeGVsRm9ybWF0IGZtdF9pbiwKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfSBl bHNlIHsKICAgICAgICAgcmV0dXJuIGZmX3N3c19jb2xvcl9tYXBfZ2VuZXJhdGVfc3RhdGljKCZs dXQzZC0+aW5wdXRbMF1bMF1bMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJTlBVVF9MVVRfU0laRSwgbWFwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIElOUFVUX0xVVF9TSVpFLCBtYXApOwogICAgIH0KIH0K IAotLSAKMi41Mi4wCgoKRnJvbSBhMTc2YjE3NTRhYjU1NjVhYjRlZWE4YWJmYzIwOWRiZGYxMjEx MDU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtsYXMgSGFhcyA8Z2l0QGhhYXNu LmRldj4KRGF0ZTogVGh1LCAyMyBKdWwgMjAyNiAxOToyMToyMSArMDIwMApTdWJqZWN0OiBbUEFU Q0ggMDgvMThdIHN3c2NhbGUvbHV0M2Q6IHBhZCAzRExVVCB0byBlbGltaW5hdGUgb3Zlci1yZWFk CgpJbnN0ZWFkIG9mIGNsYW1waW5nIGluIHRoZSBhcHBsaWNhdGlvbiBmdW5jdGlvbi4gVHJpdmlh bCBzaW1wbGljaXR5IGdhaW4KZm9yIHRoZSBTSU1EIGNvZGUuCgpTcG9uc29yZWQtYnk6IFNvdmVy ZWlnbiBUZWNoIEZ1bmQKU2lnbmVkLW9mZi1ieTogTmlrbGFzIEhhYXMgPGdpdEBoYWFzbi5kZXY+ Ci0tLQogbGlic3dzY2FsZS9sdXQzZC5jIHwgNCArKy0tCiBsaWJzd3NjYWxlL2x1dDNkLmggfCAy ICstCiAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9saWJzd3NjYWxlL2x1dDNkLmMgYi9saWJzd3NjYWxlL2x1dDNkLmMKaW5kZXgg Njk0YjQ1NWRiYy4uZTUyMWJjNDQzOSAxMDA2NDQKLS0tIGEvbGlic3dzY2FsZS9sdXQzZC5jCisr KyBiL2xpYnN3c2NhbGUvbHV0M2QuYwpAQCAtMTk1LDEwICsxOTUsOSBAQCBzdGF0aWMgYXZfYWx3 YXlzX2lubGluZSB2M3UxNl90IGFwcGx5X3RvbmVfbWFwKGNvbnN0IFN3c0x1dDNEICpsdXQzZCwg djN1MTZfdCBpcAogICAgIGNvbnN0IGludCBzaGlmdCA9IDE2IC0gVE9ORV9MVVRfQklUUzsKICAg ICBjb25zdCBpbnQgSXggPSBpcHQueCA+PiBzaGlmdDsKICAgICBjb25zdCBpbnQgSWYgPSBpcHQu eCAmICgoMSA8PCBzaGlmdCkgLSAxKTsKLSAgICBjb25zdCBpbnQgSW4gPSBGRk1JTihJeCArIDEs IFRPTkVfTFVUX1NJWkUgLSAxKTsKIAogICAgIGNvbnN0IHYydTE2X3QgdzAgPSBsdXQzZC0+dG9u ZV9tYXBbSXhdOwotICAgIGNvbnN0IHYydTE2X3QgdzEgPSBsdXQzZC0+dG9uZV9tYXBbSW5dOwor ICAgIGNvbnN0IHYydTE2X3QgdzEgPSBsdXQzZC0+dG9uZV9tYXBbSXggKyAxXTsKICAgICBjb25z dCB2MnUxNl90IHcgID0gbGVycDJ1MTYodzAsIHcxLCBJZiwgc2hpZnQpOwogICAgIGNvbnN0IGlu dCBiYXNlICAgPSAoMSA8PCAxNSkgLSB3Lnk7CiAKQEAgLTI0NSw2ICsyNDQsNyBAQCB2b2lkIGZm X3N3c19sdXQzZF91cGRhdGUoU3dzTHV0M0QgKmx1dDNkLCBjb25zdCBTd3NDb2xvciAqbmV3X3Ny YykKICAgICBsdXQzZC0+bWFwLnNyYy5mcmFtZV9hdmcgID0gbmV3X3NyYy0+ZnJhbWVfYXZnOwog CiAgICAgZmZfc3dzX3RvbmVfbWFwX2dlbmVyYXRlKGx1dDNkLT50b25lX21hcCwgVE9ORV9MVVRf U0laRSwgJmx1dDNkLT5tYXApOworICAgIGx1dDNkLT50b25lX21hcFtUT05FX0xVVF9TSVpFXSA9 IGx1dDNkLT50b25lX21hcFtUT05FX0xVVF9TSVpFIC0gMV07CiB9CiAKIHZvaWQgZmZfc3dzX2x1 dDNkX2FwcGx5KGNvbnN0IFN3c0x1dDNEICpsdXQzZCwgY29uc3QgdWludDhfdCAqaW4sIGludCBp bl9zdHJpZGUsCmRpZmYgLS1naXQgYS9saWJzd3NjYWxlL2x1dDNkLmggYi9saWJzd3NjYWxlL2x1 dDNkLmgKaW5kZXggZDJkZTg1MTYwNC4uOWU4MzgxYTJjMCAxMDA2NDQKLS0tIGEvbGlic3dzY2Fs ZS9sdXQzZC5oCisrKyBiL2xpYnN3c2NhbGUvbHV0M2QuaApAQCAtNTYsNyArNTYsNyBAQCB0eXBl ZGVmIHN0cnVjdCBTd3NMdXQzRCB7CiAgICAgdjN1MTZfdCBvdXRwdXRbT1VUUFVUX0xVVF9TSVpF X1BUXVtPVVRQVVRfTFVUX1NJWkVfUFRdW09VVFBVVF9MVVRfU0laRV9JXTsKIAogICAgIC8qIFNw bGl0IHRvbmUgbWFwcGluZyBMVVQgKGZvciBkeW5hbWljIHRvbmUgbWFwcGluZykgKi8KLSAgICB2 MnUxNl90IHRvbmVfbWFwW1RPTkVfTFVUX1NJWkVdOyAvKiBuZXcgbHVtYSwgZGVzYXR1cmF0aW9u ICovCisgICAgdjJ1MTZfdCB0b25lX21hcFtUT05FX0xVVF9TSVpFICsgMV07IC8qIG5ldyBsdW1h LCBkZXNhdHVyYXRpb24gKi8KIH0gU3dzTHV0M0Q7CiAKIFN3c0x1dDNEICpmZl9zd3NfbHV0M2Rf YWxsb2Modm9pZCk7Ci0tIAoyLjUyLjAKCgpGcm9tIDgwNDdjMDExMDA1NDViYmZiNjYyYWY4ZmUy YzIxNDZjOWM0OTkyMWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE5pa2xhcyBIYWFz IDxnaXRAaGFhc24uZGV2PgpEYXRlOiBGcmksIDI0IEp1bCAyMDI2IDE0OjM0OjQ2ICswMjAwClN1 YmplY3Q6IFtQQVRDSCAwOS8xOF0gc3dzY2FsZS9sdXQzZDogdXNlIHJlZnN0cnVjdCBmb3IgM0Qg TFVUIGFsbG9jYXRpb25zCgpOZWVkZWQgYW55d2F5cyBmb3IgdGhlIHVwY29taW5nIFNXU19PUF9M VVRfM0QuCgpTcG9uc29yZWQtYnk6IFNvdmVyZWlnbiBUZWNoIEZ1bmQKU2lnbmVkLW9mZi1ieTog TmlrbGFzIEhhYXMgPGdpdEBoYWFzbi5kZXY+Ci0tLQogbGlic3dzY2FsZS9ncmFwaC5jIHwgIDYg KysrLS0tCiBsaWJzd3NjYWxlL2x1dDNkLmMgfCAxMCArKysrLS0tLS0tCiBsaWJzd3NjYWxlL2x1 dDNkLmggfCAgNCArKystCiAzIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvZ3JhcGguYyBiL2xpYnN3c2NhbGUv Z3JhcGguYwppbmRleCBiOWQ1ZGYzYjQ4Li40Y2ZlODdlYTMxIDEwMDY0NAotLS0gYS9saWJzd3Nj YWxlL2dyYXBoLmMKKysrIGIvbGlic3dzY2FsZS9ncmFwaC5jCkBAIC02ODIsNyArNjgyLDcgQEAg c3RhdGljIGludCBhZGRfY29udmVydF9wYXNzKFN3c0dyYXBoICpncmFwaCwgY29uc3QgU3dzRm9y bWF0ICpzcmMsCiBzdGF0aWMgdm9pZCBmcmVlX2x1dDNkKHZvaWQgKnByaXYpCiB7CiAgICAgU3dz THV0M0QgKmx1dCA9IHByaXY7Ci0gICAgZmZfc3dzX2x1dDNkX2ZyZWUoJmx1dCk7CisgICAgYXZf cmVmc3RydWN0X3VucmVmKCZsdXQpOwogfQogCiBzdGF0aWMgaW50IHNldHVwX2x1dDNkKGNvbnN0 IFN3c0ZyYW1lICpvdXQsIGNvbnN0IFN3c0ZyYW1lICppbiwgY29uc3QgU3dzUGFzcyAqcGFzcykK QEAgLTc1MywxNCArNzUzLDE0IEBAIHN0YXRpYyBpbnQgYWRhcHRfY29sb3JzKFN3c0dyYXBoICpn cmFwaCwgY29uc3QgU3dzRm9ybWF0ICpzcmNfZm10LAogICAgICAgICB0bXAuZm9ybWF0ID0gZm10 X2luOwogICAgICAgICByZXQgPSBhZGRfY29udmVydF9wYXNzKGdyYXBoLCAmc3JjLCAmdG1wLCBp bnB1dCwgJmlucHV0KTsKICAgICAgICAgaWYgKHJldCA8IDApIHsKLSAgICAgICAgICAgIGZmX3N3 c19sdXQzZF9mcmVlKCZsdXQpOworICAgICAgICAgICAgYXZfcmVmc3RydWN0X3VucmVmKCZsdXQp OwogICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldCA9 IGZmX3N3c19sdXQzZF9nZW5lcmF0ZShsdXQsIGZtdF9pbiwgZm10X291dCwgJm1hcCk7CiAgICAg aWYgKHJldCA8IDApIHsKLSAgICAgICAgZmZfc3dzX2x1dDNkX2ZyZWUoJmx1dCk7CisgICAgICAg IGF2X3JlZnN0cnVjdF91bnJlZigmbHV0KTsKICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAK ZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvbHV0M2QuYyBiL2xpYnN3c2NhbGUvbHV0M2QuYwppbmRl eCBlNTIxYmM0NDM5Li4xYjFiMTFhYTRjIDEwMDY0NAotLS0gYS9saWJzd3NjYWxlL2x1dDNkLmMK KysrIGIvbGlic3dzY2FsZS9sdXQzZC5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAibGli YXZ1dGlsL2F0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKICNp bmNsdWRlICJsaWJhdnV0aWwvbWVtLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL3JlZnN0cnVjdC5o IgogCiAjaW5jbHVkZSAiY21zLmgiCiAjaW5jbHVkZSAiY3NwdXRpbHMuaCIKQEAgLTMxLDE5ICsz MiwxNiBAQAogCiBTd3NMdXQzRCAqZmZfc3dzX2x1dDNkX2FsbG9jKHZvaWQpCiB7Ci0gICAgU3dz THV0M0QgKmx1dDNkID0gYXZfbWFsbG9jKHNpemVvZigqbHV0M2QpKTsKKyAgICBjb25zdCBpbnQg ZmxhZ3MgPSBBVl9SRUZTVFJVQ1RfRkxBR19OT19aRVJPSU5HOworICAgIFN3c0x1dDNEICpsdXQz ZCA9IGF2X3JlZnN0cnVjdF9hbGxvY19leHQoc2l6ZW9mKCpsdXQzZCksIGZsYWdzLCBOVUxMLCBO VUxMKTsKICAgICBpZiAoIWx1dDNkKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGx1dDNk LT5tYXAgPSAoU3dzQ29sb3JNYXApIHswfTsKICAgICBsdXQzZC0+ZHluYW1pYyA9IGZhbHNlOwog ICAgIHJldHVybiBsdXQzZDsKIH0KIAotdm9pZCBmZl9zd3NfbHV0M2RfZnJlZShTd3NMdXQzRCAq KnBsdXQzZCkKLXsKLSAgICBhdl9mcmVlcChwbHV0M2QpOwotfQotCiBib29sIGZmX3N3c19sdXQz ZF90ZXN0X2ZtdChlbnVtIEFWUGl4ZWxGb3JtYXQgZm10LCBpbnQgb3V0cHV0KQogewogICAgIHJl dHVybiBmbXQgPT0gQVZfUElYX0ZNVF9SR0JBNjQ7CmRpZmYgLS1naXQgYS9saWJzd3NjYWxlL2x1 dDNkLmggYi9saWJzd3NjYWxlL2x1dDNkLmgKaW5kZXggOWU4MzgxYTJjMC4uNjYwZGMwOGYyNiAx MDA2NDQKLS0tIGEvbGlic3dzY2FsZS9sdXQzZC5oCisrKyBiL2xpYnN3c2NhbGUvbHV0M2QuaApA QCAtNTksOCArNTksMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgU3dzTHV0M0QgewogICAgIHYydTE2X3Qg dG9uZV9tYXBbVE9ORV9MVVRfU0laRSArIDFdOyAvKiBuZXcgbHVtYSwgZGVzYXR1cmF0aW9uICov CiB9IFN3c0x1dDNEOwogCisvKioKKyAqIEFsbG9jYXRlcyBhIHJlZnN0cnVjdC4gTm90ZSB0aGF0 IHRoZSBMVVQgY29udGVudHMgYXJlIG5vdCBpbml0aWFsaXplZC4KKyAqLwogU3dzTHV0M0QgKmZm X3N3c19sdXQzZF9hbGxvYyh2b2lkKTsKLXZvaWQgZmZfc3dzX2x1dDNkX2ZyZWUoU3dzTHV0M0Qg KipsdXQzZCk7CiAKIC8qKgogICogVGVzdCB0byBzZWUgaWYgYSBnaXZlbiBmb3JtYXQgaXMgc3Vw cG9ydGVkIGJ5IHRoZSAzRExVVCBpbnB1dC9vdXRwdXQgY29kZS4KLS0gCjIuNTIuMAoKCkZyb20g YTYzYThlMjlmOGM0Zjc0ZTM0MmIwODllYjU1YjQ3NzVmZjY1MDEwYSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogTmlrbGFzIEhhYXMgPGdpdEBoYWFzbi5kZXY+CkRhdGU6IEZyaSwgMjQg SnVsIDIwMjYgMTQ6NDE6NTggKzAyMDAKU3ViamVjdDogW1BBVENIIDEwLzE4XSBzd3NjYWxlL2x1 dDNkOiBzaW1wbGlmeSBhbmQgaGFyZC1jb2RlIDNETFVUIGZvcm1hdAoKVGhlIG9wcy1iYXNlZCAz RExVVCBhcHByb2FjaCB3aWxsIHRha2UgY2FyZSBvZiBhcHByb3ByaWF0ZWx5IG5vcm1hbGl6aW5n CnRoZSBpbnB1dCB0byB0aGUgZXhwZWN0ZWQgZG9tYWluOyBzbyB0aGUgZm9ybWF0IGNob2ljZSBu byBsb25nZXIgbWF0dGVycyBoZXJlCmV4Y2VwdCBmb3IgdGhlIGx1dDNkX2FwcGx5KCkgZnVuY3Rp b24sIHdoaWNoIHdpbGwgb25seSBiZSB1c2VkIGJ5IHRoZSBsZWdhY3kKcmVmZXJlbmNlIGNvZGUg cGF0aC4gU28gd2UgY2FuIGp1c3QgY29udGludWUgaGFyZC1jb2RpbmcgdGhlIGZvcm1hdCB0aGVy ZS4KClNwb25zb3JlZC1ieTogU292ZXJlaWduIFRlY2ggRnVuZApTaWduZWQtb2ZmLWJ5OiBOaWts YXMgSGFhcyA8Z2l0QGhhYXNuLmRldj4KLS0tCiBsaWJzd3NjYWxlL2dyYXBoLmMgfCAyNiArKysr KysrKysrKystLS0tLS0tLS0tLS0tLQogbGlic3dzY2FsZS9sdXQzZC5jIHwgMjEgKysrKy0tLS0t LS0tLS0tLS0tLS0tCiBsaWJzd3NjYWxlL2x1dDNkLmggfCAyMSArKysrKy0tLS0tLS0tLS0tLS0t LS0KIDMgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNDcgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvbGlic3dzY2FsZS9ncmFwaC5jIGIvbGlic3dzY2FsZS9ncmFwaC5jCmluZGV4 IDRjZmU4N2VhMzEuLjFjM2ZhMTg4ZDUgMTAwNjQ0Ci0tLSBhL2xpYnN3c2NhbGUvZ3JhcGguYwor KysgYi9saWJzd3NjYWxlL2dyYXBoLmMKQEAgLTcwMiw4ICs3MDIsOCBAQCBzdGF0aWMgdm9pZCBy dW5fbHV0M2QoY29uc3QgU3dzRnJhbWUgKm91dCwgY29uc3QgU3dzRnJhbWUgKmluLCBpbnQgeSwg aW50IGgsCiAgICAgZnJhbWVfc2hpZnQoaW4sICB5LCBpbl9kYXRhKTsKICAgICBmcmFtZV9zaGlm dChvdXQsIHksIG91dF9kYXRhKTsKIAotICAgIGZmX3N3c19sdXQzZF9hcHBseShsdXQsIGluX2Rh dGFbMF0sIGluLT5saW5lc2l6ZVswXSwgb3V0X2RhdGFbMF0sCi0gICAgICAgICAgICAgICAgICAg ICAgIG91dC0+bGluZXNpemVbMF0sIG91dC0+d2lkdGgsIGgpOworICAgIGZmX3N3c19sdXQzZF9h cHBseV9yZ2JhNjQobHV0LCBpbl9kYXRhWzBdLCBpbi0+bGluZXNpemVbMF0sIG91dF9kYXRhWzBd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LT5saW5lc2l6ZVswXSwgb3V0LT53 aWR0aCwgaCk7CiB9CiAKIHN0YXRpYyBpbnQgYWRhcHRfY29sb3JzKFN3c0dyYXBoICpncmFwaCwg Y29uc3QgU3dzRm9ybWF0ICpzcmNfZm10LApAQCAtNzEyLDcgKzcxMiw2IEBAIHN0YXRpYyBpbnQg YWRhcHRfY29sb3JzKFN3c0dyYXBoICpncmFwaCwgY29uc3QgU3dzRm9ybWF0ICpzcmNfZm10LAog ewogICAgIFN3c0Zvcm1hdCBzcmMgPSAqc3JjX2ZtdDsKICAgICBTd3NGb3JtYXQgZHN0ID0gKmRz dF9mbXQ7Ci0gICAgZW51bSBBVlBpeGVsRm9ybWF0IGZtdF9pbiwgZm10X291dDsKICAgICBTd3ND b2xvck1hcCBtYXAgPSB7MH07CiAgICAgU3dzTHV0M0QgKmx1dDsKICAgICBpbnQgcmV0OwpAQCAt NzQ2LDExICs3NDUsMTYgQEAgc3RhdGljIGludCBhZGFwdF9jb2xvcnMoU3dzR3JhcGggKmdyYXBo LCBjb25zdCBTd3NGb3JtYXQgKnNyY19mbXQsCiAgICAgaWYgKCFsdXQpCiAgICAgICAgIHJldHVy biBBVkVSUk9SKEVOT01FTSk7CiAKLSAgICBmbXRfaW4gID0gZmZfc3dzX2x1dDNkX3BpY2tfcGl4 Zm10KCZzcmMsIDApOwotICAgIGZtdF9vdXQgPSBmZl9zd3NfbHV0M2RfcGlja19waXhmbXQoJmRz dCwgMSk7Ci0gICAgaWYgKGZtdF9pbiAhPSBzcmMuZm9ybWF0KSB7CisgICAgcmV0ID0gZmZfc3dz X2x1dDNkX2dlbmVyYXRlKGx1dCwgJm1hcCk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAg YXZfcmVmc3RydWN0X3VucmVmKCZsdXQpOworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKwor ICAgIGNvbnN0IGVudW0gQVZQaXhlbEZvcm1hdCBmbXQgPSBBVl9QSVhfRk1UX1JHQkE2NDsKKyAg ICBpZiAoc3JjLmZvcm1hdCAhPSBmbXQpIHsKICAgICAgICAgU3dzRm9ybWF0IHRtcCA9IHNyYzsK LSAgICAgICAgdG1wLmZvcm1hdCA9IGZtdF9pbjsKKyAgICAgICAgdG1wLmZvcm1hdCA9IGZtdDsK ICAgICAgICAgcmV0ID0gYWRkX2NvbnZlcnRfcGFzcyhncmFwaCwgJnNyYywgJnRtcCwgaW5wdXQs ICZpbnB1dCk7CiAgICAgICAgIGlmIChyZXQgPCAwKSB7CiAgICAgICAgICAgICBhdl9yZWZzdHJ1 Y3RfdW5yZWYoJmx1dCk7CkBAIC03NTgsMTMgKzc2Miw3IEBAIHN0YXRpYyBpbnQgYWRhcHRfY29s b3JzKFN3c0dyYXBoICpncmFwaCwgY29uc3QgU3dzRm9ybWF0ICpzcmNfZm10LAogICAgICAgICB9 CiAgICAgfQogCi0gICAgcmV0ID0gZmZfc3dzX2x1dDNkX2dlbmVyYXRlKGx1dCwgZm10X2luLCBm bXRfb3V0LCAmbWFwKTsKLSAgICBpZiAocmV0IDwgMCkgewotICAgICAgICBhdl9yZWZzdHJ1Y3Rf dW5yZWYoJmx1dCk7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZm X3N3c19ncmFwaF9hZGRfcGFzcyhncmFwaCwgZm10X291dCwgc3JjLndpZHRoLCBzcmMuaGVpZ2h0 LAorICAgIHJldHVybiBmZl9zd3NfZ3JhcGhfYWRkX3Bhc3MoZ3JhcGgsIGZtdCwgc3JjLndpZHRo LCBzcmMuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQsIDAs IDEsIHJ1bl9sdXQzZCwgc2V0dXBfbHV0M2QsIGx1dCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZyZWVfbHV0M2QsIG91dHB1dCk7CiB9CmRpZmYgLS1naXQgYS9saWJzd3NjYWxl L2x1dDNkLmMgYi9saWJzd3NjYWxlL2x1dDNkLmMKaW5kZXggMWIxYjExYWE0Yy4uOTczNTc1ZTFk ZiAxMDA2NDQKLS0tIGEvbGlic3dzY2FsZS9sdXQzZC5jCisrKyBiL2xpYnN3c2NhbGUvbHV0M2Qu YwpAQCAtNDIsMTYgKzQyLDYgQEAgU3dzTHV0M0QgKmZmX3N3c19sdXQzZF9hbGxvYyh2b2lkKQog ICAgIHJldHVybiBsdXQzZDsKIH0KIAotYm9vbCBmZl9zd3NfbHV0M2RfdGVzdF9mbXQoZW51bSBB VlBpeGVsRm9ybWF0IGZtdCwgaW50IG91dHB1dCkKLXsKLSAgICByZXR1cm4gZm10ID09IEFWX1BJ WF9GTVRfUkdCQTY0OwotfQotCi1lbnVtIEFWUGl4ZWxGb3JtYXQgZmZfc3dzX2x1dDNkX3BpY2tf cGl4Zm10KGNvbnN0IFN3c0Zvcm1hdCAqZm10LCBpbnQgb3V0cHV0KQotewotICAgIHJldHVybiBB Vl9QSVhfRk1UX1JHQkE2NDsKLX0KLQogLyoqCiAgKiB2MCBhbmQgdjEgYXJlICdibGFjaycgYW5k ICd3aGl0ZScKICAqIHYyIGFuZCB2MyBhcmUgY2xvc2VzdCBSR0IvQ01ZIHZlcnRpY2VzCkBAIC0y MDUsMTQgKzE5NSwxMCBAQCBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2M3UxNl90IGFwcGx5X3Rv bmVfbWFwKGNvbnN0IFN3c0x1dDNEICpsdXQzZCwgdjN1MTZfdCBpcAogICAgIHJldHVybiBpcHQ7 CiB9CiAKLWludCBmZl9zd3NfbHV0M2RfZ2VuZXJhdGUoU3dzTHV0M0QgKmx1dDNkLCBlbnVtIEFW UGl4ZWxGb3JtYXQgZm10X2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIEFWUGl4 ZWxGb3JtYXQgZm10X291dCwgY29uc3QgU3dzQ29sb3JNYXAgKm1hcCkKK2ludCBmZl9zd3NfbHV0 M2RfZ2VuZXJhdGUoU3dzTHV0M0QgKmx1dDNkLCBjb25zdCBTd3NDb2xvck1hcCAqbWFwKQogewog ICAgIGludCByZXQ7CiAKLSAgICBpZiAoIWZmX3N3c19sdXQzZF90ZXN0X2ZtdChmbXRfaW4sIDAp IHx8ICFmZl9zd3NfbHV0M2RfdGVzdF9mbXQoZm10X291dCwgMSkpCi0gICAgICAgIHJldHVybiBB VkVSUk9SKEVJTlZBTCk7Ci0KICAgICBsdXQzZC0+ZHluYW1pYyA9IG1hcC0+c3JjLmZyYW1lX3Bl YWsubnVtID4gMDsKICAgICBsdXQzZC0+bWFwID0gKm1hcDsKIApAQCAtMjQ1LDggKzIzMSw5IEBA IHZvaWQgZmZfc3dzX2x1dDNkX3VwZGF0ZShTd3NMdXQzRCAqbHV0M2QsIGNvbnN0IFN3c0NvbG9y ICpuZXdfc3JjKQogICAgIGx1dDNkLT50b25lX21hcFtUT05FX0xVVF9TSVpFXSA9IGx1dDNkLT50 b25lX21hcFtUT05FX0xVVF9TSVpFIC0gMV07CiB9CiAKLXZvaWQgZmZfc3dzX2x1dDNkX2FwcGx5 KGNvbnN0IFN3c0x1dDNEICpsdXQzZCwgY29uc3QgdWludDhfdCAqaW4sIGludCBpbl9zdHJpZGUs Ci0gICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXQsIGludCBvdXRfc3RyaWRlLCBp bnQgdywgaW50IGgpCit2b2lkIGZmX3N3c19sdXQzZF9hcHBseV9yZ2JhNjQoY29uc3QgU3dzTHV0 M0QgKmx1dDNkLCBjb25zdCB1aW50OF90ICppbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgaW5fc3RyaWRlLCB1aW50OF90ICpvdXQsIGludCBvdXRfc3RyaWRlLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3LCBpbnQgaCkKIHsKICAgICB3aGlsZSAoaC0t KSB7CiAgICAgICAgIGNvbnN0IHVpbnQxNl90ICppbjE2ID0gKGNvbnN0IHVpbnQxNl90ICopIGlu OwpkaWZmIC0tZ2l0IGEvbGlic3dzY2FsZS9sdXQzZC5oIGIvbGlic3dzY2FsZS9sdXQzZC5oCmlu ZGV4IDY2MGRjMDhmMjYuLjAyZTExMjJjZmEgMTAwNjQ0Ci0tLSBhL2xpYnN3c2NhbGUvbHV0M2Qu aAorKysgYi9saWJzd3NjYWxlL2x1dDNkLmgKQEAgLTY0LDE2ICs2NCw2IEBAIHR5cGVkZWYgc3Ry dWN0IFN3c0x1dDNEIHsKICAqLwogU3dzTHV0M0QgKmZmX3N3c19sdXQzZF9hbGxvYyh2b2lkKTsK IAotLyoqCi0gKiBUZXN0IHRvIHNlZSBpZiBhIGdpdmVuIGZvcm1hdCBpcyBzdXBwb3J0ZWQgYnkg dGhlIDNETFVUIGlucHV0L291dHB1dCBjb2RlLgotICovCi1ib29sIGZmX3N3c19sdXQzZF90ZXN0 X2ZtdChlbnVtIEFWUGl4ZWxGb3JtYXQgZm10LCBpbnQgb3V0cHV0KTsKLQotLyoqCi0gKiBQaWNr IHRoZSBiZXN0IGNvbXBhdGlibGUgcGl4Zm10IGZvciBhIGdpdmVuIFN3c0Zvcm1hdC4KLSAqLwot ZW51bSBBVlBpeGVsRm9ybWF0IGZmX3N3c19sdXQzZF9waWNrX3BpeGZtdChjb25zdCBTd3NGb3Jt YXQgKmZtdCwgaW50IG91dHB1dCk7Ci0KIC8qKgogICogUmVjYWxjdWxhdGUgdGhlIChzdGF0aWMp IDNETFVUIHN0YXRlIHdpdGggbmV3IHNldHRpbmdzLiBUaGlzIHdpbGwgcmVjb21wdXRlCiAgKiBl dmVyeXRoaW5nLiBUbyBvbmx5IHVwZGF0ZSBwZXItZnJhbWUgdG9uZSBtYXBwaW5nIHN0YXRlLCBp bnN0ZWFkIGNhbGwKQEAgLTgxLDggKzcxLDcgQEAgZW51bSBBVlBpeGVsRm9ybWF0IGZmX3N3c19s dXQzZF9waWNrX3BpeGZtdChjb25zdCBTd3NGb3JtYXQgKmZtdCwgaW50IG91dHB1dCk7CiAgKgog ICogUmV0dXJucyAwIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZS4KICAqLwotaW50IGZmX3N3c19s dXQzZF9nZW5lcmF0ZShTd3NMdXQzRCAqbHV0M2QsIGVudW0gQVZQaXhlbEZvcm1hdCBmbXRfaW4s Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gQVZQaXhlbEZvcm1hdCBmbXRfb3V0LCBj b25zdCBTd3NDb2xvck1hcCAqbWFwKTsKK2ludCBmZl9zd3NfbHV0M2RfZ2VuZXJhdGUoU3dzTHV0 M0QgKmx1dDNkLCBjb25zdCBTd3NDb2xvck1hcCAqbWFwKTsKIAogLyoqCiAgKiBVcGRhdGUgdGhl IHRvbmUgbWFwcGluZyBzdGF0ZS4gVGhpcyB3aWxsIG9ubHkgdXNlIHBlci1mcmFtZSBtZXRhZGF0 YS4gVGhlCkBAIC05MSwxMCArODAsMTAgQEAgaW50IGZmX3N3c19sdXQzZF9nZW5lcmF0ZShTd3NM dXQzRCAqbHV0M2QsIGVudW0gQVZQaXhlbEZvcm1hdCBmbXRfaW4sCiB2b2lkIGZmX3N3c19sdXQz ZF91cGRhdGUoU3dzTHV0M0QgKmx1dDNkLCBjb25zdCBTd3NDb2xvciAqbmV3X3NyYyk7CiAKIC8q KgotICogQXBwbGllcyBhIGNvbG9yIHRyYW5zZm9ybWF0aW9uIHRvIGEgcGxhbmUuIFRoZSBmb3Jt YXQgbXVzdCBtYXRjaCB0aGUgZm9ybWF0Ci0gKiBwcm92aWRlZCBkdXJpbmcgZmZfc3dzX2x1dDNk X3VwZGF0ZSgpLgorICogQXBwbGllcyBhIGNvbG9yIHRyYW5zZm9ybWF0aW9uIHRvIGEgcGxhbmUg aW4gUkdCQTY0IGZvcm1hdC4KICAqLwotdm9pZCBmZl9zd3NfbHV0M2RfYXBwbHkoY29uc3QgU3dz THV0M0QgKmx1dDNkLCBjb25zdCB1aW50OF90ICppbiwgaW50IGluX3N0cmlkZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dCwgaW50IG91dF9zdHJpZGUsIGludCB3LCBpbnQg aCk7Cit2b2lkIGZmX3N3c19sdXQzZF9hcHBseV9yZ2JhNjQoY29uc3QgU3dzTHV0M0QgKmx1dDNk LCBjb25zdCB1aW50OF90ICppbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg aW5fc3RyaWRlLCB1aW50OF90ICpvdXQsIGludCBvdXRfc3RyaWRlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCB3LCBpbnQgaCk7CiAKICNlbmRpZiAvKiBTV1NDQUxFX0xVVDNE X0ggKi8KLS0gCjIuNTIuMAoKCkZyb20gNDE4ZGYyZGVmODA2ZTJlZDE5OTVlMDk3ZjBjYWY1Y2Q5 ZmNiMTVhZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTmlrbGFzIEhhYXMgPGdpdEBo YWFzbi5kZXY+CkRhdGU6IE1vbiwgMjcgSnVsIDIwMjYgMTM6NTE6MTAgKzAyMDAKU3ViamVjdDog W1BBVENIIDExLzE4XSBzd3NjYWxlL2NtczogZml4IElQVCByb3VuZGluZyBlcnJvcgoKYXZfcm91 bmQxNmYoKSB3YXMgaW5jb3JyZWN0bHkgc2NhbGluZyB0byA2NTUzNCwgd2hpY2ggd291bGQgY29y cmVzcG9uZCB0bwphIG5ldXRyYWwgUFQgb2Zmc2V0IG9mIDMyNzY3ID0gKDEgPDwgMTUpIC0gMSwg YnV0IHRoZSBjb2RlIHdhcyBhc3N1bWluZyBhCnZhbHVlIG9mICgxIDw8IDE1KS4gVG8gZml4IGl0 LCBhbmQgbWFrZSB0aGUgUFQgY2hhbm5lbCBjb3JyZWN0bHkgc3ltbWV0cmljCmFyb3VuZCB0aGUg aW50ZW5kZWQgbmV1dHJhbCB2YWx1ZSwgd2UgaGF2ZSB0byBtYXAgUFQgPSArMC41IHRvIDY1NTM2 LCBhbgp1bnJlcHJlc2VudGFibGUgdmFsdWUuIFRoaXMgaXMgbm90IGFuIGlzc3VlIGJlY2F1c2Ug dGhlIFBUIGNoYW5uZWwgdmFsdWVzIGFyZQpzdHJpY3RseSBpbnNpZGUgc29tZSBzdWJzZXQgb2Yg Wy0wLjUsIDAuNV0gaW4gcHJhY3RpY2UsIGZvciByZWFsIGluLWdhbXV0CmNvbG9yIHZhbHVlcyAt IGl0J3MgYWxyZWFkeSBhbiBlbnZlbG9wZSB0aGF0IGluY2x1ZGVzIHF1aXRlIGEgYml0IG9mIHNh ZmV0eQptYXJnaW4uCgpTaW1pbGFybHksIGF2X3JvdW5kMTZmKCkgaXMgYWxzbyB0aGUgd3Jvbmcg dG9vbCBmb3IgdGhlIEkvUkdCIGNoYW5uZWxzLApiZWNhdXNlIGl0IGluY29ycmVjdGx5IHNjYWxl ZCB0aG9zZSB0byA2NTUzNCwgYW4gb2ZmIGJ5IG9uZSBvZiB0aGUgaW50ZW5kZWQKdW5vcm0xNiBm dWxsIHJhbmdlIHBlYWsgb2YgNjU1MzUuIFRoaXMgc2lsZW50bHkgcmVzdWx0ZWQgaW4gZS5nLiBS R0JBNjQKdHJ1ZSB3aGl0ZSAoNjU1MzUpIG5vdCByb3VuZC10cmlwcGluZyB0aHJvdWdoIHRoZSAz RExVVC4KCkZpeCBib3RoIGJ5IHNwbGl0dGluZyB0aGlzIGhlbHBlciBpbnRvIHR3byBzZXBhcmF0 ZSBoZWxwZXJzLCBlYWNoIG9mIHRoZW0KZml4ZWQgdG8gdGhlIGNvcnJlY3QsIGludGVuZGVkIHZh bHVlIHJhbmdlLgoKU3BvbnNvcmVkLWJ5OiBTb3ZlcmVpZ24gVGVjaCBGdW5kClNpZ25lZC1vZmYt Ynk6IE5pa2xhcyBIYWFzIDxnaXRAaGFhc24uZGV2PgotLS0KIGxpYnN3c2NhbGUvY21zLmMgfCAz NCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTkg aW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlic3dzY2FsZS9j bXMuYyBiL2xpYnN3c2NhbGUvY21zLmMKaW5kZXggMWM5Yzg3NGE1NS4uNzM0NDhlY2ViYyAxMDA2 NDQKLS0tIGEvbGlic3dzY2FsZS9jbXMuYworKysgYi9saWJzd3NjYWxlL2Ntcy5jCkBAIC01NjIs OSArNTYyLDE0IEBAIHN0YXRpYyBJUFQgc2F0dXJhdGlvbihjb25zdCBDbXNDdHggKiBjdHgsIElQ VCBpcHQpCiAgICAgcmV0dXJuIHJnYjJpcHQocmdiLCBjdHgtPmRzdC5jb250ZW50Mmxtcyk7CiB9 CiAKLXN0YXRpYyBhdl9hbHdheXNfaW5saW5lIGF2X2NvbnN0IHVpbnQxNl90IGF2X3JvdW5kMTZm KGZsb2F0IHgpCitzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBhdl9jb25zdCB1aW50MTZfdCByb3Vu ZF91bm9ybTE2KGZsb2F0IHgpCiB7Ci0gICAgcmV0dXJuIGF2X2NsaXBfdWludDE2KHggKiAoVUlO VDE2X01BWCAtIDEpICsgMC41Zik7CisgICAgcmV0dXJuIGF2X2NsaXBfdWludDE2KHggKiBVSU5U MTZfTUFYICsgMC41Zik7Cit9CisKK3N0YXRpYyBhdl9hbHdheXNfaW5saW5lIGF2X2NvbnN0IHVp bnQxNl90IHJvdW5kX3B0MTYoZmxvYXQgeCkKK3sKKyAgICByZXR1cm4gYXZfY2xpcF91aW50MTYo eCAqICgxIDw8IDE2KSArIDAuNWYpOwogfQogCiAvKiBDYWxsIHRoaXMgd2hlbmV2ZXIgdGhlIGh1 ZSBjaGFuZ2VzIGluc2lkZSB0aGUgbG9vcCBib2R5ICovCkBAIC02MDIsNyArNjA3LDYgQEAgc3Rh dGljIHZvaWQgZ2VuZXJhdGVfc2xpY2Uodm9pZCAqcHJpdiwgaW50IGpvYm5yLCBpbnQgdGhyZWFk bnIsIGludCBuYl9qb2JzLAogCiAgICAgY29uc3QgZmxvYXQgSV9zY2FsZSAgID0gMS4wZiAvIChj dHguc3JjLkltYXggLSBjdHguc3JjLkltaW4pOwogICAgIGNvbnN0IGZsb2F0IElfb2Zmc2V0ICA9 IC1jdHguc3JjLkltaW4gKiBJX3NjYWxlOwotICAgIGNvbnN0IGZsb2F0IFBUX29mZnNldCA9IChm bG9hdCkgKDEgPDwgMTUpIC8gKFVJTlQxNl9NQVggLSAxKTsKIAogICAgIGNvbnN0IGZsb2F0IGlu cHV0X3NjYWxlICAgICA9IDEuMGYgLyAoY3R4LnNpemVfaW5wdXQgLSAxKTsKICAgICBjb25zdCBm bG9hdCBvdXRwdXRfc2NhbGVfUFQgPSAxLjBmIC8gKGN0eC5zaXplX291dHB1dF9QVCAtIDEpOwpA QCAtNjI1LDkgKzYyOSw5IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlX3NsaWNlKHZvaWQgKnByaXYs IGludCBqb2JuciwgaW50IHRocmVhZG5yLCBpbnQgbmJfam9icywKICAgICAgICAgICAgICAgICBp ZiAob3V0cHV0KSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIFNhdmUgaW50ZXJtZWRpYXRlIHZh bHVlIHRvIDNETFVUICovCiAgICAgICAgICAgICAgICAgICAgICppbnB1dCsrID0gKHYzdTE2X3Qp IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF2X3JvdW5kMTZmKElfc2NhbGUgKiBpcHQuSSAr IElfb2Zmc2V0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGF2X3JvdW5kMTZmKGlwdC5QICsg UFRfb2Zmc2V0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGF2X3JvdW5kMTZmKGlwdC5UICsg UFRfb2Zmc2V0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kX3Vub3JtMTYoSV9zY2Fs ZSAqIGlwdC5JICsgSV9vZmZzZXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRfcHQx NihpcHQuUCArIDAuNWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRfcHQxNihpcHQu VCArIDAuNWYpLAogICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgIH0gZWxz ZSB7CiAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9odWVfcGVha3MoJmN0eCwgaXB0LlAsIGlw dC5UKTsKQEAgLTY0MSw5ICs2NDUsOSBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9zbGljZSh2b2lk ICpwcml2LCBpbnQgam9ibnIsIGludCB0aHJlYWRuciwgaW50IG5iX2pvYnMsCiAgICAgICAgICAg ICAgICAgICAgIGNbMl0gPSByZ2IuQjsKICAgICAgICAgICAgICAgICAgICAgY3R4LmRzdC5lb3Rm X2ludihjdHguZHN0Lkx3LCBjdHguZHN0LkxiLCBjKTsKICAgICAgICAgICAgICAgICAgICAgKmlu cHV0KysgPSAodjN1MTZfdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXZfcm91bmQxNmYo Y1swXSksCi0gICAgICAgICAgICAgICAgICAgICAgICBhdl9yb3VuZDE2ZihjWzFdKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgIGF2X3JvdW5kMTZmKGNbMl0pLAorICAgICAgICAgICAgICAgICAg ICAgICAgcm91bmRfdW5vcm0xNihjWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5k X3Vub3JtMTYoY1sxXSksCisgICAgICAgICAgICAgICAgICAgICAgICByb3VuZF91bm9ybTE2KGNb Ml0pLAogICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgIH0KQEAgLTY1NSw5ICs2NTksOSBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9zbGljZSh2b2lk ICpwcml2LCBpbnQgam9ibnIsIGludCB0aHJlYWRuciwgaW50IG5iX2pvYnMsCiAKICAgICAvKiBH ZW5lcmF0ZSBzcGxpdCBnYW11dCBtYXBwaW5nIExVVCAqLwogICAgIGZvciAoaW50IFR4ID0gb3V0 cHV0X3N0YXJ0OyBUeCA8IG91dHB1dF9lbmQ7IFR4KyspIHsKLSAgICAgICAgY29uc3QgZmxvYXQg VCA9IG91dHB1dF9zY2FsZV9QVCAqIFR4IC0gUFRfb2Zmc2V0OworICAgICAgICBjb25zdCBmbG9h dCBUID0gb3V0cHV0X3NjYWxlX1BUICogVHggLSAwLjVmOwogICAgICAgICBmb3IgKGludCBQeCA9 IDA7IFB4IDwgY3R4LnNpemVfb3V0cHV0X1BUOyBQeCsrKSB7Ci0gICAgICAgICAgICBjb25zdCBm bG9hdCBQID0gb3V0cHV0X3NjYWxlX1BUICogUHggLSBQVF9vZmZzZXQ7CisgICAgICAgICAgICBj b25zdCBmbG9hdCBQID0gb3V0cHV0X3NjYWxlX1BUICogUHggLSAwLjVmOwogICAgICAgICAgICAg dXBkYXRlX2h1ZV9wZWFrcygmY3R4LCBQLCBUKTsKIAogICAgICAgICAgICAgZm9yIChpbnQgSXgg PSAwOyBJeCA8IGN0eC5zaXplX291dHB1dF9JOyBJeCsrKSB7CkBAIC02NjcsOSArNjcxLDkgQEAg c3RhdGljIHZvaWQgZ2VuZXJhdGVfc2xpY2Uodm9pZCAqcHJpdiwgaW50IGpvYm5yLCBpbnQgdGhy ZWFkbnIsIGludCBuYl9qb2JzLAogICAgICAgICAgICAgICAgIGRvdWJsZSBjWzNdID0geyByZ2Iu UiwgcmdiLkcsIHJnYi5CIH07CiAgICAgICAgICAgICAgICAgY3R4LmRzdC5lb3RmX2ludihjdHgu ZHN0Lkx3LCBjdHguZHN0LkxiLCBjKTsKICAgICAgICAgICAgICAgICAqb3V0cHV0KysgPSAodjN1 MTZfdCkgewotICAgICAgICAgICAgICAgICAgICBhdl9yb3VuZDE2ZihjWzBdKSwKLSAgICAgICAg ICAgICAgICAgICAgYXZfcm91bmQxNmYoY1sxXSksCi0gICAgICAgICAgICAgICAgICAgIGF2X3Jv dW5kMTZmKGNbMl0pLAorICAgICAgICAgICAgICAgICAgICByb3VuZF91bm9ybTE2KGNbMF0pLAor ICAgICAgICAgICAgICAgICAgICByb3VuZF91bm9ybTE2KGNbMV0pLAorICAgICAgICAgICAgICAg ICAgICByb3VuZF91bm9ybTE2KGNbMl0pLAogICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAg ICB9CiAgICAgICAgIH0KQEAgLTc1OSw3ICs3NjMsNyBAQCB2b2lkIGZmX3N3c190b25lX21hcF9n ZW5lcmF0ZSh2MnUxNl90ICpsdXQsIGludCBzaXplLCBjb25zdCBTd3NDb2xvck1hcCAqbWFwKQog ICAgICAgICBjb25zdCBmbG9hdCBJID0gc3JjX3NjYWxlICogaSArIHNyY19vZmZzZXQ7CiAgICAg ICAgIElQVCBpcHQgPSB0b25lX21hcF9hcHBseSgmY3R4LCAoSVBUKSB7IEksIDEuMGYgfSk7CiAg ICAgICAgIGx1dFtpXSA9ICh2MnUxNl90KSB7Ci0gICAgICAgICAgICBhdl9yb3VuZDE2Zihkc3Rf c2NhbGUgKiBpcHQuSSArIGRzdF9vZmZzZXQpLAorICAgICAgICAgICAgcm91bmRfdW5vcm0xNihk c3Rfc2NhbGUgKiBpcHQuSSArIGRzdF9vZmZzZXQpLAogICAgICAgICAgICAgYXZfY2xpcF91aW50 MTYoaXB0LlAgKiAoMSA8PCAxNSkgKyAwLjVmKSwKICAgICAgICAgfTsKICAgICB9Ci0tIAoyLjUy LjAKCgpGcm9tIDI3YzRkZWUxMzQ3ZDY4NjIzOTAyZDFlNzE0NzMzNmM0M2ZkZjhiYjYgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IE5pa2xhcyBIYWFzIDxnaXRAaGFhc24uZGV2PgpEYXRl OiBUaHUsIDIzIEp1bCAyMDI2IDE5OjQ4OjI0ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxMi8xOF0g c3dzY2FsZS9vcHM6IGFkZCBTV1NfT1BfTFVUXzNEIGFuZCBzdXBwb3J0aW5nIGNvZGUKCkFmdGVy IGV4dGVuc2l2ZSB0ZXN0aW5nLCBwcm90b3R5cGluZyBhbmQgYmVuY2htYXJraW5nIGFjcm9zcyBh IHJhbmdlIG9mCnN5c3RlbXMsIEkgZGV0ZXJtaW5lZCB0aGF0IHRoZSBvcHRpbWFsIGRhdGEgbGF5 b3V0IGZvciB0aGUgU0lNRCAzRExVVCBpcwplc3NlbnRpYWxseSBleGFjdGx5IHRoZSBvbmUgd2Ug aGF2ZS4gMTYtYml0IGludGVnZXJzIGFyZSBuZWFyIG9wdGltYWwgZm9yCnF1YWxpdHkgdnMgY29t cGFjdG5lc3MsIGFuZCBjcnVjaWFsbHksIHg4NiBsZXRzIHVzIGxvYWQgdGhlIGVudGlyZSBwYWNr ZWQKM0RMVVQgZW50cnkgd2l0aCBhIHNpbmdsZSBgdnBnYXRoZXJkcWAgaW5zdHJ1Y3Rpb24uCgpU aGlzIGR3YXJmcyB0aGUgbG9zcyBmcm9tIG5lZWRpbmcgdG8gY2FzdCB0aGUgcmVzdWx0aW5nIDE2 LWJpdCBpbnRlZ2VycwpiYWNrIHRvIGYzMiBhbmQgcmVub3JtYWxpemUuCgpTcG9uc29yZWQtYnk6 IFNvdmVyZWlnbiBUZWNoIEZ1bmQKU2lnbmVkLW9mZi1ieTogTmlrbGFzIEhhYXMgPGdpdEBoYWFz bi5kZXY+Ci0tLQogbGlic3dzY2FsZS9vcHMuYyAgICAgICAgICAgfCAzNyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystCiBsaWJzd3NjYWxlL29wcy5oICAgICAgICAgICB8IDMx ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYnN3c2NhbGUvb3BzX29wdGltaXpl ci5jIHwgMTEgKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvb3BzLmMgYi9saWJzd3NjYWxl L29wcy5jCmluZGV4IDIxNDYyZGYzODYuLjg0ODJmN2M1ZWMgMTAwNjQ0Ci0tLSBhL2xpYnN3c2Nh bGUvb3BzLmMKKysrIGIvbGlic3dzY2FsZS9vcHMuYwpAQCAtODgsNiArODgsNyBAQCBjb25zdCBj aGFyICpmZl9zd3Nfb3BfdHlwZV9uYW1lKFN3c09wVHlwZSBvcCkKICAgICBjYXNlIFNXU19PUF9E SVRIRVI6ICAgICAgcmV0dXJuICJTV1NfT1BfRElUSEVSIjsKICAgICBjYXNlIFNXU19PUF9GSUxU RVJfSDogICAgcmV0dXJuICJTV1NfT1BfRklMVEVSX0giOwogICAgIGNhc2UgU1dTX09QX0ZJTFRF Ul9WOiAgICByZXR1cm4gIlNXU19PUF9GSUxURVJfViI7CisgICAgY2FzZSBTV1NfT1BfTFVUXzNE OiAgICAgIHJldHVybiAiU1dTX09QX0xVVF8zRCI7CiAgICAgY2FzZSBTV1NfT1BfSU5WQUxJRDog ICAgIHJldHVybiAiU1dTX09QX0lOVkFMSUQiOwogICAgIGNhc2UgU1dTX09QX1RZUEVfTkI6IGJy ZWFrOwogICAgIH0KQEAgLTI2Niw2ICsyNjcsMTEgQEAgdm9pZCBmZl9zd3NfYXBwbHlfb3BfcShj b25zdCBTd3NPcCAqb3AsIEFWUmF0aW9uYWw2NCB4WzRdKQogICAgICAgICAvKiBGaWx0ZXJzIGhh dmUgbm9ybWFsaXplZCBlbmVyZ3kgYnkgZGVmaW5pdGlvbiwgc28gdGhleSBkb24ndAogICAgICAg ICAgKiBjb25jZXB0dWFsbHkgbW9kaWZ5IGluZGl2aWR1YWwgY29tcG9uZW50cyAqLwogICAgICAg ICByZXR1cm47CisgICAgY2FzZSBTV1NfT1BfTFVUXzNEOgorICAgICAgICAvKiAzRCBMVVRzIGFy ZSB0cmVhdGVkIGFzIGEgYmxhY2sgYm94LCBzbyBzZXQgdGhvc2UgdmFsdWVzIHRvIE5hTiAqLwor ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7IGkrKykKKyAgICAgICAgICAgIHhbaV0gPSAo QVZSYXRpb25hbDY0KSB7MH07CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdl91bnJl YWNoYWJsZSgiSW52YWxpZCBvcGVyYXRpb24gdHlwZSEiKTsKQEAgLTMyMyw2ICszMjksNyBAQCB2 b2lkIGZmX3N3c19vcF9saXN0X3VwZGF0ZV9jb21wcyhTd3NPcExpc3QgKm9wcykKICAgICAgICAg Y2FzZSBTV1NfT1BfVU5QQUNLOgogICAgICAgICBjYXNlIFNXU19PUF9GSUxURVJfSDoKICAgICAg ICAgY2FzZSBTV1NfT1BfRklMVEVSX1Y6CisgICAgICAgIGNhc2UgU1dTX09QX0xVVF8zRDoKICAg ICAgICAgICAgIGJyZWFrOyAvKiBzcGVjaWFsIGNhc2VzLCBoYW5kbGVkIGJlbG93ICovCiAgICAg ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBtZW1jcHkob3AtPmNvbXBzLm1pbiwgcHJldi5taW4s IHNpemVvZihwcmV2Lm1pbikpOwpAQCAtNTE4LDcgKzUyNSwyMSBAQCB2b2lkIGZmX3N3c19vcF9s aXN0X3VwZGF0ZV9jb21wcyhTd3NPcExpc3QgKm9wcykKICAgICAgICAgICAgIGFwcGx5X2ZpbHRl cl93ZWlnaHRzKCZvcC0+Y29tcHMsICZwcmV2LCBvcC0+ZmlsdGVyLmtlcm5lbCk7CiAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgfQotCisgICAgICAgIGNhc2UgU1dTX09QX0xVVF8zRDoKKyAg ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7CisgICAgICAgICAgICAgICAg LyogM3gzIGRlcGVuZGVuY3kgbWF0cml4OyBzdHJpcCBhbGwgaW5mb3JtYXRpb24gZXhjZXB0Cisg ICAgICAgICAgICAgICAgICogU1dTX0NPTVBfR0FSQkFHRSAoZm9yIGNvcnJlY3RuZXNzIHZhbGlk YXRpb24pICovCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCAzOyBqKyspCisg ICAgICAgICAgICAgICAgICAgIEZPUldBUkQoaSwgaiwgZmxhZ3MgJiBTV1NfQ09NUF9HQVJCQUdF KTsKKyAgICAgICAgICAgICAgICAvKiBMVVQgb3V0cHV0IGRvbWFpbiBpcyBhbHdheXMgc2NhbGVk IHRvIGZ1bGwgMTYtYml0IHJhbmdlICovCisgICAgICAgICAgICAgICAgb3AtPmNvbXBzLm1pbltp XSA9IFEoMCk7CisgICAgICAgICAgICAgICAgb3AtPmNvbXBzLm1heFtpXSA9IFEoVUlOVDE2X01B WCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBQYXNzIHRocm91Z2ggYWxwaGEgY2hh bm5lbCB1bnRvdWNoZWQgKi8KKyAgICAgICAgICAgIEZPUldBUkQoMywgMywgZmxhZ3MpOworICAg ICAgICAgICAgb3AtPmNvbXBzLm1pblszXSA9IHByZXYubWluWzNdOworICAgICAgICAgICAgb3At PmNvbXBzLm1heFszXSA9IHByZXYubWF4WzNdOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg IGNhc2UgU1dTX09QX0lOVkFMSUQ6CiAgICAgICAgIGNhc2UgU1dTX09QX1RZUEVfTkI6CiAgICAg ICAgICAgICBhdl91bnJlYWNoYWJsZSgiSW52YWxpZCBvcGVyYXRpb24gdHlwZSEiKTsKQEAgLTU4 Nyw2ICs2MDgsMTEgQEAgdm9pZCBmZl9zd3Nfb3BfbGlzdF91cGRhdGVfY29tcHMoU3dzT3BMaXN0 ICpvcHMpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl YWs7CisgICAgICAgIGNhc2UgU1dTX09QX0xVVF8zRDoKKyAgICAgICAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgMzsgaSsrKQorICAgICAgICAgICAgICAgIG5lZWRfaW5baV0gPSBuZWVkX291dFsw XSB8IG5lZWRfb3V0WzFdIHwgbmVlZF9vdXRbMl07CisgICAgICAgICAgICBuZWVkX2luWzNdID0g bmVlZF9vdXRbM107CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIG1l bWNweShuZWVkX291dCwgbmVlZF9pbiwgc2l6ZW9mKG5lZWRfaW4pKTsKQEAgLTYwOSw2ICs2MzUs OSBAQCBzdGF0aWMgdm9pZCBvcF91bmluaXQoU3dzT3AgKm9wKQogICAgIGNhc2UgU1dTX09QX0ZJ TFRFUl9WOgogICAgICAgICBhdl9yZWZzdHJ1Y3RfdW5yZWYoJm9wLT5maWx0ZXIua2VybmVsKTsK ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTV1NfT1BfTFVUXzNEOgorICAgICAgICBhdl9yZWZz dHJ1Y3RfdW5yZWYoJm9wLT5sdXQzZC5sdXQpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAg ICAqb3AgPSAoU3dzT3ApIHswfTsKQEAgLTY3Miw2ICs3MDEsOSBAQCBTd3NPcExpc3QgKmZmX3N3 c19vcF9saXN0X2R1cGxpY2F0ZShjb25zdCBTd3NPcExpc3QgKm9wcykKICAgICAgICAgY2FzZSBT V1NfT1BfRklMVEVSX1Y6CiAgICAgICAgICAgICBhdl9yZWZzdHJ1Y3RfcmVmKG9wLT5maWx0ZXIu a2VybmVsKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNXU19PUF9MVVRfM0Q6 CisgICAgICAgICAgICBhdl9yZWZzdHJ1Y3RfcmVmX2Mob3AtPmx1dDNkLmx1dCk7CisgICAgICAg ICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTMwLDYgKzk2Miw5IEBAIHZvaWQg ZmZfc3dzX29wX2Rlc2MoQVZCUHJpbnQgKmJwLCBjb25zdCBTd3NPcCAqb3ApCiAgICAgICAgICAg ICAgICAgICAga2VybmVsLT5uYW1lLCBrZXJuZWwtPmZpbHRlcl9zaXplKTsKICAgICAgICAgYnJl YWs7CiAgICAgfQorICAgIGNhc2UgU1dTX09QX0xVVF8zRDoKKyAgICAgICAgYXZfYnByaW50Zihi cCwgIiUtMjBzOiAlcyIsIG5hbWUsIG9wLT5sdXQzZC5keW5hbWljID8gImR5bmFtaWMiIDogInN0 YXRpYyIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFNXU19PUF9UWVBFX05COgogICAgICAg ICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9saWJzd3NjYWxlL29wcy5oIGIvbGlic3dzY2Fs ZS9vcHMuaAppbmRleCA4M2VmMmI0OWRmLi4wMDhlOGM1YjMxIDEwMDY0NAotLS0gYS9saWJzd3Nj YWxlL29wcy5oCisrKyBiL2xpYnN3c2NhbGUvb3BzLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lu Y2x1ZGUgImdyYXBoLmgiCiAjaW5jbHVkZSAiZmlsdGVycy5oIgorI2luY2x1ZGUgImx1dDNkLmgi CiAjaW5jbHVkZSAicmF0aW9uYWw2NC5oIgogI2luY2x1ZGUgInVvcHMuaCIKIApAQCAtNjIsNiAr NjMsOSBAQCB0eXBlZGVmIGVudW0gU3dzT3BUeXBlIHsKICAgICBTV1NfT1BfRklMVEVSX0gsICAg ICAgICAvKiBob3Jpem9udGFsIGZpbHRlcmluZyAqLwogICAgIFNXU19PUF9GSUxURVJfViwgICAg ICAgIC8qIHZlcnRpY2FsIGZpbHRlcmluZyAqLwogCisgICAgLyogVGFibGUtYmFzZWQgb3BlcmF0 aW9ucy4gRGVmaW5lZCBmb3IgZmxvYXRpbmcgcG9pbnQgdHlwZXMgb25seS4gKi8KKyAgICBTV1Nf T1BfTFVUXzNELCAgICAgICAgICAvKiBhcHBseSBhIFN3c0x1dDNEICovCisKICAgICBTV1NfT1Bf VFlQRV9OQiwKIH0gU3dzT3BUeXBlOwogCkBAIC0yMDQsNiArMjA4LDMyIEBAIHR5cGVkZWYgc3Ry dWN0IFN3c0ZpbHRlck9wIHsKICAgICBTd3NQaXhlbFR5cGUgdHlwZTsgICAgICAgIC8qIHBpeGVs IHR5cGUgdG8gc3RvcmUgcmVzdWx0IGFzICovCiB9IFN3c0ZpbHRlck9wOwogCit0eXBlZGVmIHN0 cnVjdCBTd3NMdXQzZE9wIHsKKyAgICAvKioKKyAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIGV4dGVy bmFsIExVVDNEIHRvIGFwcGx5LiBUaGlzIGlzIG1hbmFnZWQgYnkgdGhlIGNhbGxlciwKKyAgICAg KiBhbmQgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgU3dzT3AgYW5k IGFueSBjb21waWxlZAorICAgICAqIGZ1bmN0aW9ucyBkZXJpdmVkIGZyb20gaXQuCisgICAgICoK KyAgICAgKiAqbHV0IGlzIG5ldmVyIGRlcmVmZXJlbmNlZCBieSB0aGUgU3dzT3AgY29kZSBpdHNl bGYsIG9ubHkgYXQgcnVudGltZSBieQorICAgICAqIHRoZSBhY3R1YWwgZGlzcGF0Y2hlZCBpbXBs ZW1lbnRhdGlvbiwgYW5kIG1heSBiZSBmcmVlbHkgbW9kaWZpZWQgZXZlbgorICAgICAqIGFmdGVy IG9wIGNvbXBpbGF0aW9uIHRvIHBsYWNlIG5ldyB2YWx1ZXMgZm9yIGR5bmFtaWMgdG9uZS1tYXBw aW5nLgorICAgICAqCisgICAgICogVGhlIHJlZmVyZW5jZSBhbGdvcml0aG0gZm9yIHRoaXMgb3Bl cmF0aW9uIGxpdmVzIGluIGx1dDNkLmMsIGFuZAorICAgICAqIGluY2x1ZGVzIGEgdGV0cmFoZWRy YWwgaW50ZXJwb2xhdGlvbiBjb21wb25lbnQgZm9yIHRoZSBpbnB1dCBMVVQsIGFuZAorICAgICAq IHRoZW4gYW4gb3B0aW9uYWwgbGluZWFyIHRvbmUgbWFwcGluZyBMVVQgcGx1cyB0cmlsaW5lYXIg b3V0cHV0IExVVAorICAgICAqICh3aGVuIGx1dC0+ZHluYW1pYyBpcyB0cnVlKS4KKyAgICAgKgor ICAgICAqIEFsbCBsaW5lYXIgaW50ZXJwb2xhdGlvbnMgYXJlIHBlcmZvcm1lZCBpbiB0aGUgcGl4 ZWwgdmFsdWUncyBuYXRpdmUKKyAgICAgKiByZXByZXNlbnRhdGlvbiwgZXZlbiB0aG91Z2ggdGhl IExVVHMgdGhlbXNlbHZlcyBhcmUgc3RvcmVkIGFzIHVuc2lnbmVkCisgICAgICogcGFja2VkIDE2 LWJpdCBpbnRlZ2Vycy4gVGhlIGlucHV0IHZhbHVlIHJhbmdlIGlzIGFzc3VtZWQgdG8gYmUgc2Nh bGVkCisgICAgICogYW5kIGNsYW1wZWQgdG8gdGhlIExVVCdzIGRvbWFpbiAoaS5lLiBbMCwgSU5Q VVRfTFVUX1NJWkUgLSAxXSksIGFuZCB0aGUKKyAgICAgKiBvdXRwdXQgdmFsdWUgcmFuZ2Ugd2ls bCBiZSBbMCwgMl4xNi0xXSwgZXhjZXB0IGZvciB0aGUgYWxwaGEgY2hhbm5lbCwKKyAgICAgKiB3 aGljaCBpcyBwYXNzZWQgdGhyb3VnaCB1bnRvdWNoZWQuCisgICAgICovCisgICAgY29uc3QgU3dz THV0M0QgKmx1dDsgLyogcmVmc3RydWN0ICovCisgICAgYm9vbCBkeW5hbWljOworfSBTd3NMdXQz ZE9wOworCiB0eXBlZGVmIHN0cnVjdCBTd3NPcCB7CiAgICAgU3dzT3BUeXBlIG9wOyAgICAgIC8q IG9wZXJhdGlvbiB0byBwZXJmb3JtICovCiAgICAgU3dzUGl4ZWxUeXBlIHR5cGU7IC8qIHBpeGVs IHR5cGUgdG8gb3BlcmF0ZSBvbiAqLwpAQCAtMjE5LDYgKzI0OSw3IEBAIHR5cGVkZWYgc3RydWN0 IFN3c09wIHsKICAgICAgICAgU3dzU2NhbGVPcCAgICAgIHNjYWxlOwogICAgICAgICBTd3NEaXRo ZXJPcCAgICAgZGl0aGVyOwogICAgICAgICBTd3NGaWx0ZXJPcCAgICAgZmlsdGVyOworICAgICAg ICBTd3NMdXQzZE9wICAgICAgbHV0M2Q7CiAgICAgfTsKIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEv bGlic3dzY2FsZS9vcHNfb3B0aW1pemVyLmMgYi9saWJzd3NjYWxlL29wc19vcHRpbWl6ZXIuYwpp bmRleCAzNTQ2ZDhiYzllLi5mZDNiNzBkZWVkIDEwMDY0NAotLS0gYS9saWJzd3NjYWxlL29wc19v cHRpbWl6ZXIuYworKysgYi9saWJzd3NjYWxlL29wc19vcHRpbWl6ZXIuYwpAQCAtNzcsNiArNzcs NyBAQCBzdGF0aWMgYm9vbCBvcF9jb21tdXRlX2NsZWFyKFN3c09wICpvcCwgU3dzT3AgKm5leHQp CiAgICAgY2FzZSBTV1NfT1BfUEFDSzoKICAgICBjYXNlIFNXU19PUF9VTlBBQ0s6CiAgICAgY2Fz ZSBTV1NfT1BfQ0xFQVI6CisgICAgY2FzZSBTV1NfT1BfTFVUXzNEOgogICAgICAgICByZXR1cm4g ZmFsc2U7CiAgICAgY2FzZSBTV1NfT1BfVFlQRV9OQjoKICAgICAgICAgYnJlYWs7CkBAIC0xNTcs NiArMTU4LDcgQEAgc3RhdGljIGJvb2wgb3BfY29tbXV0ZV9zd2l6emxlKFN3c09wICpvcCwgU3dz T3AgKm5leHQpCiAgICAgY2FzZSBTV1NfT1BfTElORUFSOgogICAgIGNhc2UgU1dTX09QX1BBQ0s6 CiAgICAgY2FzZSBTV1NfT1BfVU5QQUNLOgorICAgIGNhc2UgU1dTX09QX0xVVF8zRDoKICAgICAg ICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgU1dTX09QX1RZUEVfTkI6CiAgICAgICAgIGJyZWFr OwpAQCAtMTk4LDYgKzIwMCw3IEBAIHN0YXRpYyBib29sIG9wX2NvbW11dGVfZmlsdGVyKFN3c09w ICpvcCwgU3dzT3AgKnByZXYpCiAgICAgY2FzZSBTV1NfT1BfTUFYOgogICAgIGNhc2UgU1dTX09Q X0ZJTFRFUl9IOgogICAgIGNhc2UgU1dTX09QX0ZJTFRFUl9WOgorICAgIGNhc2UgU1dTX09QX0xV VF8zRDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgU1dTX09QX1RZUEVfTkI6CiAg ICAgICAgIGJyZWFrOwpAQCAtNzM3LDYgKzc0MCwxNCBAQCByZXRyeToKICAgICAgICAgICAgICAg ICBnb3RvIHJldHJ5OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg ICAgY2FzZSBTV1NfT1BfTFVUXzNEOgorICAgICAgICAgICAgLyogRWxpbWluYXRlIHVubmVjZXNz YXJ5IDNETFVUICovCisgICAgICAgICAgICBpZiAoIShuZWVkZWQgJiBTV1NfQ09NUF9FTEVNUygz KSkpIHsKKyAgICAgICAgICAgICAgICBmZl9zd3Nfb3BfbGlzdF9yZW1vdmVfYXQob3BzLCBuLCAx KTsKKyAgICAgICAgICAgICAgICBnb3RvIHJldHJ5OworICAgICAgICAgICAgfQorICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKLS0gCjIuNTIuMAoKCkZyb20gYzU1MDUwMjMw NDU5ZTIzOTM4ZWM3MjNlYzBlNWNmN2RhOTJlOTc2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogTmlrbGFzIEhhYXMgPGdpdEBoYWFzbi5kZXY+CkRhdGU6IFRodSwgMjMgSnVsIDIwMjYg MjE6MjY6NTIgKzAyMDAKU3ViamVjdDogW1BBVENIIDEzLzE4XSBzd3NjYWxlL3VvcHM6IGFkZCBT V1NfVU9QX0xVVF8zRCByZWZlcmVuY2UKIGltcGxlbWVudGF0aW9uCgpUaGUgc3RydWN0dXJlIGZv ciB0aGUgdGV0cmFoZWRyYWwgaW50ZXJwb2xhdGlvbiBkZXZpYXRlcyBzbGlnaHRseSBmcm9tIHRo ZQpuYWl2ZSBmb3JtdWxhdGlvbiBpbiBsdXQzZC5jOyBpbnN0ZWFkIG9mIGJyYW5jaGluZyBpbnRv IGV2ZXJ5IHNlcGFyYXRlIGNhc2UsCndlIHNvcnQgdGhlIHdlaWdodHMgYW5kIG9mZnNldHMgdXNp bmcgYSBzZXJpZXMgb2YgY29uZGl0aW9uYWwgc3dhcHMuIFRoaXMKYWN0dWFsbHkgcGVyZm9ybXMg aWRlbnRpY2FsbHkgb24gbXkgZW5kLCBidXQgcmVzdWx0cyBpbiBjb2RlIHRoYXQgaXMgbXVjaApj bG9zZXIgdG8gd2hhdCBTSU1EIHdpbGwgYmUgZG9pbmcuIFRoYXQgc2hvdWxkIGhvcGVmdWxseSBz ZXJ2ZSBhcyBhIGJldHRlcgpyZWZlcmVuY2UgZm9yIGZ1dHVyZSBTSU1EIGltcGxlbWVudG9ycy4g KE15c2VsZiBpbmNsdWRlZCkKCkkgYWxzbyByZW9yZGVyZWQgdGhlIGR5bmFtaWMgdG9uZS1tYXBw aW5nIGNvZGUgYSBiaXQgdG8gYmV0dGVyIGluZGljYXRlIHRoZQpzb3VyY2VzIG9mIGxpdmUgcmVn aXN0ZXIgcHJlc3N1cmUgdGhhdCB3aWxsIG1hbmlmZXN0IGluIHRoZSByZWFsIFNJTUQga2VybmVs LgoKU3BvbnNvcmVkLWJ5OiBTb3ZlcmVpZ24gVGVjaCBGdW5kClNpZ25lZC1vZmYtYnk6IE5pa2xh cyBIYWFzIDxnaXRAaGFhc24uZGV2PgotLS0KIGxpYnN3c2NhbGUvY3NwdXRpbHMuaCAgICAgfCAg IDQgKwogbGlic3dzY2FsZS91b3BzLmMgICAgICAgICB8ICAxMSArKysKIGxpYnN3c2NhbGUvdW9w cy5oICAgICAgICAgfCAgIDggKysKIGxpYnN3c2NhbGUvdW9wc19iYWNrZW5kLmMgfCAgIDEgKwog bGlic3dzY2FsZS91b3BzX2xpc3QuaCAgICB8ICAgMSArCiBsaWJzd3NjYWxlL3VvcHNfbWFjcm9z LmggIHwgICA4ICsrCiBsaWJzd3NjYWxlL3VvcHNfdG1wbC5jICAgIHwgMTU5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystCiA3IGZpbGVzIGNoYW5nZWQsIDE5MSBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbGlic3dzY2FsZS9jc3B1dGlscy5o IGIvbGlic3dzY2FsZS9jc3B1dGlscy5oCmluZGV4IDgyZWIwYjY4ZjQuLjU0MzcyNzZlYWQgMTAw NjQ0Ci0tLSBhL2xpYnN3c2NhbGUvY3NwdXRpbHMuaAorKysgYi9saWJzd3NjYWxlL2NzcHV0aWxz LmgKQEAgLTczLDYgKzczLDEwIEBAIHR5cGVkZWYgc3RydWN0IHYzdTE2X3QgewogICAgIHVpbnQx Nl90IHgsIHksIHo7CiB9IHYzdTE2X3Q7CiAKK3R5cGVkZWYgc3RydWN0IHYzZjMyX3QgeworICAg IGZsb2F0IHgsIHksIHo7Cit9IHYzZjMyX3Q7CisKIC8qIEZhc3QgcGVyY2VwdHVhbCBxdWFudGl6 ZXIgKi8KIHN0YXRpYyBjb25zdCBmbG9hdCBQUV9NMSA9IDI2MTAuLzQwOTYgKiAxLi80LAogICAg ICAgICAgICAgICAgICAgIFBRX00yID0gMjUyMy4vNDA5NiAqIDEyOCwKZGlmZiAtLWdpdCBhL2xp YnN3c2NhbGUvdW9wcy5jIGIvbGlic3dzY2FsZS91b3BzLmMKaW5kZXggZmM5ZDYwOTYzNi4uOTVj ZTZjNzE5ZCAxMDA2NDQKLS0tIGEvbGlic3dzY2FsZS91b3BzLmMKKysrIGIvbGlic3dzY2FsZS91 b3BzLmMKQEAgLTE1OSw2ICsxNTksOSBAQCB2b2lkIGZmX3N3c191b3BfbmFtZShjb25zdCBTd3NV T3AgKm9wLCBjaGFyIGJ1ZltTV1NfVU9QX05BTUVfTUFYXSkKICAgICAgICAgY29uc3QgdW5zaWdu ZWQgc2l6ZSA9IDF1IDw8IHBhci0+ZGl0aGVyLnNpemVfbG9nMjsKICAgICAgICAgYXZfYnByaW50 ZigmYnAsICJfJXV4JXUiLCBzaXplLCBzaXplKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT V1NfVU9QX0xVVF8zRDoKKyAgICAgICAgYXZfYnByaW50ZigmYnAsICJfJXMiLCBwYXItPmx1dDNk LmR5bmFtaWMgPyAiZHluYW1pYyIgOiAic3RhdGljIik7CisgICAgICAgIGJyZWFrOwogICAgIH0K IAogICAgIGF2X2Fzc2VydDAoYXZfYnByaW50X2lzX2NvbXBsZXRlKCZicCkpOwpAQCAtMTc1LDYg KzE3OCw5IEBAIHN0YXRpYyB2b2lkIHVvcF91bmluaXQoU3dzVU9wICp1b3ApCiAgICAgY2FzZSBT V1NfVU9QX1JFQURfUExBTkFSX0ZWX0ZNQToKICAgICAgICAgYXZfcmVmc3RydWN0X3VucmVmKCZ1 b3AtPmRhdGEua2VybmVsKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTV1NfVU9QX0xVVF8z RDoKKyAgICAgICAgYXZfcmVmc3RydWN0X3VucmVmKCZ1b3AtPmRhdGEubHV0M2QpOworICAgICAg ICBicmVhazsKICAgICB9CiAKICAgICAqdW9wID0gKFN3c1VPcCkgezB9OwpAQCAtNjU1LDYgKzY2 MSwxMSBAQCBzdGF0aWMgaW50IHRyYW5zbGF0ZV9vcChTd3NDb250ZXh0ICpjdHgsIFN3c1VPcExp c3QgKnVvcHMsIFN3c1VPcEZsYWdzIGZsYWdzLAogICAgICAgICB1b3AudW9wID0gU1dTX1VPUF9T V0FQX0JZVEVTOwogICAgICAgICB1b3AudHlwZSA9IHBpeGVsX3R5cGVfdG9faW50KG9wLT50eXBl KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTV1NfT1BfTFVUXzNEOgorICAgICAgICB1b3Au dW9wID0gU1dTX1VPUF9MVVRfM0Q7CisgICAgICAgIHVvcC5wYXIubHV0M2QuZHluYW1pYyA9IG9w LT5sdXQzZC5keW5hbWljOworICAgICAgICB1b3AuZGF0YS5sdXQzZCA9IGF2X3JlZnN0cnVjdF9y ZWZfYyhvcC0+bHV0M2QubHV0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg ICAgcmV0dXJuIEFWRVJST1IoRU5PVFNVUCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvbGlic3dzY2Fs ZS91b3BzLmggYi9saWJzd3NjYWxlL3VvcHMuaAppbmRleCAxOThlNmNhZWE5Li5mZWI4NzQ0ODY1 IDEwMDY0NAotLS0gYS9saWJzd3NjYWxlL3VvcHMuaAorKysgYi9saWJzd3NjYWxlL3VvcHMuaApA QCAtMzMsNiArMzMsNyBAQAogCiB0eXBlZGVmIHN0cnVjdCBTd3NDb250ZXh0ICAgICAgIFN3c0Nv bnRleHQ7CiB0eXBlZGVmIHN0cnVjdCBTd3NGaWx0ZXJXZWlnaHRzIFN3c0ZpbHRlcldlaWdodHM7 Cit0eXBlZGVmIHN0cnVjdCBTd3NMdXQzRCAgICAgICAgIFN3c0x1dDNEOwogdHlwZWRlZiBzdHJ1 Y3QgU3dzT3BMaXN0ICAgICAgICBTd3NPcExpc3Q7CiAKIHR5cGVkZWYgZW51bSBTd3NQaXhlbFR5 cGUgewpAQCAtMTc1LDYgKzE3Niw3IEBAIHR5cGVkZWYgZW51bSBTd3NVT3BUeXBlIHsKICAgICBT V1NfVU9QX0xJTkVBUiwgICAgICAgICAgLyogbWFzayA9IG5vbi10cml2aWFsIG91dHB1dCByb3dz ICovCiAgICAgU1dTX1VPUF9MSU5FQVJfRk1BLCAgICAgIC8qIHdpdGggU1dTX1VPUF9GTEFHX0ZN QSAqLwogICAgIFNXU19VT1BfRElUSEVSLCAgICAgICAgICAvKiBtYXNrID0gY29tcG9uZW50cyB0 byBkaXRoZXIgKi8KKyAgICBTV1NfVU9QX0xVVF8zRCwgICAgICAgICAgLyogbWFzayA9IG5lZWRl ZCBvdXRwdXQgY29tcG9uZW50cyAqLwogCiAgICAgLyogUGxhdGZvcm0tc3BlY2lmaWMgdW9wcyB3 b3VsZCBnbyBoZXJlICovCiAgICAgU1dTX1VPUF9UWVBFX05CLApAQCAtMjM3LDYgKzIzOSwxMCBA QCB0eXBlZGVmIHN0cnVjdCBTd3NEaXRoZXJVT3AgewogICAgIHVpbnQ4X3Qgc2l6ZV9sb2cyOwog fSBTd3NEaXRoZXJVT3A7CiAKK3R5cGVkZWYgc3RydWN0IFN3c0x1dDNEVU9wIHsKKyAgICBpbnQg ZHluYW1pYzsKK30gU3dzTHV0M0RVT3A7CisKIC8qKgogICogQ29tcHV0ZXMgKDEgPDwgc2l6ZV9s b2cyKSArIE1BWCh5X29mZnNldCkuIFRoZSBkaXRoZXIgbWF0cml4IGF0dGFjaGVkIHRvCiAgKiB0 aGUgU3dzVU9wIGlzIGFsd2F5cyBwcmUtcGFkZGVkIHRvIHRoaXMgbnVtYmVyIG9mIGxpbmVzLgpA QCAtMjUyLDYgKzI1OCw3IEBAIHR5cGVkZWYgdW5pb24gU3dzVU9wUGFyYW1zIHsKICAgICBTd3ND bGVhclVPcCAgICAgY2xlYXI7CiAgICAgU3dzTGluZWFyVU9wICAgIGxpbjsKICAgICBTd3NEaXRo ZXJVT3AgICAgZGl0aGVyOworICAgIFN3c0x1dDNEVU9wICAgICBsdXQzZDsKIH0gU3dzVU9wUGFy YW1zOwogCiB0eXBlZGVmIHN0cnVjdCBTd3NVT3AgewpAQCAtMjY5LDYgKzI3Niw3IEBAIHR5cGVk ZWYgc3RydWN0IFN3c1VPcCB7CiAgICAgICAgIFN3c1BpeGVsIHZlYzRbNF07CiAgICAgICAgIFN3 c1BpeGVsIG1hdDRbNF1bNV07ICAgICAgICAvKiByb3cgbWFqb3IgKi8KICAgICAgICAgU3dzU2h1 ZmZsZU1hc2sgc2h1ZmZsZTsgICAgIC8qIGZvciBTV1NfVU9QX1JXX1NIVUZGTEUgKi8KKyAgICAg ICAgY29uc3QgU3dzTHV0M0QgKmx1dDNkOyAgICAgIC8qIGZvciBTV1NfVU9QX0xVVF8zRDsgcmVm c3RydWN0ICovCiAgICAgICAgIHZvaWQgKm9wYXF1ZTsgICAgICAgICAgICAgICAvKiByZXNlcnZl ZCBmb3IgaW50ZXJuYWwgdXNlICovCiAgICAgfSBkYXRhOwogfSBTd3NVT3A7CmRpZmYgLS1naXQg YS9saWJzd3NjYWxlL3VvcHNfYmFja2VuZC5jIGIvbGlic3dzY2FsZS91b3BzX2JhY2tlbmQuYwpp bmRleCBkMGQwNWVlNDJmLi41YjM1YzFiNTg1IDEwMDY0NAotLS0gYS9saWJzd3NjYWxlL3VvcHNf YmFja2VuZC5jCisrKyBiL2xpYnN3c2NhbGUvdW9wc19iYWNrZW5kLmMKQEAgLTkyLDYgKzkyLDcg QEAKICAgICBTV1NfRk9SKFRZUEUsIENMRUFSLCAgICAgICAgICBSRUZfRU5UUlkpICAgICAgICAg ICAgICAgIFwKICAgICBTV1NfRk9SKFRZUEUsIExJTkVBUiwgICAgICAgICBSRUZfRU5UUlkpICAg ICAgICAgICAgICAgIFwKICAgICBTV1NfRk9SKFRZUEUsIERJVEhFUiwgICAgICAgICBSRUZfRU5U UlkpICAgICAgICAgICAgICAgIFwKKyAgICBTV1NfRk9SKFRZUEUsIExVVF8zRCwgICAgICAgICBS RUZfRU5UUlkpICAgICAgICAgICAgICAgIFwKICAgICAvKiBlbmQgb2YgbWFjcm8gKi8KIAogc3Rh dGljIGNvbnN0IFN3c1VPcFRhYmxlIHVvcF90YWJsZSA9IHsKZGlmZiAtLWdpdCBhL2xpYnN3c2Nh bGUvdW9wc19saXN0LmggYi9saWJzd3NjYWxlL3VvcHNfbGlzdC5oCmluZGV4IGEzNWFmOTAzNjAu LjMxNjMyZGZjYzAgMTAwNjQ0Ci0tLSBhL2xpYnN3c2NhbGUvdW9wc19saXN0LmgKKysrIGIvbGli c3dzY2FsZS91b3BzX2xpc3QuaApAQCAtNTcsNSArNTcsNiBAQAogICAgIEVOVFJZKFNXU19VT1Bf UlNISUZULCAgICAgICAgICAgICAgICJyc2hpZnQiKSAgICAgICAgICAgICAgICAgICAgXAogICAg IEVOVFJZKFNXU19VT1BfQ0xFQVIsICAgICAgICAgICAgICAgICJjbGVhciIpICAgICAgICAgICAg ICAgICAgICAgXAogICAgIEVOVFJZKFNXU19VT1BfRElUSEVSLCAgICAgICAgICAgICAgICJkaXRo ZXIiKSAgICAgICAgICAgICAgICAgICAgXAorICAgIEVOVFJZKFNXU19VT1BfTFVUXzNELCAgICAg ICAgICAgICAgICJsdXRfM2QiKSAgICAgICAgICAgICAgICAgICAgXAogCiAjZW5kaWYgLyogU1dT Q0FMRV9VT1BTX0xJU1RfSCAqLwpkaWZmIC0tZ2l0IGEvbGlic3dzY2FsZS91b3BzX21hY3Jvcy5o IGIvbGlic3dzY2FsZS91b3BzX21hY3Jvcy5oCmluZGV4IDZkNWM4ZmFjZjkuLjNhMjFlZmUyMDYg MTAwNjQ0Ci0tLSBhL2xpYnN3c2NhbGUvdW9wc19tYWNyb3MuaAorKysgYi9saWJzd3NjYWxlL3Vv cHNfbWFjcm9zLmgKQEAgLTM0Myw2ICszNDMsOCBAQAogI2RlZmluZSBTV1NfRk9SX1NUUlVDVF9V OF9MSU5FQVJfRk1BKE1BQ1JPLCAuLi4pCiAjZGVmaW5lIFNXU19GT1JfVThfRElUSEVSKE1BQ1JP LCAuLi4pCiAjZGVmaW5lIFNXU19GT1JfU1RSVUNUX1U4X0RJVEhFUihNQUNSTywgLi4uKQorI2Rl ZmluZSBTV1NfRk9SX1U4X0xVVF8zRChNQUNSTywgLi4uKQorI2RlZmluZSBTV1NfRk9SX1NUUlVD VF9VOF9MVVRfM0QoTUFDUk8sIC4uLikKICNkZWZpbmUgU1dTX0ZPUl9VMTZfUkVBRF9QTEFOQVIo TUFDUk8sIC4uLikgXAogICAgIE1BQ1JPKF9fVkFfQVJHU19fLCB1MTZfcmVhZF9wbGFuYXJfeCAg ICAgICAgICAgICAgICAgICAgICAgLCBTV1NfUElYRUxfVTE2LCBTV1NfVU9QX1JFQURfUExBTkFS ICAgICAsIDB4MSkgXAogICAgIE1BQ1JPKF9fVkFfQVJHU19fLCB1MTZfcmVhZF9wbGFuYXJfeHkg ICAgICAgICAgICAgICAgICAgICAgLCBTV1NfUElYRUxfVTE2LCBTV1NfVU9QX1JFQURfUExBTkFS ICAgICAsIDB4MykgXApAQCAtNjI1LDYgKzYyNyw4IEBACiAjZGVmaW5lIFNXU19GT1JfU1RSVUNU X1UxNl9MSU5FQVJfRk1BKE1BQ1JPLCAuLi4pCiAjZGVmaW5lIFNXU19GT1JfVTE2X0RJVEhFUihN QUNSTywgLi4uKQogI2RlZmluZSBTV1NfRk9SX1NUUlVDVF9VMTZfRElUSEVSKE1BQ1JPLCAuLi4p CisjZGVmaW5lIFNXU19GT1JfVTE2X0xVVF8zRChNQUNSTywgLi4uKQorI2RlZmluZSBTV1NfRk9S X1NUUlVDVF9VMTZfTFVUXzNEKE1BQ1JPLCAuLi4pCiAjZGVmaW5lIFNXU19GT1JfVTMyX1JFQURf UExBTkFSKE1BQ1JPLCAuLi4pIFwKICAgICBNQUNSTyhfX1ZBX0FSR1NfXywgdTMyX3JlYWRfcGxh bmFyX3ggICAgICAgICAgICAgICAgICAgICAgICwgU1dTX1BJWEVMX1UzMiwgU1dTX1VPUF9SRUFE X1BMQU5BUiAgICAgLCAweDEpIFwKICAgICBNQUNSTyhfX1ZBX0FSR1NfXywgdTMyX3JlYWRfcGxh bmFyX3h5eiAgICAgICAgICAgICAgICAgICAgICwgU1dTX1BJWEVMX1UzMiwgU1dTX1VPUF9SRUFE X1BMQU5BUiAgICAgLCAweDcpIFwKQEAgLTg0NSw2ICs4NDksOCBAQAogI2RlZmluZSBTV1NfRk9S X1NUUlVDVF9VMzJfTElORUFSX0ZNQShNQUNSTywgLi4uKQogI2RlZmluZSBTV1NfRk9SX1UzMl9E SVRIRVIoTUFDUk8sIC4uLikKICNkZWZpbmUgU1dTX0ZPUl9TVFJVQ1RfVTMyX0RJVEhFUihNQUNS TywgLi4uKQorI2RlZmluZSBTV1NfRk9SX1UzMl9MVVRfM0QoTUFDUk8sIC4uLikKKyNkZWZpbmUg U1dTX0ZPUl9TVFJVQ1RfVTMyX0xVVF8zRChNQUNSTywgLi4uKQogI2RlZmluZSBTV1NfRk9SX0Yz Ml9SRUFEX1BMQU5BUihNQUNSTywgLi4uKQogI2RlZmluZSBTV1NfRk9SX1NUUlVDVF9GMzJfUkVB RF9QTEFOQVIoTUFDUk8sIC4uLikKICNkZWZpbmUgU1dTX0ZPUl9GMzJfUkVBRF9QTEFOQVJfRkgo TUFDUk8sIC4uLikgXApAQCAtMTE1Nyw1ICsxMTYzLDcgQEAKICAgICBNQUNSTyhfX1ZBX0FSR1Nf XywgZjMyX2RpdGhlcl94eXp3XzNfMl8wXzVfMTZ4MTYgICAgICAgICAgICwgLnR5cGUgPSBTV1Nf UElYRUxfRjMyLCAudW9wID0gU1dTX1VPUF9ESVRIRVIgICAgICAgICAgLCAubWFzayA9IDB4Ziwg LnBhci5kaXRoZXIgPSB7IC55X29mZnNldCA9IHszLCAyLCAwLCA1fSwgLnNpemVfbG9nMiA9IDQg fSkgXAogICAgIE1BQ1JPKF9fVkFfQVJHU19fLCBmMzJfZGl0aGVyX3h5endfNV8wXzNfMl8xNngx NiAgICAgICAgICAgLCAudHlwZSA9IFNXU19QSVhFTF9GMzIsIC51b3AgPSBTV1NfVU9QX0RJVEhF UiAgICAgICAgICAsIC5tYXNrID0gMHhmLCAucGFyLmRpdGhlciA9IHsgLnlfb2Zmc2V0ID0gezUs IDAsIDMsIDJ9LCAuc2l6ZV9sb2cyID0gNCB9KSBcCiAgICAgTUFDUk8oX19WQV9BUkdTX18sIGYz Ml9kaXRoZXJfeHl6d181XzJfM18wXzE2eDE2ICAgICAgICAgICAsIC50eXBlID0gU1dTX1BJWEVM X0YzMiwgLnVvcCA9IFNXU19VT1BfRElUSEVSICAgICAgICAgICwgLm1hc2sgPSAweGYsIC5wYXIu ZGl0aGVyID0geyAueV9vZmZzZXQgPSB7NSwgMiwgMywgMH0sIC5zaXplX2xvZzIgPSA0IH0pCisj ZGVmaW5lIFNXU19GT1JfRjMyX0xVVF8zRChNQUNSTywgLi4uKQorI2RlZmluZSBTV1NfRk9SX1NU UlVDVF9GMzJfTFVUXzNEKE1BQ1JPLCAuLi4pCiAKICNlbmRpZiAvKiBTV1NDQUxFX1VPUFNfTUFD Uk9TX0ggKi8KZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvdW9wc190bXBsLmMgYi9saWJzd3NjYWxl L3VvcHNfdG1wbC5jCmluZGV4IDE3MmI3ZmIwNmIuLjUyMTUyYmNkZDUgMTAwNjQ0Ci0tLSBhL2xp YnN3c2NhbGUvdW9wc190bXBsLmMKKysrIGIvbGlic3dzY2FsZS91b3BzX3RtcGwuYwpAQCAtMzAs NiArMzAsNyBAQAogIyAgZGVmaW5lIFBJWEVMX1RZUEUgU1dTX1BJWEVMX0YzMgogIyAgZGVmaW5l IHBpeGVsX3QgICAgZmxvYXQKICMgIGRlZmluZSBpbnRlcl90ICAgIGZsb2F0CisjICBkZWZpbmUg dmVjM190ICAgICB2M2YzMl90CiAjICBkZWZpbmUgUFggICAgICAgICBGMzIKICMgIGRlZmluZSBw eCAgICAgICAgIGYzMgogI2VsaWYgQklUX0RFUFRIID09IDMyCkBAIC04MzksMTAgKzg0MCwxNjYg QEAgREVDTF9GVU5DKGxpbmVhciwgY29uc3QgU3dzQ29tcE1hc2sgbWFzaywgY29uc3QgdWludDMy X3Qgb25lLCBjb25zdCB1aW50MzJfdCB6ZXIKIFNXU19GT1IoUFgsIExJTkVBUiwgREVDTF9JTVBM LCBsaW5lYXIpCiBTV1NfRk9SX1NUUlVDVChQWCwgTElORUFSLCBERUNMX0VOVFJZLCAuc2V0dXAg PSBmbihzZXR1cF9saW5lYXIpICkKIAorLyoqKioqKioqKioqKioqKioqKgorICogTG9vay11cCB0 YWJsZXMgKgorICoqKioqKioqKioqKioqKioqKi8KKworREVDTF9TRVRVUChzZXR1cF9sdXQzZCwg cGFyYW1zLCBvdXQpCit7CisgICAgY29uc3QgU3dzTHV0M0QgKmx1dCA9IHBhcmFtcy0+dW9wLT5k YXRhLmx1dDNkOworICAgIG91dC0+cHJpdi5wdHIgPSAodm9pZCAqKSBhdl9yZWZzdHJ1Y3RfcmVm X2MobHV0KTsKKyAgICBvdXQtPmZyZWUgPSBmZl9vcF9wcml2X3VucmVmOworICAgIHJldHVybiAw OworfQorCisjaWYgSVNfRkxPQVQKK2F2X2Fsd2F5c19pbmxpbmUgc3RhdGljIHZlYzNfdCBmbih2 ZWMzKSh2M3UxNl90IHYpCit7CisgICAgcmV0dXJuICh2ZWMzX3QpIHsgdi54LCB2LnksIHYueiB9 OworfQorCisjZGVmaW5lIGxlcnAoYSwgYiwgdykgKChhKSArICh3KSAqICgocGl4ZWxfdCkgKGIp IC0gKGEpKSkKKworYXZfYWx3YXlzX2lubGluZSBzdGF0aWMKK3ZlYzNfdCBmbihsZXJwMykodmVj M190IGEsIHZlYzNfdCBiLCBwaXhlbF90IHcpCit7CisgICAgcmV0dXJuICh2ZWMzX3QpIHsKKyAg ICAgICAgbGVycChhLngsIGIueCwgdyksCisgICAgICAgIGxlcnAoYS55LCBiLnksIHcpLAorICAg ICAgICBsZXJwKGEueiwgYi56LCB3KSwKKyAgICB9OworfQorCithdl9hbHdheXNfaW5saW5lIHN0 YXRpYwordmVjM190IGZuKGx1dDNkX3N0YXRpYykoY29uc3QgU3dzTHV0M0QgKnJlc3RyaWN0IGx1 dDNkLCB2ZWMzX3QgcmdiKQoreworICAgIGNvbnN0IGludCByX2Jhc2UgPSAoaW50KSByZ2IueDsK KyAgICBjb25zdCBpbnQgZ19iYXNlID0gKGludCkgcmdiLnk7CisgICAgY29uc3QgaW50IGJfYmFz ZSA9IChpbnQpIHJnYi56OworCisgICAgaW50IG9mZjAgPSAocl9iYXNlIDwgSU5QVVRfTFVUX1NJ WkUgLSAxKTsKKyAgICBpbnQgb2ZmMSA9IChnX2Jhc2UgPCBJTlBVVF9MVVRfU0laRSAtIDEpICog SU5QVVRfTFVUX1NJWkU7CisgICAgaW50IG9mZjIgPSAoYl9iYXNlIDwgSU5QVVRfTFVUX1NJWkUg LSAxKSAqIElOUFVUX0xVVF9TSVpFICogSU5QVVRfTFVUX1NJWkU7CisgICAgcGl4ZWxfdCBmMCA9 IHJnYi54IC0gcl9iYXNlOworICAgIHBpeGVsX3QgZjEgPSByZ2IueSAtIGdfYmFzZTsKKyAgICBw aXhlbF90IGYyID0gcmdiLnogLSBiX2Jhc2U7CisKKyAgICAvKiBTb3J0IG9mZnNldHMgZGVzY2Vu ZGluZyBieSByZWxhdGl2ZSB3ZWlnaHQgKi8KKyAgICBpZiAoZjAgPCBmMSkgeworICAgICAgICBG RlNXQVAocGl4ZWxfdCwgZjAsIGYxKTsKKyAgICAgICAgRkZTV0FQKGludCwgb2ZmMCwgb2ZmMSk7 CisgICAgfQorICAgIGlmIChmMCA8IGYyKSB7CisgICAgICAgIEZGU1dBUChwaXhlbF90LCBmMCwg ZjIpOworICAgICAgICBGRlNXQVAoaW50LCBvZmYwLCBvZmYyKTsKKyAgICB9CisgICAgaWYgKGYx IDwgZjIpIHsKKyAgICAgICAgRkZTV0FQKHBpeGVsX3QsIGYxLCBmMik7CisgICAgICAgIEZGU1dB UChpbnQsIG9mZjEsIG9mZjIpOworICAgIH0KKworICAgIC8qIFRldHJhaGVkcmFsIGludGVycG9s YXRpb24gKi8KKyAgICBjb25zdCBwaXhlbF90IHcwID0gMSAtIGYwOworICAgIGNvbnN0IHBpeGVs X3QgdzEgPSBmMCAtIGYxOworICAgIGNvbnN0IHBpeGVsX3QgdzIgPSBmMSAtIGYyOworICAgIGNv bnN0IHBpeGVsX3QgdzMgPSBmMjsKKworICAgIGNvbnN0IHYzdTE2X3QgKnJlc3RyaWN0IGJhc2Ug PSAmbHV0M2QtPmlucHV0W2JfYmFzZV1bZ19iYXNlXVtyX2Jhc2VdOworICAgIGNvbnN0IHZlYzNf dCB2MCA9IGZuKHZlYzMpKGJhc2VbMF0pOworICAgIGNvbnN0IHZlYzNfdCB2MSA9IGZuKHZlYzMp KGJhc2Vbb2ZmMF0pOworICAgIGNvbnN0IHZlYzNfdCB2MiA9IGZuKHZlYzMpKGJhc2Vbb2ZmMCAr IG9mZjFdKTsKKyAgICBjb25zdCB2ZWMzX3QgdjMgPSBmbih2ZWMzKShiYXNlW29mZjAgKyBvZmYx ICsgb2ZmMl0pOworCisgICAgcmV0dXJuICh2ZWMzX3QpIHsKKyAgICAgICAgdzAgKiB2MC54ICsg dzEgKiB2MS54ICsgdzIgKiB2Mi54ICsgdzMgKiB2My54LAorICAgICAgICB3MCAqIHYwLnkgKyB3 MSAqIHYxLnkgKyB3MiAqIHYyLnkgKyB3MyAqIHYzLnksCisgICAgICAgIHcwICogdjAueiArIHcx ICogdjEueiArIHcyICogdjIueiArIHczICogdjMueiwKKyAgICB9OworfQorCithdl9hbHdheXNf aW5saW5lIHN0YXRpYwordmVjM190IGZuKGx1dDNkX2R5bmFtaWMpKGNvbnN0IFN3c0x1dDNEICpy ZXN0cmljdCBsdXQzZCwgdmVjM190IHJnYikKK3sKKyAgICByZ2IueCAqPSAoVE9ORV9MVVRfU0la RSAtIDEpIC8gKHBpeGVsX3QpIFVJTlQxNl9NQVg7CisKKyAgICAvKiBMaW5lYXIgaW50ZXJwb2xh dGlvbiAqLworICAgIGNvbnN0IGludCAgICAgSXggPSAoaW50KSByZ2IueDsKKyAgICBjb25zdCBw aXhlbF90IElmID0gcmdiLnggLSBJeDsKKworICAgIGNvbnN0IHYydTE2X3QgYSA9IGx1dDNkLT50 b25lX21hcFtJeF07CisgICAgY29uc3QgdjJ1MTZfdCBiID0gbHV0M2QtPnRvbmVfbWFwW0l4ICsg MV07CisKKyAgICBjb25zdCBwaXhlbF90IGsgICAgID0gbGVycChhLnksIGIueSwgSWYpOworICAg IGNvbnN0IHBpeGVsX3QgYmlhcyAgPSAoMSA8PCAxNSkgLSBrOworICAgIGNvbnN0IHBpeGVsX3Qg c2NhbGUgPSBrIC8gKHBpeGVsX3QpICgxIDw8IDE1KTsKKworICAgIHJnYi54ID0gbGVycChhLngs IGIueCwgSWYpOworICAgIHJnYi55ID0gYmlhcyArIHNjYWxlICogcmdiLnk7CisgICAgcmdiLnog PSBiaWFzICsgc2NhbGUgKiByZ2IuejsKKworICAgIC8qIFJlLXNjYWxlIHRvIG91dHB1dCBMVVQg c2l6ZSAqLworICAgIHJnYi54ICo9IChPVVRQVVRfTFVUX1NJWkVfSSAgLSAxKSAvIChwaXhlbF90 KSBVSU5UMTZfTUFYOworICAgIHJnYi55ICo9IChPVVRQVVRfTFVUX1NJWkVfUFQgLSAxKSAvIChw aXhlbF90KSBVSU5UMTZfTUFYOworICAgIHJnYi56ICo9IChPVVRQVVRfTFVUX1NJWkVfUFQgLSAx KSAvIChwaXhlbF90KSBVSU5UMTZfTUFYOworCisgICAgLyogVHJpbGluZWFyIGludGVycG9sYXRp b24gKi8KKyAgICBjb25zdCBpbnQgbG8wID0gKGludCkgcmdiLng7CisgICAgY29uc3QgaW50IGxv MSA9IChpbnQpIHJnYi55OworICAgIGNvbnN0IGludCBsbzIgPSAoaW50KSByZ2IuejsKKworICAg IGNvbnN0IGludCBoaTAgPSBGRk1JTihsbzAgKyAxLCBPVVRQVVRfTFVUX1NJWkVfSSAgLSAxKTsK KyAgICBjb25zdCBpbnQgaGkxID0gRkZNSU4obG8xICsgMSwgT1VUUFVUX0xVVF9TSVpFX1BUIC0g MSk7CisgICAgY29uc3QgaW50IGhpMiA9IEZGTUlOKGxvMiArIDEsIE9VVFBVVF9MVVRfU0laRV9Q VCAtIDEpOworCisgICAgY29uc3QgcGl4ZWxfdCB3MCAgPSByZ2IueCAtIGxvMDsKKyAgICBjb25z dCB2ZWMzX3QgYzAwMCA9IGZuKHZlYzMpKGx1dDNkLT5vdXRwdXRbbG8yXVtsbzFdW2xvMF0pOwor ICAgIGNvbnN0IHZlYzNfdCBjMDAxID0gZm4odmVjMykobHV0M2QtPm91dHB1dFtsbzJdW2xvMV1b aGkwXSk7CisgICAgY29uc3QgdmVjM190IGMwMCAgPSBmbihsZXJwMykoYzAwMCwgYzAwMSwgdzAp OworICAgIGNvbnN0IHZlYzNfdCBjMDEwID0gZm4odmVjMykobHV0M2QtPm91dHB1dFtsbzJdW2hp MV1bbG8wXSk7CisgICAgY29uc3QgdmVjM190IGMwMTEgPSBmbih2ZWMzKShsdXQzZC0+b3V0cHV0 W2xvMl1baGkxXVtoaTBdKTsKKyAgICBjb25zdCB2ZWMzX3QgYzAxICA9IGZuKGxlcnAzKShjMDEw LCBjMDExLCB3MCk7CisgICAgY29uc3QgdmVjM190IGMxMDAgPSBmbih2ZWMzKShsdXQzZC0+b3V0 cHV0W2hpMl1bbG8xXVtsbzBdKTsKKyAgICBjb25zdCB2ZWMzX3QgYzEwMSA9IGZuKHZlYzMpKGx1 dDNkLT5vdXRwdXRbaGkyXVtsbzFdW2hpMF0pOworICAgIGNvbnN0IHZlYzNfdCBjMTAgID0gZm4o bGVycDMpKGMxMDAsIGMxMDEsIHcwKTsKKyAgICBjb25zdCB2ZWMzX3QgYzExMCA9IGZuKHZlYzMp KGx1dDNkLT5vdXRwdXRbaGkyXVtoaTFdW2xvMF0pOworICAgIGNvbnN0IHZlYzNfdCBjMTExID0g Zm4odmVjMykobHV0M2QtPm91dHB1dFtoaTJdW2hpMV1baGkwXSk7CisgICAgY29uc3QgdmVjM190 IGMxMSAgPSBmbihsZXJwMykoYzExMCwgYzExMSwgdzApOworCisgICAgY29uc3QgcGl4ZWxfdCB3 MSA9IHJnYi55IC0gbG8xOworICAgIGNvbnN0IHZlYzNfdCBjMCAgPSBmbihsZXJwMykoYzAwLCBj MDEsIHcxKTsKKyAgICBjb25zdCB2ZWMzX3QgYzEgID0gZm4obGVycDMpKGMxMCwgYzExLCB3MSk7 CisKKyAgICBjb25zdCBwaXhlbF90IHcyID0gcmdiLnogLSBsbzI7CisgICAgcmV0dXJuIGZuKGxl cnAzKShjMCwgYzEsIHcyKTsKK30KKworREVDTF9GVU5DKGx1dDNkLCBjb25zdCBTd3NDb21wTWFz ayBtYXNrLCBjb25zdCBpbnQgZHluYW1pYykKK3sKKyAgICBjb25zdCBTd3NMdXQzRCAqcmVzdHJp Y3QgbHV0M2QgPSBpbXBsLT5wcml2LnB0cjsKKworICAgIFNXU19MT09QCisgICAgZm9yIChpbnQg aSA9IDA7IGkgPCBTV1NfQkxPQ0tfU0laRTsgaSsrKSB7CisgICAgICAgIHZlYzNfdCBjID0geyB4 W2ldLCB5W2ldLCB6W2ldIH07CisgICAgICAgIGMgPSBmbihsdXQzZF9zdGF0aWMpKGx1dDNkLCBj KTsKKyAgICAgICAgaWYgKGR5bmFtaWMpCisgICAgICAgICAgICBjID0gZm4obHV0M2RfZHluYW1p YykobHV0M2QsIGMpOworCisgICAgICAgIHhbaV0gPSBjLng7CisgICAgICAgIHlbaV0gPSBjLnk7 CisgICAgICAgIHpbaV0gPSBjLno7CisgICAgfQorCisgICAgQ09OVElOVUUoeCwgeSwgeiwgdyk7 Cit9CisjZW5kaWYgLyogSVNfRkxPQVQgKi8KKworU1dTX0ZPUihQWCwgTFVUXzNELCBERUNMX0lN UEwsIGx1dDNkKQorU1dTX0ZPUl9TVFJVQ1QoUFgsIExVVF8zRCwgREVDTF9FTlRSWSwgLnNldHVw ID0gZm4oc2V0dXBfbHV0M2QpICkKKwogI3VuZGVmIFBJWEVMX01BWAogI3VuZGVmIFBJWEVMX1NX QVAKICN1bmRlZiBwaXhlbF90CiAjdW5kZWYgaW50ZXJfdAotI3VuZGVmIGJsb2NrX3QKKyN1bmRl ZiB2ZWMzX3QKICN1bmRlZiBQWAogI3VuZGVmIHB4Ci0tIAoyLjUyLjAKCgpGcm9tIDE4NDM0NjU5 NjEzZTc2NTQwMmExNjI1MmZiZTIxZTQ2NjYyYmFlNzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IE5pa2xhcyBIYWFzIDxnaXRAaGFhc24uZGV2PgpEYXRlOiBGcmksIDI0IEp1bCAyMDI2 IDE1OjQxOjI4ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxNC8xOF0gc3dzY2FsZS9ncmFwaDogbGlm dCBTd3NMdXQzRCB0byBTd3NHcmFwaCB0b3AgbGV2ZWwKClNpbmNlIHRoaXMgZGVwZW5kcyBvbiB0 aGUgb3ZlcmFsbCBwaWN0dXJlIHBhcmFtZXRlcnMgYW55d2F5cywgdXBkYXRpbmcgaXQKZGlyZWN0 bHkgZnJvbSB0aGUgcHJpdmF0ZSBzZXR1cCgpIGZ1bmN0aW9uIHdhcyBhbHdheXMgYSBiaXQgaGFj a3kuIE1vcmUKaW1wb3J0YW50bHksIHRoaXMgbmVlZGVkIGZvciB0aGUgb3BzLWJhc2VkIDNETFVU IGltcGxlbWVudGF0aW9uLCB3aGljaCBpcwphbHJlYWR5IHVzaW5nIHRoZSBwYXNzIHByaXYgcG9p bnRlciB0byBzdG9yZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24uCgpPdmVyYWxsLCBzaW1wbGVyIHRv IGp1c3QgbGlmdCBpdCB0byB0aGUgdG9wIGxldmVsIGFuZCB1cGRhdGUgaXQgZGlyZWN0bHkgYXMK bmVlZGVkLgoKU3BvbnNvcmVkLWJ5OiBTb3ZlcmVpZ24gVGVjaCBGdW5kClNpZ25lZC1vZmYtYnk6 IE5pa2xhcyBIYWFzIDxnaXRAaGFhc24uZGV2PgotLS0KIGxpYnN3c2NhbGUvZ3JhcGguYyB8IDQw ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGxpYnN3c2NhbGUvZ3Jh cGguaCB8ICA2ICsrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAyOCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWJzd3NjYWxlL2dyYXBoLmMgYi9saWJzd3NjYWxl L2dyYXBoLmMKaW5kZXggMWMzZmExODhkNS4uMTUxNDI3MmM5NSAxMDA2NDQKLS0tIGEvbGlic3dz Y2FsZS9ncmFwaC5jCisrKyBiL2xpYnN3c2NhbGUvZ3JhcGguYwpAQCAtNjc5LDI1ICs2NzksMTAg QEAgc3RhdGljIGludCBhZGRfY29udmVydF9wYXNzKFN3c0dyYXBoICpncmFwaCwgY29uc3QgU3dz Rm9ybWF0ICpzcmMsCiAgKiBHYW11dCBhbmQgdG9uZSBtYXBwaW5nICoKICAqKioqKioqKioqKioq KioqKioqKioqKioqKi8KIAotc3RhdGljIHZvaWQgZnJlZV9sdXQzZCh2b2lkICpwcml2KQotewot ICAgIFN3c0x1dDNEICpsdXQgPSBwcml2OwotICAgIGF2X3JlZnN0cnVjdF91bnJlZigmbHV0KTsK LX0KLQotc3RhdGljIGludCBzZXR1cF9sdXQzZChjb25zdCBTd3NGcmFtZSAqb3V0LCBjb25zdCBT d3NGcmFtZSAqaW4sIGNvbnN0IFN3c1Bhc3MgKnBhc3MpCi17Ci0gICAgU3dzTHV0M0QgKmx1dCA9 IHBhc3MtPnByaXY7Ci0KLSAgICAvKiBVcGRhdGUgZHluYW1pYyBmcmFtZSBtZXRhZGF0YSBmcm9t IHRoZSBvcmlnaW5hbCBzb3VyY2UgZnJhbWUgKi8KLSAgICBmZl9zd3NfbHV0M2RfdXBkYXRlKGx1 dCwgJnBhc3MtPmdyYXBoLT5zcmMuY29sb3IpOwotICAgIHJldHVybiAwOwotfQotCiBzdGF0aWMg dm9pZCBydW5fbHV0M2QoY29uc3QgU3dzRnJhbWUgKm91dCwgY29uc3QgU3dzRnJhbWUgKmluLCBp bnQgeSwgaW50IGgsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3dzUGFzcyAqcGFzcykK IHsKLSAgICBTd3NMdXQzRCAqbHV0ID0gcGFzcy0+cHJpdjsKKyAgICBjb25zdCBTd3NMdXQzRCAq bHV0ID0gcGFzcy0+Z3JhcGgtPmx1dDNkOwogICAgIHVpbnQ4X3QgKmluX2RhdGFbNF0sICpvdXRf ZGF0YVs0XTsKICAgICBmcmFtZV9zaGlmdChpbiwgIHksIGluX2RhdGEpOwogICAgIGZyYW1lX3No aWZ0KG91dCwgeSwgb3V0X2RhdGEpOwpAQCAtNzEzLDcgKzY5OCw2IEBAIHN0YXRpYyBpbnQgYWRh cHRfY29sb3JzKFN3c0dyYXBoICpncmFwaCwgY29uc3QgU3dzRm9ybWF0ICpzcmNfZm10LAogICAg IFN3c0Zvcm1hdCBzcmMgPSAqc3JjX2ZtdDsKICAgICBTd3NGb3JtYXQgZHN0ID0gKmRzdF9mbXQ7 CiAgICAgU3dzQ29sb3JNYXAgbWFwID0gezB9OwotICAgIFN3c0x1dDNEICpsdXQ7CiAgICAgaW50 IHJldDsKIAogICAgIC8qKgpAQCAtNzQxLDMwICs3MjUsMjUgQEAgc3RhdGljIGludCBhZGFwdF9j b2xvcnMoU3dzR3JhcGggKmdyYXBoLCBjb25zdCBTd3NGb3JtYXQgKnNyY19mbXQsCiAgICAgaWYg KHNyYy5od19mb3JtYXQgIT0gQVZfUElYX0ZNVF9OT05FIHx8IGRzdC5od19mb3JtYXQgIT0gQVZf UElYX0ZNVF9OT05FKQogICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9UU1VQKTsKIAotICAgIGx1 dCA9IGZmX3N3c19sdXQzZF9hbGxvYygpOwotICAgIGlmICghbHV0KQorICAgIGdyYXBoLT5sdXQz ZCA9IGZmX3N3c19sdXQzZF9hbGxvYygpOworICAgIGlmICghZ3JhcGgtPmx1dDNkKQogICAgICAg ICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwogCi0gICAgcmV0ID0gZmZfc3dzX2x1dDNkX2dlbmVy YXRlKGx1dCwgJm1hcCk7Ci0gICAgaWYgKHJldCA8IDApIHsKLSAgICAgICAgYXZfcmVmc3RydWN0 X3VucmVmKCZsdXQpOworICAgIHJldCA9IGZmX3N3c19sdXQzZF9nZW5lcmF0ZShncmFwaC0+bHV0 M2QsICZtYXApOworICAgIGlmIChyZXQgPCAwKQogICAgICAgICByZXR1cm4gcmV0OwotICAgIH0K IAogICAgIGNvbnN0IGVudW0gQVZQaXhlbEZvcm1hdCBmbXQgPSBBVl9QSVhfRk1UX1JHQkE2NDsK ICAgICBpZiAoc3JjLmZvcm1hdCAhPSBmbXQpIHsKICAgICAgICAgU3dzRm9ybWF0IHRtcCA9IHNy YzsKICAgICAgICAgdG1wLmZvcm1hdCA9IGZtdDsKICAgICAgICAgcmV0ID0gYWRkX2NvbnZlcnRf cGFzcyhncmFwaCwgJnNyYywgJnRtcCwgaW5wdXQsICZpbnB1dCk7Ci0gICAgICAgIGlmIChyZXQg PCAwKSB7Ci0gICAgICAgICAgICBhdl9yZWZzdHJ1Y3RfdW5yZWYoJmx1dCk7CisgICAgICAgIGlm IChyZXQgPCAwKQogICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfQogICAgIH0KIAog ICAgIHJldHVybiBmZl9zd3NfZ3JhcGhfYWRkX3Bhc3MoZ3JhcGgsIGZtdCwgc3JjLndpZHRoLCBz cmMuaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQsIDAsIDEs IHJ1bl9sdXQzZCwgc2V0dXBfbHV0M2QsIGx1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZyZWVfbHV0M2QsIG91dHB1dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnB1dCwgMCwgMSwgcnVuX2x1dDNkLCBOVUxMLCBOVUxMLCBOVUxMLCBvdXRwdXQpOwog fQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC04MjUsNiAr ODA0LDggQEAgc3RhdGljIHZvaWQgZ3JhcGhfdW5pbml0KFN3c0dyYXBoICpncmFwaCkKICAgICAg ICAgcGFzc19mcmVlKGdyYXBoLT5wYXNzZXNbaV0pOwogICAgIGF2X2ZyZWUoZ3JhcGgtPnBhc3Nl cyk7CiAKKyAgICBhdl9yZWZzdHJ1Y3RfdW5yZWYoJmdyYXBoLT5sdXQzZCk7CisKICAgICBtZW1z ZXQoZ3JhcGgsIDAsIHNpemVvZigqZ3JhcGgpKTsKIH0KIApAQCAtOTM2LDYgKzkxNyw5IEBAIHZv aWQgZmZfc3dzX2dyYXBoX3VwZGF0ZV9tZXRhZGF0YShTd3NHcmFwaCAqZ3JhcGgsIGNvbnN0IFN3 c0NvbG9yICpjb2xvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgZmZfY29sb3JfdXBkYXRlX2R5 bmFtaWMoJmdyYXBoLT5zcmMuY29sb3IsIGNvbG9yKTsKKworICAgIGlmIChncmFwaC0+bHV0M2Qp CisgICAgICAgIGZmX3N3c19sdXQzZF91cGRhdGUoZ3JhcGgtPmx1dDNkLCAmZ3JhcGgtPnNyYy5j b2xvcik7CiB9CiAKIHN0YXRpYyB2b2lkIGdldF9maWVsZChTd3NHcmFwaCAqZ3JhcGgsIGNvbnN0 IFN3c0Zvcm1hdCAqZm10LApkaWZmIC0tZ2l0IGEvbGlic3dzY2FsZS9ncmFwaC5oIGIvbGlic3dz Y2FsZS9ncmFwaC5oCmluZGV4IDY4YzZhMGI5ZWIuLjQzOTkzNDZkNDYgMTAwNjQ0Ci0tLSBhL2xp YnN3c2NhbGUvZ3JhcGguaAorKysgYi9saWJzd3NjYWxlL2dyYXBoLmgKQEAgLTI4LDYgKzI4LDcg QEAKIAogI2luY2x1ZGUgInN3c2NhbGUuaCIKICNpbmNsdWRlICJmb3JtYXQuaCIKKyNpbmNsdWRl ICJsdXQzZC5oIgogCiBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBhdl9jb25zdCBpbnQgZmZfZm10 X3ZzaGlmdChlbnVtIEFWUGl4ZWxGb3JtYXQgZm10LCBpbnQgcGxhbmUpCiB7CkBAIC0xNDQsNiAr MTQ1LDExIEBAIHR5cGVkZWYgc3RydWN0IFN3c0dyYXBoIHsKICAgICAgKi8KICAgICBTd3NGb3Jt YXQgc3JjLCBkc3Q7CiAKKyAgICAvKioKKyAgICAgKiAzRExVVCBzdGF0ZSB1c2VkIGZvciBnYW11 dC90b25lIG1hcHBpbmcuIChPcHRpb25hbCkKKyAgICAgKi8KKyAgICBTd3NMdXQzRCAqbHV0M2Q7 IC8qIHJlZnN0cnVjdCAqLworCiAgICAgLyoqCiAgICAgICogVGVtcG9yYXJ5IGV4ZWN1dGlvbiBz dGF0ZSBpbnNpZGUgZmZfc3dzX2dyYXBoX3J1bigpOyB1c2VkIHRvIHBhc3MKICAgICAgKiBkYXRh IHRvIHdvcmtlciB0aHJlYWRzLgotLSAKMi41Mi4wCgoKRnJvbSA3MzY5NmRkYmNkYzRjYzVjMmYy M2E5MmVlZTQ4OWE1OWEzZWRiNGY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWts YXMgSGFhcyA8Z2l0QGhhYXNuLmRldj4KRGF0ZTogRnJpLCAyNCBKdWwgMjAyNiAxNjo0ODowNyAr MDIwMApTdWJqZWN0OiBbUEFUQ0ggMTUvMThdIHN3c2NhbGUvZ3JhcGg6IG1vdmUgM0RMVVQgcGFz cyB0byB0aGUgbGVnYWN5IHN3cwogd3JhcHBlcgoKSW5zdGVhZCBvZiBnZW5lcmF0aW5nIHRoZSAz RExVVCBhbmQgYXBwbHlpbmcgaXQgcmlnaHQgYXdheSwgaW5pdF9wYXNzZXMoKQpub3cganVzdCBn ZW5lcmF0ZXMgaXQgYW5kIHBhc3NlcyBpdCBhcyBhIHBhcmFtZXRlciB0byBhZGRfY29udmVydF9w YXNzKCksCndoaWNoIHdpbGwgZm9yd2FyZCBpdCB0byB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRh dGlvbi4KCkZvciB0aGUgZXhpc3RpbmcgZmZfc3dzX2x1dDNkX2FwcGx5X3JnYmE2NCgpIGZhbGxi YWNrLCB3ZSByZWxlZ2F0ZSB0aGlzIHRvCnRoZSBsZWdhY3kgc3dzIHdyYXBwZXIgZXhwbGljaXRs eS4gVGhpcyBkb2VzIHJlcXVpcmUgYSB0ZW1wb3JhcnkgZml4IHRvCmZvcmNlIHRoZSB1c2Ugb2Yg dGhlIGxlZ2FjeSBiYWNrZW5kIHdoZW4gdXNpbmcgYSBMVVQzRCwgb3RoZXJ3aXNlIHRoaXMKd291 bGQgcmVncmVzcyB0aGUgdW5zdGFibGUgYmFja2VuZC4KClRoYXQgc2FpZCwgdGhlIHVuc3RhYmxl IGJhY2tlbmQgd2FzIGFscmVhZHkgbm90IGhhbmRsaW5nIDNETFVUcyBjb3JyZWN0bHksIGFzCml0 IGZhaWxlZCB0byBub3JtYWxpemUgdGhlIFN3c0Zvcm1hdCBhdHRyaWJ1dGVzIGFmdGVyIHRoZSBj b252ZXJzaW9uIHRvClJHQkE2NCwgbGVhZGluZyB0byBlLmcuIGRvdWJsZSBhcHBsaWNhdGlvbiBv ZiB0aGUgWVVWLT5SR0IgbWF0cml4LCBzbyB0aGlzCmNvbW1pdCBpbiBpc29sYXRpb24gaXMgdGVj aG5pY2FsbHkgYSBidWcgZml4LgoKKEluIHRoZW9yeSwgdGhlcmUgaXMgdGhlIGVkZ2UgY2FzZSBo ZXJlIG9mIHByZXZpb3VzbHktdW5zdXBwb3J0ZWQgcGl4ZWwKZm9ybWF0cyB3aGljaCBvbmx5IHRo ZSBvcHMgYmFja2VuZCBoYW5kbGVzLCB0aGF0IHdpbGwgbm93IG5ldmVyIHNlZSB0aGUKTFVUM0Qg YXBwbGljYXRpb24sIGJ1dCBJIGRvbid0IHRoaW5rIGl0J3MgZXZlbiBwb3NzaWJsZSB0byBjb21i aW5lIHN1Y2gKZm9ybWF0cyB3aXRoIEhEUiBjb2xvcnNwYWNlcywgc28gSSB0aGluayB0aGlzIGlz IGEgbW9vdCBwb2ludC4gRWl0aGVyIHdheSwKd2UncmUgc3RpbGwgY293YXJkbHkgaGlkaW5nIGJl aGluZGUgU1dTX1VOU1RBQkxFIHNvIGEgYml0IG9mIHRlbXBvcmFyeQpicmVha2FnZSBpcyBmaW5l LiBUaGUgbmV4dCBjb21taXQgd2lsbCBjbGVhbiBpdCB1cCBwcm9wZXJseS4pCgpTcG9uc29yZWQt Ynk6IFNvdmVyZWlnbiBUZWNoIEZ1bmQKU2lnbmVkLW9mZi1ieTogTmlrbGFzIEhhYXMgPGdpdEBo YWFzbi5kZXY+Ci0tLQogbGlic3dzY2FsZS9ncmFwaC5jIHwgMTI3ICsrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDc0IGluc2VydGlv bnMoKyksIDUzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvZ3JhcGguYyBi L2xpYnN3c2NhbGUvZ3JhcGguYwppbmRleCAxNTE0MjcyYzk1Li5jY2UxMWQ2ZDBhIDEwMDY0NAot LS0gYS9saWJzd3NjYWxlL2dyYXBoLmMKKysrIGIvbGlic3dzY2FsZS9ncmFwaC5jCkBAIC0zOTEs NiArMzkxLDE4IEBAIHN0YXRpYyB2b2lkIHJ1bl9sZWdhY3lfc3dzY2FsZShjb25zdCBTd3NGcmFt ZSAqb3V0LCBjb25zdCBTd3NGcmFtZSAqaW4sCiAgICAgICAgICAgICAgICBzd3MtPnNyY19oLCBv dXRfZGF0YSwgb3V0LT5saW5lc2l6ZSwgeSwgaCk7CiB9CiAKK3N0YXRpYyB2b2lkIHJ1bl9sZWdh Y3lfbHV0M2QoY29uc3QgU3dzRnJhbWUgKm91dCwgY29uc3QgU3dzRnJhbWUgKmluLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSwgaW50IGgsIGNvbnN0IFN3c1Bhc3MgKnBhc3Mp Cit7CisgICAgY29uc3QgU3dzTHV0M0QgKmx1dCA9IHBhc3MtPmdyYXBoLT5sdXQzZDsKKyAgICB1 aW50OF90ICppbl9kYXRhWzRdLCAqb3V0X2RhdGFbNF07CisgICAgZnJhbWVfc2hpZnQoaW4sICB5 LCBpbl9kYXRhKTsKKyAgICBmcmFtZV9zaGlmdChvdXQsIHksIG91dF9kYXRhKTsKKworICAgIGZm X3N3c19sdXQzZF9hcHBseV9yZ2JhNjQobHV0LCBpbl9kYXRhWzBdLCBpbi0+bGluZXNpemVbMF0s IG91dF9kYXRhWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LT5saW5lc2l6 ZVswXSwgb3V0LT53aWR0aCwgaCk7Cit9CisKIHN0YXRpYyB2b2lkIGxlZ2FjeV9jaHJfcG9zKFN3 c0dyYXBoICpncmFwaCwgaW50ICpjaHJfcG9zLCBpbnQgb3ZlcnJpZGUsIGludCAqd2FybmVkKQog ewogICAgIGlmIChvdmVycmlkZSA9PSAtNTEzIHx8IG92ZXJyaWRlID09ICpjaHJfcG9zKQpAQCAt NTE4LDkgKzUzMCwxMiBAQCBzdGF0aWMgaW50IGluaXRfbGVnYWN5X3N1YnBhc3MoU3dzR3JhcGgg KmdyYXBoLCBTd3NDb250ZXh0ICpzd3MsCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQg YWRkX2xlZ2FjeV8zZGx1dF9wYXNzKFN3c0dyYXBoICpncmFwaCwgY29uc3QgU3dzRm9ybWF0ICpz cmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTd3NQYXNzICppbnB1dCwgU3dz UGFzcyAqKm91dHB1dCk7CisKIHN0YXRpYyBpbnQgYWRkX2xlZ2FjeV9zd3NfcGFzcyhTd3NHcmFw aCAqZ3JhcGgsIGNvbnN0IFN3c0Zvcm1hdCAqc3JjLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IFN3c0Zvcm1hdCAqZHN0LCBTd3NQYXNzICppbnB1dCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTd3NQYXNzICoqb3V0cHV0KQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IFN3c0Zvcm1hdCAqZHN0LCBjb25zdCBTd3NMdXQzRCAqbHV0M2Qs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3dzUGFzcyAqaW5wdXQsIFN3c1Bhc3Mg KipvdXRwdXQpCiB7CiAgICAgaW50IHJldCwgd2FybmVkID0gMDsKICAgICBTd3NDb250ZXh0ICpj b25zdCBjdHggPSBncmFwaC0+Y3R4OwpAQCAtNTM1LDYgKzU1MCwxOCBAQCBzdGF0aWMgaW50IGFk ZF9sZWdhY3lfc3dzX3Bhc3MoU3dzR3JhcGggKmdyYXBoLCBjb25zdCBTd3NGb3JtYXQgKnNyYywK ICAgICBpZiAoIXN3c19pc1N1cHBvcnRlZElucHV0KHNyYy0+Zm9ybWF0KSB8fCAhc3dzX2lzU3Vw cG9ydGVkT3V0cHV0KGRzdC0+Zm9ybWF0KSkKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PVFNV UCk7CiAKKyAgICAvKiBJZiB3ZSBuZWVkIHRvIGFwcGx5IGEgM0QgTFVULCBhZGQgaXQgYXMgYW4g ZXhwbGljaXQgaW5wdXQgcHJlcGFzcyAqLworICAgIGlmIChsdXQzZCkgeworICAgICAgICByZXQg PSBhZGRfbGVnYWN5XzNkbHV0X3Bhc3MoZ3JhcGgsIHNyYywgaW5wdXQsICZpbnB1dCk7CisgICAg ICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKworICAgICAgICBTd3NG b3JtYXQgdG1wID0gKnNyYzsKKyAgICAgICAgdG1wLmZvcm1hdCA9IGlucHV0LT5mb3JtYXQ7Cisg ICAgICAgIHRtcC5jb2xvciAgPSBsdXQzZC0+bWFwLmRzdDsKKyAgICAgICAgcmV0dXJuIGFkZF9s ZWdhY3lfc3dzX3Bhc3MoZ3JhcGgsICZ0bXAsIGRzdCwgTlVMTCwgaW5wdXQsIG91dHB1dCk7Cisg ICAgfQorCiAgICAgU3dzQ29udGV4dCAqc3dzID0gc3dzX2FsbG9jX2NvbnRleHQoKTsKICAgICBp ZiAoIXN3cykKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKQEAgLTYwOSw2ICs2MzYs MzMgQEAgc3RhdGljIGludCBhZGRfbGVnYWN5X3N3c19wYXNzKFN3c0dyYXBoICpncmFwaCwgY29u c3QgU3dzRm9ybWF0ICpzcmMsCiAgICAgcmV0dXJuIGluaXRfbGVnYWN5X3N1YnBhc3MoZ3JhcGgs IHN3cywgaW5wdXQsIG91dHB1dCk7CiB9CiAKK3N0YXRpYyBpbnQgYWRkX2xlZ2FjeV8zZGx1dF9w YXNzKFN3c0dyYXBoICpncmFwaCwgY29uc3QgU3dzRm9ybWF0ICpzcmMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTd3NQYXNzICppbnB1dCwgU3dzUGFzcyAqKm91dHB1dCkKK3sK KyAgICBpbnQgcmV0OworCisgICAgY29uc3QgU3dzTHV0M0QgKmx1dDNkID0gZ3JhcGgtPmx1dDNk OworICAgIGlmICghbHV0M2QpCisgICAgICAgIHJldHVybiAwOworCisgICAgY29uc3QgZW51bSBB VlBpeGVsRm9ybWF0IGZtdCA9IEFWX1BJWF9GTVRfUkdCQTY0OworICAgIGlmIChzcmMtPmZvcm1h dCAhPSBmbXQpIHsKKyAgICAgICAgU3dzRm9ybWF0IHRtcCA9ICpzcmM7CisgICAgICAgIHRtcC5m b3JtYXQgPSBmbXQ7CisgICAgICAgIHJldCA9IGFkZF9sZWdhY3lfc3dzX3Bhc3MoZ3JhcGgsIHNy YywgJnRtcCwgTlVMTCwgaW5wdXQsICZpbnB1dCk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAg ICAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICByZXQgPSBmZl9zd3NfZ3JhcGhfYWRk X3Bhc3MoZ3JhcGgsIGZtdCwgc3JjLT53aWR0aCwgc3JjLT5oZWlnaHQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlucHV0LCAwLCAxLCBydW5fbGVnYWN5X2x1dDNkLCBOVUxMLCBO VUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQpOworICAg IGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgcmV0dXJuIDA7Cit9CisK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIEZvcm1hdCBjb252ZXJzaW9u IGFuZCBzY2FsaW5nICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC02 NTYsMTggKzcxMCwxOCBAQCBzdGF0aWMgYm9vbCBwcmVmZXJfb3BzX2JhY2tlbmQoU3dzQ29udGV4 dCAqY3R4LCBjb25zdCBTd3NGb3JtYXQgKnNyYywgY29uc3QgU3dzRgogfQogCiBzdGF0aWMgaW50 IGFkZF9jb252ZXJ0X3Bhc3MoU3dzR3JhcGggKmdyYXBoLCBjb25zdCBTd3NGb3JtYXQgKnNyYywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTd3NGb3JtYXQgKmRzdCwgU3dzUGFz cyAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3dzUGFzcyAqKm91dHB1dCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTd3NGb3JtYXQgKmRzdCwgY29uc3Qg U3dzTHV0M0QgKmx1dDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN3c1Bhc3MgKmlu cHV0LCBTd3NQYXNzICoqb3V0cHV0KQogewogICAgIFN3c0NvbnRleHQgKmN0eCA9IGdyYXBoLT5j dHg7CiAgICAgaW50IHJldDsKIAotICAgIGlmIChwcmVmZXJfb3BzX2JhY2tlbmQoY3R4LCBzcmMs IGRzdCkpIHsKKyAgICBpZiAocHJlZmVyX29wc19iYWNrZW5kKGN0eCwgc3JjLCBkc3QpICYmICFs dXQzZCkgewogICAgICAgICByZXQgPSBhZGRfb3BzX2NvbnZlcnRfcGFzcyhncmFwaCwgc3JjLCBk c3QsIGlucHV0LCBvdXRwdXQpOwogICAgICAgICBpZiAocmV0ID09IEFWRVJST1IoRU5PVFNVUCkp Ci0gICAgICAgICAgICByZXQgPSBhZGRfbGVnYWN5X3N3c19wYXNzKGdyYXBoLCBzcmMsIGRzdCwg aW5wdXQsIG91dHB1dCk7CisgICAgICAgICAgICByZXQgPSBhZGRfbGVnYWN5X3N3c19wYXNzKGdy YXBoLCBzcmMsIGRzdCwgbHV0M2QsIGlucHV0LCBvdXRwdXQpOwogICAgIH0gZWxzZSB7Ci0gICAg ICAgIHJldCA9IGFkZF9sZWdhY3lfc3dzX3Bhc3MoZ3JhcGgsIHNyYywgZHN0LCBpbnB1dCwgb3V0 cHV0KTsKKyAgICAgICAgcmV0ID0gYWRkX2xlZ2FjeV9zd3NfcGFzcyhncmFwaCwgc3JjLCBkc3Qs IGx1dDNkLCBpbnB1dCwgb3V0cHV0KTsKICAgICAgICAgaWYgKHJldCA9PSBBVkVSUk9SKEVOT1RT VVApKQogICAgICAgICAgICAgcmV0ID0gYWRkX29wc19jb252ZXJ0X3Bhc3MoZ3JhcGgsIHNyYywg ZHN0LCBpbnB1dCwgb3V0cHV0KTsKICAgICB9CkBAIC02NzksMjYgKzczMyw5IEBAIHN0YXRpYyBp bnQgYWRkX2NvbnZlcnRfcGFzcyhTd3NHcmFwaCAqZ3JhcGgsIGNvbnN0IFN3c0Zvcm1hdCAqc3Jj LAogICogR2FtdXQgYW5kIHRvbmUgbWFwcGluZyAqCiAgKioqKioqKioqKioqKioqKioqKioqKioq KiovCiAKLXN0YXRpYyB2b2lkIHJ1bl9sdXQzZChjb25zdCBTd3NGcmFtZSAqb3V0LCBjb25zdCBT d3NGcmFtZSAqaW4sIGludCB5LCBpbnQgaCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT d3NQYXNzICpwYXNzKQorc3RhdGljIGludCBnZW5lcmF0ZV8zZGx1dChTd3NHcmFwaCAqZ3JhcGgs IFN3c0Zvcm1hdCAqc3JjLCBTd3NGb3JtYXQgKmRzdCkKIHsKLSAgICBjb25zdCBTd3NMdXQzRCAq bHV0ID0gcGFzcy0+Z3JhcGgtPmx1dDNkOwotICAgIHVpbnQ4X3QgKmluX2RhdGFbNF0sICpvdXRf ZGF0YVs0XTsKLSAgICBmcmFtZV9zaGlmdChpbiwgIHksIGluX2RhdGEpOwotICAgIGZyYW1lX3No aWZ0KG91dCwgeSwgb3V0X2RhdGEpOwotCi0gICAgZmZfc3dzX2x1dDNkX2FwcGx5X3JnYmE2NChs dXQsIGluX2RhdGFbMF0sIGluLT5saW5lc2l6ZVswXSwgb3V0X2RhdGFbMF0sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvdXQtPmxpbmVzaXplWzBdLCBvdXQtPndpZHRoLCBoKTsKLX0K LQotc3RhdGljIGludCBhZGFwdF9jb2xvcnMoU3dzR3JhcGggKmdyYXBoLCBjb25zdCBTd3NGb3Jt YXQgKnNyY19mbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTd3NGb3JtYXQgKmRz dF9mbXQsIFN3c1Bhc3MgKmlucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgU3dzUGFzcyAq Km91dHB1dCkKLXsKLSAgICBTd3NGb3JtYXQgc3JjID0gKnNyY19mbXQ7Ci0gICAgU3dzRm9ybWF0 IGRzdCA9ICpkc3RfZm10OwogICAgIFN3c0NvbG9yTWFwIG1hcCA9IHswfTsKLSAgICBpbnQgcmV0 OwogCiAgICAgLyoqCiAgICAgICogR3JheXNwYWNlIGRvZXMgbm90IHJlYWxseSBoYXZlIHByaW1h cmllcywgc28ganVzdCBmb3JjZSB0aGUgdXNlIG9mCkBAIC03MDYsNDQgKzc0MywzMCBAQCBzdGF0 aWMgaW50IGFkYXB0X2NvbG9ycyhTd3NHcmFwaCAqZ3JhcGgsIGNvbnN0IFN3c0Zvcm1hdCAqc3Jj X2ZtdCwKICAgICAgKiB0aGlzIGRvZXMgYWZmZWN0IHRoZSB3ZWlnaHRzIHVzZWQgZm9yIHRoZSBH cmF5c2NhbGUgY29udmVyc2lvbiwgYnV0CiAgICAgICogaW4gcHJhY3Rpc2UsIHRoYXQgc2hvdWxk IGdpdmUgdGhlIGV4cGVjdGVkIHJlc3VsdHMgbW9yZSBvZnRlbiB0aGFuIG5vdC4KICAgICAgKi8K LSAgICBpZiAoaXNHcmF5KGRzdC5mb3JtYXQpKSB7Ci0gICAgICAgIGRzdC5jb2xvciA9IHNyYy5j b2xvcjsKLSAgICB9IGVsc2UgaWYgKGlzR3JheShzcmMuZm9ybWF0KSkgewotICAgICAgICBzcmMu Y29sb3IgPSBkc3QuY29sb3I7CisgICAgaWYgKGlzR3JheShkc3QtPmZvcm1hdCkpIHsKKyAgICAg ICAgZHN0LT5jb2xvciA9IHNyYy0+Y29sb3I7CisgICAgfSBlbHNlIGlmIChpc0dyYXkoc3JjLT5m b3JtYXQpKSB7CisgICAgICAgIHNyYy0+Y29sb3IgPSBkc3QtPmNvbG9yOwogICAgIH0KIAogICAg IC8qIEZ1bGx5IGluZmVyIGNvbG9yIHNwYWNlcyBiZWZvcmUgY29sb3IgbWFwcGluZyBsb2dpYyAq LwotICAgIGdyYXBoLT5pbmNvbXBsZXRlIHw9IGZmX2luZmVyX2NvbG9ycygmc3JjLmNvbG9yLCAm ZHN0LmNvbG9yKTsKKyAgICBncmFwaC0+aW5jb21wbGV0ZSB8PSBmZl9pbmZlcl9jb2xvcnMoJnNy Yy0+Y29sb3IsICZkc3QtPmNvbG9yKTsKIAogICAgIG1hcC5pbnRlbnQgPSBncmFwaC0+Y3R4LT5p bnRlbnQ7Ci0gICAgbWFwLnNyYyAgICA9IHNyYy5jb2xvcjsKLSAgICBtYXAuZHN0ICAgID0gZHN0 LmNvbG9yOworICAgIG1hcC5zcmMgICAgPSBzcmMtPmNvbG9yOworICAgIG1hcC5kc3QgICAgPSBk c3QtPmNvbG9yOwogCiAgICAgaWYgKGZmX3N3c19jb2xvcl9tYXBfbm9vcCgmbWFwKSkKICAgICAg ICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoc3JjLmh3X2Zvcm1hdCAhPSBBVl9QSVhfRk1UX05PTkUg fHwgZHN0Lmh3X2Zvcm1hdCAhPSBBVl9QSVhfRk1UX05PTkUpCisgICAgaWYgKHNyYy0+aHdfZm9y bWF0ICE9IEFWX1BJWF9GTVRfTk9ORSB8fCBkc3QtPmh3X2Zvcm1hdCAhPSBBVl9QSVhfRk1UX05P TkUpCiAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT1RTVVApOwogCiAgICAgZ3JhcGgtPmx1dDNk ID0gZmZfc3dzX2x1dDNkX2FsbG9jKCk7CiAgICAgaWYgKCFncmFwaC0+bHV0M2QpCiAgICAgICAg IHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAKLSAgICByZXQgPSBmZl9zd3NfbHV0M2RfZ2VuZXJh dGUoZ3JhcGgtPmx1dDNkLCAmbWFwKTsKLSAgICBpZiAocmV0IDwgMCkKLSAgICAgICAgcmV0dXJu IHJldDsKLQotICAgIGNvbnN0IGVudW0gQVZQaXhlbEZvcm1hdCBmbXQgPSBBVl9QSVhfRk1UX1JH QkE2NDsKLSAgICBpZiAoc3JjLmZvcm1hdCAhPSBmbXQpIHsKLSAgICAgICAgU3dzRm9ybWF0IHRt cCA9IHNyYzsKLSAgICAgICAgdG1wLmZvcm1hdCA9IGZtdDsKLSAgICAgICAgcmV0ID0gYWRkX2Nv bnZlcnRfcGFzcyhncmFwaCwgJnNyYywgJnRtcCwgaW5wdXQsICZpbnB1dCk7Ci0gICAgICAgIGlm IChyZXQgPCAwKQotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICB9Ci0KLSAgICByZXR1cm4g ZmZfc3dzX2dyYXBoX2FkZF9wYXNzKGdyYXBoLCBmbXQsIHNyYy53aWR0aCwgc3JjLmhlaWdodCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LCAwLCAxLCBydW5fbHV0M2Qs IE5VTEwsIE5VTEwsIE5VTEwsIG91dHB1dCk7CisgICAgcmV0dXJuIGZmX3N3c19sdXQzZF9nZW5l cmF0ZShncmFwaC0+bHV0M2QsICZtYXApOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCkBAIC03NTcsMTQgKzc4MCwxMiBAQCBzdGF0aWMgaW50IGluaXRfcGFz c2VzKFN3c0dyYXBoICpncmFwaCkKICAgICBTd3NQYXNzICpwYXNzID0gTlVMTDsgLyogcmVhZCBm cm9tIG1haW4gaW5wdXQgaW1hZ2UgKi8KICAgICBpbnQgcmV0OwogCi0gICAgcmV0ID0gYWRhcHRf Y29sb3JzKGdyYXBoLCAmc3JjLCAmZHN0LCBwYXNzLCAmcGFzcyk7CisgICAgcmV0ID0gZ2VuZXJh dGVfM2RsdXQoZ3JhcGgsICZzcmMsICZkc3QpOwogICAgIGlmIChyZXQgPCAwKQogICAgICAgICBy ZXR1cm4gcmV0OwotICAgIHNyYy5mb3JtYXQgPSBwYXNzID8gcGFzcy0+Zm9ybWF0IDogc3JjLmZv cm1hdDsKLSAgICBzcmMuY29sb3IgID0gZHN0LmNvbG9yOwogCi0gICAgaWYgKCFmZl9mbXRfZXF1 YWwoJnNyYywgJmRzdCkpIHsKLSAgICAgICAgcmV0ID0gYWRkX2NvbnZlcnRfcGFzcyhncmFwaCwg JnNyYywgJmRzdCwgcGFzcywgJnBhc3MpOworICAgIGlmICghZmZfZm10X2VxdWFsKCZzcmMsICZk c3QpIHx8IGdyYXBoLT5sdXQzZCkgeworICAgICAgICByZXQgPSBhZGRfY29udmVydF9wYXNzKGdy YXBoLCAmc3JjLCAmZHN0LCBncmFwaC0+bHV0M2QsIHBhc3MsICZwYXNzKTsKICAgICAgICAgaWYg KHJldCA8IDApCiAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KLS0gCjIuNTIuMAoKCkZy b20gNGE4ZTM2MjA1ZDgyYjNkODNhNjlhOWIzZDYwMzJkMzllODUwZTkxZiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogTmlrbGFzIEhhYXMgPGdpdEBoYWFzbi5kZXY+CkRhdGU6IEZyaSwg MjQgSnVsIDIwMjYgMTY6NTQ6MDIgKzAyMDAKU3ViamVjdDogW1BBVENIIDE2LzE4XSBzd3NjYWxl L2Zvcm1hdDogYWRkIFN3c0x1dDNEIHN1cHBvcnQgdG8gdGhlIG9wcyBsaXN0CiBnZW5lcmF0b3IK ClRoZSB2YWx1ZSByYW5nZSBub3JtYWxpemF0aW9uIGFuZCBpbnB1dCByYW5nZSBjbGFtcCB3aWxs IG5vcm1hbGx5IGJlCm9wdGltaXplZCBhd2F5LgoKU3BvbnNvcmVkLWJ5OiBTb3ZlcmVpZ24gVGVj aCBGdW5kClNpZ25lZC1vZmYtYnk6IE5pa2xhcyBIYWFzIDxnaXRAaGFhc24uZGV2PgotLS0KIGxp YnN3c2NhbGUvZm9ybWF0LmMgICAgICAgICAgICAgICB8IDYyICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0KIGxpYnN3c2NhbGUvZm9ybWF0LmggICAgICAgICAgICAgICB8IDE4ICsrKysr KystLQogbGlic3dzY2FsZS9ncmFwaC5jICAgICAgICAgICAgICAgIHwgMTIgKysrLS0tCiBsaWJz d3NjYWxlL29wX2xpc3RfZ2VuX3RlbXBsYXRlLmMgfCAgMiArLQogNCBmaWxlcyBjaGFuZ2VkLCA4 MiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWJzd3NjYWxl L2Zvcm1hdC5jIGIvbGlic3dzY2FsZS9mb3JtYXQuYwppbmRleCAyNTMxNDM1ZGFlLi5jYmQ3ZTAy NjNlIDEwMDY0NAotLS0gYS9saWJzd3NjYWxlL2Zvcm1hdC5jCisrKyBiL2xpYnN3c2NhbGUvZm9y bWF0LmMKQEAgLTE3NDUsOSArMTc0NSw2MiBAQCBpbnQgZmZfc3dzX2FkZF9maWx0ZXJzKFN3c0Nv bnRleHQgKmN0eCwgU3dzUGl4ZWxUeXBlIHR5cGUsIFN3c09wTGlzdCAqb3BzLAogICAgIHJldHVy biBhZGRfZmlsdGVyKGN0eCwgdHlwZSwgb3BzLCBTV1NfT1BfRklMVEVSX1YsIHNyYy0+aGVpZ2h0 LCBkc3QtPmhlaWdodCk7CiB9CiAKK2ludCBmZl9zd3NfYXBwbHlfbHV0M2QoU3dzQ29udGV4dCAq Y3R4LCBTd3NQaXhlbFR5cGUgdHlwZSwgU3dzT3BMaXN0ICpvcHMsCisgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IFN3c0x1dDNEICpsdXQzZCkKK3sKKyAgICAvKiBVbm5vcm1hbGl6ZSB0byBM VVQgaW5wdXQgZG9tYWluIGFuZCBjbGFtcCAqLworICAgIGNvbnN0IEFWUmF0aW9uYWw2NCBkb21h aW4gPSBRKElOUFVUX0xVVF9TSVpFIC0gMSk7CisKKyAgICBSRVQoZmZfc3dzX29wX2xpc3RfYXBw ZW5kKG9wcywgJihTd3NPcCkgeworICAgICAgICAudHlwZSAgID0gdHlwZSwKKyAgICAgICAgLm9w ICAgICA9IFNXU19PUF9MSU5FQVIsCisgICAgICAgIC5saW4gICAgPSB7eworICAgICAgICAgICAg eyBkb21haW4sICAgUSgwKSwgICBRKDApLCBRKDApLCBRKDApIH0sCisgICAgICAgICAgICB7ICAg USgwKSwgZG9tYWluLCAgIFEoMCksIFEoMCksIFEoMCkgfSwKKyAgICAgICAgICAgIHsgICBRKDAp LCAgIFEoMCksIGRvbWFpbiwgUSgwKSwgUSgwKSB9LAorICAgICAgICAgICAgeyAgIFEoMCksICAg USgwKSwgICBRKDApLCBRKDEpLCBRKDApIH0sCisgICAgICAgIH19LAorICAgIH0pKTsKKworICAg IFJFVChmZl9zd3Nfb3BfbGlzdF9hcHBlbmQob3BzLCAmKFN3c09wKSB7CisgICAgICAgIC5vcCAg ICAgPSBTV1NfT1BfTUFYLAorICAgICAgICAudHlwZSAgID0gdHlwZSwKKyAgICAgICAgLmNsYW1w ICA9IHt7IFEoMCksIFEoMCksIFEoMCkgfX0sCisgICAgfSkpOworCisgICAgUkVUKGZmX3N3c19v cF9saXN0X2FwcGVuZChvcHMsICYoU3dzT3ApIHsKKyAgICAgICAgLm9wICAgICA9IFNXU19PUF9N SU4sCisgICAgICAgIC50eXBlICAgPSB0eXBlLAorICAgICAgICAuY2xhbXAgID0ge3sgZG9tYWlu LCBkb21haW4sIGRvbWFpbiB9fSwKKyAgICB9KSk7CisKKyAgICAvKiBBcHBseSB0aGUgM0RMVVQg aXRzZWxmICovCisgICAgUkVUKGZmX3N3c19vcF9saXN0X2FwcGVuZChvcHMsICYoU3dzT3ApIHsK KyAgICAgICAgLm9wICAgICA9IFNXU19PUF9MVVRfM0QsCisgICAgICAgIC50eXBlICAgPSB0eXBl LAorICAgICAgICAubHV0M2QubHV0ICAgICA9IGF2X3JlZnN0cnVjdF9yZWZfYyhsdXQzZCksCisg ICAgICAgIC5sdXQzZC5keW5hbWljID0gbHV0M2QtPmR5bmFtaWMsCisgICAgfSkpOworCisgICAg LyogTm9ybWFsaXplIGJhY2sgdG8gWzAsIDFdICovCisgICAgY29uc3QgQVZSYXRpb25hbDY0IGlu diA9IGF2X2ludl9xNjQoUShVSU5UMTZfTUFYKSk7CisgICAgUkVUKGZmX3N3c19vcF9saXN0X2Fw cGVuZChvcHMsICYoU3dzT3ApIHsKKyAgICAgICAgLnR5cGUgICA9IHR5cGUsCisgICAgICAgIC5v cCAgICAgPSBTV1NfT1BfTElORUFSLAorICAgICAgICAubGluICAgID0ge3sKKyAgICAgICAgICAg IHsgIGludiwgUSgwKSwgUSgwKSwgUSgwKSwgUSgwKSB9LAorICAgICAgICAgICAgeyBRKDApLCAg aW52LCBRKDApLCBRKDApLCBRKDApIH0sCisgICAgICAgICAgICB7IFEoMCksIFEoMCksICBpbnYs IFEoMCksIFEoMCkgfSwKKyAgICAgICAgICAgIHsgUSgwKSwgUSgwKSwgUSgwKSwgUSgxKSwgUSgw KSB9LAorICAgICAgICB9fSwKKyAgICB9KSk7CisKKyAgICByZXR1cm4gMDsKK30KKwogaW50IGZm X3N3c19vcF9saXN0X2dlbmVyYXRlKFN3c0NvbnRleHQgKmN0eCwgY29uc3QgU3dzRm9ybWF0ICpz cmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3dzRm9ybWF0ICpkc3QsIFN3 c09wTGlzdCAqKm91dF9vcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqaW5j b21wbGV0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTd3NGb3JtYXQgKmRz dCwgY29uc3QgU3dzTHV0M0QgKmx1dDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN3 c09wTGlzdCAqKm91dF9vcHMsIGJvb2wgKmluY29tcGxldGUpCiB7CiAgICAgLyogVGhlIG5ldyBj b2RlIGRvZXMgbm90IHlldCBzdXBwb3J0IGFscGhhIGJsZW5kaW5nICovCiAgICAgaWYgKHNyYy0+ ZGVzYy0+ZmxhZ3MgJiBBVl9QSVhfRk1UX0ZMQUdfQUxQSEEgJiYKQEAgLTE3NzAsNiArMTgyMywx MSBAQCBpbnQgZmZfc3dzX29wX2xpc3RfZ2VuZXJhdGUoU3dzQ29udGV4dCAqY3R4LCBjb25zdCBT d3NGb3JtYXQgKnNyYywKICAgICByZXQgPSBmZl9zd3NfYWRkX2ZpbHRlcnMoY3R4LCB0eXBlLCBv cHMsIHNyYywgZHN0KTsKICAgICBpZiAocmV0IDwgMCkKICAgICAgICAgZ290byBmYWlsOworICAg IGlmIChsdXQzZCkgeworICAgICAgICByZXQgPSBmZl9zd3NfYXBwbHlfbHV0M2QoY3R4LCB0eXBl LCBvcHMsIGx1dDNkKTsKKyAgICAgICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICBnb3RvIGZh aWw7CisgICAgfQogICAgIHJldCA9IGZmX3N3c19lbmNvZGVfY29sb3JzKGN0eCwgdHlwZSwgb3Bz LCBzcmMsIGRzdCwgaW5jb21wbGV0ZSk7CiAgICAgaWYgKHJldCA8IDApCiAgICAgICAgIGdvdG8g ZmFpbDsKZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvZm9ybWF0LmggYi9saWJzd3NjYWxlL2Zvcm1h dC5oCmluZGV4IGVhMmFiN2RjNDEuLjM1ZTkzZmFmN2IgMTAwNjQ0Ci0tLSBhL2xpYnN3c2NhbGUv Zm9ybWF0LmgKKysrIGIvbGlic3dzY2FsZS9mb3JtYXQuaApAQCAtMjAxLDEzICsyMDEsMjUgQEAg aW50IGZmX3N3c19hZGRfZmlsdGVycyhTd3NDb250ZXh0ICpjdHgsIFN3c1BpeGVsVHlwZSB0eXBl LCBTd3NPcExpc3QgKm9wcywKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3dzRm9ybWF0 ICpzcmMsIGNvbnN0IFN3c0Zvcm1hdCAqZHN0KTsKIAogLyoqCi0gKiBHZW5lcmF0ZSBhbiBTd3NP cExpc3QgZGVmaW5pbmcgYSBjb252ZXJzaW9uIGZyb20gYHNyY2AgdG8gYGRzdGAuCisgKiBBcHBl bmQgYSBzZXQgb2Ygb3BlcmF0aW9ucyBmb3IgYXBwbHlpbmcgYSBnYW11dC90b25lIG1hcHBpbmcg M0QgTFVUIHRvCisgKiB0aGUgcGl4ZWxzLiBUaGUgaW5wdXQgYW5kIG91dHB1dCBkb21haW4gYXJl IGFzc3VtZWQgdG8gYmUgbm9ybWFsaXplZAorICogZmxvYXRpbmcgcG9pbnQgUkdCQSBpbiB0aGUg cmFuZ2UgWzAsIDFdLgorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBvciBhIG5lZ2F0aXZl IGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU3dzTHV0M0QgU3dz THV0M0Q7CitpbnQgZmZfc3dzX2FwcGx5X2x1dDNkKFN3c0NvbnRleHQgKmN0eCwgU3dzUGl4ZWxU eXBlIHR5cGUsIFN3c09wTGlzdCAqb3BzLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT d3NMdXQzRCAqbHV0M2QpOworCisvKioKKyAqIEdlbmVyYXRlIGFuIFN3c09wTGlzdCBkZWZpbmlu ZyBhIGNvbnZlcnNpb24gZnJvbSBgc3JjYCB0byBgZHN0YCwgd2l0aCBhbgorICogb3B0aW9uYWwg M0RMVVQgZm9yIGNvbnZlcnRpbmcgYmV0d2VlbiBnYW11dHMuCiAgKgogICogUmV0dXJucyAwIG9u IHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgogICovCiBpbnQg ZmZfc3dzX29wX2xpc3RfZ2VuZXJhdGUoU3dzQ29udGV4dCAqY3R4LCBjb25zdCBTd3NGb3JtYXQg KnNyYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTd3NGb3JtYXQgKmRzdCwg U3dzT3BMaXN0ICoqb3V0X29wcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpp bmNvbXBsZXRlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTd3NGb3JtYXQg KmRzdCwgY29uc3QgU3dzTHV0M0QgKmx1dDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IFN3c09wTGlzdCAqKm91dF9vcHMsIGJvb2wgKmluY29tcGxldGUpOwogCiAvKioKICAqIFJlcHJl c2VudHMgYSB2aWV3IGludG8gYSBzaW5nbGUgZmllbGQgb2YgZnJhbWUgZGF0YS4KZGlmZiAtLWdp dCBhL2xpYnN3c2NhbGUvZ3JhcGguYyBiL2xpYnN3c2NhbGUvZ3JhcGguYwppbmRleCBjY2UxMWQ2 ZDBhLi40MzYzODYyZDFlIDEwMDY0NAotLS0gYS9saWJzd3NjYWxlL2dyYXBoLmMKKysrIGIvbGli c3dzY2FsZS9ncmFwaC5jCkBAIC02NjgsOCArNjY4LDggQEAgc3RhdGljIGludCBhZGRfbGVnYWN5 XzNkbHV0X3Bhc3MoU3dzR3JhcGggKmdyYXBoLCBjb25zdCBTd3NGb3JtYXQgKnNyYywKICAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHN0YXRpYyBpbnQgYWRkX29wc19jb252 ZXJ0X3Bhc3MoU3dzR3JhcGggKmdyYXBoLCBjb25zdCBTd3NGb3JtYXQgKnNyYywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3dzRm9ybWF0ICpkc3QsIFN3c1Bhc3MgKmlu cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTd3NQYXNzICoqb3V0cHV0KQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTd3NGb3JtYXQgKmRzdCwgY29u c3QgU3dzTHV0M0QgKmx1dDNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTd3NQ YXNzICppbnB1dCwgU3dzUGFzcyAqKm91dHB1dCkKIHsKICNpZiBDT05GSUdfVU5TVEFCTEUKICAg ICBTd3NDb250ZXh0ICpjdHggPSBncmFwaC0+Y3R4OwpAQCAtNjgzLDcgKzY4Myw3IEBAIHN0YXRp YyBpbnQgYWRkX29wc19jb252ZXJ0X3Bhc3MoU3dzR3JhcGggKmdyYXBoLCBjb25zdCBTd3NGb3Jt YXQgKnNyYywKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PVFNVUCk7CiAKICAgICBTd3NPcExp c3QgKm9wczsKLSAgICBpbnQgcmV0ID0gZmZfc3dzX29wX2xpc3RfZ2VuZXJhdGUoY3R4LCBzcmMs IGRzdCwgJm9wcywgJmdyYXBoLT5pbmNvbXBsZXRlKTsKKyAgICBpbnQgcmV0ID0gZmZfc3dzX29w X2xpc3RfZ2VuZXJhdGUoY3R4LCBzcmMsIGRzdCwgbHV0M2QsICZvcHMsICZncmFwaC0+aW5jb21w bGV0ZSk7CiAgICAgaWYgKHJldCA8IDApCiAgICAgICAgIHJldHVybiByZXQ7CiAKQEAgLTcxNiwx NCArNzE2LDE0IEBAIHN0YXRpYyBpbnQgYWRkX2NvbnZlcnRfcGFzcyhTd3NHcmFwaCAqZ3JhcGgs IGNvbnN0IFN3c0Zvcm1hdCAqc3JjLAogICAgIFN3c0NvbnRleHQgKmN0eCA9IGdyYXBoLT5jdHg7 CiAgICAgaW50IHJldDsKIAotICAgIGlmIChwcmVmZXJfb3BzX2JhY2tlbmQoY3R4LCBzcmMsIGRz dCkgJiYgIWx1dDNkKSB7Ci0gICAgICAgIHJldCA9IGFkZF9vcHNfY29udmVydF9wYXNzKGdyYXBo LCBzcmMsIGRzdCwgaW5wdXQsIG91dHB1dCk7CisgICAgaWYgKHByZWZlcl9vcHNfYmFja2VuZChj dHgsIHNyYywgZHN0KSkgeworICAgICAgICByZXQgPSBhZGRfb3BzX2NvbnZlcnRfcGFzcyhncmFw aCwgc3JjLCBkc3QsIGx1dDNkLCBpbnB1dCwgb3V0cHV0KTsKICAgICAgICAgaWYgKHJldCA9PSBB VkVSUk9SKEVOT1RTVVApKQogICAgICAgICAgICAgcmV0ID0gYWRkX2xlZ2FjeV9zd3NfcGFzcyhn cmFwaCwgc3JjLCBkc3QsIGx1dDNkLCBpbnB1dCwgb3V0cHV0KTsKICAgICB9IGVsc2UgewogICAg ICAgICByZXQgPSBhZGRfbGVnYWN5X3N3c19wYXNzKGdyYXBoLCBzcmMsIGRzdCwgbHV0M2QsIGlu cHV0LCBvdXRwdXQpOwogICAgICAgICBpZiAocmV0ID09IEFWRVJST1IoRU5PVFNVUCkpCi0gICAg ICAgICAgICByZXQgPSBhZGRfb3BzX2NvbnZlcnRfcGFzcyhncmFwaCwgc3JjLCBkc3QsIGlucHV0 LCBvdXRwdXQpOworICAgICAgICAgICAgcmV0ID0gYWRkX29wc19jb252ZXJ0X3Bhc3MoZ3JhcGgs IHNyYywgZHN0LCBsdXQzZCwgaW5wdXQsIG91dHB1dCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJl dDsKZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvb3BfbGlzdF9nZW5fdGVtcGxhdGUuYyBiL2xpYnN3 c2NhbGUvb3BfbGlzdF9nZW5fdGVtcGxhdGUuYwppbmRleCAwMDMwZmRkZWMyLi5iYzc2OTZjNTFl IDEwMDY0NAotLS0gYS9saWJzd3NjYWxlL29wX2xpc3RfZ2VuX3RlbXBsYXRlLmMKKysrIGIvbGli c3dzY2FsZS9vcF9saXN0X2dlbl90ZW1wbGF0ZS5jCkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyBp bnQgZW51bV9vcHNfZm10KFN3c0NvbnRleHQgKmN0eCwgdm9pZCAqb3BhcXVlLAogICAgICAgICBk c3Qud2lkdGggID0gZHN0X3NpemVzW2ldWzBdOwogICAgICAgICBkc3QuaGVpZ2h0ID0gZHN0X3Np emVzW2ldWzFdOwogCi0gICAgICAgIHJldCA9IGZmX3N3c19vcF9saXN0X2dlbmVyYXRlKGN0eCwg JnNyYywgJmRzdCwgJm9wcywgJmluY29tcGxldGUpOworICAgICAgICByZXQgPSBmZl9zd3Nfb3Bf bGlzdF9nZW5lcmF0ZShjdHgsICZzcmMsICZkc3QsIE5VTEwsICZvcHMsICZpbmNvbXBsZXRlKTsK ICAgICAgICAgaWYgKHJldCA9PSBBVkVSUk9SKEVOT1RTVVApKQogICAgICAgICAgICAgcmV0dXJu IDA7IC8qIHNpbGVudGx5IHNraXAgdW5zdXBwb3J0ZWQgZm9ybWF0cyAqLwogICAgICAgICBlbHNl IGlmIChyZXQgPCAwKQotLSAKMi41Mi4wCgoKRnJvbSA5MTk2ZWRmNDA1NjIwNTUxMTZkMWU4YmJm YmZmMTI4NTc3YWFkY2UxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtsYXMgSGFh cyA8Z2l0QGhhYXNuLmRldj4KRGF0ZTogRnJpLCAyNCBKdWwgMjAyNiAxNzoxMjo0OCArMDIwMApT dWJqZWN0OiBbUEFUQ0ggMTcvMThdIHN3c2NhbGUvdW9wc19tYWNyb3M6IGFsc28gZ2VuZXJhdGUg b3AgbGlzdHMgaW52b2x2aW5nCiAzRExVVHMKClRoZXNlIG1heSBkaWZmZXIgZnJvbSB0aGUgcmVn dWxhciBvcCBsaXN0cyBpbiBub250cml2aWFsIHdheXMsIGR1ZSB0byBlLmcuCmRpZmZlcmVudCBv cHRpbWl6YXRpb24gc3RlcHMgYmVpbmcgdGFrZW4uCgpJbiBwcmFjdGljZSwgaXQgc2VlbXMgdGhp cyBqdXN0IGFkZHMgdGhlIGV4dHJhIExVVF8zRCB1b3BzLCBidXQgd2UgZG9uJ3QKa25vdyB0aGF0 IGZvciBzdXJlLCBzbyBiZXR0ZXIgdG8gYnJ1dGUgZm9yY2UgdGhlIGxpc3QuIFRoYXQgc2FpZCwg SSBkbwp0aGluayB3ZSBjYW4gc2FmZWx5IHNraXAgdGhlIGV4dHJhIGJhY2tlbmQgZmxhZ3MgaW4g dGhpcyBjYXNlLCBhdCBsZWFzdC4KCkV2ZW4gaW4gdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8sIHRo YXQgd291bGQganVzdCBmb3JjZSBhIGZhbGxiYWNrIHRvIHRoZQpDIHJlZmVyZW5jZSBiYWNrZW5k LgoKU3BvbnNvcmVkLWJ5OiBTb3ZlcmVpZ24gVGVjaCBGdW5kClNpZ25lZC1vZmYtYnk6IE5pa2xh cyBIYWFzIDxnaXRAaGFhc24uZGV2PgotLS0KIGxpYnN3c2NhbGUvb3BfbGlzdF9nZW5fdGVtcGxh dGUuYyAgfCAgOCArKysrLS0tLQogbGlic3dzY2FsZS90ZXN0cy9zd3Nfb3BzLmMgICAgICAgICB8 ICAyICstCiBsaWJzd3NjYWxlL3Rlc3RzL3N3c19vcHNfYWFyY2g2NC5jIHwgIDIgKy0KIGxpYnN3 c2NhbGUvdW9wc19tYWNyb3MuaCAgICAgICAgICAgfCAxMiArKysrKysrKysrLS0KIGxpYnN3c2Nh bGUvdW9wc19tYWNyb3NfZ2VuLmMgICAgICAgfCAyNiArKysrKysrKysrKysrKysrKysrKysrKyst LQogNSBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9saWJzd3NjYWxlL29wX2xpc3RfZ2VuX3RlbXBsYXRlLmMgYi9saWJzd3NjYWxl L29wX2xpc3RfZ2VuX3RlbXBsYXRlLmMKaW5kZXggYmM3Njk2YzUxZS4uMTlkMDdmYmEwYSAxMDA2 NDQKLS0tIGEvbGlic3dzY2FsZS9vcF9saXN0X2dlbl90ZW1wbGF0ZS5jCisrKyBiL2xpYnN3c2Nh bGUvb3BfbGlzdF9nZW5fdGVtcGxhdGUuYwpAQCAtMjksNyArMjksNyBAQAogCiAjZGVmaW5lIERV TU1ZX1NJWkUgMTYKIAotc3RhdGljIGludCBlbnVtX29wc19mbXQoU3dzQ29udGV4dCAqY3R4LCB2 b2lkICpvcGFxdWUsCitzdGF0aWMgaW50IGVudW1fb3BzX2ZtdChTd3NDb250ZXh0ICpjdHgsIHZv aWQgKm9wYXF1ZSwgY29uc3QgU3dzTHV0M0QgKmx1dDNkLAogICAgICAgICAgICAgICAgICAgICAg ICAgZW51bSBBVlBpeGVsRm9ybWF0IHNyY19mbXQsIGVudW0gQVZQaXhlbEZvcm1hdCBkc3RfZm10 LAogICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqY2IpKFN3c0NvbnRleHQgKmN0eCwgdm9p ZCAqb3BhcXVlLCBTd3NPcExpc3QgKm9wcykpCiB7CkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyBp bnQgZW51bV9vcHNfZm10KFN3c0NvbnRleHQgKmN0eCwgdm9pZCAqb3BhcXVlLAogICAgICAgICBk c3Qud2lkdGggID0gZHN0X3NpemVzW2ldWzBdOwogICAgICAgICBkc3QuaGVpZ2h0ID0gZHN0X3Np emVzW2ldWzFdOwogCi0gICAgICAgIHJldCA9IGZmX3N3c19vcF9saXN0X2dlbmVyYXRlKGN0eCwg JnNyYywgJmRzdCwgTlVMTCwgJm9wcywgJmluY29tcGxldGUpOworICAgICAgICByZXQgPSBmZl9z d3Nfb3BfbGlzdF9nZW5lcmF0ZShjdHgsICZzcmMsICZkc3QsIGx1dDNkLCAmb3BzLCAmaW5jb21w bGV0ZSk7CiAgICAgICAgIGlmIChyZXQgPT0gQVZFUlJPUihFTk9UU1VQKSkKICAgICAgICAgICAg IHJldHVybiAwOyAvKiBzaWxlbnRseSBza2lwIHVuc3VwcG9ydGVkIGZvcm1hdHMgKi8KICAgICAg ICAgZWxzZSBpZiAocmV0IDwgMCkKQEAgLTg2LDcgKzg2LDcgQEAgZmFpbDoKICAqIEBub3RlIGBv cHNgIGJlbG9uZ3MgdG8gc3dzX2VudW1fb3BfbGlzdHMoKSwgYnV0IG1heSBiZSBtdXRhdGVkIGJ5 IGBjYmAuCiAgKi8KIHN0YXRpYyBpbmxpbmUKLWludCBmZl9zd3NfZW51bV9vcF9saXN0cyhTd3ND b250ZXh0ICpjdHgsIHZvaWQgKm9wYXF1ZSwKK2ludCBmZl9zd3NfZW51bV9vcF9saXN0cyhTd3ND b250ZXh0ICpjdHgsIHZvaWQgKm9wYXF1ZSwgY29uc3QgU3dzTHV0M0QgKmx1dDNkLAogICAgICAg ICAgICAgICAgICAgICAgICAgIGVudW0gQVZQaXhlbEZvcm1hdCBzcmNfZm10LCBlbnVtIEFWUGl4 ZWxGb3JtYXQgZHN0X2ZtdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCpjYikoU3dz Q29udGV4dCAqY3R4LCB2b2lkICpvcGFxdWUsIFN3c09wTGlzdCAqb3BzKSkKIHsKQEAgLTEwMiw3 ICsxMDIsNyBAQCBpbnQgZmZfc3dzX2VudW1fb3BfbGlzdHMoU3dzQ29udGV4dCAqY3R4LCB2b2lk ICpvcGFxdWUsCiAgICAgICAgIGNvbnN0IGVudW0gQVZQaXhlbEZvcm1hdCBzcmNfZiA9IGF2X3Bp eF9mbXRfZGVzY19nZXRfaWQoc3JjKTsKICAgICAgICAgZm9yIChkc3QgPSBkc3Rfc3RhcnQ7IGRz dDsgZHN0ID0gYXZfcGl4X2ZtdF9kZXNjX25leHQoZHN0KSkgewogICAgICAgICAgICAgY29uc3Qg ZW51bSBBVlBpeGVsRm9ybWF0IGRzdF9mID0gYXZfcGl4X2ZtdF9kZXNjX2dldF9pZChkc3QpOwot ICAgICAgICAgICAgaW50IHJldCA9IGVudW1fb3BzX2ZtdChjdHgsIG9wYXF1ZSwgc3JjX2YsIGRz dF9mLCBjYik7CisgICAgICAgICAgICBpbnQgcmV0ID0gZW51bV9vcHNfZm10KGN0eCwgb3BhcXVl LCBsdXQzZCwgc3JjX2YsIGRzdF9mLCBjYik7CiAgICAgICAgICAgICBpZiAocmV0IDwgMCkKICAg ICAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICAgICAgaWYgKGRzdF9mbXQgIT0gQVZf UElYX0ZNVF9OT05FKQpkaWZmIC0tZ2l0IGEvbGlic3dzY2FsZS90ZXN0cy9zd3Nfb3BzLmMgYi9s aWJzd3NjYWxlL3Rlc3RzL3N3c19vcHMuYwppbmRleCBiYjQ5NGIxZjRlLi42NzdkYzRkYjZlIDEw MDY0NAotLS0gYS9saWJzd3NjYWxlL3Rlc3RzL3N3c19vcHMuYworKysgYi9saWJzd3NjYWxlL3Rl c3RzL3N3c19vcHMuYwpAQCAtMTczLDcgKzE3Myw3IEBAIGJhZF9vcHRpb246CiAKICAgICBhdl9s b2dfc2V0X2NhbGxiYWNrKGxvZ19zdGRvdXQpOwogCi0gICAgcmV0ID0gZmZfc3dzX2VudW1fb3Bf bGlzdHMoY3R4LCBncmFwaCwgc3JjX2ZtdCwgZHN0X2ZtdCwgcHJpbnRfcGFzc2VzKTsKKyAgICBy ZXQgPSBmZl9zd3NfZW51bV9vcF9saXN0cyhjdHgsIGdyYXBoLCBOVUxMLCBzcmNfZm10LCBkc3Rf Zm10LCBwcmludF9wYXNzZXMpOwogICAgIGlmIChyZXQgPCAwKQogICAgICAgICBnb3RvIGZhaWw7 CiAKZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvdGVzdHMvc3dzX29wc19hYXJjaDY0LmMgYi9saWJz d3NjYWxlL3Rlc3RzL3N3c19vcHNfYWFyY2g2NC5jCmluZGV4IGNiNDdmNDIwMzcuLjIxNTUzMTlh MzMgMTAwNjQ0Ci0tLSBhL2xpYnN3c2NhbGUvdGVzdHMvc3dzX29wc19hYXJjaDY0LmMKKysrIGIv bGlic3dzY2FsZS90ZXN0cy9zd3Nfb3BzX2FhcmNoNjQuYwpAQCAtNDYwLDcgKzQ2MCw3IEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgZ3JhcGgtPmN0eCA9IGN0eDsKICAg ICBjdHgtPm9wYXF1ZSA9ICZyb290OwogCi0gICAgcmV0ID0gZmZfc3dzX2VudW1fb3BfbGlzdHMo Y3R4LCBncmFwaCwgQVZfUElYX0ZNVF9OT05FLCBBVl9QSVhfRk1UX05PTkUsCisgICAgcmV0ID0g ZmZfc3dzX2VudW1fb3BfbGlzdHMoY3R4LCBncmFwaCwgTlVMTCwgQVZfUElYX0ZNVF9OT05FLCBB Vl9QSVhfRk1UX05PTkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJf b3ApOwogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9saWJzd3NjYWxlL3VvcHNfbWFjcm9zLmggYi9s aWJzd3NjYWxlL3VvcHNfbWFjcm9zLmgKaW5kZXggM2EyMWVmZTIwNi4uODRmYmQzYjA3MyAxMDA2 NDQKLS0tIGEvbGlic3dzY2FsZS91b3BzX21hY3Jvcy5oCisrKyBiL2xpYnN3c2NhbGUvdW9wc19t YWNyb3MuaApAQCAtMTE2Myw3ICsxMTYzLDE1IEBACiAgICAgTUFDUk8oX19WQV9BUkdTX18sIGYz Ml9kaXRoZXJfeHl6d18zXzJfMF81XzE2eDE2ICAgICAgICAgICAsIC50eXBlID0gU1dTX1BJWEVM X0YzMiwgLnVvcCA9IFNXU19VT1BfRElUSEVSICAgICAgICAgICwgLm1hc2sgPSAweGYsIC5wYXIu ZGl0aGVyID0geyAueV9vZmZzZXQgPSB7MywgMiwgMCwgNX0sIC5zaXplX2xvZzIgPSA0IH0pIFwK ICAgICBNQUNSTyhfX1ZBX0FSR1NfXywgZjMyX2RpdGhlcl94eXp3XzVfMF8zXzJfMTZ4MTYgICAg ICAgICAgICwgLnR5cGUgPSBTV1NfUElYRUxfRjMyLCAudW9wID0gU1dTX1VPUF9ESVRIRVIgICAg ICAgICAgLCAubWFzayA9IDB4ZiwgLnBhci5kaXRoZXIgPSB7IC55X29mZnNldCA9IHs1LCAwLCAz LCAyfSwgLnNpemVfbG9nMiA9IDQgfSkgXAogICAgIE1BQ1JPKF9fVkFfQVJHU19fLCBmMzJfZGl0 aGVyX3h5endfNV8yXzNfMF8xNngxNiAgICAgICAgICAgLCAudHlwZSA9IFNXU19QSVhFTF9GMzIs IC51b3AgPSBTV1NfVU9QX0RJVEhFUiAgICAgICAgICAsIC5tYXNrID0gMHhmLCAucGFyLmRpdGhl ciA9IHsgLnlfb2Zmc2V0ID0gezUsIDIsIDMsIDB9LCAuc2l6ZV9sb2cyID0gNCB9KQotI2RlZmlu ZSBTV1NfRk9SX0YzMl9MVVRfM0QoTUFDUk8sIC4uLikKLSNkZWZpbmUgU1dTX0ZPUl9TVFJVQ1Rf RjMyX0xVVF8zRChNQUNSTywgLi4uKQorI2RlZmluZSBTV1NfRk9SX0YzMl9MVVRfM0QoTUFDUk8s IC4uLikgXAorICAgIE1BQ1JPKF9fVkFfQVJHU19fLCBmMzJfbHV0XzNkX3h5el9zdGF0aWMgICAg ICAgICAgICAgICAgICAgLCBTV1NfUElYRUxfRjMyLCBTV1NfVU9QX0xVVF8zRCAgICAgICAgICAs IDB4NywgMCkgXAorICAgIE1BQ1JPKF9fVkFfQVJHU19fLCBmMzJfbHV0XzNkX3h5el9keW5hbWlj ICAgICAgICAgICAgICAgICAgLCBTV1NfUElYRUxfRjMyLCBTV1NfVU9QX0xVVF8zRCAgICAgICAg ICAsIDB4NywgMSkgXAorICAgIE1BQ1JPKF9fVkFfQVJHU19fLCBmMzJfbHV0XzNkX3h5endfc3Rh dGljICAgICAgICAgICAgICAgICAgLCBTV1NfUElYRUxfRjMyLCBTV1NfVU9QX0xVVF8zRCAgICAg ICAgICAsIDB4ZiwgMCkgXAorICAgIE1BQ1JPKF9fVkFfQVJHU19fLCBmMzJfbHV0XzNkX3h5endf ZHluYW1pYyAgICAgICAgICAgICAgICAgLCBTV1NfUElYRUxfRjMyLCBTV1NfVU9QX0xVVF8zRCAg ICAgICAgICAsIDB4ZiwgMSkKKyNkZWZpbmUgU1dTX0ZPUl9TVFJVQ1RfRjMyX0xVVF8zRChNQUNS TywgLi4uKSBcCisgICAgTUFDUk8oX19WQV9BUkdTX18sIGYzMl9sdXRfM2RfeHl6X3N0YXRpYyAg ICAgICAgICAgICAgICAgICAsIC50eXBlID0gU1dTX1BJWEVMX0YzMiwgLnVvcCA9IFNXU19VT1Bf TFVUXzNEICAgICAgICAgICwgLm1hc2sgPSAweDcsIC5wYXIubHV0M2QuZHluYW1pYyA9IDApIFwK KyAgICBNQUNSTyhfX1ZBX0FSR1NfXywgZjMyX2x1dF8zZF94eXpfZHluYW1pYyAgICAgICAgICAg ICAgICAgICwgLnR5cGUgPSBTV1NfUElYRUxfRjMyLCAudW9wID0gU1dTX1VPUF9MVVRfM0QgICAg ICAgICAgLCAubWFzayA9IDB4NywgLnBhci5sdXQzZC5keW5hbWljID0gMSkgXAorICAgIE1BQ1JP KF9fVkFfQVJHU19fLCBmMzJfbHV0XzNkX3h5endfc3RhdGljICAgICAgICAgICAgICAgICAgLCAu dHlwZSA9IFNXU19QSVhFTF9GMzIsIC51b3AgPSBTV1NfVU9QX0xVVF8zRCAgICAgICAgICAsIC5t YXNrID0gMHhmLCAucGFyLmx1dDNkLmR5bmFtaWMgPSAwKSBcCisgICAgTUFDUk8oX19WQV9BUkdT X18sIGYzMl9sdXRfM2RfeHl6d19keW5hbWljICAgICAgICAgICAgICAgICAsIC50eXBlID0gU1dT X1BJWEVMX0YzMiwgLnVvcCA9IFNXU19VT1BfTFVUXzNEICAgICAgICAgICwgLm1hc2sgPSAweGYs IC5wYXIubHV0M2QuZHluYW1pYyA9IDEpCiAKICNlbmRpZiAvKiBTV1NDQUxFX1VPUFNfTUFDUk9T X0ggKi8KZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvdW9wc19tYWNyb3NfZ2VuLmMgYi9saWJzd3Nj YWxlL3VvcHNfbWFjcm9zX2dlbi5jCmluZGV4IDJkZjlhOWMyYzIuLmFkNzcwNTBmMGMgMTAwNjQ0 Ci0tLSBhL2xpYnN3c2NhbGUvdW9wc19tYWNyb3NfZ2VuLmMKKysrIGIvbGlic3dzY2FsZS91b3Bz X21hY3Jvc19nZW4uYwpAQCAtMTE3LDYgKzExNyw5IEBAIHN0YXRpYyBpbnQgZ2VuZXJhdGVfZW50 cnlfc3RydWN0KHZvaWQgKm9wYXF1ZSwgdm9pZCAqa2V5KQogICAgICAgICAgICAgICAgICAgIHBh ci0+ZGl0aGVyLnlfb2Zmc2V0WzJdLCBwYXItPmRpdGhlci55X29mZnNldFszXSwKICAgICAgICAg ICAgICAgICAgICBwYXItPmRpdGhlci5zaXplX2xvZzIpOwogICAgICAgICBicmVhazsKKyAgICBj YXNlIFNXU19VT1BfTFVUXzNEOgorICAgICAgICBhdl9icHJpbnRmKGJwLCAiLCAucGFyLmx1dDNk LmR5bmFtaWMgPSAlZCIsIHBhci0+bHV0M2QuZHluYW1pYyk7CisgICAgICAgIGJyZWFrOwogICAg IH0KIAogICAgIGF2X2JwcmludGYoYnAsICIpIik7CkBAIC0xNzksNiArMTgyLDkgQEAgc3RhdGlj IGludCBnZW5lcmF0ZV9lbnRyeV9hcmdzKHZvaWQgKm9wYXF1ZSwgdm9pZCAqa2V5KQogICAgICAg ICAgICAgICAgICAgIHBhci0+ZGl0aGVyLnlfb2Zmc2V0WzJdLCBwYXItPmRpdGhlci55X29mZnNl dFszXSwKICAgICAgICAgICAgICAgICAgICBwYXItPmRpdGhlci5zaXplX2xvZzIpOwogICAgICAg ICBicmVhazsKKyAgICBjYXNlIFNXU19VT1BfTFVUXzNEOgorICAgICAgICBhdl9icHJpbnRmKGJw LCAiLCAlZCIsIHBhci0+bHV0M2QuZHluYW1pYyk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAog ICAgIGF2X2JwcmludGYoYnAsICIpIik7CkBAIC0zMjAsMTEgKzMyNiwyNyBAQCBzdGF0aWMgaW50 IHN3c191b3BzX21hY3Jvc19nZW4oY2hhciAqKm91dF9zdHIpCiAgICAgY3R4LT5vcGFxdWUgPSAm cm9vdDsKICAgICBjdHgtPnNjYWxlciA9IFNXU19TQ0FMRV9CSUxJTkVBUjsgLyogY2hlYXBlciB0 byBnZW5lcmF0ZSBmaWx0ZXIga2VybmVscyAqLwogCisgICAgLyogQWxsb2NhdGUgZHVtbXkgM0RM VVQgdG8gZm9yY2UgZ2VuZXJhdGlvbiBvZiBTV1NfVU9QX0xVVF8zRCAqLworICAgIFN3c0x1dDNE ICpsdXQzZCA9IGZmX3N3c19sdXQzZF9hbGxvYygpOworICAgIHJldCA9IGZmX3N3c19lbnVtX29w X2xpc3RzKGN0eCwgZ3JhcGgsIGx1dDNkLCBBVl9QSVhfRk1UX05PTkUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQVZfUElYX0ZNVF9OT05FLCByZWdpc3Rlcl9hbGxfdW9wcyk7Cisg ICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgYXZfcmVmc3RydWN0X3VucmVmKCZsdXQzZCk7Cisg ICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBsdXQzZC0+ZHluYW1pYyA9IHRydWU7Cisg ICAgcmV0ID0gZmZfc3dzX2VudW1fb3BfbGlzdHMoY3R4LCBncmFwaCwgbHV0M2QsIEFWX1BJWF9G TVRfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVl9QSVhfRk1UX05PTkUs IHJlZ2lzdGVyX2FsbF91b3BzKTsKKyAgICBhdl9yZWZzdHJ1Y3RfdW5yZWYoJmx1dDNkKTsKKyAg ICBpZiAocmV0IDwgMCkKKyAgICAgICAgZ290byBmYWlsOworCiAgICAgLyogUmVnaXN0ZXIgYWxs IHVuaXF1ZSB1b3BzIG92ZXIgZXZlcnkgcmVsZXZhbnQgY29tYmluYXRpb24gb2YgZmxhZ3MgKi8K ICAgICBmb3IgKGludCBpID0gMDsgaSA8IEZGX0FSUkFZX0VMRU1TKGZsYWdzX2xpc3QpOyBpKysp IHsKICAgICAgICAgY3R4LT5mbGFncyA9IGZsYWdzX2xpc3RbaV07Ci0gICAgICAgIHJldCA9IGZm X3N3c19lbnVtX29wX2xpc3RzKGN0eCwgZ3JhcGgsIEFWX1BJWF9GTVRfTk9ORSwgQVZfUElYX0ZN VF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl9hbGxf dW9wcyk7CisgICAgICAgIHJldCA9IGZmX3N3c19lbnVtX29wX2xpc3RzKGN0eCwgZ3JhcGgsIE5V TEwsIEFWX1BJWF9GTVRfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QVZfUElYX0ZNVF9OT05FLCByZWdpc3Rlcl9hbGxfdW9wcyk7CiAgICAgICAgIGlmIChyZXQgPCAw KQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgIH0KLS0gCjIuNTIuMAoKCkZyb20gMDI3ZWZk MjM3MmMwZjlmODA4NTdjN2YwY2M1ZDQ0MmJmYWMyYTI3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogTmlrbGFzIEhhYXMgPGdpdEBoYWFzbi5kZXY+CkRhdGU6IFN1biwgMjYgSnVsIDIw MjYgMDA6MDQ6NTkgKzAyMDAKU3ViamVjdDogW1BBVENIIDE4LzE4XSBjaGVja2FzbS9zd19vcHM6 IGFkZCBTV1NfVU9QX0xVVF8zRCB0ZXN0Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTog dGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0 CgpjaGVja2FzbToKIC0gQ1BVOiBBTUQgUnl6ZW4gOSA5OTUwWDNEIDE2LUNvcmUgUHJvY2Vzc29y ICgwMEI0MEY0MCkKIC0gVGltaW5nIHNvdXJjZTogeDg2IChyZHRzYykKIC0gQmVuY2ggZHVyYXRp b246IDEwMDAwMCDCtXMgcGVyIGZ1bmN0aW9uICg0NDg2Njc3OTMgY3ljbGVzKQogLSBSYW5kb20g c2VlZDogMzc3Mzg4MzM5MwpCZW5jaG1hcmsgcmVzdWx0czoKICBuYW1lICAgICAgICAgICAgICAg ICAgICAgICAgIGN5Y2xlcyAodnMgcmVmKQogIGYzMl9sdXRfM2RfeHl6X2R5bmFtaWNfYzogIDEy NTE5My45CiAgZjMyX2x1dF8zZF94eXpfc3RhdGljX2M6ICAgIDI1NzkyLjEKICBmMzJfbHV0XzNk X3h5endfZHluYW1pY19jOiAxMjM4MDcuMQogIGYzMl9sdXRfM2RfeHl6d19zdGF0aWNfYzogICAy NTczOS4wCgpUaGlzIGlzIHJvdWdobHkgfjUwJSBmYXN0ZXIgdGhhbiB0aGUgZXhpc3RpbmcgY29k ZSBpbiBsdXQzZC5jLCBmcm9tIGEgcXVpY2sKdGVzdC4KClNwb25zb3JlZC1ieTogU292ZXJlaWdu IFRlY2ggRnVuZApTaWduZWQtb2ZmLWJ5OiBOaWtsYXMgSGFhcyA8Z2l0QGhhYXNuLmRldj4KLS0t CiB0ZXN0cy9jaGVja2FzbS9zd19vcHMuYyB8IDIyICsrKysrKysrKysrKysrKysrKysrKysKIDEg ZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2th c20vc3dfb3BzLmMgYi90ZXN0cy9jaGVja2FzbS9zd19vcHMuYwppbmRleCBkZjgxY2FmNDY5Li4x ZTRjMWFiZjdhIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVja2FzbS9zd19vcHMuYworKysgYi90ZXN0 cy9jaGVja2FzbS9zd19vcHMuYwpAQCAtNjM0LDYgKzYzNCwyNyBAQCBzdGF0aWMgdm9pZCBjaGVj a19kaXRoZXIoY29uc3QgY2hhciAqbmFtZSwgU3dzVU9wICp1b3ApCiAgICAgYXZfcmVmc3RydWN0 X3VucmVmKCZtYXRyaXgpOwogfQogCitzdGF0aWMgdm9pZCBjaGVja19sdXRfM2QoY29uc3QgY2hh ciAqbmFtZSwgU3dzVU9wICp1b3ApCit7CisgICAgU3dzTHV0M0QgKmx1dDNkID0gZmZfc3dzX2x1 dDNkX2FsbG9jKCk7CisgICAgY2hlY2thc21faW5pdCgmbHV0M2QtPmlucHV0LCBzaXplb2YobHV0 M2QtPmlucHV0KSk7CisKKyAgICBpZiAodW9wLT5wYXIubHV0M2QuZHluYW1pYykgeworICAgICAg ICBjaGVja2FzbV9pbml0KCZsdXQzZC0+dG9uZV9tYXAsIHNpemVvZihsdXQzZC0+dG9uZV9tYXAp KTsKKyAgICAgICAgY2hlY2thc21faW5pdCgmbHV0M2QtPm91dHB1dCwgICBzaXplb2YobHV0M2Qt Pm91dHB1dCkpOworICAgICAgICBsdXQzZC0+ZHluYW1pYyA9IHRydWU7CisKKyAgICAgICAgLyog UHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWQgZnJvbSBJUFQgdmFsdWVzIHdpdGggYWJzKFBUKSA+ IDAuNSAqLworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IEZGX0FSUkFZX0VMRU1TKGx1dDNk LT50b25lX21hcCk7IGkrKykKKyAgICAgICAgICAgIGx1dDNkLT50b25lX21hcFtpXS55ID0gRkZN SU4obHV0M2QtPnRvbmVfbWFwW2ldLnksIDEgPDwgMTUpOworICAgIH0KKworICAgIHVvcC0+ZGF0 YS5sdXQzZCA9IGx1dDNkOworICAgIGNoZWNrX3JhbmdlKG5hbWUsIHVvcCwgTUtfUkFOR0VTKElO UFVUX0xVVF9TSVpFIC0gMSkpOworCisgICAgYXZfcmVmc3RydWN0X3VucmVmKCZsdXQzZCk7Cit9 CisKICNkZWZpbmUgQ0hFQ0tfRlVOQ1RJT04oQ0hFQ0ssIE5BTUUsIC4uLikgXAogICAgIENIRUNL KCNOQU1FLCAmKFN3c1VPcCkgeyBfX1ZBX0FSR1NfXyB9KTsKIApAQCAtNjc4LDQgKzY5OSw1IEBA IHZvaWQgY2hlY2thc21fY2hlY2tfc3dfb3BzKHZvaWQpCiAgICAgQ0hFQ0tfRk9SKENMRUFSLCAg ICAgICAgICAgIGNoZWNrX3ZlYzQpOwogICAgIENIRUNLX0ZPUihMSU5FQVIsICAgICAgICAgICBj aGVja19saW5lYXIpOwogICAgIENIRUNLX0ZPUihESVRIRVIsICAgICAgICAgICBjaGVja19kaXRo ZXIpOworICAgIENIRUNLX0ZPUihMVVRfM0QsICAgICAgICAgICBjaGVja19sdXRfM2QpOwogfQot LSAKMi41Mi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0IC0tIGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnClRv IHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8gZmZtcGVnLWRldmVsLWxlYXZlQGZmbXBlZy5v cmcK