ZGlmZiAtLWdpdCBhL3NyYy9HdmltRXh0L0d2aW1FeHQucmVnIGIvc3JjL0d2aW1FeHQvR3ZpbUV4dC5yZWcKaW5kZXggMmI4MDk1Ni4uZWQwZjVhZiAxMDA2NDQKLS0tIGEvc3JjL0d2aW1FeHQvR3ZpbUV4dC5yZWcKKysrIGIvc3JjL0d2aW1FeHQvR3ZpbUV4dC5yZWcKQEAgLTE1LDYgKzE1LDYgQEAKIFtIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcVmltXEd2aW1dCiAgICAicGF0aCI9Imd2aW0uZXhlIgogCi1bSEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFxWaW0gNy4wXQotICAgIkRpc3BsYXlOYW1lIj0iVmltIDcuMDogRWRpdCB3aXRoIFZpbSBwb3B1cCBtZW51IGVudHJ5IgorW0hLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcVmltIDcuMWFdCisgICAiRGlzcGxheU5hbWUiPSJWaW0gNy4xYTogRWRpdCB3aXRoIFZpbSBwb3B1cCBtZW51IGVudHJ5IgogICAgIlVuaW5zdGFsbFN0cmluZyI9InVuaW5zdGFsLmV4ZSIKZGlmZiAtLWdpdCBhL3NyYy9pZl94Y21kc3J2LmMgYi9zcmMvaWZfeGNtZHNydi5jCmluZGV4IGVmNmUyNTcuLjM3NzRmZjQgMTAwNjQ0Ci0tLSBhL3NyYy9pZl94Y21kc3J2LmMKKysrIGIvc3JjL2lmX3hjbWRzcnYuYwpAQCAtMzcsOCArMzcsOCBAQAogIyBlbmRpZgogCiAvKgotICogVGhpcyBmaWxlIHByb3ZpZGVzIHByb2NlZHVyZXMgdGhhdCBpbXBsZW1lbnQgdGhlIGNvbW1hbmQgc2VydmVyIGZ1bmN0aW9uYWxpdHkKLSAqIG9mIFZpbSB3aGVuIGluIGNvbnRhY3Qgd2l0aCBhbiBYMTEgc2VydmVyLgorICogVGhpcyBmaWxlIHByb3ZpZGVzIHByb2NlZHVyZXMgdGhhdCBpbXBsZW1lbnQgdGhlIGNvbW1hbmQgc2VydmVyCisgKiBmdW5jdGlvbmFsaXR5IG9mIFZpbSB3aGVuIGluIGNvbnRhY3Qgd2l0aCBhbiBYMTEgc2VydmVyLgogICoKICAqIEFkYXB0ZWQgZnJvbSBUQ0wvVEsncyBzZW5kIGNvbW1hbmQgIGluIHRrU2VuZC5jIG9mIHRoZSB0ayAzLjYgZGlzdHJpYnV0aW9uLgogICogQWRhcHRlZCBmb3IgdXNlIGluIFZpbSBieSBGbGVtbWluZyBNYWRzZW4uIFByb3RvY29sIGNoYW5nZWQgdG8gdGhhdCBvZiB0ayA0CmRpZmYgLS1naXQgYS9zcmMva2V5bWFwLmggYi9zcmMva2V5bWFwLmgKaW5kZXggMzQ1MjFlNC4uMzc2YWM5YyAxMDA2NDQKLS0tIGEvc3JjL2tleW1hcC5oCisrKyBiL3NyYy9rZXltYXAuaApAQCAtMjI5LDcgKzIyOSw3IEBACiAgICAgLCBLRV9TX1hGNAogCiAgICAgLCBLRV9NT1VTRURPV04JLyogc2Nyb2xsIHdoZWVsIHBzZXVkby1idXR0b24gRG93biAqLwotICAgICwgS0VfTU9VU0VVUAkJLyogc2Nyb2xsIHdoZWVsIHBzZXVkby1idXR0b24gVXAgKi8KKyAgICAsIEtFX01PVVNFVVAJLyogc2Nyb2xsIHdoZWVsIHBzZXVkby1idXR0b24gVXAgKi8KIAogICAgICwgS0VfS0lOUwkJLyoga2V5cGFkIEluc2VydCBrZXkgKi8KICAgICAsIEtFX0tERUwJCS8qIGtleXBhZCBEZWxldGUga2V5ICovCmRpZmYgLS1naXQgYS9zcmMvbW92ZS5jIGIvc3JjL21vdmUuYwppbmRleCBjMGJiYWMyLi5mMjFmNWU5IDEwMDY0NAotLS0gYS9zcmMvbW92ZS5jCisrKyBiL3NyYy9tb3ZlLmMKQEAgLTE2Niw3ICsxNjYsNyBAQAogCiAjaWZkZWYgRkVBVF9NT1VTRQogICAgIC8qIFdoZW4gZHJhZ2dpbmcgd2l0aCB0aGUgbW91c2UsIGRvbid0IHNjcm9sbCB0aGF0IHF1aWNrbHkgKi8KLSAgICBpZiAobW91c2VfZHJhZ2dpbmcpCisgICAgaWYgKG1vdXNlX2RyYWdnaW5nID4gMCkKIAlwX3NvID0gbW91c2VfZHJhZ2dpbmcgLSAxOwogI2VuZGlmCiAKQEAgLTE5OTUsNyArMTk5NSw3IEBACiAJaWYgKCgoKHNjcm9sbGVkIDw9IDAgfHwgc2Nyb2xsZWQgPj0gbWluX3Njcm9sbCkKIAkJCSYmIGV4dHJhID49ICgKICNpZmRlZiBGRUFUX01PVVNFCi0JCQkgICAgbW91c2VfZHJhZ2dpbmcgPyBtb3VzZV9kcmFnZ2luZyAtIDEgOgorCQkJICAgIG1vdXNlX2RyYWdnaW5nID4gMCA/IG1vdXNlX2RyYWdnaW5nIC0gMSA6CiAjZW5kaWYKIAkJCSAgICBwX3NvKSkKIAkJICAgIHx8IGJvZmYubG51bSArIDEgPiBjdXJidWYtPmJfbWwubWxfbGluZV9jb3VudCkKQEAgLTIyMDksNyArMjIwOSw3IEBACiAgICAgYWJvdmVfd2FudGVkID0gcF9zbzsKICAgICBiZWxvd193YW50ZWQgPSBwX3NvOwogI2lmZGVmIEZFQVRfTU9VU0UKLSAgICBpZiAobW91c2VfZHJhZ2dpbmcpCisgICAgaWYgKG1vdXNlX2RyYWdnaW5nID4gMCkKICAgICB7CiAJYWJvdmVfd2FudGVkID0gbW91c2VfZHJhZ2dpbmcgLSAxOwogCWJlbG93X3dhbnRlZCA9IG1vdXNlX2RyYWdnaW5nIC0gMTsKQEAgLTIyMjUsNyArMjIyNSw3IEBACiAgICAgdmFsaWRhdGVfYm90bGluZSgpOwogICAgIGlmIChjdXJ3aW4tPndfYm90bGluZSA9PSBjdXJidWYtPmJfbWwubWxfbGluZV9jb3VudCArIDEKICNpZmRlZiBGRUFUX01PVVNFCi0JICAgICYmICFtb3VzZV9kcmFnZ2luZworCSAgICAmJiBtb3VzZV9kcmFnZ2luZyA9PSAwCiAjZW5kaWYKIAkgICAgKQogICAgIHsKZGlmZiAtLWdpdCBhL3NyYy9vc192bXMuYyBiL3NyYy9vc192bXMuYwppbmRleCBmODdhMWNkLi5hNjEyZDgxIDEwMDY0NAotLS0gYS9zcmMvb3Nfdm1zLmMKKysrIGIvc3JjL29zX3Ztcy5jCkBAIC02MjYsMTIgKzYyNiwxMyBAQAogCiAgICAgRnNwZWNfUm1zID0gYnVmOwkJCQkvKiBmb3IgZGVjYyR0b192bXMgKi8KIAotICAgIGlmICggc3RyY2hyKGluc3RyaW5nLCcvJykgPT0gTlVMTCApCisgICAgaWYgKHN0cmNocihpbnN0cmluZywnLycpID09IE5VTEwpCiAJLyogSXQgaXMgYWxyZWFkeSBhIFZNUyBmaWxlIHNwZWMgKi8KIAlzdHJjcHkoYnVmLCBpbnN0cmluZyk7Ci0gICAgZWxzZSBpZiAoIHN0cmNocihpbnN0cmluZywnIicpID09IE5VTEwgKXsgICAgIC8qIHBhc3N3b3JkIGluIHRoZSBwYXRoID8gICAqLworICAgIGVsc2UgaWYgKHN0cmNocihpbnN0cmluZywnIicpID09IE5VTEwpCS8qIHBhc3N3b3JkIGluIHRoZSBwYXRoPyAqLworICAgIHsKIAkvKiBTZWVtcyBpdCBpcyBhIHJlZ3VsYXIgZmlsZSwgbGV0IGd1ZXNzIHRoYXQgaXQgaXMgcHVyZSBVbml4IGZzcGVjICovCi0JaWYgKCBkZWNjJHRvX3ZtcyhpbnN0cmluZywgdm1zX2ZzcGVjX3Byb2MsIDAsIDApIDw9IDAgKQorCWlmIChkZWNjJHRvX3ZtcyhpbnN0cmluZywgdm1zX2ZzcGVjX3Byb2MsIDAsIDApIDw9IDApCiAJICAgIC8qIE5vLi4uIGl0IG11c3QgYmUgbWl4ZWQgKi8KIAkgICAgdm1zX3VuaXhfbWl4ZWRfZmlsZXNwZWMoaW5zdHJpbmcsIGJ1Zik7CiAgICAgfQpAQCAtNjQzLDYgKzY0NCw3IEBACiAKICAgICByZXR1cm4gYnVmOwogfQorCiAvKgogICogUmVtb3ZlIHZlcnNpb24gbnVtYmVyIGZyb20gZmlsZSBuYW1lCiAgKiB3ZSBuZWVkIGl0IGluIHNvbWUgc3BlY2lhbCBjYXNlcyBhczoKZGlmZiAtLWdpdCBhL3NyYy9wby9SRUFETUVfbXZjLnR4dCBiL3NyYy9wby9SRUFETUVfbXZjLnR4dAppbmRleCBjZDEwN2RlLi4yOTNlZGYyIDEwMDY0NAotLS0gYS9zcmMvcG8vUkVBRE1FX212Yy50eHQKKysrIGIvc3JjL3BvL1JFQURNRV9tdmMudHh0CkBAIC00LDcgKzQsNyBAQAogZ251LWdldHRleHQud2luMzIsIGEgV2luZG93cyBwb3J0IG9mIGdldHRleHQgYnkgRnJhbmNvIEJlegogPGZyYW5jby5iZXpAZ214LmRlPi4gIFlvdSBjYW4gZmluZCBpdCBhdDoKIAotCWh0dHA6Ly9ob21lLmEtY2l0eS5kZS9mcmFuY28uYmV6L2dldHRleHQvZ2V0dGV4dF93aW4zMl9lbi5odG1sCisJaHR0cDovL3Blb3BsZS5mcmVlbmV0LmRlL2ZyYW5jby5iZXovZ2V0dGV4dC9nZXR0ZXh0X3dpbjMyX2VuLmh0bWwKIAogRmlyc3QgcmVhZCB0aGUgUkVBRE1FLnR4dCBmaWxlIGluIHRoaXMgZGlyZWN0b3J5IGZvciBnZW5lcmFsIHJlbWFya3Mgb24KIHRyYW5zbGF0aW5nIFZpbSBtZXNzYWdlcy4KQEAgLTEyLDE4ICsxMiwzMiBAQAogCiBTRVRVUAogCi1TZXQgdGhlIGVudmlyb21lbnQgdmFyaWFibGUgTEFOR1VBR0UgdG8gdGhlIGxhbmd1YWdlIGNvZGUgZm9yIHRoZSBsYW5ndWFnZSB5b3UKLWFyZSB0cmFuc2xhdGluZyBWaW0gbWVzc2FnZXMgdG8uICBMYW5ndWFnZGUgY29kZXMgYXJlIHR5cGljYWxseSB0d28gY2hhcmFjdGVycwotYW5kIHlvdSBjYW4gZmluZCBhIGxpc3Qgb2YgdGhlbSBhdDoKK1NldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTEFOR1VBR0UgdG8gdGhlIGxhbmd1YWdlIGNvZGUgZm9yIHRoZSBsYW5ndWFnZQoreW91IGFyZSB0cmFuc2xhdGluZyBWaW0gbWVzc2FnZXMgdG8uICBMYW5ndWFnZSBjb2RlcyBhcmUgdHlwaWNhbGx5IHR3bworY2hhcmFjdGVycyBhbmQgeW91IGNhbiBmaW5kIGEgbGlzdCBvZiB0aGVtIGF0OgogCiAJaHR0cDovL3d3dy5nZW9jaXRpZXMuY29tL2NsaWNrMnNwZWFrL2xhbmd1YWdlcy5odG1sCiAKK0Fub3RoZXIgcG9zc2liaWxpdHkgaXMgdG8gdXNlIHRoZSBnbnV3aW4zMiBwb3J0IG9mIGdldHRleHQuIFRoaXMgaXMKK3JlY29tbWVuZGVkIGVzcGVjaWFsbHkgaWYgeW91IHVzZSBhbHJlYWR5IGdudXdpbjMyIHRvb2xzIHRvIGd1bnppcCwgYnVuemlwLAorcGF0Y2ggZXRjLiB0aGVzZSBmaWxlcy4gWW91IGZpbmQgdGhlIGdudXdpbjMyIHZlcnNpb24gb2YgZ2V0dGV4dCBoZXJlOgorCisgICAgICAgIGh0dHA6Ly9nbnV3aW4zMi5zb3VyY2Vmb3JnZS5uZXQvcGFja2FnZXMvZ2V0dGV4dC5odG0KKworWWV0IGFub3RoZXIgdmVyeSBzdHJhaXQgZm9yd2FyZCB3YXkgaXMgdG8gZ2V0IHRoZSBzb3VyY2VzIG9mIGdldHRleHQgZnJvbQorCisgICAgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZXR0ZXh0L2dldHRleHQuaHRtbAorCithbmQgYnVpbGQgeW91ciBvd24gdmVyc2lvbiBvZiB0aGVzZSB0b29scy4gVGhlIGRvY3VtZW50YXRpb24gc3RhdGVzIHRoYXQgdGhpcworc2hvdWxkIGJlIHBvc3NpYmxlIHdpdGggTVNWQzQuMCwgTVNWQzUuMCwgTVNWQzYuMCBvciBNU1ZDNy4wLCBidXQgeW91IGNhbgorYnVpbGQgaXQgZXZlbiBzdWNjZXNzZnVsbHkgd2l0aCBNU1ZDOC4wLgorCiBUaGUgTEFOR1VBR0UgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIGJlIHNldCBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ5IGFkZGluZwogYSBsaW5lIHRvIHlvdXIgYXV0b2V4ZWMuYmF0IGZpbGUsIG9yIGJ5IGRlZmluaW5nIGEgdXNlciB2YXJpYWJsZSBmcm9tIHRoZQogQWR2YW5jZWQgdGFiIGluIHRoZSBTeXN0ZW0gY29udHJvbCBwYW5lbC4KIAogTmV4dCwgZWRpdCBNYWtlX212Yy5tYWsgc28gdGhhdCBHRVRURVhUX1BBVEggcG9pbnRzIHRoZSBiaW5hcnkgZGlyZWN0b3J5IG9mCi10aGUgaW50YWxsYXRpb24uCit0aGUgaW5zdGFsbGF0aW9uLgogCiAKIENSRUFUSU5HIEEgTkVXIFRSQU5TTEFUSU9OCkBAIC00Myw3ICs1Nyw3IEBACiBZb3Ugd2lsbCBhbHNvIG5lZWQgdG8gZWRpdCB0aGUgZmlsZSBuYW1lcyBpbiB0aGUgY29tbWVudHMgaW4gdGhlIC5wbyBmaWxlLgogWW91IG5lZWQgdG8gcmVtb3ZlIHRoZSBhYnNvbHV0ZSBkaXJlY3Rvcnkgc3BlY2lmaWNhdGlvbiAod2hpY2ggaGFzIHRoZSBmb3JtCiBjOlx2aW02MVxzcmNcKS4gIFlvdSBjYW4gZG8gdGhpcyBpbiBWaW0gd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgd2l0aCB0aGUKLWFwcHJvcHJpYXRlIGRpcmVjdG9yeSBzcGVjZmljYXRpb24gZm9yIHdoZXJlIHlvdSBoYXZlIGluc3RhbGxlZCB0aGUgVmltCithcHByb3ByaWF0ZSBkaXJlY3Rvcnkgc3BlY2lmaWNhdGlvbiBmb3Igd2hlcmUgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSBWaW0KIHNvdXJjZToKIAogCSVzL2M6XFx2aW02MVxcc3JjXFwvL2cKQEAgLTU3LDcgKzcxLDcgQEAKIAogCW5tYWtlIC1mIE1ha2VfbXZjLm1hayB4eC5wbwogCi13aGVyZSB4eCBpcyB0aGUgbGFuZ2F1Z2UgY29kZSBmb3IgdGhlIGxhbmd1YWdlIG5lZWRpbmcgdHJhbnNsYXRpb25zLiAgVGhlCit3aGVyZSB4eCBpcyB0aGUgbGFuZ3VhZ2UgY29kZSBmb3IgdGhlIGxhbmd1YWdlIG5lZWRpbmcgdHJhbnNsYXRpb25zLiAgVGhlCiBvcmlnaW5hbCAucG8gZmlsZSBpcyBjb3BpZWQgdG8geHgucG8ub3JpZy4KIAogCmRpZmYgLS1naXQgYS9zcmMvcG8vZGUucG8gYi9zcmMvcG8vZGUucG8KaW5kZXggNDNmYmJlNy4uMTcxZGRjYSAxMDA2NDQKLS0tIGEvc3JjL3BvL2RlLnBvCisrKyBiL3NyYy9wby9kZS5wbwpAQCAtMTEsNyArMTEsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBWaW0oZGV1dHNjaClcbiIKICJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwNi0wNC0wMiAxMTozMCswMjAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAwNi0wNC0wMiAxNzoyNiswMjAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAwNi0wNi0xOCAxMjozNCswMjAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBHZW9yZyBEYWhuIDxnb3JneWRAeWFob28uY28udWs+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogR2VybWFuIDxkZUBsaS5vcmc+XG4iCiAiTUlNRS1WZXJzaW9uOiAxLjBcbiIKQEAgLTM1MDIsNyArMzUwMiw3IEBACiAiJlF1aXRcbiIKICImQWJvcnQiCiBtc2dzdHIgIiIKLSLWZmZuZW4gbnVyIHp1bSAmTGVzZW5cbiIKKyJOdXIgenVtICZMZXNlbiD2ZmZuZW5cbiIKICJUcm90emRlbSAmZWRpdGllcmVuXG4iCiAiJldpZWRlcmhlcnN0ZWxsZW5cbiIKICImQmVlbmRlblxuIgpAQCAtMzUxNiwxMCArMzUxNiwxMCBAQAogIiZRdWl0XG4iCiAiJkFib3J0IgogbXNnc3RyICIiCi0i1mZmbmVuIG51ciB6dW0gJkxlc2VuXG4iCisiTnVyIHp1bSAmTGVzZW4g9mZmbmVuXG4iCiAiVHJvdHpkZW0gJmVkaXRpZXJlblxuIgogIiZXaWVkZXJoZXJzdGVsbGVuXG4iCi0iJkz2c2NoZW5cbiIKKyImRGF0ZWkgTPZzY2hlblxuIgogIiZCZWVuZGVuXG4iCiAiJkFiYnJlY2hlbiIKIApAQCAtNjEzMSwzICs2MTMxLDUgQEAKICJEaWUgRGVmaW5pdGlvbiB2b24gQ09NUE9VTkRQRVJNSVRGTEFHIG5hY2ggZGVtIFBGWCBFbGVtZW50IGthbm4gZmFsc2NoZXMgRXJnZWJuaXMgaW4gWmVpbGUgJXMgZXJnZWJlbiAiCiAiJWQiCiAKK21zZ2lkICJFMTE2OiBJbnZhbGlkIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24gJXMiCittc2dzdHIgIkUxMTY6IFVuZ/xsdGlnZSBBcmd1bWVudGUgZvxyIGRpZSBGdW5rdGlvbiAlcyIKZGlmZiAtLWdpdCBhL3NyYy9wby9wbC5VVEYtOC5wbyBiL3NyYy9wby9wbC5VVEYtOC5wbwppbmRleCAzMDJmZjhjLi43NTI3MGNhIDEwMDY0NAotLS0gYS9zcmMvcG8vcGwuVVRGLTgucG8KKysrIGIvc3JjL3BvL3BsLlVURi04LnBvCkBAIC0xLDIyICsxLDIyIEBACiAjIHRyYW5zbGF0aW9uIG9mIHBsLnBvIHRvIFBvbGlzaAogIyBQb2xpc2ggVHJhbnNsYXRpb24gZm9yIFZpbQogIwotIyB1cGRhdGVkIDIwMDYgZm9yIHZpbS03LjAKKyMgdXBkYXRlZCAyMDA3IGZvciB2aW0tNy4wCiAjCiAjIEZJUlNUIEFVVEhPUiBNYXJjaW4gRGFsZWNraSA8bWFydGluQGRhbGVja2kuZGU+LCAyMDAwLgotIyBNaWtvbGFqIE1hY2hvd3NraSA8bWlrbWFjaEB3cC5wbD4sIDIwMDQsIDIwMDUsIDIwMDYuCisjIE1pa29sYWogTWFjaG93c2tpIDxtaWttYWNoQHdwLnBsPiwgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNy4KIG1zZ2lkICIiCiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IHBsXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA2LTA0LTI3IDE4OjI3KzAyMDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDA2LTA0LTI3IDE5OjE1KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwNy0wNC0zMCAyMDowMyswMjAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAwNy0wNC0zMCAyMDowNyswMjAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBNaWtvbGFqIE1hY2hvd3NraSA8bWlrbWFjaEB3cC5wbD5cbiIKICJMYW5ndWFnZS1UZWFtOiBQb2xpc2ggPGtkZS10cmFuc2xAbWVyLmNoZW1pYS5wb2xzbC5nbGl3aWNlLnBsPlxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04XG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgotIlgtR2VuZXJhdG9yOiBLQmFiZWwgMS4xMS4yXG4iCisiWC1HZW5lcmF0b3I6IEtCYWJlbCAxLjExLjRcbiIKIAogbXNnaWQgIkU4MjogQ2Fubm90IGFsbG9jYXRlIGFueSBidWZmZXIsIGV4aXRpbmcuLi4iCiBtc2dzdHIgIkU4MjogTmllIG1vZ8SZIHphcmV6ZXJ3b3dhxIcgYnVmb3JhOyB6YWtvxYRjemVuaWUuLi4iCkBAIC0xOTQsNiArMTk0LDkgQEAKIG1zZ2lkICJFOTk6IEN1cnJlbnQgYnVmZmVyIGlzIG5vdCBpbiBkaWZmIG1vZGUiCiBtc2dzdHIgIkU5OTogQmllxbzEhWN5IGJ1Zm9yIG5pZSBqZXN0IHcgdHJ5YmllIHLDs8W8bmljIgogCittc2dpZCAiRTc5MzogTm8gb3RoZXIgYnVmZmVyIGluIGRpZmYgbW9kZSBpcyBtb2RpZmlhYmxlIgorbXNnc3RyICJFNzkzOiDFu2FkZW4gaW5ueSBidWZvciB3IHRyeWJpZSBkaWZmIG5pZSBqZXN0IG1vZHlmaWtvd2FsbnkiCisKIG1zZ2lkICJFMTAwOiBObyBvdGhlciBidWZmZXIgaW4gZGlmZiBtb2RlIgogbXNnc3RyICJFMTAwOiBCcmFrIGlubmVnbyBidWZvcmEgdyB0cnliaWUgcsOzxbxuaWMiCiAKQEAgLTYxOSw2ICs2MjIsMTAgQEAKIG1zZ3N0ciAiRTcwNjogTmllcHJhd2lkxYJvd3kgdHlwIHptaWVubmVqIGRsYTogJXMiCiAKICMsIGMtZm9ybWF0Cittc2dpZCAiRTc5NTogQ2Fubm90IGRlbGV0ZSB2YXJpYWJsZSAlcyIKK21zZ3N0ciAiRTc5NTogTmllIG1vZ8SZIHVzdW7EhcSHIHptaWVubmVqICVzIgorCisjLCBjLWZvcm1hdAogbXNnaWQgIkU3NDE6IFZhbHVlIGlzIGxvY2tlZDogJXMiCiBtc2dzdHIgIkU3NDE6IFdhcnRvxZvEhyBqZXN0IHphYmxva293YW5hOiAlcyIKIApAQCAtODgzLDYgKzg5MCw3IEBACiBtc2dpZCAiIEZBSUxFRCIKIG1zZ3N0ciAiIE5JRSBQT1dJT0TFgU8gU0nEmCIKIAorIy4gYXZvaWQgYSB3YWl0X3JldHVybiBmb3IgdGhpcyBtZXNzYWdlLCBpdCdzIGFubm95aW5nCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxMzc6IFZpbWluZm8gZmlsZSBpcyBub3Qgd3JpdGFibGU6ICVzIgogbXNnc3RyICJFMTM3OiBQbGlrIHZpbWluZm8gamVzdCBuaWV6YXBpc3l3YWxueTogJXMiCkBAIC0xNDU3LDYgKzE0NjUsOSBAQAogbXNnaWQgImlzIG5vdCBhIGZpbGUiCiBtc2dzdHIgIm5pZSBqZXN0IHBsaWtpZW0iCiAKK21zZ2lkICJpcyBhIGRldmljZSAoZGlzYWJsZWQgd2l0aCAnb3BlbmRldmljZScgb3B0aW9uIgorbXNnc3RyICJqZXN0IHVyesSFZHplbmllbSAod3nFgsSFY3pvbnltIHcgb3BjamkgJ29wZW5kZXZpY2UnIgorCiBtc2dpZCAiW05ldyBGaWxlXSIKIG1zZ3N0ciAiW05vd3kgUGxpa10iCiAKQEAgLTE1NTMsNiArMTU2NCw5IEBACiBtc2dpZCAiaXMgbm90IGEgZmlsZSBvciB3cml0YWJsZSBkZXZpY2UiCiBtc2dzdHIgIm5pZSBqZXN0IHBsaWtpZW0gbHViIHphcGlzeXdhbG55bSBwcnp5cnrEhWRlbSIKIAorbXNnaWQgIndyaXRpbmcgdG8gZGV2aWNlIGRpc2FibGVkIHdpdGggJ29wZW5kZXZpY2UnIG9wdGlvbiIKK21zZ3N0ciAiemFwaXN5d2FuaWUgZG8gdXJ6xIVkemVuaWEgd3nFgsSFY3pvbmUgdyBvcGNqaSAnb3BlbmRldmljZSciCisKIG1zZ2lkICJpcyByZWFkLW9ubHkgKGFkZCAhIHRvIG92ZXJyaWRlKSIKIG1zZ3N0ciAiamVzdCB0eWxrbyBkbyBvZGN6eXR1ICh3eW11xZsgcG9wcnpleiAhKSIKIApAQCAtMzI4OCw2ICszMzAyLDkgQEAKICIsXG4iCiAibHViIHBsaWsgem9zdGHFgiB1c3prb2R6b255LiIKIAorbXNnaWQgIiBoYXMgYmVlbiBkYW1hZ2VkIChwYWdlIHNpemUgaXMgc21hbGxlciB0aGFuIG1pbmltdW0gdmFsdWUpLlxuIgorbXNnc3RyICIgem9zdGHFgiB1c3prb2R6b255ICh3aWVsa2/Fm8SHIHN0cm9ueSBqZXN0IG1uaWVqc3phIG5pxbwgbmFqbW5pZWpzemEgd2FydG/Fm8SHKS5cbiIKKwogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2luZyBzd2FwIGZpbGUgXCIlc1wiIgogbXNnc3RyICJVxbx5d2FtIHBsaWt1IHd5bWlhbnkgXCIlc1wiIgpAQCAtMzYyNiw2ICszNjQzLDEwIEBACiBtc2dpZCAiRTMyOTogTm8gbWVudSBcIiVzXCIiCiBtc2dzdHIgIkUzMjk6IE5pZSBtYSBtZW51IFwiJXNcIiIKIAorIy4gT25seSBhIG1uZW1vbmljIG9yIGFjY2VsZXJhdG9yIGlzIG5vdCB2YWxpZC4KK21zZ2lkICJFNzkyOiBFbXB0eSBtZW51IG5hbWUiCittc2dzdHIgIkU3OTI6IFB1c3RhIG5hendhIG1lbnUiCisKIG1zZ2lkICJFMzMwOiBNZW51IHBhdGggbXVzdCBub3QgbGVhZCB0byBhIHN1Yi1tZW51IgogbXNnc3RyICJFMzMwOiBUcm9wIG1lbnUgbmllIG1vxbxlIHByb3dhZHppxIcgZG8gcG9kbWVudSIKIApAQCAtNDk5OSw2ICs1MDIwLDcgQEAKIG1zZ2lkICJTb3JyeSwgb25seSAlbGQgc3VnZ2VzdGlvbnMiCiBtc2dzdHIgIlByenlrcm8gbWksIHR5bGtvICVsZCBwb2Rwb3dpZWR6aSIKIAorIy4gZm9yIHdoZW4gJ2NtZGhlaWdodCcgPiAxCiAjLiBhdm9pZCBtb3JlIHByb21wdAogIywgYy1mb3JtYXQKIG1zZ2lkICJDaGFuZ2UgXCIlLipzXCIgdG86IgpAQCAtNTQyMyw2ICs1NDQ1LDEzIEBACiAKIG1zZ2lkICIiCiAiXG4iCisiTVMtV2luZG93cyA2NCBiaXQgR1VJIHZlcnNpb24iCittc2dzdHIgIiIKKyJcbiIKKyI2NCBiaXRvd2Egd2Vyc2phIEdVSSBkbGEgTVMtV2luZG93cyIKKworbXNnaWQgIiIKKyJcbiIKICJNUy1XaW5kb3dzIDMyIGJpdCBHVUkgdmVyc2lvbiIKIG1zZ3N0ciAiIgogIlxuIgpAQCAtNjAxNiw4ICs2MDQ1LDggQEAKIG1zZ3N0ciAiRTQ2OiBOaWUgbW9nxJkgem1pZW5pxIcgem1pZW5uZWogdHlsa28gZG8gb2Rjenl0dSBcIiVzXCIiCiAKICMsIGMtZm9ybWF0Ci1tc2dpZCAiRTQ2OiBDYW5ub3Qgc2V0IHZhcmlhYmxlIGluIHRoZSBzYW5kYm94OiBcIiVzXCIiCi1tc2dzdHIgIkU0NjogTmllIG1vZ8SZIHVzdGF3acSHIHptaWVubmVqIHcgcGlhc2tvd25pY3k6IFwiJXNcIiIKK21zZ2lkICJFNzk0OiBDYW5ub3Qgc2V0IHZhcmlhYmxlIGluIHRoZSBzYW5kYm94OiBcIiVzXCIiCittc2dzdHIgIkU3OTQ6IE5pZSBtb2fEmSB1c3Rhd2nEhyB6bWllbm5laiB3IHBpYXNrb3duaWN5OiBcIiVzXCIiCiAKIG1zZ2lkICJFNDc6IEVycm9yIHdoaWxlIHJlYWRpbmcgZXJyb3JmaWxlIgogbXNnc3RyICJFNDc6IELFgsSFZCB3IHRyYWtjaWUgY3p5dGFuaWEgcGxpa3UgYsWCxJlkw7N3IgpkaWZmIC0tZ2l0IGEvc3JjL3BvL3BsLmNwMTI1MC5wbyBiL3NyYy9wby9wbC5jcDEyNTAucG8KaW5kZXggZTEwZTc0NS4uYzY3Zjc0OCAxMDA2NDQKLS0tIGEvc3JjL3BvL3BsLmNwMTI1MC5wbworKysgYi9zcmMvcG8vcGwuY3AxMjUwLnBvCkBAIC0xLDIyICsxLDIyIEBACiAjIHRyYW5zbGF0aW9uIG9mIHBsLnBvIHRvIFBvbGlzaAogIyBQb2xpc2ggVHJhbnNsYXRpb24gZm9yIFZpbQogIwotIyB1cGRhdGVkIDIwMDYgZm9yIHZpbS03LjAKKyMgdXBkYXRlZCAyMDA3IGZvciB2aW0tNy4wCiAjCiAjIEZJUlNUIEFVVEhPUiBNYXJjaW4gRGFsZWNraSA8bWFydGluQGRhbGVja2kuZGU+LCAyMDAwLgotIyBNaWtvbGFqIE1hY2hvd3NraSA8bWlrbWFjaEB3cC5wbD4sIDIwMDQsIDIwMDUsIDIwMDYuCisjIE1pa29sYWogTWFjaG93c2tpIDxtaWttYWNoQHdwLnBsPiwgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNy4KIG1zZ2lkICIiCiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IHBsXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA2LTA0LTI3IDE4OjI3KzAyMDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDA2LTA0LTI3IDE5OjE1KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwNy0wNC0zMCAyMDowMyswMjAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAwNy0wNC0zMCAyMDowNyswMjAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBNaWtvbGFqIE1hY2hvd3NraSA8bWlrbWFjaEB3cC5wbD5cbiIKICJMYW5ndWFnZS1UZWFtOiBQb2xpc2ggPGtkZS10cmFuc2xAbWVyLmNoZW1pYS5wb2xzbC5nbGl3aWNlLnBsPlxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PWNwMTI1MFxuIgogIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKLSJYLUdlbmVyYXRvcjogS0JhYmVsIDEuMTEuMlxuIgorIlgtR2VuZXJhdG9yOiBLQmFiZWwgMS4xMS40XG4iCiAKIG1zZ2lkICJFODI6IENhbm5vdCBhbGxvY2F0ZSBhbnkgYnVmZmVyLCBleGl0aW5nLi4uIgogbXNnc3RyICJFODI6IE5pZSBtb2fqIHphcmV6ZXJ3b3dh5iBidWZvcmE7IHpha2/xY3plbmllLi4uIgpAQCAtMTk0LDYgKzE5NCw5IEBACiBtc2dpZCAiRTk5OiBDdXJyZW50IGJ1ZmZlciBpcyBub3QgaW4gZGlmZiBtb2RlIgogbXNnc3RyICJFOTk6IEJpZb+5Y3kgYnVmb3IgbmllIGplc3QgdyB0cnliaWUgcvO/bmljIgogCittc2dpZCAiRTc5MzogTm8gb3RoZXIgYnVmZmVyIGluIGRpZmYgbW9kZSBpcyBtb2RpZmlhYmxlIgorbXNnc3RyICJFNzkzOiCvYWRlbiBpbm55IGJ1Zm9yIHcgdHJ5YmllIGRpZmYgbmllIGplc3QgbW9keWZpa293YWxueSIKKwogbXNnaWQgIkUxMDA6IE5vIG90aGVyIGJ1ZmZlciBpbiBkaWZmIG1vZGUiCiBtc2dzdHIgIkUxMDA6IEJyYWsgaW5uZWdvIGJ1Zm9yYSB3IHRyeWJpZSBy879uaWMiCiAKQEAgLTYxOSw2ICs2MjIsMTAgQEAKIG1zZ3N0ciAiRTcwNjogTmllcHJhd2lks293eSB0eXAgem1pZW5uZWogZGxhOiAlcyIKIAogIywgYy1mb3JtYXQKK21zZ2lkICJFNzk1OiBDYW5ub3QgZGVsZXRlIHZhcmlhYmxlICVzIgorbXNnc3RyICJFNzk1OiBOaWUgbW9n6iB1c3VuueYgem1pZW5uZWogJXMiCisKKyMsIGMtZm9ybWF0CiBtc2dpZCAiRTc0MTogVmFsdWUgaXMgbG9ja2VkOiAlcyIKIG1zZ3N0ciAiRTc0MTogV2FydG+c5iBqZXN0IHphYmxva293YW5hOiAlcyIKIApAQCAtODgzLDYgKzg5MCw3IEBACiBtc2dpZCAiIEZBSUxFRCIKIG1zZ3N0ciAiIE5JRSBQT1dJT0SjTyBTScoiCiAKKyMuIGF2b2lkIGEgd2FpdF9yZXR1cm4gZm9yIHRoaXMgbWVzc2FnZSwgaXQncyBhbm5veWluZwogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTM3OiBWaW1pbmZvIGZpbGUgaXMgbm90IHdyaXRhYmxlOiAlcyIKIG1zZ3N0ciAiRTEzNzogUGxpayB2aW1pbmZvIGplc3QgbmllemFwaXN5d2Fsbnk6ICVzIgpAQCAtMTQ1Nyw2ICsxNDY1LDkgQEAKIG1zZ2lkICJpcyBub3QgYSBmaWxlIgogbXNnc3RyICJuaWUgamVzdCBwbGlraWVtIgogCittc2dpZCAiaXMgYSBkZXZpY2UgKGRpc2FibGVkIHdpdGggJ29wZW5kZXZpY2UnIG9wdGlvbiIKK21zZ3N0ciAiamVzdCB1cnq5ZHplbmllbSAod3mzuWN6b255bSB3IG9wY2ppICdvcGVuZGV2aWNlJyIKKwogbXNnaWQgIltOZXcgRmlsZV0iCiBtc2dzdHIgIltOb3d5IFBsaWtdIgogCkBAIC0xNTUzLDYgKzE1NjQsOSBAQAogbXNnaWQgImlzIG5vdCBhIGZpbGUgb3Igd3JpdGFibGUgZGV2aWNlIgogbXNnc3RyICJuaWUgamVzdCBwbGlraWVtIGx1YiB6YXBpc3l3YWxueW0gcHJ6eXJ6uWRlbSIKIAorbXNnaWQgIndyaXRpbmcgdG8gZGV2aWNlIGRpc2FibGVkIHdpdGggJ29wZW5kZXZpY2UnIG9wdGlvbiIKK21zZ3N0ciAiemFwaXN5d2FuaWUgZG8gdXJ6uWR6ZW5pYSB3ebO5Y3pvbmUgdyBvcGNqaSAnb3BlbmRldmljZSciCisKIG1zZ2lkICJpcyByZWFkLW9ubHkgKGFkZCAhIHRvIG92ZXJyaWRlKSIKIG1zZ3N0ciAiamVzdCB0eWxrbyBkbyBvZGN6eXR1ICh3eW11nCBwb3ByemV6ICEpIgogCkBAIC0zMjg4LDYgKzMzMDIsOSBAQAogIixcbiIKICJsdWIgcGxpayB6b3N0YbMgdXN6a29kem9ueS4iCiAKK21zZ2lkICIgaGFzIGJlZW4gZGFtYWdlZCAocGFnZSBzaXplIGlzIHNtYWxsZXIgdGhhbiBtaW5pbXVtIHZhbHVlKS5cbiIKK21zZ3N0ciAiIHpvc3RhsyB1c3prb2R6b255ICh3aWVsa2+c5iBzdHJvbnkgamVzdCBtbmllanN6YSBuab8gbmFqbW5pZWpzemEgd2FydG+c5ikuXG4iCisKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNpbmcgc3dhcCBmaWxlIFwiJXNcIiIKIG1zZ3N0ciAiVb95d2FtIHBsaWt1IHd5bWlhbnkgXCIlc1wiIgpAQCAtMzYyNiw2ICszNjQzLDEwIEBACiBtc2dpZCAiRTMyOTogTm8gbWVudSBcIiVzXCIiCiBtc2dzdHIgIkUzMjk6IE5pZSBtYSBtZW51IFwiJXNcIiIKIAorIy4gT25seSBhIG1uZW1vbmljIG9yIGFjY2VsZXJhdG9yIGlzIG5vdCB2YWxpZC4KK21zZ2lkICJFNzkyOiBFbXB0eSBtZW51IG5hbWUiCittc2dzdHIgIkU3OTI6IFB1c3RhIG5hendhIG1lbnUiCisKIG1zZ2lkICJFMzMwOiBNZW51IHBhdGggbXVzdCBub3QgbGVhZCB0byBhIHN1Yi1tZW51IgogbXNnc3RyICJFMzMwOiBUcm9wIG1lbnUgbmllIG1vv2UgcHJvd2FkemnmIGRvIHBvZG1lbnUiCiAKQEAgLTQ5OTksNiArNTAyMCw3IEBACiBtc2dpZCAiU29ycnksIG9ubHkgJWxkIHN1Z2dlc3Rpb25zIgogbXNnc3RyICJQcnp5a3JvIG1pLCB0eWxrbyAlbGQgcG9kcG93aWVkemkiCiAKKyMuIGZvciB3aGVuICdjbWRoZWlnaHQnID4gMQogIy4gYXZvaWQgbW9yZSBwcm9tcHQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2hhbmdlIFwiJS4qc1wiIHRvOiIKQEAgLTU0MjMsNiArNTQ0NSwxMyBAQAogCiBtc2dpZCAiIgogIlxuIgorIk1TLVdpbmRvd3MgNjQgYml0IEdVSSB2ZXJzaW9uIgorbXNnc3RyICIiCisiXG4iCisiNjQgYml0b3dhIHdlcnNqYSBHVUkgZGxhIE1TLVdpbmRvd3MiCisKK21zZ2lkICIiCisiXG4iCiAiTVMtV2luZG93cyAzMiBiaXQgR1VJIHZlcnNpb24iCiBtc2dzdHIgIiIKICJcbiIKQEAgLTYwMTYsOCArNjA0NSw4IEBACiBtc2dzdHIgIkU0NjogTmllIG1vZ+ogem1pZW5p5iB6bWllbm5laiB0eWxrbyBkbyBvZGN6eXR1IFwiJXNcIiIKIAogIywgYy1mb3JtYXQKLW1zZ2lkICJFNDY6IENhbm5vdCBzZXQgdmFyaWFibGUgaW4gdGhlIHNhbmRib3g6IFwiJXNcIiIKLW1zZ3N0ciAiRTQ2OiBOaWUgbW9n6iB1c3Rhd2nmIHptaWVubmVqIHcgcGlhc2tvd25pY3k6IFwiJXNcIiIKK21zZ2lkICJFNzk0OiBDYW5ub3Qgc2V0IHZhcmlhYmxlIGluIHRoZSBzYW5kYm94OiBcIiVzXCIiCittc2dzdHIgIkU3OTQ6IE5pZSBtb2fqIHVzdGF3aeYgem1pZW5uZWogdyBwaWFza293bmljeTogXCIlc1wiIgogCiBtc2dpZCAiRTQ3OiBFcnJvciB3aGlsZSByZWFkaW5nIGVycm9yZmlsZSIKIG1zZ3N0ciAiRTQ3OiBCs7lkIHcgdHJha2NpZSBjenl0YW5pYSBwbGlrdSBis+pk83ciCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vY2hhcnNldC5wcm8gYi9zcmMvcHJvdG8vY2hhcnNldC5wcm8KaW5kZXggYTZmNDgwMi4uNGI2ODkwZCAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL2NoYXJzZXQucHJvCisrKyBiL3NyYy9wcm90by9jaGFyc2V0LnBybwpAQCAtMSw1NiArMSw1NiBAQAogLyogY2hhcnNldC5jICovCi1leHRlcm4gaW50IGluaXRfY2hhcnRhYiBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgYnVmX2luaXRfY2hhcnRhYiBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBnbG9iYWwpKTsKLWV4dGVybiB2b2lkIHRyYW5zX2NoYXJhY3RlcnMgX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IGJ1ZnNpemUpKTsKLWV4dGVybiBjaGFyX3UgKnRyYW5zc3RyIF9fQVJHUygoY2hhcl91ICpzKSk7Ci1leHRlcm4gY2hhcl91ICpzdHJfZm9sZGNhc2UgX19BUkdTKChjaGFyX3UgKnN0ciwgaW50IG9yZ2xlbiwgY2hhcl91ICpidWYsIGludCBidWZsZW4pKTsKLWV4dGVybiBjaGFyX3UgKnRyYW5zY2hhciBfX0FSR1MoKGludCBjKSk7Ci1leHRlcm4gY2hhcl91ICp0cmFuc2NoYXJfYnl0ZSBfX0FSR1MoKGludCBjKSk7Ci1leHRlcm4gdm9pZCB0cmFuc2NoYXJfbm9ucHJpbnQgX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IGMpKTsKLWV4dGVybiB2b2lkIHRyYW5zY2hhcl9oZXggX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IGMpKTsKLWV4dGVybiBpbnQgYnl0ZTJjZWxscyBfX0FSR1MoKGludCBiKSk7Ci1leHRlcm4gaW50IGNoYXIyY2VsbHMgX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIGludCBwdHIyY2VsbHMgX19BUkdTKChjaGFyX3UgKnApKTsKLWV4dGVybiBpbnQgdmltX3N0cnNpemUgX19BUkdTKChjaGFyX3UgKnMpKTsKLWV4dGVybiBpbnQgdmltX3N0cm5zaXplIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGVuKSk7Ci1leHRlcm4gaW50IGNoYXJ0YWJzaXplIF9fQVJHUygoY2hhcl91ICpwLCBjb2xucl9UIGNvbCkpOwotZXh0ZXJuIGludCBsaW5ldGFic2l6ZSBfX0FSR1MoKGNoYXJfdSAqcykpOwotZXh0ZXJuIGludCB3aW5fbGluZXRhYnNpemUgX19BUkdTKCh3aW5fVCAqd3AsIGNoYXJfdSAqcCwgY29sbnJfVCBsZW4pKTsKLWV4dGVybiBpbnQgdmltX2lzSURjIF9fQVJHUygoaW50IGMpKTsKLWV4dGVybiBpbnQgdmltX2lzd29yZGMgX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIGludCB2aW1faXN3b3JkcCBfX0FSR1MoKGNoYXJfdSAqcCkpOwotZXh0ZXJuIGludCB2aW1faXN3b3JkY19idWYgX19BUkdTKChjaGFyX3UgKnAsIGJ1Zl9UICpidWYpKTsKLWV4dGVybiBpbnQgdmltX2lzZmlsZWMgX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIGludCB2aW1faXNwcmludGMgX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIGludCB2aW1faXNwcmludGNfc3RyaWN0IF9fQVJHUygoaW50IGMpKTsKLWV4dGVybiBpbnQgbGJyX2NoYXJ0YWJzaXplIF9fQVJHUygodW5zaWduZWQgY2hhciAqcywgY29sbnJfVCBjb2wpKTsKLWV4dGVybiBpbnQgbGJyX2NoYXJ0YWJzaXplX2FkdiBfX0FSR1MoKGNoYXJfdSAqKnMsIGNvbG5yX1QgY29sKSk7Ci1leHRlcm4gaW50IHdpbl9sYnJfY2hhcnRhYnNpemUgX19BUkdTKCh3aW5fVCAqd3AsIGNoYXJfdSAqcywgY29sbnJfVCBjb2wsIGludCAqaGVhZHApKTsKLWV4dGVybiBpbnQgaW5fd2luX2JvcmRlciBfX0FSR1MoKHdpbl9UICp3cCwgY29sbnJfVCB2Y29sKSk7Ci1leHRlcm4gdm9pZCBnZXR2Y29sIF9fQVJHUygod2luX1QgKndwLCBwb3NfVCAqcG9zLCBjb2xucl9UICpzdGFydCwgY29sbnJfVCAqY3Vyc29yLCBjb2xucl9UICplbmQpKTsKLWV4dGVybiBjb2xucl9UIGdldHZjb2xfbm9saXN0IF9fQVJHUygocG9zX1QgKnBvc3ApKTsKLWV4dGVybiB2b2lkIGdldHZ2Y29sIF9fQVJHUygod2luX1QgKndwLCBwb3NfVCAqcG9zLCBjb2xucl9UICpzdGFydCwgY29sbnJfVCAqY3Vyc29yLCBjb2xucl9UICplbmQpKTsKLWV4dGVybiB2b2lkIGdldHZjb2xzIF9fQVJHUygod2luX1QgKndwLCBwb3NfVCAqcG9zMSwgcG9zX1QgKnBvczIsIGNvbG5yX1QgKmxlZnQsIGNvbG5yX1QgKnJpZ2h0KSk7Ci1leHRlcm4gY2hhcl91ICpza2lwd2hpdGUgX19BUkdTKChjaGFyX3UgKnApKTsKLWV4dGVybiBjaGFyX3UgKnNraXBkaWdpdHMgX19BUkdTKChjaGFyX3UgKnApKTsKLWV4dGVybiBjaGFyX3UgKnNraXBoZXggX19BUkdTKChjaGFyX3UgKnApKTsKLWV4dGVybiBjaGFyX3UgKnNraXB0b2RpZ2l0IF9fQVJHUygoY2hhcl91ICpwKSk7Ci1leHRlcm4gY2hhcl91ICpza2lwdG9oZXggX19BUkdTKChjaGFyX3UgKnApKTsKLWV4dGVybiBpbnQgdmltX2lzZGlnaXQgX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIGludCB2aW1faXN4ZGlnaXQgX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIGludCB2aW1faXNsb3dlciBfX0FSR1MoKGludCBjKSk7Ci1leHRlcm4gaW50IHZpbV9pc3VwcGVyIF9fQVJHUygoaW50IGMpKTsKLWV4dGVybiBpbnQgdmltX3RvdXBwZXIgX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIGludCB2aW1fdG9sb3dlciBfX0FSR1MoKGludCBjKSk7Ci1leHRlcm4gY2hhcl91ICpza2lwdG93aGl0ZSBfX0FSR1MoKGNoYXJfdSAqcCkpOwotZXh0ZXJuIGNoYXJfdSAqc2tpcHRvd2hpdGVfZXNjIF9fQVJHUygoY2hhcl91ICpwKSk7Ci1leHRlcm4gbG9uZyBnZXRkaWdpdHMgX19BUkdTKChjaGFyX3UgKipwcCkpOwotZXh0ZXJuIGludCB2aW1faXNibGFua2xpbmUgX19BUkdTKChjaGFyX3UgKmxidWYpKTsKLWV4dGVybiB2b2lkIHZpbV9zdHIybnIgX19BUkdTKChjaGFyX3UgKnN0YXJ0LCBpbnQgKmhleHAsIGludCAqbGVuLCBpbnQgZG9vY3QsIGludCBkb2hleCwgbG9uZyAqbnB0ciwgdW5zaWduZWQgbG9uZyAqdW5wdHIpKTsKLWV4dGVybiBpbnQgaGV4Mm5yIF9fQVJHUygoaW50IGMpKTsKLWV4dGVybiBpbnQgaGV4aGV4Mm5yIF9fQVJHUygoY2hhcl91ICpwKSk7Ci1leHRlcm4gaW50IHJlbV9iYWNrc2xhc2ggX19BUkdTKChjaGFyX3UgKnN0cikpOwotZXh0ZXJuIHZvaWQgYmFja3NsYXNoX2hhbHZlIF9fQVJHUygoY2hhcl91ICpwKSk7Ci1leHRlcm4gY2hhcl91ICpiYWNrc2xhc2hfaGFsdmVfc2F2ZSBfX0FSR1MoKGNoYXJfdSAqcCkpOwotZXh0ZXJuIHZvaWQgZWJjZGljMmFzY2lpIF9fQVJHUygoY2hhcl91ICpidWZmZXIsIGludCBsZW4pKTsKK2ludCBpbml0X2NoYXJ0YWIgX19BUkdTKCh2b2lkKSk7CitpbnQgYnVmX2luaXRfY2hhcnRhYiBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBnbG9iYWwpKTsKK3ZvaWQgdHJhbnNfY2hhcmFjdGVycyBfX0FSR1MoKGNoYXJfdSAqYnVmLCBpbnQgYnVmc2l6ZSkpOworY2hhcl91ICp0cmFuc3N0ciBfX0FSR1MoKGNoYXJfdSAqcykpOworY2hhcl91ICpzdHJfZm9sZGNhc2UgX19BUkdTKChjaGFyX3UgKnN0ciwgaW50IG9yZ2xlbiwgY2hhcl91ICpidWYsIGludCBidWZsZW4pKTsKK2NoYXJfdSAqdHJhbnNjaGFyIF9fQVJHUygoaW50IGMpKTsKK2NoYXJfdSAqdHJhbnNjaGFyX2J5dGUgX19BUkdTKChpbnQgYykpOwordm9pZCB0cmFuc2NoYXJfbm9ucHJpbnQgX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IGMpKTsKK3ZvaWQgdHJhbnNjaGFyX2hleCBfX0FSR1MoKGNoYXJfdSAqYnVmLCBpbnQgYykpOworaW50IGJ5dGUyY2VsbHMgX19BUkdTKChpbnQgYikpOworaW50IGNoYXIyY2VsbHMgX19BUkdTKChpbnQgYykpOworaW50IHB0cjJjZWxscyBfX0FSR1MoKGNoYXJfdSAqcCkpOworaW50IHZpbV9zdHJzaXplIF9fQVJHUygoY2hhcl91ICpzKSk7CitpbnQgdmltX3N0cm5zaXplIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGVuKSk7CitpbnQgY2hhcnRhYnNpemUgX19BUkdTKChjaGFyX3UgKnAsIGNvbG5yX1QgY29sKSk7CitpbnQgbGluZXRhYnNpemUgX19BUkdTKChjaGFyX3UgKnMpKTsKK2ludCB3aW5fbGluZXRhYnNpemUgX19BUkdTKCh3aW5fVCAqd3AsIGNoYXJfdSAqcCwgY29sbnJfVCBsZW4pKTsKK2ludCB2aW1faXNJRGMgX19BUkdTKChpbnQgYykpOworaW50IHZpbV9pc3dvcmRjIF9fQVJHUygoaW50IGMpKTsKK2ludCB2aW1faXN3b3JkcCBfX0FSR1MoKGNoYXJfdSAqcCkpOworaW50IHZpbV9pc3dvcmRjX2J1ZiBfX0FSR1MoKGNoYXJfdSAqcCwgYnVmX1QgKmJ1ZikpOworaW50IHZpbV9pc2ZpbGVjIF9fQVJHUygoaW50IGMpKTsKK2ludCB2aW1faXNwcmludGMgX19BUkdTKChpbnQgYykpOworaW50IHZpbV9pc3ByaW50Y19zdHJpY3QgX19BUkdTKChpbnQgYykpOworaW50IGxicl9jaGFydGFic2l6ZSBfX0FSR1MoKHVuc2lnbmVkIGNoYXIgKnMsIGNvbG5yX1QgY29sKSk7CitpbnQgbGJyX2NoYXJ0YWJzaXplX2FkdiBfX0FSR1MoKGNoYXJfdSAqKnMsIGNvbG5yX1QgY29sKSk7CitpbnQgd2luX2xicl9jaGFydGFic2l6ZSBfX0FSR1MoKHdpbl9UICp3cCwgY2hhcl91ICpzLCBjb2xucl9UIGNvbCwgaW50ICpoZWFkcCkpOworaW50IGluX3dpbl9ib3JkZXIgX19BUkdTKCh3aW5fVCAqd3AsIGNvbG5yX1QgdmNvbCkpOwordm9pZCBnZXR2Y29sIF9fQVJHUygod2luX1QgKndwLCBwb3NfVCAqcG9zLCBjb2xucl9UICpzdGFydCwgY29sbnJfVCAqY3Vyc29yLCBjb2xucl9UICplbmQpKTsKK2NvbG5yX1QgZ2V0dmNvbF9ub2xpc3QgX19BUkdTKChwb3NfVCAqcG9zcCkpOwordm9pZCBnZXR2dmNvbCBfX0FSR1MoKHdpbl9UICp3cCwgcG9zX1QgKnBvcywgY29sbnJfVCAqc3RhcnQsIGNvbG5yX1QgKmN1cnNvciwgY29sbnJfVCAqZW5kKSk7Cit2b2lkIGdldHZjb2xzIF9fQVJHUygod2luX1QgKndwLCBwb3NfVCAqcG9zMSwgcG9zX1QgKnBvczIsIGNvbG5yX1QgKmxlZnQsIGNvbG5yX1QgKnJpZ2h0KSk7CitjaGFyX3UgKnNraXB3aGl0ZSBfX0FSR1MoKGNoYXJfdSAqcCkpOworY2hhcl91ICpza2lwZGlnaXRzIF9fQVJHUygoY2hhcl91ICpwKSk7CitjaGFyX3UgKnNraXBoZXggX19BUkdTKChjaGFyX3UgKnApKTsKK2NoYXJfdSAqc2tpcHRvZGlnaXQgX19BUkdTKChjaGFyX3UgKnApKTsKK2NoYXJfdSAqc2tpcHRvaGV4IF9fQVJHUygoY2hhcl91ICpwKSk7CitpbnQgdmltX2lzZGlnaXQgX19BUkdTKChpbnQgYykpOworaW50IHZpbV9pc3hkaWdpdCBfX0FSR1MoKGludCBjKSk7CitpbnQgdmltX2lzbG93ZXIgX19BUkdTKChpbnQgYykpOworaW50IHZpbV9pc3VwcGVyIF9fQVJHUygoaW50IGMpKTsKK2ludCB2aW1fdG91cHBlciBfX0FSR1MoKGludCBjKSk7CitpbnQgdmltX3RvbG93ZXIgX19BUkdTKChpbnQgYykpOworY2hhcl91ICpza2lwdG93aGl0ZSBfX0FSR1MoKGNoYXJfdSAqcCkpOworY2hhcl91ICpza2lwdG93aGl0ZV9lc2MgX19BUkdTKChjaGFyX3UgKnApKTsKK2xvbmcgZ2V0ZGlnaXRzIF9fQVJHUygoY2hhcl91ICoqcHApKTsKK2ludCB2aW1faXNibGFua2xpbmUgX19BUkdTKChjaGFyX3UgKmxidWYpKTsKK3ZvaWQgdmltX3N0cjJuciBfX0FSR1MoKGNoYXJfdSAqc3RhcnQsIGludCAqaGV4cCwgaW50ICpsZW4sIGludCBkb29jdCwgaW50IGRvaGV4LCBsb25nICpucHRyLCB1bnNpZ25lZCBsb25nICp1bnB0cikpOworaW50IGhleDJuciBfX0FSR1MoKGludCBjKSk7CitpbnQgaGV4aGV4Mm5yIF9fQVJHUygoY2hhcl91ICpwKSk7CitpbnQgcmVtX2JhY2tzbGFzaCBfX0FSR1MoKGNoYXJfdSAqc3RyKSk7Cit2b2lkIGJhY2tzbGFzaF9oYWx2ZSBfX0FSR1MoKGNoYXJfdSAqcCkpOworY2hhcl91ICpiYWNrc2xhc2hfaGFsdmVfc2F2ZSBfX0FSR1MoKGNoYXJfdSAqcCkpOwordm9pZCBlYmNkaWMyYXNjaWkgX19BUkdTKChjaGFyX3UgKmJ1ZmZlciwgaW50IGxlbikpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vZGlmZi5wcm8gYi9zcmMvcHJvdG8vZGlmZi5wcm8KaW5kZXggNjViOTc4Zi4uZTQ1MTI3YSAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL2RpZmYucHJvCisrKyBiL3NyYy9wcm90by9kaWZmLnBybwpAQCAtMSwyNiArMSwyNiBAQAogLyogZGlmZi5jICovCi1leHRlcm4gdm9pZCBkaWZmX2J1Zl9kZWxldGUgX19BUkdTKChidWZfVCAqYnVmKSk7Ci1leHRlcm4gdm9pZCBkaWZmX2J1Zl9hZGp1c3QgX19BUkdTKCh3aW5fVCAqd2luKSk7Ci1leHRlcm4gdm9pZCBkaWZmX2J1Zl9hZGQgX19BUkdTKChidWZfVCAqYnVmKSk7Ci1leHRlcm4gdm9pZCBkaWZmX2ludmFsaWRhdGUgX19BUkdTKChidWZfVCAqYnVmKSk7Ci1leHRlcm4gdm9pZCBkaWZmX21hcmtfYWRqdXN0IF9fQVJHUygobGluZW5yX1QgbGluZTEsIGxpbmVucl9UIGxpbmUyLCBsb25nIGFtb3VudCwgbG9uZyBhbW91bnRfYWZ0ZXIpKTsKLWV4dGVybiB2b2lkIGV4X2RpZmZ1cGRhdGUgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X2RpZmZwYXRjaCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfZGlmZnNwbGl0IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF9kaWZmdGhpcyBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZGlmZl93aW5fb3B0aW9ucyBfX0FSR1MoKHdpbl9UICp3cCwgaW50IGFkZGJ1ZikpOwotZXh0ZXJuIHZvaWQgZXhfZGlmZm9mZiBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZGlmZl9jbGVhciBfX0FSR1MoKHRhYnBhZ2VfVCAqdHApKTsKLWV4dGVybiBpbnQgZGlmZl9jaGVjayBfX0FSR1MoKHdpbl9UICp3cCwgbGluZW5yX1QgbG51bSkpOwotZXh0ZXJuIGludCBkaWZmX2NoZWNrX2ZpbGwgX19BUkdTKCh3aW5fVCAqd3AsIGxpbmVucl9UIGxudW0pKTsKLWV4dGVybiB2b2lkIGRpZmZfc2V0X3RvcGxpbmUgX19BUkdTKCh3aW5fVCAqZnJvbXdpbiwgd2luX1QgKnRvd2luKSk7Ci1leHRlcm4gaW50IGRpZmZvcHRfY2hhbmdlZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgZGlmZm9wdF9ob3Jpem9udGFsIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBkaWZmX2ZpbmRfY2hhbmdlIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtLCBpbnQgKnN0YXJ0cCwgaW50ICplbmRwKSk7Ci1leHRlcm4gaW50IGRpZmZfaW5mb2xkIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtKSk7Ci1leHRlcm4gdm9pZCBudl9kaWZmZ2V0cHV0IF9fQVJHUygoaW50IHB1dCkpOwotZXh0ZXJuIHZvaWQgZXhfZGlmZmdldHB1dCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIGludCBkaWZmX21vZGVfYnVmIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotZXh0ZXJuIGludCBkaWZmX21vdmVfdG8gX19BUkdTKChpbnQgZGlyLCBsb25nIGNvdW50KSk7Ci1leHRlcm4gbGluZW5yX1QgZGlmZl9sbnVtX3dpbiBfX0FSR1MoKGxpbmVucl9UIGxudW0sIHdpbl9UICp3cCkpOwordm9pZCBkaWZmX2J1Zl9kZWxldGUgX19BUkdTKChidWZfVCAqYnVmKSk7Cit2b2lkIGRpZmZfYnVmX2FkanVzdCBfX0FSR1MoKHdpbl9UICp3aW4pKTsKK3ZvaWQgZGlmZl9idWZfYWRkIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwordm9pZCBkaWZmX2ludmFsaWRhdGUgX19BUkdTKChidWZfVCAqYnVmKSk7Cit2b2lkIGRpZmZfbWFya19hZGp1c3QgX19BUkdTKChsaW5lbnJfVCBsaW5lMSwgbGluZW5yX1QgbGluZTIsIGxvbmcgYW1vdW50LCBsb25nIGFtb3VudF9hZnRlcikpOwordm9pZCBleF9kaWZmdXBkYXRlIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X2RpZmZwYXRjaCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBleF9kaWZmc3BsaXQgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfZGlmZnRoaXMgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZGlmZl93aW5fb3B0aW9ucyBfX0FSR1MoKHdpbl9UICp3cCwgaW50IGFkZGJ1ZikpOwordm9pZCBleF9kaWZmb2ZmIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGRpZmZfY2xlYXIgX19BUkdTKCh0YWJwYWdlX1QgKnRwKSk7CitpbnQgZGlmZl9jaGVjayBfX0FSR1MoKHdpbl9UICp3cCwgbGluZW5yX1QgbG51bSkpOworaW50IGRpZmZfY2hlY2tfZmlsbCBfX0FSR1MoKHdpbl9UICp3cCwgbGluZW5yX1QgbG51bSkpOwordm9pZCBkaWZmX3NldF90b3BsaW5lIF9fQVJHUygod2luX1QgKmZyb213aW4sIHdpbl9UICp0b3dpbikpOworaW50IGRpZmZvcHRfY2hhbmdlZCBfX0FSR1MoKHZvaWQpKTsKK2ludCBkaWZmb3B0X2hvcml6b250YWwgX19BUkdTKCh2b2lkKSk7CitpbnQgZGlmZl9maW5kX2NoYW5nZSBfX0FSR1MoKHdpbl9UICp3cCwgbGluZW5yX1QgbG51bSwgaW50ICpzdGFydHAsIGludCAqZW5kcCkpOworaW50IGRpZmZfaW5mb2xkIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtKSk7Cit2b2lkIG52X2RpZmZnZXRwdXQgX19BUkdTKChpbnQgcHV0KSk7Cit2b2lkIGV4X2RpZmZnZXRwdXQgX19BUkdTKChleGFyZ19UICplYXApKTsKK2ludCBkaWZmX21vZGVfYnVmIF9fQVJHUygoYnVmX1QgKmJ1ZikpOworaW50IGRpZmZfbW92ZV90byBfX0FSR1MoKGludCBkaXIsIGxvbmcgY291bnQpKTsKK2xpbmVucl9UIGRpZmZfbG51bV93aW4gX19BUkdTKChsaW5lbnJfVCBsbnVtLCB3aW5fVCAqd3ApKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL2V4X2V2YWwucHJvIGIvc3JjL3Byb3RvL2V4X2V2YWwucHJvCmluZGV4IDIwNjAxZjguLjhmYjIzNDIgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9leF9ldmFsLnBybworKysgYi9zcmMvcHJvdG8vZXhfZXZhbC5wcm8KQEAgLTEsMzIgKzEsMzIgQEAKIC8qIGV4X2V2YWwuYyAqLwotZXh0ZXJuIGludCBhYm9ydGluZyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHVwZGF0ZV9mb3JjZV9hYm9ydCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgc2hvdWxkX2Fib3J0IF9fQVJHUygoaW50IHJldGNvZGUpKTsKLWV4dGVybiBpbnQgYWJvcnRlZF9pbl90cnkgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGNhdXNlX2VycnRocm93IF9fQVJHUygoY2hhcl91ICptZXNnLCBpbnQgc2V2ZXJlLCBpbnQgKmlnbm9yZSkpOwotZXh0ZXJuIHZvaWQgZG9fZXJydGhyb3cgX19BUkdTKChzdHJ1Y3QgY29uZHN0YWNrICpjc3RhY2ssIGNoYXJfdSAqY21kbmFtZSkpOwotZXh0ZXJuIGludCBkb19pbnR0aHJvdyBfX0FSR1MoKHN0cnVjdCBjb25kc3RhY2sgKmNzdGFjaykpOwotZXh0ZXJuIHZvaWQgZGlzY2FyZF9jdXJyZW50X2V4Y2VwdGlvbiBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHJlcG9ydF9tYWtlX3BlbmRpbmcgX19BUkdTKChpbnQgcGVuZGluZywgdm9pZCAqdmFsdWUpKTsKLWV4dGVybiB2b2lkIHJlcG9ydF9yZXN1bWVfcGVuZGluZyBfX0FSR1MoKGludCBwZW5kaW5nLCB2b2lkICp2YWx1ZSkpOwotZXh0ZXJuIHZvaWQgcmVwb3J0X2Rpc2NhcmRfcGVuZGluZyBfX0FSR1MoKGludCBwZW5kaW5nLCB2b2lkICp2YWx1ZSkpOwotZXh0ZXJuIHZvaWQgZXhfaWYgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X2VuZGlmIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF9lbHNlIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF93aGlsZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfY29udGludWUgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X2JyZWFrIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF9lbmR3aGlsZSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfdGhyb3cgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGRvX3Rocm93IF9fQVJHUygoc3RydWN0IGNvbmRzdGFjayAqY3N0YWNrKSk7Ci1leHRlcm4gdm9pZCBleF90cnkgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X2NhdGNoIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF9maW5hbGx5IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF9lbmR0cnkgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGVudGVyX2NsZWFudXAgX19BUkdTKChjbGVhbnVwX1QgKmNzcCkpOwotZXh0ZXJuIHZvaWQgbGVhdmVfY2xlYW51cCBfX0FSR1MoKGNsZWFudXBfVCAqY3NwKSk7Ci1leHRlcm4gaW50IGNsZWFudXBfY29uZGl0aW9uYWxzIF9fQVJHUygoc3RydWN0IGNvbmRzdGFjayAqY3N0YWNrLCBpbnQgc2VhcmNoZWRfY29uZCwgaW50IGluY2x1c2l2ZSkpOwotZXh0ZXJuIHZvaWQgcmV3aW5kX2NvbmRpdGlvbmFscyBfX0FSR1MoKHN0cnVjdCBjb25kc3RhY2sgKmNzdGFjaywgaW50IGlkeCwgaW50IGNvbmRfdHlwZSwgaW50ICpjb25kX2xldmVsKSk7Ci1leHRlcm4gdm9pZCBleF9lbmRmdW5jdGlvbiBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIGludCBoYXNfbG9vcF9jbWQgX19BUkdTKChjaGFyX3UgKnApKTsKK2ludCBhYm9ydGluZyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgdXBkYXRlX2ZvcmNlX2Fib3J0IF9fQVJHUygodm9pZCkpOworaW50IHNob3VsZF9hYm9ydCBfX0FSR1MoKGludCByZXRjb2RlKSk7CitpbnQgYWJvcnRlZF9pbl90cnkgX19BUkdTKCh2b2lkKSk7CitpbnQgY2F1c2VfZXJydGhyb3cgX19BUkdTKChjaGFyX3UgKm1lc2csIGludCBzZXZlcmUsIGludCAqaWdub3JlKSk7Cit2b2lkIGRvX2VycnRocm93IF9fQVJHUygoc3RydWN0IGNvbmRzdGFjayAqY3N0YWNrLCBjaGFyX3UgKmNtZG5hbWUpKTsKK2ludCBkb19pbnR0aHJvdyBfX0FSR1MoKHN0cnVjdCBjb25kc3RhY2sgKmNzdGFjaykpOwordm9pZCBkaXNjYXJkX2N1cnJlbnRfZXhjZXB0aW9uIF9fQVJHUygodm9pZCkpOwordm9pZCByZXBvcnRfbWFrZV9wZW5kaW5nIF9fQVJHUygoaW50IHBlbmRpbmcsIHZvaWQgKnZhbHVlKSk7Cit2b2lkIHJlcG9ydF9yZXN1bWVfcGVuZGluZyBfX0FSR1MoKGludCBwZW5kaW5nLCB2b2lkICp2YWx1ZSkpOwordm9pZCByZXBvcnRfZGlzY2FyZF9wZW5kaW5nIF9fQVJHUygoaW50IHBlbmRpbmcsIHZvaWQgKnZhbHVlKSk7Cit2b2lkIGV4X2lmIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X2VuZGlmIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X2Vsc2UgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfd2hpbGUgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfY29udGludWUgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfYnJlYWsgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfZW5kd2hpbGUgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfdGhyb3cgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZG9fdGhyb3cgX19BUkdTKChzdHJ1Y3QgY29uZHN0YWNrICpjc3RhY2spKTsKK3ZvaWQgZXhfdHJ5IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X2NhdGNoIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X2ZpbmFsbHkgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfZW5kdHJ5IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGVudGVyX2NsZWFudXAgX19BUkdTKChjbGVhbnVwX1QgKmNzcCkpOwordm9pZCBsZWF2ZV9jbGVhbnVwIF9fQVJHUygoY2xlYW51cF9UICpjc3ApKTsKK2ludCBjbGVhbnVwX2NvbmRpdGlvbmFscyBfX0FSR1MoKHN0cnVjdCBjb25kc3RhY2sgKmNzdGFjaywgaW50IHNlYXJjaGVkX2NvbmQsIGludCBpbmNsdXNpdmUpKTsKK3ZvaWQgcmV3aW5kX2NvbmRpdGlvbmFscyBfX0FSR1MoKHN0cnVjdCBjb25kc3RhY2sgKmNzdGFjaywgaW50IGlkeCwgaW50IGNvbmRfdHlwZSwgaW50ICpjb25kX2xldmVsKSk7Cit2b2lkIGV4X2VuZGZ1bmN0aW9uIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7CitpbnQgaGFzX2xvb3BfY21kIF9fQVJHUygoY2hhcl91ICpwKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9leF9nZXRsbi5wcm8gYi9zcmMvcHJvdG8vZXhfZ2V0bG4ucHJvCmluZGV4IDZkZDA2ZmYuLmY1ZmViMjAgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9leF9nZXRsbi5wcm8KKysrIGIvc3JjL3Byb3RvL2V4X2dldGxuLnBybwpAQCAtMSw1NiArMSw1NiBAQAogLyogZXhfZ2V0bG4uYyAqLwotZXh0ZXJuIGNoYXJfdSAqZ2V0Y21kbGluZSBfX0FSR1MoKGludCBmaXJzdGMsIGxvbmcgY291bnQsIGludCBpbmRlbnQpKTsKLWV4dGVybiBjaGFyX3UgKmdldGNtZGxpbmVfcHJvbXB0IF9fQVJHUygoaW50IGZpcnN0YywgY2hhcl91ICpwcm9tcHQsIGludCBhdHRyLCBpbnQgeHBfY29udGV4dCwgY2hhcl91ICp4cF9hcmcpKTsKLWV4dGVybiBpbnQgdGV4dF9sb2NrZWQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB0ZXh0X2xvY2tlZF9tc2cgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGN1cmJ1Zl9sb2NrZWQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gY2hhcl91ICpnZXRleGxpbmUgX19BUkdTKChpbnQgYywgdm9pZCAqZHVtbXksIGludCBpbmRlbnQpKTsKLWV4dGVybiBjaGFyX3UgKmdldGV4bW9kZWxpbmUgX19BUkdTKChpbnQgcHJvbXB0Yywgdm9pZCAqZHVtbXksIGludCBpbmRlbnQpKTsKLWV4dGVybiBpbnQgY21kbGluZV9vdmVyc3RyaWtlIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBjbWRsaW5lX2F0X2VuZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBjb2xucl9UIGNtZGxpbmVfZ2V0dmNvbF9jdXJzb3IgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBmcmVlX2NtZGxpbmVfYnVmIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgcHV0Y21kbGluZSBfX0FSR1MoKGludCBjLCBpbnQgc2hpZnQpKTsKLWV4dGVybiB2b2lkIHVucHV0Y21kbGluZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgcHV0X29uX2NtZGxpbmUgX19BUkdTKChjaGFyX3UgKnN0ciwgaW50IGxlbiwgaW50IHJlZHJhdykpOwotZXh0ZXJuIGNoYXJfdSAqc2F2ZV9jbWRsaW5lX2FsbG9jIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgcmVzdG9yZV9jbWRsaW5lX2FsbG9jIF9fQVJHUygoY2hhcl91ICpwKSk7Ci1leHRlcm4gdm9pZCBjbWRsaW5lX3Bhc3RlX3N0ciBfX0FSR1MoKGNoYXJfdSAqcywgaW50IGxpdGVyYWxseSkpOwotZXh0ZXJuIHZvaWQgcmVkcmF3Y21kbGluZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHJlZHJhd2NtZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGNvbXB1dGVfY21kcm93IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZ290b2NtZGxpbmUgX19BUkdTKChpbnQgY2xyKSk7Ci1leHRlcm4gY2hhcl91ICpFeHBhbmRPbmUgX19BUkdTKChleHBhbmRfVCAqeHAsIGNoYXJfdSAqc3RyLCBjaGFyX3UgKm9yaWcsIGludCBvcHRpb25zLCBpbnQgbW9kZSkpOwotZXh0ZXJuIHZvaWQgRXhwYW5kSW5pdCBfX0FSR1MoKGV4cGFuZF9UICp4cCkpOwotZXh0ZXJuIHZvaWQgRXhwYW5kQ2xlYW51cCBfX0FSR1MoKGV4cGFuZF9UICp4cCkpOwotZXh0ZXJuIHZvaWQgRXhwYW5kRXNjYXBlIF9fQVJHUygoZXhwYW5kX1QgKnhwLCBjaGFyX3UgKnN0ciwgaW50IG51bWZpbGVzLCBjaGFyX3UgKipmaWxlcywgaW50IG9wdGlvbnMpKTsKLWV4dGVybiB2b2lkIHRpbGRlX3JlcGxhY2UgX19BUkdTKChjaGFyX3UgKm9yaWdfcGF0LCBpbnQgbnVtX2ZpbGVzLCBjaGFyX3UgKipmaWxlcykpOwotZXh0ZXJuIGNoYXJfdSAqc21fZ2V0dGFpbCBfX0FSR1MoKGNoYXJfdSAqcykpOwotZXh0ZXJuIGNoYXJfdSAqYWRkc3RhciBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIGludCBsZW4sIGludCBjb250ZXh0KSk7Ci1leHRlcm4gdm9pZCBzZXRfY21kX2NvbnRleHQgX19BUkdTKChleHBhbmRfVCAqeHAsIGNoYXJfdSAqc3RyLCBpbnQgbGVuLCBpbnQgY29sKSk7Ci1leHRlcm4gaW50IGV4cGFuZF9jbWRsaW5lIF9fQVJHUygoZXhwYW5kX1QgKnhwLCBjaGFyX3UgKnN0ciwgaW50IGNvbCwgaW50ICptYXRjaGNvdW50LCBjaGFyX3UgKioqbWF0Y2hlcykpOwotZXh0ZXJuIGludCBFeHBhbmRHZW5lcmljIF9fQVJHUygoZXhwYW5kX1QgKnhwLCByZWdtYXRjaF9UICpyZWdtYXRjaCwgaW50ICpudW1fZmlsZSwgY2hhcl91ICoqKmZpbGUsIGNoYXJfdSAqKCgqZnVuYykoZXhwYW5kX1QgKiwgaW50KSkpKTsKLWV4dGVybiBjaGFyX3UgKmdsb2JwYXRoIF9fQVJHUygoY2hhcl91ICpwYXRoLCBjaGFyX3UgKmZpbGUpKTsKLWV4dGVybiB2b2lkIGluaXRfaGlzdG9yeSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgZ2V0X2hpc3R0eXBlIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1leHRlcm4gdm9pZCBhZGRfdG9faGlzdG9yeSBfX0FSR1MoKGludCBoaXN0eXBlLCBjaGFyX3UgKm5ld19lbnRyeSwgaW50IGluX21hcCwgaW50IHNlcCkpOwotZXh0ZXJuIGludCBnZXRfaGlzdG9yeV9pZHggX19BUkdTKChpbnQgaGlzdHlwZSkpOwotZXh0ZXJuIGNoYXJfdSAqZ2V0X2NtZGxpbmVfc3RyIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBnZXRfY21kbGluZV9wb3MgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IHNldF9jbWRsaW5lX3BvcyBfX0FSR1MoKGludCBwb3MpKTsKLWV4dGVybiBpbnQgZ2V0X2NtZGxpbmVfdHlwZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBjaGFyX3UgKmdldF9oaXN0b3J5X2VudHJ5IF9fQVJHUygoaW50IGhpc3R5cGUsIGludCBpZHgpKTsKLWV4dGVybiBpbnQgY2xyX2hpc3RvcnkgX19BUkdTKChpbnQgaGlzdHlwZSkpOwotZXh0ZXJuIGludCBkZWxfaGlzdG9yeV9lbnRyeSBfX0FSR1MoKGludCBoaXN0eXBlLCBjaGFyX3UgKnN0cikpOwotZXh0ZXJuIGludCBkZWxfaGlzdG9yeV9pZHggX19BUkdTKChpbnQgaGlzdHlwZSwgaW50IGlkeCkpOwotZXh0ZXJuIHZvaWQgcmVtb3ZlX2tleV9mcm9tX2hpc3RvcnkgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGdldF9saXN0X3JhbmdlIF9fQVJHUygoY2hhcl91ICoqc3RyLCBpbnQgKm51bTEsIGludCAqbnVtMikpOwotZXh0ZXJuIHZvaWQgZXhfaGlzdG9yeSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgcHJlcGFyZV92aW1pbmZvX2hpc3RvcnkgX19BUkdTKChpbnQgYXNrbGVuKSk7Ci1leHRlcm4gaW50IHJlYWRfdmltaW5mb19oaXN0b3J5IF9fQVJHUygodmlyX1QgKnZpcnApKTsKLWV4dGVybiB2b2lkIGZpbmlzaF92aW1pbmZvX2hpc3RvcnkgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB3cml0ZV92aW1pbmZvX2hpc3RvcnkgX19BUkdTKChGSUxFICpmcCkpOwotZXh0ZXJuIHZvaWQgY21kX3BjaGFyIF9fQVJHUygoaW50IGMsIGludCBvZmZzZXQpKTsKLWV4dGVybiBpbnQgY21kX2djaGFyIF9fQVJHUygoaW50IG9mZnNldCkpOwotZXh0ZXJuIGNoYXJfdSAqc2NyaXB0X2dldCBfX0FSR1MoKGV4YXJnX1QgKmVhcCwgY2hhcl91ICpjbWQpKTsKK2NoYXJfdSAqZ2V0Y21kbGluZSBfX0FSR1MoKGludCBmaXJzdGMsIGxvbmcgY291bnQsIGludCBpbmRlbnQpKTsKK2NoYXJfdSAqZ2V0Y21kbGluZV9wcm9tcHQgX19BUkdTKChpbnQgZmlyc3RjLCBjaGFyX3UgKnByb21wdCwgaW50IGF0dHIsIGludCB4cF9jb250ZXh0LCBjaGFyX3UgKnhwX2FyZykpOworaW50IHRleHRfbG9ja2VkIF9fQVJHUygodm9pZCkpOwordm9pZCB0ZXh0X2xvY2tlZF9tc2cgX19BUkdTKCh2b2lkKSk7CitpbnQgY3VyYnVmX2xvY2tlZCBfX0FSR1MoKHZvaWQpKTsKK2NoYXJfdSAqZ2V0ZXhsaW5lIF9fQVJHUygoaW50IGMsIHZvaWQgKmR1bW15LCBpbnQgaW5kZW50KSk7CitjaGFyX3UgKmdldGV4bW9kZWxpbmUgX19BUkdTKChpbnQgcHJvbXB0Yywgdm9pZCAqZHVtbXksIGludCBpbmRlbnQpKTsKK2ludCBjbWRsaW5lX292ZXJzdHJpa2UgX19BUkdTKCh2b2lkKSk7CitpbnQgY21kbGluZV9hdF9lbmQgX19BUkdTKCh2b2lkKSk7Citjb2xucl9UIGNtZGxpbmVfZ2V0dmNvbF9jdXJzb3IgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGZyZWVfY21kbGluZV9idWYgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHB1dGNtZGxpbmUgX19BUkdTKChpbnQgYywgaW50IHNoaWZ0KSk7Cit2b2lkIHVucHV0Y21kbGluZSBfX0FSR1MoKHZvaWQpKTsKK2ludCBwdXRfb25fY21kbGluZSBfX0FSR1MoKGNoYXJfdSAqc3RyLCBpbnQgbGVuLCBpbnQgcmVkcmF3KSk7CitjaGFyX3UgKnNhdmVfY21kbGluZV9hbGxvYyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgcmVzdG9yZV9jbWRsaW5lX2FsbG9jIF9fQVJHUygoY2hhcl91ICpwKSk7Cit2b2lkIGNtZGxpbmVfcGFzdGVfc3RyIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGl0ZXJhbGx5KSk7Cit2b2lkIHJlZHJhd2NtZGxpbmUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHJlZHJhd2NtZCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgY29tcHV0ZV9jbWRyb3cgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGdvdG9jbWRsaW5lIF9fQVJHUygoaW50IGNscikpOworY2hhcl91ICpFeHBhbmRPbmUgX19BUkdTKChleHBhbmRfVCAqeHAsIGNoYXJfdSAqc3RyLCBjaGFyX3UgKm9yaWcsIGludCBvcHRpb25zLCBpbnQgbW9kZSkpOwordm9pZCBFeHBhbmRJbml0IF9fQVJHUygoZXhwYW5kX1QgKnhwKSk7Cit2b2lkIEV4cGFuZENsZWFudXAgX19BUkdTKChleHBhbmRfVCAqeHApKTsKK3ZvaWQgRXhwYW5kRXNjYXBlIF9fQVJHUygoZXhwYW5kX1QgKnhwLCBjaGFyX3UgKnN0ciwgaW50IG51bWZpbGVzLCBjaGFyX3UgKipmaWxlcywgaW50IG9wdGlvbnMpKTsKK3ZvaWQgdGlsZGVfcmVwbGFjZSBfX0FSR1MoKGNoYXJfdSAqb3JpZ19wYXQsIGludCBudW1fZmlsZXMsIGNoYXJfdSAqKmZpbGVzKSk7CitjaGFyX3UgKnNtX2dldHRhaWwgX19BUkdTKChjaGFyX3UgKnMpKTsKK2NoYXJfdSAqYWRkc3RhciBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIGludCBsZW4sIGludCBjb250ZXh0KSk7Cit2b2lkIHNldF9jbWRfY29udGV4dCBfX0FSR1MoKGV4cGFuZF9UICp4cCwgY2hhcl91ICpzdHIsIGludCBsZW4sIGludCBjb2wpKTsKK2ludCBleHBhbmRfY21kbGluZSBfX0FSR1MoKGV4cGFuZF9UICp4cCwgY2hhcl91ICpzdHIsIGludCBjb2wsIGludCAqbWF0Y2hjb3VudCwgY2hhcl91ICoqKm1hdGNoZXMpKTsKK2ludCBFeHBhbmRHZW5lcmljIF9fQVJHUygoZXhwYW5kX1QgKnhwLCByZWdtYXRjaF9UICpyZWdtYXRjaCwgaW50ICpudW1fZmlsZSwgY2hhcl91ICoqKmZpbGUsIGNoYXJfdSAqKCgqZnVuYykoZXhwYW5kX1QgKiwgaW50KSkpKTsKK2NoYXJfdSAqZ2xvYnBhdGggX19BUkdTKChjaGFyX3UgKnBhdGgsIGNoYXJfdSAqZmlsZSkpOwordm9pZCBpbml0X2hpc3RvcnkgX19BUkdTKCh2b2lkKSk7CitpbnQgZ2V0X2hpc3R0eXBlIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Cit2b2lkIGFkZF90b19oaXN0b3J5IF9fQVJHUygoaW50IGhpc3R5cGUsIGNoYXJfdSAqbmV3X2VudHJ5LCBpbnQgaW5fbWFwLCBpbnQgc2VwKSk7CitpbnQgZ2V0X2hpc3RvcnlfaWR4IF9fQVJHUygoaW50IGhpc3R5cGUpKTsKK2NoYXJfdSAqZ2V0X2NtZGxpbmVfc3RyIF9fQVJHUygodm9pZCkpOworaW50IGdldF9jbWRsaW5lX3BvcyBfX0FSR1MoKHZvaWQpKTsKK2ludCBzZXRfY21kbGluZV9wb3MgX19BUkdTKChpbnQgcG9zKSk7CitpbnQgZ2V0X2NtZGxpbmVfdHlwZSBfX0FSR1MoKHZvaWQpKTsKK2NoYXJfdSAqZ2V0X2hpc3RvcnlfZW50cnkgX19BUkdTKChpbnQgaGlzdHlwZSwgaW50IGlkeCkpOworaW50IGNscl9oaXN0b3J5IF9fQVJHUygoaW50IGhpc3R5cGUpKTsKK2ludCBkZWxfaGlzdG9yeV9lbnRyeSBfX0FSR1MoKGludCBoaXN0eXBlLCBjaGFyX3UgKnN0cikpOworaW50IGRlbF9oaXN0b3J5X2lkeCBfX0FSR1MoKGludCBoaXN0eXBlLCBpbnQgaWR4KSk7Cit2b2lkIHJlbW92ZV9rZXlfZnJvbV9oaXN0b3J5IF9fQVJHUygodm9pZCkpOworaW50IGdldF9saXN0X3JhbmdlIF9fQVJHUygoY2hhcl91ICoqc3RyLCBpbnQgKm51bTEsIGludCAqbnVtMikpOwordm9pZCBleF9oaXN0b3J5IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIHByZXBhcmVfdmltaW5mb19oaXN0b3J5IF9fQVJHUygoaW50IGFza2xlbikpOworaW50IHJlYWRfdmltaW5mb19oaXN0b3J5IF9fQVJHUygodmlyX1QgKnZpcnApKTsKK3ZvaWQgZmluaXNoX3ZpbWluZm9faGlzdG9yeSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgd3JpdGVfdmltaW5mb19oaXN0b3J5IF9fQVJHUygoRklMRSAqZnApKTsKK3ZvaWQgY21kX3BjaGFyIF9fQVJHUygoaW50IGMsIGludCBvZmZzZXQpKTsKK2ludCBjbWRfZ2NoYXIgX19BUkdTKChpbnQgb2Zmc2V0KSk7CitjaGFyX3UgKnNjcmlwdF9nZXQgX19BUkdTKChleGFyZ19UICplYXAsIGNoYXJfdSAqY21kKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9mb2xkLnBybyBiL3NyYy9wcm90by9mb2xkLnBybwppbmRleCA4NTUxMDkzLi4zMzE4YmJkIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vZm9sZC5wcm8KKysrIGIvc3JjL3Byb3RvL2ZvbGQucHJvCkBAIC0xLDQxICsxLDQxIEBACiAvKiBmb2xkLmMgKi8KLWV4dGVybiB2b2lkIGNvcHlGb2xkaW5nU3RhdGUgX19BUkdTKCh3aW5fVCAqd3BfZnJvbSwgd2luX1QgKndwX3RvKSk7Ci1leHRlcm4gaW50IGhhc0FueUZvbGRpbmcgX19BUkdTKCh3aW5fVCAqd2luKSk7Ci1leHRlcm4gaW50IGhhc0ZvbGRpbmcgX19BUkdTKChsaW5lbnJfVCBsbnVtLCBsaW5lbnJfVCAqZmlyc3RwLCBsaW5lbnJfVCAqbGFzdHApKTsKLWV4dGVybiBpbnQgaGFzRm9sZGluZ1dpbiBfX0FSR1MoKHdpbl9UICp3aW4sIGxpbmVucl9UIGxudW0sIGxpbmVucl9UICpmaXJzdHAsIGxpbmVucl9UICpsYXN0cCwgaW50IGNhY2hlLCBmb2xkaW5mb19UICppbmZvcCkpOwotZXh0ZXJuIGludCBmb2xkTGV2ZWwgX19BUkdTKChsaW5lbnJfVCBsbnVtKSk7Ci1leHRlcm4gaW50IGxpbmVGb2xkZWQgX19BUkdTKCh3aW5fVCAqd2luLCBsaW5lbnJfVCBsbnVtKSk7Ci1leHRlcm4gbG9uZyBmb2xkZWRDb3VudCBfX0FSR1MoKHdpbl9UICp3aW4sIGxpbmVucl9UIGxudW0sIGZvbGRpbmZvX1QgKmluZm9wKSk7Ci1leHRlcm4gaW50IGZvbGRtZXRob2RJc01hbnVhbCBfX0FSR1MoKHdpbl9UICp3cCkpOwotZXh0ZXJuIGludCBmb2xkbWV0aG9kSXNJbmRlbnQgX19BUkdTKCh3aW5fVCAqd3ApKTsKLWV4dGVybiBpbnQgZm9sZG1ldGhvZElzRXhwciBfX0FSR1MoKHdpbl9UICp3cCkpOwotZXh0ZXJuIGludCBmb2xkbWV0aG9kSXNNYXJrZXIgX19BUkdTKCh3aW5fVCAqd3ApKTsKLWV4dGVybiBpbnQgZm9sZG1ldGhvZElzU3ludGF4IF9fQVJHUygod2luX1QgKndwKSk7Ci1leHRlcm4gaW50IGZvbGRtZXRob2RJc0RpZmYgX19BUkdTKCh3aW5fVCAqd3ApKTsKLWV4dGVybiB2b2lkIGNsb3NlRm9sZCBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGxvbmcgY291bnQpKTsKLWV4dGVybiB2b2lkIGNsb3NlRm9sZFJlY3Vyc2UgX19BUkdTKChsaW5lbnJfVCBsbnVtKSk7Ci1leHRlcm4gdm9pZCBvcEZvbGRSYW5nZSBfX0FSR1MoKGxpbmVucl9UIGZpcnN0LCBsaW5lbnJfVCBsYXN0LCBpbnQgb3BlbmluZywgaW50IHJlY3Vyc2UsIGludCBoYWRfdmlzdWFsKSk7Ci1leHRlcm4gdm9pZCBvcGVuRm9sZCBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGxvbmcgY291bnQpKTsKLWV4dGVybiB2b2lkIG9wZW5Gb2xkUmVjdXJzZSBfX0FSR1MoKGxpbmVucl9UIGxudW0pKTsKLWV4dGVybiB2b2lkIGZvbGRPcGVuQ3Vyc29yIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbmV3Rm9sZExldmVsIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZm9sZENoZWNrQ2xvc2UgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGZvbGRNYW51YWxBbGxvd2VkIF9fQVJHUygoaW50IGNyZWF0ZSkpOwotZXh0ZXJuIHZvaWQgZm9sZENyZWF0ZSBfX0FSR1MoKGxpbmVucl9UIHN0YXJ0LCBsaW5lbnJfVCBlbmQpKTsKLWV4dGVybiB2b2lkIGRlbGV0ZUZvbGQgX19BUkdTKChsaW5lbnJfVCBzdGFydCwgbGluZW5yX1QgZW5kLCBpbnQgcmVjdXJzaXZlLCBpbnQgaGFkX3Zpc3VhbCkpOwotZXh0ZXJuIHZvaWQgY2xlYXJGb2xkaW5nIF9fQVJHUygod2luX1QgKndpbikpOwotZXh0ZXJuIHZvaWQgZm9sZFVwZGF0ZSBfX0FSR1MoKHdpbl9UICp3cCwgbGluZW5yX1QgdG9wLCBsaW5lbnJfVCBib3QpKTsKLWV4dGVybiB2b2lkIGZvbGRVcGRhdGVBbGwgX19BUkdTKCh3aW5fVCAqd2luKSk7Ci1leHRlcm4gaW50IGZvbGRNb3ZlVG8gX19BUkdTKChpbnQgdXBkb3duLCBpbnQgZGlyLCBsb25nIGNvdW50KSk7Ci1leHRlcm4gdm9pZCBmb2xkSW5pdFdpbiBfX0FSR1MoKHdpbl9UICpuZXd3aW4pKTsKLWV4dGVybiBpbnQgZmluZF93bF9lbnRyeSBfX0FSR1MoKHdpbl9UICp3aW4sIGxpbmVucl9UIGxudW0pKTsKLWV4dGVybiB2b2lkIGZvbGRBZGp1c3RWaXN1YWwgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBmb2xkQWRqdXN0Q3Vyc29yIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgY2xvbmVGb2xkR3Jvd0FycmF5IF9fQVJHUygoZ2FycmF5X1QgKmZyb20sIGdhcnJheV9UICp0bykpOwotZXh0ZXJuIHZvaWQgZGVsZXRlRm9sZFJlY3Vyc2UgX19BUkdTKChnYXJyYXlfVCAqZ2FwKSk7Ci1leHRlcm4gdm9pZCBmb2xkTWFya0FkanVzdCBfX0FSR1MoKHdpbl9UICp3cCwgbGluZW5yX1QgbGluZTEsIGxpbmVucl9UIGxpbmUyLCBsb25nIGFtb3VudCwgbG9uZyBhbW91bnRfYWZ0ZXIpKTsKLWV4dGVybiBpbnQgZ2V0RGVlcGVzdE5lc3RpbmcgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gY2hhcl91ICpnZXRfZm9sZHRleHQgX19BUkdTKCh3aW5fVCAqd3AsIGxpbmVucl9UIGxudW0sIGxpbmVucl9UIGxudW1lLCBmb2xkaW5mb19UICpmb2xkaW5mbywgY2hhcl91ICpidWYpKTsKLWV4dGVybiB2b2lkIGZvbGR0ZXh0X2NsZWFudXAgX19BUkdTKChjaGFyX3UgKnN0cikpOwotZXh0ZXJuIGludCBwdXRfZm9sZHMgX19BUkdTKChGSUxFICpmZCwgd2luX1QgKndwKSk7Cit2b2lkIGNvcHlGb2xkaW5nU3RhdGUgX19BUkdTKCh3aW5fVCAqd3BfZnJvbSwgd2luX1QgKndwX3RvKSk7CitpbnQgaGFzQW55Rm9sZGluZyBfX0FSR1MoKHdpbl9UICp3aW4pKTsKK2ludCBoYXNGb2xkaW5nIF9fQVJHUygobGluZW5yX1QgbG51bSwgbGluZW5yX1QgKmZpcnN0cCwgbGluZW5yX1QgKmxhc3RwKSk7CitpbnQgaGFzRm9sZGluZ1dpbiBfX0FSR1MoKHdpbl9UICp3aW4sIGxpbmVucl9UIGxudW0sIGxpbmVucl9UICpmaXJzdHAsIGxpbmVucl9UICpsYXN0cCwgaW50IGNhY2hlLCBmb2xkaW5mb19UICppbmZvcCkpOworaW50IGZvbGRMZXZlbCBfX0FSR1MoKGxpbmVucl9UIGxudW0pKTsKK2ludCBsaW5lRm9sZGVkIF9fQVJHUygod2luX1QgKndpbiwgbGluZW5yX1QgbG51bSkpOworbG9uZyBmb2xkZWRDb3VudCBfX0FSR1MoKHdpbl9UICp3aW4sIGxpbmVucl9UIGxudW0sIGZvbGRpbmZvX1QgKmluZm9wKSk7CitpbnQgZm9sZG1ldGhvZElzTWFudWFsIF9fQVJHUygod2luX1QgKndwKSk7CitpbnQgZm9sZG1ldGhvZElzSW5kZW50IF9fQVJHUygod2luX1QgKndwKSk7CitpbnQgZm9sZG1ldGhvZElzRXhwciBfX0FSR1MoKHdpbl9UICp3cCkpOworaW50IGZvbGRtZXRob2RJc01hcmtlciBfX0FSR1MoKHdpbl9UICp3cCkpOworaW50IGZvbGRtZXRob2RJc1N5bnRheCBfX0FSR1MoKHdpbl9UICp3cCkpOworaW50IGZvbGRtZXRob2RJc0RpZmYgX19BUkdTKCh3aW5fVCAqd3ApKTsKK3ZvaWQgY2xvc2VGb2xkIF9fQVJHUygobGluZW5yX1QgbG51bSwgbG9uZyBjb3VudCkpOwordm9pZCBjbG9zZUZvbGRSZWN1cnNlIF9fQVJHUygobGluZW5yX1QgbG51bSkpOwordm9pZCBvcEZvbGRSYW5nZSBfX0FSR1MoKGxpbmVucl9UIGZpcnN0LCBsaW5lbnJfVCBsYXN0LCBpbnQgb3BlbmluZywgaW50IHJlY3Vyc2UsIGludCBoYWRfdmlzdWFsKSk7Cit2b2lkIG9wZW5Gb2xkIF9fQVJHUygobGluZW5yX1QgbG51bSwgbG9uZyBjb3VudCkpOwordm9pZCBvcGVuRm9sZFJlY3Vyc2UgX19BUkdTKChsaW5lbnJfVCBsbnVtKSk7Cit2b2lkIGZvbGRPcGVuQ3Vyc29yIF9fQVJHUygodm9pZCkpOwordm9pZCBuZXdGb2xkTGV2ZWwgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGZvbGRDaGVja0Nsb3NlIF9fQVJHUygodm9pZCkpOworaW50IGZvbGRNYW51YWxBbGxvd2VkIF9fQVJHUygoaW50IGNyZWF0ZSkpOwordm9pZCBmb2xkQ3JlYXRlIF9fQVJHUygobGluZW5yX1Qgc3RhcnQsIGxpbmVucl9UIGVuZCkpOwordm9pZCBkZWxldGVGb2xkIF9fQVJHUygobGluZW5yX1Qgc3RhcnQsIGxpbmVucl9UIGVuZCwgaW50IHJlY3Vyc2l2ZSwgaW50IGhhZF92aXN1YWwpKTsKK3ZvaWQgY2xlYXJGb2xkaW5nIF9fQVJHUygod2luX1QgKndpbikpOwordm9pZCBmb2xkVXBkYXRlIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCB0b3AsIGxpbmVucl9UIGJvdCkpOwordm9pZCBmb2xkVXBkYXRlQWxsIF9fQVJHUygod2luX1QgKndpbikpOworaW50IGZvbGRNb3ZlVG8gX19BUkdTKChpbnQgdXBkb3duLCBpbnQgZGlyLCBsb25nIGNvdW50KSk7Cit2b2lkIGZvbGRJbml0V2luIF9fQVJHUygod2luX1QgKm5ld3dpbikpOworaW50IGZpbmRfd2xfZW50cnkgX19BUkdTKCh3aW5fVCAqd2luLCBsaW5lbnJfVCBsbnVtKSk7Cit2b2lkIGZvbGRBZGp1c3RWaXN1YWwgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGZvbGRBZGp1c3RDdXJzb3IgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGNsb25lRm9sZEdyb3dBcnJheSBfX0FSR1MoKGdhcnJheV9UICpmcm9tLCBnYXJyYXlfVCAqdG8pKTsKK3ZvaWQgZGVsZXRlRm9sZFJlY3Vyc2UgX19BUkdTKChnYXJyYXlfVCAqZ2FwKSk7Cit2b2lkIGZvbGRNYXJrQWRqdXN0IF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsaW5lMSwgbGluZW5yX1QgbGluZTIsIGxvbmcgYW1vdW50LCBsb25nIGFtb3VudF9hZnRlcikpOworaW50IGdldERlZXBlc3ROZXN0aW5nIF9fQVJHUygodm9pZCkpOworY2hhcl91ICpnZXRfZm9sZHRleHQgX19BUkdTKCh3aW5fVCAqd3AsIGxpbmVucl9UIGxudW0sIGxpbmVucl9UIGxudW1lLCBmb2xkaW5mb19UICpmb2xkaW5mbywgY2hhcl91ICpidWYpKTsKK3ZvaWQgZm9sZHRleHRfY2xlYW51cCBfX0FSR1MoKGNoYXJfdSAqc3RyKSk7CitpbnQgcHV0X2ZvbGRzIF9fQVJHUygoRklMRSAqZmQsIHdpbl9UICp3cCkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vZ3VpLnBybyBiL3NyYy9wcm90by9ndWkucHJvCmluZGV4IGFlYWJkNDIuLjMyMmRjNzkgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9ndWkucHJvCisrKyBiL3NyYy9wcm90by9ndWkucHJvCkBAIC0xLDY1ICsxLDY1IEBACiAvKiBndWkuYyAqLwotZXh0ZXJuIHZvaWQgZ3VpX3N0YXJ0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZ3VpX3ByZXBhcmUgX19BUkdTKChpbnQgKmFyZ2MsIGNoYXIgKiphcmd2KSk7Ci1leHRlcm4gaW50IGd1aV9pbml0X2NoZWNrIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZ3VpX2luaXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfZXhpdCBfX0FSR1MoKGludCByYykpOwotZXh0ZXJuIHZvaWQgZ3VpX3NoZWxsX2Nsb3NlZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgZ3VpX2luaXRfZm9udCBfX0FSR1MoKGNoYXJfdSAqZm9udF9saXN0LCBpbnQgZm9udHNldCkpOwotZXh0ZXJuIGludCBndWlfZ2V0X3dpZGVfZm9udCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9zZXRfY3Vyc29yIF9fQVJHUygoaW50IHJvdywgaW50IGNvbCkpOwotZXh0ZXJuIHZvaWQgZ3VpX3VwZGF0ZV9jdXJzb3IgX19BUkdTKChpbnQgZm9yY2UsIGludCBjbGVhcl9zZWxlY3Rpb24pKTsKLWV4dGVybiB2b2lkIGd1aV9wb3NpdGlvbl9tZW51IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBndWlfZ2V0X2Jhc2Vfd2lkdGggX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGd1aV9nZXRfYmFzZV9oZWlnaHQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfcmVzaXplX3NoZWxsIF9fQVJHUygoaW50IHBpeGVsX3dpZHRoLCBpbnQgcGl4ZWxfaGVpZ2h0KSk7Ci1leHRlcm4gdm9pZCBndWlfbWF5X3Jlc2l6ZV9zaGVsbCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgZ3VpX2dldF9zaGVsbHNpemUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfc2V0X3NoZWxsc2l6ZSBfX0FSR1MoKGludCBtdXN0c2V0LCBpbnQgZml0X3RvX2Rpc3BsYXksIGludCBkaXJlY3Rpb24pKTsKLWV4dGVybiB2b2lkIGd1aV9uZXdfc2hlbGxzaXplIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZ3VpX3Jlc2V0X3Njcm9sbF9yZWdpb24gX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfc3RhcnRfaGlnaGxpZ2h0IF9fQVJHUygoaW50IG1hc2spKTsKLWV4dGVybiB2b2lkIGd1aV9zdG9wX2hpZ2hsaWdodCBfX0FSR1MoKGludCBtYXNrKSk7Ci1leHRlcm4gdm9pZCBndWlfY2xlYXJfYmxvY2sgX19BUkdTKChpbnQgcm93MSwgaW50IGNvbDEsIGludCByb3cyLCBpbnQgY29sMikpOwotZXh0ZXJuIHZvaWQgZ3VpX3VwZGF0ZV9jdXJzb3JfbGF0ZXIgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfd3JpdGUgX19BUkdTKChjaGFyX3UgKnMsIGludCBsZW4pKTsKLWV4dGVybiB2b2lkIGd1aV9kb250X3VwZGF0ZV9jdXJzb3IgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfY2FuX3VwZGF0ZV9jdXJzb3IgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGd1aV9vdXRzdHJfbm93cmFwIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGVuLCBpbnQgZmxhZ3MsIGd1aWNvbG9yX1QgZmcsIGd1aWNvbG9yX1QgYmcsIGludCBiYWNrKSk7Ci1leHRlcm4gdm9pZCBndWlfdW5kcmF3X2N1cnNvciBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9yZWRyYXcgX19BUkdTKChpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCkpOwotZXh0ZXJuIGludCBndWlfcmVkcmF3X2Jsb2NrIF9fQVJHUygoaW50IHJvdzEsIGludCBjb2wxLCBpbnQgcm93MiwgaW50IGNvbDIsIGludCBmbGFncykpOwotZXh0ZXJuIGludCBndWlfd2FpdF9mb3JfY2hhcnMgX19BUkdTKChsb25nIHd0aW1lKSk7Ci1leHRlcm4gdm9pZCBndWlfc2VuZF9tb3VzZV9ldmVudCBfX0FSR1MoKGludCBidXR0b24sIGludCB4LCBpbnQgeSwgaW50IHJlcGVhdGVkX2NsaWNrLCBpbnRfdSBtb2RpZmllcnMpKTsKLWV4dGVybiBpbnQgZ3VpX3h5MmNvbHJvdyBfX0FSR1MoKGludCB4LCBpbnQgeSwgaW50ICpjb2xwKSk7Ci1leHRlcm4gdm9pZCBndWlfbWVudV9jYiBfX0FSR1MoKHZpbW1lbnVfVCAqbWVudSkpOwotZXh0ZXJuIHZvaWQgZ3VpX2luaXRfd2hpY2hfY29tcG9uZW50cyBfX0FSR1MoKGNoYXJfdSAqb2xkdmFsKSk7Ci1leHRlcm4gaW50IGd1aV91c2VfdGFibGluZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV91cGRhdGVfdGFibGluZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGdldF90YWJsaW5lX2xhYmVsIF9fQVJHUygodGFicGFnZV9UICp0cCwgaW50IHRvb2x0aXApKTsKLWV4dGVybiBpbnQgc2VuZF90YWJsaW5lX2V2ZW50IF9fQVJHUygoaW50IG5yKSk7Ci1leHRlcm4gdm9pZCBzZW5kX3RhYmxpbmVfbWVudV9ldmVudCBfX0FSR1MoKGludCB0YWJpZHgsIGludCBldmVudCkpOwotZXh0ZXJuIHZvaWQgZ3VpX3JlbW92ZV9zY3JvbGxiYXJzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZ3VpX2NyZWF0ZV9zY3JvbGxiYXIgX19BUkdTKChzY3JvbGxiYXJfVCAqc2IsIGludCB0eXBlLCB3aW5fVCAqd3ApKTsKLWV4dGVybiBzY3JvbGxiYXJfVCAqZ3VpX2ZpbmRfc2Nyb2xsYmFyIF9fQVJHUygobG9uZyBpZGVudCkpOwotZXh0ZXJuIHZvaWQgZ3VpX2RyYWdfc2Nyb2xsYmFyIF9fQVJHUygoc2Nyb2xsYmFyX1QgKnNiLCBsb25nIHZhbHVlLCBpbnQgc3RpbGxfZHJhZ2dpbmcpKTsKLWV4dGVybiB2b2lkIGd1aV91cGRhdGVfc2Nyb2xsYmFycyBfX0FSR1MoKGludCBmb3JjZSkpOwotZXh0ZXJuIGludCBndWlfZG9fc2Nyb2xsIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBndWlfZG9faG9yaXpfc2Nyb2xsIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZ3VpX2NoZWNrX2NvbG9ycyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBndWljb2xvcl9UIGd1aV9nZXRfY29sb3IgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBpbnQgZ3VpX2dldF9saWdodG5lc3MgX19BUkdTKChndWljb2xvcl9UIHBpeGVsKSk7Ci1leHRlcm4gdm9pZCBndWlfbmV3X3Njcm9sbGJhcl9jb2xvcnMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfZm9jdXNfY2hhbmdlIF9fQVJHUygoaW50IGluX2ZvY3VzKSk7Ci1leHRlcm4gdm9pZCBndWlfbW91c2VfbW92ZWQgX19BUkdTKChpbnQgeCwgaW50IHkpKTsKLWV4dGVybiB2b2lkIGd1aV9tb3VzZV9jb3JyZWN0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZXhfZ3VpIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gaW50IGd1aV9maW5kX2JpdG1hcCBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgY2hhcl91ICpidWZmZXIsIGNoYXIgKmV4dCkpOwotZXh0ZXJuIHZvaWQgZ3VpX2ZpbmRfaWNvbmZpbGUgX19BUkdTKChjaGFyX3UgKm5hbWUsIGNoYXJfdSAqYnVmZmVyLCBjaGFyICpleHQpKTsKLWV4dGVybiB2b2lkIGRpc3BsYXlfZXJyb3JzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBub19jb25zb2xlX2lucHV0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZ3VpX3VwZGF0ZV9zY3JlZW4gX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gY2hhcl91ICpnZXRfZmluZF9kaWFsb2dfdGV4dCBfX0FSR1MoKGNoYXJfdSAqYXJnLCBpbnQgKnd3b3JkcCwgaW50ICptY2FzZXApKTsKLWV4dGVybiBpbnQgZ3VpX2RvX2ZpbmRyZXBsIF9fQVJHUygoaW50IGZsYWdzLCBjaGFyX3UgKmZpbmRfdGV4dCwgY2hhcl91ICpyZXBsX3RleHQsIGludCBkb3duKSk7Ci1leHRlcm4gdm9pZCBndWlfaGFuZGxlX2Ryb3AgX19BUkdTKChpbnQgeCwgaW50IHksIGludF91IG1vZGlmaWVycywgY2hhcl91ICoqZm5hbWVzLCBpbnQgY291bnQpKTsKK3ZvaWQgZ3VpX3N0YXJ0IF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfcHJlcGFyZSBfX0FSR1MoKGludCAqYXJnYywgY2hhciAqKmFyZ3YpKTsKK2ludCBndWlfaW5pdF9jaGVjayBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX2luaXQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9leGl0IF9fQVJHUygoaW50IHJjKSk7Cit2b2lkIGd1aV9zaGVsbF9jbG9zZWQgX19BUkdTKCh2b2lkKSk7CitpbnQgZ3VpX2luaXRfZm9udCBfX0FSR1MoKGNoYXJfdSAqZm9udF9saXN0LCBpbnQgZm9udHNldCkpOworaW50IGd1aV9nZXRfd2lkZV9mb250IF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfc2V0X2N1cnNvciBfX0FSR1MoKGludCByb3csIGludCBjb2wpKTsKK3ZvaWQgZ3VpX3VwZGF0ZV9jdXJzb3IgX19BUkdTKChpbnQgZm9yY2UsIGludCBjbGVhcl9zZWxlY3Rpb24pKTsKK3ZvaWQgZ3VpX3Bvc2l0aW9uX21lbnUgX19BUkdTKCh2b2lkKSk7CitpbnQgZ3VpX2dldF9iYXNlX3dpZHRoIF9fQVJHUygodm9pZCkpOworaW50IGd1aV9nZXRfYmFzZV9oZWlnaHQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9yZXNpemVfc2hlbGwgX19BUkdTKChpbnQgcGl4ZWxfd2lkdGgsIGludCBwaXhlbF9oZWlnaHQpKTsKK3ZvaWQgZ3VpX21heV9yZXNpemVfc2hlbGwgX19BUkdTKCh2b2lkKSk7CitpbnQgZ3VpX2dldF9zaGVsbHNpemUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9zZXRfc2hlbGxzaXplIF9fQVJHUygoaW50IG11c3RzZXQsIGludCBmaXRfdG9fZGlzcGxheSwgaW50IGRpcmVjdGlvbikpOwordm9pZCBndWlfbmV3X3NoZWxsc2l6ZSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX3Jlc2V0X3Njcm9sbF9yZWdpb24gX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9zdGFydF9oaWdobGlnaHQgX19BUkdTKChpbnQgbWFzaykpOwordm9pZCBndWlfc3RvcF9oaWdobGlnaHQgX19BUkdTKChpbnQgbWFzaykpOwordm9pZCBndWlfY2xlYXJfYmxvY2sgX19BUkdTKChpbnQgcm93MSwgaW50IGNvbDEsIGludCByb3cyLCBpbnQgY29sMikpOwordm9pZCBndWlfdXBkYXRlX2N1cnNvcl9sYXRlciBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX3dyaXRlIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGVuKSk7Cit2b2lkIGd1aV9kb250X3VwZGF0ZV9jdXJzb3IgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9jYW5fdXBkYXRlX2N1cnNvciBfX0FSR1MoKHZvaWQpKTsKK2ludCBndWlfb3V0c3RyX25vd3JhcCBfX0FSR1MoKGNoYXJfdSAqcywgaW50IGxlbiwgaW50IGZsYWdzLCBndWljb2xvcl9UIGZnLCBndWljb2xvcl9UIGJnLCBpbnQgYmFjaykpOwordm9pZCBndWlfdW5kcmF3X2N1cnNvciBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX3JlZHJhdyBfX0FSR1MoKGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoKSk7CitpbnQgZ3VpX3JlZHJhd19ibG9jayBfX0FSR1MoKGludCByb3cxLCBpbnQgY29sMSwgaW50IHJvdzIsIGludCBjb2wyLCBpbnQgZmxhZ3MpKTsKK2ludCBndWlfd2FpdF9mb3JfY2hhcnMgX19BUkdTKChsb25nIHd0aW1lKSk7Cit2b2lkIGd1aV9zZW5kX21vdXNlX2V2ZW50IF9fQVJHUygoaW50IGJ1dHRvbiwgaW50IHgsIGludCB5LCBpbnQgcmVwZWF0ZWRfY2xpY2ssIGludF91IG1vZGlmaWVycykpOworaW50IGd1aV94eTJjb2xyb3cgX19BUkdTKChpbnQgeCwgaW50IHksIGludCAqY29scCkpOwordm9pZCBndWlfbWVudV9jYiBfX0FSR1MoKHZpbW1lbnVfVCAqbWVudSkpOwordm9pZCBndWlfaW5pdF93aGljaF9jb21wb25lbnRzIF9fQVJHUygoY2hhcl91ICpvbGR2YWwpKTsKK2ludCBndWlfdXNlX3RhYmxpbmUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV91cGRhdGVfdGFibGluZSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ2V0X3RhYmxpbmVfbGFiZWwgX19BUkdTKCh0YWJwYWdlX1QgKnRwLCBpbnQgdG9vbHRpcCkpOworaW50IHNlbmRfdGFibGluZV9ldmVudCBfX0FSR1MoKGludCBucikpOwordm9pZCBzZW5kX3RhYmxpbmVfbWVudV9ldmVudCBfX0FSR1MoKGludCB0YWJpZHgsIGludCBldmVudCkpOwordm9pZCBndWlfcmVtb3ZlX3Njcm9sbGJhcnMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9jcmVhdGVfc2Nyb2xsYmFyIF9fQVJHUygoc2Nyb2xsYmFyX1QgKnNiLCBpbnQgdHlwZSwgd2luX1QgKndwKSk7CitzY3JvbGxiYXJfVCAqZ3VpX2ZpbmRfc2Nyb2xsYmFyIF9fQVJHUygobG9uZyBpZGVudCkpOwordm9pZCBndWlfZHJhZ19zY3JvbGxiYXIgX19BUkdTKChzY3JvbGxiYXJfVCAqc2IsIGxvbmcgdmFsdWUsIGludCBzdGlsbF9kcmFnZ2luZykpOwordm9pZCBndWlfdXBkYXRlX3Njcm9sbGJhcnMgX19BUkdTKChpbnQgZm9yY2UpKTsKK2ludCBndWlfZG9fc2Nyb2xsIF9fQVJHUygodm9pZCkpOworaW50IGd1aV9kb19ob3Jpel9zY3JvbGwgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9jaGVja19jb2xvcnMgX19BUkdTKCh2b2lkKSk7CitndWljb2xvcl9UIGd1aV9nZXRfY29sb3IgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK2ludCBndWlfZ2V0X2xpZ2h0bmVzcyBfX0FSR1MoKGd1aWNvbG9yX1QgcGl4ZWwpKTsKK3ZvaWQgZ3VpX25ld19zY3JvbGxiYXJfY29sb3JzIF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfZm9jdXNfY2hhbmdlIF9fQVJHUygoaW50IGluX2ZvY3VzKSk7Cit2b2lkIGd1aV9tb3VzZV9tb3ZlZCBfX0FSR1MoKGludCB4LCBpbnQgeSkpOwordm9pZCBndWlfbW91c2VfY29ycmVjdCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZXhfZ3VpIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7CitpbnQgZ3VpX2ZpbmRfYml0bWFwIF9fQVJHUygoY2hhcl91ICpuYW1lLCBjaGFyX3UgKmJ1ZmZlciwgY2hhciAqZXh0KSk7Cit2b2lkIGd1aV9maW5kX2ljb25maWxlIF9fQVJHUygoY2hhcl91ICpuYW1lLCBjaGFyX3UgKmJ1ZmZlciwgY2hhciAqZXh0KSk7Cit2b2lkIGRpc3BsYXlfZXJyb3JzIF9fQVJHUygodm9pZCkpOworaW50IG5vX2NvbnNvbGVfaW5wdXQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV91cGRhdGVfc2NyZWVuIF9fQVJHUygodm9pZCkpOworY2hhcl91ICpnZXRfZmluZF9kaWFsb2dfdGV4dCBfX0FSR1MoKGNoYXJfdSAqYXJnLCBpbnQgKnd3b3JkcCwgaW50ICptY2FzZXApKTsKK2ludCBndWlfZG9fZmluZHJlcGwgX19BUkdTKChpbnQgZmxhZ3MsIGNoYXJfdSAqZmluZF90ZXh0LCBjaGFyX3UgKnJlcGxfdGV4dCwgaW50IGRvd24pKTsKK3ZvaWQgZ3VpX2hhbmRsZV9kcm9wIF9fQVJHUygoaW50IHgsIGludCB5LCBpbnRfdSBtb2RpZmllcnMsIGNoYXJfdSAqKmZuYW1lcywgaW50IGNvdW50KSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9ndWlfZ3RrX3gxMS5wcm8gYi9zcmMvcHJvdG8vZ3VpX2d0a194MTEucHJvCmluZGV4IGRlYjgwMzkuLjg3ZmY2ZGEgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9ndWlfZ3RrX3gxMS5wcm8KKysrIGIvc3JjL3Byb3RvL2d1aV9ndGtfeDExLnBybwpAQCAtMSw3MyArMSw3MyBAQAogLyogZ3VpX2d0a194MTEuYyAqLwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9wcmVwYXJlIF9fQVJHUygoaW50ICphcmdjLCBjaGFyICoqYXJndikpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9mcmVlX2FsbCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfc2V0X2JsaW5raW5nIF9fQVJHUygobG9uZyB3YWl0dGltZSwgbG9uZyBvbiwgbG9uZyBvZmYpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfc3RvcF9ibGluayBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfc3RhcnRfYmxpbmsgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGd1aV9tY2hfaW5pdF9jaGVjayBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfc2hvd190YWJsaW5lIF9fQVJHUygoaW50IHNob3dpdCkpOwotZXh0ZXJuIGludCBndWlfbWNoX3Nob3dpbmdfdGFibGluZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfdXBkYXRlX3RhYmxpbmUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3NldF9jdXJ0YWIgX19BUkdTKChpbnQgbnIpKTsKLWV4dGVybiBpbnQgZ3VpX21jaF9pbml0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9mb3JrZWQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX25ld19jb2xvcnMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGd1aV9tY2hfb3BlbiBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZXhpdCBfX0FSR1MoKGludCByYykpOwotZXh0ZXJuIGludCBndWlfbWNoX2dldF93aW5wb3MgX19BUkdTKChpbnQgKngsIGludCAqeSkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9zZXRfd2lucG9zIF9fQVJHUygoaW50IHgsIGludCB5KSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3NldF9zaGVsbHNpemUgX19BUkdTKChpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBtaW5fd2lkdGgsIGludCBtaW5faGVpZ2h0LCBpbnQgYmFzZV93aWR0aCwgaW50IGJhc2VfaGVpZ2h0LCBpbnQgZGlyZWN0aW9uKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2dldF9zY3JlZW5fZGltZW5zaW9ucyBfX0FSR1MoKGludCAqc2NyZWVuX3csIGludCAqc2NyZWVuX2gpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfc2V0dGl0bGUgX19BUkdTKChjaGFyX3UgKnRpdGxlLCBjaGFyX3UgKmljb24pKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZW5hYmxlX21lbnUgX19BUkdTKChpbnQgc2hvd2l0KSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3Nob3dfdG9vbGJhciBfX0FSR1MoKGludCBzaG93aXQpKTsKLWV4dGVybiBpbnQgZ3VpX21jaF9hZGp1c3RfY2hhcmhlaWdodCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBHdWlGb250c2V0IGd1aV9tY2hfZ2V0X2ZvbnRzZXQgX19BUkdTKChjaGFyX3UgKm5hbWUsIGludCByZXBvcnRfZXJyb3IsIGludCBmaXhlZF93aWR0aCkpOwotZXh0ZXJuIGNoYXJfdSAqZ3VpX21jaF9mb250X2RpYWxvZyBfX0FSR1MoKGNoYXJfdSAqb2xkdmFsKSk7Ci1leHRlcm4gaW50IGd1aV9tY2hfaW5pdF9mb250IF9fQVJHUygoY2hhcl91ICpmb250X25hbWUsIGludCBmb250c2V0KSk7Ci1leHRlcm4gR3VpRm9udCBndWlfbWNoX2dldF9mb250IF9fQVJHUygoY2hhcl91ICpuYW1lLCBpbnQgcmVwb3J0X2Vycm9yKSk7Ci1leHRlcm4gY2hhcl91ICpndWlfbWNoX2dldF9mb250bmFtZSBfX0FSR1MoKEd1aUZvbnQgZm9udCwgY2hhcl91ICpuYW1lKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3NldF9mb250IF9fQVJHUygoR3VpRm9udCBmb250KSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3NldF9mb250c2V0IF9fQVJHUygoR3VpRm9udHNldCBmb250c2V0KSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2ZyZWVfZm9udCBfX0FSR1MoKEd1aUZvbnQgZm9udCkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9mcmVlX2ZvbnRzZXQgX19BUkdTKChHdWlGb250c2V0IGZvbnRzZXQpKTsKLWV4dGVybiBndWljb2xvcl9UIGd1aV9tY2hfZ2V0X2NvbG9yIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX3NldF9mZ19jb2xvciBfX0FSR1MoKGd1aWNvbG9yX1QgY29sb3IpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfc2V0X2JnX2NvbG9yIF9fQVJHUygoZ3VpY29sb3JfVCBjb2xvcikpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9zZXRfc3BfY29sb3IgX19BUkdTKChndWljb2xvcl9UIGNvbG9yKSk7Ci1leHRlcm4gaW50IGd1aV9ndGsyX2RyYXdfc3RyaW5nIF9fQVJHUygoaW50IHJvdywgaW50IGNvbCwgY2hhcl91ICpzLCBpbnQgbGVuLCBpbnQgZmxhZ3MpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZHJhd19zdHJpbmcgX19BUkdTKChpbnQgcm93LCBpbnQgY29sLCBjaGFyX3UgKnMsIGludCBsZW4sIGludCBmbGFncykpOwotZXh0ZXJuIGludCBndWlfbWNoX2hhc2tleSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIGludCBndWlfZ2V0X3gxMV93aW5kaXMgX19BUkdTKChXaW5kb3cgKndpbiwgRGlzcGxheSAqKmRpcykpOwotZXh0ZXJuIERpc3BsYXkgKmd1aV9tY2hfZ2V0X2Rpc3BsYXkgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2JlZXAgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2ZsYXNoIF9fQVJHUygoaW50IG1zZWMpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfaW52ZXJ0X3JlY3RhbmdsZSBfX0FSR1MoKGludCByLCBpbnQgYywgaW50IG5yLCBpbnQgbmMpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfaWNvbmlmeSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfc2V0X2ZvcmVncm91bmQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2RyYXdfaG9sbG93X2N1cnNvciBfX0FSR1MoKGd1aWNvbG9yX1QgY29sb3IpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZHJhd19wYXJ0X2N1cnNvciBfX0FSR1MoKGludCB3LCBpbnQgaCwgZ3VpY29sb3JfVCBjb2xvcikpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF91cGRhdGUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGd1aV9tY2hfd2FpdF9mb3JfY2hhcnMgX19BUkdTKChsb25nIHd0aW1lKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2ZsdXNoIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9jbGVhcl9ibG9jayBfX0FSR1MoKGludCByb3cxLCBpbnQgY29sMSwgaW50IHJvdzIsIGludCBjb2wyKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2NsZWFyX2FsbCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZGVsZXRlX2xpbmVzIF9fQVJHUygoaW50IHJvdywgaW50IG51bV9saW5lcykpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9pbnNlcnRfbGluZXMgX19BUkdTKChpbnQgcm93LCBpbnQgbnVtX2xpbmVzKSk7Ci1leHRlcm4gdm9pZCBjbGlwX21jaF9yZXF1ZXN0X3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7Ci1leHRlcm4gdm9pZCBjbGlwX21jaF9sb3NlX3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7Ci1leHRlcm4gaW50IGNsaXBfbWNoX293bl9zZWxlY3Rpb24gX19BUkdTKChWaW1DbGlwYm9hcmQgKmNiZCkpOwotZXh0ZXJuIHZvaWQgY2xpcF9tY2hfc2V0X3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX21lbnVfZ3JleSBfX0FSR1MoKHZpbW1lbnVfVCAqbWVudSwgaW50IGdyZXkpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfbWVudV9oaWRkZW4gX19BUkdTKCh2aW1tZW51X1QgKm1lbnUsIGludCBoaWRkZW4pKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZHJhd19tZW51YmFyIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9lbmFibGVfc2Nyb2xsYmFyIF9fQVJHUygoc2Nyb2xsYmFyX1QgKnNiLCBpbnQgZmxhZykpOwotZXh0ZXJuIGxvbmdfdSBndWlfbWNoX2dldF9yZ2IgX19BUkdTKChndWljb2xvcl9UIHBpeGVsKSk7Ci1leHRlcm4gdm9pZCBndWlfbWNoX2dldG1vdXNlIF9fQVJHUygoaW50ICp4LCBpbnQgKnkpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfc2V0bW91c2UgX19BUkdTKChpbnQgeCwgaW50IHkpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfbW91c2VoaWRlIF9fQVJHUygoaW50IGhpZGUpKTsKLWV4dGVybiB2b2lkIG1jaF9zZXRfbW91c2Vfc2hhcGUgX19BUkdTKChpbnQgc2hhcGUpKTsKLWV4dGVybiB2b2lkIGd1aV9tY2hfZHJhd3NpZ24gX19BUkdTKChpbnQgcm93LCBpbnQgY29sLCBpbnQgdHlwZW5yKSk7Ci1leHRlcm4gdm9pZCAqZ3VpX21jaF9yZWdpc3Rlcl9zaWduIF9fQVJHUygoY2hhcl91ICpzaWduZmlsZSkpOwotZXh0ZXJuIHZvaWQgZ3VpX21jaF9kZXN0cm95X3NpZ24gX19BUkdTKCh2b2lkICpzaWduKSk7Cit2b2lkIGd1aV9tY2hfcHJlcGFyZSBfX0FSR1MoKGludCAqYXJnYywgY2hhciAqKmFyZ3YpKTsKK3ZvaWQgZ3VpX21jaF9mcmVlX2FsbCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX21jaF9zZXRfYmxpbmtpbmcgX19BUkdTKChsb25nIHdhaXR0aW1lLCBsb25nIG9uLCBsb25nIG9mZikpOwordm9pZCBndWlfbWNoX3N0b3BfYmxpbmsgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9tY2hfc3RhcnRfYmxpbmsgX19BUkdTKCh2b2lkKSk7CitpbnQgZ3VpX21jaF9pbml0X2NoZWNrIF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfbWNoX3Nob3dfdGFibGluZSBfX0FSR1MoKGludCBzaG93aXQpKTsKK2ludCBndWlfbWNoX3Nob3dpbmdfdGFibGluZSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX21jaF91cGRhdGVfdGFibGluZSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX21jaF9zZXRfY3VydGFiIF9fQVJHUygoaW50IG5yKSk7CitpbnQgZ3VpX21jaF9pbml0IF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfbWNoX2ZvcmtlZCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX21jaF9uZXdfY29sb3JzIF9fQVJHUygodm9pZCkpOworaW50IGd1aV9tY2hfb3BlbiBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX21jaF9leGl0IF9fQVJHUygoaW50IHJjKSk7CitpbnQgZ3VpX21jaF9nZXRfd2lucG9zIF9fQVJHUygoaW50ICp4LCBpbnQgKnkpKTsKK3ZvaWQgZ3VpX21jaF9zZXRfd2lucG9zIF9fQVJHUygoaW50IHgsIGludCB5KSk7Cit2b2lkIGd1aV9tY2hfc2V0X3NoZWxsc2l6ZSBfX0FSR1MoKGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG1pbl93aWR0aCwgaW50IG1pbl9oZWlnaHQsIGludCBiYXNlX3dpZHRoLCBpbnQgYmFzZV9oZWlnaHQsIGludCBkaXJlY3Rpb24pKTsKK3ZvaWQgZ3VpX21jaF9nZXRfc2NyZWVuX2RpbWVuc2lvbnMgX19BUkdTKChpbnQgKnNjcmVlbl93LCBpbnQgKnNjcmVlbl9oKSk7Cit2b2lkIGd1aV9tY2hfc2V0dGl0bGUgX19BUkdTKChjaGFyX3UgKnRpdGxlLCBjaGFyX3UgKmljb24pKTsKK3ZvaWQgZ3VpX21jaF9lbmFibGVfbWVudSBfX0FSR1MoKGludCBzaG93aXQpKTsKK3ZvaWQgZ3VpX21jaF9zaG93X3Rvb2xiYXIgX19BUkdTKChpbnQgc2hvd2l0KSk7CitpbnQgZ3VpX21jaF9hZGp1c3RfY2hhcmhlaWdodCBfX0FSR1MoKHZvaWQpKTsKK0d1aUZvbnRzZXQgZ3VpX21jaF9nZXRfZm9udHNldCBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgaW50IHJlcG9ydF9lcnJvciwgaW50IGZpeGVkX3dpZHRoKSk7CitjaGFyX3UgKmd1aV9tY2hfZm9udF9kaWFsb2cgX19BUkdTKChjaGFyX3UgKm9sZHZhbCkpOworaW50IGd1aV9tY2hfaW5pdF9mb250IF9fQVJHUygoY2hhcl91ICpmb250X25hbWUsIGludCBmb250c2V0KSk7CitHdWlGb250IGd1aV9tY2hfZ2V0X2ZvbnQgX19BUkdTKChjaGFyX3UgKm5hbWUsIGludCByZXBvcnRfZXJyb3IpKTsKK2NoYXJfdSAqZ3VpX21jaF9nZXRfZm9udG5hbWUgX19BUkdTKChHdWlGb250IGZvbnQsIGNoYXJfdSAqbmFtZSkpOwordm9pZCBndWlfbWNoX3NldF9mb250IF9fQVJHUygoR3VpRm9udCBmb250KSk7Cit2b2lkIGd1aV9tY2hfc2V0X2ZvbnRzZXQgX19BUkdTKChHdWlGb250c2V0IGZvbnRzZXQpKTsKK3ZvaWQgZ3VpX21jaF9mcmVlX2ZvbnQgX19BUkdTKChHdWlGb250IGZvbnQpKTsKK3ZvaWQgZ3VpX21jaF9mcmVlX2ZvbnRzZXQgX19BUkdTKChHdWlGb250c2V0IGZvbnRzZXQpKTsKK2d1aWNvbG9yX1QgZ3VpX21jaF9nZXRfY29sb3IgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK3ZvaWQgZ3VpX21jaF9zZXRfZmdfY29sb3IgX19BUkdTKChndWljb2xvcl9UIGNvbG9yKSk7Cit2b2lkIGd1aV9tY2hfc2V0X2JnX2NvbG9yIF9fQVJHUygoZ3VpY29sb3JfVCBjb2xvcikpOwordm9pZCBndWlfbWNoX3NldF9zcF9jb2xvciBfX0FSR1MoKGd1aWNvbG9yX1QgY29sb3IpKTsKK2ludCBndWlfZ3RrMl9kcmF3X3N0cmluZyBfX0FSR1MoKGludCByb3csIGludCBjb2wsIGNoYXJfdSAqcywgaW50IGxlbiwgaW50IGZsYWdzKSk7Cit2b2lkIGd1aV9tY2hfZHJhd19zdHJpbmcgX19BUkdTKChpbnQgcm93LCBpbnQgY29sLCBjaGFyX3UgKnMsIGludCBsZW4sIGludCBmbGFncykpOworaW50IGd1aV9tY2hfaGFza2V5IF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitpbnQgZ3VpX2dldF94MTFfd2luZGlzIF9fQVJHUygoV2luZG93ICp3aW4sIERpc3BsYXkgKipkaXMpKTsKK0Rpc3BsYXkgKmd1aV9tY2hfZ2V0X2Rpc3BsYXkgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9tY2hfYmVlcCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX21jaF9mbGFzaCBfX0FSR1MoKGludCBtc2VjKSk7Cit2b2lkIGd1aV9tY2hfaW52ZXJ0X3JlY3RhbmdsZSBfX0FSR1MoKGludCByLCBpbnQgYywgaW50IG5yLCBpbnQgbmMpKTsKK3ZvaWQgZ3VpX21jaF9pY29uaWZ5IF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfbWNoX3NldF9mb3JlZ3JvdW5kIF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfbWNoX2RyYXdfaG9sbG93X2N1cnNvciBfX0FSR1MoKGd1aWNvbG9yX1QgY29sb3IpKTsKK3ZvaWQgZ3VpX21jaF9kcmF3X3BhcnRfY3Vyc29yIF9fQVJHUygoaW50IHcsIGludCBoLCBndWljb2xvcl9UIGNvbG9yKSk7Cit2b2lkIGd1aV9tY2hfdXBkYXRlIF9fQVJHUygodm9pZCkpOworaW50IGd1aV9tY2hfd2FpdF9mb3JfY2hhcnMgX19BUkdTKChsb25nIHd0aW1lKSk7Cit2b2lkIGd1aV9tY2hfZmx1c2ggX19BUkdTKCh2b2lkKSk7Cit2b2lkIGd1aV9tY2hfY2xlYXJfYmxvY2sgX19BUkdTKChpbnQgcm93MSwgaW50IGNvbDEsIGludCByb3cyLCBpbnQgY29sMikpOwordm9pZCBndWlfbWNoX2NsZWFyX2FsbCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ3VpX21jaF9kZWxldGVfbGluZXMgX19BUkdTKChpbnQgcm93LCBpbnQgbnVtX2xpbmVzKSk7Cit2b2lkIGd1aV9tY2hfaW5zZXJ0X2xpbmVzIF9fQVJHUygoaW50IHJvdywgaW50IG51bV9saW5lcykpOwordm9pZCBjbGlwX21jaF9yZXF1ZXN0X3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7Cit2b2lkIGNsaXBfbWNoX2xvc2Vfc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKK2ludCBjbGlwX21jaF9vd25fc2VsZWN0aW9uIF9fQVJHUygoVmltQ2xpcGJvYXJkICpjYmQpKTsKK3ZvaWQgY2xpcF9tY2hfc2V0X3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7Cit2b2lkIGd1aV9tY2hfbWVudV9ncmV5IF9fQVJHUygodmltbWVudV9UICptZW51LCBpbnQgZ3JleSkpOwordm9pZCBndWlfbWNoX21lbnVfaGlkZGVuIF9fQVJHUygodmltbWVudV9UICptZW51LCBpbnQgaGlkZGVuKSk7Cit2b2lkIGd1aV9tY2hfZHJhd19tZW51YmFyIF9fQVJHUygodm9pZCkpOwordm9pZCBndWlfbWNoX2VuYWJsZV9zY3JvbGxiYXIgX19BUkdTKChzY3JvbGxiYXJfVCAqc2IsIGludCBmbGFnKSk7Citsb25nX3UgZ3VpX21jaF9nZXRfcmdiIF9fQVJHUygoZ3VpY29sb3JfVCBwaXhlbCkpOwordm9pZCBndWlfbWNoX2dldG1vdXNlIF9fQVJHUygoaW50ICp4LCBpbnQgKnkpKTsKK3ZvaWQgZ3VpX21jaF9zZXRtb3VzZSBfX0FSR1MoKGludCB4LCBpbnQgeSkpOwordm9pZCBndWlfbWNoX21vdXNlaGlkZSBfX0FSR1MoKGludCBoaWRlKSk7Cit2b2lkIG1jaF9zZXRfbW91c2Vfc2hhcGUgX19BUkdTKChpbnQgc2hhcGUpKTsKK3ZvaWQgZ3VpX21jaF9kcmF3c2lnbiBfX0FSR1MoKGludCByb3csIGludCBjb2wsIGludCB0eXBlbnIpKTsKK3ZvaWQgKmd1aV9tY2hfcmVnaXN0ZXJfc2lnbiBfX0FSR1MoKGNoYXJfdSAqc2lnbmZpbGUpKTsKK3ZvaWQgZ3VpX21jaF9kZXN0cm95X3NpZ24gX19BUkdTKCh2b2lkICpzaWduKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9ndWlfeG1kbGcucHJvIGIvc3JjL3Byb3RvL2d1aV94bWRsZy5wcm8KaW5kZXggZGM2NjU1YS4uNGY4OGMyZiAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL2d1aV94bWRsZy5wcm8KKysrIGIvc3JjL3Byb3RvL2d1aV94bWRsZy5wcm8KQEAgLTEsMyArMSwzIEBACiAvKiBndWlfeG1kbGcuYyAqLwotZXh0ZXJuIGNoYXJfdSAqZ3VpX3htX3NlbGVjdF9mb250IF9fQVJHUygoY2hhcl91ICpjdXJyZW50KSk7CitjaGFyX3UgKmd1aV94bV9zZWxlY3RfZm9udCBfX0FSR1MoKGNoYXJfdSAqY3VycmVudCkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vaGFzaHRhYi5wcm8gYi9zcmMvcHJvdG8vaGFzaHRhYi5wcm8KaW5kZXggOTBhYmI5Zi4uZTNjMjJiNyAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL2hhc2h0YWIucHJvCisrKyBiL3NyYy9wcm90by9oYXNodGFiLnBybwpAQCAtMSwxNCArMSwxNCBAQAogLyogaGFzaHRhYi5jICovCi1leHRlcm4gdm9pZCBoYXNoX2luaXQgX19BUkdTKChoYXNodGFiX1QgKmh0KSk7Ci1leHRlcm4gdm9pZCBoYXNoX2NsZWFyIF9fQVJHUygoaGFzaHRhYl9UICpodCkpOwotZXh0ZXJuIHZvaWQgaGFzaF9jbGVhcl9hbGwgX19BUkdTKChoYXNodGFiX1QgKmh0LCBpbnQgb2ZmKSk7Ci1leHRlcm4gaGFzaGl0ZW1fVCAqaGFzaF9maW5kIF9fQVJHUygoaGFzaHRhYl9UICpodCwgY2hhcl91ICprZXkpKTsKLWV4dGVybiBoYXNoaXRlbV9UICpoYXNoX2xvb2t1cCBfX0FSR1MoKGhhc2h0YWJfVCAqaHQsIGNoYXJfdSAqa2V5LCBoYXNoX1QgaGFzaCkpOwotZXh0ZXJuIHZvaWQgaGFzaF9kZWJ1Z19yZXN1bHRzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBoYXNoX2FkZCBfX0FSR1MoKGhhc2h0YWJfVCAqaHQsIGNoYXJfdSAqa2V5KSk7Ci1leHRlcm4gaW50IGhhc2hfYWRkX2l0ZW0gX19BUkdTKChoYXNodGFiX1QgKmh0LCBoYXNoaXRlbV9UICpoaSwgY2hhcl91ICprZXksIGhhc2hfVCBoYXNoKSk7Ci1leHRlcm4gdm9pZCBoYXNoX3JlbW92ZSBfX0FSR1MoKGhhc2h0YWJfVCAqaHQsIGhhc2hpdGVtX1QgKmhpKSk7Ci1leHRlcm4gdm9pZCBoYXNoX2xvY2sgX19BUkdTKChoYXNodGFiX1QgKmh0KSk7Ci1leHRlcm4gdm9pZCBoYXNoX3VubG9jayBfX0FSR1MoKGhhc2h0YWJfVCAqaHQpKTsKLWV4dGVybiBoYXNoX1QgaGFzaF9oYXNoIF9fQVJHUygoY2hhcl91ICprZXkpKTsKK3ZvaWQgaGFzaF9pbml0IF9fQVJHUygoaGFzaHRhYl9UICpodCkpOwordm9pZCBoYXNoX2NsZWFyIF9fQVJHUygoaGFzaHRhYl9UICpodCkpOwordm9pZCBoYXNoX2NsZWFyX2FsbCBfX0FSR1MoKGhhc2h0YWJfVCAqaHQsIGludCBvZmYpKTsKK2hhc2hpdGVtX1QgKmhhc2hfZmluZCBfX0FSR1MoKGhhc2h0YWJfVCAqaHQsIGNoYXJfdSAqa2V5KSk7CitoYXNoaXRlbV9UICpoYXNoX2xvb2t1cCBfX0FSR1MoKGhhc2h0YWJfVCAqaHQsIGNoYXJfdSAqa2V5LCBoYXNoX1QgaGFzaCkpOwordm9pZCBoYXNoX2RlYnVnX3Jlc3VsdHMgX19BUkdTKCh2b2lkKSk7CitpbnQgaGFzaF9hZGQgX19BUkdTKChoYXNodGFiX1QgKmh0LCBjaGFyX3UgKmtleSkpOworaW50IGhhc2hfYWRkX2l0ZW0gX19BUkdTKChoYXNodGFiX1QgKmh0LCBoYXNoaXRlbV9UICpoaSwgY2hhcl91ICprZXksIGhhc2hfVCBoYXNoKSk7Cit2b2lkIGhhc2hfcmVtb3ZlIF9fQVJHUygoaGFzaHRhYl9UICpodCwgaGFzaGl0ZW1fVCAqaGkpKTsKK3ZvaWQgaGFzaF9sb2NrIF9fQVJHUygoaGFzaHRhYl9UICpodCkpOwordm9pZCBoYXNoX3VubG9jayBfX0FSR1MoKGhhc2h0YWJfVCAqaHQpKTsKK2hhc2hfVCBoYXNoX2hhc2ggX19BUkdTKChjaGFyX3UgKmtleSkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vaWZfdGNsLnBybyBiL3NyYy9wcm90by9pZl90Y2wucHJvCmluZGV4IDJhZjkxNzQuLjA2NzllZDQgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9pZl90Y2wucHJvCisrKyBiL3NyYy9wcm90by9pZl90Y2wucHJvCkBAIC0xLDEwICsxLDEwIEBACiAvKiBpZl90Y2wuYyAqLwotZXh0ZXJuIHZvaWQgdmltX3RjbF9pbml0IF9fQVJHUygoY2hhciAqYXJnKSk7Ci1leHRlcm4gaW50IHRjbF9lbmFibGVkIF9fQVJHUygoaW50IHZlcmJvc2UpKTsKLWV4dGVybiB2b2lkIHRjbF9lbmQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBleF90Y2wgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X3RjbGZpbGUgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X3RjbGRvIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCB0Y2xfYnVmZmVyX2ZyZWUgX19BUkdTKChidWZfVCAqYnVmKSk7Ci1leHRlcm4gdm9pZCB0Y2xfd2luZG93X2ZyZWUgX19BUkdTKCh3aW5fVCAqd2luKSk7Cit2b2lkIHZpbV90Y2xfaW5pdCBfX0FSR1MoKGNoYXIgKmFyZykpOworaW50IHRjbF9lbmFibGVkIF9fQVJHUygoaW50IHZlcmJvc2UpKTsKK3ZvaWQgdGNsX2VuZCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZXhfdGNsIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X3RjbGZpbGUgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfdGNsZG8gX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgdGNsX2J1ZmZlcl9mcmVlIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwordm9pZCB0Y2xfd2luZG93X2ZyZWUgX19BUkdTKCh3aW5fVCAqd2luKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9tYWluLnBybyBiL3NyYy9wcm90by9tYWluLnBybwppbmRleCA5M2EzMTJmLi4yZWNjZTc5IDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vbWFpbi5wcm8KKysrIGIvc3JjL3Byb3RvL21haW4ucHJvCkBAIC0xLDI2ICsxLDI2IEBACiAvKiBtYWluLmMgKi8KLWV4dGVybiB2b2lkIG1haW5fbG9vcCBfX0FSR1MoKGludCBjbWR3aW4sIGludCBub2V4bW9kZSkpOwotZXh0ZXJuIHZvaWQgZ2V0b3V0X3ByZXNlcnZlX21vZGlmaWVkIF9fQVJHUygoaW50IGV4aXR2YWwpKTsKLWV4dGVybiB2b2lkIGdldG91dCBfX0FSR1MoKGludCBleGl0dmFsKSk7Ci1leHRlcm4gaW50IHByb2Nlc3NfZW52IF9fQVJHUygoY2hhcl91ICplbnYsIGludCBpc192aW1pbml0KSk7Ci1leHRlcm4gdm9pZCBtYWluZXJyX2FyZ19taXNzaW5nIF9fQVJHUygoY2hhcl91ICpzdHIpKTsKLWV4dGVybiB2b2lkIHRpbWVfcHVzaCBfX0FSR1MoKHZvaWQgKnR2X3JlbCwgdm9pZCAqdHZfc3RhcnQpKTsKLWV4dGVybiB2b2lkIHRpbWVfcG9wIF9fQVJHUygodm9pZCAqdHApKTsKLWV4dGVybiB2b2lkIHRpbWVfbXNnIF9fQVJHUygoY2hhciAqbXNnLCB2b2lkICp0dl9zdGFydCkpOwotZXh0ZXJuIHZvaWQgc2VydmVyX3RvX2lucHV0X2J1ZiBfX0FSR1MoKGNoYXJfdSAqc3RyKSk7Ci1leHRlcm4gY2hhcl91ICpldmFsX2NsaWVudF9leHByX3RvX3N0cmluZyBfX0FSR1MoKGNoYXJfdSAqZXhwcikpOwotZXh0ZXJuIGNoYXJfdSAqc2VydmVyQ29udmVydCBfX0FSR1MoKGNoYXJfdSAqY2xpZW50X2VuYywgY2hhcl91ICpkYXRhLCBjaGFyX3UgKip0b2ZyZWUpKTsKLWV4dGVybiBpbnQgdG9GX1R5QSBfX0FSR1MoKGludCBjKSk7Ci1leHRlcm4gaW50IGZrbWFwIF9fQVJHUygoaW50IGMpKTsKLWV4dGVybiB2b2lkIGNvbnZfdG9fcHZpbSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGNvbnZfdG9fcHN0ZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBjaGFyX3UgKmxyc3dhcCBfX0FSR1MoKGNoYXJfdSAqaWJ1ZikpOwotZXh0ZXJuIGNoYXJfdSAqbHJGc3dhcCBfX0FSR1MoKGNoYXJfdSAqY21kYnVmLCBpbnQgbGVuKSk7Ci1leHRlcm4gY2hhcl91ICpsckZfc3ViIF9fQVJHUygoY2hhcl91ICppYnVmKSk7Ci1leHRlcm4gaW50IGNtZGxfZmttYXAgX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIGludCBGX2lzYWxwaGEgX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIGludCBGX2lzZGlnaXQgX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIGludCBGX2lzY2hhciBfX0FSR1MoKGludCBjKSk7Ci1leHRlcm4gdm9pZCBmYXJzaV9ma2V5IF9fQVJHUygoY21kYXJnX1QgKmNhcCkpOwotZXh0ZXJuIGludCBhcmFiaWNfc2hhcGUgX19BUkdTKChpbnQgYywgaW50ICpjY3AsIGludCAqYzFwLCBpbnQgcHJldl9jLCBpbnQgcHJldl9jMSwgaW50IG5leHRfYykpOwordm9pZCBtYWluX2xvb3AgX19BUkdTKChpbnQgY21kd2luLCBpbnQgbm9leG1vZGUpKTsKK3ZvaWQgZ2V0b3V0X3ByZXNlcnZlX21vZGlmaWVkIF9fQVJHUygoaW50IGV4aXR2YWwpKTsKK3ZvaWQgZ2V0b3V0IF9fQVJHUygoaW50IGV4aXR2YWwpKTsKK2ludCBwcm9jZXNzX2VudiBfX0FSR1MoKGNoYXJfdSAqZW52LCBpbnQgaXNfdmltaW5pdCkpOwordm9pZCBtYWluZXJyX2FyZ19taXNzaW5nIF9fQVJHUygoY2hhcl91ICpzdHIpKTsKK3ZvaWQgdGltZV9wdXNoIF9fQVJHUygodm9pZCAqdHZfcmVsLCB2b2lkICp0dl9zdGFydCkpOwordm9pZCB0aW1lX3BvcCBfX0FSR1MoKHZvaWQgKnRwKSk7Cit2b2lkIHRpbWVfbXNnIF9fQVJHUygoY2hhciAqbXNnLCB2b2lkICp0dl9zdGFydCkpOwordm9pZCBzZXJ2ZXJfdG9faW5wdXRfYnVmIF9fQVJHUygoY2hhcl91ICpzdHIpKTsKK2NoYXJfdSAqZXZhbF9jbGllbnRfZXhwcl90b19zdHJpbmcgX19BUkdTKChjaGFyX3UgKmV4cHIpKTsKK2NoYXJfdSAqc2VydmVyQ29udmVydCBfX0FSR1MoKGNoYXJfdSAqY2xpZW50X2VuYywgY2hhcl91ICpkYXRhLCBjaGFyX3UgKip0b2ZyZWUpKTsKK2ludCB0b0ZfVHlBIF9fQVJHUygoaW50IGMpKTsKK2ludCBma21hcCBfX0FSR1MoKGludCBjKSk7Cit2b2lkIGNvbnZfdG9fcHZpbSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgY29udl90b19wc3RkIF9fQVJHUygodm9pZCkpOworY2hhcl91ICpscnN3YXAgX19BUkdTKChjaGFyX3UgKmlidWYpKTsKK2NoYXJfdSAqbHJGc3dhcCBfX0FSR1MoKGNoYXJfdSAqY21kYnVmLCBpbnQgbGVuKSk7CitjaGFyX3UgKmxyRl9zdWIgX19BUkdTKChjaGFyX3UgKmlidWYpKTsKK2ludCBjbWRsX2ZrbWFwIF9fQVJHUygoaW50IGMpKTsKK2ludCBGX2lzYWxwaGEgX19BUkdTKChpbnQgYykpOworaW50IEZfaXNkaWdpdCBfX0FSR1MoKGludCBjKSk7CitpbnQgRl9pc2NoYXIgX19BUkdTKChpbnQgYykpOwordm9pZCBmYXJzaV9ma2V5IF9fQVJHUygoY21kYXJnX1QgKmNhcCkpOworaW50IGFyYWJpY19zaGFwZSBfX0FSR1MoKGludCBjLCBpbnQgKmNjcCwgaW50ICpjMXAsIGludCBwcmV2X2MsIGludCBwcmV2X2MxLCBpbnQgbmV4dF9jKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9tYXJrLnBybyBiL3NyYy9wcm90by9tYXJrLnBybwppbmRleCBmZTQ0MDMxLi4xM2UxODY4IDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vbWFyay5wcm8KKysrIGIvc3JjL3Byb3RvL21hcmsucHJvCkBAIC0xLDMwICsxLDMwIEBACiAvKiBtYXJrLmMgKi8KLWV4dGVybiBpbnQgc2V0bWFyayBfX0FSR1MoKGludCBjKSk7Ci1leHRlcm4gaW50IHNldG1hcmtfcG9zIF9fQVJHUygoaW50IGMsIHBvc19UICpwb3MsIGludCBmbnVtKSk7Ci1leHRlcm4gdm9pZCBzZXRwY21hcmsgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBjaGVja3BjbWFyayBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBwb3NfVCAqbW92ZW1hcmsgX19BUkdTKChpbnQgY291bnQpKTsKLWV4dGVybiBwb3NfVCAqbW92ZWNoYW5nZWxpc3QgX19BUkdTKChpbnQgY291bnQpKTsKLWV4dGVybiBwb3NfVCAqZ2V0bWFyayBfX0FSR1MoKGludCBjLCBpbnQgY2hhbmdlZmlsZSkpOwotZXh0ZXJuIHBvc19UICpnZXRtYXJrX2ZudW0gX19BUkdTKChpbnQgYywgaW50IGNoYW5nZWZpbGUsIGludCAqZm51bSkpOwotZXh0ZXJuIHBvc19UICpnZXRuZXh0bWFyayBfX0FSR1MoKHBvc19UICpzdGFydHBvcywgaW50IGRpciwgaW50IGJlZ2luX2xpbmUpKTsKLWV4dGVybiB2b2lkIGZtYXJrc19jaGVja19uYW1lcyBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKLWV4dGVybiBpbnQgY2hlY2tfbWFyayBfX0FSR1MoKHBvc19UICpwb3MpKTsKLWV4dGVybiB2b2lkIGNscmFsbG1hcmtzIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotZXh0ZXJuIGNoYXJfdSAqZm1fZ2V0bmFtZSBfX0FSR1MoKGZtYXJrX1QgKmZtYXJrLCBpbnQgbGVhZF9sZW4pKTsKLWV4dGVybiB2b2lkIGRvX21hcmtzIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBleF9kZWxtYXJrcyBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfanVtcHMgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X2NoYW5nZXMgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIG1hcmtfYWRqdXN0IF9fQVJHUygobGluZW5yX1QgbGluZTEsIGxpbmVucl9UIGxpbmUyLCBsb25nIGFtb3VudCwgbG9uZyBhbW91bnRfYWZ0ZXIpKTsKLWV4dGVybiB2b2lkIG1hcmtfY29sX2FkanVzdCBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGNvbG5yX1QgbWluY29sLCBsb25nIGxudW1fYW1vdW50LCBsb25nIGNvbF9hbW91bnQpKTsKLWV4dGVybiB2b2lkIGNvcHlfanVtcGxpc3QgX19BUkdTKCh3aW5fVCAqZnJvbSwgd2luX1QgKnRvKSk7Ci1leHRlcm4gdm9pZCBmcmVlX2p1bXBsaXN0IF9fQVJHUygod2luX1QgKndwKSk7Ci1leHRlcm4gdm9pZCBzZXRfbGFzdF9jdXJzb3IgX19BUkdTKCh3aW5fVCAqd2luKSk7Ci1leHRlcm4gdm9pZCBmcmVlX2FsbF9tYXJrcyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgcmVhZF92aW1pbmZvX2ZpbGVtYXJrIF9fQVJHUygodmlyX1QgKnZpcnAsIGludCBmb3JjZSkpOwotZXh0ZXJuIHZvaWQgd3JpdGVfdmltaW5mb19maWxlbWFya3MgX19BUkdTKChGSUxFICpmcCkpOwotZXh0ZXJuIGludCByZW1vdmFibGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBpbnQgd3JpdGVfdmltaW5mb19tYXJrcyBfX0FSR1MoKEZJTEUgKmZwX291dCkpOwotZXh0ZXJuIHZvaWQgY29weV92aW1pbmZvX21hcmtzIF9fQVJHUygodmlyX1QgKnZpcnAsIEZJTEUgKmZwX291dCwgaW50IGNvdW50LCBpbnQgZW9mKSk7CitpbnQgc2V0bWFyayBfX0FSR1MoKGludCBjKSk7CitpbnQgc2V0bWFya19wb3MgX19BUkdTKChpbnQgYywgcG9zX1QgKnBvcywgaW50IGZudW0pKTsKK3ZvaWQgc2V0cGNtYXJrIF9fQVJHUygodm9pZCkpOwordm9pZCBjaGVja3BjbWFyayBfX0FSR1MoKHZvaWQpKTsKK3Bvc19UICptb3ZlbWFyayBfX0FSR1MoKGludCBjb3VudCkpOworcG9zX1QgKm1vdmVjaGFuZ2VsaXN0IF9fQVJHUygoaW50IGNvdW50KSk7Citwb3NfVCAqZ2V0bWFyayBfX0FSR1MoKGludCBjLCBpbnQgY2hhbmdlZmlsZSkpOworcG9zX1QgKmdldG1hcmtfZm51bSBfX0FSR1MoKGludCBjLCBpbnQgY2hhbmdlZmlsZSwgaW50ICpmbnVtKSk7Citwb3NfVCAqZ2V0bmV4dG1hcmsgX19BUkdTKChwb3NfVCAqc3RhcnRwb3MsIGludCBkaXIsIGludCBiZWdpbl9saW5lKSk7Cit2b2lkIGZtYXJrc19jaGVja19uYW1lcyBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKK2ludCBjaGVja19tYXJrIF9fQVJHUygocG9zX1QgKnBvcykpOwordm9pZCBjbHJhbGxtYXJrcyBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKK2NoYXJfdSAqZm1fZ2V0bmFtZSBfX0FSR1MoKGZtYXJrX1QgKmZtYXJrLCBpbnQgbGVhZF9sZW4pKTsKK3ZvaWQgZG9fbWFya3MgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfZGVsbWFya3MgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfanVtcHMgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfY2hhbmdlcyBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBtYXJrX2FkanVzdCBfX0FSR1MoKGxpbmVucl9UIGxpbmUxLCBsaW5lbnJfVCBsaW5lMiwgbG9uZyBhbW91bnQsIGxvbmcgYW1vdW50X2FmdGVyKSk7Cit2b2lkIG1hcmtfY29sX2FkanVzdCBfX0FSR1MoKGxpbmVucl9UIGxudW0sIGNvbG5yX1QgbWluY29sLCBsb25nIGxudW1fYW1vdW50LCBsb25nIGNvbF9hbW91bnQpKTsKK3ZvaWQgY29weV9qdW1wbGlzdCBfX0FSR1MoKHdpbl9UICpmcm9tLCB3aW5fVCAqdG8pKTsKK3ZvaWQgZnJlZV9qdW1wbGlzdCBfX0FSR1MoKHdpbl9UICp3cCkpOwordm9pZCBzZXRfbGFzdF9jdXJzb3IgX19BUkdTKCh3aW5fVCAqd2luKSk7Cit2b2lkIGZyZWVfYWxsX21hcmtzIF9fQVJHUygodm9pZCkpOworaW50IHJlYWRfdmltaW5mb19maWxlbWFyayBfX0FSR1MoKHZpcl9UICp2aXJwLCBpbnQgZm9yY2UpKTsKK3ZvaWQgd3JpdGVfdmltaW5mb19maWxlbWFya3MgX19BUkdTKChGSUxFICpmcCkpOworaW50IHJlbW92YWJsZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOworaW50IHdyaXRlX3ZpbWluZm9fbWFya3MgX19BUkdTKChGSUxFICpmcF9vdXQpKTsKK3ZvaWQgY29weV92aW1pbmZvX21hcmtzIF9fQVJHUygodmlyX1QgKnZpcnAsIEZJTEUgKmZwX291dCwgaW50IGNvdW50LCBpbnQgZW9mKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9tZW1maWxlLnBybyBiL3NyYy9wcm90by9tZW1maWxlLnBybwppbmRleCA2YzQzMjlhLi4zOTgzYjQ3IDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vbWVtZmlsZS5wcm8KKysrIGIvc3JjL3Byb3RvL21lbWZpbGUucHJvCkBAIC0xLDE4ICsxLDE4IEBACiAvKiBtZW1maWxlLmMgKi8KLWV4dGVybiBtZW1maWxlX1QgKm1mX29wZW4gX19BUkdTKChjaGFyX3UgKmZuYW1lLCBpbnQgZmxhZ3MpKTsKLWV4dGVybiBpbnQgbWZfb3Blbl9maWxlIF9fQVJHUygobWVtZmlsZV9UICptZnAsIGNoYXJfdSAqZm5hbWUpKTsKLWV4dGVybiB2b2lkIG1mX2Nsb3NlIF9fQVJHUygobWVtZmlsZV9UICptZnAsIGludCBkZWxfZmlsZSkpOwotZXh0ZXJuIHZvaWQgbWZfY2xvc2VfZmlsZSBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBnZXRsaW5lcykpOwotZXh0ZXJuIHZvaWQgbWZfbmV3X3BhZ2Vfc2l6ZSBfX0FSR1MoKG1lbWZpbGVfVCAqbWZwLCB1bnNpZ25lZCBuZXdfc2l6ZSkpOwotZXh0ZXJuIGJoZHJfVCAqbWZfbmV3IF9fQVJHUygobWVtZmlsZV9UICptZnAsIGludCBuZWdhdGl2ZSwgaW50IHBhZ2VfY291bnQpKTsKLWV4dGVybiBiaGRyX1QgKm1mX2dldCBfX0FSR1MoKG1lbWZpbGVfVCAqbWZwLCBibG9ja25yX1QgbnIsIGludCBwYWdlX2NvdW50KSk7Ci1leHRlcm4gdm9pZCBtZl9wdXQgX19BUkdTKChtZW1maWxlX1QgKm1mcCwgYmhkcl9UICpocCwgaW50IGRpcnR5LCBpbnQgaW5maWxlKSk7Ci1leHRlcm4gdm9pZCBtZl9mcmVlIF9fQVJHUygobWVtZmlsZV9UICptZnAsIGJoZHJfVCAqaHApKTsKLWV4dGVybiBpbnQgbWZfc3luYyBfX0FSR1MoKG1lbWZpbGVfVCAqbWZwLCBpbnQgZmxhZ3MpKTsKLWV4dGVybiB2b2lkIG1mX3NldF9kaXJ0eSBfX0FSR1MoKG1lbWZpbGVfVCAqbWZwKSk7Ci1leHRlcm4gaW50IG1mX3JlbGVhc2VfYWxsIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGJsb2NrbnJfVCBtZl90cmFuc19kZWwgX19BUkdTKChtZW1maWxlX1QgKm1mcCwgYmxvY2tucl9UIG9sZF9ucikpOwotZXh0ZXJuIHZvaWQgbWZfc2V0X2ZmbmFtZSBfX0FSR1MoKG1lbWZpbGVfVCAqbWZwKSk7Ci1leHRlcm4gdm9pZCBtZl9mdWxsbmFtZSBfX0FSR1MoKG1lbWZpbGVfVCAqbWZwKSk7Ci1leHRlcm4gaW50IG1mX25lZWRfdHJhbnMgX19BUkdTKChtZW1maWxlX1QgKm1mcCkpOworbWVtZmlsZV9UICptZl9vcGVuIF9fQVJHUygoY2hhcl91ICpmbmFtZSwgaW50IGZsYWdzKSk7CitpbnQgbWZfb3Blbl9maWxlIF9fQVJHUygobWVtZmlsZV9UICptZnAsIGNoYXJfdSAqZm5hbWUpKTsKK3ZvaWQgbWZfY2xvc2UgX19BUkdTKChtZW1maWxlX1QgKm1mcCwgaW50IGRlbF9maWxlKSk7Cit2b2lkIG1mX2Nsb3NlX2ZpbGUgX19BUkdTKChidWZfVCAqYnVmLCBpbnQgZ2V0bGluZXMpKTsKK3ZvaWQgbWZfbmV3X3BhZ2Vfc2l6ZSBfX0FSR1MoKG1lbWZpbGVfVCAqbWZwLCB1bnNpZ25lZCBuZXdfc2l6ZSkpOworYmhkcl9UICptZl9uZXcgX19BUkdTKChtZW1maWxlX1QgKm1mcCwgaW50IG5lZ2F0aXZlLCBpbnQgcGFnZV9jb3VudCkpOworYmhkcl9UICptZl9nZXQgX19BUkdTKChtZW1maWxlX1QgKm1mcCwgYmxvY2tucl9UIG5yLCBpbnQgcGFnZV9jb3VudCkpOwordm9pZCBtZl9wdXQgX19BUkdTKChtZW1maWxlX1QgKm1mcCwgYmhkcl9UICpocCwgaW50IGRpcnR5LCBpbnQgaW5maWxlKSk7Cit2b2lkIG1mX2ZyZWUgX19BUkdTKChtZW1maWxlX1QgKm1mcCwgYmhkcl9UICpocCkpOworaW50IG1mX3N5bmMgX19BUkdTKChtZW1maWxlX1QgKm1mcCwgaW50IGZsYWdzKSk7Cit2b2lkIG1mX3NldF9kaXJ0eSBfX0FSR1MoKG1lbWZpbGVfVCAqbWZwKSk7CitpbnQgbWZfcmVsZWFzZV9hbGwgX19BUkdTKCh2b2lkKSk7CitibG9ja25yX1QgbWZfdHJhbnNfZGVsIF9fQVJHUygobWVtZmlsZV9UICptZnAsIGJsb2NrbnJfVCBvbGRfbnIpKTsKK3ZvaWQgbWZfc2V0X2ZmbmFtZSBfX0FSR1MoKG1lbWZpbGVfVCAqbWZwKSk7Cit2b2lkIG1mX2Z1bGxuYW1lIF9fQVJHUygobWVtZmlsZV9UICptZnApKTsKK2ludCBtZl9uZWVkX3RyYW5zIF9fQVJHUygobWVtZmlsZV9UICptZnApKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL21lc3NhZ2UucHJvIGIvc3JjL3Byb3RvL21lc3NhZ2UucHJvCmluZGV4IGU2YmQzZTkuLmNmZjdkNmIgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9tZXNzYWdlLnBybworKysgYi9zcmMvcHJvdG8vbWVzc2FnZS5wcm8KQEAgLTEsNzEgKzEsNzEgQEAKIC8qIG1lc3NhZ2UuYyAqLwotZXh0ZXJuIGludCBtc2cgX19BUkdTKChjaGFyX3UgKnMpKTsKLWV4dGVybiBpbnQgdmVyYl9tc2cgX19BUkdTKChjaGFyX3UgKnMpKTsKLWV4dGVybiBpbnQgbXNnX2F0dHIgX19BUkdTKChjaGFyX3UgKnMsIGludCBhdHRyKSk7Ci1leHRlcm4gaW50IG1zZ19hdHRyX2tlZXAgX19BUkdTKChjaGFyX3UgKnMsIGludCBhdHRyLCBpbnQga2VlcCkpOwotZXh0ZXJuIGNoYXJfdSAqbXNnX3N0cnRydW5jIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgZm9yY2UpKTsKLWV4dGVybiB2b2lkIHRydW5jX3N0cmluZyBfX0FSR1MoKGNoYXJfdSAqcywgY2hhcl91ICpidWYsIGludCByb29tKSk7Ci1leHRlcm4gdm9pZCByZXNldF9sYXN0X3NvdXJjaW5nIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbXNnX3NvdXJjZSBfX0FSR1MoKGludCBhdHRyKSk7Ci1leHRlcm4gaW50IGVtc2dfbm90X25vdyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgZW1zZyBfX0FSR1MoKGNoYXJfdSAqcykpOwotZXh0ZXJuIGludCBlbXNnMiBfX0FSR1MoKGNoYXJfdSAqcywgY2hhcl91ICphMSkpOwotZXh0ZXJuIHZvaWQgZW1zZ19pbnZyZWcgX19BUkdTKChpbnQgbmFtZSkpOwotZXh0ZXJuIGNoYXJfdSAqbXNnX3RydW5jX2F0dHIgX19BUkdTKChjaGFyX3UgKnMsIGludCBmb3JjZSwgaW50IGF0dHIpKTsKLWV4dGVybiBjaGFyX3UgKm1zZ19tYXlfdHJ1bmMgX19BUkdTKChpbnQgZm9yY2UsIGNoYXJfdSAqcykpOwotZXh0ZXJuIGludCBkZWxldGVfZmlyc3RfbXNnIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZXhfbWVzc2FnZXMgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIG1zZ19lbmRfcHJvbXB0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgd2FpdF9yZXR1cm4gX19BUkdTKChpbnQgcmVkcmF3KSk7Ci1leHRlcm4gdm9pZCBzZXRfa2VlcF9tc2cgX19BUkdTKChjaGFyX3UgKnMsIGludCBhdHRyKSk7Ci1leHRlcm4gdm9pZCBzZXRfa2VlcF9tc2dfZnJvbV9oaXN0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbXNnX3N0YXJ0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbXNnX3N0YXJ0aGVyZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIG1zZ19wdXRjaGFyIF9fQVJHUygoaW50IGMpKTsKLWV4dGVybiB2b2lkIG1zZ19wdXRjaGFyX2F0dHIgX19BUkdTKChpbnQgYywgaW50IGF0dHIpKTsKLWV4dGVybiB2b2lkIG1zZ19vdXRudW0gX19BUkdTKChsb25nIG4pKTsKLWV4dGVybiB2b2lkIG1zZ19ob21lX3JlcGxhY2UgX19BUkdTKChjaGFyX3UgKmZuYW1lKSk7Ci1leHRlcm4gdm9pZCBtc2dfaG9tZV9yZXBsYWNlX2hsIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOwotZXh0ZXJuIGludCBtc2dfb3V0dHJhbnMgX19BUkdTKChjaGFyX3UgKnN0cikpOwotZXh0ZXJuIGludCBtc2dfb3V0dHJhbnNfYXR0ciBfX0FSR1MoKGNoYXJfdSAqc3RyLCBpbnQgYXR0cikpOwotZXh0ZXJuIGludCBtc2dfb3V0dHJhbnNfbGVuIF9fQVJHUygoY2hhcl91ICpzdHIsIGludCBsZW4pKTsKLWV4dGVybiBjaGFyX3UgKm1zZ19vdXR0cmFuc19vbmUgX19BUkdTKChjaGFyX3UgKnAsIGludCBhdHRyKSk7Ci1leHRlcm4gaW50IG1zZ19vdXR0cmFuc19sZW5fYXR0ciBfX0FSR1MoKGNoYXJfdSAqbXNnc3RyLCBpbnQgbGVuLCBpbnQgYXR0cikpOwotZXh0ZXJuIHZvaWQgbXNnX21ha2UgX19BUkdTKChjaGFyX3UgKmFyZykpOwotZXh0ZXJuIGludCBtc2dfb3V0dHJhbnNfc3BlY2lhbCBfX0FSR1MoKGNoYXJfdSAqc3Ryc3RhcnQsIGludCBmcm9tKSk7Ci1leHRlcm4gY2hhcl91ICpzdHIyc3BlY2lhbCBfX0FSR1MoKGNoYXJfdSAqKnNwLCBpbnQgZnJvbSkpOwotZXh0ZXJuIHZvaWQgc3RyMnNwZWNpYWxidWYgX19BUkdTKChjaGFyX3UgKnNwLCBjaGFyX3UgKmJ1ZiwgaW50IGxlbikpOwotZXh0ZXJuIHZvaWQgbXNnX3BydF9saW5lIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGlzdCkpOwotZXh0ZXJuIHZvaWQgbXNnX3B1dHMgX19BUkdTKChjaGFyX3UgKnMpKTsKLWV4dGVybiB2b2lkIG1zZ19wdXRzX3RpdGxlIF9fQVJHUygoY2hhcl91ICpzKSk7Ci1leHRlcm4gdm9pZCBtc2dfcHV0c19sb25nX2F0dHIgX19BUkdTKChjaGFyX3UgKmxvbmdzdHIsIGludCBhdHRyKSk7Ci1leHRlcm4gdm9pZCBtc2dfcHV0c19sb25nX2xlbl9hdHRyIF9fQVJHUygoY2hhcl91ICpsb25nc3RyLCBpbnQgbGVuLCBpbnQgYXR0cikpOwotZXh0ZXJuIHZvaWQgbXNnX3B1dHNfYXR0ciBfX0FSR1MoKGNoYXJfdSAqcywgaW50IGF0dHIpKTsKLWV4dGVybiB2b2lkIG1heV9jbGVhcl9zYl90ZXh0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgY2xlYXJfc2JfdGV4dCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHNob3dfc2JfdGV4dCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgbXNnX3VzZV9wcmludGYgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBtY2hfZXJybXNnIF9fQVJHUygoY2hhciAqc3RyKSk7Ci1leHRlcm4gdm9pZCBtY2hfbXNnIF9fQVJHUygoY2hhciAqc3RyKSk7Ci1leHRlcm4gdm9pZCBtc2dfbW9yZW1zZyBfX0FSR1MoKGludCBmdWxsKSk7Ci1leHRlcm4gdm9pZCByZXBlYXRfbWVzc2FnZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIG1zZ19jbHJfZW9zIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbXNnX2Nscl9lb3NfZm9yY2UgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBtc2dfY2xyX2NtZGxpbmUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IG1zZ19lbmQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBtc2dfY2hlY2sgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB2ZXJib3NlX2VudGVyIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgdmVyYm9zZV9sZWF2ZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHZlcmJvc2VfZW50ZXJfc2Nyb2xsIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgdmVyYm9zZV9sZWF2ZV9zY3JvbGwgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB2ZXJib3NlX3N0b3AgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IHZlcmJvc2Vfb3BlbiBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGdpdmVfd2FybmluZyBfX0FSR1MoKGNoYXJfdSAqbWVzc2FnZSwgaW50IGhsKSk7Ci1leHRlcm4gdm9pZCBtc2dfYWR2YW5jZSBfX0FSR1MoKGludCBjb2wpKTsKLWV4dGVybiBpbnQgZG9fZGlhbG9nIF9fQVJHUygoaW50IHR5cGUsIGNoYXJfdSAqdGl0bGUsIGNoYXJfdSAqbWVzc2FnZSwgY2hhcl91ICpidXR0b25zLCBpbnQgZGZsdGJ1dHRvbiwgY2hhcl91ICp0ZXh0ZmllbGQpKTsKLWV4dGVybiB2b2lkIGRpc3BsYXlfY29uZmlybV9tc2cgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IHZpbV9kaWFsb2dfeWVzbm8gX19BUkdTKChpbnQgdHlwZSwgY2hhcl91ICp0aXRsZSwgY2hhcl91ICptZXNzYWdlLCBpbnQgZGZsdCkpOwotZXh0ZXJuIGludCB2aW1fZGlhbG9nX3llc25vY2FuY2VsIF9fQVJHUygoaW50IHR5cGUsIGNoYXJfdSAqdGl0bGUsIGNoYXJfdSAqbWVzc2FnZSwgaW50IGRmbHQpKTsKLWV4dGVybiBpbnQgdmltX2RpYWxvZ195ZXNub2FsbGNhbmNlbCBfX0FSR1MoKGludCB0eXBlLCBjaGFyX3UgKnRpdGxlLCBjaGFyX3UgKm1lc3NhZ2UsIGludCBkZmx0KSk7Ci1leHRlcm4gY2hhcl91ICpkb19icm93c2UgX19BUkdTKChpbnQgZmxhZ3MsIGNoYXJfdSAqdGl0bGUsIGNoYXJfdSAqZGZsdCwgY2hhcl91ICpleHQsIGNoYXJfdSAqaW5pdGRpciwgY2hhcl91ICpmaWx0ZXIsIGJ1Zl9UICpidWYpKTsKK2ludCBtc2cgX19BUkdTKChjaGFyX3UgKnMpKTsKK2ludCB2ZXJiX21zZyBfX0FSR1MoKGNoYXJfdSAqcykpOworaW50IG1zZ19hdHRyIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgYXR0cikpOworaW50IG1zZ19hdHRyX2tlZXAgX19BUkdTKChjaGFyX3UgKnMsIGludCBhdHRyLCBpbnQga2VlcCkpOworY2hhcl91ICptc2dfc3RydHJ1bmMgX19BUkdTKChjaGFyX3UgKnMsIGludCBmb3JjZSkpOwordm9pZCB0cnVuY19zdHJpbmcgX19BUkdTKChjaGFyX3UgKnMsIGNoYXJfdSAqYnVmLCBpbnQgcm9vbSkpOwordm9pZCByZXNldF9sYXN0X3NvdXJjaW5nIF9fQVJHUygodm9pZCkpOwordm9pZCBtc2dfc291cmNlIF9fQVJHUygoaW50IGF0dHIpKTsKK2ludCBlbXNnX25vdF9ub3cgX19BUkdTKCh2b2lkKSk7CitpbnQgZW1zZyBfX0FSR1MoKGNoYXJfdSAqcykpOworaW50IGVtc2cyIF9fQVJHUygoY2hhcl91ICpzLCBjaGFyX3UgKmExKSk7Cit2b2lkIGVtc2dfaW52cmVnIF9fQVJHUygoaW50IG5hbWUpKTsKK2NoYXJfdSAqbXNnX3RydW5jX2F0dHIgX19BUkdTKChjaGFyX3UgKnMsIGludCBmb3JjZSwgaW50IGF0dHIpKTsKK2NoYXJfdSAqbXNnX21heV90cnVuYyBfX0FSR1MoKGludCBmb3JjZSwgY2hhcl91ICpzKSk7CitpbnQgZGVsZXRlX2ZpcnN0X21zZyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZXhfbWVzc2FnZXMgX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgbXNnX2VuZF9wcm9tcHQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHdhaXRfcmV0dXJuIF9fQVJHUygoaW50IHJlZHJhdykpOwordm9pZCBzZXRfa2VlcF9tc2cgX19BUkdTKChjaGFyX3UgKnMsIGludCBhdHRyKSk7Cit2b2lkIHNldF9rZWVwX21zZ19mcm9tX2hpc3QgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG1zZ19zdGFydCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbXNnX3N0YXJ0aGVyZSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbXNnX3B1dGNoYXIgX19BUkdTKChpbnQgYykpOwordm9pZCBtc2dfcHV0Y2hhcl9hdHRyIF9fQVJHUygoaW50IGMsIGludCBhdHRyKSk7Cit2b2lkIG1zZ19vdXRudW0gX19BUkdTKChsb25nIG4pKTsKK3ZvaWQgbXNnX2hvbWVfcmVwbGFjZSBfX0FSR1MoKGNoYXJfdSAqZm5hbWUpKTsKK3ZvaWQgbXNnX2hvbWVfcmVwbGFjZV9obCBfX0FSR1MoKGNoYXJfdSAqZm5hbWUpKTsKK2ludCBtc2dfb3V0dHJhbnMgX19BUkdTKChjaGFyX3UgKnN0cikpOworaW50IG1zZ19vdXR0cmFuc19hdHRyIF9fQVJHUygoY2hhcl91ICpzdHIsIGludCBhdHRyKSk7CitpbnQgbXNnX291dHRyYW5zX2xlbiBfX0FSR1MoKGNoYXJfdSAqc3RyLCBpbnQgbGVuKSk7CitjaGFyX3UgKm1zZ19vdXR0cmFuc19vbmUgX19BUkdTKChjaGFyX3UgKnAsIGludCBhdHRyKSk7CitpbnQgbXNnX291dHRyYW5zX2xlbl9hdHRyIF9fQVJHUygoY2hhcl91ICptc2dzdHIsIGludCBsZW4sIGludCBhdHRyKSk7Cit2b2lkIG1zZ19tYWtlIF9fQVJHUygoY2hhcl91ICphcmcpKTsKK2ludCBtc2dfb3V0dHJhbnNfc3BlY2lhbCBfX0FSR1MoKGNoYXJfdSAqc3Ryc3RhcnQsIGludCBmcm9tKSk7CitjaGFyX3UgKnN0cjJzcGVjaWFsIF9fQVJHUygoY2hhcl91ICoqc3AsIGludCBmcm9tKSk7Cit2b2lkIHN0cjJzcGVjaWFsYnVmIF9fQVJHUygoY2hhcl91ICpzcCwgY2hhcl91ICpidWYsIGludCBsZW4pKTsKK3ZvaWQgbXNnX3BydF9saW5lIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGlzdCkpOwordm9pZCBtc2dfcHV0cyBfX0FSR1MoKGNoYXJfdSAqcykpOwordm9pZCBtc2dfcHV0c190aXRsZSBfX0FSR1MoKGNoYXJfdSAqcykpOwordm9pZCBtc2dfcHV0c19sb25nX2F0dHIgX19BUkdTKChjaGFyX3UgKmxvbmdzdHIsIGludCBhdHRyKSk7Cit2b2lkIG1zZ19wdXRzX2xvbmdfbGVuX2F0dHIgX19BUkdTKChjaGFyX3UgKmxvbmdzdHIsIGludCBsZW4sIGludCBhdHRyKSk7Cit2b2lkIG1zZ19wdXRzX2F0dHIgX19BUkdTKChjaGFyX3UgKnMsIGludCBhdHRyKSk7Cit2b2lkIG1heV9jbGVhcl9zYl90ZXh0IF9fQVJHUygodm9pZCkpOwordm9pZCBjbGVhcl9zYl90ZXh0IF9fQVJHUygodm9pZCkpOwordm9pZCBzaG93X3NiX3RleHQgX19BUkdTKCh2b2lkKSk7CitpbnQgbXNnX3VzZV9wcmludGYgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG1jaF9lcnJtc2cgX19BUkdTKChjaGFyICpzdHIpKTsKK3ZvaWQgbWNoX21zZyBfX0FSR1MoKGNoYXIgKnN0cikpOwordm9pZCBtc2dfbW9yZW1zZyBfX0FSR1MoKGludCBmdWxsKSk7Cit2b2lkIHJlcGVhdF9tZXNzYWdlIF9fQVJHUygodm9pZCkpOwordm9pZCBtc2dfY2xyX2VvcyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbXNnX2Nscl9lb3NfZm9yY2UgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG1zZ19jbHJfY21kbGluZSBfX0FSR1MoKHZvaWQpKTsKK2ludCBtc2dfZW5kIF9fQVJHUygodm9pZCkpOwordm9pZCBtc2dfY2hlY2sgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHZlcmJvc2VfZW50ZXIgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHZlcmJvc2VfbGVhdmUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHZlcmJvc2VfZW50ZXJfc2Nyb2xsIF9fQVJHUygodm9pZCkpOwordm9pZCB2ZXJib3NlX2xlYXZlX3Njcm9sbCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgdmVyYm9zZV9zdG9wIF9fQVJHUygodm9pZCkpOworaW50IHZlcmJvc2Vfb3BlbiBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZ2l2ZV93YXJuaW5nIF9fQVJHUygoY2hhcl91ICptZXNzYWdlLCBpbnQgaGwpKTsKK3ZvaWQgbXNnX2FkdmFuY2UgX19BUkdTKChpbnQgY29sKSk7CitpbnQgZG9fZGlhbG9nIF9fQVJHUygoaW50IHR5cGUsIGNoYXJfdSAqdGl0bGUsIGNoYXJfdSAqbWVzc2FnZSwgY2hhcl91ICpidXR0b25zLCBpbnQgZGZsdGJ1dHRvbiwgY2hhcl91ICp0ZXh0ZmllbGQpKTsKK3ZvaWQgZGlzcGxheV9jb25maXJtX21zZyBfX0FSR1MoKHZvaWQpKTsKK2ludCB2aW1fZGlhbG9nX3llc25vIF9fQVJHUygoaW50IHR5cGUsIGNoYXJfdSAqdGl0bGUsIGNoYXJfdSAqbWVzc2FnZSwgaW50IGRmbHQpKTsKK2ludCB2aW1fZGlhbG9nX3llc25vY2FuY2VsIF9fQVJHUygoaW50IHR5cGUsIGNoYXJfdSAqdGl0bGUsIGNoYXJfdSAqbWVzc2FnZSwgaW50IGRmbHQpKTsKK2ludCB2aW1fZGlhbG9nX3llc25vYWxsY2FuY2VsIF9fQVJHUygoaW50IHR5cGUsIGNoYXJfdSAqdGl0bGUsIGNoYXJfdSAqbWVzc2FnZSwgaW50IGRmbHQpKTsKK2NoYXJfdSAqZG9fYnJvd3NlIF9fQVJHUygoaW50IGZsYWdzLCBjaGFyX3UgKnRpdGxlLCBjaGFyX3UgKmRmbHQsIGNoYXJfdSAqZXh0LCBjaGFyX3UgKmluaXRkaXIsIGNoYXJfdSAqZmlsdGVyLCBidWZfVCAqYnVmKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9uZXRiZWFucy5wcm8gYi9zcmMvcHJvdG8vbmV0YmVhbnMucHJvCmluZGV4IDcxYTVlYzQuLjc1ZDAxNDkgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9uZXRiZWFucy5wcm8KKysrIGIvc3JjL3Byb3RvL25ldGJlYW5zLnBybwpAQCAtMSwyNSArMSwyNSBAQAogLyogbmV0YmVhbnMuYyAqLwotZXh0ZXJuIHZvaWQgbWVzc2FnZUZyb21OZXRiZWFuc1czMiBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgaXNOZXRiZWFuc0J1ZmZlciBfX0FSR1MoKGJ1Zl9UICpidWZwKSk7Ci1leHRlcm4gaW50IGlzTmV0YmVhbnNNb2RpZmllZCBfX0FSR1MoKGJ1Zl9UICpidWZwKSk7Ci1leHRlcm4gdm9pZCBuZXRiZWFuc19lbmQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBleF9uYmtleSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgbmV0YmVhbnNfYmV2YWxfY2IgX19BUkdTKChCYWxsb29uRXZhbCAqYmV2YWwsIGludCBzdGF0ZSkpOwotZXh0ZXJuIHZvaWQgbmV0YmVhbnNfc3RhcnR1cF9kb25lIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbmV0YmVhbnNfc2VuZF9kaXNjb25uZWN0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbmV0YmVhbnNfZnJhbWVfbW92ZWQgX19BUkdTKChpbnQgbmV3X3gsIGludCBuZXdfeSkpOwotZXh0ZXJuIHZvaWQgbmV0YmVhbnNfZmlsZV9hY3RpdmF0ZWQgX19BUkdTKChidWZfVCAqYnVmcCkpOwotZXh0ZXJuIHZvaWQgbmV0YmVhbnNfZmlsZV9vcGVuZWQgX19BUkdTKChidWZfVCAqYnVmcCkpOwotZXh0ZXJuIHZvaWQgbmV0YmVhbnNfZmlsZV9jbG9zZWQgX19BUkdTKChidWZfVCAqYnVmcCkpOwotZXh0ZXJuIHZvaWQgbmV0YmVhbnNfaW5zZXJ0ZWQgX19BUkdTKChidWZfVCAqYnVmcCwgbGluZW5yX1QgbGluZW5yLCBjb2xucl9UIGNvbCwgY2hhcl91ICp0eHQsIGludCBuZXdsZW4pKTsKLWV4dGVybiB2b2lkIG5ldGJlYW5zX3JlbW92ZWQgX19BUkdTKChidWZfVCAqYnVmcCwgbGluZW5yX1QgbGluZW5yLCBjb2xucl9UIGNvbCwgbG9uZyBsZW4pKTsKLWV4dGVybiB2b2lkIG5ldGJlYW5zX3VubW9kaWZpZWQgX19BUkdTKChidWZfVCAqYnVmcCkpOwotZXh0ZXJuIHZvaWQgbmV0YmVhbnNfYnV0dG9uX3JlbGVhc2UgX19BUkdTKChpbnQgYnV0dG9uKSk7Ci1leHRlcm4gdm9pZCBuZXRiZWFuc19rZXljb21tYW5kIF9fQVJHUygoaW50IGtleSkpOwotZXh0ZXJuIHZvaWQgbmV0YmVhbnNfc2F2ZV9idWZmZXIgX19BUkdTKChidWZfVCAqYnVmcCkpOwotZXh0ZXJuIHZvaWQgbmV0YmVhbnNfZGVsZXRlZF9hbGxfbGluZXMgX19BUkdTKChidWZfVCAqYnVmcCkpOwotZXh0ZXJuIGludCBuZXRiZWFuc19pc19ndWFyZGVkIF9fQVJHUygobGluZW5yX1QgdG9wLCBsaW5lbnJfVCBib3QpKTsKLWV4dGVybiB2b2lkIG5ldGJlYW5zX2RyYXdfbXVsdGlzaWduX2luZGljYXRvciBfX0FSR1MoKGludCByb3cpKTsKLWV4dGVybiB2b2lkIG5ldGJlYW5zX2RyYXdfbXVsdGlzaWduX2luZGljYXRvciBfX0FSR1MoKGludCByb3cpKTsKLWV4dGVybiB2b2lkIG5ldGJlYW5zX2d1dHRlcl9jbGljayBfX0FSR1MoKGxpbmVucl9UIGxudW0pKTsKK3ZvaWQgbWVzc2FnZUZyb21OZXRiZWFuc1czMiBfX0FSR1MoKHZvaWQpKTsKK2ludCBpc05ldGJlYW5zQnVmZmVyIF9fQVJHUygoYnVmX1QgKmJ1ZnApKTsKK2ludCBpc05ldGJlYW5zTW9kaWZpZWQgX19BUkdTKChidWZfVCAqYnVmcCkpOwordm9pZCBuZXRiZWFuc19lbmQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGV4X25ia2V5IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIG5ldGJlYW5zX2JldmFsX2NiIF9fQVJHUygoQmFsbG9vbkV2YWwgKmJldmFsLCBpbnQgc3RhdGUpKTsKK3ZvaWQgbmV0YmVhbnNfc3RhcnR1cF9kb25lIF9fQVJHUygodm9pZCkpOwordm9pZCBuZXRiZWFuc19zZW5kX2Rpc2Nvbm5lY3QgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG5ldGJlYW5zX2ZyYW1lX21vdmVkIF9fQVJHUygoaW50IG5ld194LCBpbnQgbmV3X3kpKTsKK3ZvaWQgbmV0YmVhbnNfZmlsZV9hY3RpdmF0ZWQgX19BUkdTKChidWZfVCAqYnVmcCkpOwordm9pZCBuZXRiZWFuc19maWxlX29wZW5lZCBfX0FSR1MoKGJ1Zl9UICpidWZwKSk7Cit2b2lkIG5ldGJlYW5zX2ZpbGVfY2xvc2VkIF9fQVJHUygoYnVmX1QgKmJ1ZnApKTsKK3ZvaWQgbmV0YmVhbnNfaW5zZXJ0ZWQgX19BUkdTKChidWZfVCAqYnVmcCwgbGluZW5yX1QgbGluZW5yLCBjb2xucl9UIGNvbCwgY2hhcl91ICp0eHQsIGludCBuZXdsZW4pKTsKK3ZvaWQgbmV0YmVhbnNfcmVtb3ZlZCBfX0FSR1MoKGJ1Zl9UICpidWZwLCBsaW5lbnJfVCBsaW5lbnIsIGNvbG5yX1QgY29sLCBsb25nIGxlbikpOwordm9pZCBuZXRiZWFuc191bm1vZGlmaWVkIF9fQVJHUygoYnVmX1QgKmJ1ZnApKTsKK3ZvaWQgbmV0YmVhbnNfYnV0dG9uX3JlbGVhc2UgX19BUkdTKChpbnQgYnV0dG9uKSk7Cit2b2lkIG5ldGJlYW5zX2tleWNvbW1hbmQgX19BUkdTKChpbnQga2V5KSk7Cit2b2lkIG5ldGJlYW5zX3NhdmVfYnVmZmVyIF9fQVJHUygoYnVmX1QgKmJ1ZnApKTsKK3ZvaWQgbmV0YmVhbnNfZGVsZXRlZF9hbGxfbGluZXMgX19BUkdTKChidWZfVCAqYnVmcCkpOworaW50IG5ldGJlYW5zX2lzX2d1YXJkZWQgX19BUkdTKChsaW5lbnJfVCB0b3AsIGxpbmVucl9UIGJvdCkpOwordm9pZCBuZXRiZWFuc19kcmF3X211bHRpc2lnbl9pbmRpY2F0b3IgX19BUkdTKChpbnQgcm93KSk7Cit2b2lkIG5ldGJlYW5zX2RyYXdfbXVsdGlzaWduX2luZGljYXRvciBfX0FSR1MoKGludCByb3cpKTsKK3ZvaWQgbmV0YmVhbnNfZ3V0dGVyX2NsaWNrIF9fQVJHUygobGluZW5yX1QgbG51bSkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vbm9ybWFsLnBybyBiL3NyYy9wcm90by9ub3JtYWwucHJvCmluZGV4IDgyODBlNDUuLjU1ZTgxNjMgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9ub3JtYWwucHJvCisrKyBiL3NyYy9wcm90by9ub3JtYWwucHJvCkBAIC0xLDI2ICsxLDI2IEBACiAvKiBub3JtYWwuYyAqLwotZXh0ZXJuIHZvaWQgaW5pdF9ub3JtYWxfY21kcyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIG5vcm1hbF9jbWQgX19BUkdTKChvcGFyZ19UICpvYXAsIGludCB0b3BsZXZlbCkpOwotZXh0ZXJuIHZvaWQgZG9fcGVuZGluZ19vcGVyYXRvciBfX0FSR1MoKGNtZGFyZ19UICpjYXAsIGludCBvbGRfY29sLCBpbnQgZ3VpX3lhbmspKTsKLWV4dGVybiBpbnQgZG9fbW91c2UgX19BUkdTKChvcGFyZ19UICpvYXAsIGludCBjLCBpbnQgZGlyLCBsb25nIGNvdW50LCBpbnQgZml4aW5kZW50KSk7Ci1leHRlcm4gdm9pZCBjaGVja192aXN1YWxfaGlnaGxpZ2h0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZW5kX3Zpc3VhbF9tb2RlIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgcmVzZXRfVklzdWFsX2FuZF9yZXNlbCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHJlc2V0X1ZJc3VhbCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgZmluZF9pZGVudF91bmRlcl9jdXJzb3IgX19BUkdTKChjaGFyX3UgKipzdHJpbmcsIGludCBmaW5kX3R5cGUpKTsKLWV4dGVybiBpbnQgZmluZF9pZGVudF9hdF9wb3MgX19BUkdTKCh3aW5fVCAqd3AsIGxpbmVucl9UIGxudW0sIGNvbG5yX1Qgc3RhcnRjb2wsIGNoYXJfdSAqKnN0cmluZywgaW50IGZpbmRfdHlwZSkpOwotZXh0ZXJuIHZvaWQgY2xlYXJfc2hvd2NtZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgYWRkX3RvX3Nob3djbWQgX19BUkdTKChpbnQgYykpOwotZXh0ZXJuIHZvaWQgYWRkX3RvX3Nob3djbWRfYyBfX0FSR1MoKGludCBjKSk7Ci1leHRlcm4gdm9pZCBwdXNoX3Nob3djbWQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBwb3Bfc2hvd2NtZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGRvX2NoZWNrX3Njcm9sbGJpbmQgX19BUkdTKChpbnQgY2hlY2spKTsKLWV4dGVybiB2b2lkIGNoZWNrX3Njcm9sbGJpbmQgX19BUkdTKChsaW5lbnJfVCB0b3BsaW5lX2RpZmYsIGxvbmcgbGVmdGNvbF9kaWZmKSk7Ci1leHRlcm4gaW50IGZpbmRfZGVjbCBfX0FSR1MoKGNoYXJfdSAqcHRyLCBpbnQgbGVuLCBpbnQgbG9jYWxseSwgaW50IHRoaXNibG9jaywgaW50IHNlYXJjaGZsYWdzKSk7Ci1leHRlcm4gdm9pZCBzY3JvbGxfcmVkcmF3IF9fQVJHUygoaW50IHVwLCBsb25nIGNvdW50KSk7Ci1leHRlcm4gdm9pZCBoYW5kbGVfdGFibWVudSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGRvX252X2lkZW50IF9fQVJHUygoaW50IGMxLCBpbnQgYzIpKTsKLWV4dGVybiBpbnQgZ2V0X3Zpc3VhbF90ZXh0IF9fQVJHUygoY21kYXJnX1QgKmNhcCwgY2hhcl91ICoqcHAsIGludCAqbGVucCkpOwotZXh0ZXJuIHZvaWQgc3RhcnRfc2VsZWN0aW9uIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbWF5X3N0YXJ0X3NlbGVjdCBfX0FSR1MoKGludCBjKSk7Cit2b2lkIGluaXRfbm9ybWFsX2NtZHMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIG5vcm1hbF9jbWQgX19BUkdTKChvcGFyZ19UICpvYXAsIGludCB0b3BsZXZlbCkpOwordm9pZCBkb19wZW5kaW5nX29wZXJhdG9yIF9fQVJHUygoY21kYXJnX1QgKmNhcCwgaW50IG9sZF9jb2wsIGludCBndWlfeWFuaykpOworaW50IGRvX21vdXNlIF9fQVJHUygob3BhcmdfVCAqb2FwLCBpbnQgYywgaW50IGRpciwgbG9uZyBjb3VudCwgaW50IGZpeGluZGVudCkpOwordm9pZCBjaGVja192aXN1YWxfaGlnaGxpZ2h0IF9fQVJHUygodm9pZCkpOwordm9pZCBlbmRfdmlzdWFsX21vZGUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHJlc2V0X1ZJc3VhbF9hbmRfcmVzZWwgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHJlc2V0X1ZJc3VhbCBfX0FSR1MoKHZvaWQpKTsKK2ludCBmaW5kX2lkZW50X3VuZGVyX2N1cnNvciBfX0FSR1MoKGNoYXJfdSAqKnN0cmluZywgaW50IGZpbmRfdHlwZSkpOworaW50IGZpbmRfaWRlbnRfYXRfcG9zIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtLCBjb2xucl9UIHN0YXJ0Y29sLCBjaGFyX3UgKipzdHJpbmcsIGludCBmaW5kX3R5cGUpKTsKK3ZvaWQgY2xlYXJfc2hvd2NtZCBfX0FSR1MoKHZvaWQpKTsKK2ludCBhZGRfdG9fc2hvd2NtZCBfX0FSR1MoKGludCBjKSk7Cit2b2lkIGFkZF90b19zaG93Y21kX2MgX19BUkdTKChpbnQgYykpOwordm9pZCBwdXNoX3Nob3djbWQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHBvcF9zaG93Y21kIF9fQVJHUygodm9pZCkpOwordm9pZCBkb19jaGVja19zY3JvbGxiaW5kIF9fQVJHUygoaW50IGNoZWNrKSk7Cit2b2lkIGNoZWNrX3Njcm9sbGJpbmQgX19BUkdTKChsaW5lbnJfVCB0b3BsaW5lX2RpZmYsIGxvbmcgbGVmdGNvbF9kaWZmKSk7CitpbnQgZmluZF9kZWNsIF9fQVJHUygoY2hhcl91ICpwdHIsIGludCBsZW4sIGludCBsb2NhbGx5LCBpbnQgdGhpc2Jsb2NrLCBpbnQgc2VhcmNoZmxhZ3MpKTsKK3ZvaWQgc2Nyb2xsX3JlZHJhdyBfX0FSR1MoKGludCB1cCwgbG9uZyBjb3VudCkpOwordm9pZCBoYW5kbGVfdGFibWVudSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZG9fbnZfaWRlbnQgX19BUkdTKChpbnQgYzEsIGludCBjMikpOworaW50IGdldF92aXN1YWxfdGV4dCBfX0FSR1MoKGNtZGFyZ19UICpjYXAsIGNoYXJfdSAqKnBwLCBpbnQgKmxlbnApKTsKK3ZvaWQgc3RhcnRfc2VsZWN0aW9uIF9fQVJHUygodm9pZCkpOwordm9pZCBtYXlfc3RhcnRfc2VsZWN0IF9fQVJHUygoaW50IGMpKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL29wdGlvbi5wcm8gYi9zcmMvcHJvdG8vb3B0aW9uLnBybwppbmRleCBjZjMxZGNhLi5iYjUwZWYxIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vb3B0aW9uLnBybworKysgYi9zcmMvcHJvdG8vb3B0aW9uLnBybwpAQCAtMSw1NiArMSw1NiBAQAogLyogb3B0aW9uLmMgKi8KLWV4dGVybiB2b2lkIHNldF9pbml0XzEgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzZXRfc3RyaW5nX2RlZmF1bHQgX19BUkdTKChjaGFyICpuYW1lLCBjaGFyX3UgKnZhbCkpOwotZXh0ZXJuIHZvaWQgc2V0X251bWJlcl9kZWZhdWx0IF9fQVJHUygoY2hhciAqbmFtZSwgbG9uZyB2YWwpKTsKLWV4dGVybiB2b2lkIGZyZWVfYWxsX29wdGlvbnMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzZXRfaW5pdF8yIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgc2V0X2luaXRfMyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHNldF9oZWxwbGFuZ19kZWZhdWx0IF9fQVJHUygoY2hhcl91ICpsYW5nKSk7Ci1leHRlcm4gdm9pZCBpbml0X2d1aV9vcHRpb25zIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgc2V0X3RpdGxlX2RlZmF1bHRzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBkb19zZXQgX19BUkdTKChjaGFyX3UgKmFyZywgaW50IG9wdF9mbGFncykpOwotZXh0ZXJuIHZvaWQgc2V0X29wdGlvbnNfYmluIF9fQVJHUygoaW50IG9sZHZhbCwgaW50IG5ld3ZhbCwgaW50IG9wdF9mbGFncykpOwotZXh0ZXJuIGludCBnZXRfdmltaW5mb19wYXJhbWV0ZXIgX19BUkdTKChpbnQgdHlwZSkpOwotZXh0ZXJuIGNoYXJfdSAqZmluZF92aW1pbmZvX3BhcmFtZXRlciBfX0FSR1MoKGludCB0eXBlKSk7Ci1leHRlcm4gdm9pZCBjaGVja19vcHRpb25zIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgY2hlY2tfYnVmX29wdGlvbnMgX19BUkdTKChidWZfVCAqYnVmKSk7Ci1leHRlcm4gdm9pZCBmcmVlX3N0cmluZ19vcHRpb24gX19BUkdTKChjaGFyX3UgKnApKTsKLWV4dGVybiB2b2lkIGNsZWFyX3N0cmluZ19vcHRpb24gX19BUkdTKChjaGFyX3UgKipwcCkpOwotZXh0ZXJuIHZvaWQgc2V0X3Rlcm1fb3B0aW9uX2FsbG9jZWQgX19BUkdTKChjaGFyX3UgKipwKSk7Ci1leHRlcm4gaW50IHdhc19zZXRfaW5zZWN1cmVseSBfX0FSR1MoKGNoYXJfdSAqb3B0LCBpbnQgb3B0X2ZsYWdzKSk7Ci1leHRlcm4gdm9pZCBzZXRfc3RyaW5nX29wdGlvbl9kaXJlY3QgX19BUkdTKChjaGFyX3UgKm5hbWUsIGludCBvcHRfaWR4LCBjaGFyX3UgKnZhbCwgaW50IG9wdF9mbGFncywgaW50IHNldF9zaWQpKTsKLWV4dGVybiBjaGFyX3UgKmNoZWNrX3N0bF9vcHRpb24gX19BUkdTKChjaGFyX3UgKnMpKTsKLWV4dGVybiBpbnQgZ2V0X29wdGlvbl92YWx1ZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgbG9uZyAqbnVtdmFsLCBjaGFyX3UgKipzdHJpbmd2YWwsIGludCBvcHRfZmxhZ3MpKTsKLWV4dGVybiB2b2lkIHNldF9vcHRpb25fdmFsdWUgX19BUkdTKChjaGFyX3UgKm5hbWUsIGxvbmcgbnVtYmVyLCBjaGFyX3UgKnN0cmluZywgaW50IG9wdF9mbGFncykpOwotZXh0ZXJuIGNoYXJfdSAqZ2V0X3Rlcm1fY29kZSBfX0FSR1MoKGNoYXJfdSAqdG5hbWUpKTsKLWV4dGVybiBjaGFyX3UgKmdldF9oaWdobGlnaHRfZGVmYXVsdCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBjaGFyX3UgKmdldF9lbmNvZGluZ19kZWZhdWx0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBtYWtlc2V0IF9fQVJHUygoRklMRSAqZmQsIGludCBvcHRfZmxhZ3MsIGludCBsb2NhbF9vbmx5KSk7Ci1leHRlcm4gaW50IG1ha2Vmb2xkc2V0IF9fQVJHUygoRklMRSAqZmQpKTsKLWV4dGVybiB2b2lkIGNsZWFyX3Rlcm1vcHRpb25zIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgZnJlZV90ZXJtb3B0aW9ucyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHNldF90ZXJtX2RlZmF1bHRzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgY29tcF9jb2wgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gY2hhcl91ICpnZXRfZXF1YWxwcmcgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB3aW5fY29weV9vcHRpb25zIF9fQVJHUygod2luX1QgKndwX2Zyb20sIHdpbl9UICp3cF90bykpOwotZXh0ZXJuIHZvaWQgY29weV93aW5vcHQgX19BUkdTKCh3aW5vcHRfVCAqZnJvbSwgd2lub3B0X1QgKnRvKSk7Ci1leHRlcm4gdm9pZCBjaGVja193aW5fb3B0aW9ucyBfX0FSR1MoKHdpbl9UICp3aW4pKTsKLWV4dGVybiB2b2lkIGNoZWNrX3dpbm9wdCBfX0FSR1MoKHdpbm9wdF9UICp3b3ApKTsKLWV4dGVybiB2b2lkIGNsZWFyX3dpbm9wdCBfX0FSR1MoKHdpbm9wdF9UICp3b3ApKTsKLWV4dGVybiB2b2lkIGJ1Zl9jb3B5X29wdGlvbnMgX19BUkdTKChidWZfVCAqYnVmLCBpbnQgZmxhZ3MpKTsKLWV4dGVybiB2b2lkIHJlc2V0X21vZGlmaWFibGUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzZXRfaW1pbnNlcnRfZ2xvYmFsIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgc2V0X2ltc2VhcmNoX2dsb2JhbCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHNldF9jb250ZXh0X2luX3NldF9jbWQgX19BUkdTKChleHBhbmRfVCAqeHAsIGNoYXJfdSAqYXJnLCBpbnQgb3B0X2ZsYWdzKSk7Ci1leHRlcm4gaW50IEV4cGFuZFNldHRpbmdzIF9fQVJHUygoZXhwYW5kX1QgKnhwLCByZWdtYXRjaF9UICpyZWdtYXRjaCwgaW50ICpudW1fZmlsZSwgY2hhcl91ICoqKmZpbGUpKTsKLWV4dGVybiBpbnQgRXhwYW5kT2xkU2V0dGluZyBfX0FSR1MoKGludCAqbnVtX2ZpbGUsIGNoYXJfdSAqKipmaWxlKSk7Ci1leHRlcm4gaW50IGhhc19mb3JtYXRfb3B0aW9uIF9fQVJHUygoaW50IHgpKTsKLWV4dGVybiBpbnQgc2hvcnRtZXNzIF9fQVJHUygoaW50IHgpKTsKLWV4dGVybiB2b2lkIHZpbXJjX2ZvdW5kIF9fQVJHUygoY2hhcl91ICpmbmFtZSwgY2hhcl91ICplbnZuYW1lKSk7Ci1leHRlcm4gdm9pZCBjaGFuZ2VfY29tcGF0aWJsZSBfX0FSR1MoKGludCBvbikpOwotZXh0ZXJuIGludCBvcHRpb25fd2FzX3NldCBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIGludCBjYW5fYnMgX19BUkdTKChpbnQgd2hhdCkpOwotZXh0ZXJuIHZvaWQgc2F2ZV9maWxlX2ZmIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotZXh0ZXJuIGludCBmaWxlX2ZmX2RpZmZlcnMgX19BUkdTKChidWZfVCAqYnVmKSk7Ci1leHRlcm4gaW50IGNoZWNrX2ZmX3ZhbHVlIF9fQVJHUygoY2hhcl91ICpwKSk7Cit2b2lkIHNldF9pbml0XzEgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHNldF9zdHJpbmdfZGVmYXVsdCBfX0FSR1MoKGNoYXIgKm5hbWUsIGNoYXJfdSAqdmFsKSk7Cit2b2lkIHNldF9udW1iZXJfZGVmYXVsdCBfX0FSR1MoKGNoYXIgKm5hbWUsIGxvbmcgdmFsKSk7Cit2b2lkIGZyZWVfYWxsX29wdGlvbnMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHNldF9pbml0XzIgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHNldF9pbml0XzMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHNldF9oZWxwbGFuZ19kZWZhdWx0IF9fQVJHUygoY2hhcl91ICpsYW5nKSk7Cit2b2lkIGluaXRfZ3VpX29wdGlvbnMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHNldF90aXRsZV9kZWZhdWx0cyBfX0FSR1MoKHZvaWQpKTsKK2ludCBkb19zZXQgX19BUkdTKChjaGFyX3UgKmFyZywgaW50IG9wdF9mbGFncykpOwordm9pZCBzZXRfb3B0aW9uc19iaW4gX19BUkdTKChpbnQgb2xkdmFsLCBpbnQgbmV3dmFsLCBpbnQgb3B0X2ZsYWdzKSk7CitpbnQgZ2V0X3ZpbWluZm9fcGFyYW1ldGVyIF9fQVJHUygoaW50IHR5cGUpKTsKK2NoYXJfdSAqZmluZF92aW1pbmZvX3BhcmFtZXRlciBfX0FSR1MoKGludCB0eXBlKSk7Cit2b2lkIGNoZWNrX29wdGlvbnMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGNoZWNrX2J1Zl9vcHRpb25zIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwordm9pZCBmcmVlX3N0cmluZ19vcHRpb24gX19BUkdTKChjaGFyX3UgKnApKTsKK3ZvaWQgY2xlYXJfc3RyaW5nX29wdGlvbiBfX0FSR1MoKGNoYXJfdSAqKnBwKSk7Cit2b2lkIHNldF90ZXJtX29wdGlvbl9hbGxvY2VkIF9fQVJHUygoY2hhcl91ICoqcCkpOworaW50IHdhc19zZXRfaW5zZWN1cmVseSBfX0FSR1MoKGNoYXJfdSAqb3B0LCBpbnQgb3B0X2ZsYWdzKSk7Cit2b2lkIHNldF9zdHJpbmdfb3B0aW9uX2RpcmVjdCBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgaW50IG9wdF9pZHgsIGNoYXJfdSAqdmFsLCBpbnQgb3B0X2ZsYWdzLCBpbnQgc2V0X3NpZCkpOworY2hhcl91ICpjaGVja19zdGxfb3B0aW9uIF9fQVJHUygoY2hhcl91ICpzKSk7CitpbnQgZ2V0X29wdGlvbl92YWx1ZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgbG9uZyAqbnVtdmFsLCBjaGFyX3UgKipzdHJpbmd2YWwsIGludCBvcHRfZmxhZ3MpKTsKK3ZvaWQgc2V0X29wdGlvbl92YWx1ZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSwgbG9uZyBudW1iZXIsIGNoYXJfdSAqc3RyaW5nLCBpbnQgb3B0X2ZsYWdzKSk7CitjaGFyX3UgKmdldF90ZXJtX2NvZGUgX19BUkdTKChjaGFyX3UgKnRuYW1lKSk7CitjaGFyX3UgKmdldF9oaWdobGlnaHRfZGVmYXVsdCBfX0FSR1MoKHZvaWQpKTsKK2NoYXJfdSAqZ2V0X2VuY29kaW5nX2RlZmF1bHQgX19BUkdTKCh2b2lkKSk7CitpbnQgbWFrZXNldCBfX0FSR1MoKEZJTEUgKmZkLCBpbnQgb3B0X2ZsYWdzLCBpbnQgbG9jYWxfb25seSkpOworaW50IG1ha2Vmb2xkc2V0IF9fQVJHUygoRklMRSAqZmQpKTsKK3ZvaWQgY2xlYXJfdGVybW9wdGlvbnMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGZyZWVfdGVybW9wdGlvbnMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHNldF90ZXJtX2RlZmF1bHRzIF9fQVJHUygodm9pZCkpOwordm9pZCBjb21wX2NvbCBfX0FSR1MoKHZvaWQpKTsKK2NoYXJfdSAqZ2V0X2VxdWFscHJnIF9fQVJHUygodm9pZCkpOwordm9pZCB3aW5fY29weV9vcHRpb25zIF9fQVJHUygod2luX1QgKndwX2Zyb20sIHdpbl9UICp3cF90bykpOwordm9pZCBjb3B5X3dpbm9wdCBfX0FSR1MoKHdpbm9wdF9UICpmcm9tLCB3aW5vcHRfVCAqdG8pKTsKK3ZvaWQgY2hlY2tfd2luX29wdGlvbnMgX19BUkdTKCh3aW5fVCAqd2luKSk7Cit2b2lkIGNoZWNrX3dpbm9wdCBfX0FSR1MoKHdpbm9wdF9UICp3b3ApKTsKK3ZvaWQgY2xlYXJfd2lub3B0IF9fQVJHUygod2lub3B0X1QgKndvcCkpOwordm9pZCBidWZfY29weV9vcHRpb25zIF9fQVJHUygoYnVmX1QgKmJ1ZiwgaW50IGZsYWdzKSk7Cit2b2lkIHJlc2V0X21vZGlmaWFibGUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHNldF9pbWluc2VydF9nbG9iYWwgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHNldF9pbXNlYXJjaF9nbG9iYWwgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHNldF9jb250ZXh0X2luX3NldF9jbWQgX19BUkdTKChleHBhbmRfVCAqeHAsIGNoYXJfdSAqYXJnLCBpbnQgb3B0X2ZsYWdzKSk7CitpbnQgRXhwYW5kU2V0dGluZ3MgX19BUkdTKChleHBhbmRfVCAqeHAsIHJlZ21hdGNoX1QgKnJlZ21hdGNoLCBpbnQgKm51bV9maWxlLCBjaGFyX3UgKioqZmlsZSkpOworaW50IEV4cGFuZE9sZFNldHRpbmcgX19BUkdTKChpbnQgKm51bV9maWxlLCBjaGFyX3UgKioqZmlsZSkpOworaW50IGhhc19mb3JtYXRfb3B0aW9uIF9fQVJHUygoaW50IHgpKTsKK2ludCBzaG9ydG1lc3MgX19BUkdTKChpbnQgeCkpOwordm9pZCB2aW1yY19mb3VuZCBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIGNoYXJfdSAqZW52bmFtZSkpOwordm9pZCBjaGFuZ2VfY29tcGF0aWJsZSBfX0FSR1MoKGludCBvbikpOworaW50IG9wdGlvbl93YXNfc2V0IF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitpbnQgY2FuX2JzIF9fQVJHUygoaW50IHdoYXQpKTsKK3ZvaWQgc2F2ZV9maWxlX2ZmIF9fQVJHUygoYnVmX1QgKmJ1ZikpOworaW50IGZpbGVfZmZfZGlmZmVycyBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKK2ludCBjaGVja19mZl92YWx1ZSBfX0FSR1MoKGNoYXJfdSAqcCkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vb3NfcmlzY29zLnBybyBiL3NyYy9wcm90by9vc19yaXNjb3MucHJvCmluZGV4IGVjODA1NWIuLjllYTRjZDUgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9vc19yaXNjb3MucHJvCisrKyBiL3NyYy9wcm90by9vc19yaXNjb3MucHJvCkBAIC0xLDQ5ICsxLDQ5IEBACiAvKiBvc19yaXNjb3MuYyAqLwotZXh0ZXJuIHZvaWQgbWNoX3dyaXRlIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGVuKSk7Ci1leHRlcm4gaW50IG1jaF9pbmNoYXIgX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IG1heGxlbiwgbG9uZyB3dGltZSwgaW50IHRiX2NoYW5nZV9jbnQpKTsKLWV4dGVybiBpbnQgbWNoX2NoYXJfYXZhaWwgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gbG9uZ191IG1jaF9hdmFpbF9tZW0gX19BUkdTKChpbnQgc3BlY2lhbCkpOwotZXh0ZXJuIHZvaWQgbWNoX2RlbGF5IF9fQVJHUygobG9uZyBtc2VjLCBpbnQgaWdub3JlaW5wdXQpKTsKLWV4dGVybiB2b2lkIG1jaF9zdXNwZW5kIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbWNoX2luaXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IG1jaF9jaGVja193aW4gX19BUkdTKChpbnQgYXJnYywgY2hhciAqKmFyZ3YpKTsKLWV4dGVybiBpbnQgbWNoX2lucHV0X2lzYXR0eSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgbWNoX2Nhbl9yZXN0b3JlX3RpdGxlIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBtY2hfY2FuX3Jlc3RvcmVfaWNvbiBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIG1jaF9zZXR0aXRsZSBfX0FSR1MoKGNoYXJfdSAqdGl0bGUsIGNoYXJfdSAqaWNvbikpOwotZXh0ZXJuIHZvaWQgbWNoX3Jlc3RvcmVfdGl0bGUgX19BUkdTKChpbnQgd2hpY2gpKTsKLWV4dGVybiBpbnQgbWNoX2dldF91c2VyX25hbWUgX19BUkdTKChjaGFyX3UgKnMsIGludCBsZW4pKTsKLWV4dGVybiB2b2lkIG1jaF9nZXRfaG9zdF9uYW1lIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGVuKSk7Ci1leHRlcm4gbG9uZyBtY2hfZ2V0X3BpZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgbWNoX2Rpcm5hbWUgX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IGxlbikpOwotZXh0ZXJuIGludCBtY2hfRnVsbE5hbWUgX19BUkdTKChjaGFyX3UgKmZuYW1lLCBjaGFyX3UgKmJ1ZiwgaW50IGxlbiwgaW50IGZvcmNlKSk7Ci1leHRlcm4gaW50IG1jaF9pc0Z1bGxOYW1lIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOwotZXh0ZXJuIGxvbmcgbWNoX2dldHBlcm0gX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBpbnQgbWNoX3NldHBlcm0gX19BUkdTKChjaGFyX3UgKm5hbWUsIGxvbmcgcGVybSkpOwotZXh0ZXJuIHZvaWQgbWNoX2hpZGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBpbnQgbWNoX2lzZGlyIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1leHRlcm4gaW50IG1jaF9jYW5fZXhlIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1leHRlcm4gaW50IG1jaF9ub2RldHlwZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIHZvaWQgbWNoX2Vhcmx5X2luaXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBtY2hfZXhpdCBfX0FSR1MoKGludCByKSk7Ci1leHRlcm4gdm9pZCBtY2hfc2V0dG1vZGUgX19BUkdTKChpbnQgdG1vZGUpKTsKLWV4dGVybiB2b2lkIG1jaF9zZXRtb3VzZSBfX0FSR1MoKGludCBvbikpOwotZXh0ZXJuIGludCBtY2hfc2NyZWVubW9kZSBfX0FSR1MoKGNoYXJfdSAqYXJnKSk7Ci1leHRlcm4gaW50IG1jaF9nZXRfc2hlbGxzaXplIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbWNoX3NldF9zaGVsbHNpemUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBtY2hfbmV3X3NoZWxsc2l6ZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgbWNoX2NhbGxfc2hlbGwgX19BUkdTKChjaGFyX3UgKmNtZCwgaW50IG9wdGlvbnMpKTsKLWV4dGVybiB2b2lkIG1jaF9icmVha2NoZWNrIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBtY2hfZXhwYW5kcGF0aCBfX0FSR1MoKGdhcnJheV9UICpnYXAsIGNoYXJfdSAqcGF0aCwgaW50IGZsYWdzKSk7Ci1leHRlcm4gaW50IGV4cGFuZF9zZWN0aW9uIF9fQVJHUygoZ2FycmF5X1QgKmdhcCwgY2hhcl91ICpyb290LCBjaGFyX3UgKnJlc3QsIGludCBmbGFncykpOwotZXh0ZXJuIGludCBtY2hfZXhwYW5kX3dpbGRjYXJkcyBfX0FSR1MoKGludCBudW1fcGF0LCBjaGFyX3UgKipwYXQsIGludCAqbnVtX2ZpbGUsIGNoYXJfdSAqKipmaWxlLCBpbnQgZmxhZ3MpKTsKLWV4dGVybiBpbnQgbWNoX2hhc19leHBfd2lsZGNhcmQgX19BUkdTKChjaGFyX3UgKnApKTsKLWV4dGVybiBpbnQgbWNoX2hhc193aWxkY2FyZCBfX0FSR1MoKGNoYXJfdSAqcCkpOwotZXh0ZXJuIGludCBtY2hfcmVtb3ZlIF9fQVJHUygoY2hhcl91ICpmaWxlKSk7Ci1leHRlcm4gY2hhcl91ICptY2hfbXVuZ2VfZm5hbWUgX19BUkdTKChjaGFyX3UgKmZuYW1lKSk7Ci1leHRlcm4gaW50IHJvX2J1Zmxpc3RfYWRkIF9fQVJHUygoY2hhcl91ICpvbGRfbmFtZSkpOwotZXh0ZXJuIGludCBtY2hfY2hkaXIgX19BUkdTKChjaGFyX3UgKmRpcikpOwotZXh0ZXJuIHZvaWQgbWNoX3JlYWRfZmlsZXR5cGUgX19BUkdTKChjaGFyX3UgKmZpbGUpKTsKLWV4dGVybiB2b2lkIG1jaF9zZXRfZmlsZXR5cGUgX19BUkdTKChjaGFyX3UgKmZpbGUsIGNoYXJfdSAqdHlwZSkpOwotZXh0ZXJuIGludCBtY2hfY2hlY2tfZmlsZXR5cGUgX19BUkdTKChjaGFyX3UgKmZuYW1lLCBjaGFyX3UgKnR5cGUpKTsKK3ZvaWQgbWNoX3dyaXRlIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGVuKSk7CitpbnQgbWNoX2luY2hhciBfX0FSR1MoKGNoYXJfdSAqYnVmLCBpbnQgbWF4bGVuLCBsb25nIHd0aW1lLCBpbnQgdGJfY2hhbmdlX2NudCkpOworaW50IG1jaF9jaGFyX2F2YWlsIF9fQVJHUygodm9pZCkpOworbG9uZ191IG1jaF9hdmFpbF9tZW0gX19BUkdTKChpbnQgc3BlY2lhbCkpOwordm9pZCBtY2hfZGVsYXkgX19BUkdTKChsb25nIG1zZWMsIGludCBpZ25vcmVpbnB1dCkpOwordm9pZCBtY2hfc3VzcGVuZCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWNoX2luaXQgX19BUkdTKCh2b2lkKSk7CitpbnQgbWNoX2NoZWNrX3dpbiBfX0FSR1MoKGludCBhcmdjLCBjaGFyICoqYXJndikpOworaW50IG1jaF9pbnB1dF9pc2F0dHkgX19BUkdTKCh2b2lkKSk7CitpbnQgbWNoX2Nhbl9yZXN0b3JlX3RpdGxlIF9fQVJHUygodm9pZCkpOworaW50IG1jaF9jYW5fcmVzdG9yZV9pY29uIF9fQVJHUygodm9pZCkpOwordm9pZCBtY2hfc2V0dGl0bGUgX19BUkdTKChjaGFyX3UgKnRpdGxlLCBjaGFyX3UgKmljb24pKTsKK3ZvaWQgbWNoX3Jlc3RvcmVfdGl0bGUgX19BUkdTKChpbnQgd2hpY2gpKTsKK2ludCBtY2hfZ2V0X3VzZXJfbmFtZSBfX0FSR1MoKGNoYXJfdSAqcywgaW50IGxlbikpOwordm9pZCBtY2hfZ2V0X2hvc3RfbmFtZSBfX0FSR1MoKGNoYXJfdSAqcywgaW50IGxlbikpOworbG9uZyBtY2hfZ2V0X3BpZCBfX0FSR1MoKHZvaWQpKTsKK2ludCBtY2hfZGlybmFtZSBfX0FSR1MoKGNoYXJfdSAqYnVmLCBpbnQgbGVuKSk7CitpbnQgbWNoX0Z1bGxOYW1lIF9fQVJHUygoY2hhcl91ICpmbmFtZSwgY2hhcl91ICpidWYsIGludCBsZW4sIGludCBmb3JjZSkpOworaW50IG1jaF9pc0Z1bGxOYW1lIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOworbG9uZyBtY2hfZ2V0cGVybSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOworaW50IG1jaF9zZXRwZXJtIF9fQVJHUygoY2hhcl91ICpuYW1lLCBsb25nIHBlcm0pKTsKK3ZvaWQgbWNoX2hpZGUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK2ludCBtY2hfaXNkaXIgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK2ludCBtY2hfY2FuX2V4ZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOworaW50IG1jaF9ub2RldHlwZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwordm9pZCBtY2hfZWFybHlfaW5pdCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWNoX2V4aXQgX19BUkdTKChpbnQgcikpOwordm9pZCBtY2hfc2V0dG1vZGUgX19BUkdTKChpbnQgdG1vZGUpKTsKK3ZvaWQgbWNoX3NldG1vdXNlIF9fQVJHUygoaW50IG9uKSk7CitpbnQgbWNoX3NjcmVlbm1vZGUgX19BUkdTKChjaGFyX3UgKmFyZykpOworaW50IG1jaF9nZXRfc2hlbGxzaXplIF9fQVJHUygodm9pZCkpOwordm9pZCBtY2hfc2V0X3NoZWxsc2l6ZSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWNoX25ld19zaGVsbHNpemUgX19BUkdTKCh2b2lkKSk7CitpbnQgbWNoX2NhbGxfc2hlbGwgX19BUkdTKChjaGFyX3UgKmNtZCwgaW50IG9wdGlvbnMpKTsKK3ZvaWQgbWNoX2JyZWFrY2hlY2sgX19BUkdTKCh2b2lkKSk7CitpbnQgbWNoX2V4cGFuZHBhdGggX19BUkdTKChnYXJyYXlfVCAqZ2FwLCBjaGFyX3UgKnBhdGgsIGludCBmbGFncykpOworaW50IGV4cGFuZF9zZWN0aW9uIF9fQVJHUygoZ2FycmF5X1QgKmdhcCwgY2hhcl91ICpyb290LCBjaGFyX3UgKnJlc3QsIGludCBmbGFncykpOworaW50IG1jaF9leHBhbmRfd2lsZGNhcmRzIF9fQVJHUygoaW50IG51bV9wYXQsIGNoYXJfdSAqKnBhdCwgaW50ICpudW1fZmlsZSwgY2hhcl91ICoqKmZpbGUsIGludCBmbGFncykpOworaW50IG1jaF9oYXNfZXhwX3dpbGRjYXJkIF9fQVJHUygoY2hhcl91ICpwKSk7CitpbnQgbWNoX2hhc193aWxkY2FyZCBfX0FSR1MoKGNoYXJfdSAqcCkpOworaW50IG1jaF9yZW1vdmUgX19BUkdTKChjaGFyX3UgKmZpbGUpKTsKK2NoYXJfdSAqbWNoX211bmdlX2ZuYW1lIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOworaW50IHJvX2J1Zmxpc3RfYWRkIF9fQVJHUygoY2hhcl91ICpvbGRfbmFtZSkpOworaW50IG1jaF9jaGRpciBfX0FSR1MoKGNoYXJfdSAqZGlyKSk7Cit2b2lkIG1jaF9yZWFkX2ZpbGV0eXBlIF9fQVJHUygoY2hhcl91ICpmaWxlKSk7Cit2b2lkIG1jaF9zZXRfZmlsZXR5cGUgX19BUkdTKChjaGFyX3UgKmZpbGUsIGNoYXJfdSAqdHlwZSkpOworaW50IG1jaF9jaGVja19maWxldHlwZSBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIGNoYXJfdSAqdHlwZSkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vb3Nfdm1zLnBybyBiL3NyYy9wcm90by9vc192bXMucHJvCmluZGV4IDY2N2Y3YWIuLjJlZDYzOTQgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9vc192bXMucHJvCisrKyBiL3NyYy9wcm90by9vc192bXMucHJvCkBAIC0xLDE0ICsxLDE0IEBACiAvKiBvc192bXMuYyAqLwotZXh0ZXJuIHZvaWQgbWNoX3NldHRtb2RlIF9fQVJHUygoaW50IHRtb2RlKSk7Ci1leHRlcm4gaW50IG1jaF9nZXRfc2hlbGxzaXplIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbWNoX3NldF9zaGVsbHNpemUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gY2hhcl91ICptY2hfZ2V0ZW52IF9fQVJHUygoY2hhcl91ICpsb2duYW0pKTsKLWV4dGVybiBpbnQgbWNoX3NldGVudiBfX0FSR1MoKGNoYXIgKnZhciwgY2hhciAqdmFsdWUsIGludCB4KSk7Ci1leHRlcm4gaW50IHZtc19zeXMgX19BUkdTKChjaGFyICpjbWQsIGNoYXIgKm91dCwgY2hhciAqaW5wKSk7Ci1leHRlcm4gaW50IHZtc19zeXNfc3RhdHVzIF9fQVJHUygoaW50IHN0YXR1cykpOwotZXh0ZXJuIGludCB2bXNfcmVhZCBfX0FSR1MoKGNoYXIgKmluYnVmLCBzaXplX3QgbmJ5dGVzKSk7Ci1leHRlcm4gaW50IG1jaF9leHBhbmRfd2lsZGNhcmRzIF9fQVJHUygoaW50IG51bV9wYXQsIGNoYXJfdSAqKnBhdCwgaW50ICpudW1fZmlsZSwgY2hhcl91ICoqKmZpbGUsIGludCBmbGFncykpOwotZXh0ZXJuIGludCBtY2hfZXhwYW5kcGF0aCBfX0FSR1MoKGdhcnJheV9UICpnYXAsIGNoYXJfdSAqcGF0aCwgaW50IGZsYWdzKSk7Ci1leHRlcm4gdm9pZCAqdm1zX2ZpeGZpbGVuYW1lIF9fQVJHUygodm9pZCAqaW5zdHJpbmcpKTsKLWV4dGVybiB2b2lkIHZtc19yZW1vdmVfdmVyc2lvbiBfX0FSR1MoKHZvaWQgKmZuYW1lKSk7Cit2b2lkIG1jaF9zZXR0bW9kZSBfX0FSR1MoKGludCB0bW9kZSkpOworaW50IG1jaF9nZXRfc2hlbGxzaXplIF9fQVJHUygodm9pZCkpOwordm9pZCBtY2hfc2V0X3NoZWxsc2l6ZSBfX0FSR1MoKHZvaWQpKTsKK2NoYXJfdSAqbWNoX2dldGVudiBfX0FSR1MoKGNoYXJfdSAqbG9nbmFtKSk7CitpbnQgbWNoX3NldGVudiBfX0FSR1MoKGNoYXIgKnZhciwgY2hhciAqdmFsdWUsIGludCB4KSk7CitpbnQgdm1zX3N5cyBfX0FSR1MoKGNoYXIgKmNtZCwgY2hhciAqb3V0LCBjaGFyICppbnApKTsKK2ludCB2bXNfc3lzX3N0YXR1cyBfX0FSR1MoKGludCBzdGF0dXMpKTsKK2ludCB2bXNfcmVhZCBfX0FSR1MoKGNoYXIgKmluYnVmLCBzaXplX3QgbmJ5dGVzKSk7CitpbnQgbWNoX2V4cGFuZF93aWxkY2FyZHMgX19BUkdTKChpbnQgbnVtX3BhdCwgY2hhcl91ICoqcGF0LCBpbnQgKm51bV9maWxlLCBjaGFyX3UgKioqZmlsZSwgaW50IGZsYWdzKSk7CitpbnQgbWNoX2V4cGFuZHBhdGggX19BUkdTKChnYXJyYXlfVCAqZ2FwLCBjaGFyX3UgKnBhdGgsIGludCBmbGFncykpOwordm9pZCAqdm1zX2ZpeGZpbGVuYW1lIF9fQVJHUygodm9pZCAqaW5zdHJpbmcpKTsKK3ZvaWQgdm1zX3JlbW92ZV92ZXJzaW9uIF9fQVJHUygodm9pZCAqZm5hbWUpKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL29zX3dpbjE2LnBybyBiL3NyYy9wcm90by9vc193aW4xNi5wcm8KaW5kZXggNGJmZDliMy4uMzFmYTcyYyAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL29zX3dpbjE2LnBybworKysgYi9zcmMvcHJvdG8vb3Nfd2luMTYucHJvCkBAIC0xLDEyICsxLDEyIEBACiAvKiBvc193aW4xNi5jICovCi1leHRlcm4gdm9pZCBtY2hfc2V0bW91c2UgX19BUkdTKChpbnQgb24pKTsKLWV4dGVybiB2b2lkIG1jaF9pbml0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBtY2hfY2hlY2tfd2luIF9fQVJHUygoaW50IGFyZ2MsIGNoYXIgKiphcmd2KSk7Ci1leHRlcm4gbG9uZyBtY2hfZ2V0X3BpZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgbWNoX2NhbGxfc2hlbGwgX19BUkdTKChjaGFyX3UgKmNtZCwgaW50IG9wdGlvbnMpKTsKLWV4dGVybiB2b2lkIG1jaF9kZWxheSBfX0FSR1MoKGxvbmcgbXNlYywgaW50IGlnbm9yZWlucHV0KSk7Ci1leHRlcm4gdm9pZCBtY2hfYnJlYWtjaGVjayBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBsb25nX3UgbWNoX2F2YWlsX21lbSBfX0FSR1MoKGludCBzcGVjaWFsKSk7Ci1leHRlcm4gaW50IG1jaF9yZW5hbWUgX19BUkdTKChjb25zdCBjaGFyICpwc3pPbGRGaWxlLCBjb25zdCBjaGFyICpwc3pOZXdGaWxlKSk7Ci1leHRlcm4gY2hhciAqZGVmYXVsdF9zaGVsbCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbWNoX3NldG1vdXNlIF9fQVJHUygoaW50IG9uKSk7Cit2b2lkIG1jaF9pbml0IF9fQVJHUygodm9pZCkpOworaW50IG1jaF9jaGVja193aW4gX19BUkdTKChpbnQgYXJnYywgY2hhciAqKmFyZ3YpKTsKK2xvbmcgbWNoX2dldF9waWQgX19BUkdTKCh2b2lkKSk7CitpbnQgbWNoX2NhbGxfc2hlbGwgX19BUkdTKChjaGFyX3UgKmNtZCwgaW50IG9wdGlvbnMpKTsKK3ZvaWQgbWNoX2RlbGF5IF9fQVJHUygobG9uZyBtc2VjLCBpbnQgaWdub3JlaW5wdXQpKTsKK3ZvaWQgbWNoX2JyZWFrY2hlY2sgX19BUkdTKCh2b2lkKSk7Citsb25nX3UgbWNoX2F2YWlsX21lbSBfX0FSR1MoKGludCBzcGVjaWFsKSk7CitpbnQgbWNoX3JlbmFtZSBfX0FSR1MoKGNvbnN0IGNoYXIgKnBzek9sZEZpbGUsIGNvbnN0IGNoYXIgKnBzek5ld0ZpbGUpKTsKK2NoYXIgKmRlZmF1bHRfc2hlbGwgX19BUkdTKCh2b2lkKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9wb3B1cG1udS5wcm8gYi9zcmMvcHJvdG8vcG9wdXBtbnUucHJvCmluZGV4IDU0MjdkYWQuLjc0YTUzZTIgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9wb3B1cG1udS5wcm8KKysrIGIvc3JjL3Byb3RvL3BvcHVwbW51LnBybwpAQCAtMSw4ICsxLDggQEAKIC8qIHBvcHVwbW51LmMgKi8KLWV4dGVybiB2b2lkIHB1bV9kaXNwbGF5IF9fQVJHUygocHVtaXRlbV9UICphcnJheSwgaW50IHNpemUsIGludCBzZWxlY3RlZCkpOwotZXh0ZXJuIHZvaWQgcHVtX3JlZHJhdyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHB1bV91bmRpc3BsYXkgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBwdW1fY2xlYXIgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IHB1bV92aXNpYmxlIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBwdW1fZ2V0X2hlaWdodCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgcHVtX2Rpc3BsYXkgX19BUkdTKChwdW1pdGVtX1QgKmFycmF5LCBpbnQgc2l6ZSwgaW50IHNlbGVjdGVkKSk7Cit2b2lkIHB1bV9yZWRyYXcgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHB1bV91bmRpc3BsYXkgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHB1bV9jbGVhciBfX0FSR1MoKHZvaWQpKTsKK2ludCBwdW1fdmlzaWJsZSBfX0FSR1MoKHZvaWQpKTsKK2ludCBwdW1fZ2V0X2hlaWdodCBfX0FSR1MoKHZvaWQpKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL3JlZ2V4cC5wcm8gYi9zcmMvcHJvdG8vcmVnZXhwLnBybwppbmRleCAyNzU5N2IyLi5kZjJmZGU0IDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vcmVnZXhwLnBybworKysgYi9zcmMvcHJvdG8vcmVnZXhwLnBybwpAQCAtMSwxNyArMSwxNyBAQAogLyogcmVnZXhwLmMgKi8KLWV4dGVybiB2b2lkIGZyZWVfcmVnZXhwX3N0dWZmIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCByZV9tdWx0aWxpbmUgX19BUkdTKChyZWdwcm9nX1QgKnByb2cpKTsKLWV4dGVybiBpbnQgcmVfbG9va2JlaGluZCBfX0FSR1MoKHJlZ3Byb2dfVCAqcHJvZykpOwotZXh0ZXJuIGNoYXJfdSAqc2tpcF9yZWdleHAgX19BUkdTKChjaGFyX3UgKnN0YXJ0cCwgaW50IGRpcmMsIGludCBtYWdpYywgY2hhcl91ICoqbmV3cCkpOwotZXh0ZXJuIHJlZ3Byb2dfVCAqdmltX3JlZ2NvbXAgX19BUkdTKChjaGFyX3UgKmV4cHIsIGludCByZV9mbGFncykpOwotZXh0ZXJuIGludCB2aW1fcmVnY29tcF9oYWRfZW9sIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCB2aW1fcmVnZXhlYyBfX0FSR1MoKHJlZ21hdGNoX1QgKnJtcCwgY2hhcl91ICpsaW5lLCBjb2xucl9UIGNvbCkpOwotZXh0ZXJuIGludCB2aW1fcmVnZXhlY19ubCBfX0FSR1MoKHJlZ21hdGNoX1QgKnJtcCwgY2hhcl91ICpsaW5lLCBjb2xucl9UIGNvbCkpOwotZXh0ZXJuIGxvbmcgdmltX3JlZ2V4ZWNfbXVsdGkgX19BUkdTKChyZWdtbWF0Y2hfVCAqcm1wLCB3aW5fVCAqd2luLCBidWZfVCAqYnVmLCBsaW5lbnJfVCBsbnVtLCBjb2xucl9UIGNvbCkpOwotZXh0ZXJuIHJlZ19leHRtYXRjaF9UICpyZWZfZXh0bWF0Y2ggX19BUkdTKChyZWdfZXh0bWF0Y2hfVCAqZW0pKTsKLWV4dGVybiB2b2lkIHVucmVmX2V4dG1hdGNoIF9fQVJHUygocmVnX2V4dG1hdGNoX1QgKmVtKSk7Ci1leHRlcm4gY2hhcl91ICpyZWd0aWxkZSBfX0FSR1MoKGNoYXJfdSAqc291cmNlLCBpbnQgbWFnaWMpKTsKLWV4dGVybiBpbnQgdmltX3JlZ3N1YiBfX0FSR1MoKHJlZ21hdGNoX1QgKnJtcCwgY2hhcl91ICpzb3VyY2UsIGNoYXJfdSAqZGVzdCwgaW50IGNvcHksIGludCBtYWdpYywgaW50IGJhY2tzbGFzaCkpOwotZXh0ZXJuIGludCB2aW1fcmVnc3ViX211bHRpIF9fQVJHUygocmVnbW1hdGNoX1QgKnJtcCwgbGluZW5yX1QgbG51bSwgY2hhcl91ICpzb3VyY2UsIGNoYXJfdSAqZGVzdCwgaW50IGNvcHksIGludCBtYWdpYywgaW50IGJhY2tzbGFzaCkpOwotZXh0ZXJuIGNoYXJfdSAqcmVnX3N1Ym1hdGNoIF9fQVJHUygoaW50IG5vKSk7Cit2b2lkIGZyZWVfcmVnZXhwX3N0dWZmIF9fQVJHUygodm9pZCkpOworaW50IHJlX211bHRpbGluZSBfX0FSR1MoKHJlZ3Byb2dfVCAqcHJvZykpOworaW50IHJlX2xvb2tiZWhpbmQgX19BUkdTKChyZWdwcm9nX1QgKnByb2cpKTsKK2NoYXJfdSAqc2tpcF9yZWdleHAgX19BUkdTKChjaGFyX3UgKnN0YXJ0cCwgaW50IGRpcmMsIGludCBtYWdpYywgY2hhcl91ICoqbmV3cCkpOworcmVncHJvZ19UICp2aW1fcmVnY29tcCBfX0FSR1MoKGNoYXJfdSAqZXhwciwgaW50IHJlX2ZsYWdzKSk7CitpbnQgdmltX3JlZ2NvbXBfaGFkX2VvbCBfX0FSR1MoKHZvaWQpKTsKK2ludCB2aW1fcmVnZXhlYyBfX0FSR1MoKHJlZ21hdGNoX1QgKnJtcCwgY2hhcl91ICpsaW5lLCBjb2xucl9UIGNvbCkpOworaW50IHZpbV9yZWdleGVjX25sIF9fQVJHUygocmVnbWF0Y2hfVCAqcm1wLCBjaGFyX3UgKmxpbmUsIGNvbG5yX1QgY29sKSk7Citsb25nIHZpbV9yZWdleGVjX211bHRpIF9fQVJHUygocmVnbW1hdGNoX1QgKnJtcCwgd2luX1QgKndpbiwgYnVmX1QgKmJ1ZiwgbGluZW5yX1QgbG51bSwgY29sbnJfVCBjb2wpKTsKK3JlZ19leHRtYXRjaF9UICpyZWZfZXh0bWF0Y2ggX19BUkdTKChyZWdfZXh0bWF0Y2hfVCAqZW0pKTsKK3ZvaWQgdW5yZWZfZXh0bWF0Y2ggX19BUkdTKChyZWdfZXh0bWF0Y2hfVCAqZW0pKTsKK2NoYXJfdSAqcmVndGlsZGUgX19BUkdTKChjaGFyX3UgKnNvdXJjZSwgaW50IG1hZ2ljKSk7CitpbnQgdmltX3JlZ3N1YiBfX0FSR1MoKHJlZ21hdGNoX1QgKnJtcCwgY2hhcl91ICpzb3VyY2UsIGNoYXJfdSAqZGVzdCwgaW50IGNvcHksIGludCBtYWdpYywgaW50IGJhY2tzbGFzaCkpOworaW50IHZpbV9yZWdzdWJfbXVsdGkgX19BUkdTKChyZWdtbWF0Y2hfVCAqcm1wLCBsaW5lbnJfVCBsbnVtLCBjaGFyX3UgKnNvdXJjZSwgY2hhcl91ICpkZXN0LCBpbnQgY29weSwgaW50IG1hZ2ljLCBpbnQgYmFja3NsYXNoKSk7CitjaGFyX3UgKnJlZ19zdWJtYXRjaCBfX0FSR1MoKGludCBubykpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vc3BlbGwucHJvIGIvc3JjL3Byb3RvL3NwZWxsLnBybwppbmRleCBkMWU1ZWY3Li5mZWNmNGUwIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vc3BlbGwucHJvCisrKyBiL3NyYy9wcm90by9zcGVsbC5wcm8KQEAgLTEsMjYgKzEsMjYgQEAKIC8qIHNwZWxsLmMgKi8KLWV4dGVybiBpbnQgc3BlbGxfY2hlY2sgX19BUkdTKCh3aW5fVCAqd3AsIGNoYXJfdSAqcHRyLCBobGZfVCAqYXR0cnAsIGludCAqY2FwY29sLCBpbnQgZG9jb3VudCkpOwotZXh0ZXJuIGludCBzcGVsbF9tb3ZlX3RvIF9fQVJHUygod2luX1QgKndwLCBpbnQgZGlyLCBpbnQgYWxsd29yZHMsIGludCBjdXJsaW5lLCBobGZfVCAqYXR0cnApKTsKLWV4dGVybiB2b2lkIHNwZWxsX2NhdF9saW5lIF9fQVJHUygoY2hhcl91ICpidWYsIGNoYXJfdSAqbGluZSwgaW50IG1heGxlbikpOwotZXh0ZXJuIGNoYXJfdSAqZGlkX3NldF9zcGVsbGxhbmcgX19BUkdTKChidWZfVCAqYnVmKSk7Ci1leHRlcm4gdm9pZCBzcGVsbF9mcmVlX2FsbCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHNwZWxsX3JlbG9hZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgc3BlbGxfY2hlY2tfbXNtIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgcHV0X2J5dGVzIF9fQVJHUygoRklMRSAqZmQsIGxvbmdfdSBuciwgaW50IGxlbikpOwotZXh0ZXJuIHZvaWQgZXhfbWtzcGVsbCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgZXhfc3BlbGwgX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIHNwZWxsX2FkZF93b3JkIF9fQVJHUygoY2hhcl91ICp3b3JkLCBpbnQgbGVuLCBpbnQgYmFkLCBpbnQgaW5kZXgsIGludCB1bmRvKSk7Ci1leHRlcm4gdm9pZCBpbml0X3NwZWxsX2NoYXJ0YWIgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IHNwZWxsX2NoZWNrX3NwcyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHNwZWxsX3N1Z2dlc3QgX19BUkdTKChpbnQgY291bnQpKTsKLWV4dGVybiB2b2lkIGV4X3NwZWxscmVwYWxsIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBzcGVsbF9zdWdnZXN0X2xpc3QgX19BUkdTKChnYXJyYXlfVCAqZ2FwLCBjaGFyX3UgKndvcmQsIGludCBtYXhjb3VudCwgaW50IG5lZWRfY2FwLCBpbnQgaW50ZXJhY3RpdmUpKTsKLWV4dGVybiBjaGFyX3UgKmV2YWxfc291bmRmb2xkIF9fQVJHUygoY2hhcl91ICp3b3JkKSk7Ci1leHRlcm4gdm9pZCBleF9zcGVsbGluZm8gX19BUkdTKChleGFyZ19UICplYXApKTsKLWV4dGVybiB2b2lkIGV4X3NwZWxsZHVtcCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIHZvaWQgc3BlbGxfZHVtcF9jb21wbCBfX0FSR1MoKGJ1Zl9UICpidWYsIGNoYXJfdSAqcGF0LCBpbnQgaWMsIGludCAqZGlyLCBpbnQgZHVtcGZsYWdzX2FyZykpOwotZXh0ZXJuIGNoYXJfdSAqc3BlbGxfdG9fd29yZF9lbmQgX19BUkdTKChjaGFyX3UgKnN0YXJ0LCBidWZfVCAqYnVmKSk7Ci1leHRlcm4gaW50IHNwZWxsX3dvcmRfc3RhcnQgX19BUkdTKChpbnQgc3RhcnRjb2wpKTsKLWV4dGVybiB2b2lkIHNwZWxsX2V4cGFuZF9jaGVja19jYXAgX19BUkdTKChjb2xucl9UIGNvbCkpOwotZXh0ZXJuIGludCBleHBhbmRfc3BlbGxpbmcgX19BUkdTKChsaW5lbnJfVCBsbnVtLCBpbnQgY29sLCBjaGFyX3UgKnBhdCwgY2hhcl91ICoqKm1hdGNocCkpOworaW50IHNwZWxsX2NoZWNrIF9fQVJHUygod2luX1QgKndwLCBjaGFyX3UgKnB0ciwgaGxmX1QgKmF0dHJwLCBpbnQgKmNhcGNvbCwgaW50IGRvY291bnQpKTsKK2ludCBzcGVsbF9tb3ZlX3RvIF9fQVJHUygod2luX1QgKndwLCBpbnQgZGlyLCBpbnQgYWxsd29yZHMsIGludCBjdXJsaW5lLCBobGZfVCAqYXR0cnApKTsKK3ZvaWQgc3BlbGxfY2F0X2xpbmUgX19BUkdTKChjaGFyX3UgKmJ1ZiwgY2hhcl91ICpsaW5lLCBpbnQgbWF4bGVuKSk7CitjaGFyX3UgKmRpZF9zZXRfc3BlbGxsYW5nIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwordm9pZCBzcGVsbF9mcmVlX2FsbCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgc3BlbGxfcmVsb2FkIF9fQVJHUygodm9pZCkpOworaW50IHNwZWxsX2NoZWNrX21zbSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgcHV0X2J5dGVzIF9fQVJHUygoRklMRSAqZmQsIGxvbmdfdSBuciwgaW50IGxlbikpOwordm9pZCBleF9ta3NwZWxsIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGV4X3NwZWxsIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIHNwZWxsX2FkZF93b3JkIF9fQVJHUygoY2hhcl91ICp3b3JkLCBpbnQgbGVuLCBpbnQgYmFkLCBpbnQgaWR4LCBpbnQgdW5kbykpOwordm9pZCBpbml0X3NwZWxsX2NoYXJ0YWIgX19BUkdTKCh2b2lkKSk7CitpbnQgc3BlbGxfY2hlY2tfc3BzIF9fQVJHUygodm9pZCkpOwordm9pZCBzcGVsbF9zdWdnZXN0IF9fQVJHUygoaW50IGNvdW50KSk7Cit2b2lkIGV4X3NwZWxscmVwYWxsIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIHNwZWxsX3N1Z2dlc3RfbGlzdCBfX0FSR1MoKGdhcnJheV9UICpnYXAsIGNoYXJfdSAqd29yZCwgaW50IG1heGNvdW50LCBpbnQgbmVlZF9jYXAsIGludCBpbnRlcmFjdGl2ZSkpOworY2hhcl91ICpldmFsX3NvdW5kZm9sZCBfX0FSR1MoKGNoYXJfdSAqd29yZCkpOwordm9pZCBleF9zcGVsbGluZm8gX19BUkdTKChleGFyZ19UICplYXApKTsKK3ZvaWQgZXhfc3BlbGxkdW1wIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIHNwZWxsX2R1bXBfY29tcGwgX19BUkdTKChidWZfVCAqYnVmLCBjaGFyX3UgKnBhdCwgaW50IGljLCBpbnQgKmRpciwgaW50IGR1bXBmbGFnc19hcmcpKTsKK2NoYXJfdSAqc3BlbGxfdG9fd29yZF9lbmQgX19BUkdTKChjaGFyX3UgKnN0YXJ0LCBidWZfVCAqYnVmKSk7CitpbnQgc3BlbGxfd29yZF9zdGFydCBfX0FSR1MoKGludCBzdGFydGNvbCkpOwordm9pZCBzcGVsbF9leHBhbmRfY2hlY2tfY2FwIF9fQVJHUygoY29sbnJfVCBjb2wpKTsKK2ludCBleHBhbmRfc3BlbGxpbmcgX19BUkdTKChsaW5lbnJfVCBsbnVtLCBpbnQgY29sLCBjaGFyX3UgKnBhdCwgY2hhcl91ICoqKm1hdGNocCkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vc3ludGF4LnBybyBiL3NyYy9wcm90by9zeW50YXgucHJvCmluZGV4IGFkNDQyZTYuLmMzM2E4OTAgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9zeW50YXgucHJvCisrKyBiL3NyYy9wcm90by9zeW50YXgucHJvCkBAIC0xLDQ3ICsxLDQ3IEBACiAvKiBzeW50YXguYyAqLwotZXh0ZXJuIHZvaWQgc3ludGF4X3N0YXJ0IF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtKSk7Ci1leHRlcm4gdm9pZCBzeW5fc3RhY2tfZnJlZV9hbGwgX19BUkdTKChidWZfVCAqYnVmKSk7Ci1leHRlcm4gdm9pZCBzeW5fc3RhY2tfYXBwbHlfY2hhbmdlcyBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKLWV4dGVybiB2b2lkIHN5bnRheF9lbmRfcGFyc2luZyBfX0FSR1MoKGxpbmVucl9UIGxudW0pKTsKLWV4dGVybiBpbnQgc3ludGF4X2NoZWNrX2NoYW5nZWQgX19BUkdTKChsaW5lbnJfVCBsbnVtKSk7Ci1leHRlcm4gaW50IGdldF9zeW50YXhfYXR0ciBfX0FSR1MoKGNvbG5yX1QgY29sLCBpbnQgKmNhbl9zcGVsbCkpOwotZXh0ZXJuIHZvaWQgc3ludGF4X2NsZWFyIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotZXh0ZXJuIHZvaWQgZXhfc3ludGF4IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gaW50IHN5bnRheF9wcmVzZW50IF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotZXh0ZXJuIHZvaWQgc2V0X2NvbnRleHRfaW5fc3ludGF4X2NtZCBfX0FSR1MoKGV4cGFuZF9UICp4cCwgY2hhcl91ICphcmcpKTsKLWV4dGVybiBjaGFyX3UgKmdldF9zeW50YXhfbmFtZSBfX0FSR1MoKGV4cGFuZF9UICp4cCwgaW50IGlkeCkpOwotZXh0ZXJuIGludCBzeW5fZ2V0X2lkIF9fQVJHUygod2luX1QgKndwLCBsb25nIGxudW0sIGNvbG5yX1QgY29sLCBpbnQgdHJhbnMsIGludCAqc3BlbGxwKSk7Ci1leHRlcm4gaW50IHN5bl9nZXRfZm9sZGxldmVsIF9fQVJHUygod2luX1QgKndwLCBsb25nIGxudW0pKTsKLWV4dGVybiB2b2lkIGluaXRfaGlnaGxpZ2h0IF9fQVJHUygoaW50IGJvdGgsIGludCByZXNldCkpOwotZXh0ZXJuIGludCBsb2FkX2NvbG9ycyBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIHZvaWQgZG9faGlnaGxpZ2h0IF9fQVJHUygoY2hhcl91ICpsaW5lLCBpbnQgZm9yY2VpdCwgaW50IGluaXQpKTsKLWV4dGVybiB2b2lkIGZyZWVfaGlnaGxpZ2h0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgcmVzdG9yZV9jdGVybV9jb2xvcnMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzZXRfbm9ybWFsX2NvbG9ycyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBjaGFyX3UgKmhsX2dldF9mb250X25hbWUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBobF9zZXRfZm9udF9uYW1lIF9fQVJHUygoY2hhcl91ICpmb250X25hbWUpKTsKLWV4dGVybiB2b2lkIGhsX3NldF9iZ19jb2xvcl9uYW1lIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1leHRlcm4gdm9pZCBobF9zZXRfZmdfY29sb3JfbmFtZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIHZvaWQgY2xlYXJfaGxfdGFibGVzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBobF9jb21iaW5lX2F0dHIgX19BUkdTKChpbnQgY2hhcl9hdHRyLCBpbnQgcHJpbV9hdHRyKSk7Ci1leHRlcm4gYXR0cmVudHJ5X1QgKnN5bl9ndWlfYXR0cjJlbnRyeSBfX0FSR1MoKGludCBhdHRyKSk7Ci1leHRlcm4gaW50IHN5bl9hdHRyMmF0dHIgX19BUkdTKChpbnQgYXR0cikpOwotZXh0ZXJuIGF0dHJlbnRyeV9UICpzeW5fdGVybV9hdHRyMmVudHJ5IF9fQVJHUygoaW50IGF0dHIpKTsKLWV4dGVybiBhdHRyZW50cnlfVCAqc3luX2N0ZXJtX2F0dHIyZW50cnkgX19BUkdTKChpbnQgYXR0cikpOwotZXh0ZXJuIGNoYXJfdSAqaGlnaGxpZ2h0X2hhc19hdHRyIF9fQVJHUygoaW50IGlkLCBpbnQgZmxhZywgaW50IG1vZGVjKSk7Ci1leHRlcm4gY2hhcl91ICpoaWdobGlnaHRfY29sb3IgX19BUkdTKChpbnQgaWQsIGNoYXJfdSAqd2hhdCwgaW50IG1vZGVjKSk7Ci1leHRlcm4gbG9uZ191IGhpZ2hsaWdodF9ndWlfY29sb3JfcmdiIF9fQVJHUygoaW50IGlkLCBpbnQgZmcpKTsKLWV4dGVybiBpbnQgc3luX25hbWUyaWQgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWV4dGVybiBpbnQgaGlnaGxpZ2h0X2V4aXN0cyBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIGNoYXJfdSAqc3luX2lkMm5hbWUgX19BUkdTKChpbnQgaWQpKTsKLWV4dGVybiBpbnQgc3luX25hbWVuMmlkIF9fQVJHUygoY2hhcl91ICpsaW5lcCwgaW50IGxlbikpOwotZXh0ZXJuIGludCBzeW5fY2hlY2tfZ3JvdXAgX19BUkdTKChjaGFyX3UgKnBwLCBpbnQgbGVuKSk7Ci1leHRlcm4gaW50IHN5bl9pZDJhdHRyIF9fQVJHUygoaW50IGhsX2lkKSk7Ci1leHRlcm4gaW50IHN5bl9pZDJjb2xvcnMgX19BUkdTKChpbnQgaGxfaWQsIGd1aWNvbG9yX1QgKmZncCwgZ3VpY29sb3JfVCAqYmdwKSk7Ci1leHRlcm4gaW50IHN5bl9nZXRfZmluYWxfaWQgX19BUkdTKChpbnQgaGxfaWQpKTsKLWV4dGVybiB2b2lkIGhpZ2hsaWdodF9ndWlfc3RhcnRlZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgaGlnaGxpZ2h0X2NoYW5nZWQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzZXRfY29udGV4dF9pbl9oaWdobGlnaHRfY21kIF9fQVJHUygoZXhwYW5kX1QgKnhwLCBjaGFyX3UgKmFyZykpOwotZXh0ZXJuIGNoYXJfdSAqZ2V0X2hpZ2hsaWdodF9uYW1lIF9fQVJHUygoZXhwYW5kX1QgKnhwLCBpbnQgaWR4KSk7Ci1leHRlcm4gdm9pZCBmcmVlX2hpZ2hsaWdodF9mb250cyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgc3ludGF4X3N0YXJ0IF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtKSk7Cit2b2lkIHN5bl9zdGFja19mcmVlX2FsbCBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKK3ZvaWQgc3luX3N0YWNrX2FwcGx5X2NoYW5nZXMgX19BUkdTKChidWZfVCAqYnVmKSk7Cit2b2lkIHN5bnRheF9lbmRfcGFyc2luZyBfX0FSR1MoKGxpbmVucl9UIGxudW0pKTsKK2ludCBzeW50YXhfY2hlY2tfY2hhbmdlZCBfX0FSR1MoKGxpbmVucl9UIGxudW0pKTsKK2ludCBnZXRfc3ludGF4X2F0dHIgX19BUkdTKChjb2xucl9UIGNvbCwgaW50ICpjYW5fc3BlbGwpKTsKK3ZvaWQgc3ludGF4X2NsZWFyIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwordm9pZCBleF9zeW50YXggX19BUkdTKChleGFyZ19UICplYXApKTsKK2ludCBzeW50YXhfcHJlc2VudCBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKK3ZvaWQgc2V0X2NvbnRleHRfaW5fc3ludGF4X2NtZCBfX0FSR1MoKGV4cGFuZF9UICp4cCwgY2hhcl91ICphcmcpKTsKK2NoYXJfdSAqZ2V0X3N5bnRheF9uYW1lIF9fQVJHUygoZXhwYW5kX1QgKnhwLCBpbnQgaWR4KSk7CitpbnQgc3luX2dldF9pZCBfX0FSR1MoKHdpbl9UICp3cCwgbG9uZyBsbnVtLCBjb2xucl9UIGNvbCwgaW50IHRyYW5zLCBpbnQgKnNwZWxscCkpOworaW50IHN5bl9nZXRfZm9sZGxldmVsIF9fQVJHUygod2luX1QgKndwLCBsb25nIGxudW0pKTsKK3ZvaWQgaW5pdF9oaWdobGlnaHQgX19BUkdTKChpbnQgYm90aCwgaW50IHJlc2V0KSk7CitpbnQgbG9hZF9jb2xvcnMgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK3ZvaWQgZG9faGlnaGxpZ2h0IF9fQVJHUygoY2hhcl91ICpsaW5lLCBpbnQgZm9yY2VpdCwgaW50IGluaXQpKTsKK3ZvaWQgZnJlZV9oaWdobGlnaHQgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHJlc3RvcmVfY3Rlcm1fY29sb3JzIF9fQVJHUygodm9pZCkpOwordm9pZCBzZXRfbm9ybWFsX2NvbG9ycyBfX0FSR1MoKHZvaWQpKTsKK2NoYXJfdSAqaGxfZ2V0X2ZvbnRfbmFtZSBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgaGxfc2V0X2ZvbnRfbmFtZSBfX0FSR1MoKGNoYXJfdSAqZm9udF9uYW1lKSk7Cit2b2lkIGhsX3NldF9iZ19jb2xvcl9uYW1lIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Cit2b2lkIGhsX3NldF9mZ19jb2xvcl9uYW1lIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Cit2b2lkIGNsZWFyX2hsX3RhYmxlcyBfX0FSR1MoKHZvaWQpKTsKK2ludCBobF9jb21iaW5lX2F0dHIgX19BUkdTKChpbnQgY2hhcl9hdHRyLCBpbnQgcHJpbV9hdHRyKSk7CithdHRyZW50cnlfVCAqc3luX2d1aV9hdHRyMmVudHJ5IF9fQVJHUygoaW50IGF0dHIpKTsKK2ludCBzeW5fYXR0cjJhdHRyIF9fQVJHUygoaW50IGF0dHIpKTsKK2F0dHJlbnRyeV9UICpzeW5fdGVybV9hdHRyMmVudHJ5IF9fQVJHUygoaW50IGF0dHIpKTsKK2F0dHJlbnRyeV9UICpzeW5fY3Rlcm1fYXR0cjJlbnRyeSBfX0FSR1MoKGludCBhdHRyKSk7CitjaGFyX3UgKmhpZ2hsaWdodF9oYXNfYXR0ciBfX0FSR1MoKGludCBpZCwgaW50IGZsYWcsIGludCBtb2RlYykpOworY2hhcl91ICpoaWdobGlnaHRfY29sb3IgX19BUkdTKChpbnQgaWQsIGNoYXJfdSAqd2hhdCwgaW50IG1vZGVjKSk7Citsb25nX3UgaGlnaGxpZ2h0X2d1aV9jb2xvcl9yZ2IgX19BUkdTKChpbnQgaWQsIGludCBmZykpOworaW50IHN5bl9uYW1lMmlkIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitpbnQgaGlnaGxpZ2h0X2V4aXN0cyBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOworY2hhcl91ICpzeW5faWQybmFtZSBfX0FSR1MoKGludCBpZCkpOworaW50IHN5bl9uYW1lbjJpZCBfX0FSR1MoKGNoYXJfdSAqbGluZXAsIGludCBsZW4pKTsKK2ludCBzeW5fY2hlY2tfZ3JvdXAgX19BUkdTKChjaGFyX3UgKnBwLCBpbnQgbGVuKSk7CitpbnQgc3luX2lkMmF0dHIgX19BUkdTKChpbnQgaGxfaWQpKTsKK2ludCBzeW5faWQyY29sb3JzIF9fQVJHUygoaW50IGhsX2lkLCBndWljb2xvcl9UICpmZ3AsIGd1aWNvbG9yX1QgKmJncCkpOworaW50IHN5bl9nZXRfZmluYWxfaWQgX19BUkdTKChpbnQgaGxfaWQpKTsKK3ZvaWQgaGlnaGxpZ2h0X2d1aV9zdGFydGVkIF9fQVJHUygodm9pZCkpOworaW50IGhpZ2hsaWdodF9jaGFuZ2VkIF9fQVJHUygodm9pZCkpOwordm9pZCBzZXRfY29udGV4dF9pbl9oaWdobGlnaHRfY21kIF9fQVJHUygoZXhwYW5kX1QgKnhwLCBjaGFyX3UgKmFyZykpOworY2hhcl91ICpnZXRfaGlnaGxpZ2h0X25hbWUgX19BUkdTKChleHBhbmRfVCAqeHAsIGludCBpZHgpKTsKK3ZvaWQgZnJlZV9oaWdobGlnaHRfZm9udHMgX19BUkdTKCh2b2lkKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by92ZXJzaW9uLnBybyBiL3NyYy9wcm90by92ZXJzaW9uLnBybwppbmRleCAwMGNhOTE2Li4zZjM3MWY5IDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vdmVyc2lvbi5wcm8KKysrIGIvc3JjL3Byb3RvL3ZlcnNpb24ucHJvCkBAIC0xLDkgKzEsOSBAQAogLyogdmVyc2lvbi5jICovCi1leHRlcm4gdm9pZCBtYWtlX3ZlcnNpb24gX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGhpZ2hlc3RfcGF0Y2ggX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IGhhc19wYXRjaCBfX0FSR1MoKGludCBuKSk7Ci1leHRlcm4gdm9pZCBleF92ZXJzaW9uIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci1leHRlcm4gdm9pZCBsaXN0X3ZlcnNpb24gX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBpbnRyb19tZXNzYWdlIF9fQVJHUygoaW50IGNvbG9uKSk7Ci1leHRlcm4gdm9pZCBleF9pbnRybyBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwordm9pZCBtYWtlX3ZlcnNpb24gX19BUkdTKCh2b2lkKSk7CitpbnQgaGlnaGVzdF9wYXRjaCBfX0FSR1MoKHZvaWQpKTsKK2ludCBoYXNfcGF0Y2ggX19BUkdTKChpbnQgbikpOwordm9pZCBleF92ZXJzaW9uIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Cit2b2lkIGxpc3RfdmVyc2lvbiBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgaW50cm9fbWVzc2FnZSBfX0FSR1MoKGludCBjb2xvbikpOwordm9pZCBleF9pbnRybyBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vd2luZG93LnBybyBiL3NyYy9wcm90by93aW5kb3cucHJvCmluZGV4IGFkNDBhNTIuLjQ1YTkwYjggMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by93aW5kb3cucHJvCisrKyBiL3NyYy9wcm90by93aW5kb3cucHJvCkBAIC0xLDYyICsxLDYyIEBACiAvKiB3aW5kb3cuYyAqLwotZXh0ZXJuIHZvaWQgZG9fd2luZG93IF9fQVJHUygoaW50IG5jaGFyLCBsb25nIFByZW51bSwgaW50IHhjaGFyKSk7Ci1leHRlcm4gaW50IHdpbl9zcGxpdCBfX0FSR1MoKGludCBzaXplLCBpbnQgZmxhZ3MpKTsKLWV4dGVybiBpbnQgd2luX3ZhbGlkIF9fQVJHUygod2luX1QgKndpbikpOwotZXh0ZXJuIGludCB3aW5fY291bnQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IG1ha2Vfd2luZG93cyBfX0FSR1MoKGludCBjb3VudCwgaW50IHZlcnRpY2FsKSk7Ci1leHRlcm4gdm9pZCB3aW5fbW92ZV9hZnRlciBfX0FSR1MoKHdpbl9UICp3aW4xLCB3aW5fVCAqd2luMikpOwotZXh0ZXJuIHZvaWQgd2luX2VxdWFsIF9fQVJHUygod2luX1QgKm5leHRfY3Vyd2luLCBpbnQgY3VycmVudCwgaW50IGRpcikpOwotZXh0ZXJuIHZvaWQgY2xvc2Vfd2luZG93cyBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBrZWVwX2N1cndpbikpOwotZXh0ZXJuIHZvaWQgd2luX2Nsb3NlIF9fQVJHUygod2luX1QgKndpbiwgaW50IGZyZWVfYnVmKSk7Ci1leHRlcm4gdm9pZCB3aW5fY2xvc2Vfb3RoZXJ0YWIgX19BUkdTKCh3aW5fVCAqd2luLCBpbnQgZnJlZV9idWYsIHRhYnBhZ2VfVCAqdHApKTsKLWV4dGVybiB2b2lkIHdpbl9mcmVlX2FsbCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGNsb3NlX290aGVycyBfX0FSR1MoKGludCBtZXNzYWdlLCBpbnQgZm9yY2VpdCkpOwotZXh0ZXJuIHZvaWQgY3Vyd2luX2luaXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IHdpbl9hbGxvY19maXJzdCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHdpbl9pbml0X3NpemUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBmcmVlX3RhYnBhZ2UgX19BUkdTKCh0YWJwYWdlX1QgKnRwKSk7Ci1leHRlcm4gaW50IHdpbl9uZXdfdGFicGFnZSBfX0FSR1MoKGludCBhZnRlcikpOwotZXh0ZXJuIGludCBtYXlfb3Blbl90YWJwYWdlIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBtYWtlX3RhYnBhZ2VzIF9fQVJHUygoaW50IG1heGNvdW50KSk7Ci1leHRlcm4gaW50IHZhbGlkX3RhYnBhZ2UgX19BUkdTKCh0YWJwYWdlX1QgKnRwYykpOwotZXh0ZXJuIHRhYnBhZ2VfVCAqZmluZF90YWJwYWdlIF9fQVJHUygoaW50IG4pKTsKLWV4dGVybiBpbnQgdGFicGFnZV9pbmRleCBfX0FSR1MoKHRhYnBhZ2VfVCAqZnRwKSk7Ci1leHRlcm4gdm9pZCBnb3RvX3RhYnBhZ2UgX19BUkdTKChpbnQgbikpOwotZXh0ZXJuIHZvaWQgZ290b190YWJwYWdlX3RwIF9fQVJHUygodGFicGFnZV9UICp0cCkpOwotZXh0ZXJuIHZvaWQgZ290b190YWJwYWdlX3dpbiBfX0FSR1MoKHRhYnBhZ2VfVCAqdHAsIHdpbl9UICp3cCkpOwotZXh0ZXJuIHZvaWQgdGFicGFnZV9tb3ZlIF9fQVJHUygoaW50IG5yKSk7Ci1leHRlcm4gdm9pZCB3aW5fZ290byBfX0FSR1MoKHdpbl9UICp3cCkpOwotZXh0ZXJuIHdpbl9UICp3aW5fZmluZF9uciBfX0FSR1MoKGludCB3aW5ucikpOwotZXh0ZXJuIHZvaWQgd2luX2VudGVyIF9fQVJHUygod2luX1QgKndwLCBpbnQgdW5kb19zeW5jKSk7Ci1leHRlcm4gd2luX1QgKmJ1Zl9qdW1wX29wZW5fd2luIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotZXh0ZXJuIHdpbl9UICpidWZfanVtcF9vcGVuX3RhYiBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKLWV4dGVybiBpbnQgd2luX2FsbG9jX2xpbmVzIF9fQVJHUygod2luX1QgKndwKSk7Ci1leHRlcm4gdm9pZCB3aW5fZnJlZV9sc2l6ZSBfX0FSR1MoKHdpbl9UICp3cCkpOwotZXh0ZXJuIHZvaWQgc2hlbGxfbmV3X3Jvd3MgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBzaGVsbF9uZXdfY29sdW1ucyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHdpbl9zaXplX3NhdmUgX19BUkdTKChnYXJyYXlfVCAqZ2FwKSk7Ci1leHRlcm4gdm9pZCB3aW5fc2l6ZV9yZXN0b3JlIF9fQVJHUygoZ2FycmF5X1QgKmdhcCkpOwotZXh0ZXJuIGludCB3aW5fY29tcF9wb3MgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB3aW5fc2V0aGVpZ2h0IF9fQVJHUygoaW50IGhlaWdodCkpOwotZXh0ZXJuIHZvaWQgd2luX3NldGhlaWdodF93aW4gX19BUkdTKChpbnQgaGVpZ2h0LCB3aW5fVCAqd2luKSk7Ci1leHRlcm4gdm9pZCB3aW5fc2V0d2lkdGggX19BUkdTKChpbnQgd2lkdGgpKTsKLWV4dGVybiB2b2lkIHdpbl9zZXR3aWR0aF93aW4gX19BUkdTKChpbnQgd2lkdGgsIHdpbl9UICp3cCkpOwotZXh0ZXJuIHZvaWQgd2luX3NldG1pbmhlaWdodCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHdpbl9kcmFnX3N0YXR1c19saW5lIF9fQVJHUygod2luX1QgKmRyYWd3aW4sIGludCBvZmZzZXQpKTsKLWV4dGVybiB2b2lkIHdpbl9kcmFnX3ZzZXBfbGluZSBfX0FSR1MoKHdpbl9UICpkcmFnd2luLCBpbnQgb2Zmc2V0KSk7Ci1leHRlcm4gdm9pZCB3aW5fY29tcF9zY3JvbGwgX19BUkdTKCh3aW5fVCAqd3ApKTsKLWV4dGVybiB2b2lkIGNvbW1hbmRfaGVpZ2h0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgbGFzdF9zdGF0dXMgX19BUkdTKChpbnQgbW9yZXdpbikpOwotZXh0ZXJuIGludCB0YWJsaW5lX2hlaWdodCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBjaGFyX3UgKmdyYWJfZmlsZV9uYW1lIF9fQVJHUygobG9uZyBjb3VudCwgbGluZW5yX1QgKmZpbGVfbG51bSkpOwotZXh0ZXJuIGNoYXJfdSAqZmlsZV9uYW1lX2F0X2N1cnNvciBfX0FSR1MoKGludCBvcHRpb25zLCBsb25nIGNvdW50LCBsaW5lbnJfVCAqZmlsZV9sbnVtKSk7Ci1leHRlcm4gY2hhcl91ICpmaWxlX25hbWVfaW5fbGluZSBfX0FSR1MoKGNoYXJfdSAqbGluZSwgaW50IGNvbCwgaW50IG9wdGlvbnMsIGxvbmcgY291bnQsIGNoYXJfdSAqcmVsX2ZuYW1lLCBsaW5lbnJfVCAqZmlsZV9sbnVtKSk7Ci1leHRlcm4gY2hhcl91ICpmaW5kX2ZpbGVfbmFtZV9pbl9wYXRoIF9fQVJHUygoY2hhcl91ICpwdHIsIGludCBsZW4sIGludCBvcHRpb25zLCBsb25nIGNvdW50LCBjaGFyX3UgKnJlbF9mbmFtZSkpOwotZXh0ZXJuIGludCBwYXRoX3dpdGhfdXJsIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOwotZXh0ZXJuIGludCB2aW1faXNBYnNOYW1lIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7Ci1leHRlcm4gaW50IHZpbV9GdWxsTmFtZSBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIGNoYXJfdSAqYnVmLCBpbnQgbGVuLCBpbnQgZm9yY2UpKTsKLWV4dGVybiBpbnQgbWluX3Jvd3MgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IG9ubHlfb25lX3dpbmRvdyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGNoZWNrX2xudW1zIF9fQVJHUygoaW50IGRvX2N1cndpbikpOwotZXh0ZXJuIGludCB3aW5faGFzdmVydHNwbGl0IF9fQVJHUygodm9pZCkpOwordm9pZCBkb193aW5kb3cgX19BUkdTKChpbnQgbmNoYXIsIGxvbmcgUHJlbnVtLCBpbnQgeGNoYXIpKTsKK2ludCB3aW5fc3BsaXQgX19BUkdTKChpbnQgc2l6ZSwgaW50IGZsYWdzKSk7CitpbnQgd2luX3ZhbGlkIF9fQVJHUygod2luX1QgKndpbikpOworaW50IHdpbl9jb3VudCBfX0FSR1MoKHZvaWQpKTsKK2ludCBtYWtlX3dpbmRvd3MgX19BUkdTKChpbnQgY291bnQsIGludCB2ZXJ0aWNhbCkpOwordm9pZCB3aW5fbW92ZV9hZnRlciBfX0FSR1MoKHdpbl9UICp3aW4xLCB3aW5fVCAqd2luMikpOwordm9pZCB3aW5fZXF1YWwgX19BUkdTKCh3aW5fVCAqbmV4dF9jdXJ3aW4sIGludCBjdXJyZW50LCBpbnQgZGlyKSk7Cit2b2lkIGNsb3NlX3dpbmRvd3MgX19BUkdTKChidWZfVCAqYnVmLCBpbnQga2VlcF9jdXJ3aW4pKTsKK3ZvaWQgd2luX2Nsb3NlIF9fQVJHUygod2luX1QgKndpbiwgaW50IGZyZWVfYnVmKSk7Cit2b2lkIHdpbl9jbG9zZV9vdGhlcnRhYiBfX0FSR1MoKHdpbl9UICp3aW4sIGludCBmcmVlX2J1ZiwgdGFicGFnZV9UICp0cCkpOwordm9pZCB3aW5fZnJlZV9hbGwgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGNsb3NlX290aGVycyBfX0FSR1MoKGludCBtZXNzYWdlLCBpbnQgZm9yY2VpdCkpOwordm9pZCBjdXJ3aW5faW5pdCBfX0FSR1MoKHZvaWQpKTsKK2ludCB3aW5fYWxsb2NfZmlyc3QgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHdpbl9pbml0X3NpemUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIGZyZWVfdGFicGFnZSBfX0FSR1MoKHRhYnBhZ2VfVCAqdHApKTsKK2ludCB3aW5fbmV3X3RhYnBhZ2UgX19BUkdTKChpbnQgYWZ0ZXIpKTsKK2ludCBtYXlfb3Blbl90YWJwYWdlIF9fQVJHUygodm9pZCkpOworaW50IG1ha2VfdGFicGFnZXMgX19BUkdTKChpbnQgbWF4Y291bnQpKTsKK2ludCB2YWxpZF90YWJwYWdlIF9fQVJHUygodGFicGFnZV9UICp0cGMpKTsKK3RhYnBhZ2VfVCAqZmluZF90YWJwYWdlIF9fQVJHUygoaW50IG4pKTsKK2ludCB0YWJwYWdlX2luZGV4IF9fQVJHUygodGFicGFnZV9UICpmdHApKTsKK3ZvaWQgZ290b190YWJwYWdlIF9fQVJHUygoaW50IG4pKTsKK3ZvaWQgZ290b190YWJwYWdlX3RwIF9fQVJHUygodGFicGFnZV9UICp0cCkpOwordm9pZCBnb3RvX3RhYnBhZ2Vfd2luIF9fQVJHUygodGFicGFnZV9UICp0cCwgd2luX1QgKndwKSk7Cit2b2lkIHRhYnBhZ2VfbW92ZSBfX0FSR1MoKGludCBucikpOwordm9pZCB3aW5fZ290byBfX0FSR1MoKHdpbl9UICp3cCkpOword2luX1QgKndpbl9maW5kX25yIF9fQVJHUygoaW50IHdpbm5yKSk7Cit2b2lkIHdpbl9lbnRlciBfX0FSR1MoKHdpbl9UICp3cCwgaW50IHVuZG9fc3luYykpOword2luX1QgKmJ1Zl9qdW1wX29wZW5fd2luIF9fQVJHUygoYnVmX1QgKmJ1ZikpOword2luX1QgKmJ1Zl9qdW1wX29wZW5fdGFiIF9fQVJHUygoYnVmX1QgKmJ1ZikpOworaW50IHdpbl9hbGxvY19saW5lcyBfX0FSR1MoKHdpbl9UICp3cCkpOwordm9pZCB3aW5fZnJlZV9sc2l6ZSBfX0FSR1MoKHdpbl9UICp3cCkpOwordm9pZCBzaGVsbF9uZXdfcm93cyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgc2hlbGxfbmV3X2NvbHVtbnMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHdpbl9zaXplX3NhdmUgX19BUkdTKChnYXJyYXlfVCAqZ2FwKSk7Cit2b2lkIHdpbl9zaXplX3Jlc3RvcmUgX19BUkdTKChnYXJyYXlfVCAqZ2FwKSk7CitpbnQgd2luX2NvbXBfcG9zIF9fQVJHUygodm9pZCkpOwordm9pZCB3aW5fc2V0aGVpZ2h0IF9fQVJHUygoaW50IGhlaWdodCkpOwordm9pZCB3aW5fc2V0aGVpZ2h0X3dpbiBfX0FSR1MoKGludCBoZWlnaHQsIHdpbl9UICp3aW4pKTsKK3ZvaWQgd2luX3NldHdpZHRoIF9fQVJHUygoaW50IHdpZHRoKSk7Cit2b2lkIHdpbl9zZXR3aWR0aF93aW4gX19BUkdTKChpbnQgd2lkdGgsIHdpbl9UICp3cCkpOwordm9pZCB3aW5fc2V0bWluaGVpZ2h0IF9fQVJHUygodm9pZCkpOwordm9pZCB3aW5fZHJhZ19zdGF0dXNfbGluZSBfX0FSR1MoKHdpbl9UICpkcmFnd2luLCBpbnQgb2Zmc2V0KSk7Cit2b2lkIHdpbl9kcmFnX3ZzZXBfbGluZSBfX0FSR1MoKHdpbl9UICpkcmFnd2luLCBpbnQgb2Zmc2V0KSk7Cit2b2lkIHdpbl9jb21wX3Njcm9sbCBfX0FSR1MoKHdpbl9UICp3cCkpOwordm9pZCBjb21tYW5kX2hlaWdodCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbGFzdF9zdGF0dXMgX19BUkdTKChpbnQgbW9yZXdpbikpOworaW50IHRhYmxpbmVfaGVpZ2h0IF9fQVJHUygodm9pZCkpOworY2hhcl91ICpncmFiX2ZpbGVfbmFtZSBfX0FSR1MoKGxvbmcgY291bnQsIGxpbmVucl9UICpmaWxlX2xudW0pKTsKK2NoYXJfdSAqZmlsZV9uYW1lX2F0X2N1cnNvciBfX0FSR1MoKGludCBvcHRpb25zLCBsb25nIGNvdW50LCBsaW5lbnJfVCAqZmlsZV9sbnVtKSk7CitjaGFyX3UgKmZpbGVfbmFtZV9pbl9saW5lIF9fQVJHUygoY2hhcl91ICpsaW5lLCBpbnQgY29sLCBpbnQgb3B0aW9ucywgbG9uZyBjb3VudCwgY2hhcl91ICpyZWxfZm5hbWUsIGxpbmVucl9UICpmaWxlX2xudW0pKTsKK2NoYXJfdSAqZmluZF9maWxlX25hbWVfaW5fcGF0aCBfX0FSR1MoKGNoYXJfdSAqcHRyLCBpbnQgbGVuLCBpbnQgb3B0aW9ucywgbG9uZyBjb3VudCwgY2hhcl91ICpyZWxfZm5hbWUpKTsKK2ludCBwYXRoX3dpdGhfdXJsIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOworaW50IHZpbV9pc0Fic05hbWUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK2ludCB2aW1fRnVsbE5hbWUgX19BUkdTKChjaGFyX3UgKmZuYW1lLCBjaGFyX3UgKmJ1ZiwgaW50IGxlbiwgaW50IGZvcmNlKSk7CitpbnQgbWluX3Jvd3MgX19BUkdTKCh2b2lkKSk7CitpbnQgb25seV9vbmVfd2luZG93IF9fQVJHUygodm9pZCkpOwordm9pZCBjaGVja19sbnVtcyBfX0FSR1MoKGludCBkb19jdXJ3aW4pKTsKK2ludCB3aW5faGFzdmVydHNwbGl0IF9fQVJHUygodm9pZCkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vd29ya3Nob3AucHJvIGIvc3JjL3Byb3RvL3dvcmtzaG9wLnBybwppbmRleCBjNzJlMjE1Li40MjZmZGVkIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vd29ya3Nob3AucHJvCisrKyBiL3NyYy9wcm90by93b3Jrc2hvcC5wcm8KQEAgLTEsNDkgKzEsNDkgQEAKIC8qIHdvcmtzaG9wLmMgKi8KLWV4dGVybiB2b2lkIHdvcmtzaG9wX2luaXQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB3b3Jrc2hvcF9wb3N0aW5pdCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIGV4X3dzdmVyYiBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotZXh0ZXJuIGNoYXIgKndvcmtzaG9wX2dldF9lZGl0b3JfbmFtZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBjaGFyICp3b3Jrc2hvcF9nZXRfZWRpdG9yX3ZlcnNpb24gX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB3b3Jrc2hvcF9sb2FkX2ZpbGUgX19BUkdTKChjaGFyICpmaWxlbmFtZSwgaW50IGxpbmUsIGNoYXIgKmZyYW1laWQpKTsKLWV4dGVybiB2b2lkIHdvcmtzaG9wX3JlbG9hZF9maWxlIF9fQVJHUygoY2hhciAqZmlsZW5hbWUsIGludCBsaW5lKSk7Ci1leHRlcm4gdm9pZCB3b3Jrc2hvcF9zaG93X2ZpbGUgX19BUkdTKChjaGFyICpmaWxlbmFtZSkpOwotZXh0ZXJuIHZvaWQgd29ya3Nob3BfZ290b19saW5lIF9fQVJHUygoY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pKTsKLWV4dGVybiB2b2lkIHdvcmtzaG9wX2Zyb250X2ZpbGUgX19BUkdTKChjaGFyICpmaWxlbmFtZSkpOwotZXh0ZXJuIHZvaWQgd29ya3Nob3Bfc2F2ZV9maWxlIF9fQVJHUygoY2hhciAqZmlsZW5hbWUpKTsKLWV4dGVybiB2b2lkIHdvcmtzaG9wX3NhdmVfZmlsZXMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB3b3Jrc2hvcF9xdWl0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgd29ya3Nob3BfbWluaW1pemUgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB3b3Jrc2hvcF9tYXhpbWl6ZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHdvcmtzaG9wX2FkZF9tYXJrX3R5cGUgX19BUkdTKChpbnQgaWR4LCBjaGFyICpjb2xvcnNwZWMsIGNoYXIgKnNpZ24pKTsKLWV4dGVybiB2b2lkIHdvcmtzaG9wX3NldF9tYXJrIF9fQVJHUygoY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8sIGludCBtYXJrSWQsIGludCBpZHgpKTsKLWV4dGVybiB2b2lkIHdvcmtzaG9wX2NoYW5nZV9tYXJrX3R5cGUgX19BUkdTKChjaGFyICpmaWxlbmFtZSwgaW50IG1hcmtJZCwgaW50IGlkeCkpOwotZXh0ZXJuIHZvaWQgd29ya3Nob3BfZ290b19tYXJrIF9fQVJHUygoY2hhciAqZmlsZW5hbWUsIGludCBtYXJrSWQsIGNoYXIgKm1lc3NhZ2UpKTsKLWV4dGVybiB2b2lkIHdvcmtzaG9wX2RlbGV0ZV9tYXJrIF9fQVJHUygoY2hhciAqZmlsZW5hbWUsIGludCBtYXJrSWQpKTsKLWV4dGVybiBpbnQgd29ya3Nob3BfZ2V0X21hcmtfbGluZW5vIF9fQVJHUygoY2hhciAqZmlsZW5hbWUsIGludCBtYXJrSWQpKTsKLWV4dGVybiB2b2lkIHdvcmtzaG9wX21vdmVkX21hcmtzIF9fQVJHUygoY2hhciAqZmlsZW5hbWUpKTsKLWV4dGVybiBpbnQgd29ya3Nob3BfZ2V0X2ZvbnRfaGVpZ2h0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgd29ya3Nob3BfZm9vdGVyX21lc3NhZ2UgX19BUkdTKChjaGFyICptZXNzYWdlLCBpbnQgc2V2ZXJpdHkpKTsKLWV4dGVybiB2b2lkIHdvcmtzaG9wX21lbnVfYmVnaW4gX19BUkdTKChjaGFyICpsYWJlbCkpOwotZXh0ZXJuIHZvaWQgd29ya3Nob3Bfc3VibWVudV9iZWdpbiBfX0FSR1MoKGNoYXIgKmxhYmVsKSk7Ci1leHRlcm4gdm9pZCB3b3Jrc2hvcF9zdWJtZW51X2VuZCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHdvcmtzaG9wX21lbnVfaXRlbSBfX0FSR1MoKGNoYXIgKmxhYmVsLCBjaGFyICp2ZXJiLCBjaGFyICphY2NlbGVyYXRvciwgY2hhciAqYWNjZWxlcmF0b3JUZXh0LCBjaGFyICpuYW1lLCBjaGFyICpmaWxlcG9zLCBjaGFyICpzZW5zaXRpdmUpKTsKLWV4dGVybiB2b2lkIHdvcmtzaG9wX21lbnVfZW5kIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgd29ya3Nob3BfdG9vbGJhcl9iZWdpbiBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiB2b2lkIHdvcmtzaG9wX3Rvb2xiYXJfZW5kIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgd29ya3Nob3BfdG9vbGJhcl9idXR0b24gX19BUkdTKChjaGFyICpsYWJlbCwgY2hhciAqdmVyYiwgY2hhciAqc2Vuc2VWZXJiLCBjaGFyICpmaWxlcG9zLCBjaGFyICpoZWxwLCBjaGFyICpzZW5zZSwgY2hhciAqZmlsZSwgY2hhciAqbGVmdCkpOwotZXh0ZXJuIHZvaWQgd29ya3Nob3BfZnJhbWVfc2Vuc2l0aXZpdGllcyBfX0FSR1MoKFZlcmJTZW5zZSAqdnMpKTsKLWV4dGVybiB2b2lkIHdvcmtzaG9wX3NldF9vcHRpb24gX19BUkdTKChjaGFyICpvcHRpb24sIGNoYXIgKnZhbHVlKSk7Ci1leHRlcm4gdm9pZCB3b3Jrc2hvcF9iYWxsb29uX21vZGUgX19BUkdTKChCb29sZWFuIG9uKSk7Ci1leHRlcm4gdm9pZCB3b3Jrc2hvcF9iYWxsb29uX2RlbGF5IF9fQVJHUygoaW50IGRlbGF5KSk7Ci1leHRlcm4gdm9pZCB3b3Jrc2hvcF9zaG93X2JhbGxvb25fdGlwIF9fQVJHUygoY2hhciAqdGlwKSk7Ci1leHRlcm4gdm9pZCB3b3Jrc2hvcF9ob3RrZXlzIF9fQVJHUygoQm9vbGVhbiBvbikpOwotZXh0ZXJuIGludCB3b3Jrc2hvcF9nZXRfcG9zaXRpb25zIF9fQVJHUygodm9pZCAqY2xpZW50RGF0YSwgY2hhciAqKmZpbGVuYW1lLCBpbnQgKmN1ckxpbmUsIGludCAqY3VyQ29sLCBpbnQgKnNlbFN0YXJ0TGluZSwgaW50ICpzZWxTdGFydENvbCwgaW50ICpzZWxFbmRMaW5lLCBpbnQgKnNlbEVuZENvbCwgaW50ICpzZWxMZW5ndGgsIGNoYXIgKipzZWxlY3Rpb24pKTsKLWV4dGVybiBjaGFyICp3b3Jrc2hvcF90ZXN0X2dldGN1cnJlbnRmaWxlIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCB3b3Jrc2hvcF90ZXN0X2dldGN1cnNvcnJvdyBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgd29ya3Nob3BfdGVzdF9nZXRjdXJzb3Jjb2wgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gY2hhciAqd29ya3Nob3BfdGVzdF9nZXRjdXJzb3Jyb3d0ZXh0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGNoYXIgKndvcmtzaG9wX3Rlc3RfZ2V0c2VsZWN0ZWR0ZXh0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgd29ya3Nob3Bfc2F2ZV9zZW5zaXRpdml0eSBfX0FSR1MoKGNoYXIgKmZpbGVuYW1lKSk7Ci1leHRlcm4gdm9pZCB3b3Jrc2hvcF9iZXZhbF9jYiBfX0FSR1MoKEJhbGxvb25FdmFsICpiZXZhbCwgaW50IHN0YXRlKSk7Ci1leHRlcm4gdm9pZCBmaW5kWW91cnNlbGYgX19BUkdTKChjaGFyICphcmd2MCkpOwordm9pZCB3b3Jrc2hvcF9pbml0IF9fQVJHUygodm9pZCkpOwordm9pZCB3b3Jrc2hvcF9wb3N0aW5pdCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZXhfd3N2ZXJiIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7CitjaGFyICp3b3Jrc2hvcF9nZXRfZWRpdG9yX25hbWUgX19BUkdTKCh2b2lkKSk7CitjaGFyICp3b3Jrc2hvcF9nZXRfZWRpdG9yX3ZlcnNpb24gX19BUkdTKCh2b2lkKSk7Cit2b2lkIHdvcmtzaG9wX2xvYWRfZmlsZSBfX0FSR1MoKGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZSwgY2hhciAqZnJhbWVpZCkpOwordm9pZCB3b3Jrc2hvcF9yZWxvYWRfZmlsZSBfX0FSR1MoKGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZSkpOwordm9pZCB3b3Jrc2hvcF9zaG93X2ZpbGUgX19BUkdTKChjaGFyICpmaWxlbmFtZSkpOwordm9pZCB3b3Jrc2hvcF9nb3RvX2xpbmUgX19BUkdTKChjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykpOwordm9pZCB3b3Jrc2hvcF9mcm9udF9maWxlIF9fQVJHUygoY2hhciAqZmlsZW5hbWUpKTsKK3ZvaWQgd29ya3Nob3Bfc2F2ZV9maWxlIF9fQVJHUygoY2hhciAqZmlsZW5hbWUpKTsKK3ZvaWQgd29ya3Nob3Bfc2F2ZV9maWxlcyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgd29ya3Nob3BfcXVpdCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgd29ya3Nob3BfbWluaW1pemUgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHdvcmtzaG9wX21heGltaXplIF9fQVJHUygodm9pZCkpOwordm9pZCB3b3Jrc2hvcF9hZGRfbWFya190eXBlIF9fQVJHUygoaW50IGlkeCwgY2hhciAqY29sb3JzcGVjLCBjaGFyICpzaWduKSk7Cit2b2lkIHdvcmtzaG9wX3NldF9tYXJrIF9fQVJHUygoY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8sIGludCBtYXJrSWQsIGludCBpZHgpKTsKK3ZvaWQgd29ya3Nob3BfY2hhbmdlX21hcmtfdHlwZSBfX0FSR1MoKGNoYXIgKmZpbGVuYW1lLCBpbnQgbWFya0lkLCBpbnQgaWR4KSk7Cit2b2lkIHdvcmtzaG9wX2dvdG9fbWFyayBfX0FSR1MoKGNoYXIgKmZpbGVuYW1lLCBpbnQgbWFya0lkLCBjaGFyICptZXNzYWdlKSk7Cit2b2lkIHdvcmtzaG9wX2RlbGV0ZV9tYXJrIF9fQVJHUygoY2hhciAqZmlsZW5hbWUsIGludCBtYXJrSWQpKTsKK2ludCB3b3Jrc2hvcF9nZXRfbWFya19saW5lbm8gX19BUkdTKChjaGFyICpmaWxlbmFtZSwgaW50IG1hcmtJZCkpOwordm9pZCB3b3Jrc2hvcF9tb3ZlZF9tYXJrcyBfX0FSR1MoKGNoYXIgKmZpbGVuYW1lKSk7CitpbnQgd29ya3Nob3BfZ2V0X2ZvbnRfaGVpZ2h0IF9fQVJHUygodm9pZCkpOwordm9pZCB3b3Jrc2hvcF9mb290ZXJfbWVzc2FnZSBfX0FSR1MoKGNoYXIgKm1lc3NhZ2UsIGludCBzZXZlcml0eSkpOwordm9pZCB3b3Jrc2hvcF9tZW51X2JlZ2luIF9fQVJHUygoY2hhciAqbGFiZWwpKTsKK3ZvaWQgd29ya3Nob3Bfc3VibWVudV9iZWdpbiBfX0FSR1MoKGNoYXIgKmxhYmVsKSk7Cit2b2lkIHdvcmtzaG9wX3N1Ym1lbnVfZW5kIF9fQVJHUygodm9pZCkpOwordm9pZCB3b3Jrc2hvcF9tZW51X2l0ZW0gX19BUkdTKChjaGFyICpsYWJlbCwgY2hhciAqdmVyYiwgY2hhciAqYWNjZWxlcmF0b3IsIGNoYXIgKmFjY2VsZXJhdG9yVGV4dCwgY2hhciAqbmFtZSwgY2hhciAqZmlsZXBvcywgY2hhciAqc2Vuc2l0aXZlKSk7Cit2b2lkIHdvcmtzaG9wX21lbnVfZW5kIF9fQVJHUygodm9pZCkpOwordm9pZCB3b3Jrc2hvcF90b29sYmFyX2JlZ2luIF9fQVJHUygodm9pZCkpOwordm9pZCB3b3Jrc2hvcF90b29sYmFyX2VuZCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgd29ya3Nob3BfdG9vbGJhcl9idXR0b24gX19BUkdTKChjaGFyICpsYWJlbCwgY2hhciAqdmVyYiwgY2hhciAqc2Vuc2VWZXJiLCBjaGFyICpmaWxlcG9zLCBjaGFyICpoZWxwLCBjaGFyICpzZW5zZSwgY2hhciAqZmlsZSwgY2hhciAqbGVmdCkpOwordm9pZCB3b3Jrc2hvcF9mcmFtZV9zZW5zaXRpdml0aWVzIF9fQVJHUygoVmVyYlNlbnNlICp2cykpOwordm9pZCB3b3Jrc2hvcF9zZXRfb3B0aW9uIF9fQVJHUygoY2hhciAqb3B0aW9uLCBjaGFyICp2YWx1ZSkpOwordm9pZCB3b3Jrc2hvcF9iYWxsb29uX21vZGUgX19BUkdTKChCb29sZWFuIG9uKSk7Cit2b2lkIHdvcmtzaG9wX2JhbGxvb25fZGVsYXkgX19BUkdTKChpbnQgZGVsYXkpKTsKK3ZvaWQgd29ya3Nob3Bfc2hvd19iYWxsb29uX3RpcCBfX0FSR1MoKGNoYXIgKnRpcCkpOwordm9pZCB3b3Jrc2hvcF9ob3RrZXlzIF9fQVJHUygoQm9vbGVhbiBvbikpOworaW50IHdvcmtzaG9wX2dldF9wb3NpdGlvbnMgX19BUkdTKCh2b2lkICpjbGllbnREYXRhLCBjaGFyICoqZmlsZW5hbWUsIGludCAqY3VyTGluZSwgaW50ICpjdXJDb2wsIGludCAqc2VsU3RhcnRMaW5lLCBpbnQgKnNlbFN0YXJ0Q29sLCBpbnQgKnNlbEVuZExpbmUsIGludCAqc2VsRW5kQ29sLCBpbnQgKnNlbExlbmd0aCwgY2hhciAqKnNlbGVjdGlvbikpOworY2hhciAqd29ya3Nob3BfdGVzdF9nZXRjdXJyZW50ZmlsZSBfX0FSR1MoKHZvaWQpKTsKK2ludCB3b3Jrc2hvcF90ZXN0X2dldGN1cnNvcnJvdyBfX0FSR1MoKHZvaWQpKTsKK2ludCB3b3Jrc2hvcF90ZXN0X2dldGN1cnNvcmNvbCBfX0FSR1MoKHZvaWQpKTsKK2NoYXIgKndvcmtzaG9wX3Rlc3RfZ2V0Y3Vyc29ycm93dGV4dCBfX0FSR1MoKHZvaWQpKTsKK2NoYXIgKndvcmtzaG9wX3Rlc3RfZ2V0c2VsZWN0ZWR0ZXh0IF9fQVJHUygodm9pZCkpOwordm9pZCB3b3Jrc2hvcF9zYXZlX3NlbnNpdGl2aXR5IF9fQVJHUygoY2hhciAqZmlsZW5hbWUpKTsKK3ZvaWQgd29ya3Nob3BfYmV2YWxfY2IgX19BUkdTKChCYWxsb29uRXZhbCAqYmV2YWwsIGludCBzdGF0ZSkpOwordm9pZCBmaW5kWW91cnNlbGYgX19BUkdTKChjaGFyICphcmd2MCkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0NTUub2sgYi9zcmMvdGVzdGRpci90ZXN0NTUub2sKaW5kZXggMWY1MmYyOS4uZGE4MzAwMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdDU1Lm9rCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3Q1NS5vawpAQCAtMTA1LDMgKzEwNSw3IEBACiBbJ2FhJywgJycsICdiYicsICdjYycsICcnXQogWydhJywgJ2InLCAnYyddCiBbJycsICdhJywgJycsICdiJywgJycsICdjJywgJyddCisxCisxCiswCiswCmRpZmYgLS1naXQgYS9zcmMvdmltMTYuZGVmIGIvc3JjL3ZpbTE2LmRlZgppbmRleCA0NTIzMjVjLi5jMzI1MjlkIDEwMDY0NAotLS0gYS9zcmMvdmltMTYuZGVmCisrKyBiL3NyYy92aW0xNi5kZWYKQEAgLTEsNSArMSw1IEBACiBDT0RFIFBSRUxPQUQgRVhFQ1VURU9OTFkKIERBVEEgTVVMVElQTEUgU0hBUkVECi1ERVNDUklQVElPTiAnVmltIDcuMCcKK0RFU0NSSVBUSU9OICdWaW0gNy4xYScKIFNUQUNLU0laRSAxNjAwMAogSEVBUFNJWkUgMTAwMDAKZGlmZiAtLWdpdCBhL3NyYy92aW1ydW4uYyBiL3NyYy92aW1ydW4uYwppbmRleCBmZWQ1MDc2Li5jNDIzZTZjIDEwMDY0NAotLS0gYS9zcmMvdmltcnVuLmMKKysrIGIvc3JjL3ZpbXJ1bi5jCkBAIC05OSw3ICs5OSw5IEBACiAgICAgICovCiAgICAgcmV0dmFsID0gc3lzdGVtKHApOwogCi0gICAgaWYgKHJldHZhbCAhPSAwKQorICAgIGlmIChyZXR2YWwgPT0gLTEpCisJcGVycm9yKCJ2aW1ydW4gc3lzdGVtKCk6ICIpOworICAgIGVsc2UgaWYgKHJldHZhbCAhPSAwKQogCXByaW50Zigic2hlbGwgcmV0dXJuZWQgJWRcbiIsIHJldHZhbCk7CiAKICAgICBpZiAoIXNpbGVudCkK