ZGlmZiAtLWdpdCBhL3NyYy9maWxlaW8uYyBiL3NyYy9maWxlaW8uYwppbmRleCBhMzQwNDhjLi5kNDlkODdiIDEwMDY0NAotLS0gYS9zcmMvZmlsZWlvLmMKKysrIGIvc3JjL2ZpbGVpby5jCkBAIC0xNTE1LDggKzE1MTUsNiBAQAogIyBpZmRlZiBNQUNPU19YCiAJICAgIGlmIChmaW9fZmxhZ3MgJiBGSU9fTUFDUk9NQU4pCiAJICAgIHsKLQkJZXh0ZXJuIGludCBtYWNyb21hbjJlbmMgX19BUkdTKChjaGFyX3UgKnB0ciwgbG9uZyAqc2l6ZXAsIGxvbmcKLQkJCSAgICByZWFsX3NpemUpKTsKIAkJLyoKIAkJICogQ29udmVyc2lvbiBmcm9tIEFwcGxlIE1hY1JvbWFuIGNoYXIgZW5jb2RpbmcgdG8gVVRGLTggb3IKIAkJICogbGF0aW4xLiAgVGhpcyBpcyBpbiBvc19tYWNfY29udi5jLgpAQCAtNDgxNSw5ICs0ODEzLDYgQEAKIAkgICAgICovCiAJICAgIGNoYXJfdQkqZnJvbTsKIAkgICAgc2l6ZV90CWZyb21sZW47Ci0JICAgIGV4dGVybiBpbnQgZW5jMm1hY3JvbWFuIF9fQVJHUygoY2hhcl91ICpmcm9tLCBzaXplX3QgZnJvbWxlbiwKLQkJCWNoYXJfdSAqdG8sIGludCAqdG9sZW5wLCBpbnQgbWF4dG9sZW4sIGNoYXJfdSAqcmVzdCwKLQkJCWludCAqcmVzdGxlbnApKTsKIAogCSAgICBpZiAoaXAtPmJ3X3Jlc3RsZW4gPiAwKQogCSAgICB7CmRpZmYgLS1naXQgYS9zcmMvZ3VpX21hYy5jIGIvc3JjL2d1aV9tYWMuYwppbmRleCBmMDFkYzg2Li45MjUzYWExIDEwMDY0NAotLS0gYS9zcmMvZ3VpX21hYy5jCisrKyBiL3NyYy9ndWlfbWFjLmMKQEAgLTk0LDEwICs5NCw2IEBACiAjaWYgZGVmaW5lZChVU0VfQ0FSQk9OSVpFRCkgJiYgZGVmaW5lZChGRUFUX01CWVRFKQogIyBkZWZpbmUgVVNFX0NBUkJPTktFWUhBTkRMRVIKIHN0YXRpYyBFdmVudEhhbmRsZXJVUFAga2V5RXZlbnRIYW5kbGVyVVBQID0gTlVMTDsKLS8qIERlZmluZWQgaW4gb3NfbWFjX2NvbnYuYyAqLwotZXh0ZXJuIGNoYXJfdSAqbWFjX3V0ZjE2X3RvX2VuYyBfX0FSR1MoKFVuaUNoYXIgKmZyb20sIHNpemVfdCBmcm9tTGVuLCBzaXplX3QgKmFjdHVhbExlbikpOwotZXh0ZXJuIFVuaUNoYXIgKm1hY19lbmNfdG9fdXRmMTYgX19BUkdTKChjaGFyX3UgKmZyb20sIHNpemVfdCBmcm9tTGVuLCBzaXplX3QgKmFjdHVhbExlbikpOwotZXh0ZXJuIENGU3RyaW5nUmVmIG1hY19lbmNfdG9fY2ZzdHJpbmcgX19BUkdTKChjaGFyX3UgKmZyb20sIHNpemVfdCBmcm9tTGVuKSk7CiAjZW5kaWYKIAogI2lmZGVmIE1BQ09TX1gKQEAgLTE2MTgsNyArMTYxNCw3IEBACiAgKi8KICNkZWZpbmUgRk9OVF9TVFlMRV9CVUZGRVJfU0laRSAzMgogICAgIHN0YXRpYyB2b2lkCi1HZXRGb250UGFuZWxTZWxlY3Rpb24oY2hhcl91KiBvdXROYW1lKQorR2V0Rm9udFBhbmVsU2VsZWN0aW9uKGNoYXJfdSAqb3V0TmFtZSkKIHsKICAgICBTdHIyNTUJICAgIGJ1ZjsKICAgICBCeXRlQ291bnQJICAgIGZvbnROYW1lTGVuID0gMDsKQEAgLTE2MzksMTIgKzE2MzUsMTIgQEAKIAkgKiBnZXQgYW4gdW53YW50ZWQgdXRmLTE2IG5hbWUpICovCiAJaWYgKEFUU1VGaW5kRm9udE5hbWUoZmlkLCBrRm9udEZ1bGxOYW1lLCBrRm9udE1hY2ludG9zaFBsYXRmb3JtLAogCQkgICAga0ZvbnROb1NjcmlwdENvZGUsIGtGb250Tm9MYW5ndWFnZUNvZGUsCi0JCSAgICAyNTUsIG91dE5hbWUsICZmb250TmFtZUxlbiwgTlVMTCkgIT0gbm9FcnIpCisJCSAgICAyNTUsIChjaGFyICopb3V0TmFtZSwgJmZvbnROYW1lTGVuLCBOVUxMKSAhPSBub0VycikKIAkgICAgcmV0dXJuOwogCiAJLyogT25seSBlbmNvZGUgZm9udCBzaXplLCBiZWNhdXNlIHN0eWxlIChib2xkLCBpdGFsaWMsIGV0YykgaXMKIAkgKiBhbHJlYWR5IHBhcnQgb2YgdGhlIGZvbnQgZnVsbCBuYW1lICovCi0JdmltX3NucHJpbnRmKHN0eWxlU3RyaW5nLCBGT05UX1NUWUxFX0JVRkZFUl9TSVpFLCAiOmglZCIsCisJdmltX3NucHJpbnRmKChjaGFyICopc3R5bGVTdHJpbmcsIEZPTlRfU1RZTEVfQlVGRkVSX1NJWkUsICI6aCVkIiwKIAkJZ0ZvbnRQYW5lbEluZm8uc2l6ZS8qLAogCQkoKGdGb250UGFuZWxJbmZvLnN0eWxlICYgYm9sZCkhPTAgPyAiOmIiIDogIiIpLAogCQkoKGdGb250UGFuZWxJbmZvLnN0eWxlICYgaXRhbGljKSE9MCA/ICI6aSIgOiAiIiksCkBAIC0xNjU1LDcgKzE2NTEsNyBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotCSpvdXROYW1lID0gTlVMTDsKKwkqb3V0TmFtZSA9IE5VTDsKICAgICB9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pZl9ydWJ5LmMgYi9zcmMvaWZfcnVieS5jCmluZGV4IDExMmI5MWUuLjQzOTZiNDYgMTAwNjQ0Ci0tLSBhL3NyYy9pZl9ydWJ5LmMKKysrIGIvc3JjL2lmX3J1YnkuYwpAQCAtMTkxLDcgKzE5MSw3IEBACiBzdGF0aWMgSElOU1RBTkNFIGhpbnN0UnVieSA9IDA7IC8qIEluc3RhbmNlIG9mIHJ1YnkuZGxsICovCiAKIC8qCi0gKiBUYWJsZSBvZiBuYW1lIHRvIGZ1bmN0aW9uIHBvaW50ZXIgb2YgcHl0aG9uLgorICogVGFibGUgb2YgbmFtZSB0byBmdW5jdGlvbiBwb2ludGVyIG9mIHJ1YnkuCiAgKi8KICNkZWZpbmUgUlVCWV9QUk9DIEZBUlBST0MKIHN0YXRpYyBzdHJ1Y3QKQEAgLTc2OCw2ICs3NjgsMjQgQEAKICAgICByZXR1cm4gaGVpZ2h0OwogfQogCitzdGF0aWMgVkFMVUUgd2luZG93X3dpZHRoKFZBTFVFIHNlbGYpCit7CisgICAgd2luX1QgKndpbiA9IGdldF93aW4oc2VsZik7CisKKyAgICByZXR1cm4gSU5UMk5VTSh3aW4tPndfd2lkdGgpOworfQorCitzdGF0aWMgVkFMVUUgd2luZG93X3NldF93aWR0aChWQUxVRSBzZWxmLCBWQUxVRSB3aWR0aCkKK3sKKyAgICB3aW5fVCAqd2luID0gZ2V0X3dpbihzZWxmKTsKKyAgICB3aW5fVCAqc2F2ZXdpbiA9IGN1cndpbjsKKworICAgIGN1cndpbiA9IHdpbjsKKyAgICB3aW5fc2V0d2lkdGgoTlVNMklOVCh3aWR0aCkpOworICAgIGN1cndpbiA9IHNhdmV3aW47CisgICAgcmV0dXJuIHdpZHRoOworfQorCiBzdGF0aWMgVkFMVUUgd2luZG93X2N1cnNvcihWQUxVRSBzZWxmKQogewogICAgIHdpbl9UICp3aW4gPSBnZXRfd2luKHNlbGYpOwpAQCAtODYwLDYgKzg3OCw4IEBACiAgICAgcmJfZGVmaW5lX21ldGhvZChjVmltV2luZG93LCAiYnVmZmVyIiwgd2luZG93X2J1ZmZlciwgMCk7CiAgICAgcmJfZGVmaW5lX21ldGhvZChjVmltV2luZG93LCAiaGVpZ2h0Iiwgd2luZG93X2hlaWdodCwgMCk7CiAgICAgcmJfZGVmaW5lX21ldGhvZChjVmltV2luZG93LCAiaGVpZ2h0PSIsIHdpbmRvd19zZXRfaGVpZ2h0LCAxKTsKKyAgICByYl9kZWZpbmVfbWV0aG9kKGNWaW1XaW5kb3csICJ3aWR0aCIsIHdpbmRvd193aWR0aCwgMCk7CisgICAgcmJfZGVmaW5lX21ldGhvZChjVmltV2luZG93LCAid2lkdGg9Iiwgd2luZG93X3NldF93aWR0aCwgMSk7CiAgICAgcmJfZGVmaW5lX21ldGhvZChjVmltV2luZG93LCAiY3Vyc29yIiwgd2luZG93X2N1cnNvciwgMCk7CiAgICAgcmJfZGVmaW5lX21ldGhvZChjVmltV2luZG93LCAiY3Vyc29yPSIsIHdpbmRvd19zZXRfY3Vyc29yLCAxKTsKIApkaWZmIC0tZ2l0IGEvc3JjL21ieXRlLmMgYi9zcmMvbWJ5dGUuYwppbmRleCBkNDQ2YTViLi5iZjg2YjVlIDEwMDY0NAotLS0gYS9zcmMvbWJ5dGUuYworKysgYi9zcmMvbWJ5dGUuYwpAQCAtNTc4OCwxMSArNTc4OCw2IEBACiAgICAgcmV0dXJuIGRsZW47CiB9CiAKLSNpZiBkZWZpbmVkKE1BQ09TX1gpCi0vKiBUaGlzIGlzIGluIG9zX21hY19jb252LmMuICovCi1leHRlcm4gY2hhcl91ICptYWNfc3RyaW5nX2NvbnZlcnQgX19BUkdTKChjaGFyX3UgKnB0ciwgaW50IGxlbiwgaW50ICpsZW5wLCBpbnQgZmFpbF9vbl9lcnJvciwgaW50IGZyb20sIGludCB0bywgaW50ICp1bmNvbnZsZW5wKSk7Ci0jZW5kaWYKLQogLyoKICAqIENvbnZlcnQgdGV4dCAicHRyWypsZW5wXSIgYWNjb3JkaW5nIHRvICJ2Y3AiLgogICogUmV0dXJucyB0aGUgcmVzdWx0IGluIGFsbG9jYXRlZCBtZW1vcnkgYW5kIHNldHMgIipsZW5wIi4KZGlmZiAtLWdpdCBhL3NyYy9ub3JtYWwuYyBiL3NyYy9ub3JtYWwuYwppbmRleCBlYmY0MDA4Li5lN2NmYWQ2IDEwMDY0NAotLS0gYS9zcmMvbm9ybWFsLmMKKysrIGIvc3JjL25vcm1hbC5jCkBAIC00Njc4LDYgKzQ2NzgsMTggQEAKIAkJCQkJCQkJICAgICAgPT0gRkFJTCkKIAkJCXJldHVybjsKICMgZW5kaWYKKwkJICAgIGlmIChwdHIgPT0gTlVMTCkKKwkJICAgIHsKKwkJCXBvc19UCXBvcyA9IGN1cndpbi0+d19jdXJzb3I7CisJCQlpbnQJYXR0cjsKKworCQkJLyogRmluZCBiYWQgd29yZCB1bmRlciB0aGUgY3Vyc29yLiAqLworCQkJbGVuID0gc3BlbGxfbW92ZV90byhjdXJ3aW4sIEZPUldBUkQsIFRSVUUsIFRSVUUsICZhdHRyKTsKKwkJCWlmIChsZW4gIT0gMCAmJiBjdXJ3aW4tPndfY3Vyc29yLmNvbCA8PSBwb3MuY29sKQorCQkJICAgIHB0ciA9IG1sX2dldF9wb3MoJmN1cndpbi0+d19jdXJzb3IpOworCQkJY3Vyd2luLT53X2N1cnNvciA9IHBvczsKKwkJICAgIH0KKwogCQkgICAgaWYgKHB0ciA9PSBOVUxMICYmIChsZW4gPSBmaW5kX2lkZW50X3VuZGVyX2N1cnNvcigmcHRyLAogCQkJCQkJCSAgICBGSU5EX0lERU5UKSkgPT0gMCkKIAkJCXJldHVybjsKZGlmZiAtLWdpdCBhL3NyYy9vcHRpb24uYyBiL3NyYy9vcHRpb24uYwppbmRleCA5OGMwYWQ4Li5iYmY1NjRhIDEwMDY0NAotLS0gYS9zcmMvb3B0aW9uLmMKKysrIGIvc3JjL29wdGlvbi5jCkBAIC0yOTk0LDcgKzI5OTQsNyBAQAogCQkgICAga0xvY2FsZVJlZ2lvbk1hc2sgfCBrTG9jYWxlUmVnaW9uVmFyaWFudE1hc2ssCiAJCSAgICBzaXplb2YgYnVmLCBidWYpID09IG5vRXJyICYmICpidWYpCiAJewotCSAgICB2aW1fc2V0ZW52KCJMQU5HIiwgYnVmKTsKKwkgICAgdmltX3NldGVudigoY2hhcl91ICopIkxBTkciLCAoY2hhcl91ICopYnVmKTsKICMgICBpZmRlZiBIQVZFX0xPQ0FMRV9ICiAJICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKICMgICBlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL29zX21hY19jb252LmMgYi9zcmMvb3NfbWFjX2NvbnYuYwppbmRleCBjMjU1ZTczLi5mYmNlNTc3IDEwMDY0NAotLS0gYS9zcmMvb3NfbWFjX2NvbnYuYworKysgYi9zcmMvb3NfbWFjX2NvbnYuYwpAQCAtMTcsMTcgKzE3LDYgQEAKICNpbmNsdWRlICJ2aW0uaCIKIAogI2lmZGVmIEZFQVRfTUJZVEUKLWV4dGVybiBjaGFyX3UgKm1hY19zdHJpbmdfY29udmVydCBfX0FSR1MoKGNoYXJfdSAqcHRyLCBpbnQgbGVuLCBpbnQgKmxlbnAsIGludCBmYWlsX29uX2Vycm9yLCBpbnQgZnJvbSwgaW50IHRvLCBpbnQgKnVuY29udmxlbnApKTsKLWV4dGVybiBpbnQgbWFjcm9tYW4yZW5jIF9fQVJHUygoY2hhcl91ICpwdHIsIGxvbmcgKnNpemVwLCBsb25nIHJlYWxfc2l6ZSkpOwotZXh0ZXJuIGludCBlbmMybWFjcm9tYW4gX19BUkdTKChjaGFyX3UgKmZyb20sIHNpemVfdCBmcm9tbGVuLCBjaGFyX3UgKnRvLCBpbnQgKnRvbGVucCwgaW50IG1heHRvbGVuLCBjaGFyX3UgKnJlc3QsIGludCAqcmVzdGxlbnApKTsKLQotZXh0ZXJuIHZvaWQJICAgIG1hY19jb252X2luaXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZAkgICAgbWFjX2NvbnZfY2xlYW51cCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBjaGFyX3UJICAgICptYWNfdXRmMTZfdG9fZW5jIF9fQVJHUygoVW5pQ2hhciAqZnJvbSwgc2l6ZV90IGZyb21MZW4sIHNpemVfdCAqYWN0dWFsTGVuKSk7Ci1leHRlcm4gVW5pQ2hhcgkgICAgKm1hY19lbmNfdG9fdXRmMTYgX19BUkdTKChjaGFyX3UgKmZyb20sIHNpemVfdCBmcm9tTGVuLCBzaXplX3QgKmFjdHVhbExlbikpOwotZXh0ZXJuIENGU3RyaW5nUmVmICBtYWNfZW5jX3RvX2Nmc3RyaW5nIF9fQVJHUygoY2hhcl91ICpmcm9tLCBzaXplX3QgZnJvbUxlbikpOwotZXh0ZXJuIGNoYXJfdQkgICAgKm1hY19wcmVjb21wb3NlX3BhdGggX19BUkdTKChjaGFyX3UgKmRlY29tcFBhdGgsIHNpemVfdCBkZWNvbXBMZW4sIHNpemVfdCAqcHJlY29tcExlbikpOwotCiBzdGF0aWMgY2hhcl91CSAgICAqbWFjX3V0ZjE2X3RvX3V0ZjggX19BUkdTKChVbmlDaGFyICpmcm9tLCBzaXplX3QgZnJvbUxlbiwgc2l6ZV90ICphY3R1YWxMZW4pKTsKIHN0YXRpYyBVbmlDaGFyCSAgICAqbWFjX3V0ZjhfdG9fdXRmMTYgX19BUkdTKChjaGFyX3UgKmZyb20sIHNpemVfdCBmcm9tTGVuLCBzaXplX3QgKmFjdHVhbExlbikpOwogCkBAIC0xMTQsNyArMTAzLDcgQEAKIAogICAgIGlmICghQ0ZTdHJpbmdHZXRCeXRlcyhjZnN0ciwgY29udmVydFJhbmdlLCB0bywgTlVMTCwgRkFMU0UsIHJldHZhbCwgYnVmbGVuLCBOVUxMKSkKICNlbmRpZgotICAgIGlmICghQ0ZTdHJpbmdHZXRDU3RyaW5nKGNmc3RyLCByZXR2YWwsIGJ1ZmxlbiwgdG8pKQorICAgIGlmICghQ0ZTdHJpbmdHZXRDU3RyaW5nKGNmc3RyLCAoY2hhciAqKXJldHZhbCwgYnVmbGVuLCB0bykpCiAgICAgewogCUNGUmVsZWFzZShjZnN0cik7CiAJaWYgKGZhaWxfb25fZXJyb3IpCkBAIC0xNDAsMTQgKzEyOSwxNCBAQAogCSAgICB9CiAJICAgIGVsc2UKIAkgICAgewotCQlpZiAoIUNGU3RyaW5nR2V0Q1N0cmluZyhjZnN0ciwgZCwgYnVmbGVuIC0gb3V0LCB0bykpCisJCWlmICghQ0ZTdHJpbmdHZXRDU3RyaW5nKGNmc3RyLCAoY2hhciAqKWQsIGJ1ZmxlbiAtIG91dCwgdG8pKQogCQl7CiAJCSAgICAqZCsrID0gJz8nOwogCQkgICAgb3V0Kys7CiAJCX0KIAkJZWxzZQogCQl7Ci0JCSAgICBpID0gc3RybGVuKGQpOworCQkgICAgaSA9IFNUUkxFTihkKTsKIAkJICAgIGQgKz0gaTsKIAkJICAgIG91dCArPSBpOwogCQl9CkBAIC0xNjIsNyArMTUxLDcgQEAKICAgICB9CiAgICAgQ0ZSZWxlYXNlKGNmc3RyKTsKICAgICBpZiAobGVucCAhPSBOVUxMKQotCSpsZW5wID0gc3RybGVuKHJldHZhbCk7CisJKmxlbnAgPSBTVFJMRU4ocmV0dmFsKTsKIAogICAgIHJldHVybiByZXR2YWw7CiB9CmRpZmYgLS1naXQgYS9zcmMvb3NfdW5peC5jIGIvc3JjL29zX3VuaXguYwppbmRleCBkNTY3ZjkwLi43ZDMyNDgyIDEwMDY0NAotLS0gYS9zcmMvb3NfdW5peC5jCisrKyBiL3NyYy9vc191bml4LmMKQEAgLTE3MywxNyArMTczLDYgQEAKIHN0YXRpYyBpbnQgIGhhdmVfZG9sbGFycyBfX0FSR1MoKGludCwgY2hhcl91ICoqKSk7CiAjZW5kaWYKIAotI2lmbmRlZiBOT19FWFBBTkRQQVRICi0jIGlmIGRlZmluZWQoTUFDT1NfWCkgJiYgZGVmaW5lZChGRUFUX01CWVRFKQotZXh0ZXJuIGNoYXJfdQkqbWFjX3ByZWNvbXBvc2VfcGF0aCBfX0FSR1MoKGNoYXJfdSAqZGVjb21wUGF0aCwgc2l6ZV90IGRlY29tcExlbiwgc2l6ZV90ICpwcmVjb21wTGVuKSk7Ci0jIGVuZGlmCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTUFDT1NfWCkgJiYgZGVmaW5lZChGRUFUX01CWVRFKQotZXh0ZXJuIHZvaWQJbWFjX2NvbnZfaW5pdCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkCW1hY19jb252X2NsZWFudXAgX19BUkdTKCh2b2lkKSk7Ci0jZW5kaWYKLQogI2lmbmRlZiBfX0VNWF9fCiBzdGF0aWMgaW50IHNhdmVfcGF0dGVybnMgX19BUkdTKChpbnQgbnVtX3BhdCwgY2hhcl91ICoqcGF0LCBpbnQgKm51bV9maWxlLCBjaGFyX3UgKioqZmlsZSkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8uaCBiL3NyYy9wcm90by5oCmluZGV4IDRjMGRiMzcuLjYxMTY1NzggMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by5oCisrKyBiL3NyYy9wcm90by5oCkBAIC0yNjEsNiArMjYxLDEwIEBACiAjIGluY2x1ZGUgImlmX3BlcmxzZmlvLnBybyIKICNlbmRpZgogCisjaWYgZGVmaW5lZChGRUFUX01CWVRFKSAmJiBkZWZpbmVkKE1BQ09TX1gpCisjIGluY2x1ZGUgIm9zX21hY19jb252LnBybyIKKyNlbmRpZgorCiAjaWZkZWYgX19CT1JMQU5EQ19fCiAjIGRlZmluZSBfUFJPVE9fSAogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vZ3VpX21hYy5wcm8gYi9zcmMvcHJvdG8vZ3VpX21hYy5wcm8KaW5kZXggOTMzZmU0ZC4uYzY0MDM1MSAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL2d1aV9tYWMucHJvCisrKyBiL3NyYy9wcm90by9ndWlfbWFjLnBybwpAQCAtNDcsNiArNDcsNyBAQAogZ3VpY29sb3JfVCBndWlfbWNoX2dldF9jb2xvciBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwogdm9pZCBndWlfbWNoX3NldF9mZ19jb2xvciBfX0FSR1MoKGd1aWNvbG9yX1QgY29sb3IpKTsKIHZvaWQgZ3VpX21jaF9zZXRfYmdfY29sb3IgX19BUkdTKChndWljb2xvcl9UIGNvbG9yKSk7Cit2b2lkIGd1aV9tY2hfc2V0X3NwX2NvbG9yIF9fQVJHUygoZ3VpY29sb3JfVCBjb2xvcikpOwogdm9pZCBndWlfbWNoX2RyYXdfc3RyaW5nIF9fQVJHUygoaW50IHJvdywgaW50IGNvbCwgY2hhcl91ICpzLCBpbnQgbGVuLCBpbnQgZmxhZ3MpKTsKIGludCBndWlfbWNoX2hhc2tleSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwogdm9pZCBndWlfbWNoX2JlZXAgX19BUkdTKCh2b2lkKSk7CmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vb3NfbWFjX2NvbnYucHJvIGIvc3JjL3Byb3RvL29zX21hY19jb252LnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWI5ZDI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Byb3RvL29zX21hY19jb252LnBybwpAQCAtMCwwICsxLDEwIEBACitleHRlcm4gY2hhcl91ICptYWNfc3RyaW5nX2NvbnZlcnQgX19BUkdTKChjaGFyX3UgKnB0ciwgaW50IGxlbiwgaW50ICpsZW5wLCBpbnQgZmFpbF9vbl9lcnJvciwgaW50IGZyb20sIGludCB0bywgaW50ICp1bmNvbnZsZW5wKSk7CitleHRlcm4gaW50IG1hY3JvbWFuMmVuYyBfX0FSR1MoKGNoYXJfdSAqcHRyLCBsb25nICpzaXplcCwgbG9uZyByZWFsX3NpemUpKTsKK2V4dGVybiBpbnQgZW5jMm1hY3JvbWFuIF9fQVJHUygoY2hhcl91ICpmcm9tLCBzaXplX3QgZnJvbWxlbiwgY2hhcl91ICp0bywgaW50ICp0b2xlbnAsIGludCBtYXh0b2xlbiwgY2hhcl91ICpyZXN0LCBpbnQgKnJlc3RsZW5wKSk7CisKK2V4dGVybiB2b2lkCSAgICBtYWNfY29udl9pbml0IF9fQVJHUygodm9pZCkpOworZXh0ZXJuIHZvaWQJICAgIG1hY19jb252X2NsZWFudXAgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gY2hhcl91CSAgICAqbWFjX3V0ZjE2X3RvX2VuYyBfX0FSR1MoKFVuaUNoYXIgKmZyb20sIHNpemVfdCBmcm9tTGVuLCBzaXplX3QgKmFjdHVhbExlbikpOworZXh0ZXJuIFVuaUNoYXIJICAgICptYWNfZW5jX3RvX3V0ZjE2IF9fQVJHUygoY2hhcl91ICpmcm9tLCBzaXplX3QgZnJvbUxlbiwgc2l6ZV90ICphY3R1YWxMZW4pKTsKK2V4dGVybiBDRlN0cmluZ1JlZiAgbWFjX2VuY190b19jZnN0cmluZyBfX0FSR1MoKGNoYXJfdSAqZnJvbSwgc2l6ZV90IGZyb21MZW4pKTsKK2V4dGVybiBjaGFyX3UJICAgICptYWNfcHJlY29tcG9zZV9wYXRoIF9fQVJHUygoY2hhcl91ICpkZWNvbXBQYXRoLCBzaXplX3QgZGVjb21wTGVuLCBzaXplX3QgKnByZWNvbXBMZW4pKTsKZGlmZiAtLWdpdCBhL3NyYy9zY3JlZW4uYyBiL3NyYy9zY3JlZW4uYwppbmRleCBiYTM0NWFlLi4yYzM5YWM3IDEwMDY0NAotLS0gYS9zcmMvc2NyZWVuLmMKKysrIGIvc3JjL3NjcmVlbi5jCkBAIC0yOTM5LDYgKzI5MzksMTAgQEAKIAkJd29yZF9lbmQgPSB3cC0+d19jdXJzb3IuY29sICsgbGVuICsgMTsKIAogCSAgICB3cC0+d19jdXJzb3IgPSBwb3M7CisKKwkgICAgLyogTmVlZCB0byByZXN0YXJ0IHN5bnRheCBoaWdobGlnaHRpbmcgZm9yIHRoaXMgbGluZS4gKi8KKwkgICAgaWYgKGhhc19zeW50YXgpCisJCXN5bnRheF9zdGFydCh3cCwgbG51bSk7CiAJfQogI2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL3NwZWxsLmMgYi9zcmMvc3BlbGwuYwppbmRleCAyYjA0YmY4Li41NmM4OTFkIDEwMDY0NAotLS0gYS9zcmMvc3BlbGwuYworKysgYi9zcmMvc3BlbGwuYwpAQCAtMzc1LDcgKzM3NSw3IEBACiAgICAgY2hhcl91CSpzbF9taWR3b3JkOwkvKiBNSURXT1JEIHN0cmluZyBvciBOVUxMICovCiAKICAgICBpbnQJCXNsX2NvbXBtYXg7CS8qIENPTVBPVU5ETUFYIChkZWZhdWx0OiBNQVhXTEVOKSAqLwotICAgIGludAkJc2xfY29tcG1pbmxlbjsJLyogQ09NUE9VTkRNSU4gKGRlZmF1bHQ6IE1BWFdMRU4pICovCisgICAgaW50CQlzbF9jb21wbWlubGVuOwkvKiBDT01QT1VORE1JTiAoZGVmYXVsdDogMCkgKi8KICAgICBpbnQJCXNsX2NvbXBzeWxtYXg7CS8qIENPTVBPVU5EU1lMTUFYIChkZWZhdWx0OiBNQVhXTEVOKSAqLwogICAgIHJlZ3Byb2dfVAkqc2xfY29tcHByb2c7CS8qIENPTVBPVU5ERkxBR1MgdHVybmVkIGludG8gYSByZWdleHAgcHJvZ3JtCiAJCQkJICogKE5VTEwgd2hlbiBubyBjb21wb3VuZGluZykgKi8KQEAgLTEyOTksNyArMTI5OSw3IEBACiAJCS8qIEZvciBtdWx0aS1ieXRlIGNoYXJzIGNoZWNrIGNoYXJhY3RlciBsZW5ndGggYWdhaW5zdAogCQkgKiBDT01QT1VORE1JTi4gKi8KIAkJaWYgKGhhc19tYnl0ZQotCQkJJiYgc2xhbmctPnNsX2NvbXBtaW5sZW4gPCBNQVhXTEVOCisJCQkmJiBzbGFuZy0+c2xfY29tcG1pbmxlbiA+IDAKIAkJCSYmIG1iX2NoYXJsZW5fbGVuKG1pcC0+bWlfd29yZCArIG1pcC0+bWlfY29tcG9mZiwKIAkJCQl3bGVuIC0gbWlwLT5taV9jb21wb2ZmKSA8IHNsYW5nLT5zbF9jb21wbWlubGVuKQogCQkJY29udGludWU7CkBAIC0xMzg4LDYgKzEzODgsOCBAQAogCSAgICB7CiAJCWludAlzYXZlX3Jlc3VsdCA9IG1pcC0+bWlfcmVzdWx0OwogCQljaGFyX3UJKnNhdmVfZW5kID0gbWlwLT5taV9lbmQ7CisJCWxhbmdwX1QJKnNhdmVfbHAgPSBtaXAtPm1pX2xwOworCQlpbnQJbHBpOwogCiAJCS8qIENoZWNrIHRoYXQgYSB2YWxpZCB3b3JkIGZvbGxvd3MuICBJZiB0aGVyZSBpcyBvbmUgYW5kIHdlCiAJCSAqIGFyZSBjb21wb3VuZGluZywgaXQgd2lsbCBzZXQgIm1pX3Jlc3VsdCIsIHRodXMgd2UgYXJlCkBAIC0xNDE3LDI1ICsxNDE5LDQzIEBACiAjZW5kaWYKIAkJYyA9IG1pcC0+bWlfY29tcG9mZjsKIAkJKyttaXAtPm1pX2NvbXBsZW47Ci0JCWZpbmRfd29yZChtaXAsIEZJTkRfQ09NUE9VTkQpOwogCi0JCS8qIFdoZW4gTk9CUkVBSyBhbnkgd29yZCB0aGF0IG1hdGNoZXMgaXMgT0suICBPdGhlcndpc2Ugd2UKLQkJICogbmVlZCB0byBmaW5kIHRoZSBsb25nZXN0IG1hdGNoLCB0aHVzIHRyeSB3aXRoIGtlZXAtY2FzZSBhbmQKLQkJICogcHJlZml4IHRvby4gKi8KLQkJaWYgKCFzbGFuZy0+c2xfbm9icmVhayB8fCBtaXAtPm1pX3Jlc3VsdCA9PSBTUF9CQUQpCisJCS8qIEZvciBOT0JSRUFLIHdlIG5lZWQgdG8gdHJ5IGFsbCBOT0JSRUFLIGxhbmd1YWdlcywgYXQgbGVhc3QKKwkJICogdG8gZmluZCB0aGUgIi5hZGQiIGZpbGUocykuICovCisJCWZvciAobHBpID0gMDsgbHBpIDwgbWlwLT5taV9idWYtPmJfbGFuZ3AuZ2FfbGVuOyArK2xwaSkKIAkJewotCQkgICAgLyogRmluZCBmb2xsb3dpbmcgd29yZCBpbiBrZWVwLWNhc2UgdHJlZS4gKi8KLQkJICAgIG1pcC0+bWlfY29tcG9mZiA9IHdsZW47Ci0JCSAgICBmaW5kX3dvcmQobWlwLCBGSU5EX0tFRVBDT01QT1VORCk7CisJCSAgICBpZiAoc2xhbmctPnNsX25vYnJlYWspCisJCSAgICB7CisJCQltaXAtPm1pX2xwID0gTEFOR1BfRU5UUlkobWlwLT5taV9idWYtPmJfbGFuZ3AsIGxwaSk7CisJCQlpZiAobWlwLT5taV9scC0+bHBfc2xhbmctPnNsX2ZpZHhzID09IE5VTEwKKwkJCQkJIHx8ICFtaXAtPm1pX2xwLT5scF9zbGFuZy0+c2xfbm9icmVhaykKKwkJCSAgICBjb250aW51ZTsKKwkJICAgIH0KIAorCQkgICAgZmluZF93b3JkKG1pcCwgRklORF9DT01QT1VORCk7CisKKwkJICAgIC8qIFdoZW4gTk9CUkVBSyBhbnkgd29yZCB0aGF0IG1hdGNoZXMgaXMgT0suICBPdGhlcndpc2Ugd2UKKwkJICAgICAqIG5lZWQgdG8gZmluZCB0aGUgbG9uZ2VzdCBtYXRjaCwgdGh1cyB0cnkgd2l0aCBrZWVwLWNhc2UKKwkJICAgICAqIGFuZCBwcmVmaXggdG9vLiAqLwogCQkgICAgaWYgKCFzbGFuZy0+c2xfbm9icmVhayB8fCBtaXAtPm1pX3Jlc3VsdCA9PSBTUF9CQUQpCiAJCSAgICB7Ci0JCQkvKiBDaGVjayBmb3IgZm9sbG93aW5nIHdvcmQgd2l0aCBwcmVmaXguICovCi0JCQltaXAtPm1pX2NvbXBvZmYgPSBjOwotCQkJZmluZF9wcmVmaXgobWlwLCBGSU5EX0NPTVBPVU5EKTsKKwkJCS8qIEZpbmQgZm9sbG93aW5nIHdvcmQgaW4ga2VlcC1jYXNlIHRyZWUuICovCisJCQltaXAtPm1pX2NvbXBvZmYgPSB3bGVuOworCQkJZmluZF93b3JkKG1pcCwgRklORF9LRUVQQ09NUE9VTkQpOworCisJCQlpZiAoIXNsYW5nLT5zbF9ub2JyZWFrIHx8IG1pcC0+bWlfcmVzdWx0ID09IFNQX0JBRCkKKwkJCXsKKwkJCSAgICAvKiBDaGVjayBmb3IgZm9sbG93aW5nIHdvcmQgd2l0aCBwcmVmaXguICovCisJCQkgICAgbWlwLT5taV9jb21wb2ZmID0gYzsKKwkJCSAgICBmaW5kX3ByZWZpeChtaXAsIEZJTkRfQ09NUE9VTkQpOworCQkJfQogCQkgICAgfQorCisJCSAgICBpZiAoIXNsYW5nLT5zbF9ub2JyZWFrKQorCQkJYnJlYWs7CiAJCX0KIAkJLS1taXAtPm1pX2NvbXBsZW47CisJCW1pcC0+bWlfbHAgPSBzYXZlX2xwOwogCiAJCWlmIChzbGFuZy0+c2xfbm9icmVhaykKIAkJewpAQCAtMjAzNyw2ICsyMDU3LDEzIEBACiAgICAgfQogfQogCit0eXBlZGVmIHN0cnVjdCBzcGVsbG9hZF9TCit7CisgICAgY2hhcl91ICBzbF9sYW5nW01BWFdMRU4gKyAxXTsJLyogbGFuZ3VhZ2UgbmFtZSAqLworICAgIHNsYW5nX1QgKnNsX3NsYW5nOwkJCS8qIHJlc3VsdGluZyBzbGFuZ19UIHN0cnVjdCAqLworICAgIGludAkgICAgc2xfbm9icmVhazsJCQkvKiBOT0JSRUFLIGxhbmd1YWdlIGZvdW5kICovCit9IHNwZWxsb2FkX1Q7CisKIC8qCiAgKiBMb2FkIHdvcmQgbGlzdChzKSBmb3IgImxhbmciIGZyb20gVmltIHNwZWxsIGZpbGUocykuCiAgKiAibGFuZyIgbXVzdCBiZSB0aGUgbGFuZ3VhZ2Ugd2l0aG91dCB0aGUgcmVnaW9uOiBlLmcuLCAiZW4iLgpAQCAtMjA0NywzNSArMjA3NCwzNyBAQAogewogICAgIGNoYXJfdQlmbmFtZV9lbmNbODVdOwogICAgIGludAkJcjsKLSAgICBjaGFyX3UJbGFuZ2NwW01BWFdMRU4gKyAxXTsKKyAgICBzcGVsbG9hZF9UCXNsOwogCiAgICAgLyogQ29weSB0aGUgbGFuZ3VhZ2UgbmFtZSB0byBwYXNzIGl0IHRvIHNwZWxsX2xvYWRfY2IoKSBhcyBhIGNvb2tpZS4KICAgICAgKiBJdCdzIHRydW5jYXRlZCB3aGVuIGFuIGVycm9yIGlzIGRldGVjdGVkLiAqLwotICAgIFNUUkNQWShsYW5nY3AsIGxhbmcpOworICAgIFNUUkNQWShzbC5zbF9sYW5nLCBsYW5nKTsKKyAgICBzbC5zbF9zbGFuZyA9IE5VTEw7CisgICAgc2wuc2xfbm9icmVhayA9IEZBTFNFOwogCiAgICAgLyoKICAgICAgKiBGaW5kIHRoZSBmaXJzdCBzcGVsbCBmaWxlIGZvciAibGFuZyIgaW4gJ3J1bnRpbWVwYXRoJyBhbmQgbG9hZCBpdC4KICAgICAgKi8KICAgICB2aW1fc25wcmludGYoKGNoYXIgKilmbmFtZV9lbmMsIHNpemVvZihmbmFtZV9lbmMpIC0gNSwKIAkJCQkJInNwZWxsLyVzLiVzLnNwbCIsIGxhbmcsIHNwZWxsX2VuYygpKTsKLSAgICByID0gZG9faW5fcnVudGltZXBhdGgoZm5hbWVfZW5jLCBGQUxTRSwgc3BlbGxfbG9hZF9jYiwgJmxhbmdjcCk7CisgICAgciA9IGRvX2luX3J1bnRpbWVwYXRoKGZuYW1lX2VuYywgRkFMU0UsIHNwZWxsX2xvYWRfY2IsICZzbCk7CiAKLSAgICBpZiAociA9PSBGQUlMICYmICpsYW5nY3AgIT0gTlVMKQorICAgIGlmIChyID09IEZBSUwgJiYgKnNsLnNsX2xhbmcgIT0gTlVMKQogICAgIHsKIAkvKiBUcnkgbG9hZGluZyB0aGUgQVNDSUkgdmVyc2lvbi4gKi8KIAl2aW1fc25wcmludGYoKGNoYXIgKilmbmFtZV9lbmMsIHNpemVvZihmbmFtZV9lbmMpIC0gNSwKIAkJCQkJCSAgInNwZWxsLyVzLmFzY2lpLnNwbCIsIGxhbmcpOwotCXIgPSBkb19pbl9ydW50aW1lcGF0aChmbmFtZV9lbmMsIEZBTFNFLCBzcGVsbF9sb2FkX2NiLCAmbGFuZ2NwKTsKKwlyID0gZG9faW5fcnVudGltZXBhdGgoZm5hbWVfZW5jLCBGQUxTRSwgc3BlbGxfbG9hZF9jYiwgJnNsKTsKICAgICB9CiAKICAgICBpZiAociA9PSBGQUlMKQogCXNtc2coKGNoYXJfdSAqKV8oIldhcm5pbmc6IENhbm5vdCBmaW5kIHdvcmQgbGlzdCBcIiVzLiVzLnNwbFwiIG9yIFwiJXMuYXNjaWkuc3BsXCIiKSwKIAkJCQkJCSAgICAgbGFuZywgc3BlbGxfZW5jKCksIGxhbmcpOwotICAgIGVsc2UgaWYgKCpsYW5nY3AgIT0gTlVMKQorICAgIGVsc2UgaWYgKHNsLnNsX3NsYW5nICE9IE5VTEwpCiAgICAgewotCS8qIExvYWQgYWxsIHRoZSBhZGRpdGlvbnMuICovCisJLyogQXQgbGVhc3Qgb25lIGZpbGUgd2FzIGxvYWRlZCwgbm93IGxvYWQgYWxsIHRoZSBhZGRpdGlvbnMuICovCiAJU1RSQ1BZKGZuYW1lX2VuYyArIFNUUkxFTihmbmFtZV9lbmMpIC0gMywgImFkZC5zcGwiKTsKLQlkb19pbl9ydW50aW1lcGF0aChmbmFtZV9lbmMsIFRSVUUsIHNwZWxsX2xvYWRfY2IsICZsYW5nY3ApOworCWRvX2luX3J1bnRpbWVwYXRoKGZuYW1lX2VuYywgVFJVRSwgc3BlbGxfbG9hZF9jYiwgJnNsKTsKICAgICB9CiB9CiAKQEAgLTIxMjIsNyArMjE1MSw2IEBACiAJbHAtPnNsX25hbWUgPSB2aW1fc3Ryc2F2ZShsYW5nKTsKIAlnYV9pbml0MigmbHAtPnNsX3JlcCwgc2l6ZW9mKGZyb210b19UKSwgMTApOwogCWxwLT5zbF9jb21wbWF4ID0gTUFYV0xFTjsKLQlscC0+c2xfY29tcG1pbmxlbiA9IE1BWFdMRU47CiAJbHAtPnNsX2NvbXBzeWxtYXggPSBNQVhXTEVOOwogICAgIH0KICAgICByZXR1cm4gbHA7CkBAIC0yMjM3LDcgKzIyNjUsNyBAQAogI2VuZGlmCiAKICAgICBscC0+c2xfY29tcG1heCA9IE1BWFdMRU47Ci0gICAgbHAtPnNsX2NvbXBtaW5sZW4gPSBNQVhXTEVOOworICAgIGxwLT5zbF9jb21wbWlubGVuID0gMDsKICAgICBscC0+c2xfY29tcHN5bG1heCA9IE1BWFdMRU47CiAgICAgbHAtPnNsX3JlZ2lvbnNbMF0gPSBOVUw7CiB9CkBAIC0yMjQ5LDkgKzIyNzcsMjMgQEAKICAgICBzdGF0aWMgdm9pZAogc3BlbGxfbG9hZF9jYihmbmFtZSwgY29va2llKQogICAgIGNoYXJfdQkqZm5hbWU7Ci0gICAgdm9pZAkqY29va2llOwkgICAgLyogcG9pbnRzIHRvIHRoZSBsYW5ndWFnZSBuYW1lICovCisgICAgdm9pZAkqY29va2llOwogewotICAgICh2b2lkKXNwZWxsX2xvYWRfZmlsZShmbmFtZSwgKGNoYXJfdSAqKWNvb2tpZSwgTlVMTCwgRkFMU0UpOworICAgIHNwZWxsb2FkX1QJKnNscCA9IChzcGVsbG9hZF9UICopY29va2llOworICAgIHNsYW5nX1QJKnNsYW5nOworCisgICAgc2xhbmcgPSBzcGVsbF9sb2FkX2ZpbGUoZm5hbWUsIHNscC0+c2xfbGFuZywgTlVMTCwgRkFMU0UpOworICAgIGlmIChzbGFuZyAhPSBOVUxMKQorICAgIHsKKwkvKiBXaGVuIGEgcHJldmlvdXNseSBsb2FkZWQgZmlsZSBoYXMgTk9CUkVBSyBhbHNvIHVzZSBpdCBmb3IgdGhlCisJICogIi5hZGQiIGZpbGVzLiAqLworCWlmIChzbHAtPnNsX25vYnJlYWsgJiYgc2xhbmctPnNsX2FkZCkKKwkgICAgc2xhbmctPnNsX25vYnJlYWsgPSBUUlVFOworCWVsc2UgaWYgKHNsYW5nLT5zbF9ub2JyZWFrKQorCSAgICBzbHAtPnNsX25vYnJlYWsgPSBUUlVFOworCisJc2xwLT5zbF9zbGFuZyA9IHNsYW5nOworICAgIH0KIH0KIAogLyoKQEAgLTI5NDEsNyArMjk4Myw3IEBACiAgICAgLS10b2RvOwogICAgIGMgPSBnZXRjKGZkKTsJCQkJCS8qIDxjb21wbWlubGVuPiAqLwogICAgIGlmIChjIDwgMSkKLQljID0gTUFYV0xFTjsKKwljID0gMDsKICAgICBzbGFuZy0+c2xfY29tcG1pbmxlbiA9IGM7CiAKICAgICAtLXRvZG87CkBAIC0zNTA4LDYgKzM1NTAsNyBAQAogICAgIGNoYXJfdQkqc3BmOwogICAgIGNoYXJfdQkqdXNlX3JlZ2lvbiA9IE5VTEw7CiAgICAgaW50CQlkb250X3VzZV9yZWdpb24gPSBGQUxTRTsKKyAgICBpbnQJCW5vYnJlYWsgPSBGQUxTRTsKIAogICAgIGdhX2luaXQyKCZnYSwgc2l6ZW9mKGxhbmdwX1QpLCAyKTsKICAgICBjbGVhcl9taWR3b3JkKGJ1Zik7CkBAIC0zNjI0LDYgKzM2NjcsOCBAQAogCQkgICAgTEFOR1BfRU5UUlkoZ2EsIGdhLmdhX2xlbiktPmxwX3JlZ2lvbiA9IHJlZ2lvbl9tYXNrOwogCQkgICAgKytnYS5nYV9sZW47CiAJCSAgICB1c2VfbWlkd29yZChscCwgYnVmKTsKKwkJICAgIGlmIChscC0+c2xfbm9icmVhaykKKwkJCW5vYnJlYWsgPSBUUlVFOwogCQl9CiAJICAgIH0KICAgICB9CkBAIC0zNjc4LDYgKzM3MjMsMTEgQEAKIAkJICAgICpwID0gTlVMOwkvKiB0cnVuY2F0ZSBhdCAiLmVuY29kaW5nLmFkZCIgKi8KIAkgICAgfQogCSAgICBscCA9IHNwZWxsX2xvYWRfZmlsZShzcGZfbmFtZSwgbGFuZywgTlVMTCwgVFJVRSk7CisKKwkgICAgLyogSWYgb25lIG9mIHRoZSBsYW5ndWFnZXMgaGFzIE5PQlJFQUsgd2UgYXNzdW1lIHRoZSBhZGRpdGlvbgorCSAgICAgKiBmaWxlcyBhbHNvIGhhdmUgdGhpcy4gKi8KKwkgICAgaWYgKGxwICE9IE5VTEwgJiYgbm9icmVhaykKKwkJbHAtPnNsX25vYnJlYWsgPSBUUlVFOwogCX0KIAlpZiAobHAgIT0gTlVMTCAmJiBnYV9ncm93KCZnYSwgMSkgPT0gT0spCiAJewpAQCAtNTIyOSw4ICs1Mjc5LDYgQEAKIAlTVFJDUFkocCwgc3Bpbi0+c2lfY29tcGZsYWdzKTsKIAlTVFJDQVQocCwgIi8iKTsKICAgICB9Ci0gICAgZWxzZQotCSpwID0gTlVMOwogICAgIHNwaW4tPnNpX2NvbXBmbGFncyA9IHA7CiAgICAgdHAgPSBwICsgU1RSTEVOKHApOwogCkBAIC03NzAzLDM3ICs3NzUxLDU1IEBACiAgICAgY2hhcl91CSpmbmFtZTsKICAgICBjaGFyX3UJKnJ0cDsKICAgICBjaGFyX3UJKmxlbmQ7CisgICAgaW50CQlhc3BhdGggPSBGQUxTRTsKKyAgICBjaGFyX3UJKmxzdGFydCA9IGN1cmJ1Zi0+Yl9wX3NwbDsKIAogICAgIGlmICgqY3VyYnVmLT5iX3Bfc3BsICE9IE5VTCAmJiBjdXJidWYtPmJfbGFuZ3AuZ2FfbGVuID4gMCkKICAgICB7Ci0JLyogRmluZCB0aGUgZW5kIG9mIHRoZSBsYW5ndWFnZSBuYW1lLiAgRXhjbHVkZSB0aGUgcmVnaW9uLiAqLworCS8qIEZpbmQgdGhlIGVuZCBvZiB0aGUgbGFuZ3VhZ2UgbmFtZS4gIEV4Y2x1ZGUgdGhlIHJlZ2lvbi4gIElmIHRoZXJlCisJICogaXMgYSBwYXRoIHNlcGFyYXRvciByZW1lbWJlciB0aGUgc3RhcnQgb2YgdGhlIHRhaWwuICovCiAJZm9yIChsZW5kID0gY3VyYnVmLT5iX3Bfc3BsOyAqbGVuZCAhPSBOVUwKIAkJCSYmIHZpbV9zdHJjaHIoKGNoYXJfdSAqKSIsLl8iLCAqbGVuZCkgPT0gTlVMTDsgKytsZW5kKQotCSAgICA7CisJICAgIGlmICh2aW1faXNwYXRoc2VwKCpsZW5kKSkKKwkgICAgeworCQlhc3BhdGggPSBUUlVFOworCQlsc3RhcnQgPSBsZW5kICsgMTsKKwkgICAgfQogCiAJLyogTG9vcCBvdmVyIGFsbCBlbnRyaWVzIGluICdydW50aW1lcGF0aCcuICBVc2UgdGhlIGZpcnN0IG9uZSB3aGVyZSB3ZQogCSAqIGFyZSBhbGxvd2VkIHRvIHdyaXRlLiAqLwogCXJ0cCA9IHBfcnRwOwogCXdoaWxlICgqcnRwICE9IE5VTCkKIAl7Ci0JICAgIC8qIENvcHkgdGhlIHBhdGggZnJvbSAncnVudGltZXBhdGgnIHRvIGJ1ZltdLiAqLwotCSAgICBjb3B5X29wdGlvbl9wYXJ0KCZydHAsIGJ1ZiwgTUFYUEFUSEwsICIsIik7CisJICAgIGlmIChhc3BhdGgpCisJCS8qIFVzZSBkaXJlY3Rvcnkgb2YgYW4gZW50cnkgd2l0aCBwYXRoLCBlLmcuLCBmb3IKKwkJICogIi9kaXIvbGcudXRmLTguc3BsIiB1c2UgIi9kaXIiLiAqLworCQl2aW1fc3RybmNweShidWYsIGN1cmJ1Zi0+Yl9wX3NwbCwgbHN0YXJ0IC0gY3VyYnVmLT5iX3Bfc3BsIC0gMSk7CisJICAgIGVsc2UKKwkJLyogQ29weSB0aGUgcGF0aCBmcm9tICdydW50aW1lcGF0aCcgdG8gYnVmW10uICovCisJCWNvcHlfb3B0aW9uX3BhcnQoJnJ0cCwgYnVmLCBNQVhQQVRITCwgIiwiKTsKIAkgICAgaWYgKGZpbGV3cml0YWJsZShidWYpID09IDIpCiAJICAgIHsKIAkJLyogVXNlIHRoZSBmaXJzdCBsYW5ndWFnZSBuYW1lIGZyb20gJ3NwZWxsbGFuZycgYW5kIHRoZQogCQkgKiBlbmNvZGluZyB1c2VkIGluIHRoZSBmaXJzdCBsb2FkZWQgLnNwbCBmaWxlLiAqLwotCQlmbmFtZSA9IExBTkdQX0VOVFJZKGN1cmJ1Zi0+Yl9sYW5ncCwgMCktPmxwX3NsYW5nLT5zbF9mbmFtZTsKLQkJaWYgKGZuYW1lID09IE5VTEwpCi0JCSAgICBicmVhazsKKwkJaWYgKGFzcGF0aCkKKwkJICAgIHZpbV9zdHJuY3B5KGJ1ZiwgY3VyYnVmLT5iX3Bfc3BsLCBsZW5kIC0gY3VyYnVmLT5iX3Bfc3BsKTsKKwkJZWxzZQorCQl7CisJCSAgICBsID0gU1RSTEVOKGJ1Zik7CisJCSAgICB2aW1fc25wcmludGYoKGNoYXIgKilidWYgKyBsLCBNQVhQQVRITCAtIGwsCisJCQkJICIvc3BlbGwvJS4qcyIsIChpbnQpKGxlbmQgLSBsc3RhcnQpLCBsc3RhcnQpOworCQl9CiAJCWwgPSBTVFJMRU4oYnVmKTsKLQkJdmltX3NucHJpbnRmKChjaGFyICopYnVmICsgbCwgTUFYUEFUSEwgLSBsLAotCQkJIi9zcGVsbC8lLipzLiVzLmFkZCIsCi0JCQkoaW50KShsZW5kIC0gY3VyYnVmLT5iX3Bfc3BsKSwgY3VyYnVmLT5iX3Bfc3BsLAotCQkJc3Ryc3RyKChjaGFyICopZ2V0dGFpbChmbmFtZSksICIuYXNjaWkuIikgIT0gTlVMTAotCQkJCQkgICA/IChjaGFyX3UgKikiYXNjaWkiIDogc3BlbGxfZW5jKCkpOworCQlmbmFtZSA9IExBTkdQX0VOVFJZKGN1cmJ1Zi0+Yl9sYW5ncCwgMCktPmxwX3NsYW5nLT5zbF9mbmFtZTsKKwkJdmltX3NucHJpbnRmKChjaGFyICopYnVmICsgbCwgTUFYUEFUSEwgLSBsLCAiLiVzLmFkZCIsCisJCQlmbmFtZSAhPSBOVUxMCisJCQkgICYmIHN0cnN0cigoY2hhciAqKWdldHRhaWwoZm5hbWUpLCAiLmFzY2lpLiIpICE9IE5VTEwKKwkJCQkgICAgICAgPyAoY2hhcl91ICopImFzY2lpIiA6IHNwZWxsX2VuYygpKTsKIAkJc2V0X29wdGlvbl92YWx1ZSgoY2hhcl91ICopInNwZWxsZmlsZSIsIDBMLCBidWYsIE9QVF9MT0NBTCk7CiAJCWJyZWFrOwogCSAgICB9CisJICAgIGFzcGF0aCA9IEZBTFNFOwogCX0KICAgICB9CiB9CkBAIC05MjkzLDcgKzkzNTksNyBAQAogCQkJLyogRm9yIG11bHRpLWJ5dGUgY2hhcnMgY2hlY2sgY2hhcmFjdGVyIGxlbmd0aCBhZ2FpbnN0CiAJCQkgKiBDT01QT1VORE1JTi4gKi8KIAkJCWlmIChoYXNfbWJ5dGUKLQkJCQkmJiBzbGFuZy0+c2xfY29tcG1pbmxlbiA8IE1BWFdMRU4KKwkJCQkmJiBzbGFuZy0+c2xfY29tcG1pbmxlbiA+IDAKIAkJCQkmJiBtYl9jaGFybGVuKHR3b3JkICsgc3AtPnRzX3NwbGl0b2ZmKQogCQkJCQkJICAgICAgIDwgc2xhbmctPnNsX2NvbXBtaW5sZW4pCiAJCQkgICAgYnJlYWs7CkBAIC05NDMwLDcgKzk0OTYsNyBAQAogCQkJCQkJICAgICAgPj0gc2xhbmctPnNsX2NvbXBtaW5sZW4KICNpZmRlZiBGRUFUX01CWVRFCiAJCQkgICAgJiYgKCFoYXNfbWJ5dGUKLQkJCQl8fCBzbGFuZy0+c2xfY29tcG1pbmxlbiA9PSBNQVhXTEVOCisJCQkJfHwgc2xhbmctPnNsX2NvbXBtaW5sZW4gPT0gMAogCQkJCXx8IG1iX2NoYXJsZW4odHdvcmQgKyBzcC0+dHNfc3BsaXRvZmYpCiAJCQkJCQkgICAgICA+PSBzbGFuZy0+c2xfY29tcG1pbmxlbikKICNlbmRpZgpAQCAtOTQ3MCw3ICs5NTM2LDEyIEBACiAJCSAgICBpZiAoIXRyeV9jb21wb3VuZCAmJiAhZndvcmRfZW5kcykKIAkJICAgIHsKIAkJCS8qIElmIHdlJ3JlIGdvaW5nIHRvIHNwbGl0IG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUKLQkJCSAqIHdvcmRzIHNvIGZhciBhcmUgdmFsaWQgZm9yIGNvbXBvdW5kaW5nLiAqLworCQkJICogd29yZHMgc28gZmFyIGFyZSB2YWxpZCBmb3IgY29tcG91bmRpbmcuICBJZiB0aGVyZQorCQkJICogaXMgb25seSBvbmUgd29yZCBpdCBtdXN0IG5vdCBoYXZlIHRoZSBORUVEQ09NUE9VTkQKKwkJCSAqIGZsYWcuICovCisJCQlpZiAoc3AtPnRzX2NvbXBsZW4gPT0gc3AtPnRzX2NvbXBzcGxpdAorCQkJCQkJICAgICAmJiAoZmxhZ3MgJiBXRl9ORUVEQ09NUCkpCisJCQkgICAgYnJlYWs7CiAJCQlwID0gcHJld29yZDsKIAkJCXdoaWxlICgqc2tpcHRvd2hpdGUocCkgIT0gTlVMKQogCQkJICAgIHAgPSBza2lwd2hpdGUoc2tpcHRvd2hpdGUocCkpOwpAQCAtOTU3Niw3ICs5NjQ3LDExIEBACiAJICAgIGNhc2UgU1RBVEVfRU5ETlVMOgogCQkvKiBQYXN0IHRoZSBOVUwgYnl0ZXMgaW4gdGhlIG5vZGUuICovCiAJCXN1LT5zdV9iYWRmbGFncyA9IHNwLT50c19zYXZlX2JhZGZsYWdzOwotCQlpZiAoZndvcmRbc3AtPnRzX2ZpZHhdID09IE5VTCkKKwkJaWYgKGZ3b3JkW3NwLT50c19maWR4XSA9PSBOVUwKKyNpZmRlZiBGRUFUX01CWVRFCisJCQkmJiBzcC0+dHNfdGNoYXJsZW4gPT0gMAorI2VuZGlmCisJCSAgICkKIAkJewogCQkgICAgLyogVGhlIGJhZHdvcmQgZW5kcywgY2FuJ3QgdXNlIHRoZSBieXRlcyBpbiB0aGlzIG5vZGUuICovCiAJCSAgICBzcC0+dHNfc3RhdGUgPSBTVEFURV9ERUw7CmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0NTguaW4gYi9zcmMvdGVzdGRpci90ZXN0NTguaW4KaW5kZXggOGJiNThiZi4uYjM5MDJmMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdDU4LmluCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3Q1OC5pbgpAQCAtOTMsNiArOTMsOSBAQAogOiIgQ29tcG91bmQgd29yZHMKIDpjYWxsIFRlc3RPbmUoJzMnLCAnMycpCiA6Y2FsbCBUZXN0T25lKCc0JywgJzQnKQorOmNhbGwgVGVzdE9uZSgnNScsICc1JykKKzpjYWxsIFRlc3RPbmUoJzYnLCAnNicpCis6Y2FsbCBUZXN0T25lKCc3JywgJzcnKQogOiIKIGdnOi9edGVzdCBvdXRwdXQ6Lywkd3EhIHRlc3Qub3V0CiBFTkRURVNUCkBAIC00NzQsNCArNDc3LDEyMyBAQAogIAlzdGFydHdvcmR3b3Jkd29yZHdvcmRlbmQgYm9ya3ByZWJvcmtwcmVib3JrYm9yawogYmFkZW5kCiAKK1Rlc3QgYWZmaXggZmxhZ3Mgd2l0aCB0d28gY2hhcmFjdGVycworCis1YWZmc3RhcnQKK1NFVCBJU084ODU5LTEKKworRkxBRyBsb25nCisKK05FRURBRkZJWCAhIQorCitDT01QT1VOREZMQUdTIHNzbW0qZWUKKworTkVFRENPTVBPVU5EIHh4CisKK1NGWCAxMyBZIDEKK1NGWCAxMyAwIGJvcmsgLgorCitTRlggYTEgWSAxCitTRlggYTEgMCBhMSAuCisKK1NGWCBh6SBZIDEKK1NGWCBh6SAwIGHpIC4KKworUEZYIHp6IFkgMQorUEZYIHp6IDAgcHJlIC4KKzVhZmZlbmQKKworNWRpY3N0YXJ0CisxMjM0Citmb28vYTFh6SEhCitiYXIvenoxM2VlCitzdGFydC9zcworZW5kL2VlCittaWRkbGUvbW14eAorNWRpY2VuZAorCis1Z29vZDogZm9vYTEgZm9vYekgYmFyIHByZWJhciBiYXJib3JrIHByZWJhcmJvcmsgIHN0YXJ0cHJlYmFyCisgICAgICBzdGFydCBlbmQgc3RhcnRlbmQgIHN0YXJ0bWlkZGxlZW5kCitiYWQ6IGZvbyBmb29hMiBwcmFiYXIgcHJvYmFyYmlyayBtaWRkbGUgc3RhcnRtaWRkbGUgbWlkZGxlZW5kIGVuZHN0YXJ0CisJc3RhcnRwcm9iYXIKK2JhZGVuZAorCis2YWZmc3RhcnQKK1NFVCBJU084ODU5LTEKKworRkxBRyBjYXBsb25nCisKK05FRURBRkZJWCBBIQorCitDT01QT1VOREZMQUdTIHNNbSpFZQorCitORUVEQ09NUE9VTkQgWHgKKworU0ZYIE4zIFkgMQorU0ZYIE4zIDAgYm9yayAuCisKK1NGWCBBMSBZIDEKK1NGWCBBMSAwIGExIC4KKworU0ZYIEHpIFkgMQorU0ZYIEHpIDAgYekgLgorCitQRlggWnogWSAxCitQRlggWnogMCBwcmUgLgorNmFmZmVuZAorCis2ZGljc3RhcnQKKzEyMzQKK21lZS9BMUHpQSEKK2Jhci9aek4zRWUKK2xlYWQvcworZW5kL0VlCittaWRkbGUvTW1YeAorNmRpY2VuZAorCis2Z29vZDogbWVlYTEgbWVlYekgYmFyIHByZWJhciBiYXJib3JrIHByZWJhcmJvcmsgIGxlYWRwcmViYXIKKyAgICAgIGxlYWQgZW5kIGxlYWRlbmQgIGxlYWRtaWRkbGVlbmQKK2JhZDogbWVlIG1lZWEyIHByYWJhciBwcm9iYXJiaXJrIG1pZGRsZSBsZWFkbWlkZGxlIG1pZGRsZWVuZCBlbmRsZWFkCisJbGVhZHByb2JhcgorYmFkZW5kCisKKzdhZmZzdGFydAorU0VUIElTTzg4NTktMQorCitGTEFHIG51bQorCitORUVEQUZGSVggOTk5OQorCitDT01QT1VOREZMQUdTIDIsNzcqMTIzCisKK05FRURDT01QT1VORCAxCisKK1NGWCA2MTAwMyBZIDEKK1NGWCA2MTAwMyAwIG1lYXQgLgorCitTRlggMzkxIFkgMQorU0ZYIDM5MSAwIGExIC4KKworU0ZYIDExMSBZIDEKK1NGWCAxMTEgMCBh6SAuCisKK1BGWCAxNyBZIDEKK1BGWCAxNyAwIHByZSAuCis3YWZmZW5kCisKKzdkaWNzdGFydAorMTIzNAorbWVlLzM5MSwxMTEsOTk5OQorYmFyLzE3LDYxMDAzLDEyMworbGVhZC8yCit0YWlsLzEyMworbWlkZGxlLzc3LDEKKzdkaWNlbmQKKworN2dvb2Q6IG1lZWExIG1lZWHpIGJhciBwcmViYXIgYmFybWVhdCBwcmViYXJtZWF0ICBsZWFkcHJlYmFyCisgICAgICBsZWFkIHRhaWwgbGVhZHRhaWwgIGxlYWRtaWRkbGV0YWlsCitiYWQ6IG1lZSBtZWVhMiBwcmFiYXIgcHJvYmFybWFhdCBtaWRkbGUgbGVhZG1pZGRsZSBtaWRkbGV0YWlsIHRhaWxsZWFkCisJbGVhZHByb2JhcgorYmFkZW5kCisKIHRlc3Qgb3V0cHV0OgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdDU4Lm9rIGIvc3JjL3Rlc3RkaXIvdGVzdDU4Lm9rCmluZGV4IDY3ZjFmOWMuLjlmYmE2YmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3Q1OC5vaworKysgYi9zcmMvdGVzdGRpci90ZXN0NTgub2sKQEAgLTEwNSwxOSArMTA1LDE5IEBACiBmb29t7wogWydmb28gbe8nLCAnZm9vJywgJ2Zvb2ZvbyddCiBiYXJt7wotWydiYXIgbe8nLCAnYmFyZm9vJywgJ2JhcmJhciddCitbJ2JhcmZvbycsICdiYXJiYXInLCAnbe8nXQogbe9mb28KIFsnbe8gZm9vJywgJ2ZvbycsICdmb29mb28nXQogbe9iYXIKIFsnZm9vYmFyJywgJ2JhcmJhcicsICdt7yddCiBt723vCi1bJ23vIG3vJywgJ23vJywgJ2xhIG3vJ10KK1snbe8gbe8nLCAnbe8nXQogbGFsYQotWydsYSBt7yddCitbXQogbe9sYQogWydt7ycsICdt7yBt7yddCiBsYW3vCi1bJ2xhIG3vJywgJ23vJywgJ23vIG3vJ10KK1snbe8nLCAnbe8gbe8nXQogZm9vbGEKIFsnZm9vJywgJ2Zvb2JhcicsICdmb29mb28nXQogbGFiYXIKQEAgLTE2MCwzICsxNjAsOTkgQEAKIFsnc3RhcnR3b3Jkd29yZHdvcmR3b3JkIGVuZCcsICdzdGFydHdvcmR3b3Jkd29yZHdvcmQnLCAnc3RhcnQgd29yZHdvcmR3b3Jkd29yZCBlbmQnXQogYm9ya3ByZWJvcmtwcmVib3JrYm9yawogWydib3JrcHJlYm9ya3ByZWJvcmsgYm9yaycsICdib3JrcHJlYm9yayBwcmVib3JrYm9yaycsICdib3JrIHByZWJvcmtwcmVib3JrYm9yayddCisKK3Rlc3QgNS01CisjIGZpbGU6IFh0ZXN0LmxhdGluMS5zcGwKK2JhcgorYmFyYm9yaworZW5kCitmb29hMQorZm9vYekKK3ByZWJhcgorcHJlYmFyYm9yaworc3RhcnQKKy0tLS0tLS0KK2JhZAorWydiYXInLCAnZW5kJywgJ2Zvb2ExJ10KK2ZvbworWydmb29hMScsICdmb29h6ScsICdiYXInXQorZm9vYTIKK1snZm9vYTEnLCAnZm9vYeknLCAnYmFyJ10KK3ByYWJhcgorWydwcmViYXInLCAnYmFyJywgJ2JhciBiYXInXQorcHJvYmFyYmlyaworWydwcmViYXJib3JrJ10KK21pZGRsZQorW10KK3N0YXJ0bWlkZGxlCitbJ3N0YXJ0bWlkZGxlZW5kJ10KK21pZGRsZWVuZAorW10KK2VuZHN0YXJ0CitbJ2VuZCBzdGFydCcsICdzdGFydCddCitzdGFydHByb2JhcgorWydzdGFydHByZWJhcicsICdzdGFydCBwcmViYXInLCAnc3RhcnRiYXInXQorCit0ZXN0IDYtNgorIyBmaWxlOiBYdGVzdC5sYXRpbjEuc3BsCitiYXIKK2JhcmJvcmsKK2VuZAorbGVhZAorbWVlYTEKK21lZWHpCitwcmViYXIKK3ByZWJhcmJvcmsKKy0tLS0tLS0KK2JhZAorWydiYXInLCAnZW5kJywgJ2xlYWQnXQorbWVlCitbJ21lZWExJywgJ21lZWHpJywgJ2JhciddCittZWVhMgorWydtZWVhMScsICdtZWVh6ScsICdsZWFkJ10KK3ByYWJhcgorWydwcmViYXInLCAnbGVhZGJhcicsICdiYXInXQorcHJvYmFyYmlyaworWydwcmViYXJib3JrJ10KK21pZGRsZQorW10KK2xlYWRtaWRkbGUKK1snbGVhZG1pZGRsZWVuZCddCittaWRkbGVlbmQKK1tdCitlbmRsZWFkCitbJ2VuZCBsZWFkJywgJ2xlYWQnLCAnZW5kIGVuZCddCitsZWFkcHJvYmFyCitbJ2xlYWRwcmViYXInLCAnbGVhZCBwcmViYXInLCAnbGVhZGJhciddCisKK3Rlc3QgNy03CisjIGZpbGU6IFh0ZXN0LmxhdGluMS5zcGwKK2JhcgorYmFybWVhdAorbGVhZAorbWVlYTEKK21lZWHpCitwcmViYXIKK3ByZWJhcm1lYXQKK3RhaWwKKy0tLS0tLS0KK2JhZAorWydiYXInLCAnbGVhZCcsICd0YWlsJ10KK21lZQorWydtZWVhMScsICdtZWVh6ScsICdiYXInXQorbWVlYTIKK1snbWVlYTEnLCAnbWVlYeknLCAnbGVhZCddCitwcmFiYXIKK1sncHJlYmFyJywgJ2xlYWRiYXInLCAnYmFyJ10KK3Byb2Jhcm1hYXQKK1sncHJlYmFybWVhdCddCittaWRkbGUKK1tdCitsZWFkbWlkZGxlCitbXQorbWlkZGxldGFpbAorW10KK3RhaWxsZWFkCitbJ3RhaWwgbGVhZCcsICd0YWlsJ10KK2xlYWRwcm9iYXIKK1snbGVhZHByZWJhcicsICdsZWFkIHByZWJhcicsICdsZWFkYmFyJ10KZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3Q1OS5pbiBiL3NyYy90ZXN0ZGlyL3Rlc3Q1OS5pbgppbmRleCBhYWI0OGFlLi5hMmRjYzg5IDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci90ZXN0NTkuaW4KKysrIGIvc3JjL3Rlc3RkaXIvdGVzdDU5LmluCkBAIC05Nyw2ICs5Nyw5IEBACiA6IiBDb21wb3VuZCB3b3JkcwogOmNhbGwgVGVzdE9uZSgnMycsICczJykKIDpjYWxsIFRlc3RPbmUoJzQnLCAnNCcpCis6Y2FsbCBUZXN0T25lKCc1JywgJzUnKQorOmNhbGwgVGVzdE9uZSgnNicsICc2JykKKzpjYWxsIFRlc3RPbmUoJzcnLCAnNycpCiA6IgogZ2c6L150ZXN0IG91dHB1dDovLCR3cSEgdGVzdC5vdXQKIEVORFRFU1QKQEAgLTQ3OCw0ICs0ODEsMTI3IEBACiB0ZXN0MjoKIGVsZXF1aW50IHRlc3QgZWxla3dpbnQgdGVzdCBlbGVrd2VudCBhc2RmCiAKK1Rlc3QgYWZmaXggZmxhZ3Mgd2l0aCB0d28gY2hhcmFjdGVycworCis1YWZmc3RhcnQKK1NFVCBJU084ODU5LTEKKworRkxBRyBsb25nCisKK05FRURBRkZJWCAhIQorCitDT01QT1VOREZMQUdTIHNzbW0qZWUKKworTkVFRENPTVBPVU5EIHh4CisKK1NGWCAxMyBZIDEKK1NGWCAxMyAwIGJvcmsgLgorCitTRlggYTEgWSAxCitTRlggYTEgMCBhMSAuCisKK1NGWCBh6SBZIDEKK1NGWCBh6SAwIGHpIC4KKworUEZYIHp6IFkgMQorUEZYIHp6IDAgcHJlIC4KKzVhZmZlbmQKKworNWRpY3N0YXJ0CisxMjM0Citmb28vYTFh6SEhCitiYXIvenoxM2VlCitzdGFydC9zcworZW5kL2VlCittaWRkbGUvbW14eAorNWRpY2VuZAorCis1Z29vZDogZm9vYTEgZm9vYcOpIGJhciBwcmViYXIgYmFyYm9yayBwcmViYXJib3JrICBzdGFydHByZWJhcgorICAgICAgc3RhcnQgZW5kIHN0YXJ0ZW5kICBzdGFydG1pZGRsZWVuZAorYmFkOiBmb28gZm9vYTIgcHJhYmFyIHByb2JhcmJpcmsgbWlkZGxlIHN0YXJ0bWlkZGxlIG1pZGRsZWVuZCBlbmRzdGFydAorCXN0YXJ0cHJvYmFyCitiYWRlbmQKKworNmFmZnN0YXJ0CitTRVQgSVNPODg1OS0xCisKK0ZMQUcgY2FwbG9uZworCitORUVEQUZGSVggQSEKKworQ09NUE9VTkRGTEFHUyBzTW0qRWUKKworTkVFRENPTVBPVU5EIFh4CisKK1NGWCBOMyBZIDEKK1NGWCBOMyAwIGJvcmsgLgorCitTRlggQTEgWSAxCitTRlggQTEgMCBhMSAuCisKK1NGWCBB6SBZIDEKK1NGWCBB6SAwIGHpIC4KKworUEZYIFp6IFkgMQorUEZYIFp6IDAgcHJlIC4KKzZhZmZlbmQKKworNmRpY3N0YXJ0CisxMjM0CittZWUvQTFB6UEhCitiYXIvWnpOM0VlCitsZWFkL3MKK2VuZC9FZQorbWlkZGxlL01tWHgKKzZkaWNlbmQKKworNmdvb2Q6IG1lZWExIG1lZWHDqSBiYXIgcHJlYmFyIGJhcmJvcmsgcHJlYmFyYm9yayAgbGVhZHByZWJhcgorICAgICAgbGVhZCBlbmQgbGVhZGVuZCAgbGVhZG1pZGRsZWVuZAorYmFkOiBtZWUgbWVlYTIgcHJhYmFyIHByb2JhcmJpcmsgbWlkZGxlIGxlYWRtaWRkbGUgbWlkZGxlZW5kIGVuZGxlYWQKKwlsZWFkcHJvYmFyCitiYWRlbmQKKworN2FmZnN0YXJ0CitTRVQgSVNPODg1OS0xCisKK0ZPTCAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KK0xPVyAg4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb4+fr7/P3+3/8KK1VQUCAgwMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbY2drb3N3e3/8KKworRkxBRyBudW0KKworTkVFREFGRklYIDk5OTkKKworQ09NUE9VTkRGTEFHUyAyLDc3KjEyMworCitORUVEQ09NUE9VTkQgMQorCitTRlggNjEwMDMgWSAxCitTRlggNjEwMDMgMCBtZWF0IC4KKworU0ZYIDM5MSBZIDEKK1NGWCAzOTEgMCBhMSAuCisKK1NGWCAxMTEgWSAxCitTRlggMTExIDAgYekgLgorCitQRlggMTcgWSAxCitQRlggMTcgMCBwcmUgLgorN2FmZmVuZAorCis3ZGljc3RhcnQKKzEyMzQKK21lZS8zOTEsMTExLDk5OTkKK2Jhci8xNyw2MTAwMywxMjMKK2xlYWQvMgordGFpbC8xMjMKK21pZGRsZS83NywxCis3ZGljZW5kCisKKzdnb29kOiBtZWVhMSBtZWVhw6kgYmFyIHByZWJhciBiYXJtZWF0IHByZWJhcm1lYXQgIGxlYWRwcmViYXIKKyAgICAgIGxlYWQgdGFpbCBsZWFkdGFpbCAgbGVhZG1pZGRsZXRhaWwKK2JhZDogbWVlIG1lZWEyIHByYWJhciBwcm9iYXJtYWF0IG1pZGRsZSBsZWFkbWlkZGxlIG1pZGRsZXRhaWwgdGFpbGxlYWQKKwlsZWFkcHJvYmFyCitiYWRlbmQKKwogdGVzdCBvdXRwdXQ6CmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0NTkub2sgYi9zcmMvdGVzdGRpci90ZXN0NTkub2sKaW5kZXggZTA5ZWFhYy4uYzM3ZWNiOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdDU5Lm9rCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3Q1OS5vawpAQCAtMTAxLDIzICsxMDEsMjMgQEAKIGJhcgogWydmb29iYXInLCAnZm9vJywgJ23DryddCiBsYQotWydmb28nLCAnbcOvJ10KK1snbcOvJywgJ2ZvbyddCiBmb29tw68KIFsnZm9vIG3DrycsICdmb28nLCAnZm9vZm9vJ10KIGJhcm3DrwotWydiYXIgbcOvJywgJ2JhcmZvbycsICdiYXJiYXInXQorWydiYXJmb28nLCAnYmFyYmFyJywgJ23DryddCiBtw69mb28KIFsnbcOvIGZvbycsICdmb28nLCAnZm9vZm9vJ10KIG3Dr2JhcgogWydmb29iYXInLCAnYmFyYmFyJywgJ23DryddCiBtw69tw68KLVsnbcOvIG3DrycsICdtw68nLCAnbGEgbcOvJ10KK1snbcOvIG3DrycsICdtw68nXQogbGFsYQogW10KIG3Dr2xhCi1bJ23DryddCitbJ23DrycsICdtw68gbcOvJ10KIGxhbcOvCi1bJ2xhIG3DrycsICdtw68nLCAnbcOvIG3DryddCitbJ23DrycsICdtw68gbcOvJ10KIGZvb2xhCiBbJ2ZvbycsICdmb29iYXInLCAnZm9vZm9vJ10KIGxhYmFyCkBAIC0xNjAsMyArMTYwLDk5IEBACiBbJ3N0YXJ0d29yZHdvcmR3b3Jkd29yZCBlbmQnLCAnc3RhcnR3b3Jkd29yZHdvcmR3b3JkJywgJ3N0YXJ0IHdvcmR3b3Jkd29yZHdvcmQgZW5kJ10KIGJvcmtwcmVib3JrcHJlYm9ya2JvcmsKIFsnYm9ya3ByZWJvcmtwcmVib3JrIGJvcmsnLCAnYm9ya3ByZWJvcmsgcHJlYm9ya2JvcmsnLCAnYm9yayBwcmVib3JrcHJlYm9ya2JvcmsnXQorCit0ZXN0IDUtNQorIyBmaWxlOiBYdGVzdC51dGYtOC5zcGwKK2JhcgorYmFyYm9yaworZW5kCitmb29hMQorZm9vYcOpCitwcmViYXIKK3ByZWJhcmJvcmsKK3N0YXJ0CistLS0tLS0tCitiYWQKK1snYmFyJywgJ2VuZCcsICdmb29hMSddCitmb28KK1snZm9vYTEnLCAnZm9vYcOpJywgJ2JhciddCitmb29hMgorWydmb29hMScsICdmb29hw6knLCAnYmFyJ10KK3ByYWJhcgorWydwcmViYXInLCAnYmFyJywgJ2JhciBiYXInXQorcHJvYmFyYmlyaworWydwcmViYXJib3JrJ10KK21pZGRsZQorW10KK3N0YXJ0bWlkZGxlCitbJ3N0YXJ0bWlkZGxlZW5kJ10KK21pZGRsZWVuZAorW10KK2VuZHN0YXJ0CitbJ2VuZCBzdGFydCcsICdzdGFydCddCitzdGFydHByb2JhcgorWydzdGFydHByZWJhcicsICdzdGFydCBwcmViYXInLCAnc3RhcnRiYXInXQorCit0ZXN0IDYtNgorIyBmaWxlOiBYdGVzdC51dGYtOC5zcGwKK2JhcgorYmFyYm9yaworZW5kCitsZWFkCittZWVhMQorbWVlYcOpCitwcmViYXIKK3ByZWJhcmJvcmsKKy0tLS0tLS0KK2JhZAorWydiYXInLCAnZW5kJywgJ2xlYWQnXQorbWVlCitbJ21lZWExJywgJ21lZWHDqScsICdiYXInXQorbWVlYTIKK1snbWVlYTEnLCAnbWVlYcOpJywgJ2xlYWQnXQorcHJhYmFyCitbJ3ByZWJhcicsICdsZWFkYmFyJywgJ2JhciddCitwcm9iYXJiaXJrCitbJ3ByZWJhcmJvcmsnXQorbWlkZGxlCitbXQorbGVhZG1pZGRsZQorWydsZWFkbWlkZGxlZW5kJ10KK21pZGRsZWVuZAorW10KK2VuZGxlYWQKK1snZW5kIGxlYWQnLCAnbGVhZCcsICdlbmQgZW5kJ10KK2xlYWRwcm9iYXIKK1snbGVhZHByZWJhcicsICdsZWFkIHByZWJhcicsICdsZWFkYmFyJ10KKwordGVzdCA3LTcKKyMgZmlsZTogWHRlc3QudXRmLTguc3BsCitiYXIKK2Jhcm1lYXQKK2xlYWQKK21lZWExCittZWVhw6kKK3ByZWJhcgorcHJlYmFybWVhdAordGFpbAorLS0tLS0tLQorYmFkCitbJ2JhcicsICdsZWFkJywgJ3RhaWwnXQorbWVlCitbJ21lZWExJywgJ21lZWHDqScsICdiYXInXQorbWVlYTIKK1snbWVlYTEnLCAnbWVlYcOpJywgJ2xlYWQnXQorcHJhYmFyCitbJ3ByZWJhcicsICdsZWFkYmFyJywgJ2JhciddCitwcm9iYXJtYWF0CitbJ3ByZWJhcm1lYXQnXQorbWlkZGxlCitbXQorbGVhZG1pZGRsZQorW10KK21pZGRsZXRhaWwKK1tdCit0YWlsbGVhZAorWyd0YWlsIGxlYWQnLCAndGFpbCddCitsZWFkcHJvYmFyCitbJ2xlYWRwcmViYXInLCAnbGVhZCBwcmViYXInLCAnbGVhZGJhciddCmRpZmYgLS1naXQgYS9zcmMvdmVyc2lvbi5oIGIvc3JjL3ZlcnNpb24uaAppbmRleCAyMzE3Yzg3Li4yZWE0NmFiIDEwMDY0NAotLS0gYS9zcmMvdmVyc2lvbi5oCisrKyBiL3NyYy92ZXJzaW9uLmgKQEAgLTM2LDUgKzM2LDUgQEAKICNkZWZpbmUgVklNX1ZFUlNJT05fTk9ET1QJInZpbTcwYWEiCiAjZGVmaW5lIFZJTV9WRVJTSU9OX1NIT1JUCSI3LjBhYSIKICNkZWZpbmUgVklNX1ZFUlNJT05fTUVESVVNCSI3LjBhYSBBTFBIQSIKLSNkZWZpbmUgVklNX1ZFUlNJT05fTE9ORwkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDUgQXVnIDI5KSIKLSNkZWZpbmUgVklNX1ZFUlNJT05fTE9OR19EQVRFCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNSBBdWcgMjksIGNvbXBpbGVkICIKKyNkZWZpbmUgVklNX1ZFUlNJT05fTE9ORwkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDUgQXVnIDMwKSIKKyNkZWZpbmUgVklNX1ZFUlNJT05fTE9OR19EQVRFCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNSBBdWcgMzAsIGNvbXBpbGVkICIK